New version of d3 (2.8.1) to vendor libraries. Added d3 to modules.yaml. Implemented...
authordeclerambaul <fabian.kaelin@gmail.com>
Tue, 24 Apr 2012 16:58:53 +0000 (12:58 -0400)
committerdeclerambaul <fabian.kaelin@gmail.com>
Tue, 24 Apr 2012 16:58:53 +0000 (12:58 -0400)
594 files changed:
data/geo/data/en_geo_editors.json [new file with mode: 0644]
data/geo/data/en_geo_editors.tsv [new file with mode: 0644]
data/geo/maps/world-countries.json
lib/main-geo.co
lib/server/server.co
static/vendor/d3 [deleted symlink]
static/vendor/d3-2.8.1/.gitignore [new file with mode: 0755]
static/vendor/d3-2.8.1/.gitmodules [new file with mode: 0755]
static/vendor/d3-2.8.1/.npmignore [new file with mode: 0755]
static/vendor/d3-2.8.1/LICENSE [new file with mode: 0755]
static/vendor/d3-2.8.1/Makefile [new file with mode: 0755]
static/vendor/d3-2.8.1/README.md [new file with mode: 0755]
static/vendor/d3-2.8.1/d3.v2.js [new file with mode: 0755]
static/vendor/d3-2.8.1/d3.v2.min.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/albers/albers.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/area/area-radial.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/area/area.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/axis/axis-alternating.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/axis/axis-explicit-ticks.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/axis/axis-ggplot2.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/axis/axis-multiples.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/axis/axis-orientations.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/axis/axis-transition.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/azimuthal/azimuthal.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/azimuthal/azimuthal.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/azimuthal/azimuthal.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bar/bar-hierarchy.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bar/bar.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bar/sample-data.csv [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bonne/bonne.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/box/box.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/box/box.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/box/box.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/brush/brush-ordinal.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/brush/brush-x-resizer.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/brush/brush-x.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/brush/brush-y.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/brush/brush.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bubble/bubble.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bubble/bubble.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bubble/bubble.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bullet/bullet.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bullet/bullet.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bullet/bullet.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bullet/bullets.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bundle/bundle-radial.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bundle/bundle-radial.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bundle/bundle-radial.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bundle/bundle-treemap.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bundle/bundle-treemap.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bundle/bundle-treemap.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/bundle/packages.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/button.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/calendar/calendar.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/calendar/dji-area.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/calendar/dji.csv [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/calendar/dji.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/calendar/dji.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/calendar/vix.csv [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/calendar/vix.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/calendar/vix.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cartogram/cartogram.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cartogram/cartogram.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cartogram/cartogram.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cartogram/demers.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cartogram/demers.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cartogram/demers.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cartogram/dorling.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cartogram/dorling.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cartogram/dorling.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/chord/chord-flare.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/chord/chord.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/chord/chord.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/chord/chord.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/choropleth/choropleth-area.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/choropleth/choropleth-bounds.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/choropleth/choropleth.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/choropleth/choropleth.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/choropleth/choropleth.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/choropleth/unemployment.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/clock/clock.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/clock/clock.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/clock/clock.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cluster/cluster-radial.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cluster/cluster-radial.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cluster/cluster.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cluster/cluster.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/cluster/cluster.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/contour/contour.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/crimea/crimea-stacked-area.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/crimea/crimea-stacked-bar.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/crimea/crimea.csv [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/custom/custom.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/README.md [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/faithful.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/flare-imports.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/flare.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/morley.csv [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/sample.csv [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/sample.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/sample.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/sample.txt [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/sample.xml [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/stocks.csv [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/unemployment.csv [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/us-borders.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/us-counties.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/us-state-centroids.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/us-states.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/data/world-countries.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/delaunay/delaunay.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/donut/donut.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/dot/dot.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/drag/drag.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/force/README [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/force/force-bounds.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/force/force-cluster.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/force/force-collapsible.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/force/force-dynamic.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/force/force-html.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/force/force-map.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/force/force-multi-foci.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/force/force.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/force/force.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/force/force.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/force/miserables.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/great-arc/great-arc.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/hello-data-key.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/hello-data-nested-key.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/hello-data-nested.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/hello-data.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/hello-event.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/hello-node-key.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/hello-order.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/hello-sort.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/hello-transform.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/hello-transition-undefined.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/hello-transition.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/hello-webkit-transition.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/select-enter-add.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hello-world/selectAll-enter-add.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/histogram/histogram-chart.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/histogram/histogram.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/horizon/horizon.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/horizon/horizon.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/horizon/horizon.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/horizon/unemployment.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/hull/hull.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/kde/kde.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/kde/kde.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/kde/kde.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/line/line.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/line/line.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/line/line.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/marimekko/marimekko.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/marimekko/marimekko.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/marker/marker.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/mercator/mercator-zoom-constrained.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/mercator/mercator-zoom.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/mercator/mercator.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/moire/moire.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/mouse/mouse-html.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/node-canvas/us-counties.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/pack/pack.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/pack/pack.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/pack/pack.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/parallel/cars.csv [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/parallel/parallel.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/partition/partition-icicle-zoom.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/partition/partition-icicle.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/partition/partition-sunburst-zoom.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/partition/partition-sunburst.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/partition/partition-sunburst.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/pie/pie-transition.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/pie/pie.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/population/population.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/population/population.csv [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/population/population.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/population/population.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/qq/qq.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/qq/qq.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/qq/qq.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/qq/stats.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/qq/turkers.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/quadtree/quadtree.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/rollup/rollup.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/showreel/showreel.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/sizzle/sizzle.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/sort/sort.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/sort/sort.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/sort/sort.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/spline/spline.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/spline/spline.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/spline/spline.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/splom/flowers.json [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/splom/splom.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/splom/splom.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/splom/splom.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/stream/stack.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/stream/stack.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/stream/stack.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/stream/stream.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/stream/stream.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/stream/stream.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/stream/stream_layers.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/superformula/dot.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/superformula/explorer.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/superformula/superformula.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/superformula/superformula.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/symbol-map/symbol-map.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/touch/touch.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/transform/test.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/transform/transform.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/tree/tree-dynamic.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/tree/tree-interactive.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/tree/tree-radial.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/tree/tree-radial.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/tree/tree.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/tree/tree.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/tree/tree.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/treemap/treemap-svg.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/treemap/treemap-svg.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/treemap/treemap.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/treemap/treemap.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/treemap/treemap.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/voroboids/boid.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/voroboids/voroboids.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/voroboids/voroboids.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/voroboids/voroboids.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/voronoi/voronoi.css [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/voronoi/voronoi.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/voronoi/voronoi.js [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/zoom-pan/zoom-pan-transform.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/zoom-pan/zoom-pan.html [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/zoom/sp500.csv [new file with mode: 0755]
static/vendor/d3-2.8.1/examples/zoom/zoom.html [new file with mode: 0755]
static/vendor/d3-2.8.1/index.js [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/colorbrewer/LICENSE [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/colorbrewer/colorbrewer.css [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/colorbrewer/colorbrewer.js [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jit/LICENSE [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/LICENSE [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_flat_10_000000_40x100.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_222222_256x240.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_228ef1_256x240.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ef8c08_256x240.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ffd27a_256x240.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ffffff_256x240.png [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/jquery-ui.css [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery-ui/jquery-ui.min.js [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery/LICENSE [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery/jquery.js [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/jquery/jquery.min.js [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/polymaps/LICENSE [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/protovis/LICENSE [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/science/LICENSE [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/science/science.js [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/science/science.lin.js [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/science/science.lin.min.js [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/science/science.min.js [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/science/science.stats.js [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/science/science.stats.min.js [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/sizzle/LICENSE [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/sizzle/sizzle.js [new file with mode: 0755]
static/vendor/d3-2.8.1/lib/sizzle/sizzle.min.js [new file with mode: 0755]
static/vendor/d3-2.8.1/package.json [new file with mode: 0755]
static/vendor/d3-2.8.1/src/behavior/behavior.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/behavior/drag.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/behavior/zoom.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/compat/date.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/compat/style.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/array.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/ascending.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/bisect.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/class.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/collapse.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/core.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/descending.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/dispatch.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/ease.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/entries.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/event.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/extent.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/first.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/format.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/formatPrefix.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/functor.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/hsl.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/html.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/interpolate.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/json.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/keys.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/last.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/map.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/max.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/mean.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/median.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/merge.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/min.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/mouse.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/nest.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/noop.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/ns.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/number.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/permute.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/quantile.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/random.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/range.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/rebind.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/requote.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/rgb.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/round.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-append.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-attr.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-call.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-classed.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-data.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-datum.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-each.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-empty.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-enter-select.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-enter.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-filter.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-html.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-insert.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-node.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-on.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-order.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-property.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-remove.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-root.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-select.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-selectAll.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-sort.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-style.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-text.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection-transition.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/selection.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/split.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/sum.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/text.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/this.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/timer.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/touches.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transform.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transition-attr.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transition-delay.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transition-duration.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transition-each.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transition-remove.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transition-select.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transition-selectAll.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transition-style.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transition-text.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transition-transition.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transition.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/transpose.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/uninterpolate.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/values.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/xhr.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/xml.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/core/zip.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/csv/csv.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/csv/format.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/csv/parse.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/end.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geo/albers.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geo/azimuthal.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geo/bonne.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geo/bounds.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geo/circle.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geo/equirectangular.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geo/geo.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geo/greatArc.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geo/greatCircle.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geo/mercator.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geo/path.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geo/type.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geom/contour.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geom/delaunay.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geom/geom.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geom/hull.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geom/polygon.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geom/quadtree.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/geom/voronoi.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/bundle.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/chord.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/cluster.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/force.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/hierarchy.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/histogram.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/layout.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/pack.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/partition.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/pie.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/stack.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/tree.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/layout/treemap.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/package.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/bilinear.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/category.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/identity.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/linear.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/log.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/nice.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/ordinal.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/polylinear.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/pow.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/quantile.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/quantize.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/scale.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/scale/sqrt.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/start.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/arc.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/area-radial.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/area.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/axis.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/brush.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/chord.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/diagonal-radial.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/diagonal.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/line-radial.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/line.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/mouse.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/svg.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/symbol.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/svg/touches.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/day.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/format-iso.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/format-utc.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/format.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/hour.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/interval.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/minute.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/month.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/scale-utc.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/scale.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/second.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/time.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/week.js [new file with mode: 0755]
static/vendor/d3-2.8.1/src/time/year.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/ascending-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/bisect-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/descending-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/dispatch-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/ease-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/entries-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/extent-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/first-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/format-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/formatPrefix-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/functor-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/hsl-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/html-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/interpolate-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/json-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/keys-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/last-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/map-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/max-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/mean-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/median-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/merge-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/min-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/nest-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/ns-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/permute-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/quantile-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/range-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/rebind-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/requote-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/rgb-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/round-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/select-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selectAll-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-append-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-attr-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-call-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-classed-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-data-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-datum-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-each-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-empty-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-enter-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-filter-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-html-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-insert-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-node-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-on-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-order-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-property-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-remove-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-select-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-selectAll-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-sort-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-style-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/selection-text-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/split-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/sum-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/text-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/timer-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-attr.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-attrTween.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-call.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-delay.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-duration.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-each.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-id.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-remove.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-select.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-selectAll.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-style.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-styleTween.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-text.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-time.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-transition.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test-tween.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transition-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/transpose-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/values-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/version-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/xhr-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/xml-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/core/zip-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/csv/csv-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/csv/format-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/csv/parse-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/env-assert.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/env-fragment.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/env-xhr.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/env.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/geo/albers-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/geo/azimuthal-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/geo/bonne-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/geo/equirectangular-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/geo/greatArc-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/geo/mercator-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/geo/path-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/geom/polygon-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/layout/cluster-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/layout/hierarchy-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/layout/histogram-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/layout/pack-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/layout/partition-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/layout/pie-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/layout/tree-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/layout/treemap-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/scale/category-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/scale/identity-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/scale/linear-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/scale/log-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/scale/ordinal-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/scale/pow-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/scale/quantile-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/scale/quantize-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/scale/sqrt-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/svg/arc-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/svg/area-radial-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/svg/area-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/svg/axis-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/svg/brush-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/svg/line-radial-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/svg/line-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/svg/symbol-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/day-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/days-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/format-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/hour-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/hours-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/minute-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/minutes-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/month-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/months-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/scale-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/second-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/seconds-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/time.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/week-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/weeks-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/year-test.js [new file with mode: 0755]
static/vendor/d3-2.8.1/test/time/years-test.js [new file with mode: 0755]
static/vendor/d3.js
static/vendor/d3.min.js [new symlink]
www/css/geo-display.styl
www/geo.jade

diff --git a/data/geo/data/en_geo_editors.json b/data/geo/data/en_geo_editors.json
new file mode 100644 (file)
index 0000000..2e55320
--- /dev/null
@@ -0,0 +1 @@
+{"Canada": {"editors5": "2088", "editors": "6666", "editors100": "221"}, "Libyan Arab Jamahiriya": {"editors5": "6", "editors": "7", "editors100": "0"}, "Turkmenistan": {"editors5": "1", "editors": "1", "editors100": "0"}, "Montenegro": {"editors5": "9", "editors": "16", "editors100": "2"}, "Kazakstan": {"editors5": "12", "editors": "42", "editors100": "0"}, "Lithuania": {"editors5": "31", "editors": "94", "editors100": "3"}, "Cambodia": {"editors5": "6", "editors": "39", "editors100": "0"}, "Switzerland": {"editors5": "132", "editors": "503", "editors100": "11"}, "Ethiopia": {"editors5": "4", "editors": "21", "editors100": "0"}, "Aruba": {"editors5": "3", "editors": "5", "editors100": "1"}, "Argentina": {"editors5": "96", "editors": "336", "editors100": "9"}, "Bolivia": {"editors5": "2", "editors": "24", "editors100": "0"}, "Cameroon": {"editors5": "0", "editors": "3", "editors100": "0"}, "Ghana": {"editors5": "8", "editors": "32", "editors100": "1"}, "Saudi Arabia": {"editors5": "57", "editors": "194", "editors100": "5"}, "Yemen": {"editors5": "1", "editors": "5", "editors100": "1"}, "Japan": {"editors5": "210", "editors": "695", "editors100": "22"}, "American Samoa": {"editors5": "1", "editors": "1", "editors100": "0"}, "Northern Mariana Islands": {"editors5": "2", "editors": "3", "editors100": "0"}, "Slovenia": {"editors5": "41", "editors": "158", "editors100": "7"}, "Guatemala": {"editors5": "3", "editors": "25", "editors100": "0"}, "Bosnia and Herzegovina": {"editors5": "34", "editors": "67", "editors100": "3"}, "Kuwait": {"editors5": "20", "editors": "60", "editors100": "2"}, "Russian Federation": {"editors5": "266", "editors": "953", "editors100": "24"}, "Jordan": {"editors5": "20", "editors": "52", "editors100": "0"}, "Virgin Islands, British": {"editors5": "3", "editors": "8", "editors100": "0"}, "Dominica": {"editors5": "3", "editors": "8", "editors100": "0"}, "Liberia": {"editors5": "1", "editors": "2", "editors100": "0"}, "Maldives": {"editors5": "17", "editors": "45", "editors100": "2"}, "Micronesia, Federated States of": {"editors5": "0", "editors": "1", "editors100": "0"}, "Jamaica": {"editors5": "11", "editors": "35", "editors100": "0"}, "Oman": {"editors5": "8", "editors": "30", "editors100": "0"}, "Martinique": {"editors5": "0", "editors": "2", "editors100": "0"}, "Greenland": {"editors5": "0", "editors": "1", "editors100": "0"}, "French Guiana": {"editors5": "0", "editors": "2", "editors100": "0"}, "Finland": {"editors5": "168", "editors": "558", "editors100": "21"}, "Monaco": {"editors5": "1", "editors": "4", "editors100": "0"}, "New Zealand": {"editors5": "260", "editors": "832", "editors100": "31"}, "Virgin Islands, U.S.": {"editors5": "2", "editors": "5", "editors100": "0"}, "Jersey": {"editors5": "9", "editors": "16", "editors100": "2"}, "Bahamas": {"editors5": "4", "editors": "13", "editors100": "0"}, "Albania": {"editors5": "15", "editors": "40", "editors100": "1"}, "Samoa": {"editors5": "0", "editors": "2", "editors100": "0"}, "Macau": {"editors5": "3", "editors": "16", "editors100": "0"}, "United Arab Emirates": {"editors5": "101", "editors": "320", "editors100": "1"}, "Guam": {"editors5": "1", "editors": "4", "editors100": "0"}, "India": {"editors5": "1513", "editors": "5417", "editors100": "95"}, "Azerbaijan": {"editors5": "20", "editors": "58", "editors100": "2"}, "Lesotho": {"editors5": "0", "editors": "1", "editors100": "0"}, "Saint Vincent and the Grenadines": {"editors5": "0", "editors": "1", "editors100": "0"}, "Kenya": {"editors5": "16", "editors": "78", "editors100": "0"}, "Tajikistan": {"editors5": "2", "editors": "2", "editors100": "0"}, "Turkey": {"editors5": "128", "editors": "393", "editors100": "11"}, "Afghanistan": {"editors5": "2", "editors": "13", "editors100": "0"}, "Bangladesh": {"editors5": "81", "editors": "248", "editors100": "1"}, "Solomon Islands": {"editors5": "0", "editors": "1", "editors100": "0"}, "Turks and Caicos Islands": {"editors5": "1", "editors": "1", "editors100": "0"}, "Saint Lucia": {"editors5": "3", "editors": "7", "editors100": "1"}, "San Marino": {"editors5": "0", "editors": "1", "editors100": "0"}, "French Polynesia": {"editors5": "1", "editors": "3", "editors100": "0"}, "France": {"editors5": "482", "editors": "1760", "editors100": "31"}, "Syrian Arab Republic": {"editors5": "3", "editors": "6", "editors100": "0"}, "Bermuda": {"editors5": "1", "editors": "5", "editors100": "0"}, "Slovakia": {"editors5": "30", "editors": "112", "editors100": "2"}, "Somalia": {"editors5": "0", "editors": "4", "editors100": "0"}, "Peru": {"editors5": "39", "editors": "99", "editors100": "2"}, "Vanuatu": {"editors5": "1", "editors": "2", "editors100": "0"}, "Seychelles": {"editors5": "0", "editors": "2", "editors100": "0"}, "Norway": {"editors5": "186", "editors": "657", "editors100": "20"}, "Malawi": {"editors5": "1", "editors": "3", "editors100": "0"}, "Benin": {"editors5": "0", "editors": "1", "editors100": "0"}, "Cuba": {"editors5": "6", "editors": "22", "editors100": "1"}, "Iran, Islamic Republic of": {"editors5": "95", "editors": "284", "editors100": "9"}, "Saint Kitts and Nevis": {"editors5": "2", "editors": "5", "editors100": "0"}, "China": {"editors5": "153", "editors": "587", "editors100": "11"}, "Armenia": {"editors5": "17", "editors": "55", "editors100": "1"}, "Dominican Republic": {"editors5": "14", "editors": "44", "editors100": "1"}, "Ukraine": {"editors5": "106", "editors": "367", "editors100": "5"}, "Bahrain": {"editors5": "8", "editors": "27", "editors100": "1"}, "Tonga": {"editors5": "0", "editors": "2", "editors100": "0"}, "Cayman Islands": {"editors5": "2", "editors": "7", "editors100": "0"}, "Trinidad and Tobago": {"editors5": "8", "editors": "48", "editors100": "0"}, "Indonesia": {"editors5": "149", "editors": "406", "editors100": "13"}, "Mauritius": {"editors5": "6", "editors": "27", "editors100": "1"}, "Sweden": {"editors5": "308", "editors": "1006", "editors100": "28"}, "Belarus": {"editors5": "24", "editors": "67", "editors100": "1"}, "Mali": {"editors5": "1", "editors": "3", "editors100": "0"}, "Poland": {"editors5": "182", "editors": "635", "editors100": "15"}, "Bulgaria": {"editors5": "85", "editors": "232", "editors100": "11"}, "United States": {"editors5": "14080", "editors": "50197", "editors100": "1377"}, "Romania": {"editors5": "130", "editors": "351", "editors100": "9"}, "Angola": {"editors5": "0", "editors": "1", "editors100": "0"}, "Portugal": {"editors5": "108", "editors": "299", "editors100": "12"}, "South Africa": {"editors5": "115", "editors": "366", "editors100": "9"}, "Cyprus": {"editors5": "24", "editors": "77", "editors100": "3"}, "Brunei Darussalam": {"editors5": "8", "editors": "12", "editors100": "1"}, "Qatar": {"editors5": "13", "editors": "63", "editors100": "2"}, "Malaysia": {"editors5": "177", "editors": "470", "editors100": "12"}, "Austria": {"editors5": "90", "editors": "379", "editors100": "4"}, "Vietnam": {"editors5": "46", "editors": "140", "editors100": "1"}, "Mozambique": {"editors5": "2", "editors": "6", "editors100": "0"}, "Uganda": {"editors5": "2", "editors": "28", "editors100": "0"}, "Hungary": {"editors5": "110", "editors": "319", "editors100": "11"}, "Niger": {"editors5": "0", "editors": "1", "editors100": "0"}, "Isle of Man": {"editors5": "6", "editors": "27", "editors100": "1"}, "Brazil": {"editors5": "258", "editors": "768", "editors100": "25"}, "Faroe Islands": {"editors5": "2", "editors": "8", "editors100": "0"}, "Guinea": {"editors5": "1", "editors": "1", "editors100": "0"}, "Panama": {"editors5": "12", "editors": "33", "editors100": "0"}, "Korea, Republic of": {"editors5": "151", "editors": "412", "editors100": "11"}, "Costa Rica": {"editors5": "19", "editors": "62", "editors100": "0"}, "Luxembourg": {"editors5": "20", "editors": "58", "editors100": "2"}, "Cape Verde": {"editors5": "0", "editors": "2", "editors100": "0"}, "Andorra": {"editors5": "0", "editors": "1", "editors100": "0"}, "Satellite Provider": {"editors5": "2", "editors": "6", "editors100": "0"}, "Gibraltar": {"editors5": "2", "editors": "5", "editors100": "0"}, "Ireland": {"editors5": "290", "editors": "879", "editors100": "27"}, "Pakistan": {"editors5": "190", "editors": "687", "editors100": "14"}, "Nigeria": {"editors5": "14", "editors": "79", "editors100": "0"}, "Ecuador": {"editors5": "24", "editors": "52", "editors100": "2"}, "Czech Republic": {"editors5": "101", "editors": "350", "editors100": "11"}, "Europe": {"editors5": "42", "editors": "149", "editors100": "2"}, "Australia": {"editors5": "1333", "editors": "4459", "editors100": "165"}, "Algeria": {"editors5": "3", "editors": "16", "editors100": "0"}, "El Salvador": {"editors5": "3", "editors": "19", "editors100": "1"}, "Tuvalu": {"editors5": "1", "editors": "1", "editors100": "0"}, "Rwanda": {"editors5": "3", "editors": "7", "editors100": "0"}, "Chile": {"editors5": "67", "editors": "201", "editors100": "6"}, "Puerto Rico": {"editors5": "30", "editors": "92", "editors100": "1"}, "Belgium": {"editors5": "149", "editors": "541", "editors100": "16"}, "Thailand": {"editors5": "125", "editors": "299", "editors100": "11"}, "Haiti": {"editors5": "3", "editors": "6", "editors100": "0"}, "Belize": {"editors5": "2", "editors": "7", "editors100": "0"}, "Hong Kong": {"editors5": "151", "editors": "439", "editors100": "8"}, "Georgia": {"editors5": "35", "editors": "67", "editors100": "5"}, "Lao People's Democratic Republic": {"editors5": "0", "editors": "7", "editors100": "0"}, "Gambia": {"editors5": "0", "editors": "1", "editors100": "0"}, "Philippines": {"editors5": "354", "editors": "895", "editors100": "39"}, "Asia/Pacific Region": {"editors5": "9", "editors": "47", "editors100": "0"}, "Croatia": {"editors5": "67", "editors": "176", "editors100": "7"}, "Mongolia": {"editors5": "6", "editors": "20", "editors100": "0"}, "Guernsey": {"editors5": "0", "editors": "3", "editors100": "0"}, "Namibia": {"editors5": "3", "editors": "9", "editors100": "0"}, "Grenada": {"editors5": "1", "editors": "2", "editors100": "0"}, "Iraq": {"editors5": "5", "editors": "21", "editors100": "0"}, "Tanzania, United Republic of": {"editors5": "7", "editors": "21", "editors100": "1"}, "Estonia": {"editors5": "55", "editors": "126", "editors100": "8"}, "Uruguay": {"editors5": "20", "editors": "60", "editors100": "3"}, "Lebanon": {"editors5": "28", "editors": "79", "editors100": "0"}, "Uzbekistan": {"editors5": "2", "editors": "12", "editors100": "0"}, "Tunisia": {"editors5": "4", "editors": "16", "editors100": "0"}, "Palestinian Territory": {"editors5": "7", "editors": "17", "editors100": "0"}, "Holy See (Vatican City State)": {"editors5": "1", "editors": "2", "editors100": "0"}, "Antigua and Barbuda": {"editors5": "0", "editors": "3", "editors100": "0"}, "Spain": {"editors5": "301", "editors": "1021", "editors100": "25"}, "Colombia": {"editors5": "44", "editors": "147", "editors100": "5"}, "Reunion": {"editors5": "1", "editors": "4", "editors100": "0"}, "Burundi": {"editors5": "0", "editors": "1", "editors100": "0"}, "Taiwan": {"editors5": "73", "editors": "238", "editors100": "1"}, "Fiji": {"editors5": "4", "editors": "10", "editors100": "1"}, "Barbados": {"editors5": "1", "editors": "6", "editors100": "0"}, "Madagascar": {"editors5": "0", "editors": "4", "editors100": "0"}, "Italy": {"editors5": "404", "editors": "1160", "editors100": "36"}, "Bhutan": {"editors5": "1", "editors": "10", "editors100": "0"}, "Sudan": {"editors5": "1", "editors": "12", "editors100": "0"}, "Nepal": {"editors5": "20", "editors": "78", "editors100": "1"}, "Malta": {"editors5": "16", "editors": "62", "editors100": "1"}, "Netherlands": {"editors5": "459", "editors": "1368", "editors100": "64"}, "Anonymous Proxy": {"editors5": "21", "editors": "68", "editors100": "3"}, "Suriname": {"editors5": "0", "editors": "4", "editors100": "0"}, "Venezuela": {"editors5": "30", "editors": "99", "editors100": "2"}, "Netherlands Antilles": {"editors5": "4", "editors": "16", "editors100": "0"}, "Aland Islands": {"editors5": "1", "editors": "4", "editors100": "0"}, "Israel": {"editors5": "223", "editors": "659", "editors100": "23"}, "Iceland": {"editors5": "16", "editors": "75", "editors100": "2"}, "Zambia": {"editors5": "1", "editors": "5", "editors100": "0"}, "Senegal": {"editors5": "3", "editors": "4", "editors100": "0"}, "Papua New Guinea": {"editors5": "0", "editors": "3", "editors100": "0"}, "Invalid IP": {"editors5": "4", "editors": "7", "editors100": "3"}, "Zimbabwe": {"editors5": "1", "editors": "12", "editors100": "0"}, "Germany": {"editors5": "823", "editors": "2917", "editors100": "80"}, "Denmark": {"editors5": "143", "editors": "484", "editors100": "12"}, "Cote D'Ivoire": {"editors5": "1", "editors": "1", "editors100": "0"}, "Moldova, Republic of": {"editors5": "8", "editors": "32", "editors100": "0"}, "Mauritania": {"editors5": "0", "editors": "1", "editors100": "0"}, "Kyrgyzstan": {"editors5": "6", "editors": "18", "editors100": "1"}, "Congo, The Democratic Republic of the": {"editors5": "0", "editors": "1", "editors100": "0"}, "Macedonia": {"editors5": "24", "editors": "62", "editors100": "4"}, "Sri Lanka": {"editors5": "46", "editors": "177", "editors100": "2"}, "Latvia": {"editors5": "34", "editors": "72", "editors100": "3"}, "Guyana": {"editors5": "3", "editors": "6", "editors100": "0"}, "Guadeloupe": {"editors5": "1", "editors": "3", "editors100": "0"}, "Morocco": {"editors5": "9", "editors": "38", "editors100": "1"}, "Honduras": {"editors5": "2", "editors": "18", "editors100": "0"}, "Myanmar": {"editors5": "1", "editors": "2", "editors100": "0"}, "Mexico": {"editors5": "111", "editors": "409", "editors100": "10"}, "Egypt": {"editors5": "43", "editors": "159", "editors100": "0"}, "Nicaragua": {"editors5": "6", "editors": "14", "editors100": "0"}, "Singapore": {"editors5": "241", "editors": "638", "editors100": "17"}, "Serbia": {"editors5": "107", "editors": "293", "editors100": "11"}, "United Kingdom": {"editors5": "4835", "editors": "15157", "editors100": "642"}, "Greece": {"editors5": "129", "editors": "392", "editors100": "9"}, "Paraguay": {"editors5": "4", "editors": "25", "editors100": "0"}, "Gabon": {"editors5": "0", "editors": "1", "editors100": "0"}, "Botswana": {"editors5": "0", "editors": "4", "editors100": "0"}}
\ No newline at end of file
diff --git a/data/geo/data/en_geo_editors.tsv b/data/geo/data/en_geo_editors.tsv
new file mode 100644 (file)
index 0000000..52efc67
--- /dev/null
@@ -0,0 +1,205 @@
+Afghanistan    13      2       0
+Aland Islands  4       1       0
+Albania        40      15      1
+Algeria        16      3       0
+American Samoa 1       1       0
+Andorra        1       0       0
+Angola 1       0       0
+Anonymous Proxy        68      21      3
+Antigua and Barbuda    3       0       0
+Argentina      336     96      9
+Armenia        55      17      1
+Aruba  5       3       1
+Asia/Pacific Region    47      9       0
+Australia      4459    1333    165
+Austria        379     90      4
+Azerbaijan     58      20      2
+Bahamas        13      4       0
+Bahrain        27      8       1
+Bangladesh     248     81      1
+Barbados       6       1       0
+Belarus        67      24      1
+Belgium        541     149     16
+Belize 7       2       0
+Benin  1       0       0
+Bermuda        5       1       0
+Bhutan 10      1       0
+Bolivia        24      2       0
+Bosnia and Herzegovina 67      34      3
+Botswana       4       0       0
+Brazil 768     258     25
+Brunei Darussalam      12      8       1
+Bulgaria       232     85      11
+Burundi        1       0       0
+Cambodia       39      6       0
+Cameroon       3       0       0
+Canada 6666    2088    221
+Cape Verde     2       0       0
+Cayman Islands 7       2       0
+Chile  201     67      6
+China  587     153     11
+Colombia       147     44      5
+Congo, The Democratic Republic of the  1       0       0
+Costa Rica     62      19      0
+Cote D'Ivoire  1       1       0
+Croatia        176     67      7
+Cuba   22      6       1
+Cyprus 77      24      3
+Czech Republic 350     101     11
+Denmark        484     143     12
+Dominica       8       3       0
+Dominican Republic     44      14      1
+Ecuador        52      24      2
+Egypt  159     43      0
+El Salvador    19      3       1
+Estonia        126     55      8
+Ethiopia       21      4       0
+Europe 149     42      2
+Faroe Islands  8       2       0
+Fiji   10      4       1
+Finland        558     168     21
+France 1760    482     31
+French Guiana  2       0       0
+French Polynesia       3       1       0
+Gabon  1       0       0
+Gambia 1       0       0
+Georgia        67      35      5
+Germany        2917    823     80
+Ghana  32      8       1
+Gibraltar      5       2       0
+Greece 392     129     9
+Greenland      1       0       0
+Grenada        2       1       0
+Guadeloupe     3       1       0
+Guam   4       1       0
+Guatemala      25      3       0
+Guernsey       3       0       0
+Guinea 1       1       0
+Guyana 6       3       0
+Haiti  6       3       0
+Holy See (Vatican City State)  2       1       0
+Honduras       18      2       0
+Hong Kong      439     151     8
+Hungary        319     110     11
+Iceland        75      16      2
+India  5417    1513    95
+Indonesia      406     149     13
+Invalid IP     7       4       3
+Iran, Islamic Republic of      284     95      9
+Iraq   21      5       0
+Ireland        879     290     27
+Isle of Man    27      6       1
+Israel 659     223     23
+Italy  1160    404     36
+Jamaica        35      11      0
+Japan  695     210     22
+Jersey 16      9       2
+Jordan 52      20      0
+Kazakstan      42      12      0
+Kenya  78      16      0
+Korea, Republic of     412     151     11
+Kuwait 60      20      2
+Kyrgyzstan     18      6       1
+Lao People's Democratic Republic       7       0       0
+Latvia 72      34      3
+Lebanon        79      28      0
+Lesotho        1       0       0
+Liberia        2       1       0
+Libyan Arab Jamahiriya 7       6       0
+Lithuania      94      31      3
+Luxembourg     58      20      2
+Macau  16      3       0
+Macedonia      62      24      4
+Madagascar     4       0       0
+Malawi 3       1       0
+Malaysia       470     177     12
+Maldives       45      17      2
+Mali   3       1       0
+Malta  62      16      1
+Martinique     2       0       0
+Mauritania     1       0       0
+Mauritius      27      6       1
+Mexico 409     111     10
+Micronesia, Federated States of        1       0       0
+Moldova, Republic of   32      8       0
+Monaco 4       1       0
+Mongolia       20      6       0
+Montenegro     16      9       2
+Morocco        38      9       1
+Mozambique     6       2       0
+Myanmar        2       1       0
+Namibia        9       3       0
+Nepal  78      20      1
+Netherlands    1368    459     64
+Netherlands Antilles   16      4       0
+New Zealand    832     260     31
+Nicaragua      14      6       0
+Niger  1       0       0
+Nigeria        79      14      0
+Northern Mariana Islands       3       2       0
+Norway 657     186     20
+Oman   30      8       0
+Pakistan       687     190     14
+Palestinian Territory  17      7       0
+Panama 33      12      0
+Papua New Guinea       3       0       0
+Paraguay       25      4       0
+Peru   99      39      2
+Philippines    895     354     39
+Poland 635     182     15
+Portugal       299     108     12
+Puerto Rico    92      30      1
+Qatar  63      13      2
+Reunion        4       1       0
+Romania        351     130     9
+Russian Federation     953     266     24
+Rwanda 7       3       0
+Saint Kitts and Nevis  5       2       0
+Saint Lucia    7       3       1
+Saint Vincent and the Grenadines       1       0       0
+Samoa  2       0       0
+San Marino     1       0       0
+Satellite Provider     6       2       0
+Saudi Arabia   194     57      5
+Senegal        4       3       0
+Serbia 293     107     11
+Seychelles     2       0       0
+Singapore      638     241     17
+Slovakia       112     30      2
+Slovenia       158     41      7
+Solomon Islands        1       0       0
+Somalia        4       0       0
+South Africa   366     115     9
+Spain  1021    301     25
+Sri Lanka      177     46      2
+Sudan  12      1       0
+Suriname       4       0       0
+Sweden 1006    308     28
+Switzerland    503     132     11
+Syrian Arab Republic   6       3       0
+Taiwan 238     73      1
+Tajikistan     2       2       0
+Tanzania, United Republic of   21      7       1
+Thailand       299     125     11
+Tonga  2       0       0
+Trinidad and Tobago    48      8       0
+Tunisia        16      4       0
+Turkey 393     128     11
+Turkmenistan   1       1       0
+Turks and Caicos Islands       1       1       0
+Tuvalu 1       1       0
+Uganda 28      2       0
+Ukraine        367     106     5
+United Arab Emirates   320     101     1
+United Kingdom 15157   4835    642
+United States  50197   14080   1377
+Uruguay        60      20      3
+Uzbekistan     12      2       0
+Vanuatu        2       1       0
+Venezuela      99      30      2
+Vietnam        140     46      1
+Virgin Islands, British        8       3       0
+Virgin Islands, U.S.   5       2       0
+Yemen  5       1       1
+Zambia 5       1       0
+Zimbabwe       12      1       0
index c5094ce..788dbbd 100755 (executable)
 {"type":"Feature","properties":{"name":"Burkina Faso"},"geometry":{"type":"Polygon","coordinates":[[[-2.827496,9.642461],[-3.511899,9.900326],[-3.980449,9.862344],[-4.330247,9.610835],[-4.779884,9.821985],[-4.954653,10.152714],[-5.404342,10.370737],[-5.470565,10.95127],[-5.197843,11.375146],[-5.220942,11.713859],[-4.427166,12.542646],[-4.280405,13.228444],[-4.006391,13.472485],[-3.522803,13.337662],[-3.103707,13.541267],[-2.967694,13.79815],[-2.191825,14.246418],[-2.001035,14.559008],[-1.066363,14.973815],[-0.515854,15.116158],[-0.266257,14.924309],[0.374892,14.928908],[0.295646,14.444235],[0.429928,13.988733],[0.993046,13.33575],[1.024103,12.851826],[2.177108,12.625018],[2.154474,11.94015],[1.935986,11.64115],[1.447178,11.547719],[1.24347,11.110511],[0.899563,10.997339],[0.023803,11.018682],[-0.438702,11.098341],[-0.761576,10.93693],[-1.203358,11.009819],[-2.940409,10.96269],[-2.963896,10.395335],[-2.827496,9.642461]]]},"id":"BFA"},
 {"type":"Feature","properties":{"name":"Bangladesh"},"geometry":{"type":"Polygon","coordinates":[[[92.672721,22.041239],[92.652257,21.324048],[92.303234,21.475485],[92.368554,20.670883],[92.082886,21.192195],[92.025215,21.70157],[91.834891,22.182936],[91.417087,22.765019],[90.496006,22.805017],[90.586957,22.392794],[90.272971,21.836368],[89.847467,22.039146],[89.70205,21.857116],[89.418863,21.966179],[89.031961,22.055708],[88.876312,22.879146],[88.52977,23.631142],[88.69994,24.233715],[88.084422,24.501657],[88.306373,24.866079],[88.931554,25.238692],[88.209789,25.768066],[88.563049,26.446526],[89.355094,26.014407],[89.832481,25.965082],[89.920693,25.26975],[90.872211,25.132601],[91.799596,25.147432],[92.376202,24.976693],[91.915093,24.130414],[91.46773,24.072639],[91.158963,23.503527],[91.706475,22.985264],[91.869928,23.624346],[92.146035,23.627499],[92.672721,22.041239]]]},"id":"BGD"},
 {"type":"Feature","properties":{"name":"Bulgaria"},"geometry":{"type":"Polygon","coordinates":[[[22.65715,44.234923],[22.944832,43.823785],[23.332302,43.897011],[24.100679,43.741051],[25.569272,43.688445],[26.065159,43.943494],[27.2424,44.175986],[27.970107,43.812468],[28.558081,43.707462],[28.039095,43.293172],[27.673898,42.577892],[27.99672,42.007359],[27.135739,42.141485],[26.117042,41.826905],[26.106138,41.328899],[25.197201,41.234486],[24.492645,41.583896],[23.692074,41.309081],[22.952377,41.337994],[22.881374,41.999297],[22.380526,42.32026],[22.545012,42.461362],[22.436595,42.580321],[22.604801,42.898519],[22.986019,43.211161],[22.500157,43.642814],[22.410446,44.008063],[22.65715,44.234923]]]},"id":"BGR"},
-{"type":"Feature","properties":{"name":"The Bahamas"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-77.53466,23.75975],[-77.78,23.71],[-78.03405,24.28615],[-78.40848,24.57564],[-78.19087,25.2103],[-77.89,25.17],[-77.54,24.34],[-77.53466,23.75975]]],[[[-77.82,26.58],[-78.91,26.42],[-78.98,26.79],[-78.51,26.87],[-77.85,26.84],[-77.82,26.58]]],[[[-77,26.59],[-77.17255,25.87918],[-77.35641,26.00735],[-77.34,26.53],[-77.78802,26.92516],[-77.79,27.04],[-77,26.59]]]]},"id":"BHS"},
+{"type":"Feature","properties":{"name":"Bahamas"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-77.53466,23.75975],[-77.78,23.71],[-78.03405,24.28615],[-78.40848,24.57564],[-78.19087,25.2103],[-77.89,25.17],[-77.54,24.34],[-77.53466,23.75975]]],[[[-77.82,26.58],[-78.91,26.42],[-78.98,26.79],[-78.51,26.87],[-77.85,26.84],[-77.82,26.58]]],[[[-77,26.59],[-77.17255,25.87918],[-77.35641,26.00735],[-77.34,26.53],[-77.78802,26.92516],[-77.79,27.04],[-77,26.59]]]]},"id":"BHS"},
 {"type":"Feature","properties":{"name":"Bosnia and Herzegovina"},"geometry":{"type":"Polygon","coordinates":[[[19.005486,44.860234],[19.36803,44.863],[19.11761,44.42307],[19.59976,44.03847],[19.454,43.5681],[19.21852,43.52384],[19.03165,43.43253],[18.70648,43.20011],[18.56,42.65],[17.674922,43.028563],[17.297373,43.446341],[16.916156,43.667722],[16.456443,44.04124],[16.23966,44.351143],[15.750026,44.818712],[15.959367,45.233777],[16.318157,45.004127],[16.534939,45.211608],[17.002146,45.233777],[17.861783,45.06774],[18.553214,45.08159],[19.005486,44.860234]]]},"id":"BIH"},
 {"type":"Feature","properties":{"name":"Belarus"},"geometry":{"type":"Polygon","coordinates":[[[23.484128,53.912498],[24.450684,53.905702],[25.536354,54.282423],[25.768433,54.846963],[26.588279,55.167176],[26.494331,55.615107],[27.10246,55.783314],[28.176709,56.16913],[29.229513,55.918344],[29.371572,55.670091],[29.896294,55.789463],[30.873909,55.550976],[30.971836,55.081548],[30.757534,54.811771],[31.384472,54.157056],[31.791424,53.974639],[31.731273,53.794029],[32.405599,53.618045],[32.693643,53.351421],[32.304519,53.132726],[31.497644,53.167427],[31.305201,53.073996],[31.540018,52.742052],[31.785998,52.101678],[30.927549,52.042353],[30.619454,51.822806],[30.555117,51.319503],[30.157364,51.416138],[29.254938,51.368234],[28.992835,51.602044],[28.617613,51.427714],[28.241615,51.572227],[27.454066,51.592303],[26.337959,51.832289],[25.327788,51.910656],[24.553106,51.888461],[24.005078,51.617444],[23.527071,51.578454],[23.508002,52.023647],[23.199494,52.486977],[23.799199,52.691099],[23.804935,53.089731],[23.527536,53.470122],[23.484128,53.912498]]]},"id":"BLR"},
 {"type":"Feature","properties":{"name":"Belize"},"geometry":{"type":"Polygon","coordinates":[[[-89.14308,17.808319],[-89.150909,17.955468],[-89.029857,18.001511],[-88.848344,17.883198],[-88.490123,18.486831],[-88.300031,18.499982],[-88.296336,18.353273],[-88.106813,18.348674],[-88.123479,18.076675],[-88.285355,17.644143],[-88.197867,17.489475],[-88.302641,17.131694],[-88.239518,17.036066],[-88.355428,16.530774],[-88.551825,16.265467],[-88.732434,16.233635],[-88.930613,15.887273],[-89.229122,15.886938],[-89.150806,17.015577],[-89.14308,17.808319]]]},"id":"BLZ"},
 {"type":"Feature","properties":{"name":"Bolivia"},"geometry":{"type":"Polygon","coordinates":[[[-62.846468,-22.034985],[-63.986838,-21.993644],[-64.377021,-22.798091],[-64.964892,-22.075862],[-66.273339,-21.83231],[-67.106674,-22.735925],[-67.82818,-22.872919],[-68.219913,-21.494347],[-68.757167,-20.372658],[-68.442225,-19.405068],[-68.966818,-18.981683],[-69.100247,-18.260125],[-69.590424,-17.580012],[-68.959635,-16.500698],[-69.389764,-15.660129],[-69.160347,-15.323974],[-69.339535,-14.953195],[-68.948887,-14.453639],[-68.929224,-13.602684],[-68.88008,-12.899729],[-68.66508,-12.5613],[-69.529678,-10.951734],[-68.786158,-11.03638],[-68.271254,-11.014521],[-68.048192,-10.712059],[-67.173801,-10.306812],[-66.646908,-9.931331],[-65.338435,-9.761988],[-65.444837,-10.511451],[-65.321899,-10.895872],[-65.402281,-11.56627],[-64.316353,-12.461978],[-63.196499,-12.627033],[-62.80306,-13.000653],[-62.127081,-13.198781],[-61.713204,-13.489202],[-61.084121,-13.479384],[-60.503304,-13.775955],[-60.459198,-14.354007],[-60.264326,-14.645979],[-60.251149,-15.077219],[-60.542966,-15.09391],[-60.15839,-16.258284],[-58.24122,-16.299573],[-58.388058,-16.877109],[-58.280804,-17.27171],[-57.734558,-17.552468],[-57.498371,-18.174188],[-57.676009,-18.96184],[-57.949997,-19.400004],[-57.853802,-19.969995],[-58.166392,-20.176701],[-58.183471,-19.868399],[-59.115042,-19.356906],[-60.043565,-19.342747],[-61.786326,-19.633737],[-62.265961,-20.513735],[-62.291179,-21.051635],[-62.685057,-22.249029],[-62.846468,-22.034985]]]},"id":"BOL"},
 {"type":"Feature","properties":{"name":"Brazil"},"geometry":{"type":"Polygon","coordinates":[[[-57.625133,-30.216295],[-56.2909,-28.852761],[-55.162286,-27.881915],[-54.490725,-27.474757],[-53.648735,-26.923473],[-53.628349,-26.124865],[-54.13005,-25.547639],[-54.625291,-25.739255],[-54.428946,-25.162185],[-54.293476,-24.5708],[-54.29296,-24.021014],[-54.652834,-23.839578],[-55.027902,-24.001274],[-55.400747,-23.956935],[-55.517639,-23.571998],[-55.610683,-22.655619],[-55.797958,-22.35693],[-56.473317,-22.0863],[-56.88151,-22.282154],[-57.937156,-22.090176],[-57.870674,-20.732688],[-58.166392,-20.176701],[-57.853802,-19.969995],[-57.949997,-19.400004],[-57.676009,-18.96184],[-57.498371,-18.174188],[-57.734558,-17.552468],[-58.280804,-17.27171],[-58.388058,-16.877109],[-58.24122,-16.299573],[-60.15839,-16.258284],[-60.542966,-15.09391],[-60.251149,-15.077219],[-60.264326,-14.645979],[-60.459198,-14.354007],[-60.503304,-13.775955],[-61.084121,-13.479384],[-61.713204,-13.489202],[-62.127081,-13.198781],[-62.80306,-13.000653],[-63.196499,-12.627033],[-64.316353,-12.461978],[-65.402281,-11.56627],[-65.321899,-10.895872],[-65.444837,-10.511451],[-65.338435,-9.761988],[-66.646908,-9.931331],[-67.173801,-10.306812],[-68.048192,-10.712059],[-68.271254,-11.014521],[-68.786158,-11.03638],[-69.529678,-10.951734],[-70.093752,-11.123972],[-70.548686,-11.009147],[-70.481894,-9.490118],[-71.302412,-10.079436],[-72.184891,-10.053598],[-72.563033,-9.520194],[-73.226713,-9.462213],[-73.015383,-9.032833],[-73.571059,-8.424447],[-73.987235,-7.52383],[-73.723401,-7.340999],[-73.724487,-6.918595],[-73.120027,-6.629931],[-73.219711,-6.089189],[-72.964507,-5.741251],[-72.891928,-5.274561],[-71.748406,-4.593983],[-70.928843,-4.401591],[-70.794769,-4.251265],[-69.893635,-4.298187],[-69.444102,-1.556287],[-69.420486,-1.122619],[-69.577065,-0.549992],[-70.020656,-0.185156],[-70.015566,0.541414],[-69.452396,0.706159],[-69.252434,0.602651],[-69.218638,0.985677],[-69.804597,1.089081],[-69.816973,1.714805],[-67.868565,1.692455],[-67.53781,2.037163],[-67.259998,1.719999],[-67.065048,1.130112],[-66.876326,1.253361],[-66.325765,0.724452],[-65.548267,0.789254],[-65.354713,1.095282],[-64.611012,1.328731],[-64.199306,1.492855],[-64.083085,1.916369],[-63.368788,2.2009],[-63.422867,2.411068],[-64.269999,2.497006],[-64.408828,3.126786],[-64.368494,3.79721],[-64.816064,4.056445],[-64.628659,4.148481],[-63.888343,4.02053],[-63.093198,3.770571],[-62.804533,4.006965],[-62.08543,4.162124],[-60.966893,4.536468],[-60.601179,4.918098],[-60.733574,5.200277],[-60.213683,5.244486],[-59.980959,5.014061],[-60.111002,4.574967],[-59.767406,4.423503],[-59.53804,3.958803],[-59.815413,3.606499],[-59.974525,2.755233],[-59.718546,2.24963],[-59.646044,1.786894],[-59.030862,1.317698],[-58.540013,1.268088],[-58.429477,1.463942],[-58.11345,1.507195],[-57.660971,1.682585],[-57.335823,1.948538],[-56.782704,1.863711],[-56.539386,1.899523],[-55.995698,1.817667],[-55.9056,2.021996],[-56.073342,2.220795],[-55.973322,2.510364],[-55.569755,2.421506],[-55.097587,2.523748],[-54.524754,2.311849],[-54.088063,2.105557],[-53.778521,2.376703],[-53.554839,2.334897],[-53.418465,2.053389],[-52.939657,2.124858],[-52.556425,2.504705],[-52.249338,3.241094],[-51.657797,4.156232],[-51.317146,4.203491],[-51.069771,3.650398],[-50.508875,1.901564],[-49.974076,1.736483],[-49.947101,1.04619],[-50.699251,0.222984],[-50.388211,-0.078445],[-48.620567,-0.235489],[-48.584497,-1.237805],[-47.824956,-0.581618],[-46.566584,-0.941028],[-44.905703,-1.55174],[-44.417619,-2.13775],[-44.581589,-2.691308],[-43.418791,-2.38311],[-41.472657,-2.912018],[-39.978665,-2.873054],[-38.500383,-3.700652],[-37.223252,-4.820946],[-36.452937,-5.109404],[-35.597796,-5.149504],[-35.235389,-5.464937],[-34.89603,-6.738193],[-34.729993,-7.343221],[-35.128212,-8.996401],[-35.636967,-9.649282],[-37.046519,-11.040721],[-37.683612,-12.171195],[-38.423877,-13.038119],[-38.673887,-13.057652],[-38.953276,-13.79337],[-38.882298,-15.667054],[-39.161092,-17.208407],[-39.267339,-17.867746],[-39.583521,-18.262296],[-39.760823,-19.599113],[-40.774741,-20.904512],[-40.944756,-21.937317],[-41.754164,-22.370676],[-41.988284,-22.97007],[-43.074704,-22.967693],[-44.647812,-23.351959],[-45.352136,-23.796842],[-46.472093,-24.088969],[-47.648972,-24.885199],[-48.495458,-25.877025],[-48.641005,-26.623698],[-48.474736,-27.175912],[-48.66152,-28.186135],[-48.888457,-28.674115],[-49.587329,-29.224469],[-50.696874,-30.984465],[-51.576226,-31.777698],[-52.256081,-32.24537],[-52.7121,-33.196578],[-53.373662,-33.768378],[-53.650544,-33.202004],[-53.209589,-32.727666],[-53.787952,-32.047243],[-54.572452,-31.494511],[-55.60151,-30.853879],[-55.973245,-30.883076],[-56.976026,-30.109686],[-57.625133,-30.216295]]]},"id":"BRA"},
-{"type":"Feature","properties":{"name":"Brunei"},"geometry":{"type":"Polygon","coordinates":[[[114.204017,4.525874],[114.599961,4.900011],[115.45071,5.44773],[115.4057,4.955228],[115.347461,4.316636],[114.869557,4.348314],[114.659596,4.007637],[114.204017,4.525874]]]},"id":"BRN"},
+{"type":"Feature","properties":{"name":"Brunei Darussalam"},"geometry":{"type":"Polygon","coordinates":[[[114.204017,4.525874],[114.599961,4.900011],[115.45071,5.44773],[115.4057,4.955228],[115.347461,4.316636],[114.869557,4.348314],[114.659596,4.007637],[114.204017,4.525874]]]},"id":"BRN"},
 {"type":"Feature","properties":{"name":"Bhutan"},"geometry":{"type":"Polygon","coordinates":[[[91.696657,27.771742],[92.103712,27.452614],[92.033484,26.83831],[91.217513,26.808648],[90.373275,26.875724],[89.744528,26.719403],[88.835643,27.098966],[88.814248,27.299316],[89.47581,28.042759],[90.015829,28.296439],[90.730514,28.064954],[91.258854,28.040614],[91.696657,27.771742]]]},"id":"BTN"},
 {"type":"Feature","properties":{"name":"Botswana"},"geometry":{"type":"Polygon","coordinates":[[[25.649163,-18.536026],[25.850391,-18.714413],[26.164791,-19.293086],[27.296505,-20.39152],[27.724747,-20.499059],[27.727228,-20.851802],[28.02137,-21.485975],[28.794656,-21.639454],[29.432188,-22.091313],[28.017236,-22.827754],[27.11941,-23.574323],[26.786407,-24.240691],[26.485753,-24.616327],[25.941652,-24.696373],[25.765849,-25.174845],[25.664666,-25.486816],[25.025171,-25.71967],[24.211267,-25.670216],[23.73357,-25.390129],[23.312097,-25.26869],[22.824271,-25.500459],[22.579532,-25.979448],[22.105969,-26.280256],[21.605896,-26.726534],[20.889609,-26.828543],[20.66647,-26.477453],[20.758609,-25.868136],[20.165726,-24.917962],[19.895768,-24.76779],[19.895458,-21.849157],[20.881134,-21.814327],[20.910641,-18.252219],[21.65504,-18.219146],[23.196858,-17.869038],[23.579006,-18.281261],[24.217365,-17.889347],[24.520705,-17.887125],[25.084443,-17.661816],[25.264226,-17.73654],[25.649163,-18.536026]]]},"id":"BWA"},
 {"type":"Feature","properties":{"name":"Central African Republic"},"geometry":{"type":"Polygon","coordinates":[[[15.27946,7.421925],[16.106232,7.497088],[16.290562,7.754307],[16.456185,7.734774],[16.705988,7.508328],[17.96493,7.890914],[18.389555,8.281304],[18.911022,8.630895],[18.81201,8.982915],[19.094008,9.074847],[20.059685,9.012706],[21.000868,9.475985],[21.723822,10.567056],[22.231129,10.971889],[22.864165,11.142395],[22.977544,10.714463],[23.554304,10.089255],[23.55725,9.681218],[23.394779,9.265068],[23.459013,8.954286],[23.805813,8.666319],[24.567369,8.229188],[25.114932,7.825104],[25.124131,7.500085],[25.796648,6.979316],[26.213418,6.546603],[26.465909,5.946717],[27.213409,5.550953],[27.374226,5.233944],[27.044065,5.127853],[26.402761,5.150875],[25.650455,5.256088],[25.278798,5.170408],[25.128833,4.927245],[24.805029,4.897247],[24.410531,5.108784],[23.297214,4.609693],[22.84148,4.710126],[22.704124,4.633051],[22.405124,4.02916],[21.659123,4.224342],[20.927591,4.322786],[20.290679,4.691678],[19.467784,5.031528],[18.932312,4.709506],[18.542982,4.201785],[18.453065,3.504386],[17.8099,3.560196],[17.133042,3.728197],[16.537058,3.198255],[16.012852,2.26764],[15.907381,2.557389],[15.862732,3.013537],[15.405396,3.335301],[15.03622,3.851367],[14.950953,4.210389],[14.478372,4.732605],[14.558936,5.030598],[14.459407,5.451761],[14.53656,6.226959],[14.776545,6.408498],[15.27946,7.421925]]]},"id":"CAF"},
@@ -30,9 +30,9 @@
 {"type":"Feature","properties":{"name":"Switzerland"},"geometry":{"type":"Polygon","coordinates":[[[9.594226,47.525058],[9.632932,47.347601],[9.47997,47.10281],[9.932448,46.920728],[10.442701,46.893546],[10.363378,46.483571],[9.922837,46.314899],[9.182882,46.440215],[8.966306,46.036932],[8.489952,46.005151],[8.31663,46.163642],[7.755992,45.82449],[7.273851,45.776948],[6.843593,45.991147],[6.5001,46.429673],[6.022609,46.27299],[6.037389,46.725779],[6.768714,47.287708],[6.736571,47.541801],[7.192202,47.449766],[7.466759,47.620582],[8.317301,47.61358],[8.522612,47.830828],[9.594226,47.525058]]]},"id":"CHE"},
 {"type":"Feature","properties":{"name":"Chile"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.63401,-52.63637],[-68.63335,-54.8695],[-67.56244,-54.87001],[-66.95992,-54.89681],[-67.29103,-55.30124],[-68.14863,-55.61183],[-68.639991,-55.580018],[-69.2321,-55.49906],[-69.95809,-55.19843],[-71.00568,-55.05383],[-72.2639,-54.49514],[-73.2852,-53.95752],[-74.66253,-52.83749],[-73.8381,-53.04743],[-72.43418,-53.7154],[-71.10773,-54.07433],[-70.59178,-53.61583],[-70.26748,-52.93123],[-69.34565,-52.5183],[-68.63401,-52.63637]]],[[[-68.219913,-21.494347],[-67.82818,-22.872919],[-67.106674,-22.735925],[-66.985234,-22.986349],[-67.328443,-24.025303],[-68.417653,-24.518555],[-68.386001,-26.185016],[-68.5948,-26.506909],[-68.295542,-26.89934],[-69.001235,-27.521214],[-69.65613,-28.459141],[-70.01355,-29.367923],[-69.919008,-30.336339],[-70.535069,-31.36501],[-70.074399,-33.09121],[-69.814777,-33.273886],[-69.817309,-34.193571],[-70.388049,-35.169688],[-70.364769,-36.005089],[-71.121881,-36.658124],[-71.118625,-37.576827],[-70.814664,-38.552995],[-71.413517,-38.916022],[-71.680761,-39.808164],[-71.915734,-40.832339],[-71.746804,-42.051386],[-72.148898,-42.254888],[-71.915424,-43.408565],[-71.464056,-43.787611],[-71.793623,-44.207172],[-71.329801,-44.407522],[-71.222779,-44.784243],[-71.659316,-44.973689],[-71.552009,-45.560733],[-71.917258,-46.884838],[-72.447355,-47.738533],[-72.331161,-48.244238],[-72.648247,-48.878618],[-73.415436,-49.318436],[-73.328051,-50.378785],[-72.975747,-50.74145],[-72.309974,-50.67701],[-72.329404,-51.425956],[-71.914804,-52.009022],[-69.498362,-52.142761],[-68.571545,-52.299444],[-69.461284,-52.291951],[-69.94278,-52.537931],[-70.845102,-52.899201],[-71.006332,-53.833252],[-71.429795,-53.856455],[-72.557943,-53.53141],[-73.702757,-52.835069],[-73.702757,-52.83507],[-74.946763,-52.262754],[-75.260026,-51.629355],[-74.976632,-51.043396],[-75.479754,-50.378372],[-75.608015,-48.673773],[-75.18277,-47.711919],[-74.126581,-46.939253],[-75.644395,-46.647643],[-74.692154,-45.763976],[-74.351709,-44.103044],[-73.240356,-44.454961],[-72.717804,-42.383356],[-73.3889,-42.117532],[-73.701336,-43.365776],[-74.331943,-43.224958],[-74.017957,-41.794813],[-73.677099,-39.942213],[-73.217593,-39.258689],[-73.505559,-38.282883],[-73.588061,-37.156285],[-73.166717,-37.12378],[-72.553137,-35.50884],[-71.861732,-33.909093],[-71.43845,-32.418899],[-71.668721,-30.920645],[-71.370083,-30.095682],[-71.489894,-28.861442],[-70.905124,-27.64038],[-70.724954,-25.705924],[-70.403966,-23.628997],[-70.091246,-21.393319],[-70.16442,-19.756468],[-70.372572,-18.347975],[-69.858444,-18.092694],[-69.590424,-17.580012],[-69.100247,-18.260125],[-68.966818,-18.981683],[-68.442225,-19.405068],[-68.757167,-20.372658],[-68.219913,-21.494347]]]]},"id":"CHL"},
 {"type":"Feature","properties":{"name":"China"},"geometry":{"type":"MultiPolygon","coordinates":[[[[110.339188,18.678395],[109.47521,18.197701],[108.655208,18.507682],[108.626217,19.367888],[109.119056,19.821039],[110.211599,20.101254],[110.786551,20.077534],[111.010051,19.69593],[110.570647,19.255879],[110.339188,18.678395]]],[[[127.657407,49.76027],[129.397818,49.4406],[130.582293,48.729687],[130.987282,47.790132],[132.506672,47.78897],[133.373596,48.183442],[135.026311,48.47823],[134.500814,47.57844],[134.112362,47.212467],[133.769644,46.116927],[133.097127,45.144066],[131.883454,45.321162],[131.025212,44.967953],[131.288555,44.11152],[131.144688,42.92999],[130.633866,42.903015],[130.640016,42.395009],[129.994267,42.985387],[129.596669,42.424982],[128.052215,41.994285],[128.208433,41.466772],[127.343783,41.503152],[126.869083,41.816569],[126.182045,41.107336],[125.079942,40.569824],[124.265625,39.928493],[122.86757,39.637788],[122.131388,39.170452],[121.054554,38.897471],[121.585995,39.360854],[121.376757,39.750261],[122.168595,40.422443],[121.640359,40.94639],[120.768629,40.593388],[119.639602,39.898056],[119.023464,39.252333],[118.042749,39.204274],[117.532702,38.737636],[118.059699,38.061476],[118.87815,37.897325],[118.911636,37.448464],[119.702802,37.156389],[120.823457,37.870428],[121.711259,37.481123],[122.357937,37.454484],[122.519995,36.930614],[121.104164,36.651329],[120.637009,36.11144],[119.664562,35.609791],[119.151208,34.909859],[120.227525,34.360332],[120.620369,33.376723],[121.229014,32.460319],[121.908146,31.692174],[121.891919,30.949352],[121.264257,30.676267],[121.503519,30.142915],[122.092114,29.83252],[121.938428,29.018022],[121.684439,28.225513],[121.125661,28.135673],[120.395473,27.053207],[119.585497,25.740781],[118.656871,24.547391],[117.281606,23.624501],[115.890735,22.782873],[114.763827,22.668074],[114.152547,22.22376],[113.80678,22.54834],[113.241078,22.051367],[111.843592,21.550494],[110.785466,21.397144],[110.444039,20.341033],[109.889861,20.282457],[109.627655,21.008227],[109.864488,21.395051],[108.522813,21.715212],[108.05018,21.55238],[107.04342,21.811899],[106.567273,22.218205],[106.725403,22.794268],[105.811247,22.976892],[105.329209,23.352063],[104.476858,22.81915],[103.504515,22.703757],[102.706992,22.708795],[102.170436,22.464753],[101.652018,22.318199],[101.80312,21.174367],[101.270026,21.201652],[101.180005,21.436573],[101.150033,21.849984],[100.416538,21.558839],[99.983489,21.742937],[99.240899,22.118314],[99.531992,22.949039],[98.898749,23.142722],[98.660262,24.063286],[97.60472,23.897405],[97.724609,25.083637],[98.671838,25.918703],[98.712094,26.743536],[98.68269,27.508812],[98.246231,27.747221],[97.911988,28.335945],[97.327114,28.261583],[96.248833,28.411031],[96.586591,28.83098],[96.117679,29.452802],[95.404802,29.031717],[94.56599,29.277438],[93.413348,28.640629],[92.503119,27.896876],[91.696657,27.771742],[91.258854,28.040614],[90.730514,28.064954],[90.015829,28.296439],[89.47581,28.042759],[88.814248,27.299316],[88.730326,28.086865],[88.120441,27.876542],[86.954517,27.974262],[85.82332,28.203576],[85.011638,28.642774],[84.23458,28.839894],[83.898993,29.320226],[83.337115,29.463732],[82.327513,30.115268],[81.525804,30.422717],[81.111256,30.183481],[79.721367,30.882715],[78.738894,31.515906],[78.458446,32.618164],[79.176129,32.48378],[79.208892,32.994395],[78.811086,33.506198],[78.912269,34.321936],[77.837451,35.49401],[76.192848,35.898403],[75.896897,36.666806],[75.158028,37.133031],[74.980002,37.41999],[74.829986,37.990007],[74.864816,38.378846],[74.257514,38.606507],[73.928852,38.505815],[73.675379,39.431237],[73.960013,39.660008],[73.822244,39.893973],[74.776862,40.366425],[75.467828,40.562072],[76.526368,40.427946],[76.904484,41.066486],[78.187197,41.185316],[78.543661,41.582243],[80.11943,42.123941],[80.25999,42.349999],[80.18015,42.920068],[80.866206,43.180362],[79.966106,44.917517],[81.947071,45.317027],[82.458926,45.53965],[83.180484,47.330031],[85.16429,47.000956],[85.720484,47.452969],[85.768233,48.455751],[86.598776,48.549182],[87.35997,49.214981],[87.751264,49.297198],[88.013832,48.599463],[88.854298,48.069082],[90.280826,47.693549],[90.970809,46.888146],[90.585768,45.719716],[90.94554,45.286073],[92.133891,45.115076],[93.480734,44.975472],[94.688929,44.352332],[95.306875,44.241331],[95.762455,43.319449],[96.349396,42.725635],[97.451757,42.74889],[99.515817,42.524691],[100.845866,42.663804],[101.83304,42.514873],[103.312278,41.907468],[104.522282,41.908347],[104.964994,41.59741],[106.129316,42.134328],[107.744773,42.481516],[109.243596,42.519446],[110.412103,42.871234],[111.129682,43.406834],[111.829588,43.743118],[111.667737,44.073176],[111.348377,44.457442],[111.873306,45.102079],[112.436062,45.011646],[113.463907,44.808893],[114.460332,45.339817],[115.985096,45.727235],[116.717868,46.388202],[117.421701,46.672733],[118.874326,46.805412],[119.66327,46.69268],[119.772824,47.048059],[118.866574,47.74706],[118.064143,48.06673],[117.295507,47.697709],[116.308953,47.85341],[115.742837,47.726545],[115.485282,48.135383],[116.191802,49.134598],[116.678801,49.888531],[117.879244,49.510983],[119.288461,50.142883],[119.279366,50.582908],[120.18205,51.643566],[120.738191,51.964115],[120.725789,52.516226],[120.177089,52.753886],[121.003085,53.251401],[122.245748,53.431726],[123.571507,53.458804],[125.068211,53.161045],[125.946349,52.792799],[126.564399,51.784255],[126.939157,51.353894],[127.287456,50.739797],[127.657407,49.76027]]]]},"id":"CHN"},
-{"type":"Feature","properties":{"name":"Ivory Coast"},"geometry":{"type":"Polygon","coordinates":[[[-2.856125,4.994476],[-3.311084,4.984296],[-4.00882,5.179813],[-4.649917,5.168264],[-5.834496,4.993701],[-6.528769,4.705088],[-7.518941,4.338288],[-7.712159,4.364566],[-7.635368,5.188159],[-7.539715,5.313345],[-7.570153,5.707352],[-7.993693,6.12619],[-8.311348,6.193033],[-8.60288,6.467564],[-8.385452,6.911801],[-8.485446,7.395208],[-8.439298,7.686043],[-8.280703,7.68718],[-8.221792,8.123329],[-8.299049,8.316444],[-8.203499,8.455453],[-7.8321,8.575704],[-8.079114,9.376224],[-8.309616,9.789532],[-8.229337,10.12902],[-8.029944,10.206535],[-7.89959,10.297382],[-7.622759,10.147236],[-6.850507,10.138994],[-6.666461,10.430811],[-6.493965,10.411303],[-6.205223,10.524061],[-6.050452,10.096361],[-5.816926,10.222555],[-5.404342,10.370737],[-4.954653,10.152714],[-4.779884,9.821985],[-4.330247,9.610835],[-3.980449,9.862344],[-3.511899,9.900326],[-2.827496,9.642461],[-2.56219,8.219628],[-2.983585,7.379705],[-3.24437,6.250472],[-2.810701,5.389051],[-2.856125,4.994476]]]},"id":"CIV"},
+{"type":"Feature","properties":{"name":"Cote D'Ivoire"},"geometry":{"type":"Polygon","coordinates":[[[-2.856125,4.994476],[-3.311084,4.984296],[-4.00882,5.179813],[-4.649917,5.168264],[-5.834496,4.993701],[-6.528769,4.705088],[-7.518941,4.338288],[-7.712159,4.364566],[-7.635368,5.188159],[-7.539715,5.313345],[-7.570153,5.707352],[-7.993693,6.12619],[-8.311348,6.193033],[-8.60288,6.467564],[-8.385452,6.911801],[-8.485446,7.395208],[-8.439298,7.686043],[-8.280703,7.68718],[-8.221792,8.123329],[-8.299049,8.316444],[-8.203499,8.455453],[-7.8321,8.575704],[-8.079114,9.376224],[-8.309616,9.789532],[-8.229337,10.12902],[-8.029944,10.206535],[-7.89959,10.297382],[-7.622759,10.147236],[-6.850507,10.138994],[-6.666461,10.430811],[-6.493965,10.411303],[-6.205223,10.524061],[-6.050452,10.096361],[-5.816926,10.222555],[-5.404342,10.370737],[-4.954653,10.152714],[-4.779884,9.821985],[-4.330247,9.610835],[-3.980449,9.862344],[-3.511899,9.900326],[-2.827496,9.642461],[-2.56219,8.219628],[-2.983585,7.379705],[-3.24437,6.250472],[-2.810701,5.389051],[-2.856125,4.994476]]]},"id":"CIV"},
 {"type":"Feature","properties":{"name":"Cameroon"},"geometry":{"type":"Polygon","coordinates":[[[13.075822,2.267097],[12.951334,2.321616],[12.35938,2.192812],[11.751665,2.326758],[11.276449,2.261051],[9.649158,2.283866],[9.795196,3.073404],[9.404367,3.734527],[8.948116,3.904129],[8.744924,4.352215],[8.488816,4.495617],[8.500288,4.771983],[8.757533,5.479666],[9.233163,6.444491],[9.522706,6.453482],[10.118277,7.03877],[10.497375,7.055358],[11.058788,6.644427],[11.745774,6.981383],[11.839309,7.397042],[12.063946,7.799808],[12.218872,8.305824],[12.753672,8.717763],[12.955468,9.417772],[13.1676,9.640626],[13.308676,10.160362],[13.57295,10.798566],[14.415379,11.572369],[14.468192,11.904752],[14.577178,12.085361],[14.181336,12.483657],[14.213531,12.802035],[14.495787,12.859396],[14.893386,12.219048],[14.960152,11.555574],[14.923565,10.891325],[15.467873,9.982337],[14.909354,9.992129],[14.627201,9.920919],[14.171466,10.021378],[13.954218,9.549495],[14.544467,8.965861],[14.979996,8.796104],[15.120866,8.38215],[15.436092,7.692812],[15.27946,7.421925],[14.776545,6.408498],[14.53656,6.226959],[14.459407,5.451761],[14.558936,5.030598],[14.478372,4.732605],[14.950953,4.210389],[15.03622,3.851367],[15.405396,3.335301],[15.862732,3.013537],[15.907381,2.557389],[16.012852,2.26764],[15.940919,1.727673],[15.146342,1.964015],[14.337813,2.227875],[13.075822,2.267097]]]},"id":"CMR"},
-{"type":"Feature","properties":{"name":"Democratic Republic of the Congo"},"geometry":{"type":"Polygon","coordinates":[[[30.83386,3.509166],[30.773347,2.339883],[31.174149,2.204465],[30.85267,1.849396],[30.468508,1.583805],[30.086154,1.062313],[29.875779,0.59738],[29.819503,-0.20531],[29.587838,-0.587406],[29.579466,-1.341313],[29.291887,-1.620056],[29.254835,-2.21511],[29.117479,-2.292211],[29.024926,-2.839258],[29.276384,-3.293907],[29.339998,-4.499983],[29.519987,-5.419979],[29.419993,-5.939999],[29.620032,-6.520015],[30.199997,-7.079981],[30.740015,-8.340007],[30.346086,-8.238257],[29.002912,-8.407032],[28.734867,-8.526559],[28.449871,-9.164918],[28.673682,-9.605925],[28.49607,-10.789884],[28.372253,-11.793647],[28.642417,-11.971569],[29.341548,-12.360744],[29.616001,-12.178895],[29.699614,-13.257227],[28.934286,-13.248958],[28.523562,-12.698604],[28.155109,-12.272481],[27.388799,-12.132747],[27.16442,-11.608748],[26.553088,-11.92444],[25.75231,-11.784965],[25.418118,-11.330936],[24.78317,-11.238694],[24.314516,-11.262826],[24.257155,-10.951993],[23.912215,-10.926826],[23.456791,-10.867863],[22.837345,-11.017622],[22.402798,-10.993075],[22.155268,-11.084801],[22.208753,-9.894796],[21.875182,-9.523708],[21.801801,-8.908707],[21.949131,-8.305901],[21.746456,-7.920085],[21.728111,-7.290872],[20.514748,-7.299606],[20.601823,-6.939318],[20.091622,-6.94309],[20.037723,-7.116361],[19.417502,-7.155429],[19.166613,-7.738184],[19.016752,-7.988246],[18.464176,-7.847014],[18.134222,-7.987678],[17.47297,-8.068551],[17.089996,-7.545689],[16.860191,-7.222298],[16.57318,-6.622645],[16.326528,-5.87747],[13.375597,-5.864241],[13.024869,-5.984389],[12.735171,-5.965682],[12.322432,-6.100092],[12.182337,-5.789931],[12.436688,-5.684304],[12.468004,-5.248362],[12.631612,-4.991271],[12.995517,-4.781103],[13.25824,-4.882957],[13.600235,-4.500138],[14.144956,-4.510009],[14.209035,-4.793092],[14.582604,-4.970239],[15.170992,-4.343507],[15.75354,-3.855165],[16.00629,-3.535133],[15.972803,-2.712392],[16.407092,-1.740927],[16.865307,-1.225816],[17.523716,-0.74383],[17.638645,-0.424832],[17.663553,-0.058084],[17.82654,0.288923],[17.774192,0.855659],[17.898835,1.741832],[18.094276,2.365722],[18.393792,2.900443],[18.453065,3.504386],[18.542982,4.201785],[18.932312,4.709506],[19.467784,5.031528],[20.290679,4.691678],[20.927591,4.322786],[21.659123,4.224342],[22.405124,4.02916],[22.704124,4.633051],[22.84148,4.710126],[23.297214,4.609693],[24.410531,5.108784],[24.805029,4.897247],[25.128833,4.927245],[25.278798,5.170408],[25.650455,5.256088],[26.402761,5.150875],[27.044065,5.127853],[27.374226,5.233944],[27.979977,4.408413],[28.428994,4.287155],[28.696678,4.455077],[29.159078,4.389267],[29.715995,4.600805],[29.9535,4.173699],[30.83386,3.509166]]]},"id":"COD"},
+{"type":"Feature","properties":{"name":"Congo, The Democratic Republic of the"},"geometry":{"type":"Polygon","coordinates":[[[30.83386,3.509166],[30.773347,2.339883],[31.174149,2.204465],[30.85267,1.849396],[30.468508,1.583805],[30.086154,1.062313],[29.875779,0.59738],[29.819503,-0.20531],[29.587838,-0.587406],[29.579466,-1.341313],[29.291887,-1.620056],[29.254835,-2.21511],[29.117479,-2.292211],[29.024926,-2.839258],[29.276384,-3.293907],[29.339998,-4.499983],[29.519987,-5.419979],[29.419993,-5.939999],[29.620032,-6.520015],[30.199997,-7.079981],[30.740015,-8.340007],[30.346086,-8.238257],[29.002912,-8.407032],[28.734867,-8.526559],[28.449871,-9.164918],[28.673682,-9.605925],[28.49607,-10.789884],[28.372253,-11.793647],[28.642417,-11.971569],[29.341548,-12.360744],[29.616001,-12.178895],[29.699614,-13.257227],[28.934286,-13.248958],[28.523562,-12.698604],[28.155109,-12.272481],[27.388799,-12.132747],[27.16442,-11.608748],[26.553088,-11.92444],[25.75231,-11.784965],[25.418118,-11.330936],[24.78317,-11.238694],[24.314516,-11.262826],[24.257155,-10.951993],[23.912215,-10.926826],[23.456791,-10.867863],[22.837345,-11.017622],[22.402798,-10.993075],[22.155268,-11.084801],[22.208753,-9.894796],[21.875182,-9.523708],[21.801801,-8.908707],[21.949131,-8.305901],[21.746456,-7.920085],[21.728111,-7.290872],[20.514748,-7.299606],[20.601823,-6.939318],[20.091622,-6.94309],[20.037723,-7.116361],[19.417502,-7.155429],[19.166613,-7.738184],[19.016752,-7.988246],[18.464176,-7.847014],[18.134222,-7.987678],[17.47297,-8.068551],[17.089996,-7.545689],[16.860191,-7.222298],[16.57318,-6.622645],[16.326528,-5.87747],[13.375597,-5.864241],[13.024869,-5.984389],[12.735171,-5.965682],[12.322432,-6.100092],[12.182337,-5.789931],[12.436688,-5.684304],[12.468004,-5.248362],[12.631612,-4.991271],[12.995517,-4.781103],[13.25824,-4.882957],[13.600235,-4.500138],[14.144956,-4.510009],[14.209035,-4.793092],[14.582604,-4.970239],[15.170992,-4.343507],[15.75354,-3.855165],[16.00629,-3.535133],[15.972803,-2.712392],[16.407092,-1.740927],[16.865307,-1.225816],[17.523716,-0.74383],[17.638645,-0.424832],[17.663553,-0.058084],[17.82654,0.288923],[17.774192,0.855659],[17.898835,1.741832],[18.094276,2.365722],[18.393792,2.900443],[18.453065,3.504386],[18.542982,4.201785],[18.932312,4.709506],[19.467784,5.031528],[20.290679,4.691678],[20.927591,4.322786],[21.659123,4.224342],[22.405124,4.02916],[22.704124,4.633051],[22.84148,4.710126],[23.297214,4.609693],[24.410531,5.108784],[24.805029,4.897247],[25.128833,4.927245],[25.278798,5.170408],[25.650455,5.256088],[26.402761,5.150875],[27.044065,5.127853],[27.374226,5.233944],[27.979977,4.408413],[28.428994,4.287155],[28.696678,4.455077],[29.159078,4.389267],[29.715995,4.600805],[29.9535,4.173699],[30.83386,3.509166]]]},"id":"COD"},
 {"type":"Feature","properties":{"name":"Republic of the Congo"},"geometry":{"type":"Polygon","coordinates":[[[12.995517,-4.781103],[12.62076,-4.438023],[12.318608,-4.60623],[11.914963,-5.037987],[11.093773,-3.978827],[11.855122,-3.426871],[11.478039,-2.765619],[11.820964,-2.514161],[12.495703,-2.391688],[12.575284,-1.948511],[13.109619,-2.42874],[13.992407,-2.470805],[14.29921,-1.998276],[14.425456,-1.333407],[14.316418,-0.552627],[13.843321,0.038758],[14.276266,1.19693],[14.026669,1.395677],[13.282631,1.314184],[13.003114,1.830896],[13.075822,2.267097],[14.337813,2.227875],[15.146342,1.964015],[15.940919,1.727673],[16.012852,2.26764],[16.537058,3.198255],[17.133042,3.728197],[17.8099,3.560196],[18.453065,3.504386],[18.393792,2.900443],[18.094276,2.365722],[17.898835,1.741832],[17.774192,0.855659],[17.82654,0.288923],[17.663553,-0.058084],[17.638645,-0.424832],[17.523716,-0.74383],[16.865307,-1.225816],[16.407092,-1.740927],[15.972803,-2.712392],[16.00629,-3.535133],[15.75354,-3.855165],[15.170992,-4.343507],[14.582604,-4.970239],[14.209035,-4.793092],[14.144956,-4.510009],[13.600235,-4.500138],[13.25824,-4.882957],[12.995517,-4.781103]]]},"id":"COG"},
 {"type":"Feature","properties":{"name":"Colombia"},"geometry":{"type":"Polygon","coordinates":[[[-75.373223,-0.152032],[-75.801466,0.084801],[-76.292314,0.416047],[-76.57638,0.256936],[-77.424984,0.395687],[-77.668613,0.825893],[-77.855061,0.809925],[-78.855259,1.380924],[-78.990935,1.69137],[-78.617831,1.766404],[-78.662118,2.267355],[-78.42761,2.629556],[-77.931543,2.696606],[-77.510431,3.325017],[-77.12769,3.849636],[-77.496272,4.087606],[-77.307601,4.667984],[-77.533221,5.582812],[-77.318815,5.845354],[-77.476661,6.691116],[-77.881571,7.223771],[-77.753414,7.70984],[-77.431108,7.638061],[-77.242566,7.935278],[-77.474723,8.524286],[-77.353361,8.670505],[-76.836674,8.638749],[-76.086384,9.336821],[-75.6746,9.443248],[-75.664704,9.774003],[-75.480426,10.61899],[-74.906895,11.083045],[-74.276753,11.102036],[-74.197223,11.310473],[-73.414764,11.227015],[-72.627835,11.731972],[-72.238195,11.95555],[-71.75409,12.437303],[-71.399822,12.376041],[-71.137461,12.112982],[-71.331584,11.776284],[-71.973922,11.608672],[-72.227575,11.108702],[-72.614658,10.821975],[-72.905286,10.450344],[-73.027604,9.73677],[-73.304952,9.152],[-72.78873,9.085027],[-72.660495,8.625288],[-72.439862,8.405275],[-72.360901,8.002638],[-72.479679,7.632506],[-72.444487,7.423785],[-72.198352,7.340431],[-71.960176,6.991615],[-70.674234,7.087785],[-70.093313,6.960376],[-69.38948,6.099861],[-68.985319,6.206805],[-68.265052,6.153268],[-67.695087,6.267318],[-67.34144,6.095468],[-67.521532,5.55687],[-67.744697,5.221129],[-67.823012,4.503937],[-67.621836,3.839482],[-67.337564,3.542342],[-67.303173,3.318454],[-67.809938,2.820655],[-67.447092,2.600281],[-67.181294,2.250638],[-66.876326,1.253361],[-67.065048,1.130112],[-67.259998,1.719999],[-67.53781,2.037163],[-67.868565,1.692455],[-69.816973,1.714805],[-69.804597,1.089081],[-69.218638,0.985677],[-69.252434,0.602651],[-69.452396,0.706159],[-70.015566,0.541414],[-70.020656,-0.185156],[-69.577065,-0.549992],[-69.420486,-1.122619],[-69.444102,-1.556287],[-69.893635,-4.298187],[-70.394044,-3.766591],[-70.692682,-3.742872],[-70.047709,-2.725156],[-70.813476,-2.256865],[-71.413646,-2.342802],[-71.774761,-2.16979],[-72.325787,-2.434218],[-73.070392,-2.308954],[-73.659504,-1.260491],[-74.122395,-1.002833],[-74.441601,-0.53082],[-75.106625,-0.057205],[-75.373223,-0.152032]]]},"id":"COL"},
 {"type":"Feature","properties":{"name":"Costa Rica"},"geometry":{"type":"Polygon","coordinates":[[[-82.965783,8.225028],[-83.508437,8.446927],[-83.711474,8.656836],[-83.596313,8.830443],[-83.632642,9.051386],[-83.909886,9.290803],[-84.303402,9.487354],[-84.647644,9.615537],[-84.713351,9.908052],[-84.97566,10.086723],[-84.911375,9.795992],[-85.110923,9.55704],[-85.339488,9.834542],[-85.660787,9.933347],[-85.797445,10.134886],[-85.791709,10.439337],[-85.659314,10.754331],[-85.941725,10.895278],[-85.71254,11.088445],[-85.561852,11.217119],[-84.903003,10.952303],[-84.673069,11.082657],[-84.355931,10.999226],[-84.190179,10.79345],[-83.895054,10.726839],[-83.655612,10.938764],[-83.40232,10.395438],[-83.015677,9.992982],[-82.546196,9.566135],[-82.932891,9.476812],[-82.927155,9.07433],[-82.719183,8.925709],[-82.868657,8.807266],[-82.829771,8.626295],[-82.913176,8.423517],[-82.965783,8.225028]]]},"id":"CRI"},
@@ -74,7 +74,7 @@
 {"type":"Feature","properties":{"name":"Indonesia"},"geometry":{"type":"MultiPolygon","coordinates":[[[[120.715609,-10.239581],[120.295014,-10.25865],[118.967808,-9.557969],[119.90031,-9.36134],[120.425756,-9.665921],[120.775502,-9.969675],[120.715609,-10.239581]]],[[[124.43595,-10.140001],[123.579982,-10.359987],[123.459989,-10.239995],[123.550009,-9.900016],[123.980009,-9.290027],[124.968682,-8.89279],[125.07002,-9.089987],[125.08852,-9.393173],[124.43595,-10.140001]]],[[[117.900018,-8.095681],[118.260616,-8.362383],[118.87846,-8.280683],[119.126507,-8.705825],[117.970402,-8.906639],[117.277731,-9.040895],[116.740141,-9.032937],[117.083737,-8.457158],[117.632024,-8.449303],[117.900018,-8.095681]]],[[[122.903537,-8.094234],[122.756983,-8.649808],[121.254491,-8.933666],[119.924391,-8.810418],[119.920929,-8.444859],[120.715092,-8.236965],[121.341669,-8.53674],[122.007365,-8.46062],[122.903537,-8.094234]]],[[[108.623479,-6.777674],[110.539227,-6.877358],[110.759576,-6.465186],[112.614811,-6.946036],[112.978768,-7.594213],[114.478935,-7.776528],[115.705527,-8.370807],[114.564511,-8.751817],[113.464734,-8.348947],[112.559672,-8.376181],[111.522061,-8.302129],[110.58615,-8.122605],[109.427667,-7.740664],[108.693655,-7.6416],[108.277763,-7.766657],[106.454102,-7.3549],[106.280624,-6.9249],[105.365486,-6.851416],[106.051646,-5.895919],[107.265009,-5.954985],[108.072091,-6.345762],[108.486846,-6.421985],[108.623479,-6.777674]]],[[[134.724624,-6.214401],[134.210134,-6.895238],[134.112776,-6.142467],[134.290336,-5.783058],[134.499625,-5.445042],[134.727002,-5.737582],[134.724624,-6.214401]]],[[[127.249215,-3.459065],[126.874923,-3.790983],[126.183802,-3.607376],[125.989034,-3.177273],[127.000651,-3.129318],[127.249215,-3.459065]]],[[[130.471344,-3.093764],[130.834836,-3.858472],[129.990547,-3.446301],[129.155249,-3.362637],[128.590684,-3.428679],[127.898891,-3.393436],[128.135879,-2.84365],[129.370998,-2.802154],[130.471344,-3.093764]]],[[[134.143368,-1.151867],[134.422627,-2.769185],[135.457603,-3.367753],[136.293314,-2.307042],[137.440738,-1.703513],[138.329727,-1.702686],[139.184921,-2.051296],[139.926684,-2.409052],[141.00021,-2.600151],[141.017057,-5.859022],[141.033852,-9.117893],[140.143415,-8.297168],[139.127767,-8.096043],[138.881477,-8.380935],[137.614474,-8.411683],[138.039099,-7.597882],[138.668621,-7.320225],[138.407914,-6.232849],[137.92784,-5.393366],[135.98925,-4.546544],[135.164598,-4.462931],[133.66288,-3.538853],[133.367705,-4.024819],[132.983956,-4.112979],[132.756941,-3.746283],[132.753789,-3.311787],[131.989804,-2.820551],[133.066845,-2.460418],[133.780031,-2.479848],[133.696212,-2.214542],[132.232373,-2.212526],[131.836222,-1.617162],[130.94284,-1.432522],[130.519558,-0.93772],[131.867538,-0.695461],[132.380116,-0.369538],[133.985548,-0.78021],[134.143368,-1.151867]]],[[[125.240501,1.419836],[124.437035,0.427881],[123.685505,0.235593],[122.723083,0.431137],[121.056725,0.381217],[120.183083,0.237247],[120.04087,-0.519658],[120.935905,-1.408906],[121.475821,-0.955962],[123.340565,-0.615673],[123.258399,-1.076213],[122.822715,-0.930951],[122.38853,-1.516858],[121.508274,-1.904483],[122.454572,-3.186058],[122.271896,-3.5295],[123.170963,-4.683693],[123.162333,-5.340604],[122.628515,-5.634591],[122.236394,-5.282933],[122.719569,-4.464172],[121.738234,-4.851331],[121.489463,-4.574553],[121.619171,-4.188478],[120.898182,-3.602105],[120.972389,-2.627643],[120.305453,-2.931604],[120.390047,-4.097579],[120.430717,-5.528241],[119.796543,-5.6734],[119.366906,-5.379878],[119.653606,-4.459417],[119.498835,-3.494412],[119.078344,-3.487022],[118.767769,-2.801999],[119.180974,-2.147104],[119.323394,-1.353147],[119.825999,0.154254],[120.035702,0.566477],[120.885779,1.309223],[121.666817,1.013944],[122.927567,0.875192],[124.077522,0.917102],[125.065989,1.643259],[125.240501,1.419836]]],[[[128.688249,1.132386],[128.635952,0.258486],[128.12017,0.356413],[127.968034,-0.252077],[128.379999,-0.780004],[128.100016,-0.899996],[127.696475,-0.266598],[127.39949,1.011722],[127.600512,1.810691],[127.932378,2.174596],[128.004156,1.628531],[128.594559,1.540811],[128.688249,1.132386]]],[[[117.875627,1.827641],[118.996747,0.902219],[117.811858,0.784242],[117.478339,0.102475],[117.521644,-0.803723],[116.560048,-1.487661],[116.533797,-2.483517],[116.148084,-4.012726],[116.000858,-3.657037],[114.864803,-4.106984],[114.468652,-3.495704],[113.755672,-3.43917],[113.256994,-3.118776],[112.068126,-3.478392],[111.703291,-2.994442],[111.04824,-3.049426],[110.223846,-2.934032],[110.070936,-1.592874],[109.571948,-1.314907],[109.091874,-0.459507],[108.952658,0.415375],[109.069136,1.341934],[109.66326,2.006467],[109.830227,1.338136],[110.514061,0.773131],[111.159138,0.976478],[111.797548,0.904441],[112.380252,1.410121],[112.859809,1.49779],[113.80585,1.217549],[114.621355,1.430688],[115.134037,2.821482],[115.519078,3.169238],[115.865517,4.306559],[117.015214,4.306094],[117.882035,4.137551],[117.313232,3.234428],[118.04833,2.28769],[117.875627,1.827641]]],[[[105.817655,-5.852356],[104.710384,-5.873285],[103.868213,-5.037315],[102.584261,-4.220259],[102.156173,-3.614146],[101.399113,-2.799777],[100.902503,-2.050262],[100.141981,-0.650348],[99.26374,0.183142],[98.970011,1.042882],[98.601351,1.823507],[97.699598,2.453184],[97.176942,3.308791],[96.424017,3.86886],[95.380876,4.970782],[95.293026,5.479821],[95.936863,5.439513],[97.484882,5.246321],[98.369169,4.26837],[99.142559,3.59035],[99.693998,3.174329],[100.641434,2.099381],[101.658012,2.083697],[102.498271,1.3987],[103.07684,0.561361],[103.838396,0.104542],[103.437645,-0.711946],[104.010789,-1.059212],[104.369991,-1.084843],[104.53949,-1.782372],[104.887893,-2.340425],[105.622111,-2.428844],[106.108593,-3.061777],[105.857446,-4.305525],[105.817655,-5.852356]]]]},"id":"IDN"},
 {"type":"Feature","properties":{"name":"India"},"geometry":{"type":"Polygon","coordinates":[[[77.837451,35.49401],[78.912269,34.321936],[78.811086,33.506198],[79.208892,32.994395],[79.176129,32.48378],[78.458446,32.618164],[78.738894,31.515906],[79.721367,30.882715],[81.111256,30.183481],[80.476721,29.729865],[80.088425,28.79447],[81.057203,28.416095],[81.999987,27.925479],[83.304249,27.364506],[84.675018,27.234901],[85.251779,26.726198],[86.024393,26.630985],[87.227472,26.397898],[88.060238,26.414615],[88.174804,26.810405],[88.043133,27.445819],[88.120441,27.876542],[88.730326,28.086865],[88.814248,27.299316],[88.835643,27.098966],[89.744528,26.719403],[90.373275,26.875724],[91.217513,26.808648],[92.033484,26.83831],[92.103712,27.452614],[91.696657,27.771742],[92.503119,27.896876],[93.413348,28.640629],[94.56599,29.277438],[95.404802,29.031717],[96.117679,29.452802],[96.586591,28.83098],[96.248833,28.411031],[97.327114,28.261583],[97.402561,27.882536],[97.051989,27.699059],[97.133999,27.083774],[96.419366,27.264589],[95.124768,26.573572],[95.155153,26.001307],[94.603249,25.162495],[94.552658,24.675238],[94.106742,23.850741],[93.325188,24.078556],[93.286327,23.043658],[93.060294,22.703111],[93.166128,22.27846],[92.672721,22.041239],[92.146035,23.627499],[91.869928,23.624346],[91.706475,22.985264],[91.158963,23.503527],[91.46773,24.072639],[91.915093,24.130414],[92.376202,24.976693],[91.799596,25.147432],[90.872211,25.132601],[89.920693,25.26975],[89.832481,25.965082],[89.355094,26.014407],[88.563049,26.446526],[88.209789,25.768066],[88.931554,25.238692],[88.306373,24.866079],[88.084422,24.501657],[88.69994,24.233715],[88.52977,23.631142],[88.876312,22.879146],[89.031961,22.055708],[88.888766,21.690588],[88.208497,21.703172],[86.975704,21.495562],[87.033169,20.743308],[86.499351,20.151638],[85.060266,19.478579],[83.941006,18.30201],[83.189217,17.671221],[82.192792,17.016636],[82.191242,16.556664],[81.692719,16.310219],[80.791999,15.951972],[80.324896,15.899185],[80.025069,15.136415],[80.233274,13.835771],[80.286294,13.006261],[79.862547,12.056215],[79.857999,10.357275],[79.340512,10.308854],[78.885345,9.546136],[79.18972,9.216544],[78.277941,8.933047],[77.941165,8.252959],[77.539898,7.965535],[76.592979,8.899276],[76.130061,10.29963],[75.746467,11.308251],[75.396101,11.781245],[74.864816,12.741936],[74.616717,13.992583],[74.443859,14.617222],[73.534199,15.990652],[73.119909,17.92857],[72.820909,19.208234],[72.824475,20.419503],[72.630533,21.356009],[71.175273,20.757441],[70.470459,20.877331],[69.16413,22.089298],[69.644928,22.450775],[69.349597,22.84318],[68.176645,23.691965],[68.842599,24.359134],[71.04324,24.356524],[70.844699,25.215102],[70.282873,25.722229],[70.168927,26.491872],[69.514393,26.940966],[70.616496,27.989196],[71.777666,27.91318],[72.823752,28.961592],[73.450638,29.976413],[74.42138,30.979815],[74.405929,31.692639],[75.258642,32.271105],[74.451559,32.7649],[74.104294,33.441473],[73.749948,34.317699],[74.240203,34.748887],[75.757061,34.504923],[76.871722,34.653544],[77.837451,35.49401]]]},"id":"IND"},
 {"type":"Feature","properties":{"name":"Ireland"},"geometry":{"type":"Polygon","coordinates":[[[-6.197885,53.867565],[-6.032985,53.153164],[-6.788857,52.260118],[-8.561617,51.669301],[-9.977086,51.820455],[-9.166283,52.864629],[-9.688525,53.881363],[-8.327987,54.664519],[-7.572168,55.131622],[-7.366031,54.595841],[-7.572168,54.059956],[-6.95373,54.073702],[-6.197885,53.867565]]]},"id":"IRL"},
-{"type":"Feature","properties":{"name":"Iran"},"geometry":{"type":"Polygon","coordinates":[[[53.921598,37.198918],[54.800304,37.392421],[55.511578,37.964117],[56.180375,37.935127],[56.619366,38.121394],[57.330434,38.029229],[58.436154,37.522309],[59.234762,37.412988],[60.377638,36.527383],[61.123071,36.491597],[61.210817,35.650072],[60.803193,34.404102],[60.52843,33.676446],[60.9637,33.528832],[60.536078,32.981269],[60.863655,32.18292],[60.941945,31.548075],[61.699314,31.379506],[61.781222,30.73585],[60.874248,29.829239],[61.369309,29.303276],[61.771868,28.699334],[62.72783,28.259645],[62.755426,27.378923],[63.233898,27.217047],[63.316632,26.756532],[61.874187,26.239975],[61.497363,25.078237],[59.616134,25.380157],[58.525761,25.609962],[57.397251,25.739902],[56.970766,26.966106],[56.492139,27.143305],[55.72371,26.964633],[54.71509,26.480658],[53.493097,26.812369],[52.483598,27.580849],[51.520763,27.86569],[50.852948,28.814521],[50.115009,30.147773],[49.57685,29.985715],[48.941333,30.31709],[48.567971,29.926778],[48.014568,30.452457],[48.004698,30.985137],[47.685286,30.984853],[47.849204,31.709176],[47.334661,32.469155],[46.109362,33.017287],[45.416691,33.967798],[45.64846,34.748138],[46.151788,35.093259],[46.07634,35.677383],[45.420618,35.977546],[44.77267,37.17045],[44.225756,37.971584],[44.421403,38.281281],[44.109225,39.428136],[44.79399,39.713003],[44.952688,39.335765],[45.457722,38.874139],[46.143623,38.741201],[46.50572,38.770605],[47.685079,39.508364],[48.060095,39.582235],[48.355529,39.288765],[48.010744,38.794015],[48.634375,38.270378],[48.883249,38.320245],[49.199612,37.582874],[50.147771,37.374567],[50.842354,36.872814],[52.264025,36.700422],[53.82579,36.965031],[53.921598,37.198918]]]},"id":"IRN"},
+{"type":"Feature","properties":{"name":"Iran, Islamic Republic of"},"geometry":{"type":"Polygon","coordinates":[[[53.921598,37.198918],[54.800304,37.392421],[55.511578,37.964117],[56.180375,37.935127],[56.619366,38.121394],[57.330434,38.029229],[58.436154,37.522309],[59.234762,37.412988],[60.377638,36.527383],[61.123071,36.491597],[61.210817,35.650072],[60.803193,34.404102],[60.52843,33.676446],[60.9637,33.528832],[60.536078,32.981269],[60.863655,32.18292],[60.941945,31.548075],[61.699314,31.379506],[61.781222,30.73585],[60.874248,29.829239],[61.369309,29.303276],[61.771868,28.699334],[62.72783,28.259645],[62.755426,27.378923],[63.233898,27.217047],[63.316632,26.756532],[61.874187,26.239975],[61.497363,25.078237],[59.616134,25.380157],[58.525761,25.609962],[57.397251,25.739902],[56.970766,26.966106],[56.492139,27.143305],[55.72371,26.964633],[54.71509,26.480658],[53.493097,26.812369],[52.483598,27.580849],[51.520763,27.86569],[50.852948,28.814521],[50.115009,30.147773],[49.57685,29.985715],[48.941333,30.31709],[48.567971,29.926778],[48.014568,30.452457],[48.004698,30.985137],[47.685286,30.984853],[47.849204,31.709176],[47.334661,32.469155],[46.109362,33.017287],[45.416691,33.967798],[45.64846,34.748138],[46.151788,35.093259],[46.07634,35.677383],[45.420618,35.977546],[44.77267,37.17045],[44.225756,37.971584],[44.421403,38.281281],[44.109225,39.428136],[44.79399,39.713003],[44.952688,39.335765],[45.457722,38.874139],[46.143623,38.741201],[46.50572,38.770605],[47.685079,39.508364],[48.060095,39.582235],[48.355529,39.288765],[48.010744,38.794015],[48.634375,38.270378],[48.883249,38.320245],[49.199612,37.582874],[50.147771,37.374567],[50.842354,36.872814],[52.264025,36.700422],[53.82579,36.965031],[53.921598,37.198918]]]},"id":"IRN"},
 {"type":"Feature","properties":{"name":"Iraq"},"geometry":{"type":"Polygon","coordinates":[[[45.420618,35.977546],[46.07634,35.677383],[46.151788,35.093259],[45.64846,34.748138],[45.416691,33.967798],[46.109362,33.017287],[47.334661,32.469155],[47.849204,31.709176],[47.685286,30.984853],[48.004698,30.985137],[48.014568,30.452457],[48.567971,29.926778],[47.974519,29.975819],[47.302622,30.05907],[46.568713,29.099025],[44.709499,29.178891],[41.889981,31.190009],[40.399994,31.889992],[39.195468,32.161009],[38.792341,33.378686],[41.006159,34.419372],[41.383965,35.628317],[41.289707,36.358815],[41.837064,36.605854],[42.349591,37.229873],[42.779126,37.385264],[43.942259,37.256228],[44.293452,37.001514],[44.772699,37.170445],[45.420618,35.977546]]]},"id":"IRQ"},
 {"type":"Feature","properties":{"name":"Iceland"},"geometry":{"type":"Polygon","coordinates":[[[-14.508695,66.455892],[-14.739637,65.808748],[-13.609732,65.126671],[-14.909834,64.364082],[-17.794438,63.678749],[-18.656246,63.496383],[-19.972755,63.643635],[-22.762972,63.960179],[-21.778484,64.402116],[-23.955044,64.89113],[-22.184403,65.084968],[-22.227423,65.378594],[-24.326184,65.611189],[-23.650515,66.262519],[-22.134922,66.410469],[-20.576284,65.732112],[-19.056842,66.276601],[-17.798624,65.993853],[-16.167819,66.526792],[-14.508695,66.455892]]]},"id":"ISL"},
 {"type":"Feature","properties":{"name":"Israel"},"geometry":{"type":"Polygon","coordinates":[[[35.719918,32.709192],[35.545665,32.393992],[35.18393,32.532511],[34.974641,31.866582],[35.225892,31.754341],[34.970507,31.616778],[34.927408,31.353435],[35.397561,31.489086],[35.420918,31.100066],[34.922603,29.501326],[34.265433,31.219361],[34.556372,31.548824],[34.488107,31.605539],[34.752587,32.072926],[34.955417,32.827376],[35.098457,33.080539],[35.126053,33.0909],[35.460709,33.08904],[35.552797,33.264275],[35.821101,33.277426],[35.836397,32.868123],[35.700798,32.716014],[35.719918,32.709192]]]},"id":"ISR"},
 {"type":"Feature","properties":{"name":"Jamaica"},"geometry":{"type":"Polygon","coordinates":[[[-77.569601,18.490525],[-76.896619,18.400867],[-76.365359,18.160701],[-76.199659,17.886867],[-76.902561,17.868238],[-77.206341,17.701116],[-77.766023,17.861597],[-78.337719,18.225968],[-78.217727,18.454533],[-77.797365,18.524218],[-77.569601,18.490525]]]},"id":"JAM"},
 {"type":"Feature","properties":{"name":"Jordan"},"geometry":{"type":"Polygon","coordinates":[[[35.545665,32.393992],[35.719918,32.709192],[36.834062,32.312938],[38.792341,33.378686],[39.195468,32.161009],[39.004886,32.010217],[37.002166,31.508413],[37.998849,30.5085],[37.66812,30.338665],[37.503582,30.003776],[36.740528,29.865283],[36.501214,29.505254],[36.068941,29.197495],[34.956037,29.356555],[34.922603,29.501326],[35.420918,31.100066],[35.397561,31.489086],[35.545252,31.782505],[35.545665,32.393992]]]},"id":"JOR"},
 {"type":"Feature","properties":{"name":"Japan"},"geometry":{"type":"MultiPolygon","coordinates":[[[[134.638428,34.149234],[134.766379,33.806335],[134.203416,33.201178],[133.79295,33.521985],[133.280268,33.28957],[133.014858,32.704567],[132.363115,32.989382],[132.371176,33.463642],[132.924373,34.060299],[133.492968,33.944621],[133.904106,34.364931],[134.638428,34.149234]]],[[[140.976388,37.142074],[140.59977,36.343983],[140.774074,35.842877],[140.253279,35.138114],[138.975528,34.6676],[137.217599,34.606286],[135.792983,33.464805],[135.120983,33.849071],[135.079435,34.596545],[133.340316,34.375938],[132.156771,33.904933],[130.986145,33.885761],[132.000036,33.149992],[131.33279,31.450355],[130.686318,31.029579],[130.20242,31.418238],[130.447676,32.319475],[129.814692,32.61031],[129.408463,33.296056],[130.353935,33.604151],[130.878451,34.232743],[131.884229,34.749714],[132.617673,35.433393],[134.608301,35.731618],[135.677538,35.527134],[136.723831,37.304984],[137.390612,36.827391],[138.857602,37.827485],[139.426405,38.215962],[140.05479,39.438807],[139.883379,40.563312],[140.305783,41.195005],[141.368973,41.37856],[141.914263,39.991616],[141.884601,39.180865],[140.959489,38.174001],[140.976388,37.142074]]],[[[143.910162,44.1741],[144.613427,43.960883],[145.320825,44.384733],[145.543137,43.262088],[144.059662,42.988358],[143.18385,41.995215],[141.611491,42.678791],[141.067286,41.584594],[139.955106,41.569556],[139.817544,42.563759],[140.312087,43.333273],[141.380549,43.388825],[141.671952,44.772125],[141.967645,45.551483],[143.14287,44.510358],[143.910162,44.1741]]]]},"id":"JPN"},
-{"type":"Feature","properties":{"name":"Kazakhstan"},"geometry":{"type":"Polygon","coordinates":[[[70.962315,42.266154],[70.388965,42.081308],[69.070027,41.384244],[68.632483,40.668681],[68.259896,40.662325],[67.985856,41.135991],[66.714047,41.168444],[66.510649,41.987644],[66.023392,41.994646],[66.098012,42.99766],[64.900824,43.728081],[63.185787,43.650075],[62.0133,43.504477],[61.05832,44.405817],[60.239972,44.784037],[58.689989,45.500014],[58.503127,45.586804],[55.928917,44.995858],[55.968191,41.308642],[55.455251,41.259859],[54.755345,42.043971],[54.079418,42.324109],[52.944293,42.116034],[52.50246,41.783316],[52.446339,42.027151],[52.692112,42.443895],[52.501426,42.792298],[51.342427,43.132975],[50.891292,44.031034],[50.339129,44.284016],[50.305643,44.609836],[51.278503,44.514854],[51.316899,45.245998],[52.16739,45.408391],[53.040876,45.259047],[53.220866,46.234646],[53.042737,46.853006],[52.042023,46.804637],[51.191945,47.048705],[50.034083,46.60899],[49.10116,46.39933],[48.593241,46.561034],[48.694734,47.075628],[48.057253,47.743753],[47.315231,47.715847],[46.466446,48.394152],[47.043672,49.152039],[46.751596,49.356006],[47.54948,50.454698],[48.577841,49.87476],[48.702382,50.605128],[50.766648,51.692762],[52.328724,51.718652],[54.532878,51.02624],[55.716941,50.621717],[56.777961,51.043551],[58.363291,51.063653],[59.642282,50.545442],[59.932807,50.842194],[61.337424,50.79907],[61.588003,51.272659],[59.967534,51.96042],[60.927269,52.447548],[60.739993,52.719986],[61.699986,52.979996],[60.978066,53.664993],[61.436591,54.006265],[65.178534,54.354228],[65.666876,54.601267],[68.1691,54.970392],[69.068167,55.38525],[70.865267,55.169734],[71.180131,54.133285],[72.22415,54.376655],[73.508516,54.035617],[73.425679,53.48981],[74.384845,53.546861],[76.8911,54.490524],[76.525179,54.177003],[77.800916,53.404415],[80.03556,50.864751],[80.568447,51.388336],[81.945986,50.812196],[83.383004,51.069183],[83.935115,50.889246],[84.416377,50.3114],[85.11556,50.117303],[85.54127,49.692859],[86.829357,49.826675],[87.35997,49.214981],[86.598776,48.549182],[85.768233,48.455751],[85.720484,47.452969],[85.16429,47.000956],[83.180484,47.330031],[82.458926,45.53965],[81.947071,45.317027],[79.966106,44.917517],[80.866206,43.180362],[80.18015,42.920068],[80.25999,42.349999],[79.643645,42.496683],[79.142177,42.856092],[77.658392,42.960686],[76.000354,42.988022],[75.636965,42.8779],[74.212866,43.298339],[73.645304,43.091272],[73.489758,42.500894],[71.844638,42.845395],[71.186281,42.704293],[70.962315,42.266154]]]},"id":"KAZ"},
+{"type":"Feature","properties":{"name":"Kazakstan"},"geometry":{"type":"Polygon","coordinates":[[[70.962315,42.266154],[70.388965,42.081308],[69.070027,41.384244],[68.632483,40.668681],[68.259896,40.662325],[67.985856,41.135991],[66.714047,41.168444],[66.510649,41.987644],[66.023392,41.994646],[66.098012,42.99766],[64.900824,43.728081],[63.185787,43.650075],[62.0133,43.504477],[61.05832,44.405817],[60.239972,44.784037],[58.689989,45.500014],[58.503127,45.586804],[55.928917,44.995858],[55.968191,41.308642],[55.455251,41.259859],[54.755345,42.043971],[54.079418,42.324109],[52.944293,42.116034],[52.50246,41.783316],[52.446339,42.027151],[52.692112,42.443895],[52.501426,42.792298],[51.342427,43.132975],[50.891292,44.031034],[50.339129,44.284016],[50.305643,44.609836],[51.278503,44.514854],[51.316899,45.245998],[52.16739,45.408391],[53.040876,45.259047],[53.220866,46.234646],[53.042737,46.853006],[52.042023,46.804637],[51.191945,47.048705],[50.034083,46.60899],[49.10116,46.39933],[48.593241,46.561034],[48.694734,47.075628],[48.057253,47.743753],[47.315231,47.715847],[46.466446,48.394152],[47.043672,49.152039],[46.751596,49.356006],[47.54948,50.454698],[48.577841,49.87476],[48.702382,50.605128],[50.766648,51.692762],[52.328724,51.718652],[54.532878,51.02624],[55.716941,50.621717],[56.777961,51.043551],[58.363291,51.063653],[59.642282,50.545442],[59.932807,50.842194],[61.337424,50.79907],[61.588003,51.272659],[59.967534,51.96042],[60.927269,52.447548],[60.739993,52.719986],[61.699986,52.979996],[60.978066,53.664993],[61.436591,54.006265],[65.178534,54.354228],[65.666876,54.601267],[68.1691,54.970392],[69.068167,55.38525],[70.865267,55.169734],[71.180131,54.133285],[72.22415,54.376655],[73.508516,54.035617],[73.425679,53.48981],[74.384845,53.546861],[76.8911,54.490524],[76.525179,54.177003],[77.800916,53.404415],[80.03556,50.864751],[80.568447,51.388336],[81.945986,50.812196],[83.383004,51.069183],[83.935115,50.889246],[84.416377,50.3114],[85.11556,50.117303],[85.54127,49.692859],[86.829357,49.826675],[87.35997,49.214981],[86.598776,48.549182],[85.768233,48.455751],[85.720484,47.452969],[85.16429,47.000956],[83.180484,47.330031],[82.458926,45.53965],[81.947071,45.317027],[79.966106,44.917517],[80.866206,43.180362],[80.18015,42.920068],[80.25999,42.349999],[79.643645,42.496683],[79.142177,42.856092],[77.658392,42.960686],[76.000354,42.988022],[75.636965,42.8779],[74.212866,43.298339],[73.645304,43.091272],[73.489758,42.500894],[71.844638,42.845395],[71.186281,42.704293],[70.962315,42.266154]]]},"id":"KAZ"},
 {"type":"Feature","properties":{"name":"Kenya"},"geometry":{"type":"Polygon","coordinates":[[[40.993,-0.85829],[41.58513,-1.68325],[40.88477,-2.08255],[40.63785,-2.49979],[40.26304,-2.57309],[40.12119,-3.27768],[39.80006,-3.68116],[39.60489,-4.34653],[39.20222,-4.67677],[37.7669,-3.67712],[37.69869,-3.09699],[34.07262,-1.05982],[33.903711,-0.95],[33.893569,0.109814],[34.18,0.515],[34.6721,1.17694],[35.03599,1.90584],[34.59607,3.05374],[34.47913,3.5556],[34.005,4.249885],[34.620196,4.847123],[35.298007,5.506],[35.817448,5.338232],[35.817448,4.776966],[36.159079,4.447864],[36.855093,4.447864],[38.120915,3.598605],[38.43697,3.58851],[38.67114,3.61607],[38.89251,3.50074],[39.559384,3.42206],[39.85494,3.83879],[40.76848,4.25702],[41.1718,3.91909],[41.855083,3.918912],[40.98105,2.78452],[40.993,-0.85829]]]},"id":"KEN"},
 {"type":"Feature","properties":{"name":"Kyrgyzstan"},"geometry":{"type":"Polygon","coordinates":[[[70.962315,42.266154],[71.186281,42.704293],[71.844638,42.845395],[73.489758,42.500894],[73.645304,43.091272],[74.212866,43.298339],[75.636965,42.8779],[76.000354,42.988022],[77.658392,42.960686],[79.142177,42.856092],[79.643645,42.496683],[80.25999,42.349999],[80.11943,42.123941],[78.543661,41.582243],[78.187197,41.185316],[76.904484,41.066486],[76.526368,40.427946],[75.467828,40.562072],[74.776862,40.366425],[73.822244,39.893973],[73.960013,39.660008],[73.675379,39.431237],[71.784694,39.279463],[70.549162,39.604198],[69.464887,39.526683],[69.55961,40.103211],[70.648019,39.935754],[71.014198,40.244366],[71.774875,40.145844],[73.055417,40.866033],[71.870115,41.3929],[71.157859,41.143587],[70.420022,41.519998],[71.259248,42.167711],[70.962315,42.266154]]]},"id":"KGZ"},
 {"type":"Feature","properties":{"name":"Cambodia"},"geometry":{"type":"Polygon","coordinates":[[[103.49728,10.632555],[103.09069,11.153661],[102.584932,12.186595],[102.348099,13.394247],[102.988422,14.225721],[104.281418,14.416743],[105.218777,14.273212],[106.043946,13.881091],[106.496373,14.570584],[107.382727,14.202441],[107.614548,13.535531],[107.491403,12.337206],[105.810524,11.567615],[106.24967,10.961812],[105.199915,10.88931],[104.334335,10.486544],[103.49728,10.632555]]]},"id":"KHM"},
-{"type":"Feature","properties":{"name":"South Korea"},"geometry":{"type":"Polygon","coordinates":[[[128.349716,38.612243],[129.21292,37.432392],[129.46045,36.784189],[129.468304,35.632141],[129.091377,35.082484],[128.18585,34.890377],[127.386519,34.475674],[126.485748,34.390046],[126.37392,34.93456],[126.559231,35.684541],[126.117398,36.725485],[126.860143,36.893924],[126.174759,37.749686],[126.237339,37.840378],[126.68372,37.804773],[127.073309,38.256115],[127.780035,38.304536],[128.205746,38.370397],[128.349716,38.612243]]]},"id":"KOR"},
+{"type":"Feature","properties":{"name":"Korea, Republic of"},"geometry":{"type":"Polygon","coordinates":[[[128.349716,38.612243],[129.21292,37.432392],[129.46045,36.784189],[129.468304,35.632141],[129.091377,35.082484],[128.18585,34.890377],[127.386519,34.475674],[126.485748,34.390046],[126.37392,34.93456],[126.559231,35.684541],[126.117398,36.725485],[126.860143,36.893924],[126.174759,37.749686],[126.237339,37.840378],[126.68372,37.804773],[127.073309,38.256115],[127.780035,38.304536],[128.205746,38.370397],[128.349716,38.612243]]]},"id":"KOR"},
 {"type":"Feature","properties":{"name":"Kosovo"},"geometry":{"type":"Polygon","coordinates":[[[20.76216,42.05186],[20.71731,41.84711],[20.59023,41.85541],[20.52295,42.21787],[20.28374,42.32025],[20.0707,42.58863],[20.25758,42.81275],[20.49679,42.88469],[20.63508,43.21671],[20.81448,43.27205],[20.95651,43.13094],[21.143395,43.068685],[21.27421,42.90959],[21.43866,42.86255],[21.63302,42.67717],[21.77505,42.6827],[21.66292,42.43922],[21.54332,42.32025],[21.576636,42.245224],[21.3527,42.2068],[20.76216,42.05186]]]},"id":"-99"},
 {"type":"Feature","properties":{"name":"Kuwait"},"geometry":{"type":"Polygon","coordinates":[[[47.974519,29.975819],[48.183189,29.534477],[48.093943,29.306299],[48.416094,28.552004],[47.708851,28.526063],[47.459822,29.002519],[46.568713,29.099025],[47.302622,30.05907],[47.974519,29.975819]]]},"id":"KWT"},
-{"type":"Feature","properties":{"name":"Laos"},"geometry":{"type":"Polygon","coordinates":[[[105.218777,14.273212],[105.544338,14.723934],[105.589039,15.570316],[104.779321,16.441865],[104.716947,17.428859],[103.956477,18.240954],[103.200192,18.309632],[102.998706,17.961695],[102.413005,17.932782],[102.113592,18.109102],[101.059548,17.512497],[101.035931,18.408928],[101.282015,19.462585],[100.606294,19.508344],[100.548881,20.109238],[100.115988,20.41785],[100.329101,20.786122],[101.180005,21.436573],[101.270026,21.201652],[101.80312,21.174367],[101.652018,22.318199],[102.170436,22.464753],[102.754896,21.675137],[103.203861,20.766562],[104.435,20.758733],[104.822574,19.886642],[104.183388,19.624668],[103.896532,19.265181],[105.094598,18.666975],[105.925762,17.485315],[106.556008,16.604284],[107.312706,15.908538],[107.564525,15.202173],[107.382727,14.202441],[106.496373,14.570584],[106.043946,13.881091],[105.218777,14.273212]]]},"id":"LAO"},
+{"type":"Feature","properties":{"name":"Lao People's Democratic Republic"},"geometry":{"type":"Polygon","coordinates":[[[105.218777,14.273212],[105.544338,14.723934],[105.589039,15.570316],[104.779321,16.441865],[104.716947,17.428859],[103.956477,18.240954],[103.200192,18.309632],[102.998706,17.961695],[102.413005,17.932782],[102.113592,18.109102],[101.059548,17.512497],[101.035931,18.408928],[101.282015,19.462585],[100.606294,19.508344],[100.548881,20.109238],[100.115988,20.41785],[100.329101,20.786122],[101.180005,21.436573],[101.270026,21.201652],[101.80312,21.174367],[101.652018,22.318199],[102.170436,22.464753],[102.754896,21.675137],[103.203861,20.766562],[104.435,20.758733],[104.822574,19.886642],[104.183388,19.624668],[103.896532,19.265181],[105.094598,18.666975],[105.925762,17.485315],[106.556008,16.604284],[107.312706,15.908538],[107.564525,15.202173],[107.382727,14.202441],[106.496373,14.570584],[106.043946,13.881091],[105.218777,14.273212]]]},"id":"LAO"},
 {"type":"Feature","properties":{"name":"Lebanon"},"geometry":{"type":"Polygon","coordinates":[[[35.821101,33.277426],[35.552797,33.264275],[35.460709,33.08904],[35.126053,33.0909],[35.482207,33.90545],[35.979592,34.610058],[35.998403,34.644914],[36.448194,34.593935],[36.61175,34.201789],[36.06646,33.824912],[35.821101,33.277426]]]},"id":"LBN"},
 {"type":"Feature","properties":{"name":"Liberia"},"geometry":{"type":"Polygon","coordinates":[[[-7.712159,4.364566],[-7.974107,4.355755],[-9.004794,4.832419],[-9.91342,5.593561],[-10.765384,6.140711],[-11.438779,6.785917],[-11.199802,7.105846],[-11.146704,7.396706],[-10.695595,7.939464],[-10.230094,8.406206],[-10.016567,8.428504],[-9.755342,8.541055],[-9.33728,7.928534],[-9.403348,7.526905],[-9.208786,7.313921],[-8.926065,7.309037],[-8.722124,7.711674],[-8.439298,7.686043],[-8.485446,7.395208],[-8.385452,6.911801],[-8.60288,6.467564],[-8.311348,6.193033],[-7.993693,6.12619],[-7.570153,5.707352],[-7.539715,5.313345],[-7.635368,5.188159],[-7.712159,4.364566]]]},"id":"LBR"},
 {"type":"Feature","properties":{"name":"Libya"},"geometry":{"type":"Polygon","coordinates":[[[14.8513,22.86295],[14.143871,22.491289],[13.581425,23.040506],[11.999506,23.471668],[11.560669,24.097909],[10.771364,24.562532],[10.303847,24.379313],[9.948261,24.936954],[9.910693,25.365455],[9.319411,26.094325],[9.716286,26.512206],[9.629056,27.140953],[9.756128,27.688259],[9.683885,28.144174],[9.859998,28.95999],[9.805634,29.424638],[9.48214,30.307556],[9.970017,30.539325],[10.056575,30.961831],[9.950225,31.37607],[10.636901,31.761421],[10.94479,32.081815],[11.432253,32.368903],[11.488787,33.136996],[12.66331,32.79278],[13.08326,32.87882],[13.91868,32.71196],[15.24563,32.26508],[15.71394,31.37626],[16.61162,31.18218],[18.02109,30.76357],[19.08641,30.26639],[19.57404,30.52582],[20.05335,30.98576],[19.82033,31.75179],[20.13397,32.2382],[20.85452,32.7068],[21.54298,32.8432],[22.89576,32.63858],[23.2368,32.19149],[23.60913,32.18726],[23.9275,32.01667],[24.92114,31.89936],[25.16482,31.56915],[24.80287,31.08929],[24.95762,30.6616],[24.70007,30.04419],[25,29.238655],[25,25.6825],[25,22],[25,20.00304],[23.85,20],[23.83766,19.58047],[19.84926,21.49509],[15.86085,23.40972],[14.8513,22.86295]]]},"id":"LBY"},
@@ -99,7 +99,7 @@
 {"type":"Feature","properties":{"name":"Luxembourg"},"geometry":{"type":"Polygon","coordinates":[[[6.043073,50.128052],[6.242751,49.902226],[6.18632,49.463803],[5.897759,49.442667],[5.674052,49.529484],[5.782417,50.090328],[6.043073,50.128052]]]},"id":"LUX"},
 {"type":"Feature","properties":{"name":"Latvia"},"geometry":{"type":"Polygon","coordinates":[[[21.0558,56.031076],[21.090424,56.783873],[21.581866,57.411871],[22.524341,57.753374],[23.318453,57.006236],[24.12073,57.025693],[24.312863,57.793424],[25.164594,57.970157],[25.60281,57.847529],[26.463532,57.476389],[27.288185,57.474528],[27.770016,57.244258],[27.855282,56.759326],[28.176709,56.16913],[27.10246,55.783314],[26.494331,55.615107],[25.533047,56.100297],[25.000934,56.164531],[24.860684,56.372528],[23.878264,56.273671],[22.201157,56.337802],[21.0558,56.031076]]]},"id":"LVA"},
 {"type":"Feature","properties":{"name":"Morocco"},"geometry":{"type":"Polygon","coordinates":[[[-5.193863,35.755182],[-4.591006,35.330712],[-3.640057,35.399855],[-2.604306,35.179093],[-2.169914,35.168396],[-1.792986,34.527919],[-1.733455,33.919713],[-1.388049,32.864015],[-1.124551,32.651522],[-1.307899,32.262889],[-2.616605,32.094346],[-3.06898,31.724498],[-3.647498,31.637294],[-3.690441,30.896952],[-4.859646,30.501188],[-5.242129,30.000443],[-6.060632,29.7317],[-7.059228,29.579228],[-8.674116,28.841289],[-8.66559,27.656426],[-8.817809,27.656426],[-8.817828,27.656426],[-8.794884,27.120696],[-9.413037,27.088476],[-9.735343,26.860945],[-10.189424,26.860945],[-10.551263,26.990808],[-11.392555,26.883424],[-11.71822,26.104092],[-12.030759,26.030866],[-12.500963,24.770116],[-13.89111,23.691009],[-14.221168,22.310163],[-14.630833,21.86094],[-14.750955,21.5006],[-17.002962,21.420734],[-17.020428,21.42231],[-16.973248,21.885745],[-16.589137,22.158234],[-16.261922,22.67934],[-16.326414,23.017768],[-15.982611,23.723358],[-15.426004,24.359134],[-15.089332,24.520261],[-14.824645,25.103533],[-14.800926,25.636265],[-14.43994,26.254418],[-13.773805,26.618892],[-13.139942,27.640148],[-13.121613,27.654148],[-12.618837,28.038186],[-11.688919,28.148644],[-10.900957,28.832142],[-10.399592,29.098586],[-9.564811,29.933574],[-9.814718,31.177736],[-9.434793,32.038096],[-9.300693,32.564679],[-8.657476,33.240245],[-7.654178,33.697065],[-6.912544,34.110476],[-6.244342,35.145865],[-5.929994,35.759988],[-5.193863,35.755182]]]},"id":"MAR"},
-{"type":"Feature","properties":{"name":"Moldova"},"geometry":{"type":"Polygon","coordinates":[[[26.619337,48.220726],[26.857824,48.368211],[27.522537,48.467119],[28.259547,48.155562],[28.670891,48.118149],[29.122698,47.849095],[29.050868,47.510227],[29.415135,47.346645],[29.559674,46.928583],[29.908852,46.674361],[29.83821,46.525326],[30.024659,46.423937],[29.759972,46.349988],[29.170654,46.379262],[29.072107,46.517678],[28.862972,46.437889],[28.933717,46.25883],[28.659987,45.939987],[28.485269,45.596907],[28.233554,45.488283],[28.054443,45.944586],[28.160018,46.371563],[28.12803,46.810476],[27.551166,47.405117],[27.233873,47.826771],[26.924176,48.123264],[26.619337,48.220726]]]},"id":"MDA"},
+{"type":"Feature","properties":{"name":"Moldova, Republic of"},"geometry":{"type":"Polygon","coordinates":[[[26.619337,48.220726],[26.857824,48.368211],[27.522537,48.467119],[28.259547,48.155562],[28.670891,48.118149],[29.122698,47.849095],[29.050868,47.510227],[29.415135,47.346645],[29.559674,46.928583],[29.908852,46.674361],[29.83821,46.525326],[30.024659,46.423937],[29.759972,46.349988],[29.170654,46.379262],[29.072107,46.517678],[28.862972,46.437889],[28.933717,46.25883],[28.659987,45.939987],[28.485269,45.596907],[28.233554,45.488283],[28.054443,45.944586],[28.160018,46.371563],[28.12803,46.810476],[27.551166,47.405117],[27.233873,47.826771],[26.924176,48.123264],[26.619337,48.220726]]]},"id":"MDA"},
 {"type":"Feature","properties":{"name":"Madagascar"},"geometry":{"type":"Polygon","coordinates":[[[49.543519,-12.469833],[49.808981,-12.895285],[50.056511,-13.555761],[50.217431,-14.758789],[50.476537,-15.226512],[50.377111,-15.706069],[50.200275,-16.000263],[49.860606,-15.414253],[49.672607,-15.710204],[49.863344,-16.451037],[49.774564,-16.875042],[49.498612,-17.106036],[49.435619,-17.953064],[49.041792,-19.118781],[48.548541,-20.496888],[47.930749,-22.391501],[47.547723,-23.781959],[47.095761,-24.94163],[46.282478,-25.178463],[45.409508,-25.601434],[44.833574,-25.346101],[44.03972,-24.988345],[43.763768,-24.460677],[43.697778,-23.574116],[43.345654,-22.776904],[43.254187,-22.057413],[43.433298,-21.336475],[43.893683,-21.163307],[43.89637,-20.830459],[44.374325,-20.072366],[44.464397,-19.435454],[44.232422,-18.961995],[44.042976,-18.331387],[43.963084,-17.409945],[44.312469,-16.850496],[44.446517,-16.216219],[44.944937,-16.179374],[45.502732,-15.974373],[45.872994,-15.793454],[46.312243,-15.780018],[46.882183,-15.210182],[47.70513,-14.594303],[48.005215,-14.091233],[47.869047,-13.663869],[48.293828,-13.784068],[48.84506,-13.089175],[48.863509,-12.487868],[49.194651,-12.040557],[49.543519,-12.469833]]]},"id":"MDG"},
 {"type":"Feature","properties":{"name":"Mexico"},"geometry":{"type":"Polygon","coordinates":[[[-97.140008,25.869997],[-97.528072,24.992144],[-97.702946,24.272343],[-97.776042,22.93258],[-97.872367,22.444212],[-97.699044,21.898689],[-97.38896,21.411019],[-97.189333,20.635433],[-96.525576,19.890931],[-96.292127,19.320371],[-95.900885,18.828024],[-94.839063,18.562717],[-94.42573,18.144371],[-93.548651,18.423837],[-92.786114,18.524839],[-92.037348,18.704569],[-91.407903,18.876083],[-90.77187,19.28412],[-90.53359,19.867418],[-90.451476,20.707522],[-90.278618,20.999855],[-89.601321,21.261726],[-88.543866,21.493675],[-87.658417,21.458846],[-87.05189,21.543543],[-86.811982,21.331515],[-86.845908,20.849865],[-87.383291,20.255405],[-87.621054,19.646553],[-87.43675,19.472403],[-87.58656,19.04013],[-87.837191,18.259816],[-88.090664,18.516648],[-88.300031,18.499982],[-88.490123,18.486831],[-88.848344,17.883198],[-89.029857,18.001511],[-89.150909,17.955468],[-89.14308,17.808319],[-90.067934,17.819326],[-91.00152,17.817595],[-91.002269,17.254658],[-91.453921,17.252177],[-91.08167,16.918477],[-90.711822,16.687483],[-90.600847,16.470778],[-90.438867,16.41011],[-90.464473,16.069562],[-91.74796,16.066565],[-92.229249,15.251447],[-92.087216,15.064585],[-92.20323,14.830103],[-92.22775,14.538829],[-93.359464,15.61543],[-93.875169,15.940164],[-94.691656,16.200975],[-95.250227,16.128318],[-96.053382,15.752088],[-96.557434,15.653515],[-97.263592,15.917065],[-98.01303,16.107312],[-98.947676,16.566043],[-99.697397,16.706164],[-100.829499,17.171071],[-101.666089,17.649026],[-101.918528,17.91609],[-102.478132,17.975751],[-103.50099,18.292295],[-103.917527,18.748572],[-104.99201,19.316134],[-105.493038,19.946767],[-105.731396,20.434102],[-105.397773,20.531719],[-105.500661,20.816895],[-105.270752,21.076285],[-105.265817,21.422104],[-105.603161,21.871146],[-105.693414,22.26908],[-106.028716,22.773752],[-106.90998,23.767774],[-107.915449,24.548915],[-108.401905,25.172314],[-109.260199,25.580609],[-109.444089,25.824884],[-109.291644,26.442934],[-109.801458,26.676176],[-110.391732,27.162115],[-110.641019,27.859876],[-111.178919,27.941241],[-111.759607,28.467953],[-112.228235,28.954409],[-112.271824,29.266844],[-112.809594,30.021114],[-113.163811,30.786881],[-113.148669,31.170966],[-113.871881,31.567608],[-114.205737,31.524045],[-114.776451,31.799532],[-114.9367,31.393485],[-114.771232,30.913617],[-114.673899,30.162681],[-114.330974,29.750432],[-113.588875,29.061611],[-113.424053,28.826174],[-113.271969,28.754783],[-113.140039,28.411289],[-112.962298,28.42519],[-112.761587,27.780217],[-112.457911,27.525814],[-112.244952,27.171727],[-111.616489,26.662817],[-111.284675,25.73259],[-110.987819,25.294606],[-110.710007,24.826004],[-110.655049,24.298595],[-110.172856,24.265548],[-109.771847,23.811183],[-109.409104,23.364672],[-109.433392,23.185588],[-109.854219,22.818272],[-110.031392,22.823078],[-110.295071,23.430973],[-110.949501,24.000964],[-111.670568,24.484423],[-112.182036,24.738413],[-112.148989,25.470125],[-112.300711,26.012004],[-112.777297,26.32196],[-113.464671,26.768186],[-113.59673,26.63946],[-113.848937,26.900064],[-114.465747,27.14209],[-115.055142,27.722727],[-114.982253,27.7982],[-114.570366,27.741485],[-114.199329,28.115003],[-114.162018,28.566112],[-114.931842,29.279479],[-115.518654,29.556362],[-115.887365,30.180794],[-116.25835,30.836464],[-116.721526,31.635744],[-117.12776,32.53534],[-115.99135,32.61239],[-114.72139,32.72083],[-114.815,32.52528],[-113.30498,32.03914],[-111.02361,31.33472],[-109.035,31.34194],[-108.24194,31.34222],[-108.24,31.754854],[-106.50759,31.75452],[-106.1429,31.39995],[-105.63159,31.08383],[-105.03737,30.64402],[-104.70575,30.12173],[-104.45697,29.57196],[-103.94,29.27],[-103.11,28.97],[-102.48,29.76],[-101.6624,29.7793],[-100.9576,29.38071],[-100.45584,28.69612],[-100.11,28.11],[-99.52,27.54],[-99.3,26.84],[-99.02,26.37],[-98.24,26.06],[-97.53,25.84],[-97.140008,25.869997]]]},"id":"MEX"},
 {"type":"Feature","properties":{"name":"Macedonia"},"geometry":{"type":"Polygon","coordinates":[[[20.59023,41.85541],[20.71731,41.84711],[20.76216,42.05186],[21.3527,42.2068],[21.576636,42.245224],[21.91708,42.30364],[22.380526,42.32026],[22.881374,41.999297],[22.952377,41.337994],[22.76177,41.3048],[22.597308,41.130487],[22.055378,41.149866],[21.674161,40.931275],[21.02004,40.842727],[20.60518,41.08622],[20.46315,41.51509],[20.59023,41.85541]]]},"id":"MKD"},
 {"type":"Feature","properties":{"name":"Paraguay"},"geometry":{"type":"Polygon","coordinates":[[[-62.685057,-22.249029],[-62.291179,-21.051635],[-62.265961,-20.513735],[-61.786326,-19.633737],[-60.043565,-19.342747],[-59.115042,-19.356906],[-58.183471,-19.868399],[-58.166392,-20.176701],[-57.870674,-20.732688],[-57.937156,-22.090176],[-56.88151,-22.282154],[-56.473317,-22.0863],[-55.797958,-22.35693],[-55.610683,-22.655619],[-55.517639,-23.571998],[-55.400747,-23.956935],[-55.027902,-24.001274],[-54.652834,-23.839578],[-54.29296,-24.021014],[-54.293476,-24.5708],[-54.428946,-25.162185],[-54.625291,-25.739255],[-54.788795,-26.621786],[-55.695846,-27.387837],[-56.486702,-27.548499],[-57.60976,-27.395899],[-58.618174,-27.123719],[-57.63366,-25.603657],[-57.777217,-25.16234],[-58.807128,-24.771459],[-60.028966,-24.032796],[-60.846565,-23.880713],[-62.685057,-22.249029]]]},"id":"PRY"},
 {"type":"Feature","properties":{"name":"Qatar"},"geometry":{"type":"Polygon","coordinates":[[[50.810108,24.754743],[50.743911,25.482424],[51.013352,26.006992],[51.286462,26.114582],[51.589079,25.801113],[51.6067,25.21567],[51.389608,24.627386],[51.112415,24.556331],[50.810108,24.754743]]]},"id":"QAT"},
 {"type":"Feature","properties":{"name":"Romania"},"geometry":{"type":"Polygon","coordinates":[[[22.710531,47.882194],[23.142236,48.096341],[23.760958,47.985598],[24.402056,47.981878],[24.866317,47.737526],[25.207743,47.891056],[25.945941,47.987149],[26.19745,48.220881],[26.619337,48.220726],[26.924176,48.123264],[27.233873,47.826771],[27.551166,47.405117],[28.12803,46.810476],[28.160018,46.371563],[28.054443,45.944586],[28.233554,45.488283],[28.679779,45.304031],[29.149725,45.464925],[29.603289,45.293308],[29.626543,45.035391],[29.141612,44.82021],[28.837858,44.913874],[28.558081,43.707462],[27.970107,43.812468],[27.2424,44.175986],[26.065159,43.943494],[25.569272,43.688445],[24.100679,43.741051],[23.332302,43.897011],[22.944832,43.823785],[22.65715,44.234923],[22.474008,44.409228],[22.705726,44.578003],[22.459022,44.702517],[22.145088,44.478422],[21.562023,44.768947],[21.483526,45.18117],[20.874313,45.416375],[20.762175,45.734573],[20.220192,46.127469],[21.021952,46.316088],[21.626515,46.994238],[22.099768,47.672439],[22.710531,47.882194]]]},"id":"ROU"},
-{"type":"Feature","properties":{"name":"Russia"},"geometry":{"type":"MultiPolygon","coordinates":[[[[143.648007,50.7476],[144.654148,48.976391],[143.173928,49.306551],[142.558668,47.861575],[143.533492,46.836728],[143.505277,46.137908],[142.747701,46.740765],[142.09203,45.966755],[141.906925,46.805929],[142.018443,47.780133],[141.904445,48.859189],[142.1358,49.615163],[142.179983,50.952342],[141.594076,51.935435],[141.682546,53.301966],[142.606934,53.762145],[142.209749,54.225476],[142.654786,54.365881],[142.914616,53.704578],[143.260848,52.74076],[143.235268,51.75666],[143.648007,50.7476]]],[[[22.731099,54.327537],[20.892245,54.312525],[19.66064,54.426084],[19.888481,54.86616],[21.268449,55.190482],[22.315724,55.015299],[22.757764,54.856574],[22.651052,54.582741],[22.731099,54.327537]]],[[[-175.01425,66.58435],[-174.33983,66.33556],[-174.57182,67.06219],[-171.85731,66.91308],[-169.89958,65.97724],[-170.89107,65.54139],[-172.53025,65.43791],[-172.555,64.46079],[-172.95533,64.25269],[-173.89184,64.2826],[-174.65392,64.63125],[-175.98353,64.92288],[-176.20716,65.35667],[-177.22266,65.52024],[-178.35993,65.39052],[-178.90332,65.74044],[-178.68611,66.11211],[-179.88377,65.87456],[-179.43268,65.40411],[-180,64.979709],[-180,68.963636],[-177.55,68.2],[-174.92825,67.20589],[-175.01425,66.58435]]],[[[180,70.832199],[178.903425,70.78114],[178.7253,71.0988],[180,71.515714],[180,70.832199]]],[[[-178.69378,70.89302],[-180,70.832199],[-180,71.515714],[-179.871875,71.55762],[-179.02433,71.55553],[-177.577945,71.26948],[-177.663575,71.13277],[-178.69378,70.89302]]],[[[143.60385,73.21244],[142.08763,73.20544],[140.038155,73.31692],[139.86312,73.36983],[140.81171,73.76506],[142.06207,73.85758],[143.48283,73.47525],[143.60385,73.21244]]],[[[150.73167,75.08406],[149.575925,74.68892],[147.977465,74.778355],[146.11919,75.17298],[146.358485,75.49682],[148.22223,75.345845],[150.73167,75.08406]]],[[[145.086285,75.562625],[144.3,74.82],[140.61381,74.84768],[138.95544,74.61148],[136.97439,75.26167],[137.51176,75.94917],[138.831075,76.13676],[141.471615,76.09289],[145.086285,75.562625]]],[[[57.535693,70.720464],[56.944979,70.632743],[53.677375,70.762658],[53.412017,71.206662],[51.601895,71.474759],[51.455754,72.014881],[52.478275,72.229442],[52.444169,72.774731],[54.427614,73.627548],[53.50829,73.749814],[55.902459,74.627486],[55.631933,75.081412],[57.868644,75.60939],[61.170044,76.251883],[64.498368,76.439055],[66.210977,76.809782],[68.15706,76.939697],[68.852211,76.544811],[68.180573,76.233642],[64.637326,75.737755],[61.583508,75.260885],[58.477082,74.309056],[56.986786,73.333044],[55.419336,72.371268],[55.622838,71.540595],[57.535693,70.720464]]],[[[106.97013,76.97419],[107.24,76.48],[108.1538,76.72335],[111.07726,76.71],[113.33151,76.22224],[114.13417,75.84764],[113.88539,75.32779],[112.77918,75.03186],[110.15125,74.47673],[109.4,74.18],[110.64,74.04],[112.11919,73.78774],[113.01954,73.97693],[113.52958,73.33505],[113.96881,73.59488],[115.56782,73.75285],[118.77633,73.58772],[119.02,73.12],[123.20066,72.97122],[123.25777,73.73503],[125.38,73.56],[126.97644,73.56549],[128.59126,73.03871],[129.05157,72.39872],[128.46,71.98],[129.71599,71.19304],[131.28858,70.78699],[132.2535,71.8363],[133.85766,71.38642],[135.56193,71.65525],[137.49755,71.34763],[138.23409,71.62803],[139.86983,71.48783],[139.14791,72.41619],[140.46817,72.84941],[149.5,72.2],[150.35118,71.60643],[152.9689,70.84222],[157.00688,71.03141],[158.99779,70.86672],[159.83031,70.45324],[159.70866,69.72198],[160.94053,69.43728],[162.27907,69.64204],[164.05248,69.66823],[165.94037,69.47199],[167.83567,69.58269],[169.57763,68.6938],[170.81688,69.01363],[170.0082,69.65276],[170.45345,70.09703],[173.64391,69.81743],[175.72403,69.87725],[178.6,69.4],[180,68.963636],[180,64.979709],[179.99281,64.97433],[178.7072,64.53493],[177.41128,64.60821],[178.313,64.07593],[178.90825,63.25197],[179.37034,62.98262],[179.48636,62.56894],[179.22825,62.3041],[177.3643,62.5219],[174.56929,61.76915],[173.68013,61.65261],[172.15,60.95],[170.6985,60.33618],[170.33085,59.88177],[168.90046,60.57355],[166.29498,59.78855],[165.84,60.16],[164.87674,59.7316],[163.53929,59.86871],[163.21711,59.21101],[162.01733,58.24328],[162.05297,57.83912],[163.19191,57.61503],[163.05794,56.15924],[162.12958,56.12219],[161.70146,55.28568],[162.11749,54.85514],[160.36877,54.34433],[160.02173,53.20257],[158.53094,52.95868],[158.23118,51.94269],[156.78979,51.01105],[156.42,51.7],[155.99182,53.15895],[155.43366,55.38103],[155.91442,56.76792],[156.75815,57.3647],[156.81035,57.83204],[158.36433,58.05575],[160.15064,59.31477],[161.87204,60.343],[163.66969,61.1409],[164.47355,62.55061],[163.25842,62.46627],[162.65791,61.6425],[160.12148,60.54423],[159.30232,61.77396],[156.72068,61.43442],[154.21806,59.75818],[155.04375,59.14495],[152.81185,58.88385],[151.26573,58.78089],[151.33815,59.50396],[149.78371,59.65573],[148.54481,59.16448],[145.48722,59.33637],[142.19782,59.03998],[138.95848,57.08805],[135.12619,54.72959],[136.70171,54.60355],[137.19342,53.97732],[138.1647,53.75501],[138.80463,54.25455],[139.90151,54.18968],[141.34531,53.08957],[141.37923,52.23877],[140.59742,51.23967],[140.51308,50.04553],[140.06193,48.44671],[138.55472,46.99965],[138.21971,46.30795],[136.86232,45.1435],[135.51535,43.989],[134.86939,43.39821],[133.53687,42.81147],[132.90627,42.79849],[132.27807,43.28456],[130.93587,42.55274],[130.78,42.22],[130.64,42.395],[130.633866,42.903015],[131.144688,42.92999],[131.288555,44.11152],[131.02519,44.96796],[131.883454,45.321162],[133.09712,45.14409],[133.769644,46.116927],[134.11235,47.21248],[134.50081,47.57845],[135.026311,48.47823],[133.373596,48.183442],[132.50669,47.78896],[130.98726,47.79013],[130.582293,48.729687],[129.397818,49.4406],[127.6574,49.76027],[127.287456,50.739797],[126.939157,51.353894],[126.564399,51.784255],[125.946349,52.792799],[125.068211,53.161045],[123.57147,53.4588],[122.245748,53.431726],[121.003085,53.251401],[120.177089,52.753886],[120.725789,52.516226],[120.7382,51.96411],[120.18208,51.64355],[119.27939,50.58292],[119.288461,50.142883],[117.879244,49.510983],[116.678801,49.888531],[115.485695,49.805177],[114.96211,50.140247],[114.362456,50.248303],[112.89774,49.543565],[111.581231,49.377968],[110.662011,49.130128],[109.402449,49.292961],[108.475167,49.282548],[107.868176,49.793705],[106.888804,50.274296],[105.886591,50.406019],[104.62158,50.27532],[103.676545,50.089966],[102.25589,50.51056],[102.06521,51.25991],[100.88948,51.516856],[99.981732,51.634006],[98.861491,52.047366],[97.82574,51.010995],[98.231762,50.422401],[97.25976,49.72605],[95.81402,49.97746],[94.815949,50.013433],[94.147566,50.480537],[93.10421,50.49529],[92.234712,50.802171],[90.713667,50.331812],[88.805567,49.470521],[87.751264,49.297198],[87.35997,49.214981],[86.829357,49.826675],[85.54127,49.692859],[85.11556,50.117303],[84.416377,50.3114],[83.935115,50.889246],[83.383004,51.069183],[81.945986,50.812196],[80.568447,51.388336],[80.03556,50.864751],[77.800916,53.404415],[76.525179,54.177003],[76.8911,54.490524],[74.38482,53.54685],[73.425679,53.48981],[73.508516,54.035617],[72.22415,54.376655],[71.180131,54.133285],[70.865267,55.169734],[69.068167,55.38525],[68.1691,54.970392],[65.66687,54.60125],[65.178534,54.354228],[61.4366,54.00625],[60.978066,53.664993],[61.699986,52.979996],[60.739993,52.719986],[60.927269,52.447548],[59.967534,51.96042],[61.588003,51.272659],[61.337424,50.79907],[59.932807,50.842194],[59.642282,50.545442],[58.36332,51.06364],[56.77798,51.04355],[55.71694,50.62171],[54.532878,51.02624],[52.328724,51.718652],[50.766648,51.692762],[48.702382,50.605128],[48.577841,49.87476],[47.54948,50.454698],[46.751596,49.356006],[47.043672,49.152039],[46.466446,48.394152],[47.31524,47.71585],[48.05725,47.74377],[48.694734,47.075628],[48.59325,46.56104],[49.10116,46.39933],[48.64541,45.80629],[47.67591,45.64149],[46.68201,44.6092],[47.59094,43.66016],[47.49252,42.98658],[48.58437,41.80888],[47.987283,41.405819],[47.815666,41.151416],[47.373315,41.219732],[46.686071,41.827137],[46.404951,41.860675],[45.7764,42.09244],[45.470279,42.502781],[44.537623,42.711993],[43.93121,42.55496],[43.75599,42.74083],[42.3944,43.2203],[40.92219,43.38215],[40.076965,43.553104],[39.955009,43.434998],[38.68,44.28],[37.53912,44.65721],[36.67546,45.24469],[37.40317,45.40451],[38.23295,46.24087],[37.67372,46.63657],[39.14767,47.04475],[39.1212,47.26336],[38.223538,47.10219],[38.255112,47.5464],[38.77057,47.82562],[39.738278,47.898937],[39.89562,48.23241],[39.67465,48.78382],[40.080789,49.30743],[40.06904,49.60105],[38.594988,49.926462],[38.010631,49.915662],[37.39346,50.383953],[36.626168,50.225591],[35.356116,50.577197],[35.37791,50.77394],[35.022183,51.207572],[34.224816,51.255993],[34.141978,51.566413],[34.391731,51.768882],[33.7527,52.335075],[32.715761,52.238465],[32.412058,52.288695],[32.15944,52.06125],[31.78597,52.10168],[31.540018,52.742052],[31.305201,53.073996],[31.49764,53.16743],[32.304519,53.132726],[32.693643,53.351421],[32.405599,53.618045],[31.731273,53.794029],[31.791424,53.974639],[31.384472,54.157056],[30.757534,54.811771],[30.971836,55.081548],[30.873909,55.550976],[29.896294,55.789463],[29.371572,55.670091],[29.229513,55.918344],[28.176709,56.16913],[27.855282,56.759326],[27.770016,57.244258],[27.288185,57.474528],[27.716686,57.791899],[27.42015,58.72457],[28.131699,59.300825],[27.98112,59.47537],[29.1177,60.02805],[28.07,60.50352],[30.211107,61.780028],[31.139991,62.357693],[31.516092,62.867687],[30.035872,63.552814],[30.444685,64.204453],[29.54443,64.948672],[30.21765,65.80598],[29.054589,66.944286],[29.977426,67.698297],[28.445944,68.364613],[28.59193,69.064777],[29.39955,69.15692],[31.10108,69.55811],[32.13272,69.90595],[33.77547,69.30142],[36.51396,69.06342],[40.29234,67.9324],[41.05987,67.45713],[41.12595,66.79158],[40.01583,66.26618],[38.38295,65.99953],[33.91871,66.75961],[33.18444,66.63253],[34.81477,65.90015],[34.878574,65.436213],[34.94391,64.41437],[36.23129,64.10945],[37.01273,63.84983],[37.14197,64.33471],[36.539579,64.76446],[37.17604,65.14322],[39.59345,64.52079],[40.4356,64.76446],[39.7626,65.49682],[42.09309,66.47623],[43.01604,66.41858],[43.94975,66.06908],[44.53226,66.75634],[43.69839,67.35245],[44.18795,67.95051],[43.45282,68.57079],[46.25,68.25],[46.82134,67.68997],[45.55517,67.56652],[45.56202,67.01005],[46.34915,66.66767],[47.89416,66.88455],[48.13876,67.52238],[50.22766,67.99867],[53.71743,68.85738],[54.47171,68.80815],[53.48582,68.20131],[54.72628,68.09702],[55.44268,68.43866],[57.31702,68.46628],[58.802,68.88082],[59.94142,68.27844],[61.07784,68.94069],[60.03,69.52],[60.55,69.85],[63.504,69.54739],[64.888115,69.234835],[68.51216,68.09233],[69.18068,68.61563],[68.16444,69.14436],[68.13522,69.35649],[66.93008,69.45461],[67.25976,69.92873],[66.72492,70.70889],[66.69466,71.02897],[68.54006,71.9345],[69.19636,72.84336],[69.94,73.04],[72.58754,72.77629],[72.79603,72.22006],[71.84811,71.40898],[72.47011,71.09019],[72.79188,70.39114],[72.5647,69.02085],[73.66787,68.4079],[73.2387,67.7404],[71.28,66.32],[72.42301,66.17267],[72.82077,66.53267],[73.92099,66.78946],[74.18651,67.28429],[75.052,67.76047],[74.46926,68.32899],[74.93584,68.98918],[73.84236,69.07146],[73.60187,69.62763],[74.3998,70.63175],[73.1011,71.44717],[74.89082,72.12119],[74.65926,72.83227],[75.15801,72.85497],[75.68351,72.30056],[75.28898,71.33556],[76.35911,71.15287],[75.90313,71.87401],[77.57665,72.26717],[79.65202,72.32011],[81.5,71.75],[80.61071,72.58285],[80.51109,73.6482],[82.25,73.85],[84.65526,73.80591],[86.8223,73.93688],[86.00956,74.45967],[87.16682,75.11643],[88.31571,75.14393],[90.26,75.64],[92.90058,75.77333],[93.23421,76.0472],[95.86,76.14],[96.67821,75.91548],[98.92254,76.44689],[100.75967,76.43028],[101.03532,76.86189],[101.99084,77.28754],[104.3516,77.69792],[106.06664,77.37389],[104.705,77.1274],[106.97013,76.97419]]],[[[105.07547,78.30689],[99.43814,77.921],[101.2649,79.23399],[102.08635,79.34641],[102.837815,79.28129],[105.37243,78.71334],[105.07547,78.30689]]],[[[51.136187,80.54728],[49.793685,80.415428],[48.894411,80.339567],[48.754937,80.175468],[47.586119,80.010181],[46.502826,80.247247],[47.072455,80.559424],[44.846958,80.58981],[46.799139,80.771918],[48.318477,80.78401],[48.522806,80.514569],[49.09719,80.753986],[50.039768,80.918885],[51.522933,80.699726],[51.136187,80.54728]]],[[[99.93976,78.88094],[97.75794,78.7562],[94.97259,79.044745],[93.31288,79.4265],[92.5454,80.14379],[91.18107,80.34146],[93.77766,81.0246],[95.940895,81.2504],[97.88385,80.746975],[100.186655,79.780135],[99.93976,78.88094]]]]},"id":"RUS"},
+{"type":"Feature","properties":{"name":"Russian Federation"},"geometry":{"type":"MultiPolygon","coordinates":[[[[143.648007,50.7476],[144.654148,48.976391],[143.173928,49.306551],[142.558668,47.861575],[143.533492,46.836728],[143.505277,46.137908],[142.747701,46.740765],[142.09203,45.966755],[141.906925,46.805929],[142.018443,47.780133],[141.904445,48.859189],[142.1358,49.615163],[142.179983,50.952342],[141.594076,51.935435],[141.682546,53.301966],[142.606934,53.762145],[142.209749,54.225476],[142.654786,54.365881],[142.914616,53.704578],[143.260848,52.74076],[143.235268,51.75666],[143.648007,50.7476]]],[[[22.731099,54.327537],[20.892245,54.312525],[19.66064,54.426084],[19.888481,54.86616],[21.268449,55.190482],[22.315724,55.015299],[22.757764,54.856574],[22.651052,54.582741],[22.731099,54.327537]]],[[[-175.01425,66.58435],[-174.33983,66.33556],[-174.57182,67.06219],[-171.85731,66.91308],[-169.89958,65.97724],[-170.89107,65.54139],[-172.53025,65.43791],[-172.555,64.46079],[-172.95533,64.25269],[-173.89184,64.2826],[-174.65392,64.63125],[-175.98353,64.92288],[-176.20716,65.35667],[-177.22266,65.52024],[-178.35993,65.39052],[-178.90332,65.74044],[-178.68611,66.11211],[-179.88377,65.87456],[-179.43268,65.40411],[-180,64.979709],[-180,68.963636],[-177.55,68.2],[-174.92825,67.20589],[-175.01425,66.58435]]],[[[180,70.832199],[178.903425,70.78114],[178.7253,71.0988],[180,71.515714],[180,70.832199]]],[[[-178.69378,70.89302],[-180,70.832199],[-180,71.515714],[-179.871875,71.55762],[-179.02433,71.55553],[-177.577945,71.26948],[-177.663575,71.13277],[-178.69378,70.89302]]],[[[143.60385,73.21244],[142.08763,73.20544],[140.038155,73.31692],[139.86312,73.36983],[140.81171,73.76506],[142.06207,73.85758],[143.48283,73.47525],[143.60385,73.21244]]],[[[150.73167,75.08406],[149.575925,74.68892],[147.977465,74.778355],[146.11919,75.17298],[146.358485,75.49682],[148.22223,75.345845],[150.73167,75.08406]]],[[[145.086285,75.562625],[144.3,74.82],[140.61381,74.84768],[138.95544,74.61148],[136.97439,75.26167],[137.51176,75.94917],[138.831075,76.13676],[141.471615,76.09289],[145.086285,75.562625]]],[[[57.535693,70.720464],[56.944979,70.632743],[53.677375,70.762658],[53.412017,71.206662],[51.601895,71.474759],[51.455754,72.014881],[52.478275,72.229442],[52.444169,72.774731],[54.427614,73.627548],[53.50829,73.749814],[55.902459,74.627486],[55.631933,75.081412],[57.868644,75.60939],[61.170044,76.251883],[64.498368,76.439055],[66.210977,76.809782],[68.15706,76.939697],[68.852211,76.544811],[68.180573,76.233642],[64.637326,75.737755],[61.583508,75.260885],[58.477082,74.309056],[56.986786,73.333044],[55.419336,72.371268],[55.622838,71.540595],[57.535693,70.720464]]],[[[106.97013,76.97419],[107.24,76.48],[108.1538,76.72335],[111.07726,76.71],[113.33151,76.22224],[114.13417,75.84764],[113.88539,75.32779],[112.77918,75.03186],[110.15125,74.47673],[109.4,74.18],[110.64,74.04],[112.11919,73.78774],[113.01954,73.97693],[113.52958,73.33505],[113.96881,73.59488],[115.56782,73.75285],[118.77633,73.58772],[119.02,73.12],[123.20066,72.97122],[123.25777,73.73503],[125.38,73.56],[126.97644,73.56549],[128.59126,73.03871],[129.05157,72.39872],[128.46,71.98],[129.71599,71.19304],[131.28858,70.78699],[132.2535,71.8363],[133.85766,71.38642],[135.56193,71.65525],[137.49755,71.34763],[138.23409,71.62803],[139.86983,71.48783],[139.14791,72.41619],[140.46817,72.84941],[149.5,72.2],[150.35118,71.60643],[152.9689,70.84222],[157.00688,71.03141],[158.99779,70.86672],[159.83031,70.45324],[159.70866,69.72198],[160.94053,69.43728],[162.27907,69.64204],[164.05248,69.66823],[165.94037,69.47199],[167.83567,69.58269],[169.57763,68.6938],[170.81688,69.01363],[170.0082,69.65276],[170.45345,70.09703],[173.64391,69.81743],[175.72403,69.87725],[178.6,69.4],[180,68.963636],[180,64.979709],[179.99281,64.97433],[178.7072,64.53493],[177.41128,64.60821],[178.313,64.07593],[178.90825,63.25197],[179.37034,62.98262],[179.48636,62.56894],[179.22825,62.3041],[177.3643,62.5219],[174.56929,61.76915],[173.68013,61.65261],[172.15,60.95],[170.6985,60.33618],[170.33085,59.88177],[168.90046,60.57355],[166.29498,59.78855],[165.84,60.16],[164.87674,59.7316],[163.53929,59.86871],[163.21711,59.21101],[162.01733,58.24328],[162.05297,57.83912],[163.19191,57.61503],[163.05794,56.15924],[162.12958,56.12219],[161.70146,55.28568],[162.11749,54.85514],[160.36877,54.34433],[160.02173,53.20257],[158.53094,52.95868],[158.23118,51.94269],[156.78979,51.01105],[156.42,51.7],[155.99182,53.15895],[155.43366,55.38103],[155.91442,56.76792],[156.75815,57.3647],[156.81035,57.83204],[158.36433,58.05575],[160.15064,59.31477],[161.87204,60.343],[163.66969,61.1409],[164.47355,62.55061],[163.25842,62.46627],[162.65791,61.6425],[160.12148,60.54423],[159.30232,61.77396],[156.72068,61.43442],[154.21806,59.75818],[155.04375,59.14495],[152.81185,58.88385],[151.26573,58.78089],[151.33815,59.50396],[149.78371,59.65573],[148.54481,59.16448],[145.48722,59.33637],[142.19782,59.03998],[138.95848,57.08805],[135.12619,54.72959],[136.70171,54.60355],[137.19342,53.97732],[138.1647,53.75501],[138.80463,54.25455],[139.90151,54.18968],[141.34531,53.08957],[141.37923,52.23877],[140.59742,51.23967],[140.51308,50.04553],[140.06193,48.44671],[138.55472,46.99965],[138.21971,46.30795],[136.86232,45.1435],[135.51535,43.989],[134.86939,43.39821],[133.53687,42.81147],[132.90627,42.79849],[132.27807,43.28456],[130.93587,42.55274],[130.78,42.22],[130.64,42.395],[130.633866,42.903015],[131.144688,42.92999],[131.288555,44.11152],[131.02519,44.96796],[131.883454,45.321162],[133.09712,45.14409],[133.769644,46.116927],[134.11235,47.21248],[134.50081,47.57845],[135.026311,48.47823],[133.373596,48.183442],[132.50669,47.78896],[130.98726,47.79013],[130.582293,48.729687],[129.397818,49.4406],[127.6574,49.76027],[127.287456,50.739797],[126.939157,51.353894],[126.564399,51.784255],[125.946349,52.792799],[125.068211,53.161045],[123.57147,53.4588],[122.245748,53.431726],[121.003085,53.251401],[120.177089,52.753886],[120.725789,52.516226],[120.7382,51.96411],[120.18208,51.64355],[119.27939,50.58292],[119.288461,50.142883],[117.879244,49.510983],[116.678801,49.888531],[115.485695,49.805177],[114.96211,50.140247],[114.362456,50.248303],[112.89774,49.543565],[111.581231,49.377968],[110.662011,49.130128],[109.402449,49.292961],[108.475167,49.282548],[107.868176,49.793705],[106.888804,50.274296],[105.886591,50.406019],[104.62158,50.27532],[103.676545,50.089966],[102.25589,50.51056],[102.06521,51.25991],[100.88948,51.516856],[99.981732,51.634006],[98.861491,52.047366],[97.82574,51.010995],[98.231762,50.422401],[97.25976,49.72605],[95.81402,49.97746],[94.815949,50.013433],[94.147566,50.480537],[93.10421,50.49529],[92.234712,50.802171],[90.713667,50.331812],[88.805567,49.470521],[87.751264,49.297198],[87.35997,49.214981],[86.829357,49.826675],[85.54127,49.692859],[85.11556,50.117303],[84.416377,50.3114],[83.935115,50.889246],[83.383004,51.069183],[81.945986,50.812196],[80.568447,51.388336],[80.03556,50.864751],[77.800916,53.404415],[76.525179,54.177003],[76.8911,54.490524],[74.38482,53.54685],[73.425679,53.48981],[73.508516,54.035617],[72.22415,54.376655],[71.180131,54.133285],[70.865267,55.169734],[69.068167,55.38525],[68.1691,54.970392],[65.66687,54.60125],[65.178534,54.354228],[61.4366,54.00625],[60.978066,53.664993],[61.699986,52.979996],[60.739993,52.719986],[60.927269,52.447548],[59.967534,51.96042],[61.588003,51.272659],[61.337424,50.79907],[59.932807,50.842194],[59.642282,50.545442],[58.36332,51.06364],[56.77798,51.04355],[55.71694,50.62171],[54.532878,51.02624],[52.328724,51.718652],[50.766648,51.692762],[48.702382,50.605128],[48.577841,49.87476],[47.54948,50.454698],[46.751596,49.356006],[47.043672,49.152039],[46.466446,48.394152],[47.31524,47.71585],[48.05725,47.74377],[48.694734,47.075628],[48.59325,46.56104],[49.10116,46.39933],[48.64541,45.80629],[47.67591,45.64149],[46.68201,44.6092],[47.59094,43.66016],[47.49252,42.98658],[48.58437,41.80888],[47.987283,41.405819],[47.815666,41.151416],[47.373315,41.219732],[46.686071,41.827137],[46.404951,41.860675],[45.7764,42.09244],[45.470279,42.502781],[44.537623,42.711993],[43.93121,42.55496],[43.75599,42.74083],[42.3944,43.2203],[40.92219,43.38215],[40.076965,43.553104],[39.955009,43.434998],[38.68,44.28],[37.53912,44.65721],[36.67546,45.24469],[37.40317,45.40451],[38.23295,46.24087],[37.67372,46.63657],[39.14767,47.04475],[39.1212,47.26336],[38.223538,47.10219],[38.255112,47.5464],[38.77057,47.82562],[39.738278,47.898937],[39.89562,48.23241],[39.67465,48.78382],[40.080789,49.30743],[40.06904,49.60105],[38.594988,49.926462],[38.010631,49.915662],[37.39346,50.383953],[36.626168,50.225591],[35.356116,50.577197],[35.37791,50.77394],[35.022183,51.207572],[34.224816,51.255993],[34.141978,51.566413],[34.391731,51.768882],[33.7527,52.335075],[32.715761,52.238465],[32.412058,52.288695],[32.15944,52.06125],[31.78597,52.10168],[31.540018,52.742052],[31.305201,53.073996],[31.49764,53.16743],[32.304519,53.132726],[32.693643,53.351421],[32.405599,53.618045],[31.731273,53.794029],[31.791424,53.974639],[31.384472,54.157056],[30.757534,54.811771],[30.971836,55.081548],[30.873909,55.550976],[29.896294,55.789463],[29.371572,55.670091],[29.229513,55.918344],[28.176709,56.16913],[27.855282,56.759326],[27.770016,57.244258],[27.288185,57.474528],[27.716686,57.791899],[27.42015,58.72457],[28.131699,59.300825],[27.98112,59.47537],[29.1177,60.02805],[28.07,60.50352],[30.211107,61.780028],[31.139991,62.357693],[31.516092,62.867687],[30.035872,63.552814],[30.444685,64.204453],[29.54443,64.948672],[30.21765,65.80598],[29.054589,66.944286],[29.977426,67.698297],[28.445944,68.364613],[28.59193,69.064777],[29.39955,69.15692],[31.10108,69.55811],[32.13272,69.90595],[33.77547,69.30142],[36.51396,69.06342],[40.29234,67.9324],[41.05987,67.45713],[41.12595,66.79158],[40.01583,66.26618],[38.38295,65.99953],[33.91871,66.75961],[33.18444,66.63253],[34.81477,65.90015],[34.878574,65.436213],[34.94391,64.41437],[36.23129,64.10945],[37.01273,63.84983],[37.14197,64.33471],[36.539579,64.76446],[37.17604,65.14322],[39.59345,64.52079],[40.4356,64.76446],[39.7626,65.49682],[42.09309,66.47623],[43.01604,66.41858],[43.94975,66.06908],[44.53226,66.75634],[43.69839,67.35245],[44.18795,67.95051],[43.45282,68.57079],[46.25,68.25],[46.82134,67.68997],[45.55517,67.56652],[45.56202,67.01005],[46.34915,66.66767],[47.89416,66.88455],[48.13876,67.52238],[50.22766,67.99867],[53.71743,68.85738],[54.47171,68.80815],[53.48582,68.20131],[54.72628,68.09702],[55.44268,68.43866],[57.31702,68.46628],[58.802,68.88082],[59.94142,68.27844],[61.07784,68.94069],[60.03,69.52],[60.55,69.85],[63.504,69.54739],[64.888115,69.234835],[68.51216,68.09233],[69.18068,68.61563],[68.16444,69.14436],[68.13522,69.35649],[66.93008,69.45461],[67.25976,69.92873],[66.72492,70.70889],[66.69466,71.02897],[68.54006,71.9345],[69.19636,72.84336],[69.94,73.04],[72.58754,72.77629],[72.79603,72.22006],[71.84811,71.40898],[72.47011,71.09019],[72.79188,70.39114],[72.5647,69.02085],[73.66787,68.4079],[73.2387,67.7404],[71.28,66.32],[72.42301,66.17267],[72.82077,66.53267],[73.92099,66.78946],[74.18651,67.28429],[75.052,67.76047],[74.46926,68.32899],[74.93584,68.98918],[73.84236,69.07146],[73.60187,69.62763],[74.3998,70.63175],[73.1011,71.44717],[74.89082,72.12119],[74.65926,72.83227],[75.15801,72.85497],[75.68351,72.30056],[75.28898,71.33556],[76.35911,71.15287],[75.90313,71.87401],[77.57665,72.26717],[79.65202,72.32011],[81.5,71.75],[80.61071,72.58285],[80.51109,73.6482],[82.25,73.85],[84.65526,73.80591],[86.8223,73.93688],[86.00956,74.45967],[87.16682,75.11643],[88.31571,75.14393],[90.26,75.64],[92.90058,75.77333],[93.23421,76.0472],[95.86,76.14],[96.67821,75.91548],[98.92254,76.44689],[100.75967,76.43028],[101.03532,76.86189],[101.99084,77.28754],[104.3516,77.69792],[106.06664,77.37389],[104.705,77.1274],[106.97013,76.97419]]],[[[105.07547,78.30689],[99.43814,77.921],[101.2649,79.23399],[102.08635,79.34641],[102.837815,79.28129],[105.37243,78.71334],[105.07547,78.30689]]],[[[51.136187,80.54728],[49.793685,80.415428],[48.894411,80.339567],[48.754937,80.175468],[47.586119,80.010181],[46.502826,80.247247],[47.072455,80.559424],[44.846958,80.58981],[46.799139,80.771918],[48.318477,80.78401],[48.522806,80.514569],[49.09719,80.753986],[50.039768,80.918885],[51.522933,80.699726],[51.136187,80.54728]]],[[[99.93976,78.88094],[97.75794,78.7562],[94.97259,79.044745],[93.31288,79.4265],[92.5454,80.14379],[91.18107,80.34146],[93.77766,81.0246],[95.940895,81.2504],[97.88385,80.746975],[100.186655,79.780135],[99.93976,78.88094]]]]},"id":"RUS"},
 {"type":"Feature","properties":{"name":"Rwanda"},"geometry":{"type":"Polygon","coordinates":[[[30.419105,-1.134659],[30.816135,-1.698914],[30.758309,-2.28725],[30.469696,-2.413858],[29.938359,-2.348487],[29.632176,-2.917858],[29.024926,-2.839258],[29.117479,-2.292211],[29.254835,-2.21511],[29.291887,-1.620056],[29.579466,-1.341313],[29.821519,-1.443322],[30.419105,-1.134659]]]},"id":"RWA"},
 {"type":"Feature","properties":{"name":"Western Sahara"},"geometry":{"type":"Polygon","coordinates":[[[-8.794884,27.120696],[-8.817828,27.656426],[-8.66559,27.656426],[-8.665124,27.589479],[-8.6844,27.395744],[-8.687294,25.881056],[-11.969419,25.933353],[-11.937224,23.374594],[-12.874222,23.284832],[-13.118754,22.77122],[-12.929102,21.327071],[-16.845194,21.333323],[-17.063423,20.999752],[-17.020428,21.42231],[-17.002962,21.420734],[-14.750955,21.5006],[-14.630833,21.86094],[-14.221168,22.310163],[-13.89111,23.691009],[-12.500963,24.770116],[-12.030759,26.030866],[-11.71822,26.104092],[-11.392555,26.883424],[-10.551263,26.990808],[-10.189424,26.860945],[-9.735343,26.860945],[-9.413037,27.088476],[-8.794884,27.120696]]]},"id":"-99"},
 {"type":"Feature","properties":{"name":"Saudi Arabia"},"geometry":{"type":"Polygon","coordinates":[[[42.779332,16.347891],[42.649573,16.774635],[42.347989,17.075806],[42.270888,17.474722],[41.754382,17.833046],[41.221391,18.6716],[40.939341,19.486485],[40.247652,20.174635],[39.801685,20.338862],[39.139399,21.291905],[39.023696,21.986875],[39.066329,22.579656],[38.492772,23.688451],[38.02386,24.078686],[37.483635,24.285495],[37.154818,24.858483],[37.209491,25.084542],[36.931627,25.602959],[36.639604,25.826228],[36.249137,26.570136],[35.640182,27.37652],[35.130187,28.063352],[34.632336,28.058546],[34.787779,28.607427],[34.83222,28.957483],[34.956037,29.356555],[36.068941,29.197495],[36.501214,29.505254],[36.740528,29.865283],[37.503582,30.003776],[37.66812,30.338665],[37.998849,30.5085],[37.002166,31.508413],[39.004886,32.010217],[39.195468,32.161009],[40.399994,31.889992],[41.889981,31.190009],[44.709499,29.178891],[46.568713,29.099025],[47.459822,29.002519],[47.708851,28.526063],[48.416094,28.552004],[48.807595,27.689628],[49.299554,27.461218],[49.470914,27.109999],[50.152422,26.689663],[50.212935,26.277027],[50.113303,25.943972],[50.239859,25.60805],[50.527387,25.327808],[50.660557,24.999896],[50.810108,24.754743],[51.112415,24.556331],[51.389608,24.627386],[51.579519,24.245497],[51.617708,24.014219],[52.000733,23.001154],[55.006803,22.496948],[55.208341,22.70833],[55.666659,22.000001],[54.999982,19.999994],[52.00001,19.000003],[49.116672,18.616668],[48.183344,18.166669],[47.466695,17.116682],[47.000005,16.949999],[46.749994,17.283338],[46.366659,17.233315],[45.399999,17.333335],[45.216651,17.433329],[44.062613,17.410359],[43.791519,17.319977],[43.380794,17.579987],[43.115798,17.08844],[43.218375,16.66689],[42.779332,16.347891]]]},"id":"SAU"},
 {"type":"Feature","properties":{"name":"El Salvador"},"geometry":{"type":"Polygon","coordinates":[[[-87.793111,13.38448],[-87.904112,13.149017],[-88.483302,13.163951],[-88.843228,13.259734],[-89.256743,13.458533],[-89.812394,13.520622],[-90.095555,13.735338],[-90.064678,13.88197],[-89.721934,14.134228],[-89.534219,14.244816],[-89.587343,14.362586],[-89.353326,14.424133],[-89.058512,14.340029],[-88.843073,14.140507],[-88.541231,13.980155],[-88.503998,13.845486],[-88.065343,13.964626],[-87.859515,13.893312],[-87.723503,13.78505],[-87.793111,13.38448]]]},"id":"SLV"},
 {"type":"Feature","properties":{"name":"Somaliland"},"geometry":{"type":"Polygon","coordinates":[[[48.93813,9.451749],[48.486736,8.837626],[47.78942,8.003],[46.948328,7.996877],[43.67875,9.18358],[43.296975,9.540477],[42.92812,10.02194],[42.55876,10.57258],[42.776852,10.926879],[43.145305,11.46204],[43.47066,11.27771],[43.666668,10.864169],[44.117804,10.445538],[44.614259,10.442205],[45.556941,10.698029],[46.645401,10.816549],[47.525658,11.127228],[48.021596,11.193064],[48.378784,11.375482],[48.948206,11.410622],[48.942005,11.394266],[48.938491,10.982327],[48.938233,9.9735],[48.93813,9.451749]]]},"id":"-99"},
 {"type":"Feature","properties":{"name":"Somalia"},"geometry":{"type":"Polygon","coordinates":[[[49.72862,11.5789],[50.25878,11.67957],[50.73202,12.0219],[51.1112,12.02464],[51.13387,11.74815],[51.04153,11.16651],[51.04531,10.6409],[50.83418,10.27972],[50.55239,9.19874],[50.07092,8.08173],[49.4527,6.80466],[48.59455,5.33911],[47.74079,4.2194],[46.56476,2.85529],[45.56399,2.04576],[44.06815,1.05283],[43.13597,0.2922],[42.04157,-0.91916],[41.81095,-1.44647],[41.58513,-1.68325],[40.993,-0.85829],[40.98105,2.78452],[41.855083,3.918912],[42.12861,4.23413],[42.76967,4.25259],[43.66087,4.95755],[44.9636,5.00162],[47.78942,8.003],[48.486736,8.837626],[48.93813,9.451749],[48.938233,9.9735],[48.938491,10.982327],[48.942005,11.394266],[48.948205,11.410617],[49.26776,11.43033],[49.72862,11.5789]]]},"id":"SOM"},
-{"type":"Feature","properties":{"name":"Republic of Serbia"},"geometry":{"type":"Polygon","coordinates":[[[20.874313,45.416375],[21.483526,45.18117],[21.562023,44.768947],[22.145088,44.478422],[22.459022,44.702517],[22.705726,44.578003],[22.474008,44.409228],[22.65715,44.234923],[22.410446,44.008063],[22.500157,43.642814],[22.986019,43.211161],[22.604801,42.898519],[22.436595,42.580321],[22.545012,42.461362],[22.380526,42.32026],[21.91708,42.30364],[21.576636,42.245224],[21.54332,42.32025],[21.66292,42.43922],[21.77505,42.6827],[21.63302,42.67717],[21.43866,42.86255],[21.27421,42.90959],[21.143395,43.068685],[20.95651,43.13094],[20.81448,43.27205],[20.63508,43.21671],[20.49679,42.88469],[20.25758,42.81275],[20.3398,42.89852],[19.95857,43.10604],[19.63,43.21378],[19.48389,43.35229],[19.21852,43.52384],[19.454,43.5681],[19.59976,44.03847],[19.11761,44.42307],[19.36803,44.863],[19.00548,44.86023],[19.390476,45.236516],[19.072769,45.521511],[18.82982,45.90888],[19.596045,46.17173],[20.220192,46.127469],[20.762175,45.734573],[20.874313,45.416375]]]},"id":"SRB"},
+{"type":"Feature","properties":{"name":"Serbia"},"geometry":{"type":"Polygon","coordinates":[[[20.874313,45.416375],[21.483526,45.18117],[21.562023,44.768947],[22.145088,44.478422],[22.459022,44.702517],[22.705726,44.578003],[22.474008,44.409228],[22.65715,44.234923],[22.410446,44.008063],[22.500157,43.642814],[22.986019,43.211161],[22.604801,42.898519],[22.436595,42.580321],[22.545012,42.461362],[22.380526,42.32026],[21.91708,42.30364],[21.576636,42.245224],[21.54332,42.32025],[21.66292,42.43922],[21.77505,42.6827],[21.63302,42.67717],[21.43866,42.86255],[21.27421,42.90959],[21.143395,43.068685],[20.95651,43.13094],[20.81448,43.27205],[20.63508,43.21671],[20.49679,42.88469],[20.25758,42.81275],[20.3398,42.89852],[19.95857,43.10604],[19.63,43.21378],[19.48389,43.35229],[19.21852,43.52384],[19.454,43.5681],[19.59976,44.03847],[19.11761,44.42307],[19.36803,44.863],[19.00548,44.86023],[19.390476,45.236516],[19.072769,45.521511],[18.82982,45.90888],[19.596045,46.17173],[20.220192,46.127469],[20.762175,45.734573],[20.874313,45.416375]]]},"id":"SRB"},
 {"type":"Feature","properties":{"name":"Suriname"},"geometry":{"type":"Polygon","coordinates":[[[-57.147436,5.97315],[-55.949318,5.772878],[-55.84178,5.953125],[-55.03325,6.025291],[-53.958045,5.756548],[-54.478633,4.896756],[-54.399542,4.212611],[-54.006931,3.620038],[-54.181726,3.18978],[-54.269705,2.732392],[-54.524754,2.311849],[-55.097587,2.523748],[-55.569755,2.421506],[-55.973322,2.510364],[-56.073342,2.220795],[-55.9056,2.021996],[-55.995698,1.817667],[-56.539386,1.899523],[-57.150098,2.768927],[-57.281433,3.333492],[-57.601569,3.334655],[-58.044694,4.060864],[-57.86021,4.576801],[-57.914289,4.812626],[-57.307246,5.073567],[-57.147436,5.97315]]]},"id":"SUR"},
 {"type":"Feature","properties":{"name":"Slovakia"},"geometry":{"type":"Polygon","coordinates":[[[18.853144,49.49623],[18.909575,49.435846],[19.320713,49.571574],[19.825023,49.217125],[20.415839,49.431453],[20.887955,49.328772],[21.607808,49.470107],[22.558138,49.085738],[22.280842,48.825392],[22.085608,48.422264],[21.872236,48.319971],[20.801294,48.623854],[20.473562,48.56285],[20.239054,48.327567],[19.769471,48.202691],[19.661364,48.266615],[19.174365,48.111379],[18.777025,48.081768],[18.696513,47.880954],[17.857133,47.758429],[17.488473,47.867466],[16.979667,48.123497],[16.879983,48.470013],[16.960288,48.596982],[17.101985,48.816969],[17.545007,48.800019],[17.886485,48.903475],[17.913512,48.996493],[18.104973,49.043983],[18.170498,49.271515],[18.399994,49.315001],[18.554971,49.495015],[18.853144,49.49623]]]},"id":"SVK"},
 {"type":"Feature","properties":{"name":"Slovenia"},"geometry":{"type":"Polygon","coordinates":[[[13.806475,46.509306],[14.632472,46.431817],[15.137092,46.658703],[16.011664,46.683611],[16.202298,46.852386],[16.370505,46.841327],[16.564808,46.503751],[15.768733,46.238108],[15.67153,45.834154],[15.323954,45.731783],[15.327675,45.452316],[14.935244,45.471695],[14.595109,45.634941],[14.411968,45.466166],[13.71506,45.500324],[13.93763,45.591016],[13.69811,46.016778],[13.806475,46.509306]]]},"id":"SVN"},
 {"type":"Feature","properties":{"name":"Sweden"},"geometry":{"type":"Polygon","coordinates":[[[22.183173,65.723741],[21.213517,65.026005],[21.369631,64.413588],[19.778876,63.609554],[17.847779,62.7494],[17.119555,61.341166],[17.831346,60.636583],[18.787722,60.081914],[17.869225,58.953766],[16.829185,58.719827],[16.44771,57.041118],[15.879786,56.104302],[14.666681,56.200885],[14.100721,55.407781],[12.942911,55.361737],[12.625101,56.30708],[11.787942,57.441817],[11.027369,58.856149],[11.468272,59.432393],[12.300366,60.117933],[12.631147,61.293572],[11.992064,61.800362],[11.930569,63.128318],[12.579935,64.066219],[13.571916,64.049114],[13.919905,64.445421],[13.55569,64.787028],[15.108411,66.193867],[16.108712,67.302456],[16.768879,68.013937],[17.729182,68.010552],[17.993868,68.567391],[19.87856,68.407194],[20.025269,69.065139],[20.645593,69.106247],[21.978535,68.616846],[23.539473,67.936009],[23.56588,66.396051],[23.903379,66.006927],[22.183173,65.723741]]]},"id":"SWE"},
 {"type":"Feature","properties":{"name":"Swaziland"},"geometry":{"type":"Polygon","coordinates":[[[32.071665,-26.73382],[31.86806,-27.177927],[31.282773,-27.285879],[30.685962,-26.743845],[30.676609,-26.398078],[30.949667,-26.022649],[31.04408,-25.731452],[31.333158,-25.660191],[31.837778,-25.843332],[31.985779,-26.29178],[32.071665,-26.73382]]]},"id":"SWZ"},
-{"type":"Feature","properties":{"name":"Syria"},"geometry":{"type":"Polygon","coordinates":[[[38.792341,33.378686],[36.834062,32.312938],[35.719918,32.709192],[35.700798,32.716014],[35.836397,32.868123],[35.821101,33.277426],[36.06646,33.824912],[36.61175,34.201789],[36.448194,34.593935],[35.998403,34.644914],[35.905023,35.410009],[36.149763,35.821535],[36.41755,36.040617],[36.685389,36.259699],[36.739494,36.81752],[37.066761,36.623036],[38.167727,36.90121],[38.699891,36.712927],[39.52258,36.716054],[40.673259,37.091276],[41.212089,37.074352],[42.349591,37.229873],[41.837064,36.605854],[41.289707,36.358815],[41.383965,35.628317],[41.006159,34.419372],[38.792341,33.378686]]]},"id":"SYR"},
+{"type":"Feature","properties":{"name":"Syrian Arab Republic"},"geometry":{"type":"Polygon","coordinates":[[[38.792341,33.378686],[36.834062,32.312938],[35.719918,32.709192],[35.700798,32.716014],[35.836397,32.868123],[35.821101,33.277426],[36.06646,33.824912],[36.61175,34.201789],[36.448194,34.593935],[35.998403,34.644914],[35.905023,35.410009],[36.149763,35.821535],[36.41755,36.040617],[36.685389,36.259699],[36.739494,36.81752],[37.066761,36.623036],[38.167727,36.90121],[38.699891,36.712927],[39.52258,36.716054],[40.673259,37.091276],[41.212089,37.074352],[42.349591,37.229873],[41.837064,36.605854],[41.289707,36.358815],[41.383965,35.628317],[41.006159,34.419372],[38.792341,33.378686]]]},"id":"SYR"},
 {"type":"Feature","properties":{"name":"Chad"},"geometry":{"type":"Polygon","coordinates":[[[14.495787,12.859396],[14.595781,13.330427],[13.954477,13.353449],[13.956699,13.996691],[13.540394,14.367134],[13.97217,15.68437],[15.247731,16.627306],[15.300441,17.92795],[15.685741,19.95718],[15.903247,20.387619],[15.487148,20.730415],[15.47106,21.04845],[15.096888,21.308519],[14.8513,22.86295],[15.86085,23.40972],[19.84926,21.49509],[23.83766,19.58047],[23.88689,15.61084],[23.02459,15.68072],[22.56795,14.94429],[22.30351,14.32682],[22.51202,14.09318],[22.18329,13.78648],[22.29658,13.37232],[22.03759,12.95546],[21.93681,12.58818],[22.28801,12.64605],[22.49762,12.26024],[22.50869,11.67936],[22.87622,11.38461],[22.864165,11.142395],[22.231129,10.971889],[21.723822,10.567056],[21.000868,9.475985],[20.059685,9.012706],[19.094008,9.074847],[18.81201,8.982915],[18.911022,8.630895],[18.389555,8.281304],[17.96493,7.890914],[16.705988,7.508328],[16.456185,7.734774],[16.290562,7.754307],[16.106232,7.497088],[15.27946,7.421925],[15.436092,7.692812],[15.120866,8.38215],[14.979996,8.796104],[14.544467,8.965861],[13.954218,9.549495],[14.171466,10.021378],[14.627201,9.920919],[14.909354,9.992129],[15.467873,9.982337],[14.923565,10.891325],[14.960152,11.555574],[14.89336,12.21905],[14.495787,12.859396]]]},"id":"TCD"},
 {"type":"Feature","properties":{"name":"Togo"},"geometry":{"type":"Polygon","coordinates":[[[1.865241,6.142158],[1.060122,5.928837],[0.836931,6.279979],[0.570384,6.914359],[0.490957,7.411744],[0.712029,8.312465],[0.461192,8.677223],[0.365901,9.465004],[0.36758,10.191213],[-0.049785,10.706918],[0.023803,11.018682],[0.899563,10.997339],[0.772336,10.470808],[1.077795,10.175607],[1.425061,9.825395],[1.463043,9.334624],[1.664478,9.12859],[1.618951,6.832038],[1.865241,6.142158]]]},"id":"TGO"},
 {"type":"Feature","properties":{"name":"Thailand"},"geometry":{"type":"Polygon","coordinates":[[[102.584932,12.186595],[101.687158,12.64574],[100.83181,12.627085],[100.978467,13.412722],[100.097797,13.406856],[100.018733,12.307001],[99.478921,10.846367],[99.153772,9.963061],[99.222399,9.239255],[99.873832,9.207862],[100.279647,8.295153],[100.459274,7.429573],[101.017328,6.856869],[101.623079,6.740622],[102.141187,6.221636],[101.814282,5.810808],[101.154219,5.691384],[101.075516,6.204867],[100.259596,6.642825],[100.085757,6.464489],[99.690691,6.848213],[99.519642,7.343454],[98.988253,7.907993],[98.503786,8.382305],[98.339662,7.794512],[98.150009,8.350007],[98.25915,8.973923],[98.553551,9.93296],[99.038121,10.960546],[99.587286,11.892763],[99.196354,12.804748],[99.212012,13.269294],[99.097755,13.827503],[98.430819,14.622028],[98.192074,15.123703],[98.537376,15.308497],[98.903348,16.177824],[98.493761,16.837836],[97.859123,17.567946],[97.375896,18.445438],[97.797783,18.62708],[98.253724,19.708203],[98.959676,19.752981],[99.543309,20.186598],[100.115988,20.41785],[100.548881,20.109238],[100.606294,19.508344],[101.282015,19.462585],[101.035931,18.408928],[101.059548,17.512497],[102.113592,18.109102],[102.413005,17.932782],[102.998706,17.961695],[103.200192,18.309632],[103.956477,18.240954],[104.716947,17.428859],[104.779321,16.441865],[105.589039,15.570316],[105.544338,14.723934],[105.218777,14.273212],[104.281418,14.416743],[102.988422,14.225721],[102.348099,13.394247],[102.584932,12.186595]]]},"id":"THA"},
 {"type":"Feature","properties":{"name":"Tunisia"},"geometry":{"type":"Polygon","coordinates":[[[9.48214,30.307556],[9.055603,32.102692],[8.439103,32.506285],[8.430473,32.748337],[7.612642,33.344115],[7.524482,34.097376],[8.140981,34.655146],[8.376368,35.479876],[8.217824,36.433177],[8.420964,36.946427],[9.509994,37.349994],[10.210002,37.230002],[10.18065,36.724038],[11.028867,37.092103],[11.100026,36.899996],[10.600005,36.41],[10.593287,35.947444],[10.939519,35.698984],[10.807847,34.833507],[10.149593,34.330773],[10.339659,33.785742],[10.856836,33.76874],[11.108501,33.293343],[11.488787,33.136996],[11.432253,32.368903],[10.94479,32.081815],[10.636901,31.761421],[9.950225,31.37607],[10.056575,30.961831],[9.970017,30.539325],[9.48214,30.307556]]]},"id":"TUN"},
 {"type":"Feature","properties":{"name":"Turkey"},"geometry":{"type":"MultiPolygon","coordinates":[[[[36.913127,41.335358],[38.347665,40.948586],[39.512607,41.102763],[40.373433,41.013673],[41.554084,41.535656],[42.619549,41.583173],[43.582746,41.092143],[43.752658,40.740201],[43.656436,40.253564],[44.400009,40.005],[44.79399,39.713003],[44.109225,39.428136],[44.421403,38.281281],[44.225756,37.971584],[44.772699,37.170445],[44.293452,37.001514],[43.942259,37.256228],[42.779126,37.385264],[42.349591,37.229873],[41.212089,37.074352],[40.673259,37.091276],[39.52258,36.716054],[38.699891,36.712927],[38.167727,36.90121],[37.066761,36.623036],[36.739494,36.81752],[36.685389,36.259699],[36.41755,36.040617],[36.149763,35.821535],[35.782085,36.274995],[36.160822,36.650606],[35.550936,36.565443],[34.714553,36.795532],[34.026895,36.21996],[32.509158,36.107564],[31.699595,36.644275],[30.621625,36.677865],[30.391096,36.262981],[29.699976,36.144357],[28.732903,36.676831],[27.641187,36.658822],[27.048768,37.653361],[26.318218,38.208133],[26.8047,38.98576],[26.170785,39.463612],[27.28002,40.420014],[28.819978,40.460011],[29.240004,41.219991],[31.145934,41.087622],[32.347979,41.736264],[33.513283,42.01896],[35.167704,42.040225],[36.913127,41.335358]]],[[[27.192377,40.690566],[26.358009,40.151994],[26.043351,40.617754],[26.056942,40.824123],[26.294602,40.936261],[26.604196,41.562115],[26.117042,41.826905],[27.135739,42.141485],[27.99672,42.007359],[28.115525,41.622886],[28.988443,41.299934],[28.806438,41.054962],[27.619017,40.999823],[27.192377,40.690566]]]]},"id":"TUR"},
 {"type":"Feature","properties":{"name":"Taiwan"},"geometry":{"type":"Polygon","coordinates":[[[121.777818,24.394274],[121.175632,22.790857],[120.74708,21.970571],[120.220083,22.814861],[120.106189,23.556263],[120.69468,24.538451],[121.495044,25.295459],[121.951244,24.997596],[121.777818,24.394274]]]},"id":"TWN"},
-{"type":"Feature","properties":{"name":"United Republic of Tanzania"},"geometry":{"type":"Polygon","coordinates":[[[33.903711,-0.95],[34.07262,-1.05982],[37.69869,-3.09699],[37.7669,-3.67712],[39.20222,-4.67677],[38.74054,-5.90895],[38.79977,-6.47566],[39.44,-6.84],[39.47,-7.1],[39.19469,-7.7039],[39.25203,-8.00781],[39.18652,-8.48551],[39.53574,-9.11237],[39.9496,-10.0984],[40.31659,-10.3171],[39.521,-10.89688],[38.427557,-11.285202],[37.82764,-11.26879],[37.47129,-11.56876],[36.775151,-11.594537],[36.514082,-11.720938],[35.312398,-11.439146],[34.559989,-11.52002],[34.28,-10.16],[33.940838,-9.693674],[33.73972,-9.41715],[32.759375,-9.230599],[32.191865,-8.930359],[31.556348,-8.762049],[31.157751,-8.594579],[30.74,-8.34],[30.2,-7.08],[29.62,-6.52],[29.419993,-5.939999],[29.519987,-5.419979],[29.339998,-4.499983],[29.753512,-4.452389],[30.11632,-4.09012],[30.50554,-3.56858],[30.75224,-3.35931],[30.74301,-3.03431],[30.52766,-2.80762],[30.46967,-2.41383],[30.758309,-2.28725],[30.816135,-1.698914],[30.419105,-1.134659],[30.76986,-1.01455],[31.86617,-1.02736],[33.903711,-0.95]]]},"id":"TZA"},
+{"type":"Feature","properties":{"name":"Tanzania, United Republic of"},"geometry":{"type":"Polygon","coordinates":[[[33.903711,-0.95],[34.07262,-1.05982],[37.69869,-3.09699],[37.7669,-3.67712],[39.20222,-4.67677],[38.74054,-5.90895],[38.79977,-6.47566],[39.44,-6.84],[39.47,-7.1],[39.19469,-7.7039],[39.25203,-8.00781],[39.18652,-8.48551],[39.53574,-9.11237],[39.9496,-10.0984],[40.31659,-10.3171],[39.521,-10.89688],[38.427557,-11.285202],[37.82764,-11.26879],[37.47129,-11.56876],[36.775151,-11.594537],[36.514082,-11.720938],[35.312398,-11.439146],[34.559989,-11.52002],[34.28,-10.16],[33.940838,-9.693674],[33.73972,-9.41715],[32.759375,-9.230599],[32.191865,-8.930359],[31.556348,-8.762049],[31.157751,-8.594579],[30.74,-8.34],[30.2,-7.08],[29.62,-6.52],[29.419993,-5.939999],[29.519987,-5.419979],[29.339998,-4.499983],[29.753512,-4.452389],[30.11632,-4.09012],[30.50554,-3.56858],[30.75224,-3.35931],[30.74301,-3.03431],[30.52766,-2.80762],[30.46967,-2.41383],[30.758309,-2.28725],[30.816135,-1.698914],[30.419105,-1.134659],[30.76986,-1.01455],[31.86617,-1.02736],[33.903711,-0.95]]]},"id":"TZA"},
 {"type":"Feature","properties":{"name":"Uganda"},"geometry":{"type":"Polygon","coordinates":[[[31.86617,-1.02736],[30.76986,-1.01455],[30.419105,-1.134659],[29.821519,-1.443322],[29.579466,-1.341313],[29.587838,-0.587406],[29.8195,-0.2053],[29.875779,0.59738],[30.086154,1.062313],[30.468508,1.583805],[30.85267,1.849396],[31.174149,2.204465],[30.77332,2.33989],[30.83385,3.50917],[31.24556,3.7819],[31.88145,3.55827],[32.68642,3.79232],[33.39,3.79],[34.005,4.249885],[34.47913,3.5556],[34.59607,3.05374],[35.03599,1.90584],[34.6721,1.17694],[34.18,0.515],[33.893569,0.109814],[33.903711,-0.95],[31.86617,-1.02736]]]},"id":"UGA"},
 {"type":"Feature","properties":{"name":"Ukraine"},"geometry":{"type":"Polygon","coordinates":[[[31.785998,52.101678],[32.159412,52.061267],[32.412058,52.288695],[32.715761,52.238465],[33.7527,52.335075],[34.391731,51.768882],[34.141978,51.566413],[34.224816,51.255993],[35.022183,51.207572],[35.377924,50.773955],[35.356116,50.577197],[36.626168,50.225591],[37.39346,50.383953],[38.010631,49.915662],[38.594988,49.926462],[40.069058,49.601055],[40.080789,49.30743],[39.674664,48.783818],[39.895632,48.232405],[39.738278,47.898937],[38.770585,47.825608],[38.255112,47.5464],[38.223538,47.10219],[37.425137,47.022221],[36.759855,46.6987],[35.823685,46.645964],[34.962342,46.273197],[35.020788,45.651219],[35.510009,45.409993],[36.529998,45.46999],[36.334713,45.113216],[35.239999,44.939996],[33.882511,44.361479],[33.326421,44.564877],[33.546924,45.034771],[32.454174,45.327466],[32.630804,45.519186],[33.588162,45.851569],[33.298567,46.080598],[31.74414,46.333348],[31.675307,46.706245],[30.748749,46.5831],[30.377609,46.03241],[29.603289,45.293308],[29.149725,45.464925],[28.679779,45.304031],[28.233554,45.488283],[28.485269,45.596907],[28.659987,45.939987],[28.933717,46.25883],[28.862972,46.437889],[29.072107,46.517678],[29.170654,46.379262],[29.759972,46.349988],[30.024659,46.423937],[29.83821,46.525326],[29.908852,46.674361],[29.559674,46.928583],[29.415135,47.346645],[29.050868,47.510227],[29.122698,47.849095],[28.670891,48.118149],[28.259547,48.155562],[27.522537,48.467119],[26.857824,48.368211],[26.619337,48.220726],[26.19745,48.220881],[25.945941,47.987149],[25.207743,47.891056],[24.866317,47.737526],[24.402056,47.981878],[23.760958,47.985598],[23.142236,48.096341],[22.710531,47.882194],[22.64082,48.15024],[22.085608,48.422264],[22.280842,48.825392],[22.558138,49.085738],[22.776419,49.027395],[22.51845,49.476774],[23.426508,50.308506],[23.922757,50.424881],[24.029986,50.705407],[23.527071,51.578454],[24.005078,51.617444],[24.553106,51.888461],[25.327788,51.910656],[26.337959,51.832289],[27.454066,51.592303],[28.241615,51.572227],[28.617613,51.427714],[28.992835,51.602044],[29.254938,51.368234],[30.157364,51.416138],[30.555117,51.319503],[30.619454,51.822806],[30.927549,52.042353],[31.785998,52.101678]]]},"id":"UKR"},
 {"type":"Feature","properties":{"name":"Uruguay"},"geometry":{"type":"Polygon","coordinates":[[[-57.625133,-30.216295],[-56.976026,-30.109686],[-55.973245,-30.883076],[-55.60151,-30.853879],[-54.572452,-31.494511],[-53.787952,-32.047243],[-53.209589,-32.727666],[-53.650544,-33.202004],[-53.373662,-33.768378],[-53.806426,-34.396815],[-54.935866,-34.952647],[-55.67409,-34.752659],[-56.215297,-34.859836],[-57.139685,-34.430456],[-57.817861,-34.462547],[-58.427074,-33.909454],[-58.349611,-33.263189],[-58.132648,-33.040567],[-58.14244,-32.044504],[-57.874937,-31.016556],[-57.625133,-30.216295]]]},"id":"URY"},
-{"type":"Feature","properties":{"name":"United States of America"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.54211,19.08348],[-155.68817,18.91619],[-155.93665,19.05939],[-155.90806,19.33888],[-156.07347,19.70294],[-156.02368,19.81422],[-155.85008,19.97729],[-155.91907,20.17395],[-155.86108,20.26721],[-155.78505,20.2487],[-155.40214,20.07975],[-155.22452,19.99302],[-155.06226,19.8591],[-154.80741,19.50871],[-154.83147,19.45328],[-155.22217,19.23972],[-155.54211,19.08348]]],[[[-156.07926,20.64397],[-156.41445,20.57241],[-156.58673,20.783],[-156.70167,20.8643],[-156.71055,20.92676],[-156.61258,21.01249],[-156.25711,20.91745],[-155.99566,20.76404],[-156.07926,20.64397]]],[[[-156.75824,21.17684],[-156.78933,21.06873],[-157.32521,21.09777],[-157.25027,21.21958],[-156.75824,21.17684]]],[[[-157.65283,21.32217],[-157.70703,21.26442],[-157.7786,21.27729],[-158.12667,21.31244],[-158.2538,21.53919],[-158.29265,21.57912],[-158.0252,21.71696],[-157.94161,21.65272],[-157.65283,21.32217]]],[[[-159.34512,21.982],[-159.46372,21.88299],[-159.80051,22.06533],[-159.74877,22.1382],[-159.5962,22.23618],[-159.36569,22.21494],[-159.34512,21.982]]],[[[-94.81758,49.38905],[-94.64,48.84],[-94.32914,48.67074],[-93.63087,48.60926],[-92.61,48.45],[-91.64,48.14],[-90.83,48.27],[-89.6,48.01],[-89.272917,48.019808],[-88.378114,48.302918],[-87.439793,47.94],[-86.461991,47.553338],[-85.652363,47.220219],[-84.87608,46.900083],[-84.779238,46.637102],[-84.543749,46.538684],[-84.6049,46.4396],[-84.3367,46.40877],[-84.14212,46.512226],[-84.091851,46.275419],[-83.890765,46.116927],[-83.616131,46.116927],[-83.469551,45.994686],[-83.592851,45.816894],[-82.550925,45.347517],[-82.337763,44.44],[-82.137642,43.571088],[-82.43,42.98],[-82.9,42.43],[-83.12,42.08],[-83.142,41.975681],[-83.02981,41.832796],[-82.690089,41.675105],[-82.439278,41.675105],[-81.277747,42.209026],[-80.247448,42.3662],[-78.939362,42.863611],[-78.92,42.965],[-79.01,43.27],[-79.171674,43.466339],[-78.72028,43.625089],[-77.737885,43.629056],[-76.820034,43.628784],[-76.5,44.018459],[-76.375,44.09631],[-75.31821,44.81645],[-74.867,45.00048],[-73.34783,45.00738],[-71.50506,45.0082],[-71.405,45.255],[-71.08482,45.30524],[-70.66,45.46],[-70.305,45.915],[-69.99997,46.69307],[-69.237216,47.447781],[-68.905,47.185],[-68.23444,47.35486],[-67.79046,47.06636],[-67.79134,45.70281],[-67.13741,45.13753],[-66.96466,44.8097],[-68.03252,44.3252],[-69.06,43.98],[-70.11617,43.68405],[-70.645476,43.090238],[-70.81489,42.8653],[-70.825,42.335],[-70.495,41.805],[-70.08,41.78],[-70.185,42.145],[-69.88497,41.92283],[-69.96503,41.63717],[-70.64,41.475],[-71.12039,41.49445],[-71.86,41.32],[-72.295,41.27],[-72.87643,41.22065],[-73.71,40.931102],[-72.24126,41.11948],[-71.945,40.93],[-73.345,40.63],[-73.982,40.628],[-73.952325,40.75075],[-74.25671,40.47351],[-73.96244,40.42763],[-74.17838,39.70926],[-74.90604,38.93954],[-74.98041,39.1964],[-75.20002,39.24845],[-75.52805,39.4985],[-75.32,38.96],[-75.071835,38.782032],[-75.05673,38.40412],[-75.37747,38.01551],[-75.94023,37.21689],[-76.03127,37.2566],[-75.72205,37.93705],[-76.23287,38.319215],[-76.35,39.15],[-76.542725,38.717615],[-76.32933,38.08326],[-76.989998,38.239992],[-76.30162,37.917945],[-76.25874,36.9664],[-75.9718,36.89726],[-75.86804,36.55125],[-75.72749,35.55074],[-76.36318,34.80854],[-77.397635,34.51201],[-78.05496,33.92547],[-78.55435,33.86133],[-79.06067,33.49395],[-79.20357,33.15839],[-80.301325,32.509355],[-80.86498,32.0333],[-81.33629,31.44049],[-81.49042,30.72999],[-81.31371,30.03552],[-80.98,29.18],[-80.535585,28.47213],[-80.53,28.04],[-80.056539,26.88],[-80.088015,26.205765],[-80.13156,25.816775],[-80.38103,25.20616],[-80.68,25.08],[-81.17213,25.20126],[-81.33,25.64],[-81.71,25.87],[-82.24,26.73],[-82.70515,27.49504],[-82.85526,27.88624],[-82.65,28.55],[-82.93,29.1],[-83.70959,29.93656],[-84.1,30.09],[-85.10882,29.63615],[-85.28784,29.68612],[-85.7731,30.15261],[-86.4,30.4],[-87.53036,30.27433],[-88.41782,30.3849],[-89.18049,30.31598],[-89.593831,30.159994],[-89.413735,29.89419],[-89.43,29.48864],[-89.21767,29.29108],[-89.40823,29.15961],[-89.77928,29.30714],[-90.15463,29.11743],[-90.880225,29.148535],[-91.626785,29.677],[-92.49906,29.5523],[-93.22637,29.78375],[-93.84842,29.71363],[-94.69,29.48],[-95.60026,28.73863],[-96.59404,28.30748],[-97.14,27.83],[-97.37,27.38],[-97.38,26.69],[-97.33,26.21],[-97.14,25.87],[-97.53,25.84],[-98.24,26.06],[-99.02,26.37],[-99.3,26.84],[-99.52,27.54],[-100.11,28.11],[-100.45584,28.69612],[-100.9576,29.38071],[-101.6624,29.7793],[-102.48,29.76],[-103.11,28.97],[-103.94,29.27],[-104.45697,29.57196],[-104.70575,30.12173],[-105.03737,30.64402],[-105.63159,31.08383],[-106.1429,31.39995],[-106.50759,31.75452],[-108.24,31.754854],[-108.24194,31.34222],[-109.035,31.34194],[-111.02361,31.33472],[-113.30498,32.03914],[-114.815,32.52528],[-114.72139,32.72083],[-115.99135,32.61239],[-117.12776,32.53534],[-117.295938,33.046225],[-117.944,33.621236],[-118.410602,33.740909],[-118.519895,34.027782],[-119.081,34.078],[-119.438841,34.348477],[-120.36778,34.44711],[-120.62286,34.60855],[-120.74433,35.15686],[-121.71457,36.16153],[-122.54747,37.55176],[-122.51201,37.78339],[-122.95319,38.11371],[-123.7272,38.95166],[-123.86517,39.76699],[-124.39807,40.3132],[-124.17886,41.14202],[-124.2137,41.99964],[-124.53284,42.76599],[-124.14214,43.70838],[-124.020535,44.615895],[-123.89893,45.52341],[-124.079635,46.86475],[-124.39567,47.72017],[-124.68721,48.184433],[-124.566101,48.379715],[-123.12,48.04],[-122.58736,47.096],[-122.34,47.36],[-122.5,48.18],[-122.84,49],[-120,49],[-117.03121,49],[-116.04818,49],[-113,49],[-110.05,49],[-107.05,49],[-104.04826,48.99986],[-100.65,49],[-97.22872,49.0007],[-95.15907,49],[-95.15609,49.38425],[-94.81758,49.38905]]],[[[-153.006314,57.115842],[-154.00509,56.734677],[-154.516403,56.992749],[-154.670993,57.461196],[-153.76278,57.816575],[-153.228729,57.968968],[-152.564791,57.901427],[-152.141147,57.591059],[-153.006314,57.115842]]],[[[-165.579164,59.909987],[-166.19277,59.754441],[-166.848337,59.941406],[-167.455277,60.213069],[-166.467792,60.38417],[-165.67443,60.293607],[-165.579164,59.909987]]],[[[-171.731657,63.782515],[-171.114434,63.592191],[-170.491112,63.694975],[-169.682505,63.431116],[-168.689439,63.297506],[-168.771941,63.188598],[-169.52944,62.976931],[-170.290556,63.194438],[-170.671386,63.375822],[-171.553063,63.317789],[-171.791111,63.405846],[-171.731657,63.782515]]],[[[-155.06779,71.147776],[-154.344165,70.696409],[-153.900006,70.889989],[-152.210006,70.829992],[-152.270002,70.600006],[-150.739992,70.430017],[-149.720003,70.53001],[-147.613362,70.214035],[-145.68999,70.12001],[-144.920011,69.989992],[-143.589446,70.152514],[-142.07251,69.851938],[-140.985988,69.711998],[-140.985988,69.711998],[-140.992499,66.000029],[-140.99777,60.306397],[-140.012998,60.276838],[-139.039,60.000007],[-138.34089,59.56211],[-137.4525,58.905],[-136.47972,59.46389],[-135.47583,59.78778],[-134.945,59.27056],[-134.27111,58.86111],[-133.355549,58.410285],[-132.73042,57.69289],[-131.70781,56.55212],[-130.00778,55.91583],[-129.979994,55.284998],[-130.53611,54.802753],[-131.085818,55.178906],[-131.967211,55.497776],[-132.250011,56.369996],[-133.539181,57.178887],[-134.078063,58.123068],[-135.038211,58.187715],[-136.628062,58.212209],[-137.800006,58.499995],[-139.867787,59.537762],[-140.825274,59.727517],[-142.574444,60.084447],[-143.958881,59.99918],[-145.925557,60.45861],[-147.114374,60.884656],[-148.224306,60.672989],[-148.018066,59.978329],[-148.570823,59.914173],[-149.727858,59.705658],[-150.608243,59.368211],[-151.716393,59.155821],[-151.859433,59.744984],[-151.409719,60.725803],[-150.346941,61.033588],[-150.621111,61.284425],[-151.895839,60.727198],[-152.57833,60.061657],[-154.019172,59.350279],[-153.287511,58.864728],[-154.232492,58.146374],[-155.307491,57.727795],[-156.308335,57.422774],[-156.556097,56.979985],[-158.117217,56.463608],[-158.433321,55.994154],[-159.603327,55.566686],[-160.28972,55.643581],[-161.223048,55.364735],[-162.237766,55.024187],[-163.069447,54.689737],[-164.785569,54.404173],[-164.942226,54.572225],[-163.84834,55.039431],[-162.870001,55.348043],[-161.804175,55.894986],[-160.563605,56.008055],[-160.07056,56.418055],[-158.684443,57.016675],[-158.461097,57.216921],[-157.72277,57.570001],[-157.550274,58.328326],[-157.041675,58.918885],[-158.194731,58.615802],[-158.517218,58.787781],[-159.058606,58.424186],[-159.711667,58.93139],[-159.981289,58.572549],[-160.355271,59.071123],[-161.355003,58.670838],[-161.968894,58.671665],[-162.054987,59.266925],[-161.874171,59.633621],[-162.518059,59.989724],[-163.818341,59.798056],[-164.662218,60.267484],[-165.346388,60.507496],[-165.350832,61.073895],[-166.121379,61.500019],[-165.734452,62.074997],[-164.919179,62.633076],[-164.562508,63.146378],[-163.753332,63.219449],[-163.067224,63.059459],[-162.260555,63.541936],[-161.53445,63.455817],[-160.772507,63.766108],[-160.958335,64.222799],[-161.518068,64.402788],[-160.777778,64.788604],[-161.391926,64.777235],[-162.45305,64.559445],[-162.757786,64.338605],[-163.546394,64.55916],[-164.96083,64.446945],[-166.425288,64.686672],[-166.845004,65.088896],[-168.11056,65.669997],[-166.705271,66.088318],[-164.47471,66.57666],[-163.652512,66.57666],[-163.788602,66.077207],[-161.677774,66.11612],[-162.489715,66.735565],[-163.719717,67.116395],[-164.430991,67.616338],[-165.390287,68.042772],[-166.764441,68.358877],[-166.204707,68.883031],[-164.430811,68.915535],[-163.168614,69.371115],[-162.930566,69.858062],[-161.908897,70.33333],[-160.934797,70.44769],[-159.039176,70.891642],[-158.119723,70.824721],[-156.580825,71.357764],[-155.06779,71.147776]]]]},"id":"USA"},
+{"type":"Feature","properties":{"name":"United States"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.54211,19.08348],[-155.68817,18.91619],[-155.93665,19.05939],[-155.90806,19.33888],[-156.07347,19.70294],[-156.02368,19.81422],[-155.85008,19.97729],[-155.91907,20.17395],[-155.86108,20.26721],[-155.78505,20.2487],[-155.40214,20.07975],[-155.22452,19.99302],[-155.06226,19.8591],[-154.80741,19.50871],[-154.83147,19.45328],[-155.22217,19.23972],[-155.54211,19.08348]]],[[[-156.07926,20.64397],[-156.41445,20.57241],[-156.58673,20.783],[-156.70167,20.8643],[-156.71055,20.92676],[-156.61258,21.01249],[-156.25711,20.91745],[-155.99566,20.76404],[-156.07926,20.64397]]],[[[-156.75824,21.17684],[-156.78933,21.06873],[-157.32521,21.09777],[-157.25027,21.21958],[-156.75824,21.17684]]],[[[-157.65283,21.32217],[-157.70703,21.26442],[-157.7786,21.27729],[-158.12667,21.31244],[-158.2538,21.53919],[-158.29265,21.57912],[-158.0252,21.71696],[-157.94161,21.65272],[-157.65283,21.32217]]],[[[-159.34512,21.982],[-159.46372,21.88299],[-159.80051,22.06533],[-159.74877,22.1382],[-159.5962,22.23618],[-159.36569,22.21494],[-159.34512,21.982]]],[[[-94.81758,49.38905],[-94.64,48.84],[-94.32914,48.67074],[-93.63087,48.60926],[-92.61,48.45],[-91.64,48.14],[-90.83,48.27],[-89.6,48.01],[-89.272917,48.019808],[-88.378114,48.302918],[-87.439793,47.94],[-86.461991,47.553338],[-85.652363,47.220219],[-84.87608,46.900083],[-84.779238,46.637102],[-84.543749,46.538684],[-84.6049,46.4396],[-84.3367,46.40877],[-84.14212,46.512226],[-84.091851,46.275419],[-83.890765,46.116927],[-83.616131,46.116927],[-83.469551,45.994686],[-83.592851,45.816894],[-82.550925,45.347517],[-82.337763,44.44],[-82.137642,43.571088],[-82.43,42.98],[-82.9,42.43],[-83.12,42.08],[-83.142,41.975681],[-83.02981,41.832796],[-82.690089,41.675105],[-82.439278,41.675105],[-81.277747,42.209026],[-80.247448,42.3662],[-78.939362,42.863611],[-78.92,42.965],[-79.01,43.27],[-79.171674,43.466339],[-78.72028,43.625089],[-77.737885,43.629056],[-76.820034,43.628784],[-76.5,44.018459],[-76.375,44.09631],[-75.31821,44.81645],[-74.867,45.00048],[-73.34783,45.00738],[-71.50506,45.0082],[-71.405,45.255],[-71.08482,45.30524],[-70.66,45.46],[-70.305,45.915],[-69.99997,46.69307],[-69.237216,47.447781],[-68.905,47.185],[-68.23444,47.35486],[-67.79046,47.06636],[-67.79134,45.70281],[-67.13741,45.13753],[-66.96466,44.8097],[-68.03252,44.3252],[-69.06,43.98],[-70.11617,43.68405],[-70.645476,43.090238],[-70.81489,42.8653],[-70.825,42.335],[-70.495,41.805],[-70.08,41.78],[-70.185,42.145],[-69.88497,41.92283],[-69.96503,41.63717],[-70.64,41.475],[-71.12039,41.49445],[-71.86,41.32],[-72.295,41.27],[-72.87643,41.22065],[-73.71,40.931102],[-72.24126,41.11948],[-71.945,40.93],[-73.345,40.63],[-73.982,40.628],[-73.952325,40.75075],[-74.25671,40.47351],[-73.96244,40.42763],[-74.17838,39.70926],[-74.90604,38.93954],[-74.98041,39.1964],[-75.20002,39.24845],[-75.52805,39.4985],[-75.32,38.96],[-75.071835,38.782032],[-75.05673,38.40412],[-75.37747,38.01551],[-75.94023,37.21689],[-76.03127,37.2566],[-75.72205,37.93705],[-76.23287,38.319215],[-76.35,39.15],[-76.542725,38.717615],[-76.32933,38.08326],[-76.989998,38.239992],[-76.30162,37.917945],[-76.25874,36.9664],[-75.9718,36.89726],[-75.86804,36.55125],[-75.72749,35.55074],[-76.36318,34.80854],[-77.397635,34.51201],[-78.05496,33.92547],[-78.55435,33.86133],[-79.06067,33.49395],[-79.20357,33.15839],[-80.301325,32.509355],[-80.86498,32.0333],[-81.33629,31.44049],[-81.49042,30.72999],[-81.31371,30.03552],[-80.98,29.18],[-80.535585,28.47213],[-80.53,28.04],[-80.056539,26.88],[-80.088015,26.205765],[-80.13156,25.816775],[-80.38103,25.20616],[-80.68,25.08],[-81.17213,25.20126],[-81.33,25.64],[-81.71,25.87],[-82.24,26.73],[-82.70515,27.49504],[-82.85526,27.88624],[-82.65,28.55],[-82.93,29.1],[-83.70959,29.93656],[-84.1,30.09],[-85.10882,29.63615],[-85.28784,29.68612],[-85.7731,30.15261],[-86.4,30.4],[-87.53036,30.27433],[-88.41782,30.3849],[-89.18049,30.31598],[-89.593831,30.159994],[-89.413735,29.89419],[-89.43,29.48864],[-89.21767,29.29108],[-89.40823,29.15961],[-89.77928,29.30714],[-90.15463,29.11743],[-90.880225,29.148535],[-91.626785,29.677],[-92.49906,29.5523],[-93.22637,29.78375],[-93.84842,29.71363],[-94.69,29.48],[-95.60026,28.73863],[-96.59404,28.30748],[-97.14,27.83],[-97.37,27.38],[-97.38,26.69],[-97.33,26.21],[-97.14,25.87],[-97.53,25.84],[-98.24,26.06],[-99.02,26.37],[-99.3,26.84],[-99.52,27.54],[-100.11,28.11],[-100.45584,28.69612],[-100.9576,29.38071],[-101.6624,29.7793],[-102.48,29.76],[-103.11,28.97],[-103.94,29.27],[-104.45697,29.57196],[-104.70575,30.12173],[-105.03737,30.64402],[-105.63159,31.08383],[-106.1429,31.39995],[-106.50759,31.75452],[-108.24,31.754854],[-108.24194,31.34222],[-109.035,31.34194],[-111.02361,31.33472],[-113.30498,32.03914],[-114.815,32.52528],[-114.72139,32.72083],[-115.99135,32.61239],[-117.12776,32.53534],[-117.295938,33.046225],[-117.944,33.621236],[-118.410602,33.740909],[-118.519895,34.027782],[-119.081,34.078],[-119.438841,34.348477],[-120.36778,34.44711],[-120.62286,34.60855],[-120.74433,35.15686],[-121.71457,36.16153],[-122.54747,37.55176],[-122.51201,37.78339],[-122.95319,38.11371],[-123.7272,38.95166],[-123.86517,39.76699],[-124.39807,40.3132],[-124.17886,41.14202],[-124.2137,41.99964],[-124.53284,42.76599],[-124.14214,43.70838],[-124.020535,44.615895],[-123.89893,45.52341],[-124.079635,46.86475],[-124.39567,47.72017],[-124.68721,48.184433],[-124.566101,48.379715],[-123.12,48.04],[-122.58736,47.096],[-122.34,47.36],[-122.5,48.18],[-122.84,49],[-120,49],[-117.03121,49],[-116.04818,49],[-113,49],[-110.05,49],[-107.05,49],[-104.04826,48.99986],[-100.65,49],[-97.22872,49.0007],[-95.15907,49],[-95.15609,49.38425],[-94.81758,49.38905]]],[[[-153.006314,57.115842],[-154.00509,56.734677],[-154.516403,56.992749],[-154.670993,57.461196],[-153.76278,57.816575],[-153.228729,57.968968],[-152.564791,57.901427],[-152.141147,57.591059],[-153.006314,57.115842]]],[[[-165.579164,59.909987],[-166.19277,59.754441],[-166.848337,59.941406],[-167.455277,60.213069],[-166.467792,60.38417],[-165.67443,60.293607],[-165.579164,59.909987]]],[[[-171.731657,63.782515],[-171.114434,63.592191],[-170.491112,63.694975],[-169.682505,63.431116],[-168.689439,63.297506],[-168.771941,63.188598],[-169.52944,62.976931],[-170.290556,63.194438],[-170.671386,63.375822],[-171.553063,63.317789],[-171.791111,63.405846],[-171.731657,63.782515]]],[[[-155.06779,71.147776],[-154.344165,70.696409],[-153.900006,70.889989],[-152.210006,70.829992],[-152.270002,70.600006],[-150.739992,70.430017],[-149.720003,70.53001],[-147.613362,70.214035],[-145.68999,70.12001],[-144.920011,69.989992],[-143.589446,70.152514],[-142.07251,69.851938],[-140.985988,69.711998],[-140.985988,69.711998],[-140.992499,66.000029],[-140.99777,60.306397],[-140.012998,60.276838],[-139.039,60.000007],[-138.34089,59.56211],[-137.4525,58.905],[-136.47972,59.46389],[-135.47583,59.78778],[-134.945,59.27056],[-134.27111,58.86111],[-133.355549,58.410285],[-132.73042,57.69289],[-131.70781,56.55212],[-130.00778,55.91583],[-129.979994,55.284998],[-130.53611,54.802753],[-131.085818,55.178906],[-131.967211,55.497776],[-132.250011,56.369996],[-133.539181,57.178887],[-134.078063,58.123068],[-135.038211,58.187715],[-136.628062,58.212209],[-137.800006,58.499995],[-139.867787,59.537762],[-140.825274,59.727517],[-142.574444,60.084447],[-143.958881,59.99918],[-145.925557,60.45861],[-147.114374,60.884656],[-148.224306,60.672989],[-148.018066,59.978329],[-148.570823,59.914173],[-149.727858,59.705658],[-150.608243,59.368211],[-151.716393,59.155821],[-151.859433,59.744984],[-151.409719,60.725803],[-150.346941,61.033588],[-150.621111,61.284425],[-151.895839,60.727198],[-152.57833,60.061657],[-154.019172,59.350279],[-153.287511,58.864728],[-154.232492,58.146374],[-155.307491,57.727795],[-156.308335,57.422774],[-156.556097,56.979985],[-158.117217,56.463608],[-158.433321,55.994154],[-159.603327,55.566686],[-160.28972,55.643581],[-161.223048,55.364735],[-162.237766,55.024187],[-163.069447,54.689737],[-164.785569,54.404173],[-164.942226,54.572225],[-163.84834,55.039431],[-162.870001,55.348043],[-161.804175,55.894986],[-160.563605,56.008055],[-160.07056,56.418055],[-158.684443,57.016675],[-158.461097,57.216921],[-157.72277,57.570001],[-157.550274,58.328326],[-157.041675,58.918885],[-158.194731,58.615802],[-158.517218,58.787781],[-159.058606,58.424186],[-159.711667,58.93139],[-159.981289,58.572549],[-160.355271,59.071123],[-161.355003,58.670838],[-161.968894,58.671665],[-162.054987,59.266925],[-161.874171,59.633621],[-162.518059,59.989724],[-163.818341,59.798056],[-164.662218,60.267484],[-165.346388,60.507496],[-165.350832,61.073895],[-166.121379,61.500019],[-165.734452,62.074997],[-164.919179,62.633076],[-164.562508,63.146378],[-163.753332,63.219449],[-163.067224,63.059459],[-162.260555,63.541936],[-161.53445,63.455817],[-160.772507,63.766108],[-160.958335,64.222799],[-161.518068,64.402788],[-160.777778,64.788604],[-161.391926,64.777235],[-162.45305,64.559445],[-162.757786,64.338605],[-163.546394,64.55916],[-164.96083,64.446945],[-166.425288,64.686672],[-166.845004,65.088896],[-168.11056,65.669997],[-166.705271,66.088318],[-164.47471,66.57666],[-163.652512,66.57666],[-163.788602,66.077207],[-161.677774,66.11612],[-162.489715,66.735565],[-163.719717,67.116395],[-164.430991,67.616338],[-165.390287,68.042772],[-166.764441,68.358877],[-166.204707,68.883031],[-164.430811,68.915535],[-163.168614,69.371115],[-162.930566,69.858062],[-161.908897,70.33333],[-160.934797,70.44769],[-159.039176,70.891642],[-158.119723,70.824721],[-156.580825,71.357764],[-155.06779,71.147776]]]]},"id":"USA"},
 {"type":"Feature","properties":{"name":"Uzbekistan"},"geometry":{"type":"Polygon","coordinates":[[[66.518607,37.362784],[66.54615,37.974685],[65.215999,38.402695],[64.170223,38.892407],[63.518015,39.363257],[62.37426,40.053886],[61.882714,41.084857],[61.547179,41.26637],[60.465953,41.220327],[60.083341,41.425146],[59.976422,42.223082],[58.629011,42.751551],[57.78653,42.170553],[56.932215,41.826026],[57.096391,41.32231],[55.968191,41.308642],[55.928917,44.995858],[58.503127,45.586804],[58.689989,45.500014],[60.239972,44.784037],[61.05832,44.405817],[62.0133,43.504477],[63.185787,43.650075],[64.900824,43.728081],[66.098012,42.99766],[66.023392,41.994646],[66.510649,41.987644],[66.714047,41.168444],[67.985856,41.135991],[68.259896,40.662325],[68.632483,40.668681],[69.070027,41.384244],[70.388965,42.081308],[70.962315,42.266154],[71.259248,42.167711],[70.420022,41.519998],[71.157859,41.143587],[71.870115,41.3929],[73.055417,40.866033],[71.774875,40.145844],[71.014198,40.244366],[70.601407,40.218527],[70.45816,40.496495],[70.666622,40.960213],[69.329495,40.727824],[69.011633,40.086158],[68.536416,39.533453],[67.701429,39.580478],[67.44222,39.140144],[68.176025,38.901553],[68.392033,38.157025],[67.83,37.144994],[67.075782,37.356144],[66.518607,37.362784]]]},"id":"UZB"},
 {"type":"Feature","properties":{"name":"Venezuela"},"geometry":{"type":"Polygon","coordinates":[[[-71.331584,11.776284],[-71.360006,11.539994],[-71.94705,11.423282],[-71.620868,10.96946],[-71.633064,10.446494],[-72.074174,9.865651],[-71.695644,9.072263],[-71.264559,9.137195],[-71.039999,9.859993],[-71.350084,10.211935],[-71.400623,10.968969],[-70.155299,11.375482],[-70.293843,11.846822],[-69.943245,12.162307],[-69.5843,11.459611],[-68.882999,11.443385],[-68.233271,10.885744],[-68.194127,10.554653],[-67.296249,10.545868],[-66.227864,10.648627],[-65.655238,10.200799],[-64.890452,10.077215],[-64.329479,10.389599],[-64.318007,10.641418],[-63.079322,10.701724],[-61.880946,10.715625],[-62.730119,10.420269],[-62.388512,9.948204],[-61.588767,9.873067],[-60.830597,9.38134],[-60.671252,8.580174],[-60.150096,8.602757],[-59.758285,8.367035],[-60.550588,7.779603],[-60.637973,7.415],[-60.295668,7.043911],[-60.543999,6.856584],[-61.159336,6.696077],[-61.139415,6.234297],[-61.410303,5.959068],[-60.733574,5.200277],[-60.601179,4.918098],[-60.966893,4.536468],[-62.08543,4.162124],[-62.804533,4.006965],[-63.093198,3.770571],[-63.888343,4.02053],[-64.628659,4.148481],[-64.816064,4.056445],[-64.368494,3.79721],[-64.408828,3.126786],[-64.269999,2.497006],[-63.422867,2.411068],[-63.368788,2.2009],[-64.083085,1.916369],[-64.199306,1.492855],[-64.611012,1.328731],[-65.354713,1.095282],[-65.548267,0.789254],[-66.325765,0.724452],[-66.876326,1.253361],[-67.181294,2.250638],[-67.447092,2.600281],[-67.809938,2.820655],[-67.303173,3.318454],[-67.337564,3.542342],[-67.621836,3.839482],[-67.823012,4.503937],[-67.744697,5.221129],[-67.521532,5.55687],[-67.34144,6.095468],[-67.695087,6.267318],[-68.265052,6.153268],[-68.985319,6.206805],[-69.38948,6.099861],[-70.093313,6.960376],[-70.674234,7.087785],[-71.960176,6.991615],[-72.198352,7.340431],[-72.444487,7.423785],[-72.479679,7.632506],[-72.360901,8.002638],[-72.439862,8.405275],[-72.660495,8.625288],[-72.78873,9.085027],[-73.304952,9.152],[-73.027604,9.73677],[-72.905286,10.450344],[-72.614658,10.821975],[-72.227575,11.108702],[-71.973922,11.608672],[-71.331584,11.776284]]]},"id":"VEN"},
 {"type":"Feature","properties":{"name":"Vietnam"},"geometry":{"type":"Polygon","coordinates":[[[108.05018,21.55238],[106.715068,20.696851],[105.881682,19.75205],[105.662006,19.058165],[106.426817,18.004121],[107.361954,16.697457],[108.269495,16.079742],[108.877107,15.276691],[109.33527,13.426028],[109.200136,11.666859],[108.36613,11.008321],[107.220929,10.364484],[106.405113,9.53084],[105.158264,8.59976],[104.795185,9.241038],[105.076202,9.918491],[104.334335,10.486544],[105.199915,10.88931],[106.24967,10.961812],[105.810524,11.567615],[107.491403,12.337206],[107.614548,13.535531],[107.382727,14.202441],[107.564525,15.202173],[107.312706,15.908538],[106.556008,16.604284],[105.925762,17.485315],[105.094598,18.666975],[103.896532,19.265181],[104.183388,19.624668],[104.822574,19.886642],[104.435,20.758733],[103.203861,20.766562],[102.754896,21.675137],[102.170436,22.464753],[102.706992,22.708795],[103.504515,22.703757],[104.476858,22.81915],[105.329209,23.352063],[105.811247,22.976892],[106.725403,22.794268],[106.567273,22.218205],[107.04342,21.811899],[108.05018,21.55238]]]},"id":"VNM"},
index 32cabf4..86ba0d5 100644 (file)
-Seq      = require 'seq'
-Backbone = require 'backbone'
+# Seq      = require 'seq'
+ColorBrewer = require 'colorbrewer'
 
-{ _, op,
-} = require 'kraken/util'
-{ BaseView, BaseModel, BaseList,
-} = require 'kraken/base'
-{ ChartType, DygraphsChartType,
-} = require 'kraken/chart'
-{ Graph, GraphList, GraphDisplayView,
-} = require 'kraken/graph'
-{ DashboardView,
-} = require 'kraken/dashboard'
+root = this
 
+root.data = null
 
+width = 960
+height = 500
 
-root = this
-CHART_OPTIONS_SPEC    = []
-CHART_DEFAULT_OPTIONS = {}
-
-
-# Create the Graph Scaffold
-main = ->
-    # Set up Dygraph chart type spec
-    # TODO: load this on-demand
-    dyglib = new DygraphsChartType CHART_OPTIONS_SPEC
-    
-    # _.dump _.clone(data.options), 'data.options'
-    
-    # Instantiate model & view
-    dashboard = root.dashboard = new DashboardView do
-        graph_spec : root.CHART_OPTIONS_SPEC # FIXME: necessary?
-    
-    $ '#content .inner' .append dashboard.el
-
-
-
-# Load data files
-Seq([   <[ CHART_OPTIONS_SPEC /schema/dygraph.json ]>
-])
-.parEach_ (next, [key, url]) ->
-    jQuery.ajax do
-        url : url,
-        dataType : 'json'
-        success : (res) ->
-            root[key] = res
-            next.ok()
-        error : (err) -> console.error err
-.seq ->
-    console.log 'All data loaded!'
-    jQuery main
 
+fill = d3.scale.log()
+    .domain [1, 10000]
+    .range ["black", "red"]
+
+quantize = (d) -> 
+    # console.log d.properties.name
+    if root.data[d.properties.name]?    
+        return fill root.data[d.properties.name]['editors']
+    else 
+        console.log 'Country '+d.properties.name+' not in data'
+        return fill "rgb(0,0,0)"
+
+
+move = -> 
+    # console.log d3.event
+    projection
+        .translate d3.event.translate 
+        .scale d3.event.scale              
+    feature.attr "d" path
+
+
+
+projection = d3.geo.mercator()
+    .scale width
+    .translate [width/2,height/2]
+
+path = d3.geo.path()
+    .projection projection
+
+zoom = d3.behavior.zoom()
+    .translate projection.translate()
+    .scale projection.scale()
+    .scaleExtent [height,height*8]
+    .on "zoom" move
+
+svg = d3.select ".inner"
+    .append "svg"
+        .attr "width" width
+        .attr "height" height
+    .append "g"
+        .attr "transform" "translate(0,0)"
+        .call zoom
+
+g = svg.append "g"
+
+feature = g.selectAll ".feature"
+
+svg.append "rect"
+    .attr "class" "frame"
+    .attr "width" width
+    .attr "height" height
+
+
+
+d3.json do
+    "/data/geo/maps/world-countries.json"
+    (json) -> 
+        root.feature = feature
+            .data json.features
+            .enter().append "path"
+                .attr "class" "feature"
+                .attr "d" path                
+                .attr do
+                    "fill" 
+                    (d) -> 
+                        # console.log path.area d
+                        fill "rgb(0,0,0)"
+                .on do 
+                    "mouseover" 
+                    (d) -> 
+                        console.log 'mouseover!'
+                        if root.data[d.properties.name]?    
+                            console.log root.data[d.properties.name]['editors']
+                        else 
+                            console.log 'Country '+d.properties.name+' not in data'
+                            
+
+
+
+d3.json do
+    "/data/geo/data/en_geo_editors.json"
+    (json) ->
+        root.data = json
+        console.log root.data   
+        console.log root.feature
+        root.feature.attr "fill" quantize
+        
+
+        
+console.log 'Loaded geo coding map!'
index aafe519..0d25d21 100755 (executable)
@@ -15,7 +15,7 @@ Seq      = require 'seq'
 yaml     = require 'js-yaml'
 mime     = require 'mime'
 express  = require 'express'
-Resource = require 'express-resource'
+# Resource = require 'express-resource'
 compiler = require 'connect-compiler-extras'
 
 op       = require '../util/op'
diff --git a/static/vendor/d3 b/static/vendor/d3
deleted file mode 120000 (symlink)
index a92620b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-d3-2.7.5
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/.gitignore b/static/vendor/d3-2.8.1/.gitignore
new file mode 100755 (executable)
index 0000000..8cc5a84
--- /dev/null
@@ -0,0 +1,3 @@
+_site
+node_modules
+.DS_Store
diff --git a/static/vendor/d3-2.8.1/.gitmodules b/static/vendor/d3-2.8.1/.gitmodules
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/static/vendor/d3-2.8.1/.npmignore b/static/vendor/d3-2.8.1/.npmignore
new file mode 100755 (executable)
index 0000000..146266d
--- /dev/null
@@ -0,0 +1,4 @@
+examples/
+test/
+lib/
+.DS_Store
diff --git a/static/vendor/d3-2.8.1/LICENSE b/static/vendor/d3-2.8.1/LICENSE
new file mode 100755 (executable)
index 0000000..cde4728
--- /dev/null
@@ -0,0 +1,26 @@
+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/static/vendor/d3-2.8.1/Makefile b/static/vendor/d3-2.8.1/Makefile
new file mode 100755 (executable)
index 0000000..bc96960
--- /dev/null
@@ -0,0 +1,239 @@
+# See the README for installation instructions.
+
+NODE_PATH ?= ./node_modules
+JS_COMPILER = $(NODE_PATH)/uglify-js/bin/uglifyjs
+JS_TESTER = $(NODE_PATH)/vows/bin/vows
+
+all: \
+       d3.v2.js \
+       d3.v2.min.js \
+       package.json
+
+# Modify this rule to build your own custom release.
+
+.INTERMEDIATE d3.v2.js: \
+       src/start.js \
+       d3.core.js \
+       d3.scale.js \
+       d3.svg.js \
+       d3.behavior.js \
+       d3.layout.js \
+       d3.csv.js \
+       d3.geo.js \
+       d3.geom.js \
+       d3.time.js \
+       src/end.js
+
+d3.core.js: \
+       src/compat/date.js \
+       src/compat/style.js \
+       src/core/core.js \
+       src/core/class.js \
+       src/core/array.js \
+       src/core/map.js \
+       src/core/this.js \
+       src/core/functor.js \
+       src/core/rebind.js \
+       src/core/ascending.js \
+       src/core/descending.js \
+       src/core/mean.js \
+       src/core/median.js \
+       src/core/min.js \
+       src/core/max.js \
+       src/core/extent.js \
+       src/core/random.js \
+       src/core/number.js \
+       src/core/sum.js \
+       src/core/quantile.js \
+       src/core/transpose.js \
+       src/core/zip.js \
+       src/core/bisect.js \
+       src/core/first.js \
+       src/core/last.js \
+       src/core/nest.js \
+       src/core/keys.js \
+       src/core/values.js \
+       src/core/entries.js \
+       src/core/permute.js \
+       src/core/merge.js \
+       src/core/split.js \
+       src/core/collapse.js \
+       src/core/range.js \
+       src/core/requote.js \
+       src/core/round.js \
+       src/core/xhr.js \
+       src/core/text.js \
+       src/core/json.js \
+       src/core/html.js \
+       src/core/xml.js \
+       src/core/ns.js \
+       src/core/dispatch.js \
+       src/core/format.js \
+       src/core/formatPrefix.js \
+       src/core/ease.js \
+       src/core/event.js \
+       src/core/interpolate.js \
+       src/core/uninterpolate.js \
+       src/core/rgb.js \
+       src/core/hsl.js \
+       src/core/selection.js \
+       src/core/selection-select.js \
+       src/core/selection-selectAll.js \
+       src/core/selection-attr.js \
+       src/core/selection-classed.js \
+       src/core/selection-style.js \
+       src/core/selection-property.js \
+       src/core/selection-text.js \
+       src/core/selection-html.js \
+       src/core/selection-append.js \
+       src/core/selection-insert.js \
+       src/core/selection-remove.js \
+       src/core/selection-data.js \
+       src/core/selection-datum.js \
+       src/core/selection-filter.js \
+       src/core/selection-order.js \
+       src/core/selection-sort.js \
+       src/core/selection-on.js \
+       src/core/selection-each.js \
+       src/core/selection-call.js \
+       src/core/selection-empty.js \
+       src/core/selection-node.js \
+       src/core/selection-transition.js \
+       src/core/selection-root.js \
+       src/core/selection-enter.js \
+       src/core/selection-enter-select.js \
+       src/core/transition.js \
+       src/core/transition-select.js \
+       src/core/transition-selectAll.js \
+       src/core/transition-attr.js \
+       src/core/transition-style.js \
+       src/core/transition-text.js \
+       src/core/transition-remove.js \
+       src/core/transition-delay.js \
+       src/core/transition-duration.js \
+       src/core/transition-each.js \
+       src/core/transition-transition.js \
+       src/core/timer.js \
+       src/core/transform.js \
+       src/core/mouse.js \
+       src/core/touches.js \
+       src/core/noop.js
+
+d3.scale.js: \
+       src/scale/scale.js \
+       src/scale/nice.js \
+       src/scale/linear.js \
+       src/scale/bilinear.js \
+       src/scale/polylinear.js \
+       src/scale/log.js \
+       src/scale/pow.js \
+       src/scale/sqrt.js \
+       src/scale/ordinal.js \
+       src/scale/category.js \
+       src/scale/quantile.js \
+       src/scale/quantize.js \
+       src/scale/identity.js
+
+d3.svg.js: \
+       src/svg/svg.js \
+       src/svg/arc.js \
+       src/svg/line.js \
+       src/svg/line-radial.js \
+       src/svg/area.js \
+       src/svg/area-radial.js \
+       src/svg/chord.js \
+       src/svg/diagonal.js \
+       src/svg/diagonal-radial.js \
+       src/svg/mouse.js \
+       src/svg/touches.js \
+       src/svg/symbol.js \
+       src/svg/axis.js \
+       src/svg/brush.js
+
+d3.behavior.js: \
+       src/behavior/behavior.js \
+       src/behavior/drag.js \
+       src/behavior/zoom.js
+
+d3.layout.js: \
+       src/layout/layout.js \
+       src/layout/bundle.js \
+       src/layout/chord.js \
+       src/layout/force.js \
+       src/layout/partition.js \
+       src/layout/pie.js \
+       src/layout/stack.js \
+       src/layout/histogram.js \
+       src/layout/hierarchy.js \
+       src/layout/pack.js \
+       src/layout/cluster.js \
+       src/layout/tree.js \
+       src/layout/treemap.js
+
+d3.geo.js: \
+       src/geo/geo.js \
+       src/geo/azimuthal.js \
+       src/geo/albers.js \
+       src/geo/bonne.js \
+       src/geo/equirectangular.js \
+       src/geo/mercator.js \
+       src/geo/type.js \
+       src/geo/path.js \
+       src/geo/bounds.js \
+       src/geo/circle.js \
+       src/geo/greatArc.js \
+       src/geo/greatCircle.js
+
+d3.csv.js: \
+       src/csv/csv.js \
+       src/csv/parse.js \
+       src/csv/format.js
+
+d3.time.js: \
+       src/time/time.js \
+       src/time/format.js \
+       src/time/format-utc.js \
+       src/time/format-iso.js \
+       src/time/interval.js \
+       src/time/second.js \
+       src/time/minute.js \
+       src/time/hour.js \
+       src/time/day.js \
+       src/time/week.js \
+       src/time/month.js \
+       src/time/year.js \
+       src/time/scale.js \
+       src/time/scale-utc.js
+
+d3.geom.js: \
+       src/geom/geom.js \
+       src/geom/contour.js \
+       src/geom/hull.js \
+       src/geom/polygon.js \
+       src/geom/voronoi.js \
+       src/geom/delaunay.js \
+       src/geom/quadtree.js
+
+test: all
+       @$(JS_TESTER)
+
+%.min.js: %.js Makefile
+       @rm -f $@
+       $(JS_COMPILER) < $< > $@
+
+d3%.js: Makefile
+       @rm -f $@
+       cat $(filter %.js,$^) > $@
+       @chmod a-w $@
+
+install:
+       mkdir -p node_modules
+       npm install
+
+package.json: d3.v2.js src/package.js
+       @rm -f $@
+       node src/package.js > $@
+       @chmod a-w $@
+
+clean:
+       rm -f d3*.js package.json
diff --git a/static/vendor/d3-2.8.1/README.md b/static/vendor/d3-2.8.1/README.md
new file mode 100755 (executable)
index 0000000..94cd51a
--- /dev/null
@@ -0,0 +1,51 @@
+# D3
+
+**D3** is a small, free JavaScript library for manipulating HTML documents
+based on data. D3 can help you quickly visualize your data as HTML or SVG,
+handle interactivity, and incorporate smooth transitions and staged animations
+into your pages. You can use D3 as a visualization framework (like Protovis),
+or you can use it to build dynamic pages (like jQuery).
+
+### Browser Support
+
+D3 should work on any browser, with minimal requirements such as JavaScript
+and the [W3C DOM](http://www.w3.org/DOM/) API. By default D3 requires the
+[Selectors API](http://www.w3.org/TR/selectors-api/) Level 1, but you can
+preload [Sizzle](http://sizzlejs.com/) for compatibility with older browsers.
+Some of the included D3 examples use additional browser features, such as
+[SVG](http://www.w3.org/TR/SVG/) and [CSS3
+Transitions](http://www.w3.org/TR/css3-transitions/). These features are not
+required to use D3, but are useful for visualization! D3 is not a
+compatibility layer. The examples should work on Firefox, Chrome (Chromium),
+Safari (WebKit), Opera and IE9.
+
+Note: Chrome has strict permissions for reading files out of the local file
+system. Some examples use AJAX which works differently via HTTP instead of local
+files. For the best experience, load the D3 examples from your own machine via
+HTTP. Any static file web server will work; for example you can run Python's
+built-in server:
+
+    python -m SimpleHTTPServer 8888
+
+Once this is running, go to: <http://localhost:8888/examples/>
+
+### Development Setup
+
+This repository should work out of the box if you just want to create new
+visualizations using D3. On the other hand, if you want to extend D3 with new
+features, fix bugs, or run tests, you'll need to install a few more things.
+
+D3's test framework uses [Vows](http://vowsjs.org), which depends on
+[Node.js](http://nodejs.org/) and [NPM](http://npmjs.org/). If you are
+developing on Mac OS X, an easy way to install Node and NPM is using
+[Homebrew](http://mxcl.github.com/homebrew/):
+
+    brew install node
+    brew install npm
+
+Next, from the root directory of this repository, install D3's dependencies:
+
+    make install
+
+You can see the list of dependencies in package.json. NPM will install the
+packages in the node_modules directory.
diff --git a/static/vendor/d3-2.8.1/d3.v2.js b/static/vendor/d3-2.8.1/d3.v2.js
new file mode 100755 (executable)
index 0000000..c1b6caf
--- /dev/null
@@ -0,0 +1,9342 @@
+(function(){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.8.1"}; // semver
+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;
+  }
+}
+var d3_array = d3_arraySlice; // conversion for NodeLists
+
+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(document.documentElement.childNodes)[0].nodeType;
+} catch(e) {
+  d3_array = d3_arrayCopy;
+}
+
+var d3_arraySubclass = [].__proto__?
+
+// Until ECMAScript supports array subclassing, prototype injection works well.
+function(array, prototype) {
+  array.__proto__ = prototype;
+}:
+
+// And if your browser doesn't support __proto__, we'll use direct extension.
+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;
+};
+
+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", // prevent collision with built-ins
+    d3_map_prefixCode = d3_map_prefix.charCodeAt(0);
+function d3_this() {
+  return this;
+}
+d3.functor = function(v) {
+  return typeof v === "function" ? v : function() { return v; };
+};
+// Copies a variable number of methods from source to target.
+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;
+};
+
+// Method is assumed to be a standard D3 getter-setter:
+// If passed with no arguments, gets the value.
+// If passed with arguments, sets the value and returns the target.
+function d3_rebind(target, source, method) {
+  return function() {
+    var value = method.apply(source, arguments);
+    return arguments.length ? target : value;
+  };
+}
+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(mean, deviation) {
+    if (arguments.length < 2) deviation = 1;
+    if (arguments.length < 1) mean = 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 mean + deviation * x * Math.sqrt(-2 * Math.log(r) / r);
+    };
+  }
+};
+function d3_number(x) {
+  return x != null && !isNaN(x);
+}
+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;
+};
+// R-7 per <http://en.wikipedia.org/wiki/Quantile>
+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;
+};
+
+function d3_zipLength(d) {
+  return d.length;
+}
+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() {
+  var nest = {},
+      keys = [],
+      sortKeys = [],
+      sortValues,
+      rollup;
+
+  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) {
+      o[keyValue] = map(valuesByKey.get(keyValue), 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;
+  }
+
+  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;
+  };
+
+  // Specifies the order for the most-recently specified key.
+  // Note: only applies to entries. Map keys are unordered!
+  nest.sortKeys = function(order) {
+    sortKeys[keys.length - 1] = order;
+    return nest;
+  };
+
+  // Specifies the order for leaf values.
+  // Applies to both maps and entries array.
+  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;
+};
+
+function d3_splitter(d) {
+  return d == null;
+}
+function d3_collapse(s) {
+  return s.replace(/(^\s+)|(\s+$)/g, "").replace(/\s+/g, " ");
+}
+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;
+}
+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) callback(req.status < 300 ? 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) { // Treat empty string as valid HTML.
+      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;
+};
+
+function d3_dispatch() {}
+
+d3_dispatch.prototype.on = function(type, listener) {
+  var i = type.indexOf("."),
+      name = "";
+
+  // Extract optional namespace, e.g., "click.foo"
+  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);
+};
+
+function d3_dispatch_event(dispatch) {
+  var listeners = [],
+      listenerByName = new d3_Map;
+
+  function event() {
+    var z = listeners, // defensive reference
+        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;
+
+    // return the current listener, if any
+    if (arguments.length < 2) return l && l.on;
+
+    // remove the old listener, if any (with copy-on-write)
+    if (l) {
+      l.on = null;
+      listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
+      listenerByName.remove(name);
+    }
+
+    // add the new listener, if any
+    if (listener) listeners.push(listenerByName.set(name, {on: listener}));
+
+    return dispatch;
+  };
+
+  return event;
+}
+// TODO align
+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"; // TODO 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 "d": integer = true; precision = 0; break;
+    case "s": scale = -1; type = "r"; break;
+  }
+
+  // If no precision is specified for r, fallback to general notation.
+  if (type == "r" && !precision) type = "g";
+
+  type = d3_format_types.get(type) || d3_format_typeDefault;
+
+  return function(value) {
+
+    // Return the empty string for floats formatted as ints.
+    if (integer && (value % 1)) return "";
+
+    // Convert negative to positive, and record the sign prefix.
+    var negative = (value < 0) && (value = -value) ? "\u2212" : sign;
+
+    // Apply the scale, computing it from the value's exponent for si format.
+    if (scale < 0) {
+      var prefix = d3.formatPrefix(value, precision);
+      value *= prefix.scale;
+      suffix = prefix.symbol;
+    } else {
+      value *= scale;
+    }
+
+    // Convert to the desired precision.
+    value = type(value, precision);
+
+    // If the fill character is 0, the sign and group is applied after the fill.
+    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;
+    }
+
+    // Otherwise (e.g., space-filling), the sign and group is applied before.
+    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;
+  };
+};
+
+// [[fill]align][sign][#][0][width][,][.precision][type]
+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))); }
+});
+
+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 + "";
+}
+
+// Apply comma grouping for thousands.
+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;
+}
+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) {
+  return {
+    scale: Math.pow(10, (8 - i) * 3),
+    symbol: d
+  };
+}
+
+/*
+ * TERMS OF USE - EASING EQUATIONS
+ *
+ * Open source under the BSD License.
+ *
+ * Copyright 2001 Robert Penner
+ * 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.
+ *
+ * - Neither the name of the author nor the names of contributors may 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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
+ */
+
+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))));
+};
+
+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 = 0.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;
+}
+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;
+}
+
+// Like d3.dispatch, but for custom events abstracting native UI events. These
+// events have a target component (such as a brush), a target element (such as
+// the svg:g element containing the brush) and the standard arguments `d` (the
+// target element's data) and `i` (the selection index of the target element).
+function d3_eventDispatch(target) {
+  var dispatch = new d3_dispatch,
+      i = 0,
+      n = arguments.length;
+
+  while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
+
+  // Creates a dispatch context for the specified `thiz` (typically, the target
+  // DOM element that received the source event) and `argumentz` (typically, the
+  // data `d` and index `i` of the target element). The returned function can be
+  // used to dispatch an event to any registered listeners; the function takes a
+  // single argument as input, being the event to dispatch. The event must have
+  // a "type" attribute which corresponds to a type registered in the
+  // constructor. This context will automatically populate the "sourceEvent" and
+  // "target" attributes of the event, as well as setting the `d3.event` global
+  // for the duration of the notification.
+  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.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, // current match
+      i, // current index
+      j, // current index (for coallescing)
+      s0 = 0, // start index of current string prefix
+      s1 = 0, // end index of current string prefix
+      s = [], // string constants and placeholders
+      q = [], // number interpolators
+      n, // q.length
+      o;
+
+  // Reset our regular expression!
+  d3_interpolate_number.lastIndex = 0;
+
+  // Find all numbers in b.
+  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));
+
+  // Find all numbers in a.
+  for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) {
+    o = q[i];
+    if (o.x == m[0]) { // The numbers match, so coallesce.
+      if (o.i) {
+        if (s[o.i + 1] == null) { // This match is followed by another number.
+          s[o.i - 1] += o.x;
+          s.splice(o.i, 1);
+          for (j = i + 1; j < n; ++j) q[j].i--;
+        } else { // This match is followed by a string, so coallesce twice.
+          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) { // This match is followed by another number.
+          s[o.i] = o.x;
+        } else { // This match is followed by a string, so coallesce twice.
+          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));
+    }
+  }
+
+  // Remove any numbers in b not found in a.
+  while (i < n) {
+    o = q.pop();
+    if (s[o.i + 1] == null) { // This match is followed by another number.
+      s[o.i] = o.x;
+    } else { // This match is followed by a string, so coallesce twice.
+      s[o.i] = o.x + s[o.i + 1];
+      s.splice(o.i + 1, 1);
+    }
+    n--;
+  }
+
+  // Special optimization for only a single match.
+  if (s.length === 1) {
+    return s[0] == null ? q[0].x : function() { return b; };
+  }
+
+  // Otherwise, interpolate each of the numbers and rejoin the string.
+  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 = [], // string constants and placeholders
+      q = [], // number interpolators
+      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) {
+    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));
+  };
+};
+
+// interpolates HSL space, but outputs RGB string (for compatibility)
+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;
+  return function(t) {
+    return d3_hsl_rgb(h0 + h1 * t, s0 + s1 * t, l0 + l1 * t).toString();
+  };
+};
+
+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+)(?:[eE][-+]?\d+)?/g;
+
+function d3_interpolateByName(n) {
+  return n == "transform"
+      ? d3.interpolateTransform
+      : d3.interpolate;
+}
+
+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); }
+];
+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.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;
+}
+
+d3_Rgb.prototype.brighter = function(k) {
+  k = Math.pow(0.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(0.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);
+};
+
+function d3_rgb_hex(v) {
+  return v < 0x10
+      ? "0" + Math.max(0, v).toString(16)
+      : Math.min(255, v).toString(16);
+}
+
+function d3_rgb_parse(format, rgb, hsl) {
+  var r = 0, // red channel; int in [0, 255]
+      g = 0, // green channel; int in [0, 255]
+      b = 0, // blue channel; int in [0, 255]
+      m1, // CSS color specification match
+      m2, // CSS color specification type (e.g., rgb)
+      name;
+
+  /* Handle hsl, rgb. */
+  m1 = /([a-z]+)\((.*)\)/i.exec(format);
+  if (m1) {
+    m2 = m1[2].split(",");
+    switch (m1[1]) {
+      case "hsl": {
+        return hsl(
+          parseFloat(m2[0]), // degrees
+          parseFloat(m2[1]) / 100, // percentage
+          parseFloat(m2[2]) / 100 // percentage
+        );
+      }
+      case "rgb": {
+        return rgb(
+          d3_rgb_parseNumber(m2[0]),
+          d3_rgb_parseNumber(m2[1]),
+          d3_rgb_parseNumber(m2[2])
+        );
+      }
+    }
+  }
+
+  /* Named colors. */
+  if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b);
+
+  /* Hexadecimal colors: #rgb and #rrggbb. */
+  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_parseNumber(c) { // either integer or percentage
+  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));
+});
+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;
+}
+
+d3_Hsl.prototype.brighter = function(k) {
+  k = Math.pow(0.7, arguments.length ? k : 1);
+  return d3_hsl(this.h, this.s, this.l / k);
+};
+
+d3_Hsl.prototype.darker = function(k) {
+  k = Math.pow(0.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();
+};
+
+function d3_hsl_rgb(h, s, l) {
+  var m1,
+      m2;
+
+  /* Some simple corrections for h, s and l. */
+  h = h % 360; if (h < 0) h += 360;
+  s = s < 0 ? 0 : s > 1 ? 1 : s;
+  l = l < 0 ? 0 : l > 1 ? 1 : l;
+
+  /* From FvD 13.37, CSS Color Module Level 3 */
+  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));
+}
+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 = 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); };
+
+// Prefer Sizzle, if available.
+if (typeof Sizzle === "function") {
+  d3_select = function(s, n) { return Sizzle(s, n)[0]; };
+  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);
+  };
+}
+d3_selectionPrototype.attr = function(name, value) {
+  name = d3.ns.qualify(name);
+
+  // If no value is specified, return the first value.
+  if (arguments.length < 2) {
+    var node = this.node();
+    return name.local
+        ? node.getAttributeNS(name.space, name.local)
+        : node.getAttribute(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 this.each(value == null
+      ? (name.local ? attrNullNS : attrNull) : (typeof value === "function"
+      ? (name.local ? attrFunctionNS : attrFunction)
+      : (name.local ? attrConstantNS : attrConstant)));
+};
+d3_selectionPrototype.classed = function(name, value) {
+  var names = name.split(d3_selection_classedWhitespace),
+      n = names.length,
+      i = -1;
+  if (arguments.length > 1) {
+    while (++i < n) d3_selection_classed.call(this, names[i], value);
+    return this;
+  } else {
+    while (++i < n) if (!d3_selection_classed.call(this, names[i])) return false;
+    return true;
+  }
+};
+
+var d3_selection_classedWhitespace = /\s+/g;
+
+function d3_selection_classed(name, value) {
+  var re = new RegExp("(^|\\s+)" + d3.requote(name) + "(\\s+|$)", "g");
+
+  // If no value is specified, return the first value.
+  if (arguments.length < 2) {
+    var node = this.node();
+    if (c = node.classList) return c.contains(name);
+    var c = node.className;
+    re.lastIndex = 0;
+    return re.test(c.baseVal != null ? c.baseVal : c);
+  }
+
+  function classedAdd() {
+    if (c = this.classList) return c.add(name);
+    var c = this.className,
+        cb = c.baseVal != null,
+        cv = cb ? c.baseVal : c;
+    re.lastIndex = 0;
+    if (!re.test(cv)) {
+      cv = d3_collapse(cv + " " + name);
+      if (cb) c.baseVal = cv;
+      else this.className = cv;
+    }
+  }
+
+  function classedRemove() {
+    if (c = this.classList) return c.remove(name);
+    var c = this.className,
+        cb = c.baseVal != null,
+        cv = cb ? c.baseVal : c;
+    cv = d3_collapse(cv.replace(re, " "));
+    if (cb) c.baseVal = cv;
+    else this.className = cv;
+  }
+
+  function classedFunction() {
+    (value.apply(this, arguments)
+        ? classedAdd
+        : classedRemove).call(this);
+  }
+
+  return this.each(typeof value === "function"
+      ? classedFunction : value
+      ? classedAdd
+      : classedRemove);
+}
+d3_selectionPrototype.style = function(name, value, priority) {
+  if (arguments.length < 3) priority = "";
+
+  // If no value is specified, return the first value.
+  if (arguments.length < 2) return window
+      .getComputedStyle(this.node(), null)
+      .getPropertyValue(name);
+
+  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 this.each(value == null
+      ? styleNull : (typeof value === "function"
+      ? styleFunction : styleConstant));
+};
+d3_selectionPrototype.property = function(name, value) {
+
+  // If no value is specified, return the first value.
+  if (arguments.length < 2) return this.node()[name];
+
+  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 this.each(value == null
+      ? propertyNull : (typeof value === "function"
+      ? propertyFunction : propertyConstant));
+};
+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; });
+};
+// TODO append(node)?
+// TODO append(function)?
+d3_selectionPrototype.append = function(name) {
+  name = d3.ns.qualify(name);
+
+  function append() {
+    return this.appendChild(document.createElementNS(this.namespaceURI, name));
+  }
+
+  function appendNS() {
+    return this.appendChild(document.createElementNS(name.space, name.local));
+  }
+
+  return this.select(name.local ? appendNS : append);
+};
+// TODO insert(node, function)?
+// TODO insert(function, string)?
+// TODO insert(function, function)?
+d3_selectionPrototype.insert = function(name, before) {
+  name = d3.ns.qualify(name);
+
+  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));
+  }
+
+  return this.select(name.local ? insertNS : insert);
+};
+// TODO remove(selector)?
+// TODO remove(node)?
+// TODO remove(function)?
+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 no value is specified, return the first value.
+  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),
+        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; // duplicate key
+        } 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 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 =
+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);
+};
+
+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 comparator(a && a.__data__, b && b.__data__);
+  };
+}
+// type can be namespaced, e.g., "click.foo"
+// listener can be null for removal
+d3_selectionPrototype.on = function(type, listener, capture) {
+  if (arguments.length < 3) capture = false;
+
+  // parse the type specifier
+  var name = "__on" + type, i = type.indexOf(".");
+  if (i > 0) type = type.substring(0, i);
+
+  // if called with only one argument, return the current listener
+  if (arguments.length < 2) return (i = this.node()[name]) && i._;
+
+  // remove the old event listener, and add the new event listener
+  return this.each(function(d, i) {
+    var node = this,
+        o = node[name];
+
+    // remove the old listener, if any (using the previously-set capture)
+    if (o) {
+      node.removeEventListener(type, o, o.$);
+      delete node[name];
+    }
+
+    // add the new listener, if any (remembering the capture flag)
+    if (listener) {
+      node.addEventListener(type, node[name] = l, l.$ = capture);
+      l._ = listener; // stash the unwrapped listener for get
+    }
+
+    // wrapped event listener that preserves i
+    function l(e) {
+      var o = d3.event; // Events can be reentrant (e.g., focus).
+      d3.event = e;
+      try {
+        listener.call(node, node.__data__, i);
+      } finally {
+        d3.event = o;
+      }
+    }
+  });
+};
+d3_selectionPrototype.each = function(callback) {
+  for (var j = -1, m = this.length; ++j < m;) {
+    for (var group = this[j], i = -1, n = group.length; ++i < n;) {
+      var node = group[i];
+      if (node) callback.call(node, node.__data__, i, j);
+    }
+  }
+  return this;
+};
+//
+// Note: assigning to the arguments array simultaneously changes the value of
+// the corresponding argument!
+//
+// TODO The `this` argument probably shouldn't be the first argument to the
+// callback, anyway, since it's redundant. However, that will require a major
+// version bump due to backwards compatibility, so I'm not changing it right
+// away.
+//
+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;
+
+// TODO fast singleton implementation!
+// TODO select(function)
+d3.select = function(selector) {
+  return typeof selector === "string"
+      ? d3_selectionRoot.select(selector)
+      : d3_selection([[selector]]); // assume node
+};
+
+// TODO selectAll(function)
+d3.selectAll = function(selector) {
+  return typeof selector === "string"
+      ? d3_selectionRoot.selectAll(selector)
+      : d3_selection([d3_array(selector)]); // assume node[]
+};
+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);
+};
+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) {
+    groups.each(function(d, i, j) {
+      var tweened = [],
+          node = this,
+          delay = groups[j][i].delay,
+          duration = groups[j][i].duration,
+          lock = node.__transition__ || (node.__transition__ = {active: 0, count: 0});
+
+      ++lock.count;
+
+      delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time);
+
+      function start(elapsed) {
+        if (lock.active > id) return stop();
+        lock.active = id;
+
+        tweens.forEach(function(key, value) {
+          if (tween = value.call(node, d, i)) {
+            tweened.push(tween);
+          }
+        });
+
+        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;
+      }
+    });
+    return 1;
+  }, 0, time);
+
+  return groups;
+}
+
+var d3_transitionRemove = {};
+
+function d3_transitionNull(d, i, a) {
+  return a != "" && d3_transitionRemove;
+}
+
+function d3_transitionTween(name, b) {
+  var interpolate = d3_interpolateByName(name);
+
+  function transitionFunction(d, i, a) {
+    var v = b.call(this, d, i);
+    return v == null
+        ? a != "" && d3_transitionRemove
+        : a != v && interpolate(a, v);
+  }
+
+  function transitionString(d, i, a) {
+    return a != b && interpolate(a, b);
+  }
+
+  return typeof b === "function" ? transitionFunction
+      : b == null ? d3_transitionNull
+      : (b += "", transitionString);
+}
+
+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.attr = function(name, value) {
+  return this.attrTween(name, d3_transitionTween(name, value));
+};
+
+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 === d3_transitionRemove
+        ? (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_transitionRemove
+        ? (this.removeAttributeNS(name.space, name.local), null)
+        : 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) {
+  if (arguments.length < 3) priority = "";
+  return this.styleTween(name, d3_transitionTween(name, value), 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_transitionRemove
+        ? (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) {
+  var groups = this;
+  return groups.each(typeof value === "function"
+      ? function(d, i, j) { groups[j][i].delay = value.apply(this, arguments) | 0; }
+      : (value = value | 0, function(d, i, j) { groups[j][i].delay = value; }));
+};
+d3_transitionPrototype.duration = function(value) {
+  var groups = this;
+  return groups.each(typeof value === "function"
+      ? function(d, i, j) { groups[j][i].duration = Math.max(1, value.apply(this, arguments) | 0); }
+      : (value = Math.max(1, value | 0), function(d, i, j) { groups[j][i].duration = value; }));
+};
+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();
+  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) {
+        d3_transitionDelay = this[j][i].delay;
+        d3_transitionDuration = this[j][i].duration;
+        callback.call(node = node.node, node.__data__, i, j);
+      }
+    }
+  }
+
+  d3_transitionId = id;
+  d3_transitionEase = ease;
+  d3_transitionDelay = delay;
+  d3_transitionDuration = duration;
+  return this;
+}
+d3_transitionPrototype.transition = function() {
+  return this.select(d3_this);
+};
+var d3_timer_queue = null,
+    d3_timer_interval, // is an interval (or frame) active?
+    d3_timer_timeout; // is a timeout active?
+
+// The timer will continue to fire until callback returns true.
+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();
+  }
+
+  // See if the callback's already in the queue.
+  while (t1) {
+    if (t1.callback === callback) {
+      t1.then = then;
+      t1.delay = delay;
+      found = true;
+      break;
+    }
+    t0 = t1;
+    t1 = t1.next;
+  }
+
+  // Otherwise, add the callback to the queue.
+  if (!found) d3_timer_queue = {
+    callback: callback,
+    then: then,
+    delay: delay,
+    next: d3_timer_queue
+  };
+
+  // Start animatin'!
+  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();
+};
+
+// Flush after callbacks, to avoid concurrent queue modification.
+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;
+}
+
+var d3_timer_frame = window.requestAnimationFrame
+    || window.webkitRequestAnimationFrame
+    || window.mozRequestAnimationFrame
+    || window.oRequestAnimationFrame
+    || window.msRequestAnimationFrame
+    || function(callback) { setTimeout(callback, 17); };
+d3.transform = function(string) {
+  var g = document.createElementNS(d3.ns.prefix.svg, "g"),
+      identity = {a: 1, b: 0, c: 0, d: 1, e: 0, f: 0};
+  return (d3.transform = function(string) {
+    g.setAttribute("transform", string);
+    var t = g.transform.baseVal.consolidate();
+    return new d3_transform(t ? t.matrix : identity);
+  })(string);
+};
+
+// Compute x-scale and normalize the first row.
+// Compute shear and make second row orthogonal to first.
+// Compute y-scale and normalize the second row.
+// Finally, compute the rotation.
+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;
+};
+
+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_transformDegrees = 180 / Math.PI;
+d3.mouse = function(container) {
+  return d3_mousePoint(container, d3_eventSource());
+};
+
+// https://bugs.webkit.org/show_bug.cgi?id=44083
+var d3_mouse_bug44083 = /WebKit/.test(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) && (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];
+};
+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;
+  }) : [];
+};
+function d3_noop() {}
+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_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 (dx = x1 - x0) {
+    nice = nice(dx);
+    domain[i0] = nice.floor(x0);
+    domain[i1] = nice.ceil(x1);
+  }
+
+  return domain;
+}
+
+function d3_scale_niceDefault() {
+  return Math;
+}
+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);
+  }
+
+  // Note: requires range is coercible to number!
+  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 {
+    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;
+
+  // Filter ticks to get closer to the desired count.
+  if (err <= .15) step *= 10;
+  else if (err <= .35) step *= 5;
+  else if (err <= .75) step *= 2;
+
+  // Round start and stop values to step interval.
+  extent[0] = Math.ceil(extent[0] / step) * step;
+  extent[1] = Math.floor(extent[1] / step) * step + step * .5; // inclusive
+  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;
+
+  // Handle descending domains.
+  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.log = function() {
+  return d3_scale_log(d3.scale.linear(), d3_scale_logp);
+};
+
+function d3_scale_log(linear, log) {
+  var pow = 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);
+    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++) {} // strip small values
+      for (j = ticks.length; ticks[j - 1] > v; j--) {} // strip big values
+      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 = 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);
+}
+
+var d3_scale_logFormat = d3.format(".0e");
+
+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;
+}
+
+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);
+};
+
+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) {
+    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);
+  };
+}
+d3.scale.sqrt = function() {
+  return d3.scale.pow().exponent(.5);
+};
+d3.scale.ordinal = function() {
+  return d3_scale_ordinal([], {t: "range", x: []});
+};
+
+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](ranger.x, ranger.p);
+  };
+
+  scale.range = function(x) {
+    if (!arguments.length) return range;
+    range = x;
+    rangeBand = 0;
+    ranger = {t: "range", x: x};
+    return scale;
+  };
+
+  scale.rangePoints = function(x, padding) {
+    if (arguments.length < 2) padding = 0;
+    var start = x[0],
+        stop = x[1],
+        step = (stop - start) / (domain.length - 1 + padding);
+    range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step);
+    rangeBand = 0;
+    ranger = {t: "rangePoints", x: x, p: padding};
+    return scale;
+  };
+
+  scale.rangeBands = function(x, padding) {
+    if (arguments.length < 2) padding = 0;
+    var reverse = x[1] < x[0],
+        start = x[reverse - 0],
+        stop = x[1 - reverse],
+        step = (stop - start) / (domain.length + padding);
+    range = steps(start + step * padding, step);
+    if (reverse) range.reverse();
+    rangeBand = step * (1 - padding);
+    ranger = {t: "rangeBands", x: x, p: padding};
+    return scale;
+  };
+
+  scale.rangeRoundBands = function(x, padding) {
+    if (arguments.length < 2) padding = 0;
+    var reverse = x[1] < x[0],
+        start = x[reverse - 0],
+        stop = x[1 - reverse],
+        step = Math.floor((stop - start) / (domain.length + padding)),
+        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", x: x, p: padding};
+    return scale;
+  };
+
+  scale.rangeBand = function() {
+    return rangeBand;
+  };
+
+  scale.rangeExtent = function() {
+    return d3_scaleExtent(ranger.x);
+  };
+
+  scale.copy = function() {
+    return d3_scale_ordinal(domain, ranger);
+  };
+
+  return scale.domain(domain);
+}
+/*
+ * This product includes color specifications and designs developed by Cynthia
+ * Brewer (http://colorbrewer.org/). See lib/colorbrewer for more information.
+ */
+
+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,
+        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)];
+  }
+
+  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); // copy on write!
+  };
+
+  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); // copy on write
+  };
+
+  return rescale();
+}
+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) {
+    return d3_scale_linearTickFormat(domain, m);
+  };
+
+  identity.copy = function() {
+    return d3_scale_identity(domain);
+  };
+
+  return identity;
+}
+d3.svg = {};
+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 < 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");
+  }
+
+  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;
+
+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) {
+  var x = d3_svg_lineX,
+      y = d3_svg_lineY,
+      interpolate = d3_svg_lineInterpolatorDefault,
+      interpolator = d3_svg_lineInterpolators.get(interpolate),
+      tension = .7;
+
+  function line(d) {
+    return d.length < 1 ? null : "M" + interpolator(projection(d3_svg_linePoints(this, d, x, y)), tension);
+  }
+
+  line.x = function(v) {
+    if (!arguments.length) return x;
+    x = v;
+    return line;
+  };
+
+  line.y = function(v) {
+    if (!arguments.length) return y;
+    y = v;
+    return line;
+  };
+
+  line.interpolate = function(v) {
+    if (!arguments.length) return interpolate;
+    if (!d3_svg_lineInterpolators.has(v += "")) v = d3_svg_lineInterpolatorDefault;
+    interpolator = d3_svg_lineInterpolators.get(interpolate = v);
+    return line;
+  };
+
+  line.tension = function(v) {
+    if (!arguments.length) return tension;
+    tension = v;
+    return line;
+  };
+
+  return line;
+}
+
+d3.svg.line = function() {
+  return d3_svg_line(Object);
+};
+
+// Converts the specified array of data into an array of points
+// (x-y tuples), by evaluating the specified `x` and `y` functions on each
+// data point. The `this` context of the evaluated functions is the specified
+// "self" object; each function is passed the current datum and index.
+function d3_svg_linePoints(self, d, x, y) {
+  var points = [],
+      i = -1,
+      n = d.length,
+      fx = typeof x === "function",
+      fy = typeof y === "function",
+      value;
+  if (fx && fy) {
+    while (++i < n) points.push([
+      x.call(self, value = d[i], i),
+      y.call(self, value, i)
+    ]);
+  } else if (fx) {
+    while (++i < n) points.push([x.call(self, d[i], i), y]);
+  } else if (fy) {
+    while (++i < n) points.push([x, y.call(self, d[i], i)]);
+  } else {
+    while (++i < n) points.push([x, y]);
+  }
+  return points;
+}
+
+// The default `x` property, which references d[0].
+function d3_svg_lineX(d) {
+  return d[0];
+}
+
+// The default `y` property, which references d[1].
+function d3_svg_lineY(d) {
+  return d[1];
+}
+
+var d3_svg_lineInterpolatorDefault = "linear";
+
+// The various interpolators supported by the `line` class.
+var d3_svg_lineInterpolators = d3.map({
+  "linear": d3_svg_lineLinear,
+  "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
+});
+
+// Linear interpolation; generates "L" commands.
+function d3_svg_lineLinear(points) {
+  var i = 0,
+      n = points.length,
+      p = points[0],
+      path = [p[0], ",", p[1]];
+  while (++i < n) path.push("L", (p = points[i])[0], ",", p[1]);
+  return path.join("");
+}
+
+// Step interpolation; generates "H" and "V" commands.
+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("");
+}
+
+// Step interpolation; generates "H" and "V" commands.
+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("");
+}
+
+// Open cardinal spline interpolation; generates "C" commands.
+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));
+}
+
+// Closed cardinal spline interpolation; generates "C" commands.
+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));
+}
+
+// Cardinal spline interpolation; generates "C" commands.
+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));
+}
+
+// Hermite spline construction; generates "C" commands.
+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;
+}
+
+// Generates tangents for a cardinal spline.
+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;
+}
+
+// B-spline interpolation; generates "C" commands.
+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("");
+}
+
+// Open B-spline interpolation; generates "C" commands.
+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("");
+}
+
+// Closed B-spline interpolation; generates "C" commands.
+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,
+      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);
+}
+
+// Returns the dot product of the given four-element vectors.
+function d3_svg_lineDot4(a, b) {
+  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
+}
+
+// Matrix to transform basis (b-spline) control points to bezier
+// control points. Derived from FvD 11.2.8.
+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];
+
+// Pushes a "C" Bézier curve onto the specified path array, given the
+// two specified four-element arrays which define the control points.
+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));
+}
+
+// Computes the slope from points p0 to p1.
+function d3_svg_lineSlope(p0, p1) {
+  return (p1[1] - p0[1]) / (p1[0] - p0[0]);
+}
+
+// Compute three-point differences for the given points.
+// http://en.wikipedia.org/wiki/Cubic_Hermite_spline#Finite_difference
+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]));
+  }
+  m[i] = d;
+  return m;
+}
+
+// Interpolates the given points using Fritsch-Carlson Monotone cubic Hermite
+// interpolation. Returns an array of tangent vectors. For details, see
+// http://en.wikipedia.org/wiki/Monotone_cubic_interpolation
+function d3_svg_lineMonotoneTangents(points) {
+  var tangents = [],
+      d,
+      a,
+      b,
+      s,
+      m = d3_svg_lineFiniteDifferences(points),
+      i = -1,
+      j = points.length - 1;
+
+  // The first two steps are done by computing finite-differences:
+  // 1. Compute the slopes of the secant lines between successive points.
+  // 2. Initialize the tangents at every point as the average of the secants.
+
+  // Then, for each segment…
+  while (++i < j) {
+    d = d3_svg_lineSlope(points[i], points[i + 1]);
+
+    // 3. If two successive yk = y{k + 1} are equal (i.e., d is zero), then set
+    // mk = m{k + 1} = 0 as the spline connecting these points must be flat to
+    // preserve monotonicity. Ignore step 4 and 5 for those k.
+
+    if (Math.abs(d) < 1e-6) {
+      m[i] = m[i + 1] = 0;
+    } else {
+      // 4. Let ak = mk / dk and bk = m{k + 1} / dk.
+      a = m[i] / d;
+      b = m[i + 1] / d;
+
+      // 5. Prevent overshoot and ensure monotonicity by restricting the
+      // magnitude of vector <ak, bk> to a circle of radius 3.
+      s = a * a + b * b;
+      if (s > 9) {
+        s = d * 3 / Math.sqrt(s);
+        m[i] = s * a;
+        m[i + 1] = s * b;
+      }
+    }
+  }
+
+  // Compute the normalized tangent vector from the slopes. Note that if x is
+  // not monotonic, it's possible that the slope will be infinite, so we protect
+  // against NaN by setting the coordinate to zero.
+  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.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,
+      interpolate,
+      i0,
+      i1,
+      tension = .7;
+
+  function area(d) {
+    if (d.length < 1) return null;
+    var points0 = d3_svg_linePoints(this, d, x0, y0),
+        points1 = d3_svg_linePoints(this, d, x0 === x1 ? d3_svg_areaX(points0) : x1, y0 === y1 ? d3_svg_areaY(points0) : y1);
+    return "M" + i0(projection(points1), tension)
+         + "L" + i1(projection(points0.reverse()), tension)
+         + "Z";
+  }
+
+  area.x = function(x) {
+    if (!arguments.length) return x1;
+    x0 = x1 = x;
+    return area;
+  };
+
+  area.x0 = function(x) {
+    if (!arguments.length) return x0;
+    x0 = x;
+    return area;
+  };
+
+  area.x1 = function(x) {
+    if (!arguments.length) return x1;
+    x1 = x;
+    return area;
+  };
+
+  area.y = function(y) {
+    if (!arguments.length) return y1;
+    y0 = y1 = y;
+    return area;
+  };
+
+  area.y0 = function(y) {
+    if (!arguments.length) return y0;
+    y0 = y;
+    return area;
+  };
+
+  area.y1 = function(y) {
+    if (!arguments.length) return y1;
+    y1 = y;
+    return area;
+  };
+
+  area.interpolate = function(x) {
+    if (!arguments.length) return interpolate;
+    if (!d3_svg_lineInterpolators.has(x += "")) x = d3_svg_lineInterpolatorDefault;
+    i0 = d3_svg_lineInterpolators.get(interpolate = x);
+    i1 = i0.reverse || i0;
+    return area;
+  };
+
+  area.tension = function(x) {
+    if (!arguments.length) return tension;
+    tension = x;
+    return area;
+  };
+
+  return area.interpolate("linear");
+}
+
+d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;
+d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;
+
+d3.svg.area = function() {
+  return d3_svg_area(Object);
+};
+
+function d3_svg_areaX(points) {
+  return function(d, i) {
+    return points[i][0];
+  };
+}
+
+function d3_svg_areaY(points) {
+  return function(d, i) {
+    return points[i][1];
+  };
+}
+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_svg_chordSource,
+      target = d3_svg_chordTarget,
+      radius = d3_svg_chordRadius,
+      startAngle = d3_svg_arcStartAngle,
+      endAngle = d3_svg_arcEndAngle;
+
+  // TODO Allow control point to be customized.
+
+  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;
+  }
+
+  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_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;
+}
+d3.svg.diagonal = function() {
+  var source = d3_svg_chordSource,
+      target = d3_svg_chordTarget,
+      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.mouse = d3.mouse;
+d3.svg.touches = d3.touches;
+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;
+  };
+
+  // size of symbol in square pixels
+  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 / Math.PI);
+  return "M0," + r
+      + "A" + r + "," + r + " 0 1,1 0," + (-r)
+      + "A" + r + "," + r + " 0 1,1 0," + r
+      + "Z";
+}
+
+// TODO cross-diagonal?
+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() {
+  var scale = d3.scale.linear(),
+      orient = "bottom",
+      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);
+
+      // Ticks, or domain values for ordinal scales.
+      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_;
+
+      // Minor ticks.
+      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);
+
+      // Major ticks.
+      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;
+
+      // Domain.
+      var range = d3_scaleRange(scale),
+          path = g.selectAll(".domain").data([0]),
+          pathEnter = path.enter().append("path").attr("class", "domain"),
+          pathUpdate = d3.transition(path);
+
+      // Stash a snapshot of the new scale, and retrieve the old snapshot.
+      var scale1 = scale.copy(),
+          scale0 = this.__chart__ || scale1;
+      this.__chart__ = scale1;
+
+      tickEnter.append("line").attr("class", "tick");
+      tickEnter.append("text");
+      tickUpdate.select("text").text(tickFormat);
+
+      switch (orient) {
+        case "bottom": {
+          tickTransform = d3_svg_axisX;
+          subtickEnter.attr("y2", tickMinorSize);
+          subtickUpdate.attr("x2", 0).attr("y2", tickMinorSize);
+          tickEnter.select("line").attr("y2", tickMajorSize);
+          tickEnter.select("text").attr("y", Math.max(tickMajorSize, 0) + tickPadding);
+          tickUpdate.select("line").attr("x2", 0).attr("y2", tickMajorSize);
+          tickUpdate.select("text").attr("x", 0).attr("y", Math.max(tickMajorSize, 0) + tickPadding).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);
+          tickEnter.select("line").attr("y2", -tickMajorSize);
+          tickEnter.select("text").attr("y", -(Math.max(tickMajorSize, 0) + tickPadding));
+          tickUpdate.select("line").attr("x2", 0).attr("y2", -tickMajorSize);
+          tickUpdate.select("text").attr("x", 0).attr("y", -(Math.max(tickMajorSize, 0) + tickPadding)).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);
+          tickEnter.select("line").attr("x2", -tickMajorSize);
+          tickEnter.select("text").attr("x", -(Math.max(tickMajorSize, 0) + tickPadding));
+          tickUpdate.select("line").attr("x2", -tickMajorSize).attr("y2", 0);
+          tickUpdate.select("text").attr("x", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("y", 0).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);
+          tickEnter.select("line").attr("x2", tickMajorSize);
+          tickEnter.select("text").attr("x", Math.max(tickMajorSize, 0) + tickPadding);
+          tickUpdate.select("line").attr("x2", tickMajorSize).attr("y2", 0);
+          tickUpdate.select("text").attr("x", Math.max(tickMajorSize, 0) + tickPadding).attr("y", 0).attr("dy", ".32em").attr("text-anchor", "start");
+          pathUpdate.attr("d", "M" + tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + tickEndSize);
+          break;
+        }
+      }
+
+      // For quantitative scales:
+      // - enter new ticks from the old scale
+      // - exit old ticks to the new scale
+      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);
+      }
+
+      // For ordinal scales:
+      // - any entering ticks are undefined in the old scale
+      // - any exiting ticks are undefined in the new scale
+      // Therefore, we only need to transition updating ticks.
+      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;
+    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;
+};
+
+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, // x-scale, optional
+      y = null, // y-scale, optional
+      resizes = d3_svg_brushResizes[0],
+      extent = [[0, 0], [0, 0]], // [x0, y0], [x1, y1], in pixels (integers)
+      extentDomain; // the extent in data space, lazily created
+
+  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;
+
+      // Prepare the brush container for events.
+      g
+          .style("pointer-events", "all")
+          .on("mousedown.brush", brushstart)
+          .on("touchstart.brush", brushstart);
+
+      // An invisible, mouseable area for starting a new brush.
+      bg.enter().append("rect")
+          .attr("class", "background")
+          .style("visibility", "hidden")
+          .style("cursor", "crosshair");
+
+      // The visible brush extent; style this as you like!
+      fg.enter().append("rect")
+          .attr("class", "extent")
+          .style("cursor", "move");
+
+      // More invisible rects for resizing the extent.
+      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");
+
+      // Show or hide the resizers.
+      tz.style("display", brush.empty() ? "none" : null);
+
+      // Remove any superfluous resizers.
+      tz.exit().remove();
+
+      // Initialize the background to fill the defined range.
+      // If the range isn't defined, you can post-process.
+      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(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 the extent was clicked on, drag rather than brush;
+    // store the point between the mouse and extent origin instead.
+    if (dragging) {
+      origin[0] = extent[0][0] - origin[0];
+      origin[1] = extent[0][1] - origin[1];
+    }
+
+    // If a resizer was clicked on, record which side is to be resized.
+    // Also, set the origin to the opposite side.
+    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];
+    }
+
+    // If the ALT key is down when starting a brush, the center is at the mouse.
+    else if (d3.event.altKey) center = origin.slice();
+
+    // Propagate the active cursor to the body for the drag duration.
+    g.style("pointer-events", "none").selectAll(".resize").style("display", null);
+    d3.select("body").style("cursor", eventTarget.style("cursor"));
+
+    // Notify listeners.
+    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;
+
+      // Preserve the offset for thick resizers.
+      if (offset) {
+        point[0] += offset[0];
+        point[1] += offset[1];
+      }
+
+      if (!dragging) {
+
+        // If needed, determine the center from the current extent.
+        if (d3.event.altKey) {
+          if (!center) center = [(extent[0][0] + extent[1][0]) / 2, (extent[0][1] + extent[1][1]) / 2];
+
+          // Update the origin, for when the ALT key is released.
+          origin[0] = extent[+(point[0] < center[0])][0];
+          origin[1] = extent[+(point[1] < center[1])][1];
+        }
+
+        // When the ALT key is released, we clear the center.
+        else center = null;
+      }
+
+      // Update the brush extent for each dimension.
+      if (resizingX && move1(point, x, 0)) {
+        redrawX(g);
+        moved = true;
+      }
+      if (resizingY && move1(point, y, 1)) {
+        redrawY(g);
+        moved = true;
+      }
+
+      // Final redraw and notify listeners.
+      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;
+
+      // When dragging, reduce the range by the extent size and position.
+      if (dragging) {
+        r0 -= position;
+        r1 -= size + position;
+      }
+
+      // Clamp the point so that the extent fits within the range extent.
+      min = Math.max(r0, Math.min(r1, point[i]));
+
+      // Compute the new extent bounds.
+      if (dragging) {
+        max = (min += position) + size;
+      } else {
+
+        // If the ALT key is pressed, then preserve the center of the extent.
+        if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));
+
+        // Compute the min and max of the position and point.
+        if (position < min) {
+          max = min;
+          min = position;
+        } else {
+          max = position;
+        }
+      }
+
+      // Update the stored bounds.
+      if (extent[0][i] !== min || extent[1][i] !== max) {
+        extentDomain = null;
+        extent[0][i] = min;
+        extent[1][i] = max;
+        return true;
+      }
+    }
+
+    function brushend() {
+      brushmove();
+
+      // reset the cursor styles
+      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]; // fore!
+    return brush;
+  };
+
+  brush.y = function(z) {
+    if (!arguments.length) return y;
+    y = z;
+    resizes = d3_svg_brushResizes[!x << 1 | !y]; // fore!
+    return brush;
+  };
+
+  brush.extent = function(z) {
+    var x0, x1, y0, y1, t;
+
+    // Invert the pixel extent to data-space.
+    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];
+    }
+
+    // Scale the data-space extent to pixels.
+    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 = {};
+// TODO Track touch points by identifier.
+
+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,
+        offset,
+        origin_ = point(),
+        moved = 0;
+
+    var w = d3.select(window)
+        .on("mousemove.drag", dragmove)
+        .on("touchmove.drag", dragmove)
+        .on("mouseup.drag", dragend, true)
+        .on("touchend.drag", dragend, true);
+
+    if (origin) {
+      offset = origin.apply(target, arguments);
+      offset = [offset.x - origin_[0], offset.y - origin_[1]];
+    } else {
+      offset = [0, 0];
+    }
+
+    event_({type: "dragstart"});
+
+    function point() {
+      var p = target.parentNode,
+          t = d3.event.changedTouches;
+      return t ? d3.touches(p, t)[0] : d3.mouse(p);
+    }
+
+    function dragmove() {
+      if (!target.parentNode) return dragend(); // target removed from DOM
+
+      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, prevent the mouseup (and possibly click) from propagating
+      if (moved) {
+        d3_eventCancel();
+        if (d3.event.target === eventTarget) w.on("click.drag", click, true);
+      }
+
+      w .on("mousemove.drag", null)
+        .on("touchmove.drag", null)
+        .on("mouseup.drag", null)
+        .on("touchend.drag", null);
+    }
+
+    // prevent the subsequent click from propagating (e.g., for anchors)
+    function click() {
+      d3_eventCancel();
+      w.on("click.drag", null);
+    }
+  }
+
+  drag.origin = function(x) {
+    if (!arguments.length) return origin;
+    origin = x;
+    return drag;
+  };
+
+  return d3.rebind(drag, event, "on");
+};
+d3.behavior.zoom = function() {
+  var translate = [0, 0],
+      translate0, // translate when we started zooming (to avoid drift)
+      scale = 1,
+      scale0, // scale when we started touching
+      scaleExtent = d3_behavior_zoomInfinity,
+      event = d3_eventDispatch(zoom, "zoom"),
+      x0,
+      x1,
+      y0,
+      y1,
+      touchtime; // time of last touchstart (to detect double-tap)
+
+  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);
+  }
+
+  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;
+  };
+
+  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() {
+    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 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);
+    }
+
+    function click() {
+      d3_eventCancel();
+      w.on("click.zoom", null);
+    }
+  }
+
+  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) && (now - touchtime < 500)) { // dbltap
+      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);
+    dispatch(event.of(this, arguments));
+  }
+
+  return d3.rebind(zoom, event, "on");
+};
+
+var d3_behavior_zoomDiv, // for interpreting mousewheel events
+    d3_behavior_zoomInfinity = [0, Infinity]; // default scale extent
+
+function d3_behavior_zoomDelta() {
+
+  // mousewheel events are totally broken!
+  // https://bugs.webkit.org/show_bug.cgi?id=40441
+  // not only that, but Chrome and Safari differ in re. to acceleration!
+  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 = 1000;
+    d3_behavior_zoomDiv.dispatchEvent(e);
+    delta = 1000 - d3_behavior_zoomDiv.scrollTop;
+  } catch (error) {
+    delta = e.wheelDelta || (-e.detail * 5);
+  }
+
+  return delta;
+}
+d3.layout = {};
+// Implements hierarchical edge bundling using Holten's algorithm. For each
+// input link, a path is computed that travels through the tree, up the parent
+// hierarchy to the least common ancestor, and then back down to the destination
+// node. Each path is simply an array of nodes.
+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 = [];
+
+    // Compute the sum.
+    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;
+    }
+
+    // Sort groups…
+    if (sortGroups) {
+      groupIndex.sort(function(a, b) {
+        return sortGroups(groupSums[a], groupSums[b]);
+      });
+    }
+
+    // Sort subgroups…
+    if (sortSubgroups) {
+      subgroupIndex.forEach(function(d, i) {
+        d.sort(function(a, b) {
+          return sortSubgroups(matrix[i][a], matrix[i][b]);
+        });
+      });
+    }
+
+    // Convert the sum to scaling factor for [0, 2pi].
+    // TODO Allow start and end angle to be specified.
+    // TODO Allow padding to be specified as percentage?
+    k = (2 * Math.PI - padding * n) / k;
+
+    // Compute the start and end angle for each group and subgroup.
+    // Note: Opera has a bug reordering object literal properties!
+    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.push({
+        index: di,
+        startAngle: x0,
+        endAngle: x,
+        value: (x - x0) / k
+      });
+      x += padding;
+    }
+
+    // Generate chords for each (non-empty) subgroup-subgroup link.
+    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;
+};
+// A rudimentary force layout using Gauss-Seidel.
+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,
+      interval,
+      nodes = [],
+      links = [],
+      distances,
+      strengths,
+      charges;
+
+  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);
+
+        /* Barnes-Hut criterion. */
+        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() {
+    // simulated annealing, basically
+    if ((alpha *= .99) < .005) {
+      event.end({type: "end", alpha: alpha = 0});
+      return true;
+    }
+
+    var n = nodes.length,
+        m = links.length,
+        q,
+        i, // current index
+        o, // current object
+        s, // current source
+        t, // current target
+        l, // current distance
+        k, // current force
+        x, // x-distance
+        y; // y-distance
+
+    // gauss-seidel relaxation for links
+    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;
+      }
+    }
+
+    // apply gravity forces
+    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;
+      }
+    }
+
+    // compute quadtree center of mass and apply charge forces
+    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));
+        }
+      }
+    }
+
+    // position verlet integration
+    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;
+  };
+
+  // For backwards-compatibility.
+  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 we're already running
+      if (x > 0) alpha = x; // we might keep it hot
+      else alpha = 0; // or, next tick will dispatch "end"
+    } else if (x > 0) { // otherwise, fire it up!
+      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;
+    }
+
+    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;
+      }
+    }
+
+    // initialize node position based on first neighbor
+    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;
+    }
+
+    // initialize neighbors lazily
+    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);
+  };
+
+  // use `node.call(force.drag)` to make nodes draggable
+  force.drag = function() {
+    if (!drag) drag = d3.behavior.drag()
+        .origin(Object)
+        .on("dragstart", dragstart)
+        .on("drag", d3_layout_forceDrag)
+        .on("dragend", d3_layout_forceDragEnd);
+
+    this.on("mouseover.force", d3_layout_forceDragOver)
+        .on("mouseout.force", d3_layout_forceDragOut)
+        .call(drag);
+  };
+
+  function dragstart(d) {
+    d3_layout_forceDragOver(d3_layout_forceDragNode = d);
+    d3_layout_forceDragForce = force;
+  }
+
+  return d3.rebind(force, event, "on");
+};
+
+var d3_layout_forceDragForce,
+    d3_layout_forceDragNode;
+
+function d3_layout_forceDragOver(d) {
+  d.fixed |= 2;
+}
+
+function d3_layout_forceDragOut(d) {
+  if (d !== d3_layout_forceDragNode) d.fixed &= 1;
+}
+
+function d3_layout_forceDragEnd() {
+  d3_layout_forceDragNode.fixed &= 1;
+  d3_layout_forceDragForce = d3_layout_forceDragNode = null;
+}
+
+function d3_layout_forceDrag() {
+  d3_layout_forceDragNode.px = d3.event.x;
+  d3_layout_forceDragNode.py = d3.event.y;
+  d3_layout_forceDragForce.resume(); // restart annealing
+}
+
+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) {
+    // jitter internal nodes that are coincident
+    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;
+}
+d3.layout.partition = function() {
+  var hierarchy = d3.layout.hierarchy(),
+      size = [1, 1]; // width, height
+
+  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 * Math.PI;
+
+  function pie(data, i) {
+
+    // Compute the numeric values for each data element.
+    var values = data.map(function(d, i) { return +value.call(pie, d, i); });
+
+    // Compute the start angle.
+    var a = +(typeof startAngle === "function"
+        ? startAngle.apply(this, arguments)
+        : startAngle);
+
+    // Compute the angular scale factor: from value to radians.
+    var k = ((typeof endAngle === "function"
+        ? endAngle.apply(this, arguments)
+        : endAngle) - startAngle)
+        / d3.sum(values);
+
+    // Optionally sort the data.
+    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]); });
+
+    // Compute the arcs!
+    // They are stored in the original data's order.
+    var arcs = [];
+    index.forEach(function(i) {
+      arcs[i] = {
+        data: data[i],
+        value: d = values[i],
+        startAngle: a,
+        endAngle: a += d * k
+      };
+    });
+    return arcs;
+  }
+
+  /**
+   * Specifies the value function *x*, which returns a nonnegative numeric value
+   * for each datum. The default value function is `Number`. The value function
+   * is passed two arguments: the current datum and the current index.
+   */
+  pie.value = function(x) {
+    if (!arguments.length) return value;
+    value = x;
+    return pie;
+  };
+
+  /**
+   * Specifies a sort comparison operator *x*. The comparator is passed two data
+   * elements from the data array, a and b; it returns a negative value if a is
+   * less than b, a positive value if a is greater than b, and zero if a equals
+   * b.
+   */
+  pie.sort = function(x) {
+    if (!arguments.length) return sort;
+    sort = x;
+    return pie;
+  };
+
+  /**
+   * Specifies the overall start angle of the pie chart. Defaults to 0. The
+   * start angle can be specified either as a constant or as a function; in the
+   * case of a function, it is evaluated once per array (as opposed to per
+   * element).
+   */
+  pie.startAngle = function(x) {
+    if (!arguments.length) return startAngle;
+    startAngle = x;
+    return pie;
+  };
+
+  /**
+   * Specifies the overall end angle of the pie chart. Defaults to 2Ï€. The
+   * end angle can be specified either as a constant or as a function; in the
+   * case of a function, it is evaluated once per array (as opposed to per
+   * element).
+   */
+  pie.endAngle = function(x) {
+    if (!arguments.length) return endAngle;
+    endAngle = x;
+    return pie;
+  };
+
+  return pie;
+};
+
+var d3_layout_pieSortByValue = {};
+// data is two-dimensional array of x,y; we populate y0
+d3.layout.stack = function() {
+  var values = Object,
+      order = d3_layout_stackOrderDefault,
+      offset = d3_layout_stackOffsetZero,
+      out = d3_layout_stackOut,
+      x = d3_layout_stackX,
+      y = d3_layout_stackY;
+
+  function stack(data, index) {
+
+    // Convert series to canonical two-dimensional representation.
+    var series = data.map(function(d, i) {
+      return values.call(stack, d, i);
+    });
+
+    // Convert each series to canonical [[x,y]] representation.
+    var points = series.map(function(d, i) {
+      return d.map(function(v, i) {
+        return [x.call(stack, v, i), y.call(stack, v, i)];
+      });
+    });
+
+    // Compute the order of series, and permute them.
+    var orders = order.call(stack, points, index);
+    series = d3.permute(series, orders);
+    points = d3.permute(points, orders);
+
+    // Compute the baseline…
+    var offsets = offset.call(stack, points, index);
+
+    // And propagate it to other series.
+    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,
+        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
+
+});
+
+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;
+
+    // Initialize the bins.
+    while (++i < m) {
+      bin = bins[i] = [];
+      bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);
+      bin.y = 0;
+    }
+
+    // Fill the bins, ignoring values outside the range.
+    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;
+  }
+
+  // Specifies how to extract a value from the associated data. The default
+  // value function is `Number`, which is equivalent to the identity function.
+  histogram.value = function(x) {
+    if (!arguments.length) return valuer;
+    valuer = x;
+    return histogram;
+  };
+
+  // Specifies the range of the histogram. Values outside the specified range
+  // will be ignored. The argument `x` may be specified either as a two-element
+  // array representing the minimum and maximum value of the range, or as a
+  // function that returns the range given the array of values and the current
+  // index `i`. The default range is the extent (minimum and maximum) of the
+  // values.
+  histogram.range = function(x) {
+    if (!arguments.length) return ranger;
+    ranger = d3.functor(x);
+    return histogram;
+  };
+
+  // Specifies how to bin values in the histogram. The argument `x` may be
+  // specified as a number, in which case the range of values will be split
+  // uniformly into the given number of bins. Or, `x` may be an array of
+  // threshold values, defining the bins; the specified array must contain the
+  // rightmost (upper) value, thus specifying n + 1 values for n bins. Or, `x`
+  // may be a function which is evaluated, being passed the range, the array of
+  // values, and the current index `i`, returning an array of thresholds. The
+  // default bin function will divide the values into uniform bins using
+  // Sturges' formula.
+  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;
+  };
+
+  // Specifies whether the histogram's `y` value is a count (frequency) or a
+  // probability (density). The default value is true.
+  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.hierarchy = function() {
+  var sort = d3_layout_hierarchySort,
+      children = d3_layout_hierarchyChildren,
+      value = d3_layout_hierarchyValue;
+
+  // Recursively compute the node depth and value.
+  // Also converts the data representation into a standard hierarchy structure.
+  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;
+      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;
+  }
+
+  // Recursively re-evaluates the node value.
+  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;
+  }
+
+  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;
+  };
+
+  // Re-evaluates the `value` property for the specified hierarchy.
+  hierarchy.revalue = function(root) {
+    revalue(root, 0);
+    return root;
+  };
+
+  return hierarchy;
+};
+
+// A method assignment helper for hierarchy subclasses.
+function d3_layout_hierarchyRebind(object, hierarchy) {
+  d3.rebind(object, hierarchy, "sort", "children", "value");
+
+  // Add an alias for links, for convenience.
+  object.links = d3_layout_hierarchyLinks;
+
+  // If the new API is used, enabling inlining.
+  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;
+}
+
+// Returns an array source+target objects for the specified nodes.
+function d3_layout_hierarchyLinks(nodes) {
+  return d3.merge(nodes.map(function(parent) {
+    return (parent.children || []).map(function(child) {
+      return {source: parent, target: child};
+    });
+  }));
+}
+
+// For backwards-compatibility, don't enable inlining by default.
+var d3_layout_hierarchyInline = false;
+d3.layout.pack = function() {
+  var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort),
+      size = [1, 1];
+
+  function pack(d, i) {
+    var nodes = hierarchy.call(this, d, i),
+        root = nodes[0];
+
+    // Recursively compute the layout.
+    root.x = 0;
+    root.y = 0;
+    d3_layout_packTree(root);
+
+    // Scale the layout to fit the requested size.
+    var w = size[0],
+        h = size[1],
+        k = 1 / Math.max(2 * root.r / w, 2 * root.r / h);
+    d3_layout_packTransform(root, w / 2, h / 2, k);
+
+    return nodes;
+  }
+
+  pack.size = function(x) {
+    if (!arguments.length) return size;
+    size = x;
+    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; // within epsilon
+}
+
+function d3_layout_packCircle(nodes) {
+  var xMin = Infinity,
+      xMax = -Infinity,
+      yMin = Infinity,
+      yMax = -Infinity,
+      n = nodes.length,
+      a, b, c, j, k;
+
+  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);
+  }
+
+  // Create node links.
+  nodes.forEach(d3_layout_packLink);
+
+  // Create first node.
+  a = nodes[0];
+  a.x = -a.r;
+  a.y = 0;
+  bound(a);
+
+  // Create second node.
+  if (n > 1) {
+    b = nodes[1];
+    b.x = b.r;
+    b.y = 0;
+    bound(b);
+
+    // Create third node and build chain.
+    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;
+
+      // Now iterate through the rest.
+      for (var i = 3; i < n; i++) {
+        d3_layout_packPlace(a, b, c = nodes[i]);
+
+        // Search for the closest intersection.
+        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;
+            }
+          }
+        }
+
+        // Update node chain.
+        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);
+        }
+      }
+    }
+  }
+
+  // Re-center the circles and return the encompassing radius.
+  var cx = (xMin + xMax) / 2,
+      cy = (yMin + yMax) / 2,
+      cr = 0;
+  for (var i = 0; i < n; i++) {
+    var node = nodes[i];
+    node.x -= cx;
+    node.y -= cy;
+    cr = Math.max(cr, node.r + Math.sqrt(node.x * node.x + node.y * node.y));
+  }
+
+  // Remove node links.
+  nodes.forEach(d3_layout_packUnlink);
+
+  return cr;
+}
+
+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_packTree(node) {
+  var children = node.children;
+  if (children && children.length) {
+    children.forEach(d3_layout_packTree);
+    node.r = d3_layout_packCircle(children);
+  } else {
+    node.r = Math.sqrt(node.value);
+  }
+}
+
+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 = Math.sqrt(dx * dx + dy * dy),
+        cos = Math.max(-1, Math.min(1, (db * db + dc * dc - da * da) / (2 * db * dc))),
+        theta = Math.acos(cos),
+        x = cos * (db /= dc),
+        y = Math.sin(theta) * db;
+    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;
+  }
+}
+// Implements a hierarchical layout using the cluster (or dendrogram)
+// algorithm.
+d3.layout.cluster = function() {
+  var hierarchy = d3.layout.hierarchy().sort(null).value(null),
+      separation = d3_layout_treeSeparation,
+      size = [1, 1]; // width, height
+
+  function cluster(d, i) {
+    var nodes = hierarchy.call(this, d, i),
+        root = nodes[0],
+        previousNode,
+        x = 0,
+        kx,
+        ky;
+
+    // First walk, computing the initial x & y values.
+    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;
+      }
+    });
+
+    // Compute the left-most, right-most, and depth-most nodes for extents.
+    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;
+
+    // Second walk, normalizing x & y to the desired size.
+    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;
+}
+// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm
+d3.layout.tree = function() {
+  var hierarchy = d3.layout.hierarchy().sort(null).value(null),
+      separation = d3_layout_treeSeparation,
+      size = [1, 1]; // width, height
+
+  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;
+    }
+
+    // Initialize temporary layout variables.
+    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
+      };
+    });
+
+    // Compute the layout using Buchheim et al.'s algorithm.
+    firstWalk(root);
+    secondWalk(root, -root._tree.prelim);
+
+    // Compute the left-most, right-most, and depth-most nodes for extents.
+    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;
+
+    // Clear temporary layout variables; transform x and y.
+    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_treeSeparationRadial(a, b) {
+//   return (a.parent == b.parent ? 1 : 2) / a.depth;
+// }
+
+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;
+}
+// Squarified Treemaps by Mark Bruls, Kees Huizing, and Jarke J. van Wijk
+// Modified to support a target aspect ratio by Jeff Heer
+d3.layout.treemap = function() {
+  var hierarchy = d3.layout.hierarchy(),
+      round = Math.round,
+      size = [1, 1], // width, height
+      padding = null,
+      pad = d3_layout_treemapPadNull,
+      sticky = false,
+      stickies,
+      ratio = 0.5 * (1 + Math.sqrt(5)); // golden ratio
+
+  // Compute the area for each child based on value & scale.
+  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;
+    }
+  }
+
+  // Recursively arranges the specified node's children into squarified rows.
+  function squarify(node) {
+    var children = node.children;
+    if (children && children.length) {
+      var rect = pad(node),
+          row = [],
+          remaining = children.slice(), // copy-on-write
+          child,
+          best = Infinity, // the best row score so far
+          score, // the current row score
+          u = Math.min(rect.dx, rect.dy), // initial orientation
+          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) { // continue with this orientation
+          remaining.pop();
+          best = score;
+        } else { // abort, and try a different orientation
+          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);
+    }
+  }
+
+  // Recursively resizes the specified node's children into existing rows.
+  // Preserves the existing layout!
+  function stickify(node) {
+    var children = node.children;
+    if (children && children.length) {
+      var rect = pad(node),
+          remaining = children.slice(), // copy-on-write
+          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);
+    }
+  }
+
+  // Computes the score for the specified row, as the worst aspect ratio.
+  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;
+  }
+
+  // Positions the specified row of nodes. Modifies `rect`.
+  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) { // horizontal subdivision
+      if (flush || v > rect.dy) v = rect.dy; // over+underflow
+      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; // rounding error
+      rect.y += v;
+      rect.dy -= v;
+    } else { // vertical subdivision
+      if (flush || v > rect.dx) v = rect.dx; // over+underflow
+      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; // rounding error
+      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;
+  };
+
+  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.csv = function(url, callback) {
+  d3.text(url, "text/csv", function(text) {
+    callback(text && d3.csv.parse(text));
+  });
+};
+d3.csv.parse = function(text) {
+  var header;
+  return d3.csv.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;
+    }
+  });
+};
+
+d3.csv.parseRows = function(text, f) {
+  var EOL = {}, // sentinel value for end-of-line
+      EOF = {}, // sentinel value for end-of-file
+      rows = [], // output rows
+      re = /\r\n|[,\r\n]/g, // field separator regex
+      n = 0, // the current line number
+      t, // the current token
+      eol; // is the current token followed by EOL?
+
+  re.lastIndex = 0; // work-around bug in FF 3.6
+
+  /** @private Returns the next token. */
+  function token() {
+    if (re.lastIndex >= text.length) return EOF; // special case: end of file
+    if (eol) { eol = false; return EOL; } // special case: end of line
+
+    // special case: quotes
+    var j = re.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++;
+        }
+      }
+      re.lastIndex = i + 2;
+      var c = text.charCodeAt(i + 1);
+      if (c === 13) {
+        eol = true;
+        if (text.charCodeAt(i + 2) === 10) re.lastIndex++;
+      } else if (c === 10) {
+        eol = true;
+      }
+      return text.substring(j + 1, i).replace(/""/g, "\"");
+    }
+
+    // common case
+    var m = re.exec(text);
+    if (m) {
+      eol = m[0].charCodeAt(0) !== 44;
+      return text.substring(j, m.index);
+    }
+    re.lastIndex = text.length;
+    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;
+};
+d3.csv.format = function(rows) {
+  return rows.map(d3_csv_formatRow).join("\n");
+};
+
+function d3_csv_formatRow(row) {
+  return row.map(d3_csv_formatValue).join(",");
+}
+
+function d3_csv_formatValue(text) {
+  return /[",\n]/.test(text)
+      ? "\"" + text.replace(/\"/g, "\"\"") + "\""
+      : text;
+}
+d3.geo = {};
+
+var d3_geo_radians = Math.PI / 180;
+// TODO clip input coordinates on opposite hemisphere
+d3.geo.azimuthal = function() {
+  var mode = "orthographic", // or stereographic, gnomonic, equidistant or equalarea
+      origin,
+      scale = 200,
+      translate = [480, 250],
+      x0,
+      y0,
+      cy0,
+      sy0;
+
+  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]
+    ];
+  }
+
+  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]);
+};
+// Derived from Tom Carden's Albers implementation for Protovis.
+// http://gist.github.com/476238
+// http://mathworld.wolfram.com/AlbersEqual-AreaConicProjection.html
+
+d3.geo.albers = function() {
+  var origin = [-98, 38],
+      parallels = [29.5, 45.5],
+      scale = 1000,
+      translate = [480, 250],
+      lng0, // d3_geo_radians * origin[0]
+      n,
+      C,
+      p0;
+
+  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]
+    ];
+  }
+
+  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
+    ];
+  };
+
+  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;
+  }
+
+  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();
+};
+
+// A composite projection for the United States, 960x500. The set of standard
+// parallels for each region comes from USGS, which is published here:
+// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers
+// TODO allow the composite projection to be rescaled?
+d3.geo.albersUsa = function() {
+  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]);
+
+  function albersUsa(coordinates) {
+    var lon = coordinates[0],
+        lat = coordinates[1];
+    return (lat > 50 ? alaska
+        : lon < -140 ? hawaii
+        : lat < 21 ? puertoRico
+        : lower48)(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() / 1000,
+        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() {
+  var scale = 200,
+      translate = [480, 250],
+      x0, // origin longitude in radians
+      y0, // origin latitude in radians
+      y1, // parallel latitude in radians
+      c1; // cot(y1)
+
+  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]
+    ];
+  }
+
+  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
+    ];
+  };
+
+  // 90° for Werner, 0° for Sinusoidal
+  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() {
+  var scale = 500,
+      translate = [480, 250];
+
+  function equirectangular(coordinates) {
+    var x = coordinates[0] / 360,
+        y = -coordinates[1] / 360;
+    return [
+      scale * x + translate[0],
+      scale * y + translate[1]
+    ];
+  }
+
+  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() {
+  var scale = 500,
+      translate = [480, 250];
+
+  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]
+    ];
+  }
+
+  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;
+};
+function d3_geo_type(types, defaultValue) {
+  return function(object) {
+    return object && types.hasOwnProperty(object.type) ? types[object.type](object) : defaultValue;
+  };
+}
+/**
+ * Returns a function that, given a GeoJSON object (e.g., a feature), returns
+ * the corresponding SVG path. The function can be customized by overriding the
+ * projection. Point features are mapped to circles with a default radius of
+ * 4.5px; the radius can be specified either as a constant or a function that
+ * is evaluated per object.
+ */
+d3.geo.path = function() {
+  var pointRadius = 4.5,
+      pointCircle = d3_path_circle(pointRadius),
+      projection = d3.geo.albersUsa();
+
+  function path(d, i) {
+    if (typeof pointRadius === "function") {
+      pointCircle = d3_path_circle(pointRadius.apply(this, arguments));
+    }
+    return pathType(d) || null;
+  }
+
+  function project(coordinates) {
+    return projection(coordinates).join(",");
+  }
+
+  var pathType = d3_geo_type({
+
+    FeatureCollection: function(o) {
+      var path = [],
+          features = o.features,
+          i = -1, // features.index
+          n = features.length;
+      while (++i < n) path.push(pathType(features[i].geometry));
+      return path.join("");
+    },
+
+    Feature: function(o) {
+      return pathType(o.geometry);
+    },
+
+    Point: function(o) {
+      return "M" + project(o.coordinates) + pointCircle;
+    },
+
+    MultiPoint: function(o) {
+      var path = [],
+          coordinates = o.coordinates,
+          i = -1, // coordinates.index
+          n = coordinates.length;
+      while (++i < n) path.push("M", project(coordinates[i]), pointCircle);
+      return path.join("");
+    },
+
+    LineString: function(o) {
+      var path = ["M"],
+          coordinates = o.coordinates,
+          i = -1, // coordinates.index
+          n = coordinates.length;
+      while (++i < n) path.push(project(coordinates[i]), "L");
+      path.pop();
+      return path.join("");
+    },
+
+    MultiLineString: function(o) {
+      var path = [],
+          coordinates = o.coordinates,
+          i = -1, // coordinates.index
+          n = coordinates.length,
+          subcoordinates, // coordinates[i]
+          j, // subcoordinates.index
+          m; // subcoordinates.length
+      while (++i < n) {
+        subcoordinates = coordinates[i];
+        j = -1;
+        m = subcoordinates.length;
+        path.push("M");
+        while (++j < m) path.push(project(subcoordinates[j]), "L");
+        path.pop();
+      }
+      return path.join("");
+    },
+
+    Polygon: function(o) {
+      var path = [],
+          coordinates = o.coordinates,
+          i = -1, // coordinates.index
+          n = coordinates.length,
+          subcoordinates, // coordinates[i]
+          j, // subcoordinates.index
+          m; // subcoordinates.length
+      while (++i < n) {
+        subcoordinates = coordinates[i];
+        j = -1;
+        if ((m = subcoordinates.length - 1) > 0) {
+          path.push("M");
+          while (++j < m) path.push(project(subcoordinates[j]), "L");
+          path[path.length - 1] = "Z";
+        }
+      }
+      return path.join("");
+    },
+
+    MultiPolygon: function(o) {
+      var path = [],
+          coordinates = o.coordinates,
+          i = -1, // coordinates index
+          n = coordinates.length,
+          subcoordinates, // coordinates[i]
+          j, // subcoordinates index
+          m, // subcoordinates.length
+          subsubcoordinates, // subcoordinates[j]
+          k, // subsubcoordinates index
+          p; // subsubcoordinates.length
+      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) {
+            path.push("M");
+            while (++k < p) path.push(project(subsubcoordinates[k]), "L");
+            path[path.length - 1] = "Z";
+          }
+        }
+      }
+      return path.join("");
+    },
+
+    GeometryCollection: function(o) {
+      var path = [],
+          geometries = o.geometries,
+          i = -1, // geometries index
+          n = geometries.length;
+      while (++i < n) path.push(pathType(geometries[i]));
+      return path.join("");
+    }
+
+  });
+
+  var areaType = path.area = d3_geo_type({
+
+    FeatureCollection: function(o) {
+      var area = 0,
+          features = o.features,
+          i = -1, // features.index
+          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, // coordinates index
+          n = coordinates.length;
+      while (++i < n) sum += polygonArea(coordinates[i]);
+      return sum;
+    },
+
+    GeometryCollection: function(o) {
+      var sum = 0,
+          geometries = o.geometries,
+          i = -1, // geometries index
+          n = geometries.length;
+      while (++i < n) sum += areaType(geometries[i]);
+      return sum;
+    }
+
+  }, 0);
+
+  function polygonArea(coordinates) {
+    var sum = area(coordinates[0]), // exterior ring
+        i = 0, // coordinates.index
+        n = coordinates.length;
+    while (++i < n) sum -= area(coordinates[i]); // holes
+    return sum;
+  }
+
+  function polygonCentroid(coordinates) {
+    var polygon = d3.geom.polygon(coordinates[0].map(projection)), // exterior ring
+        area = polygon.area(),
+        centroid = polygon.centroid(area < 0 ? (area *= -1, 1) : -1),
+        x = centroid[0],
+        y = centroid[1],
+        z = area,
+        i = 0, // coordinates index
+        n = coordinates.length;
+    while (++i < n) {
+      polygon = d3.geom.polygon(coordinates[i].map(projection)); // holes
+      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]; // weighted centroid
+  }
+
+  var centroidType = path.centroid = d3_geo_type({
+
+    // TODO FeatureCollection
+    // TODO Point
+    // TODO MultiPoint
+    // TODO LineString
+    // TODO MultiLineString
+    // TODO GeometryCollection
+
+    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, // coordinates index
+          n = coordinates.length;
+      while (++i < n) {
+        centroid = polygonCentroid(coordinates[i]);
+        x += centroid[0];
+        y += centroid[1];
+        z += centroid[2];
+      }
+      return [x / z, y / z];
+    }
+
+  });
+
+  function area(coordinates) {
+    return Math.abs(d3.geom.polygon(coordinates.map(projection)).area());
+  }
+
+  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;
+};
+
+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";
+}
+/**
+ * Given a GeoJSON object, returns the corresponding bounding box. The bounding
+ * box is represented by a two-dimensional array: [[left, bottom], [right,
+ * top]], where left is the minimum longitude, bottom is the minimum latitude,
+ * right is maximum longitude, and top is the maximum latitude.
+ */
+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]];
+};
+
+function d3_geo_bounds(o, f) {
+  if (d3_geo_boundsTypes.hasOwnProperty(o.type)) d3_geo_boundsTypes[o.type](o, f);
+}
+
+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
+};
+
+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]);
+  }
+}
+// TODO breakAtDateLine?
+
+d3.geo.circle = function() {
+  var origin = [0, 0],
+      degrees = 90 - 1e-2,
+      radians = degrees * d3_geo_radians,
+      arc = d3.geo.greatArc().target(Object);
+
+  function circle() {
+    // TODO render a circle as a Polygon
+  }
+
+  function visible(point) {
+    return arc.distance(point) < radians;
+  }
+
+  circle.clip = function(d) {
+    arc.source(typeof origin === "function" ? origin.apply(this, arguments) : origin);
+    return clipType(d);
+  };
+
+  var clipType = d3_geo_type({
+
+    FeatureCollection: function(o) {
+      var features = o.features.map(clipType).filter(Object);
+      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(Object);
+      return geometries.length && (o = Object.create(o), o.geometries = geometries, o);
+    }
+
+  });
+
+  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;
+    }
+
+    if (p1 && clipped.length) {
+      d1 = arc.distance(p2 = clipped[0]);
+      clipped.push(d3_geo_greatArcInterpolate(p1, p2)((d0 - radians) / (d0 - d1)));
+    }
+
+    return resample(clipped);
+  }
+
+  // Resample coordinates, creating great arcs between each.
+  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;
+  }
+
+  circle.origin = function(x) {
+    if (!arguments.length) return origin;
+    origin = x;
+    return circle;
+  };
+
+  circle.angle = function(x) {
+    if (!arguments.length) return degrees;
+    radians = (degrees = +x) * d3_geo_radians;
+    return circle;
+  };
+
+  // Precision is specified in degrees.
+  circle.precision = function(x) {
+    if (!arguments.length) return arc.precision();
+    arc.precision(x);
+    return circle;
+  };
+
+  return circle;
+}
+d3.geo.greatArc = function() {
+  var source = d3_geo_greatArcSource,
+      target = d3_geo_greatArcTarget,
+      precision = 6 * d3_geo_radians;
+
+  function greatArc() {
+    var a = typeof source === "function" ? source.apply(this, arguments) : source,
+        b = typeof target === "function" ? target.apply(this, arguments) : target,
+        i = d3_geo_greatArcInterpolate(a, b),
+        dt = precision / i.d,
+        t = 0,
+        coordinates = [a];
+    while ((t += dt) < 1) coordinates.push(i(t));
+    coordinates.push(b);
+    return {
+      type: "LineString",
+      coordinates: coordinates
+    };
+  }
+
+  // Length returned in radians; multiply by radius for distance.
+  greatArc.distance = function() {
+    var a = typeof source === "function" ? source.apply(this, arguments) : source,
+        b = typeof target === "function" ? target.apply(this, arguments) : target;
+     return d3_geo_greatArcInterpolate(a, b).d;
+  };
+
+  greatArc.source = function(x) {
+    if (!arguments.length) return source;
+    source = x;
+    return greatArc;
+  };
+
+  greatArc.target = function(x) {
+    if (!arguments.length) return target;
+    target = x;
+    return greatArc;
+  };
+
+  // Precision is specified in degrees.
+  greatArc.precision = function(x) {
+    if (!arguments.length) return precision / d3_geo_radians;
+    precision = x * d3_geo_radians;
+    return greatArc;
+  };
+
+  return greatArc;
+};
+
+function d3_geo_greatArcSource(d) {
+  return d.source;
+}
+
+function d3_geo_greatArcTarget(d) {
+  return d.target;
+}
+
+function d3_geo_greatArcInterpolate(a, b) {
+  var x0 = a[0] * d3_geo_radians, cx0 = Math.cos(x0), sx0 = Math.sin(x0),
+      y0 = a[1] * d3_geo_radians, cy0 = Math.cos(y0), sy0 = Math.sin(y0),
+      x1 = b[0] * d3_geo_radians, cx1 = Math.cos(x1), sx1 = Math.sin(x1),
+      y1 = b[1] * d3_geo_radians, cy1 = Math.cos(y1), sy1 = Math.sin(y1),
+      d = interpolate.d = Math.acos(Math.max(-1, Math.min(1, sy0 * sy1 + cy0 * cy1 * Math.cos(x1 - x0)))),
+      sd = Math.sin(d);
+
+  // From http://williams.best.vwh.net/avform.htm#Intermediate
+  function interpolate(t) {
+    var A = Math.sin(d - (t *= d)) / sd,
+        B = Math.sin(t) / sd,
+        x = A * cy0 * cx0 + B * cy1 * cx1,
+        y = A * cy0 * sx0 + B * cy1 * sx1,
+        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
+    ];
+  }
+
+  return interpolate;
+}
+d3.geo.greatCircle = d3.geo.circle;
+d3.geom = {};
+/**
+ * Computes a contour for a given input grid function using the <a
+ * href="http://en.wikipedia.org/wiki/Marching_squares">marching
+ * squares</a> algorithm. Returns the contour polygon as an array of points.
+ *
+ * @param grid a two-input function(x, y) that returns true for values
+ * inside the contour and false for values outside the contour.
+ * @param start an optional starting point [x, y] on the grid.
+ * @returns polygon [[x1, y1], [x2, y2], â€¦]
+ */
+d3.geom.contour = function(grid, start) {
+  var s = start || d3_geom_contourStart(grid), // starting point
+      c = [],    // contour polygon
+      x = s[0],  // current x position
+      y = s[1],  // current y position
+      dx = 0,    // next x direction
+      dy = 0,    // next y direction
+      pdx = NaN, // previous x direction
+      pdy = NaN, // previous y direction
+      i = 0;
+
+  do {
+    // determine marching squares index
+    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;
+
+    // determine next direction
+    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];
+    }
+
+    // update contour polygon
+    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;
+};
+
+// lookup tables for marching directions
+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];
+
+function d3_geom_contourStart(grid) {
+  var x = 0,
+      y = 0;
+
+  // search for a starting point; begin at origin
+  // and proceed along outward-expanding diagonals
+  while (true) {
+    if (grid(x,y)) {
+      return [x,y];
+    }
+    if (x === 0) {
+      x = y + 1;
+      y = 0;
+    } else {
+      x = x - 1;
+      y = y + 1;
+    }
+  }
+}
+/**
+ * Computes the 2D convex hull of a set of points using Graham's scanning
+ * algorithm. The algorithm has been implemented as described in Cormen,
+ * Leiserson, and Rivest's Introduction to Algorithms. The running time of
+ * this algorithm is O(n log n), where n is the number of input points.
+ *
+ * @param vertices [[x1, y1], [x2, y2], â€¦]
+ * @returns polygon [[x1, y1], [x2, y2], â€¦]
+ */
+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;
+
+  // find the starting ref point: leftmost point with the minimum y coord
+  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);
+    }
+  }
+
+  // calculate polar angles from ref point and sort
+  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; });
+
+  // toss out duplicate angles
+  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) {
+      // keep angle for point most distant from the reference
+      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;
+    }
+  }
+
+  // initialize the stack
+  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;
+
+  // do graham's scan
+  for (; j<plen; ++j) {
+    if (points[j].index === -1) continue; // skip tossed out points
+    while (!d3_geom_hullCCW(stack[sp-2], stack[sp-1], points[j].index, vertices)) {
+      --sp;
+    }
+    stack[sp++] = points[j].index;
+  }
+
+  // construct the hull
+  var poly = [];
+  for (i=0; i<sp; ++i) {
+    poly.push(vertices[stack[i]]);
+  }
+  return poly;
+}
+
+// are three points in counter-clockwise order?
+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;
+}
+// Note: requires coordinates to be counterclockwise and convex!
+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];
+  };
+
+  // The Sutherland-Hodgman clipping algorithm.
+  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]);
+}
+
+// Intersect two infinite lines cd and ab.
+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];
+}
+// Adapted from Nicolas Garcia Belmonte's JIT implementation:
+// http://blog.thejit.org/2010/02/12/voronoi-tessellation/
+// http://blog.thejit.org/assets/voronoijs/voronoi.js
+// See lib/jit/LICENSE for details.
+
+// Notes:
+//
+// This implementation does not clip the returned polygons, so if you want to
+// clip them to a particular shape you will need to do that either in SVG or by
+// post-processing with d3.geom.polygon's clip method.
+//
+// If any vertices are coincident or have NaN positions, the behavior of this
+// method is undefined. Most likely invalid polygons will be returned. You
+// should filter invalid points, and consolidate coincident points, before
+// computing the tessellation.
+
+/**
+ * @param vertices [[x1, y1], [x2, y2], â€¦]
+ * @returns polygons [[[x1, y1], [x2, y2], â€¦], â€¦]
+ */
+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);
+  });
+
+  // Reconnect the polygon segments into counterclockwise loops.
+  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"};
+
+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 /* e.b == 1 */ {
+        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))) { //new site is smallest
+      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()) { //intersection is smallest
+      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;
+    }
+  }//end while
+
+  for (lbnd = EdgeList.right(EdgeList.leftEnd);
+      lbnd != EdgeList.rightEnd;
+      lbnd = EdgeList.right(lbnd)) {
+    callback(lbnd.edge);
+  }
+}
+/**
+* @param vertices [[x1, y1], [x2, y2], â€¦]
+* @returns triangles [[[x1, y1], [x2, y2], [x3, y3]], â€¦]
+ */
+d3.geom.delaunay = function(vertices) {
+  var edges = vertices.map(function() { return []; }),
+      triangles = [];
+
+  // Use the Voronoi tessellation to determine Delaunay edges.
+  d3_voronoi_tessellate(vertices, function(e) {
+    edges[e.region.l.index].push(vertices[e.region.r.index]);
+  });
+
+  // Reconnect the edges into counterclockwise triangles.
+  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;
+};
+// Constructs a new quadtree for the specified array of points. A quadtree is a
+// two-dimensional recursive spatial subdivision. This implementation uses
+// square partitions, dividing each square into four equally-sized squares. Each
+// point exists in a unique node; if multiple points are in the same position,
+// some points may be stored on internal nodes rather than leaf nodes. Quadtrees
+// can be used to accelerate various spatial operations, such as the Barnes-Hut
+// approximation for computing n-body forces, or collision detection.
+d3.geom.quadtree = function(points, x1, y1, x2, y2) {
+  var p,
+      i = -1,
+      n = points.length;
+
+  // Type conversion for deprecated API.
+  if (n && isNaN(points[0].x)) points = points.map(d3_geom_quadtreePoint);
+
+  // Allow bounds to be specified explicitly.
+  if (arguments.length < 5) {
+    if (arguments.length === 3) {
+      y2 = x2 = y1;
+      y1 = x1;
+    } else {
+      x1 = y1 = Infinity;
+      x2 = y2 = -Infinity;
+
+      // Compute bounds.
+      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;
+      }
+
+      // Squarify the bounds.
+      var dx = x2 - x1,
+          dy = y2 - y1;
+      if (dx > dy) y2 = y1 + dx;
+      else x2 = x1 + dy;
+    }
+  }
+
+  // Recursively inserts the specified point p at the node n or one of its
+  // descendants. The bounds are defined by [x1, x2] and [y1, y2].
+  function insert(n, p, x1, y1, x2, y2) {
+    if (isNaN(p.x) || isNaN(p.y)) return; // ignore invalid points
+    if (n.leaf) {
+      var v = n.point;
+      if (v) {
+        // If the point at this leaf node is at the same position as the new
+        // point we are adding, we leave the point associated with the
+        // internal node while adding the new point to a child node. This
+        // avoids infinite recursion.
+        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);
+    }
+  }
+
+  // Recursively inserts the specified point p into a descendant of node n. The
+  // bounds are defined by [x1, x2] and [y1, y2].
+  function insertChild(n, p, x1, y1, x2, y2) {
+    // Compute the split point, and the quadrant in which to insert p.
+    var sx = (x1 + x2) * .5,
+        sy = (y1 + y2) * .5,
+        right = p.x >= sx,
+        bottom = p.y >= sy,
+        i = (bottom << 1) + right;
+
+    // Recursively insert into the child node.
+    n.leaf = false;
+    n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
+
+    // Update the bounds as we recurse.
+    if (right) x1 = sx; else x2 = sx;
+    if (bottom) y1 = sy; else y2 = sy;
+    insert(n, p, x1, y1, x2, y2);
+  }
+
+  // Create the root node.
+  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);
+  };
+
+  // Insert all points.
+  points.forEach(root.add);
+  return root;
+};
+
+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]
+  };
+}
+d3.time = {};
+
+var d3_time = Date;
+
+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;
+d3.time.format = function(template) {
+  var n = template.length;
+
+  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("");
+  }
+
+  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;
+
+    // The am-pm flag is 0 for AM, and 1 for PM.
+    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;
+}
+
+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_formats = {
+  a: function(d) { return d3_time_weekdays[d.getDay()].substring(0, 3); },
+  A: function(d) { return d3_time_weekdays[d.getDay()]; },
+  b: function(d) { return d3_time_months[d.getMonth()].substring(0, 3); },
+  B: function(d) { return d3_time_months[d.getMonth()]; },
+  c: d3.time.format("%a %b %e %H:%M:%S %Y"),
+  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("%m/%d/%y"),
+  X: d3.time.format("%H:%M:%S"),
+  y: function(d) { return d3_time_zfill2(d.getFullYear() % 100); },
+  Y: function(d) { return d3_time_zfill4(d.getFullYear() % 10000); },
+  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,
+  // j: function(d, s, i) { /*TODO day of year [001,366] */ return i; },
+  L: d3_time_parseMilliseconds,
+  m: d3_time_parseMonthNumber,
+  M: d3_time_parseMinutes,
+  p: d3_time_parseAmPm,
+  S: d3_time_parseSeconds,
+  // U: function(d, s, i) { /*TODO week number (sunday) [00,53] */ return i; },
+  // w: function(d, s, i) { /*TODO weekday [0,6] */ return i; },
+  // W: function(d, s, i) { /*TODO week number (monday) [00,53] */ return i; },
+  x: d3_time_parseLocaleDate,
+  X: d3_time_parseLocaleTime,
+  y: d3_time_parseYear,
+  Y: d3_time_parseFullYear
+  // ,
+  // Z: function(d, s, i) { /*TODO time zone */ return i; },
+  // "%": function(d, s, i) { /*TODO literal % */ return i; }
+};
+
+// Note: weekday is validated, but does not set the date.
+function d3_time_parseWeekdayAbbrev(date, string, i) {
+  return d3_time_weekdayAbbrevRe.test(string.substring(i, i += 3)) ? i : -1;
+}
+
+// Note: weekday is validated, but does not set the date.
+function d3_time_parseWeekday(date, string, i) {
+  d3_time_weekdayRe.lastIndex = 0;
+  var n = d3_time_weekdayRe.exec(string.substring(i, i + 10));
+  return n ? i += n[0].length : -1;
+}
+
+var d3_time_weekdayAbbrevRe = /^(?:sun|mon|tue|wed|thu|fri|sat)/i,
+    d3_time_weekdayRe = /^(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/i;
+    d3_time_weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
+
+function d3_time_parseMonthAbbrev(date, string, i) {
+  var n = d3_time_monthAbbrevLookup.get(string.substring(i, i += 3).toLowerCase());
+  return n == null ? -1 : (date.m = n, i);
+}
+
+var d3_time_monthAbbrevLookup = d3.map({
+  jan: 0,
+  feb: 1,
+  mar: 2,
+  apr: 3,
+  may: 4,
+  jun: 5,
+  jul: 6,
+  aug: 7,
+  sep: 8,
+  oct: 9,
+  nov: 10,
+  dec: 11
+});
+
+function d3_time_parseMonth(date, string, i) {
+  d3_time_monthRe.lastIndex = 0;
+  var n = d3_time_monthRe.exec(string.substring(i, i + 12));
+  return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i += n[0].length) : -1;
+}
+
+var d3_time_monthRe = /^(?:January|February|March|April|May|June|July|August|September|October|November|December)/ig;
+
+var d3_time_monthLookup = d3.map({
+  january: 0,
+  february: 1,
+  march: 2,
+  april: 3,
+  may: 4,
+  june: 5,
+  july: 6,
+  august: 7,
+  september: 8,
+  october: 9,
+  november: 10,
+  december: 11
+});
+
+var d3_time_months = [
+  "January",
+  "February",
+  "March",
+  "April",
+  "May",
+  "June",
+  "July",
+  "August",
+  "September",
+  "October",
+  "November",
+  "December"
+];
+
+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_century() + +n[0], i += n[0].length) : -1;
+}
+
+function d3_time_century() {
+  return ~~(new Date().getFullYear() / 1000) * 1000;
+}
+
+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;
+}
+
+// Note: we don't validate that the hour is in the range [0,23] or [1,12].
+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;
+}
+
+// Note: we don't look at the next directive.
+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
+});
+
+// TODO table of time zone offset names?
+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);
+}
+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 ? d3_time_formatIsoNative : d3_time_formatIso;
+
+function d3_time_formatIsoNative(date) {
+  return date.toISOString();
+}
+
+d3_time_formatIsoNative.parse = function(string) {
+  return new Date(string);
+};
+
+d3_time_formatIsoNative.toString = d3_time_formatIso.toString;
+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.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); // DST breaks setSeconds
+}, 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); // DST breaks setMinutes
+}, 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); // DST breaks setHours
+}, 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) {
+  return new d3_time(date.getFullYear(), date.getMonth(), date.getDate());
+}, 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) / 864e5 - (date.getTimezoneOffset() - year.getTimezoneOffset()) / 1440);
+};
+d3_time_weekdays.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) {
+  return new d3_time(date.getFullYear(), date.getMonth(), 1);
+}, 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) {
+  return new d3_time(date.getFullYear(), 0, 1);
+}, 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;
+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) {
+    var extent = d3_time_scaleExtent(scale.domain());
+    return scale.domain([m.floor(extent[0]), m.ceil(extent[1])]);
+  };
+
+  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); // inclusive upper bound
+  };
+
+  scale.tickFormat = function() {
+    return format;
+  };
+
+  scale.copy = function() {
+    return d3_time_scale(linear.copy(), methods, format);
+  };
+
+  // TOOD expose d3_scale_linear_rebind?
+  return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
+}
+
+// TODO expose d3_scaleExtent?
+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); // Y2K fail
+  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,    // 1-second
+  5e3,    // 5-second
+  15e3,   // 15-second
+  3e4,    // 30-second
+  6e4,    // 1-minute
+  3e5,    // 5-minute
+  9e5,    // 15-minute
+  18e5,   // 30-minute
+  36e5,   // 1-hour
+  108e5,  // 3-hour
+  216e5,  // 6-hour
+  432e5,  // 12-hour
+  864e5,  // 1-day
+  1728e5, // 2-day
+  6048e5, // 1-week
+  2592e6, // 1-month
+  7776e6, // 3-month
+  31536e6 // 1-year
+];
+
+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);
+
+function d3_time_scaleUTCSetYear(y) {
+  var d = new Date(Date.UTC(y, 0, 1));
+  d.setUTCFullYear(y); // Y2K fail
+  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);
+};
+})();
diff --git a/static/vendor/d3-2.8.1/d3.v2.min.js b/static/vendor/d3-2.8.1/d3.v2.min.js
new file mode 100755 (executable)
index 0000000..dddd929
--- /dev/null
@@ -0,0 +1,4 @@
+(function(){function e(a,b){try{for(var c in b)Object.defineProperty(a.prototype,c,{value:b[c],enumerable:!1})}catch(d){a.prototype=b}}function g(a){var b=-1,c=a.length,d=[];while(++b<c)d.push(a[b]);return d}function h(a){return Array.prototype.slice.call(a)}function k(){}function n(){return this}function o(a,b,c){return function(){var d=c.apply(b,arguments);return arguments.length?a:d}}function p(a){return a!=null&&!isNaN(a)}function q(a){return a.length}function s(a){return a==null}function t(a){return a.replace(/(^\s+)|(\s+$)/g,"").replace(/\s+/g," ")}function u(a){var b=1;while(a*b%1)b*=10;return b}function x(){}function y(a){function d(){var c=b,d=-1,e=c.length,f;while(++d<e)(f=c[d].on)&&f.apply(this,arguments);return a}var b=[],c=new k;return d.on=function(d,e){var f=c.get(d),g;return arguments.length<2?f&&f.on:(f&&(f.on=null,b=b.slice(0,g=b.indexOf(f)).concat(b.slice(g+1)),c.remove(d)),e&&b.push(c.set(d,{on:e})),a)},d}function B(a,b){return b-(a?1+Math.floor(Math.log(a+Math.pow(10,1+Math.floor(Math.log(a)/Math.LN10)-b))/Math.LN10):1)}function C(a){return a+""}function D(a){var b=a.lastIndexOf("."),c=b>=0?a.substring(b):(b=a.length,""),d=[];while(b>0)d.push(a.substring(b-=3,b+3));return d.reverse().join(",")+c}function F(a,b){return{scale:Math.pow(10,(8-b)*3),symbol:a}}function L(a){return function(b){return b<=0?0:b>=1?1:a(b)}}function M(a){return function(b){return 1-a(1-b)}}function N(a){return function(b){return.5*(b<.5?a(2*b):2-a(2-2*b))}}function O(a){return a}function P(a){return function(b){return Math.pow(b,a)}}function Q(a){return 1-Math.cos(a*Math.PI/2)}function R(a){return Math.pow(2,10*(a-1))}function S(a){return 1-Math.sqrt(1-a*a)}function T(a,b){var c;return arguments.length<2&&(b=.45),arguments.length<1?(a=1,c=b/4):c=b/(2*Math.PI)*Math.asin(1/a),function(d){return 1+a*Math.pow(2,10*-d)*Math.sin((d-c)*2*Math.PI/b)}}function U(a){return a||(a=1.70158),function(b){return b*b*((a+1)*b-a)}}function V(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}function W(){d3.event.stopPropagation(),d3.event.preventDefault()}function X(){var a=d3.event,b;while(b=a.sourceEvent)a=b;return a}function Y(a){var b=new x,c=0,d=arguments.length;while(++c<d)b[arguments[c]]=y(b);return b.of=function(c,d){return function(e){try{var f=e.sourceEvent=d3.event;e.target=a,d3.event=e,b[e.type].apply(c,d)}finally{d3.event=f}}},b}function $(a){return a=="transform"?d3.interpolateTransform:d3.interpolate}function _(a,b){return b=b-(a=+a)?1/(b-a):0,function(c){return(c-a)*b}}function ba(a,b){return b=b-(a=+a)?1/(b-a):0,function(c){return Math.max(0,Math.min(1,(c-a)*b))}}function bb(a,b,c){return new bc(a,b,c)}function bc(a,b,c){this.r=a,this.g=b,this.b=c}function bd(a){return a<16?"0"+Math.max(0,a).toString(16):Math.min(255,a).toString(16)}function be(a,b,c){var d=0,e=0,f=0,g,h,i;g=/([a-z]+)\((.*)\)/i.exec(a);if(g){h=g[2].split(",");switch(g[1]){case"hsl":return c(parseFloat(h[0]),parseFloat(h[1])/100,parseFloat(h[2])/100);case"rgb":return b(bg(h[0]),bg(h[1]),bg(h[2]))}}return(i=bh.get(a))?b(i.r,i.g,i.b):(a!=null&&a.charAt(0)==="#"&&(a.length===4?(d=a.charAt(1),d+=d,e=a.charAt(2),e+=e,f=a.charAt(3),f+=f):a.length===7&&(d=a.substring(1,3),e=a.substring(3,5),f=a.substring(5,7)),d=parseInt(d,16),e=parseInt(e,16),f=parseInt(f,16)),b(d,e,f))}function bf(a,b,c){var d=Math.min(a/=255,b/=255,c/=255),e=Math.max(a,b,c),f=e-d,g,h,i=(e+d)/2;return f?(h=i<.5?f/(e+d):f/(2-e-d),a==e?g=(b-c)/f+(b<c?6:0):b==e?g=(c-a)/f+2:g=(a-b)/f+4,g*=60):h=g=0,bi(g,h,i)}function bg(a){var b=parseFloat(a);return a.charAt(a.length-1)==="%"?Math.round(b*2.55):b}function bi(a,b,c){return new bj(a,b,c)}function bj(a,b,c){this.h=a,this.s=b,this.l=c}function bk(a,b,c){function f(a){return a>360?a-=360:a<0&&(a+=360),a<60?d+(e-d)*a/60:a<180?e:a<240?d+(e-d)*(240-a)/60:d}function g(a){return Math.round(f(a)*255)}var d,e;return a%=360,a<0&&(a+=360),b=b<0?0:b>1?1:b,c=c<0?0:c>1?1:c,e=c<=.5?c*(1+b):c+b-c*b,d=2*c-e,bb(g(a+120),g(a),g(a-120))}function bl(a){return j(a,br),a}function bs(a){return function(){return bm(a,this)}}function bt(a){return function(){return bn(a,this)}}function bv(a,b){function f(){if(b=this.classList)return b.add(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;c.lastIndex=0,c.test(e)||(e=t(e+" "+a),d?b.baseVal=e:this.className=e)}function g(){if(b=this.classList)return b.remove(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;e=t(e.replace(c," ")),d?b.baseVal=e:this.className=e}function h(){(b.apply(this,arguments)?f:g).call(this)}var c=new RegExp("(^|\\s+)"+d3.requote(a)+"(\\s+|$)","g");if(arguments.length<2){var d=this.node();if(e=d.classList)return e.contains(a);var e=d.className;return c.lastIndex=0,c.test(e.baseVal!=null?e.baseVal:e)}return this.each(typeof b=="function"?h:b?f:g)}function bw(a){return{__data__:a}}function bx(a){return function(){return bq(this,a)}}function by(a){return arguments.length||(a=d3.ascending),function(b,c){return a(b&&b.__data__,c&&c.__data__)}}function bA(a){return j(a,bB),a}function bC(a,b,c){j(a,bG);var d=new k,e=d3.dispatch("start","end"),f=bO;return a.id=b,a.time=c,a.tween=function(b,c){return arguments.length<2?d.get(b):(c==null?d.remove(b):d.set(b,c),a)},a.ease=function(b){return arguments.length?(f=typeof b=="function"?b:d3.ease.apply(d3,arguments),a):f},a.each=function(b,c){return arguments.length<2?bP.call(a,b):(e.on(b,c),a)},d3.timer(function(g){return a.each(function(h,i,j){function p(a){return o.active>b?r():(o.active=b,d.forEach(function(a,b){(tween=b.call(l,h,i))&&k.push(tween)}),e.start.call(l,h,i),q(a)||d3.timer(q,0,c),1)}function q(a){if(o.active!==b)return r();var c=(a-m)/n,d=f(c),g=k.length;while(g>0)k[--g].call(l,d);if(c>=1)return r(),bI=b,e.end.call(l,h,i),bI=0,1}function r(){return--o.count||delete l.__transition__,1}var k=[],l=this,m=a[j][i].delay,n=a[j][i].duration,o=l.__transition__||(l.__transition__={active:0,count:0});++o.count,m<=g?p(g):d3.timer(p,m,c)}),1},0,c),a}function bE(a,b,c){return c!=""&&bD}function bF(a,b){function d(a,d,e){var f=b.call(this,a,d);return f==null?e!=""&&bD:e!=f&&c(e,f)}function e(a,d,e){return e!=b&&c(e,b)}var c=$(a);return typeof b=="function"?d:b==null?bE:(b+="",e)}function bP(a){var b=bI,c=bO,d=bM,e=bN;bI=this.id,bO=this.ease();for(var f=0,g=this.length;f<g;f++)for(var h=this[f],i=0,j=h.length;i<j;i++){var k=h[i];k&&(bM=this[f][i].delay,bN=this[f][i].duration,a.call(k=k.node,k.__data__,i,f))}return bI=b,bO=c,bM=d,bN=e,this}function bT(){var a,b=Date.now(),c=bQ;while(c)a=b-c.then,a>=c.delay&&(c.flush=c.callback(a)),c=c.next;var d=bU()-b;d>24?(isFinite(d)&&(clearTimeout(bS),bS=setTimeout(bT,d)),bR=0):(bR=1,bV(bT))}function bU(){var a=null,b=bQ,c=Infinity;while(b)b.flush?b=a?a.next=b.next:bQ=b.next:(c=Math.min(c,b.then+b.delay),b=(a=b).next);return c}function bW(a){var b=[a.a,a.b],c=[a.c,a.d],d=bY(b),e=bX(b,c),f=bY(bZ(c,b,-e))||0;b[0]*c[1]<c[0]*b[1]&&(b[0]*=-1,b[1]*=-1,d*=-1,e*=-1),this.rotate=(d?Math.atan2(b[1],b[0]):Math.atan2(-c[0],c[1]))*b$,this.translate=[a.e,a.f],this.scale=[d,f],this.skew=f?Math.atan2(e,f)*b$:0}function bX(a,b){return a[0]*b[0]+a[1]*b[1]}function bY(a){var b=Math.sqrt(bX(a,a));return b&&(a[0]/=b,a[1]/=b),b}function bZ(a,b,c){return a[0]+=c*b[0],a[1]+=c*b[1],a}function ca(a,b){var c=a.ownerSVGElement||a;if(c.createSVGPoint){var d=c.createSVGPoint();if(b_<0&&(window.scrollX||window.scrollY)){c=d3.select(document.body).append("svg").style("position","absolute").style("top",0).style("left",0);var e=c[0][0].getScreenCTM();b_=!e.f&&!e.e,c.remove()}return b_?(d.x=b.pageX,d.y=b.pageY):(d.x=b.clientX,d.y=b.clientY),d=d.matrixTransform(a.getScreenCTM().inverse()),[d.x,d.y]}var f=a.getBoundingClientRect();return[b.clientX-f.left-a.clientLeft,b.clientY-f.top-a.clientTop]}function cb(){}function cc(a){var b=a[0],c=a[a.length-1];return b<c?[b,c]:[c,b]}function cd(a){return a.rangeExtent?a.rangeExtent():cc(a.range())}function ce(a,b){var c=0,d=a.length-1,e=a[c],f=a[d],g;f<e&&(g=c,c=d,d=g,g=e,e=f,f=g);if(g=f-e)b=b(g),a[c]=b.floor(e),a[d]=b.ceil(f);return a}function cf(){return Math}function cg(a,b,c,d){function g(){var g=Math.min(a.length,b.length)>2?cn:cm,i=d?ba:_;return e=g(a,b,i,c),f=g(b,a,i,d3.interpolate),h}function h(a){return e(a)}var e,f;return h.invert=function(a){return f(a)},h.domain=function(b){return arguments.length?(a=b.map(Number),g()):a},h.range=function(a){return arguments.length?(b=a,g()):b},h.rangeRound=function(a){return h.range(a).interpolate(d3.interpolateRound)},h.clamp=function(a){return arguments.length?(d=a,g()):d},h.interpolate=function(a){return arguments.length?(c=a,g()):c},h.ticks=function(b){return ck(a,b)},h.tickFormat=function(b){return cl(a,b)},h.nice=function(){return ce(a,ci),g()},h.copy=function(){return cg(a,b,c,d)},g()}function ch(a,b){return d3.rebind(a,b,"range","rangeRound","interpolate","clamp")}function ci(a){return a=Math.pow(10,Math.round(Math.log(a)/Math.LN10)-1),{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}}function cj(a,b){var c=cc(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/b)/Math.LN10)),f=b/d*e;return f<=.15?e*=10:f<=.35?e*=5:f<=.75&&(e*=2),c[0]=Math.ceil(c[0]/e)*e,c[1]=Math.floor(c[1]/e)*e+e*.5,c[2]=e,c}function ck(a,b){return d3.range.apply(d3,cj(a,b))}function cl(a,b){return d3.format(",."+Math.max(0,-Math.floor(Math.log(cj(a,b)[2])/Math.LN10+.01))+"f")}function cm(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function cn(a,b,c,d){var e=[],f=[],g=0,h=Math.min(a.length,b.length)-1;a[h]<a[0]&&(a=a.slice().reverse(),b=b.slice().reverse());while(++g<=h)e.push(c(a[g-1],a[g])),f.push(d(b[g-1],b[g]));return function(b){var c=d3.bisect(a,b,1,h)-1;return f[c](e[c](b))}}function co(a,b){function d(c){return a(b(c))}var c=b.pow;return d.invert=function(b){return c(a.invert(b))},d.domain=function(e){return arguments.length?(b=e[0]<0?cr:cq,c=b.pow,a.domain(e.map(b)),d):a.domain().map(c)},d.nice=function(){return a.domain(ce(a.domain(),cf)),d},d.ticks=function(){var d=cc(a.domain()),e=[];if(d.every(isFinite)){var f=Math.floor(d[0]),g=Math.ceil(d[1]),h=c(d[0]),i=c(d[1]);if(b===cr){e.push(c(f));for(;f++<g;)for(var j=9;j>0;j--)e.push(c(f)*j)}else{for(;f<g;f++)for(var j=1;j<10;j++)e.push(c(f)*j);e.push(c(f))}for(f=0;e[f]<h;f++);for(g=e.length;e[g-1]>i;g--);e=e.slice(f,g)}return e},d.tickFormat=function(a,e){arguments.length<2&&(e=cp);if(arguments.length<1)return e;var f=a/d.ticks().length,g=b===cr?(h=-1e-12,Math.floor):(h=1e-12,Math.ceil),h;return function(a){return a/c(g(b(a)+h))<f?e(a):""}},d.copy=function(){return co(a.copy(),b)},ch(d,a)}function cq(a){return Math.log(a<0?0:a)/Math.LN10}function cr(a){return-Math.log(a>0?0:-a)/Math.LN10}function cs(a,b){function e(b){return a(c(b))}var c=ct(b),d=ct(1/b);return e.invert=function(b){return d(a.invert(b))},e.domain=function(b){return arguments.length?(a.domain(b.map(c)),e):a.domain().map(d)},e.ticks=function(a){return ck(e.domain(),a)},e.tickFormat=function(a){return cl(e.domain(),a)},e.nice=function(){return e.domain(ce(e.domain(),ci))},e.exponent=function(a){if(!arguments.length)return b;var f=e.domain();return c=ct(b=a),d=ct(1/b),e.domain(f)},e.copy=function(){return cs(a.copy(),b)},ch(e,a)}function ct(a){return function(b){return b<0?-Math.pow(-b,a):Math.pow(b,a)}}function cu(a,b){function f(b){return d[((c.get(b)||c.set(b,a.push(b)))-1)%d.length]}function g(b,c){return d3.range(a.length).map(function(a){return b+c*a})}var c,d,e;return f.domain=function(d){if(!arguments.length)return a;a=[],c=new k;var e=-1,g=d.length,h;while(++e<g)c.has(h=d[e])||c.set(h,a.push(h));return f[b.t](b.x,b.p)},f.range=function(a){return arguments.length?(d=a,e=0,b={t:"range",x:a},f):d},f.rangePoints=function(c,h){arguments.length<2&&(h=0);var i=c[0],j=c[1],k=(j-i)/(a.length-1+h);return d=g(a.length<2?(i+j)/2:i+k*h/2,k),e=0,b={t:"rangePoints",x:c,p:h},f},f.rangeBands=function(c,h){arguments.length<2&&(h=0);var i=c[1]<c[0],j=c[i-0],k=c[1-i],l=(k-j)/(a.length+h);return d=g(j+l*h,l),i&&d.reverse(),e=l*(1-h),b={t:"rangeBands",x:c,p:h},f},f.rangeRoundBands=function(c,h){arguments.length<2&&(h=0);var i=c[1]<c[0],j=c[i-0],k=c[1-i],l=Math.floor((k-j)/(a.length+h)),m=k-j-(a.length-h)*l;return d=g(j+Math.round(m/2),l),i&&d.reverse(),e=Math.round(l*(1-h)),b={t:"rangeRoundBands",x:c,p:h},f},f.rangeBand=function(){return e},f.rangeExtent=function(){return cc(b.x)},f.copy=function(){return cu(a,b)},f.domain(a)}function cz(a,b){function d(){var d=0,f=a.length,g=b.length;c=[];while(++d<g)c[d-1]=d3.quantile(a,d/g);return e}function e(a){return isNaN(a=+a)?NaN:b[d3.bisect(c,a)]}var c;return e.domain=function(b){return arguments.length?(a=b.filter(function(a){return!isNaN(a)}).sort(d3.ascending),d()):a},e.range=function(a){return arguments.length?(b=a,d()):b},e.quantiles=function(){return c},e.copy=function(){return cz(a,b)},d()}function cA(a,b,c){function f(b){return c[Math.max(0,Math.min(e,Math.floor(d*(b-a))))]}function g(){return d=c.length/(b-a),e=c.length-1,f}var d,e;return f.domain=function(c){return arguments.length?(a=+c[0],b=+c[c.length-1],g()):[a,b]},f.range=function(a){return arguments.length?(c=a,g()):c},f.copy=function(){return cA(a,b,c)},g()}function cB(a){function b(a){return+a}return b.invert=b,b.domain=b.range=function(c){return arguments.length?(a=c.map(b),b):a},b.ticks=function(b){return ck(a,b)},b.tickFormat=function(b){return cl(a,b)},b.copy=function(){return cB(a)},b}function cE(a){return a.innerRadius}function cF(a){return a.outerRadius}function cG(a){return a.startAngle}function cH(a){return a.endAngle}function cI(a){function g(d){return d.length<1?null:"M"+e(a(cJ(this,d,b,c)),f)}var b=cK,c=cL,d=cM,e=cN.get(d),f=.7;return g.x=function(a){return arguments.length?(b=a,g):b},g.y=function(a){return arguments.length?(c=a,g):c},g.interpolate=function(a){return arguments.length?(cN.has(a+="")||(a=cM),e=cN.get(d=a),g):d},g.tension=function(a){return arguments.length?(f=a,g):f},g}function cJ(a,b,c,d){var e=[],f=-1,g=b.length,h=typeof c=="function",i=typeof d=="function",j;if(h&&i)while(++f<g)e.push([c.call(a,j=b[f],f),d.call(a,j,f)]);else if(h)while(++f<g)e.push([c.call(a,b[f],f),d]);else if(i)while(++f<g)e.push([c,d.call(a,b[f],f)]);else while(++f<g)e.push([c,d]);return e}function cK(a){return a[0]}function cL(a){return a[1]}function cO(a){var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];while(++b<c)e.push("L",(d=a[b])[0],",",d[1]);return e.join("")}function cP(a){var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];while(++b<c)e.push("V",(d=a[b])[1],"H",d[0]);return e.join("")}function cQ(a){var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];while(++b<c)e.push("H",(d=a[b])[0],"V",d[1]);return e.join("")}function cR(a,b){return a.length<4?cO(a):a[1]+cU(a.slice(1,a.length-1),cV(a,b))}function cS(a,b){return a.length<3?cO(a):a[0]+cU((a.push(a[0]),a),cV([a[a.length-2]].concat(a,[a[1]]),b))}function cT(a,b,c){return a.length<3?cO(a):a[0]+cU(a,cV(a,b))}function cU(a,b){if(b.length<1||a.length!=b.length&&a.length!=b.length+2)return cO(a);var c=a.length!=b.length,d="",e=a[0],f=a[1],g=b[0],h=g,i=1;c&&(d+="Q"+(f[0]-g[0]*2/3)+","+(f[1]-g[1]*2/3)+","+f[0]+","+f[1],e=a[1],i=2);if(b.length>1){h=b[1],f=a[i],i++,d+="C"+(e[0]+g[0])+","+(e[1]+g[1])+","+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1];for(var j=2;j<b.length;j++,i++)f=a[i],h=b[j],d+="S"+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1]}if(c){var k=a[i];d+="Q"+(f[0]+h[0]*2/3)+","+(f[1]+h[1]*2/3)+","+k[0]+","+k[1]}return d}function cV(a,b){var c=[],d=(1-b)/2,e,f=a[0],g=a[1],h=1,i=a.length;while(++h<i)e=f,f=g,g=a[h],c.push([d*(g[0]-e[0]),d*(g[1]-e[1])]);return c}function cW(a){if(a.length<3)return cO(a);var b=1,c=a.length,d=a[0],e=d[0],f=d[1],g=[e,e,e,(d=a[1])[0]],h=[f,f,f,d[1]],i=[e,",",f];dc(i,g,h);while(++b<c)d=a[b],g.shift(),g.push(d[0]),h.shift(),h.push(d[1]),dc(i,g,h);b=-1;while(++b<2)g.shift(),g.push(d[0]),h.shift(),h.push(d[1]),dc(i,g,h);return i.join("")}function cX(a){if(a.length<4)return cO(a);var b=[],c=-1,d=a.length,e,f=[0],g=[0];while(++c<3)e=a[c],f.push(e[0]),g.push(e[1]);b.push(c$(db,f)+","+c$(db,g)),--c;while(++c<d)e=a[c],f.shift(),f.push(e[0]),g.shift(),g.push(e[1]),dc(b,f,g);return b.join("")}function cY(a){var b,c=-1,d=a.length,e=d+4,f,g=[],h=[];while(++c<4)f=a[c%d],g.push(f[0]),h.push(f[1]);b=[c$(db,g),",",c$(db,h)],--c;while(++c<e)f=a[c%d],g.shift(),g.push(f[0]),h.shift(),h.push(f[1]),dc(b,g,h);return b.join("")}function cZ(a,b){var c=a.length-1,d=a[0][0],e=a[0][1],f=a[c][0]-d,g=a[c][1]-e,h=-1,i,j;while(++h<=c)i=a[h],j=h/c,i[0]=b*i[0]+(1-b)*(d+j*f),i[1]=b*i[1]+(1-b)*(e+j*g);return cW(a)}function c$(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]}function dc(a,b,c){a.push("C",c$(c_,b),",",c$(c_,c),",",c$(da,b),",",c$(da,c),",",c$(db,b),",",c$(db,c))}function dd(a,b){return(b[1]-a[1])/(b[0]-a[0])}function de(a){var b=0,c=a.length-1,d=[],e=a[0],f=a[1],g=d[0]=dd(e,f);while(++b<c)d[b]=g+(g=dd(e=f,f=a[b+1]));return d[b]=g,d}function df(a){var b=[],c,d,e,f,g=de(a),h=-1,i=a.length-1;while(++h<i)c=dd(a[h],a[h+1]),Math.abs(c)<1e-6?g[h]=g[h+1]=0:(d=g[h]/c,e=g[h+1]/c,f=d*d+e*e,f>9&&(f=c*3/Math.sqrt(f),g[h]=f*d,g[h+1]=f*e));h=-1;while(++h<=i)f=(a[Math.min(i,h+1)][0]-a[Math.max(0,h-1)][0])/(6*(1+g[h]*g[h])),b.push([f||0,g[h]*f||0]);return b}function dg(a){return a.length<3?cO(a):a[0]+cU(a,df(a))}function dh(a){var b,c=-1,d=a.length,e,f;while(++c<d)b=a[c],e=b[0],f=b[1]+cC,b[0]=e*Math.cos(f),b[1]=e*Math.sin(f);return a}function di(a){function j(f){if(f.length<1)return null;var j=cJ(this,f,b,d),k=cJ(this,f,b===c?dj(j):c,d===e?dk(j):e);return"M"+g(a(k),i)+"L"+h(a(j.reverse()),i)+"Z"}var b=cK,c=cK,d=0,e=cL,f,g,h,i=.7;return j.x=function(a){return arguments.length?(b=c=a,j):c},j.x0=function(a){return arguments.length?(b=a,j):b},j.x1=function(a){return arguments.length?(c=a,j):c},j.y=function(a){return arguments.length?(d=e=a,j):e},j.y0=function(a){return arguments.length?(d=a,j):d},j.y1=function(a){return arguments.length?(e=a,j):e},j.interpolate=function(a){return arguments.length?(cN.has(a+="")||(a=cM),g=cN.get(f=a),h=g.reverse||g,j):f},j.tension=function(a){return arguments.length?(i=a,j):i},j.interpolate("linear")}function dj(a){return function(b,c){return a[c][0]}}function dk(a){return function(b,c){return a[c][1]}}function dl(a){return a.source}function dm(a){return a.target}function dn(a){return a.radius}function dp(a){return a.startAngle}function dq(a){return a.endAngle}function dr(a){return[a.x,a.y]}function ds(a){return function(){var b=a.apply(this,arguments),c=b[0],d=b[1]+cC;return[c*Math.cos(d),c*Math.sin(d)]}}function dt(){return 64}function du(){return"circle"}function dv(a){var b=Math.sqrt(a/Math.PI);return"M0,"+b+"A"+b+","+b+" 0 1,1 0,"+ -b+"A"+b+","+b+" 0 1,1 0,"+b+"Z"}function dz(a,b){a.attr("transform",function(a){return"translate("+b(a)+",0)"})}function dA(a,b){a.attr("transform",function(a){return"translate(0,"+b(a)+")"})}function dB(a,b,c){e=[];if(c&&b.length>1){var d=cc(a.domain()),e,f=-1,g=b.length,h=(b[1]-b[0])/++c,i,j;while(++f<g)for(i=c;--i>0;)(j=+b[f]-i*h)>=d[0]&&e.push(j);for(--f,i=0;++i<c&&(j=+b[f]+i*h)<d[1];)e.push(j)}return e}function dG(){dE||(dE=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 a=d3.event,b;try{dE.scrollTop=1e3,dE.dispatchEvent(a),b=1e3-dE.scrollTop}catch(c){b=a.wheelDelta||-a.detail*5}return b}function dH(a){var b=a.source,c=a.target,d=dJ(b,c),e=[b];while(b!==d)b=b.parent,e.push(b);var f=e.length;while(c!==d)e.splice(f,0,c),c=c.parent;return e}function dI(a){var b=[],c=a.parent;while(c!=null)b.push(a),a=c,c=c.parent;return b.push(a),b}function dJ(a,b){if(a===b)return a;var c=dI(a),d=dI(b),e=c.pop(),f=d.pop(),g=null;while(e===f)g=e,e=c.pop(),f=d.pop();return g}function dM(a){a.fixed|=2}function dN(a){a!==dL&&(a.fixed&=1)}function dO(){dL.fixed&=1,dK=dL=null}function dP(){dL.px=d3.event.x,dL.py=d3.event.y,dK.resume()}function dQ(a,b,c){var d=0,e=0;a.charge=0;if(!a.leaf){var f=a.nodes,g=f.length,h=-1,i;while(++h<g){i=f[h];if(i==null)continue;dQ(i,b,c),a.charge+=i.charge,d+=i.charge*i.cx,e+=i.charge*i.cy}}if(a.point){a.leaf||(a.point.x+=Math.random()-.5,a.point.y+=Math.random()-.5);var j=b*c[a.point.index];a.charge+=a.pointCharge=j,d+=j*a.point.x,e+=j*a.point.y}a.cx=d/a.charge,a.cy=e/a.charge}function dR(a){return 20}function dS(a){return 1}function dU(a){return a.x}function dV(a){return a.y}function dW(a,b,c){a.y0=b,a.y=c}function dZ(a){return d3.range(a.length)}function d$(a){var b=-1,c=a[0].length,d=[];while(++b<c)d[b]=0;return d}function d_(a){var b=1,c=0,d=a[0][1],e,f=a.length;for(;b<f;++b)(e=a[b][1])>d&&(c=b,d=e);return c}function ea(a){return a.reduce(eb,0)}function eb(a,b){return a+b[1]}function ec(a,b){return ed(a,Math.ceil(Math.log(b.length)/Math.LN2+1))}function ed(a,b){var c=-1,d=+a[0],e=(a[1]-d)/b,f=[];while(++c<=b)f[c]=e*c+d;return f}function ee(a){return[d3.min(a),d3.max(a)]}function ef(a,b){return d3.rebind(a,b,"sort","children","value"),a.links=ej,a.nodes=function(b){return ek=!0,(a.nodes=a)(b)},a}function eg(a){return a.children}function eh(a){return a.value}function ei(a,b){return b.value-a.value}function ej(a){return d3.merge(a.map(function(a){return(a.children||[]).map(function(b){return{source:a,target:b}})}))}function el(a,b){return a.value-b.value}function em(a,b){var c=a._pack_next;a._pack_next=b,b._pack_prev=a,b._pack_next=c,c._pack_prev=b}function en(a,b){a._pack_next=b,b._pack_prev=a}function eo(a,b){var c=b.x-a.x,d=b.y-a.y,e=a.r+b.r;return e*e-c*c-d*d>.001}function ep(a){function l(a){b=Math.min(a.x-a.r,b),c=Math.max(a.x+a.r,c),d=Math.min(a.y-a.r,d),e=Math.max(a.y+a.r,e)}var b=Infinity,c=-Infinity,d=Infinity,e=-Infinity,f=a.length,g,h,i,j,k;a.forEach(eq),g=a[0],g.x=-g.r,g.y=0,l(g);if(f>1){h=a[1],h.x=h.r,h.y=0,l(h);if(f>2){i=a[2],eu(g,h,i),l(i),em(g,i),g._pack_prev=i,em(i,h),h=g._pack_next;for(var m=3;m<f;m++){eu(g,h,i=a[m]);var n=0,o=1,p=1;for(j=h._pack_next;j!==h;j=j._pack_next,o++)if(eo(j,i)){n=1;break}if(n==1)for(k=g._pack_prev;k!==j._pack_prev;k=k._pack_prev,p++)if(eo(k,i))break;n?(o<p||o==p&&h.r<g.r?en(g,h=j):en(g=k,h),m--):(em(g,i),h=i,l(i))}}}var q=(b+c)/2,r=(d+e)/2,s=0;for(var m=0;m<f;m++){var t=a[m];t.x-=q,t.y-=r,s=Math.max(s,t.r+Math.sqrt(t.x*t.x+t.y*t.y))}return a.forEach(er),s}function eq(a){a._pack_next=a._pack_prev=a}function er(a){delete a._pack_next,delete a._pack_prev}function es(a){var b=a.children;b&&b.length?(b.forEach(es),a.r=ep(b)):a.r=Math.sqrt(a.value)}function et(a,b,c,d){var e=a.children;a.x=b+=d*a.x,a.y=c+=d*a.y,a.r*=d;if(e){var f=-1,g=e.length;while(++f<g)et(e[f],b,c,d)}}function eu(a,b,c){var d=a.r+c.r,e=b.x-a.x,f=b.y-a.y;if(d&&(e||f)){var g=b.r+c.r,h=Math.sqrt(e*e+f*f),i=Math.max(-1,Math.min(1,(d*d+h*h-g*g)/(2*d*h))),j=Math.acos(i),k=i*(d/=h),l=Math.sin(j)*d;c.x=a.x+k*e+l*f,c.y=a.y+k*f-l*e}else c.x=a.x+d,c.y=a.y}function ev(a){return 1+d3.max(a,function(a){return a.y})}function ew(a){return a.reduce(function(a,b){return a+b.x},0)/a.length}function ex(a){var b=a.children;return b&&b.length?ex(b[0]):a}function ey(a){var b=a.children,c;return b&&(c=b.length)?ey(b[c-1]):a}function ez(a,b){return a.parent==b.parent?1:2}function eA(a){var b=a.children;return b&&b.length?b[0]:a._tree.thread}function eB(a){var b=a.children,c;return b&&(c=b.length)?b[c-1]:a._tree.thread}function eC(a,b){var c=a.children;if(c&&(e=c.length)){var d,e,f=-1;while(++f<e)b(d=eC(c[f],b),a)>0&&(a=d)}return a}function eD(a,b){return a.x-b.x}function eE(a,b){return b.x-a.x}function eF(a,b){return a.depth-b.depth}function eG(a,b){function c(a,d){var e=a.children;if(e&&(i=e.length)){var f,g=null,h=-1,i;while(++h<i)f=e[h],c(f,g),g=f}b(a,d)}c(a,null)}function eH(a){var b=0,c=0,d=a.children,e=d.length,f;while(--e>=0)f=d[e]._tree,f.prelim+=b,f.mod+=b,b+=f.shift+(c+=f.change)}function eI(a,b,c){a=a._tree,b=b._tree;var d=c/(b.number-a.number);a.change+=d,b.change-=d,b.shift+=c,b.prelim+=c,b.mod+=c}function eJ(a,b,c){return a._tree.ancestor.parent==b.parent?a._tree.ancestor:c}function eK(a){return{x:a.x,y:a.y,dx:a.dx,dy:a.dy}}function eL(a,b){var c=a.x+b[3],d=a.y+b[0],e=a.dx-b[1]-b[3],f=a.dy-b[0]-b[2];return e<0&&(c+=e/2,e=0),f<0&&(d+=f/2,f=0),{x:c,y:d,dx:e,dy:f}}function eM(a){return a.map(eN).join(",")}function eN(a){return/[",\n]/.test(a)?'"'+a.replace(/\"/g,'""')+'"':a}function eP(a,b){return function(c){return c&&a.hasOwnProperty(c.type)?a[c.type](c):b}}function eQ(a){return"m0,"+a+"a"+a+","+a+" 0 1,1 0,"+ -2*a+"a"+a+","+a+" 0 1,1 0,"+2*a+"z"}function eR(a,b){eS.hasOwnProperty(a.type)&&eS[a.type](a,b)}function eT(a,b){eR(a.geometry,b)}function eU(a,b){for(var c=a.features,d=0,e=c.length;d<e;d++)eR(c[d].geometry,b)}function eV(a,b){for(var c=a.geometries,d=0,e=c.length;d<e;d++)eR(c[d],b)}function eW(a,b){for(var c=a.coordinates,d=0,e=c.length;d<e;d++)b.apply(null,c[d])}function eX(a,b){for(var c=a.coordinates,d=0,e=c.length;d<e;d++)for(var f=c[d],g=0,h=f.length;g<h;g++)b.apply(null,f[g])}function eY(a,b){for(var c=a.coordinates,d=0,e=c.length;d<e;d++)for(var f=c[d][0],g=0,h=f.length;g<h;g++)b.apply(null,f[g])}function eZ(a,b){b.apply(null,a.coordinates)}function e$(a,b){for(var c=a.coordinates[0],d=0,e=c.length;d<e;d++)b.apply(null,c[d])}function e_(a){return a.source}function fa(a){return a.target}function fb(a,b){function q(a){var b=Math.sin(o-(a*=o))/p,c=Math.sin(a)/p,f=b*g*d+c*m*j,i=b*g*e+c*m*k,l=b*h+c*n;return[Math.atan2(i,f)/eO,Math.atan2(l,Math.sqrt(f*f+i*i))/eO]}var c=a[0]*eO,d=Math.cos(c),e=Math.sin(c),f=a[1]*eO,g=Math.cos(f),h=Math.sin(f),i=b[0]*eO,j=Math.cos(i),k=Math.sin(i),l=b[1]*eO,m=Math.cos(l),n=Math.sin(l),o=q.d=Math.acos(Math.max(-1,Math.min(1,h*n+g*m*Math.cos(i-c)))),p=Math.sin(o);return q}function fe(a){var b=0,c=0;for(;;){if(a(b,c))return[b,c];b===0?(b=c+1,c=0):(b-=1,c+=1)}}function ff(a,b,c,d){var e,f,g,h,i,j,k;return e=d[a],f=e[0],g=e[1],e=d[b],h=e[0],i=e[1],e=d[c],j=e[0],k=e[1],(k-g)*(h-f)-(i-g)*(j-f)>0}function fg(a,b,c){return(c[0]-b[0])*(a[1]-b[1])<(c[1]-b[1])*(a[0]-b[0])}function fh(a,b,c,d){var e=a[0],f=b[0],g=c[0],h=d[0],i=a[1],j=b[1],k=c[1],l=d[1],m=e-g,n=f-e,o=h-g,p=i-k,q=j-i,r=l-k,s=(o*p-r*m)/(r*n-o*q);return[e+s*n,i+s*q]}function fj(a,b){var c={list:a.map(function(a,b){return{index:b,x:a[0],y:a[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},d={list:[],leftEnd:null,rightEnd:null,init:function(){d.leftEnd=d.createHalfEdge(null,"l"),d.rightEnd=d.createHalfEdge(null,"l"),d.leftEnd.r=d.rightEnd,d.rightEnd.l=d.leftEnd,d.list.unshift(d.leftEnd,d.rightEnd)},createHalfEdge:function(a,b){return{edge:a,side:b,vertex:null,l:null,r:null}},insert:function(a,b){b.l=a,b.r=a.r,a.r.l=b,a.r=b},leftBound:function(a){var b=d.leftEnd;do b=b.r;while(b!=d.rightEnd&&e.rightOf(b,a));return b=b.l,b},del:function(a){a.l.r=a.r,a.r.l=a.l,a.edge=null},right:function(a){return a.r},left:function(a){return a.l},leftRegion:function(a){return a.edge==null?c.bottomSite:a.edge.region[a.side]},rightRegion:function(a){return a.edge==null?c.bottomSite:a.edge.region[fi[a.side]]}},e={bisect:function(a,b){var c={region:{l:a,r:b},ep:{l:null,r:null}},d=b.x-a.x,e=b.y-a.y,f=d>0?d:-d,g=e>0?e:-e;return c.c=a.x*d+a.y*e+(d*d+e*e)*.5,f>g?(c.a=1,c.b=e/d,c.c/=d):(c.b=1,c.a=d/e,c.c/=e),c},intersect:function(a,b){var c=a.edge,d=b.edge;if(!c||!d||c.region.r==d.region.r)return null;var e=c.a*d.b-c.b*d.a;if(Math.abs(e)<1e-10)return null;var f=(c.c*d.b-d.c*c.b)/e,g=(d.c*c.a-c.c*d.a)/e,h=c.region.r,i=d.region.r,j,k;h.y<i.y||h.y==i.y&&h.x<i.x?(j=a,k=c):(j=b,k=d);var l=f>=k.region.r.x;return l&&j.side==="l"||!l&&j.side==="r"?null:{x:f,y:g}},rightOf:function(a,b){var c=a.edge,d=c.region.r,e=b.x>d.x;if(e&&a.side==="l")return 1;if(!e&&a.side==="r")return 0;if(c.a===1){var f=b.y-d.y,g=b.x-d.x,h=0,i=0;!e&&c.b<0||e&&c.b>=0?i=h=f>=c.b*g:(i=b.x+b.y*c.b>c.c,c.b<0&&(i=!i),i||(h=1));if(!h){var j=d.x-c.region.l.x;i=c.b*(g*g-f*f)<j*f*(1+2*g/j+c.b*c.b),c.b<0&&(i=!i)}}else{var k=c.c-c.a*b.x,l=b.y-k,m=b.x-d.x,n=k-d.y;i=l*l>m*m+n*n}return a.side==="l"?i:!i},endPoint:function(a,c,d){a.ep[c]=d;if(!a.ep[fi[c]])return;b(a)},distance:function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)}},f={list:[],insert:function(a,b,c){a.vertex=b,a.ystar=b.y+c;for(var d=0,e=f.list,g=e.length;d<g;d++){var h=e[d];if(a.ystar>h.ystar||a.ystar==h.ystar&&b.x>h.vertex.x)continue;break}e.splice(d,0,a)},del:function(a){for(var b=0,c=f.list,d=c.length;b<d&&c[b]!=a;++b);c.splice(b,1)},empty:function(){return f.list.length===0},nextEvent:function(a){for(var b=0,c=f.list,d=c.length;b<d;++b)if(c[b]==a)return c[b+1];return null},min:function(){var a=f.list[0];return{x:a.vertex.x,y:a.ystar}},extractMin:function(){return f.list.shift()}};d.init(),c.bottomSite=c.list.shift();var g=c.list.shift(),h,i,j,k,l,m,n,o,p,q,r,s,t;for(;;){f.empty()||(h=f.min());if(g&&(f.empty()||g.y<h.y||g.y==h.y&&g.x<h.x))i=d.leftBound(g),j=d.right(i),n=d.rightRegion(i),s=e.bisect(n,g),m=d.createHalfEdge(s,"l"),d.insert(i,m),q=e.intersect(i,m),q&&(f.del(i),f.insert(i,q,e.distance(q,g))),i=m,m=d.createHalfEdge(s,"r"),d.insert(i,m),q=e.intersect(m,j),q&&f.insert(m,q,e.distance(q,g)),g=c.list.shift();else if(!f.empty())i=f.extractMin(),k=d.left(i),j=d.right(i),l=d.right(j),n=d.leftRegion(i),o=d.rightRegion(j),r=i.vertex,e.endPoint(i.edge,i.side,r),e.endPoint(j.edge,j.side,r),d.del(i),f.del(j),d.del(j),t="l",n.y>o.y&&(p=n,n=o,o=p,t="r"),s=e.bisect(n,o),m=d.createHalfEdge(s,t),d.insert(k,m),e.endPoint(s,fi[t],r),q=e.intersect(k,m),q&&(f.del(k),f.insert(k,q,e.distance(q,n))),q=e.intersect(m,l),q&&f.insert(m,q,e.distance(q,n));else break}for(i=d.right(d.leftEnd);i!=d.rightEnd;i=d.right(i))b(i.edge)}function fk(){return{leaf:!0,nodes:[],point:null}}function fl(a,b,c,d,e,f){if(!a(b,c,d,e,f)){var g=(c+e)*.5,h=(d+f)*.5,i=b.nodes;i[0]&&fl(a,i[0],c,d,g,h),i[1]&&fl(a,i[1],g,d,e,h),i[2]&&fl(a,i[2],c,h,g,f),i[3]&&fl(a,i[3],g,h,e,f)}}function fm(a){return{x:a[0],y:a[1]}}function fo(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function fq(a,b,c,d){var e,f,g=0,h=b.length,i=c.length;while(g<h){if(d>=i)return-1;e=b.charCodeAt(g++);if(e==37){f=fw[b.charAt(g++)];if(!f||(d=f(a,c,d))<0)return-1}else if(e!=c.charCodeAt(d++))return-1}return d}function fx(a,b,c){return fz.test(b.substring(c,c+=3))?c:-1}function fy(a,b,c){fA.lastIndex=0;var d=fA.exec(b.substring(c,c+10));return d?c+=d[0].length:-1}function fB(a,b,c){var d=fC.get(b.substring(c,c+=3).toLowerCase());return d==null?-1:(a.m=d,c)}function fD(a,b,c){fE.lastIndex=0;var d=fE.exec(b.substring(c,c+12));return d?(a.m=fF.get(d[0].toLowerCase()),c+=d[0].length):-1}function fH(a,b,c){return fq(a,fv.c.toString(),b,c)}function fI(a,b,c){return fq(a,fv.x.toString(),b,c)}function fJ(a,b,c){return fq(a,fv.X.toString(),b,c)}function fK(a,b,c){fT.lastIndex=0;var d=fT.exec(b.substring(c,c+4));return d?(a.y=+d[0],c+=d[0].length):-1}function fL(a,b,c){fT.lastIndex=0;var d=fT.exec(b.substring(c,c+2));return d?(a.y=fM()+ +d[0],c+=d[0].length):-1}function fM(){return~~((new Date).getFullYear()/1e3)*1e3}function fN(a,b,c){fT.lastIndex=0;var d=fT.exec(b.substring(c,c+2));return d?(a.m=d[0]-1,c+=d[0].length):-1}function fO(a,b,c){fT.lastIndex=0;var d=fT.exec(b.substring(c,c+2));return d?(a.d=+d[0],c+=d[0].length):-1}function fP(a,b,c){fT.lastIndex=0;var d=fT.exec(b.substring(c,c+2));return d?(a.H=+d[0],c+=d[0].length):-1}function fQ(a,b,c){fT.lastIndex=0;var d=fT.exec(b.substring(c,c+2));return d?(a.M=+d[0],c+=d[0].length):-1}function fR(a,b,c){fT.lastIndex=0;var d=fT.exec(b.substring(c,c+2));return d?(a.S=+d[0],c+=d[0].length):-1}function fS(a,b,c){fT.lastIndex=0;var d=fT.exec(b.substring(c,c+3));return d?(a.L=+d[0],c+=d[0].length):-1}function fU(a,b,c){var d=fV.get(b.substring(c,c+=2).toLowerCase());return d==null?-1:(a.p=d,c)}function fW(a){var b=a.getTimezoneOffset(),c=b>0?"-":"+",d=~~(Math.abs(b)/60),e=Math.abs(b)%60;return c+fr(d)+fr(e)}function fY(a){return a.toISOString()}function fZ(a,b,c){function d(b){var c=a(b),d=f(c,1);return b-c<d-b?c:d}function e(c){return b(c=a(new fn(c-1)),1),c}function f(a,c){return b(a=new fn(+a),c),a}function g(a,d,f){var g=e(a),h=[];if(f>1)while(g<d)c(g)%f||h.push(new Date(+g)),b(g,1);else while(g<d)h.push(new Date(+g)),b(g,1);return h}function h(a,b,c){try{fn=fo;var d=new fo;return d._=a,g(d,b,c)}finally{fn=Date}}a.floor=a,a.round=d,a.ceil=e,a.offset=f,a.range=g;var i=a.utc=f$(a);return i.floor=i,i.round=f$(d),i.ceil=f$(e),i.offset=f$(f),i.range=h,a}function f$(a){return function(b,c){try{fn=fo;var d=new fo;return d._=b,a(d,c)._}finally{fn=Date}}}function f_(a,b,c){function d(b){return a(b)}return d.invert=function(b){return gb(a.invert(b))},d.domain=function(b){return arguments.length?(a.domain(b),d):a.domain().map(gb)},d.nice=function(a){var b=ga(d.domain());return d.domain([a.floor(b[0]),a.ceil(b[1])])},d.ticks=function(c,e){var f=ga(d.domain());if(typeof 
+c!="function"){var g=f[1]-f[0],h=g/c,i=d3.bisect(gf,h);if(i==gf.length)return b.year(f,c);if(!i)return a.ticks(c).map(gb);Math.log(h/gf[i-1])<Math.log(gf[i]/h)&&--i,c=b[i],e=c[1],c=c[0].range}return c(f[0],new Date(+f[1]+1),e)},d.tickFormat=function(){return c},d.copy=function(){return f_(a.copy(),b,c)},d3.rebind(d,a,"range","rangeRound","interpolate","clamp")}function ga(a){var b=a[0],c=a[a.length-1];return b<c?[b,c]:[c,b]}function gb(a){return new Date(a)}function gc(a){return function(b){var c=a.length-1,d=a[c];while(!d[1](b))d=a[--c];return d[0](b)}}function gd(a){var b=new Date(a,0,1);return b.setFullYear(a),b}function ge(a){var b=a.getFullYear(),c=gd(b),d=gd(b+1);return b+(a-c)/(d-c)}function gn(a){var b=new Date(Date.UTC(a,0,1));return b.setUTCFullYear(a),b}function go(a){var b=a.getUTCFullYear(),c=gn(b),d=gn(b+1);return b+(a-c)/(d-c)}Date.now||(Date.now=function(){return+(new Date)});try{document.createElement("div").style.setProperty("opacity",0,"")}catch(a){var b=CSSStyleDeclaration.prototype,c=b.setProperty;b.setProperty=function(a,b,d){c.call(this,a,b+"",d)}}d3={version:"2.8.1"};var f=h;try{f(document.documentElement.childNodes)[0].nodeType}catch(i){f=g}var j=[].__proto__?function(a,b){a.__proto__=b}:function(a,b){for(var c in b)a[c]=b[c]};d3.map=function(a){var b=new k;for(var c in a)b.set(c,a[c]);return b},e(k,{has:function(a){return l+a in this},get:function(a){return this[l+a]},set:function(a,b){return this[l+a]=b},remove:function(a){return a=l+a,a in this&&delete this[a]},keys:function(){var a=[];return this.forEach(function(b){a.push(b)}),a},values:function(){var a=[];return this.forEach(function(b,c){a.push(c)}),a},entries:function(){var a=[];return this.forEach(function(b,c){a.push({key:b,value:c})}),a},forEach:function(a){for(var b in this)b.charCodeAt(0)===m&&a.call(this,b.substring(1),this[b])}});var l="\0",m=l.charCodeAt(0);d3.functor=function(a){return typeof a=="function"?a:function(){return a}},d3.rebind=function(a,b){var c=1,d=arguments.length,e;while(++c<d)a[e=arguments[c]]=o(a,b,b[e]);return a},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(a,b){var c=a.length,d,e=0,f=-1,g=0;if(arguments.length===1)while(++f<c)p(d=a[f])&&(e+=(d-e)/++g);else while(++f<c)p(d=b.call(a,a[f],f))&&(e+=(d-e)/++g);return g?e:undefined},d3.median=function(a,b){return arguments.length>1&&(a=a.map(b)),a=a.filter(p),a.length?d3.quantile(a.sort(d3.ascending),.5):undefined},d3.min=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++c<d&&((e=a[c])==null||e!=e))e=undefined;while(++c<d)(f=a[c])!=null&&e>f&&(e=f)}else{while(++c<d&&((e=b.call(a,a[c],c))==null||e!=e))e=undefined;while(++c<d)(f=b.call(a,a[c],c))!=null&&e>f&&(e=f)}return e},d3.max=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++c<d&&((e=a[c])==null||e!=e))e=undefined;while(++c<d)(f=a[c])!=null&&f>e&&(e=f)}else{while(++c<d&&((e=b.call(a,a[c],c))==null||e!=e))e=undefined;while(++c<d)(f=b.call(a,a[c],c))!=null&&f>e&&(e=f)}return e},d3.extent=function(a,b){var c=-1,d=a.length,e,f,g;if(arguments.length===1){while(++c<d&&((e=g=a[c])==null||e!=e))e=g=undefined;while(++c<d)(f=a[c])!=null&&(e>f&&(e=f),g<f&&(g=f))}else{while(++c<d&&((e=g=b.call(a,a[c],c))==null||e!=e))e=undefined;while(++c<d)(f=b.call(a,a[c],c))!=null&&(e>f&&(e=f),g<f&&(g=f))}return[e,g]},d3.random={normal:function(a,b){return arguments.length<2&&(b=1),arguments.length<1&&(a=0),function(){var c,d,e;do c=Math.random()*2-1,d=Math.random()*2-1,e=c*c+d*d;while(!e||e>1);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}}},d3.sum=function(a,b){var c=0,d=a.length,e,f=-1;if(arguments.length===1)while(++f<d)isNaN(e=+a[f])||(c+=e);else while(++f<d)isNaN(e=+b.call(a,a[f],f))||(c+=e);return c},d3.quantile=function(a,b){var c=(a.length-1)*b+1,d=Math.floor(c),e=a[d-1],f=c-d;return f?e+f*(a[d]-e):e},d3.transpose=function(a){return d3.zip.apply(d3,a)},d3.zip=function(){if(!(e=arguments.length))return[];for(var a=-1,b=d3.min(arguments,q),c=new Array(b);++a<b;)for(var d=-1,e,f=c[a]=new Array(e);++d<e;)f[d]=arguments[d][a];return c},d3.bisector=function(a){return{left:function(b,c,d,e){arguments.length<3&&(d=0),arguments.length<4&&(e=b.length);while(d<e){var f=d+e>>1;a.call(b,b[f],f)<c?d=f+1:e=f}return d},right:function(b,c,d,e){arguments.length<3&&(d=0),arguments.length<4&&(e=b.length);while(d<e){var f=d+e>>1;c<a.call(b,b[f],f)?e=f:d=f+1}return d}}};var r=d3.bisector(function(a){return a});d3.bisectLeft=r.left,d3.bisect=d3.bisectRight=r.right,d3.first=function(a,b){var c=0,d=a.length,e=a[0],f;arguments.length===1&&(b=d3.ascending);while(++c<d)b.call(a,e,f=a[c])>0&&(e=f);return e},d3.last=function(a,b){var c=0,d=a.length,e=a[0],f;arguments.length===1&&(b=d3.ascending);while(++c<d)b.call(a,e,f=a[c])<=0&&(e=f);return e},d3.nest=function(){function f(c,g){if(g>=b.length)return e?e.call(a,c):d?c.sort(d):c;var h=-1,i=c.length,j=b[g++],l,m,n=new k,o,p={};while(++h<i)(o=n.get(l=j(m=c[h])))?o.push(m):n.set(l,[m]);return n.forEach(function(a){p[a]=f(n.get(a),g)}),p}function g(a,d){if(d>=b.length)return a;var e=[],f=c[d++],h;for(h in a)e.push({key:h,values:g(a[h],d)});return f&&e.sort(function(a,b){return f(a.key,b.key)}),e}var a={},b=[],c=[],d,e;return a.map=function(a){return f(a,0)},a.entries=function(a){return g(f(a,0),0)},a.key=function(c){return b.push(c),a},a.sortKeys=function(d){return c[b.length-1]=d,a},a.sortValues=function(b){return d=b,a},a.rollup=function(b){return e=b,a},a},d3.keys=function(a){var b=[];for(var c in a)b.push(c);return b},d3.values=function(a){var b=[];for(var c in a)b.push(a[c]);return b},d3.entries=function(a){var b=[];for(var c in a)b.push({key:c,value:a[c]});return b},d3.permute=function(a,b){var c=[],d=-1,e=b.length;while(++d<e)c[d]=a[b[d]];return c},d3.merge=function(a){return Array.prototype.concat.apply([],a)},d3.split=function(a,b){var c=[],d=[],e,f=-1,g=a.length;arguments.length<2&&(b=s);while(++f<g)b.call(d,e=a[f],f)?d=[]:(d.length||c.push(d),d.push(e));return c},d3.range=function(a,b,c){arguments.length<3&&(c=1,arguments.length<2&&(b=a,a=0));if((b-a)/c===Infinity)throw new Error("infinite range");var d=[],e=u(Math.abs(c)),f=-1,g;a*=e,b*=e,c*=e;if(c<0)while((g=a+c*++f)>b)d.push(g/e);else while((g=a+c*++f)<b)d.push(g/e);return d},d3.requote=function(a){return a.replace(v,"\\$&")};var v=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;d3.round=function(a,b){return b?Math.round(a*(b=Math.pow(10,b)))/b:Math.round(a)},d3.xhr=function(a,b,c){var d=new XMLHttpRequest;arguments.length<3?(c=b,b=null):b&&d.overrideMimeType&&d.overrideMimeType(b),d.open("GET",a,!0),b&&d.setRequestHeader("Accept",b),d.onreadystatechange=function(){d.readyState===4&&c(d.status<300?d:null)},d.send(null)},d3.text=function(a,b,c){function d(a){c(a&&a.responseText)}arguments.length<3&&(c=b,b=null),d3.xhr(a,b,d)},d3.json=function(a,b){d3.text(a,"application/json",function(a){b(a?JSON.parse(a):null)})},d3.html=function(a,b){d3.text(a,"text/html",function(a){if(a!=null){var c=document.createRange();c.selectNode(document.body),a=c.createContextualFragment(a)}b(a)})},d3.xml=function(a,b,c){function d(a){c(a&&a.responseXML)}arguments.length<3&&(c=b,b=null),d3.xhr(a,b,d)};var w={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:w,qualify:function(a){var b=a.indexOf(":"),c=a;return b>=0&&(c=a.substring(0,b),a=a.substring(b+1)),w.hasOwnProperty(c)?{space:w[c],local:a}:a}},d3.dispatch=function(){var a=new x,b=-1,c=arguments.length;while(++b<c)a[arguments[b]]=y(a);return a},x.prototype.on=function(a,b){var c=a.indexOf("."),d="";return c>0&&(d=a.substring(c+1),a=a.substring(0,c)),arguments.length<2?this[a].on(d):this[a].on(d,b)},d3.format=function(a){var b=z.exec(a),c=b[1]||" ",d=b[3]||"",e=b[5],f=+b[6],g=b[7],h=b[8],i=b[9],j=1,k="",l=!1;h&&(h=+h.substring(1)),e&&(c="0",g&&(f-=Math.floor((f-1)/4)));switch(i){case"n":g=!0,i="g";break;case"%":j=100,k="%",i="f";break;case"p":j=100,k="%",i="r";break;case"d":l=!0,h=0;break;case"s":j=-1,i="r"}return i=="r"&&!h&&(i="g"),i=A.get(i)||C,function(a){if(l&&a%1)return"";var b=a<0&&(a=-a)?"−":d;if(j<0){var m=d3.formatPrefix(a,h);a*=m.scale,k=m.symbol}else a*=j;a=i(a,h);if(e){var n=a.length+b.length;n<f&&(a=(new Array(f-n+1)).join(c)+a),g&&(a=D(a)),a=b+a}else{g&&(a=D(a)),a=b+a;var n=a.length;n<f&&(a=(new Array(f-n+1)).join(c)+a)}return a+k}};var z=/(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,A=d3.map({g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){return d3.round(a,b=B(a,b)).toFixed(Math.max(0,Math.min(20,b)))}}),E=["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(F);d3.formatPrefix=function(a,b){var c=0;return a&&(a<0&&(a*=-1),b&&(a=d3.round(a,B(a,b))),c=1+Math.floor(1e-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,Math.floor((c<=0?c+1:c-1)/3)*3))),E[8+c/3]};var G=P(2),H=P(3),I=function(){return O},J=d3.map({linear:I,poly:P,quad:function(){return G},cubic:function(){return H},sin:function(){return Q},exp:function(){return R},circle:function(){return S},elastic:T,back:U,bounce:function(){return V}}),K=d3.map({"in":O,out:M,"in-out":N,"out-in":function(a){return N(M(a))}});d3.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return c=J.get(c)||I,d=K.get(d)||O,L(d(c.apply(null,Array.prototype.slice.call(arguments,1))))},d3.event=null,d3.interpolate=function(a,b){var c=d3.interpolators.length,d;while(--c>=0&&!(d=d3.interpolators[c](a,b)));return d},d3.interpolateNumber=function(a,b){return b-=a,function(c){return a+b*c}},d3.interpolateRound=function(a,b){return b-=a,function(c){return Math.round(a+b*c)}},d3.interpolateString=function(a,b){var c,d,e,f=0,g=0,h=[],i=[],j,k;Z.lastIndex=0;for(d=0;c=Z.exec(b);++d)c.index&&h.push(b.substring(f,g=c.index)),i.push({i:h.length,x:c[0]}),h.push(null),f=Z.lastIndex;f<b.length&&h.push(b.substring(f));for(d=0,j=i.length;(c=Z.exec(a))&&d<j;++d){k=i[d];if(k.x==c[0]){if(k.i)if(h[k.i+1]==null){h[k.i-1]+=k.x,h.splice(k.i,1);for(e=d+1;e<j;++e)i[e].i--}else{h[k.i-1]+=k.x+h[k.i+1],h.splice(k.i,2);for(e=d+1;e<j;++e)i[e].i-=2}else if(h[k.i+1]==null)h[k.i]=k.x;else{h[k.i]=k.x+h[k.i+1],h.splice(k.i+1,1);for(e=d+1;e<j;++e)i[e].i--}i.splice(d,1),j--,d--}else k.x=d3.interpolateNumber(parseFloat(c[0]),parseFloat(k.x))}while(d<j)k=i.pop(),h[k.i+1]==null?h[k.i]=k.x:(h[k.i]=k.x+h[k.i+1],h.splice(k.i+1,1)),j--;return h.length===1?h[0]==null?i[0].x:function(){return b}:function(a){for(d=0;d<j;++d)h[(k=i[d]).i]=k.x(a);return h.join("")}},d3.interpolateTransform=function(a,b){var c=[],d=[],e,f=d3.transform(a),g=d3.transform(b),h=f.translate,i=g.translate,j=f.rotate,k=g.rotate,l=f.skew,m=g.skew,n=f.scale,o=g.scale;return h[0]!=i[0]||h[1]!=i[1]?(c.push("translate(",null,",",null,")"),d.push({i:1,x:d3.interpolateNumber(h[0],i[0])},{i:3,x:d3.interpolateNumber(h[1],i[1])})):i[0]||i[1]?c.push("translate("+i+")"):c.push(""),j!=k?d.push({i:c.push(c.pop()+"rotate(",null,")")-2,x:d3.interpolateNumber(j,k)}):k&&c.push(c.pop()+"rotate("+k+")"),l!=m?d.push({i:c.push(c.pop()+"skewX(",null,")")-2,x:d3.interpolateNumber(l,m)}):m&&c.push(c.pop()+"skewX("+m+")"),n[0]!=o[0]||n[1]!=o[1]?(e=c.push(c.pop()+"scale(",null,",",null,")"),d.push({i:e-4,x:d3.interpolateNumber(n[0],o[0])},{i:e-2,x:d3.interpolateNumber(n[1],o[1])})):(o[0]!=1||o[1]!=1)&&c.push(c.pop()+"scale("+o+")"),e=d.length,function(a){var b=-1,f;while(++b<e)c[(f=d[b]).i]=f.x(a);return c.join("")}},d3.interpolateRgb=function(a,b){a=d3.rgb(a),b=d3.rgb(b);var c=a.r,d=a.g,e=a.b,f=b.r-c,g=b.g-d,h=b.b-e;return function(a){return"#"+bd(Math.round(c+f*a))+bd(Math.round(d+g*a))+bd(Math.round(e+h*a))}},d3.interpolateHsl=function(a,b){a=d3.hsl(a),b=d3.hsl(b);var c=a.h,d=a.s,e=a.l,f=b.h-c,g=b.s-d,h=b.l-e;return function(a){return bk(c+f*a,d+g*a,e+h*a).toString()}},d3.interpolateArray=function(a,b){var c=[],d=[],e=a.length,f=b.length,g=Math.min(a.length,b.length),h;for(h=0;h<g;++h)c.push(d3.interpolate(a[h],b[h]));for(;h<e;++h)d[h]=a[h];for(;h<f;++h)d[h]=b[h];return function(a){for(h=0;h<g;++h)d[h]=c[h](a);return d}},d3.interpolateObject=function(a,b){var c={},d={},e;for(e in a)e in b?c[e]=$(e)(a[e],b[e]):d[e]=a[e];for(e in b)e in a||(d[e]=b[e]);return function(a){for(e in c)d[e]=c[e](a);return d}};var Z=/[-+]?(?:\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"?bh.has(b)||/^(#|rgb\(|hsl\()/.test(b):b instanceof bc||b instanceof bj)&&d3.interpolateRgb(a,b)},function(a,b){return!isNaN(a=+a)&&!isNaN(b=+b)&&d3.interpolateNumber(a,b)}],d3.rgb=function(a,b,c){return arguments.length===1?a instanceof bc?bb(a.r,a.g,a.b):be(""+a,bb,bk):bb(~~a,~~b,~~c)},bc.prototype.brighter=function(a){a=Math.pow(.7,arguments.length?a:1);var b=this.r,c=this.g,d=this.b,e=30;return!b&&!c&&!d?bb(e,e,e):(b&&b<e&&(b=e),c&&c<e&&(c=e),d&&d<e&&(d=e),bb(Math.min(255,Math.floor(b/a)),Math.min(255,Math.floor(c/a)),Math.min(255,Math.floor(d/a))))},bc.prototype.darker=function(a){return a=Math.pow(.7,arguments.length?a:1),bb(Math.floor(a*this.r),Math.floor(a*this.g),Math.floor(a*this.b))},bc.prototype.hsl=function(){return bf(this.r,this.g,this.b)},bc.prototype.toString=function(){return"#"+bd(this.r)+bd(this.g)+bd(this.b)};var bh=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"});bh.forEach(function(a,b){bh.set(a,be(b,bb,bk))}),d3.hsl=function(a,b,c){return arguments.length===1?a instanceof bj?bi(a.h,a.s,a.l):be(""+a,bf,bi):bi(+a,+b,+c)},bj.prototype.brighter=function(a){return a=Math.pow(.7,arguments.length?a:1),bi(this.h,this.s,this.l/a)},bj.prototype.darker=function(a){return a=Math.pow(.7,arguments.length?a:1),bi(this.h,this.s,a*this.l)},bj.prototype.rgb=function(){return bk(this.h,this.s,this.l)},bj.prototype.toString=function(){return this.rgb().toString()};var bm=function(a,b){return b.querySelector(a)},bn=function(a,b){return b.querySelectorAll(a)},bo=document.documentElement,bp=bo.matchesSelector||bo.webkitMatchesSelector||bo.mozMatchesSelector||bo.msMatchesSelector||bo.oMatchesSelector,bq=function(a,b){return bp.call(a,b)};typeof Sizzle=="function"&&(bm=function(a,b){return Sizzle(a,b)[0]},bn=function(a,b){return Sizzle.uniqueSort(Sizzle(a,b))},bq=Sizzle.matchesSelector);var br=[];d3.selection=function(){return bz},d3.selection.prototype=br,br.select=function(a){var b=[],c,d,e,f;typeof a!="function"&&(a=bs(a));for(var g=-1,h=this.length;++g<h;){b.push(c=[]),c.parentNode=(e=this[g]).parentNode;for(var i=-1,j=e.length;++i<j;)(f=e[i])?(c.push(d=a.call(f,f.__data__,i)),d&&"__data__"in f&&(d.__data__=f.__data__)):c.push(null)}return bl(b)},br.selectAll=function(a){var b=[],c,d;typeof a!="function"&&(a=bt(a));for(var e=-1,g=this.length;++e<g;)for(var h=this[e],i=-1,j=h.length;++i<j;)if(d=h[i])b.push(c=f(a.call(d,d.__data__,i))),c.parentNode=d;return bl(b)},br.attr=function(a,b){function d(){this.removeAttribute(a)}function e(){this.removeAttributeNS(a.space,a.local)}function f(){this.setAttribute(a,b)}function g(){this.setAttributeNS(a.space,a.local,b)}function h(){var c=b.apply(this,arguments);c==null?this.removeAttribute(a):this.setAttribute(a,c)}function i(){var c=b.apply(this,arguments);c==null?this.removeAttributeNS(a.space,a.local):this.setAttributeNS(a.space,a.local,c)}a=d3.ns.qualify(a);if(arguments.length<2){var c=this.node();return a.local?c.getAttributeNS(a.space,a.local):c.getAttribute(a)}return this.each(b==null?a.local?e:d:typeof b=="function"?a.local?i:h:a.local?g:f)},br.classed=function(a,b){var c=a.split(bu),d=c.length,e=-1;if(arguments.length>1){while(++e<d)bv.call(this,c[e],b);return this}while(++e<d)if(!bv.call(this,c[e]))return!1;return!0};var bu=/\s+/g;br.style=function(a,b,c){function d(){this.style.removeProperty(a)}function e(){this.style.setProperty(a,b,c)}function f(){var d=b.apply(this,arguments);d==null?this.style.removeProperty(a):this.style.setProperty(a,d,c)}return arguments.length<3&&(c=""),arguments.length<2?window.getComputedStyle(this.node(),null).getPropertyValue(a):this.each(b==null?d:typeof b=="function"?f:e)},br.property=function(a,b){function c(){delete this[a]}function d(){this[a]=b}function e(){var c=b.apply(this,arguments);c==null?delete this[a]:this[a]=c}return arguments.length<2?this.node()[a]:this.each(b==null?c:typeof b=="function"?e:d)},br.text=function(a){return arguments.length<1?this.node().textContent:this.each(typeof a=="function"?function(){var b=a.apply(this,arguments);this.textContent=b==null?"":b}:a==null?function(){this.textContent=""}:function(){this.textContent=a})},br.html=function(a){return arguments.length<1?this.node().innerHTML:this.each(typeof a=="function"?function(){var b=a.apply(this,arguments);this.innerHTML=b==null?"":b}:a==null?function(){this.innerHTML=""}:function(){this.innerHTML=a})},br.append=function(a){function b(){return this.appendChild(document.createElementNS(this.namespaceURI,a))}function c(){return this.appendChild(document.createElementNS(a.space,a.local))}return a=d3.ns.qualify(a),this.select(a.local?c:b)},br.insert=function(a,b){function c(){return this.insertBefore(document.createElementNS(this.namespaceURI,a),bm(b,this))}function d(){return this.insertBefore(document.createElementNS(a.space,a.local),bm(b,this))}return a=d3.ns.qualify(a),this.select(a.local?d:c)},br.remove=function(){return this.each(function(){var a=this.parentNode;a&&a.removeChild(this)})},br.data=function(a,b){function g(a,c){var d,e=a.length,f=c.length,g=Math.min(e,f),l=Math.max(e,f),m=[],n=[],o=[],p,q;if(b){var r=new k,s=[],t,u=c.length;for(d=-1;++d<e;)t=b.call(p=a[d],p.__data__,d),r.has(t)?o[u++]=p:r.set(t,p),s.push(t);for(d=-1;++d<f;)t=b.call(c,q=c[d],d),r.has(t)?(m[d]=p=r.get(t),p.__data__=q,n[d]=o[d]=null):(n[d]=bw(q),m[d]=o[d]=null),r.remove(t);for(d=-1;++d<e;)r.has(s[d])&&(o[d]=a[d])}else{for(d=-1;++d<g;)p=a[d],q=c[d],p?(p.__data__=q,m[d]=p,n[d]=o[d]=null):(n[d]=bw(q),m[d]=o[d]=null);for(;d<f;++d)n[d]=bw(c[d]),m[d]=o[d]=null;for(;d<l;++d)o[d]=a[d],n[d]=m[d]=null}n.update=m,n.parentNode=m.parentNode=o.parentNode=a.parentNode,h.push(n),i.push(m),j.push(o)}var c=-1,d=this.length,e,f;if(!arguments.length){a=new Array(d=(e=this[0]).length);while(++c<d)if(f=e[c])a[c]=f.__data__;return a}var h=bA([]),i=bl([]),j=bl([]);if(typeof a=="function")while(++c<d)g(e=this[c],a.call(e,e.parentNode.__data__,c));else while(++c<d)g(e=this[c],a);return i.enter=function(){return h},i.exit=function(){return j},i},br.datum=br.map=function(a){return arguments.length<1?this.property("__data__"):this.property("__data__",a)},br.filter=function(a){var b=[],c,d,e;typeof a!="function"&&(a=bx(a));for(var f=0,g=this.length;f<g;f++){b.push(c=[]),c.parentNode=(d=this[f]).parentNode;for(var h=0,i=d.length;h<i;h++)(e=d[h])&&a.call(e,e.__data__,h)&&c.push(e)}return bl(b)},br.order=function(){for(var a=-1,b=this.length;++a<b;)for(var c=this[a],d=c.length-1,e=c[d],f;--d>=0;)if(f=c[d])e&&e!==f.nextSibling&&e.parentNode.insertBefore(f,e),e=f;return this},br.sort=function(a){a=by.apply(this,arguments);for(var b=-1,c=this.length;++b<c;)this[b].sort(a);return this.order()},br.on=function(a,b,c){arguments.length<3&&(c=!1);var d="__on"+a,e=a.indexOf(".");return e>0&&(a=a.substring(0,e)),arguments.length<2?(e=this.node()[d])&&e._:this.each(function(e,f){function i(a){var c=d3.event;d3.event=a;try{b.call(g,g.__data__,f)}finally{d3.event=c}}var g=this,h=g[d];h&&(g.removeEventListener(a,h,h.$),delete g[d]),b&&(g.addEventListener(a,g[d]=i,i.$=c),i._=b)})},br.each=function(a){for(var b=-1,c=this.length;++b<c;)for(var d=this[b],e=-1,f=d.length;++e<f;){var g=d[e];g&&a.call(g,g.__data__,e,b)}return this},br.call=function(a){return a.apply(this,(arguments[0]=this,arguments)),this},br.empty=function(){return!this.node()},br.node=function(a){for(var b=0,c=this.length;b<c;b++)for(var d=this[b],e=0,f=d.length;e<f;e++){var g=d[e];if(g)return g}return null},br.transition=function(){var a=[],b,c;for(var d=-1,e=this.length;++d<e;){a.push(b=[]);for(var f=this[d],g=-1,h=f.length;++g<h;)b.push((c=f[g])?{node:c,delay:bM,duration:bN}:null)}return bC(a,bI||++bH,Date.now())};var bz=bl([[document]]);bz[0].parentNode=bo,d3.select=function(a){return typeof a=="string"?bz.select(a):bl([[a]])},d3.selectAll=function(a){return typeof a=="string"?bz.selectAll(a):bl([f(a)])};var bB=[];d3.selection.enter=bA,d3.selection.enter.prototype=bB,bB.append=br.append,bB.insert=br.insert,bB.empty=br.empty,bB.node=br.node,bB.select=function(a){var b=[],c,d,e,f,g;for(var h=-1,i=this.length;++h<i;){e=(f=this[h]).update,b.push(c=[]),c.parentNode=f.parentNode;for(var j=-1,k=f.length;++j<k;)(g=f[j])?(c.push(e[j]=d=a.call(f.parentNode,g.__data__,j)),d.__data__=g.__data__):c.push(null)}return bl(b)};var bD={},bG=[],bH=0,bI=0,bJ=0,bK=250,bL=d3.ease("cubic-in-out"),bM=bJ,bN=bK,bO=bL;bG.call=br.call,d3.transition=function(a){return arguments.length?bI?a.transition():a:bz.transition()},d3.transition.prototype=bG,bG.select=function(a){var b=[],c,d,e;typeof a!="function"&&(a=bs(a));for(var f=-1,g=this.length;++f<g;){b.push(c=[]);for(var h=this[f],i=-1,j=h.length;++i<j;)(e=h[i])&&(d=a.call(e.node,e.node.__data__,i))?("__data__"in e.node&&(d.__data__=e.node.__data__),c.push({node:d,delay:e.delay,duration:e.duration})):c.push(null)}return bC(b,this.id,this.time).ease(this.ease())},bG.selectAll=function(a){var b=[],c,d,e;typeof a!="function"&&(a=bt(a));for(var f=-1,g=this.length;++f<g;)for(var h=this[f],i=-1,j=h.length;++i<j;)if(e=h[i]){d=a.call(e.node,e.node.__data__,i),b.push(c=[]);for(var k=-1,l=d.length;++k<l;)c.push({node:d[k],delay:e.delay,duration:e.duration})}return bC(b,this.id,this.time).ease(this.ease())},bG.attr=function(a,b){return this.attrTween(a,bF(a,b))},bG.attrTween=function(a,b){function d(a,d){var e=b.call(this,a,d,this.getAttribute(c));return e===bD?(this.removeAttribute(c),null):e&&function(a){this.setAttribute(c,e(a))}}function e(a,d){var e=b.call(this,a,d,this.getAttributeNS(c.space,c.local));return e===bD?(this.removeAttributeNS(c.space,c.local),null):e&&function(a){this.setAttributeNS(c.space,c.local,e(a))}}var c=d3.ns.qualify(a);return this.tween("attr."+a,c.local?e:d)},bG.style=function(a,b,c){return arguments.length<3&&(c=""),this.styleTween(a,bF(a,b),c)},bG.styleTween=function(a,b,c){return arguments.length<3&&(c=""),this.tween("style."+a,function(d,e){var f=b.call(this,d,e,window.getComputedStyle(this,null).getPropertyValue(a));return f===bD?(this.style.removeProperty(a),null):f&&function(b){this.style.setProperty(a,f(b),c)}})},bG.text=function(a){return this.tween("text",function(b,c){this.textContent=typeof a=="function"?a.call(this,b,c):a})},bG.remove=function(){return this.each("end.transition",function(){var a;!this.__transition__&&(a=this.parentNode)&&a.removeChild(this)})},bG.delay=function(a){var b=this;return b.each(typeof a=="function"?function(c,d,e){b[e][d].delay=a.apply(this,arguments)|0}:(a|=0,function(c,d,e){b[e][d].delay=a}))},bG.duration=function(a){var b=this;return b.each(typeof a=="function"?function(c,d,e){b[e][d].duration=Math.max(1,a.apply(this,arguments)|0)}:(a=Math.max(1,a|0),function(c,d,e){b[e][d].duration=a}))},bG.transition=function(){return this.select(n)};var bQ=null,bR,bS;d3.timer=function(a,b,c){var d=!1,e,f=bQ;if(arguments.length<3){if(arguments.length<2)b=0;else if(!isFinite(b))return;c=Date.now()}while(f){if(f.callback===a){f.then=c,f.delay=b,d=!0;break}e=f,f=f.next}d||(bQ={callback:a,then:c,delay:b,next:bQ}),bR||(bS=clearTimeout(bS),bR=1,bV(bT))},d3.timer.flush=function(){var a,b=Date.now(),c=bQ;while(c)a=b-c.then,c.delay||(c.flush=c.callback(a)),c=c.next;bU()};var bV=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,17)};d3.transform=function(a){var b=document.createElementNS(d3.ns.prefix.svg,"g"),c={a:1,b:0,c:0,d:1,e:0,f:0};return(d3.transform=function(a){b.setAttribute("transform",a);var d=b.transform.baseVal.consolidate();return new bW(d?d.matrix:c)})(a)},bW.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var b$=180/Math.PI;d3.mouse=function(a){return ca(a,X())};var b_=/WebKit/.test(navigator.userAgent)?-1:0;d3.touches=function(a,b){return arguments.length<2&&(b=X().touches),b?f(b).map(function(b){var c=ca(a,b);return c.identifier=b.identifier,c}):[]},d3.scale={},d3.scale.linear=function(){return cg([0,1],[0,1],d3.interpolate,!1)},d3.scale.log=function(){return co(d3.scale.linear(),cq)};var cp=d3.format(".0e");cq.pow=function(a){return Math.pow(10,a)},cr.pow=function(a){return-Math.pow(10,-a)},d3.scale.pow=function(){return cs(d3.scale.linear(),1)},d3.scale.sqrt=function(){return d3.scale.pow().exponent(.5)},d3.scale.ordinal=function(){return cu([],{t:"range",x:[]})},d3.scale.category10=function(){return d3.scale.ordinal().range(cv)},d3.scale.category20=function(){return d3.scale.ordinal().range(cw)},d3.scale.category20b=function(){return d3.scale.ordinal().range(cx)},d3.scale.category20c=function(){return d3.scale.ordinal().range(cy)};var cv=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],cw=["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"],cx=["#393b79","#5254a3","#6b6ecf","#9c9ede","#637939","#8ca252","#b5cf6b","#cedb9c","#8c6d31","#bd9e39","#e7ba52","#e7cb94","#843c39","#ad494a","#d6616b","#e7969c","#7b4173","#a55194","#ce6dbd","#de9ed6"],cy=["#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 cz([],[])},d3.scale.quantize=function(){return cA(0,1,[0,1])},d3.scale.identity=function(){return cB([0,1])},d3.svg={},d3.svg.arc=function(){function e(){var e=a.apply(this,arguments),f=b.apply(this,arguments),g=c.apply(this,arguments)+cC,h=d.apply(this,arguments)+cC,i=(h<g&&(i=g,g=h,h=i),h-g),j=i<Math.PI?"0":"1",k=Math.cos(g),l=Math.sin(g),m=Math.cos(h),n=Math.sin(h);return i>=cD?e?"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"M0,"+e+"A"+e+","+e+" 0 1,0 0,"+ -e+"A"+e+","+e+" 0 1,0 0,"+e+"Z":"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"Z":e?"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L"+e*m+","+e*n+"A"+e+","+e+" 0 "+j+",0 "+e*k+","+e*l+"Z":"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L0,0"+"Z"}var a=cE,b=cF,c=cG,d=cH;return e.innerRadius=function(b){return arguments.length?(a=d3.functor(b),e):a},e.outerRadius=function(a){return arguments.length?(b=d3.functor(a),e):b},e.startAngle=function(a){return arguments.length?(c=d3.functor(a),e):c},e.endAngle=function(a){return arguments.length?(d=d3.functor(a),e):d},e.centroid=function(){var e=(a.apply(this,arguments)+b.apply(this,arguments))/2,f=(c.apply(this,arguments)+d.apply(this,arguments))/2+cC;return[Math.cos(f)*e,Math.sin(f)*e]},e};var cC=-Math.PI/2,cD=2*Math.PI-1e-6;d3.svg.line=function(){return cI(Object)};var cM="linear",cN=d3.map({linear:cO,"step-before":cP,"step-after":cQ,basis:cW,"basis-open":cX,"basis-closed":cY,bundle:cZ,cardinal:cT,"cardinal-open":cR,"cardinal-closed":cS,monotone:dg}),c_=[0,2/3,1/3,0],da=[0,1/3,2/3,0],db=[0,1/6,2/3,1/6];d3.svg.line.radial=function(){var a=cI(dh);return a.radius=a.x,delete a.x,a.angle=a.y,delete a.y,a},cP.reverse=cQ,cQ.reverse=cP,d3.svg.area=function(){return di(Object)},d3.svg.area.radial=function(){var a=di(dh);return a.radius=a.x,delete a.x,a.innerRadius=a.x0,delete a.x0,a.outerRadius=a.x1,delete a.x1,a.angle=a.y,delete a.y,a.startAngle=a.y0,delete a.y0,a.endAngle=a.y1,delete a.y1,a},d3.svg.chord=function(){function f(c,d){var e=g(this,a,c,d),f=g(this,b,c,d);return"M"+e.p0+i(e.r,e.p1,e.a1-e.a0)+(h(e,f)?j(e.r,e.p1,e.r,e.p0):j(e.r,e.p1,f.r,f.p0)+i(f.r,f.p1,f.a1-f.a0)+j(f.r,f.p1,e.r,e.p0))+"Z"}function g(a,b,f,g){var h=b.call(a,f,g),i=c.call(a,h,g),j=d.call(a,h,g)+cC,k=e.call(a,h,g)+cC;return{r:i,a0:j,a1:k,p0:[i*Math.cos(j),i*Math.sin(j)],p1:[i*Math.cos(k),i*Math.sin(k)]}}function h(a,b){return a.a0==b.a0&&a.a1==b.a1}function i(a,b,c){return"A"+a+","+a+" 0 "+ +(c>Math.PI)+",1 "+b}function j(a,b,c,d){return"Q 0,0 "+d}var a=dl,b=dm,c=dn,d=cG,e=cH;return f.radius=function(a){return arguments.length?(c=d3.functor(a),f):c},f.source=function(b){return arguments.length?(a=d3.functor(b),f):a},f.target=function(a){return arguments.length?(b=d3.functor(a),f):b},f.startAngle=function(a){return arguments.length?(d=d3.functor(a),f):d},f.endAngle=function(a){return arguments.length?(e=d3.functor(a),f):e},f},d3.svg.diagonal=function(){function d(d,e){var f=a.call(this,d,e),g=b.call(this,d,e),h=(f.y+g.y)/2,i=[f,{x:f.x,y:h},{x:g.x,y:h},g];return i=i.map(c),"M"+i[0]+"C"+i[1]+" "+i[2]+" "+i[3]}var a=dl,b=dm,c=dr;return d.source=function(b){return arguments.length?(a=d3.functor(b),d):a},d.target=function(a){return arguments.length?(b=d3.functor(a),d):b},d.projection=function(a){return arguments.length?(c=a,d):c},d},d3.svg.diagonal.radial=function(){var a=d3.svg.diagonal(),b=dr,c=a.projection;return a.projection=function(a){return arguments.length?c(ds(b=a)):b},a},d3.svg.mouse=d3.mouse,d3.svg.touches=d3.touches,d3.svg.symbol=function(){function c(c,d){return(dw.get(a.call(this,c,d))||dv)(b.call(this,c,d))}var a=du,b=dt;return c.type=function(b){return arguments.length?(a=d3.functor(b),c):a},c.size=function(a){return arguments.length?(b=d3.functor(a),c):b},c};var dw=d3.map({circle
+:dv,cross:function(a){var b=Math.sqrt(a/5)/2;return"M"+ -3*b+","+ -b+"H"+ -b+"V"+ -3*b+"H"+b+"V"+ -b+"H"+3*b+"V"+b+"H"+b+"V"+3*b+"H"+ -b+"V"+b+"H"+ -3*b+"Z"},diamond:function(a){var b=Math.sqrt(a/(2*dy)),c=b*dy;return"M0,"+ -b+"L"+c+",0"+" 0,"+b+" "+ -c+",0"+"Z"},square:function(a){var b=Math.sqrt(a)/2;return"M"+ -b+","+ -b+"L"+b+","+ -b+" "+b+","+b+" "+ -b+","+b+"Z"},"triangle-down":function(a){var b=Math.sqrt(a/dx),c=b*dx/2;return"M0,"+c+"L"+b+","+ -c+" "+ -b+","+ -c+"Z"},"triangle-up":function(a){var b=Math.sqrt(a/dx),c=b*dx/2;return"M0,"+ -c+"L"+b+","+c+" "+ -b+","+c+"Z"}});d3.svg.symbolTypes=dw.keys();var dx=Math.sqrt(3),dy=Math.tan(30*Math.PI/180);d3.svg.axis=function(){function k(k){k.each(function(){var k=d3.select(this),l=h==null?a.ticks?a.ticks.apply(a,g):a.domain():h,m=i==null?a.tickFormat?a.tickFormat.apply(a,g):String:i,n=dB(a,l,j),o=k.selectAll(".minor").data(n,String),p=o.enter().insert("line","g").attr("class","tick minor").style("opacity",1e-6),q=d3.transition(o.exit()).style("opacity",1e-6).remove(),r=d3.transition(o).style("opacity",1),s=k.selectAll("g").data(l,String),t=s.enter().insert("g","path").style("opacity",1e-6),u=d3.transition(s.exit()).style("opacity",1e-6).remove(),v=d3.transition(s).style("opacity",1),w,x=cd(a),y=k.selectAll(".domain").data([0]),z=y.enter().append("path").attr("class","domain"),A=d3.transition(y),B=a.copy(),C=this.__chart__||B;this.__chart__=B,t.append("line").attr("class","tick"),t.append("text"),v.select("text").text(m);switch(b){case"bottom":w=dz,p.attr("y2",d),r.attr("x2",0).attr("y2",d),t.select("line").attr("y2",c),t.select("text").attr("y",Math.max(c,0)+f),v.select("line").attr("x2",0).attr("y2",c),v.select("text").attr("x",0).attr("y",Math.max(c,0)+f).attr("dy",".71em").attr("text-anchor","middle"),A.attr("d","M"+x[0]+","+e+"V0H"+x[1]+"V"+e);break;case"top":w=dz,p.attr("y2",-d),r.attr("x2",0).attr("y2",-d),t.select("line").attr("y2",-c),t.select("text").attr("y",-(Math.max(c,0)+f)),v.select("line").attr("x2",0).attr("y2",-c),v.select("text").attr("x",0).attr("y",-(Math.max(c,0)+f)).attr("dy","0em").attr("text-anchor","middle"),A.attr("d","M"+x[0]+","+ -e+"V0H"+x[1]+"V"+ -e);break;case"left":w=dA,p.attr("x2",-d),r.attr("x2",-d).attr("y2",0),t.select("line").attr("x2",-c),t.select("text").attr("x",-(Math.max(c,0)+f)),v.select("line").attr("x2",-c).attr("y2",0),v.select("text").attr("x",-(Math.max(c,0)+f)).attr("y",0).attr("dy",".32em").attr("text-anchor","end"),A.attr("d","M"+ -e+","+x[0]+"H0V"+x[1]+"H"+ -e);break;case"right":w=dA,p.attr("x2",d),r.attr("x2",d).attr("y2",0),t.select("line").attr("x2",c),t.select("text").attr("x",Math.max(c,0)+f),v.select("line").attr("x2",c).attr("y2",0),v.select("text").attr("x",Math.max(c,0)+f).attr("y",0).attr("dy",".32em").attr("text-anchor","start"),A.attr("d","M"+e+","+x[0]+"H0V"+x[1]+"H"+e)}if(a.ticks)t.call(w,C),v.call(w,B),u.call(w,B),p.call(w,C),r.call(w,B),q.call(w,B);else{var D=B.rangeBand()/2,E=function(a){return B(a)+D};t.call(w,E),v.call(w,E)}})}var a=d3.scale.linear(),b="bottom",c=6,d=6,e=6,f=3,g=[10],h=null,i,j=0;return k.scale=function(b){return arguments.length?(a=b,k):a},k.orient=function(a){return arguments.length?(b=a,k):b},k.ticks=function(){return arguments.length?(g=arguments,k):g},k.tickValues=function(a){return arguments.length?(h=a,k):h},k.tickFormat=function(a){return arguments.length?(i=a,k):i},k.tickSize=function(a,b,f){if(!arguments.length)return c;var g=arguments.length-1;return c=+a,d=g>1?+b:c,e=g>0?+arguments[g]:c,k},k.tickPadding=function(a){return arguments.length?(f=+a,k):f},k.tickSubdivide=function(a){return arguments.length?(j=+a,k):j},k},d3.svg.brush=function(){function g(a){a.each(function(){var a=d3.select(this),e=a.selectAll(".background").data([0]),f=a.selectAll(".extent").data([0]),l=a.selectAll(".resize").data(d,String),m;a.style("pointer-events","all").on("mousedown.brush",k).on("touchstart.brush",k),e.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),f.enter().append("rect").attr("class","extent").style("cursor","move"),l.enter().append("g").attr("class",function(a){return"resize "+a}).style("cursor",function(a){return dC[a]}).append("rect").attr("x",function(a){return/[ew]$/.test(a)?-3:null}).attr("y",function(a){return/^[ns]/.test(a)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),l.style("display",g.empty()?"none":null),l.exit().remove(),b&&(m=cd(b),e.attr("x",m[0]).attr("width",m[1]-m[0]),i(a)),c&&(m=cd(c),e.attr("y",m[0]).attr("height",m[1]-m[0]),j(a)),h(a)})}function h(a){a.selectAll(".resize").attr("transform",function(a){return"translate("+e[+/e$/.test(a)][0]+","+e[+/^s/.test(a)][1]+")"})}function i(a){a.select(".extent").attr("x",e[0][0]),a.selectAll(".extent,.n>rect,.s>rect").attr("width",e[1][0]-e[0][0])}function j(a){a.select(".extent").attr("y",e[0][1]),a.selectAll(".extent,.e>rect,.w>rect").attr("height",e[1][1]-e[0][1])}function k(){function x(){var a=d3.event.changedTouches;return a?d3.touches(d,a)[0]:d3.mouse(d)}function y(){d3.event.keyCode==32&&(q||(r=null,s[0]-=e[1][0],s[1]-=e[1][1],q=2),W())}function z(){d3.event.keyCode==32&&q==2&&(s[0]+=e[1][0],s[1]+=e[1][1],q=0,W())}function A(){var a=x(),d=!1;t&&(a[0]+=t[0],a[1]+=t[1]),q||(d3.event.altKey?(r||(r=[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]),s[0]=e[+(a[0]<r[0])][0],s[1]=e[+(a[1]<r[1])][1]):r=null),o&&B(a,b,0)&&(i(m),d=!0),p&&B(a,c,1)&&(j(m),d=!0),d&&(h(m),l({type:"brush",mode:q?"move":"resize"}))}function B(a,b,c){var d=cd(b),g=d[0],h=d[1],i=s[c],j=e[1][c]-e[0][c],k,l;q&&(g-=i,h-=j+i),k=Math.max(g,Math.min(h,a[c])),q?l=(k+=i)+j:(r&&(i=Math.max(g,Math.min(h,2*r[c]-k))),i<k?(l=k,k=i):l=i);if(e[0][c]!==k||e[1][c]!==l)return f=null,e[0][c]=k,e[1][c]=l,!0}function C(){A(),m.style("pointer-events","all").selectAll(".resize").style("display",g.empty()?"none":null),d3.select("body").style("cursor",null),u.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),l({type:"brushend"}),W()}var d=this,k=d3.select(d3.event.target),l=a.of(d,arguments),m=d3.select(d),n=k.datum(),o=!/^(n|s)$/.test(n)&&b,p=!/^(e|w)$/.test(n)&&c,q=k.classed("extent"),r,s=x(),t,u=d3.select(window).on("mousemove.brush",A).on("mouseup.brush",C).on("touchmove.brush",A).on("touchend.brush",C).on("keydown.brush",y).on("keyup.brush",z);if(q)s[0]=e[0][0]-s[0],s[1]=e[0][1]-s[1];else if(n){var v=+/w$/.test(n),w=+/^n/.test(n);t=[e[1-v][0]-s[0],e[1-w][1]-s[1]],s[0]=e[v][0],s[1]=e[w][1]}else d3.event.altKey&&(r=s.slice());m.style("pointer-events","none").selectAll(".resize").style("display",null),d3.select("body").style("cursor",k.style("cursor")),l({type:"brushstart"}),A(),W()}var a=Y(g,"brushstart","brush","brushend"),b=null,c=null,d=dD[0],e=[[0,0],[0,0]],f;return g.x=function(a){return arguments.length?(b=a,d=dD[!b<<1|!c],g):b},g.y=function(a){return arguments.length?(c=a,d=dD[!b<<1|!c],g):c},g.extent=function(a){var d,h,i,j,k;return arguments.length?(f=[[0,0],[0,0]],b&&(d=a[0],h=a[1],c&&(d=d[0],h=h[0]),f[0][0]=d,f[1][0]=h,b.invert&&(d=b(d),h=b(h)),h<d&&(k=d,d=h,h=k),e[0][0]=d|0,e[1][0]=h|0),c&&(i=a[0],j=a[1],b&&(i=i[1],j=j[1]),f[0][1]=i,f[1][1]=j,c.invert&&(i=c(i),j=c(j)),j<i&&(k=i,i=j,j=k),e[0][1]=i|0,e[1][1]=j|0),g):(a=f||e,b&&(d=a[0][0],h=a[1][0],f||(d=e[0][0],h=e[1][0],b.invert&&(d=b.invert(d),h=b.invert(h)),h<d&&(k=d,d=h,h=k))),c&&(i=a[0][1],j=a[1][1],f||(i=e[0][1],j=e[1][1],c.invert&&(i=c.invert(i),j=c.invert(j)),j<i&&(k=i,i=j,j=k))),b&&c?[[d,i],[h,j]]:b?[d,h]:c&&[i,j])},g.clear=function(){return f=null,e[0][0]=e[0][1]=e[1][0]=e[1][1]=0,g},g.empty=function(){return b&&e[0][0]===e[1][0]||c&&e[0][1]===e[1][1]},d3.rebind(g,a,"on")};var dC={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},dD=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]];d3.behavior={},d3.behavior.drag=function(){function c(){this.on("mousedown.drag",d).on("touchstart.drag",d)}function d(){function j(){var a=c.parentNode,b=d3.event.changedTouches;return b?d3.touches(a,b)[0]:d3.mouse(a)}function k(){if(!c.parentNode)return l();var a=j(),b=a[0]-g[0],e=a[1]-g[1];h|=b|e,g=a,W(),d({type:"drag",x:a[0]+f[0],y:a[1]+f[1],dx:b,dy:e})}function l(){d({type:"dragend"}),h&&(W(),d3.event.target===e&&i.on("click.drag",m,!0)),i.on("mousemove.drag",null).on("touchmove.drag",null).on("mouseup.drag",null).on("touchend.drag",null)}function m(){W(),i.on("click.drag",null)}var c=this,d=a.of(c,arguments),e=d3.event.target,f,g=j(),h=0,i=d3.select(window).on("mousemove.drag",k).on("touchmove.drag",k).on("mouseup.drag",l,!0).on("touchend.drag",l,!0);b?(f=b.apply(c,arguments),f=[f.x-g[0],f.y-g[1]]):f=[0,0],d({type:"dragstart"})}var a=Y(c,"drag","dragstart","dragend"),b=null;return c.origin=function(a){return arguments.length?(b=a,c):b},d3.rebind(c,a,"on")},d3.behavior.zoom=function(){function l(){this.on("mousedown.zoom",r).on("mousewheel.zoom",s).on("mousemove.zoom",t).on("DOMMouseScroll.zoom",s).on("dblclick.zoom",u).on("touchstart.zoom",v).on("touchmove.zoom",w).on("touchend.zoom",v)}function m(b){return[(b[0]-a[0])/c,(b[1]-a[1])/c]}function n(b){return[b[0]*c+a[0],b[1]*c+a[1]]}function o(a){c=Math.max(e[0],Math.min(e[1],a))}function p(b,c){c=n(c),a[0]+=b[0]-c[0],a[1]+=b[1]-c[1]}function q(b){h&&h.domain(g.range().map(function(b){return(b-a[0])/c}).map(g.invert)),j&&j.domain(i.range().map(function(b){return(b-a[1])/c}).map(i.invert)),d3.event.preventDefault(),b({type:"zoom",scale:c,translate:a})}function r(){function h(){d=1,p(d3.mouse(a),g),q(b)}function i(){d&&W(),e.on("mousemove.zoom",null).on("mouseup.zoom",null),d&&d3.event.target===c&&e.on("click.zoom",j)}function j(){W(),e.on("click.zoom",null)}var a=this,b=f.of(a,arguments),c=d3.event.target,d=0,e=d3.select(window).on("mousemove.zoom",h).on("mouseup.zoom",i),g=m(d3.mouse(a));window.focus(),W()}function s(){b||(b=m(d3.mouse(this))),o(Math.pow(2,dG()*.002)*c),p(d3.mouse(this),b),q(f.of(this,arguments))}function t(){b=null}function u(){var a=d3.mouse(this),b=m(a);o(d3.event.shiftKey?c/2:c*2),p(a,b),q(f.of(this,arguments))}function v(){var a=d3.touches(this),e=Date.now();d=c,b={},a.forEach(function(a){b[a.identifier]=m(a)}),W();if(a.length===1&&e-k<500){var g=a[0],h=m(a[0]);o(c*2),p(g,h),q(f.of(this,arguments))}k=e}function w(){var a=d3.touches(this),c=a[0],e=b[c.identifier];if(g=a[1]){var g,h=b[g.identifier];c=[(c[0]+g[0])/2,(c[1]+g[1])/2],e=[(e[0]+h[0])/2,(e[1]+h[1])/2],o(d3.event.scale*d)}p(c,e),q(f.of(this,arguments))}var a=[0,0],b,c=1,d,e=dF,f=Y(l,"zoom"),g,h,i,j,k;return l.translate=function(b){return arguments.length?(a=b.map(Number),l):a},l.scale=function(a){return arguments.length?(c=+a,l):c},l.scaleExtent=function(a){return arguments.length?(e=a==null?dF:a.map(Number),l):e},l.x=function(a){return arguments.length?(h=a,g=a.copy(),l):h},l.y=function(a){return arguments.length?(j=a,i=a.copy(),l):j},d3.rebind(l,f,"on")};var dE,dF=[0,Infinity];d3.layout={},d3.layout.bundle=function(){return function(a){var b=[],c=-1,d=a.length;while(++c<d)b.push(dH(a[c]));return b}},d3.layout.chord=function(){function j(){var a={},j=[],l=d3.range(e),m=[],n,o,p,q,r;b=[],c=[],n=0,q=-1;while(++q<e){o=0,r=-1;while(++r<e)o+=d[q][r];j.push(o),m.push(d3.range(e)),n+=o}g&&l.sort(function(a,b){return g(j[a],j[b])}),h&&m.forEach(function(a,b){a.sort(function(a,c){return h(d[b][a],d[b][c])})}),n=(2*Math.PI-f*e)/n,o=0,q=-1;while(++q<e){p=o,r=-1;while(++r<e){var s=l[q],t=m[s][r],u=d[s][t],v=o,w=o+=u*n;a[s+"-"+t]={index:s,subindex:t,startAngle:v,endAngle:w,value:u}}c.push({index:s,startAngle:p,endAngle:o,value:(o-p)/n}),o+=f}q=-1;while(++q<e){r=q-1;while(++r<e){var x=a[q+"-"+r],y=a[r+"-"+q];(x.value||y.value)&&b.push(x.value<y.value?{source:y,target:x}:{source:x,target:y})}}i&&k()}function k(){b.sort(function(a,b){return i((a.source.value+a.target.value)/2,(b.source.value+b.target.value)/2)})}var a={},b,c,d,e,f=0,g,h,i;return a.matrix=function(f){return arguments.length?(e=(d=f)&&d.length,b=c=null,a):d},a.padding=function(d){return arguments.length?(f=d,b=c=null,a):f},a.sortGroups=function(d){return arguments.length?(g=d,b=c=null,a):g},a.sortSubgroups=function(c){return arguments.length?(h=c,b=null,a):h},a.sortChords=function(c){return arguments.length?(i=c,b&&k(),a):i},a.chords=function(){return b||j(),b},a.groups=function(){return c||j(),c},a},d3.layout.force=function(){function r(a){return function(b,c,d,e,f){if(b.point!==a){var g=b.cx-a.x,h=b.cy-a.y,i=1/Math.sqrt(g*g+h*h);if((e-c)*i<k){var j=b.charge*i*i;return a.px-=g*j,a.py-=h*j,!0}if(b.point&&isFinite(i)){var j=b.pointCharge*i*i;a.px-=g*j,a.py-=h*j}}return!b.charge}}function s(b){dM(dL=b),dK=a}var a={},b=d3.dispatch("start","tick","end"),c=[1,1],d,e,f=.9,g=dR,h=dS,i=-30,j=.1,k=.8,l,m=[],n=[],o,p,q;return a.tick=function(){if((e*=.99)<.005)return b.end({type:"end",alpha:e=0}),!0;var a=m.length,d=n.length,g,h,k,l,s,t,u,v,w;for(h=0;h<d;++h){k=n[h],l=k.source,s=k.target,v=s.x-l.x,w=s.y-l.y;if(t=v*v+w*w)t=e*p[h]*((t=Math.sqrt(t))-o[h])/t,v*=t,w*=t,s.x-=v*(u=l.weight/(s.weight+l.weight)),s.y-=w*u,l.x+=v*(u=1-u),l.y+=w*u}if(u=e*j){v=c[0]/2,w=c[1]/2,h=-1;if(u)while(++h<a)k=m[h],k.x+=(v-k.x)*u,k.y+=(w-k.y)*u}if(i){dQ(g=d3.geom.quadtree(m),e,q),h=-1;while(++h<a)(k=m[h]).fixed||g.visit(r(k))}h=-1;while(++h<a)k=m[h],k.fixed?(k.x=k.px,k.y=k.py):(k.x-=(k.px-(k.px=k.x))*f,k.y-=(k.py-(k.py=k.y))*f);b.tick({type:"tick",alpha:e})},a.nodes=function(b){return arguments.length?(m=b,a):m},a.links=function(b){return arguments.length?(n=b,a):n},a.size=function(b){return arguments.length?(c=b,a):c},a.linkDistance=function(b){return arguments.length?(g=d3.functor(b),a):g},a.distance=a.linkDistance,a.linkStrength=function(b){return arguments.length?(h=d3.functor(b),a):h},a.friction=function(b){return arguments.length?(f=b,a):f},a.charge=function(b){return arguments.length?(i=typeof b=="function"?b:+b,a):i},a.gravity=function(b){return arguments.length?(j=b,a):j},a.theta=function(b){return arguments.length?(k=b,a):k},a.alpha=function(c){return arguments.length?(e?c>0?e=c:e=0:c>0&&(b.start({type:"start",alpha:e=c}),d3.timer(a.tick)),a):e},a.start=function(){function s(a,c){var d=t(b),e=-1,f=d.length,g;while(++e<f)if(!isNaN(g=d[e][a]))return g;return Math.random()*c}function t(){if(!l){l=[];for(d=0;d<e;++d)l[d]=[];for(d=0;d<f;++d){var a=n[d];l[a.source.index].push(a.target),l[a.target.index].push(a.source)}}return l[b]}var b,d,e=m.length,f=n.length,j=c[0],k=c[1],l,r;for(b=0;b<e;++b)(r=m[b]).index=b,r.weight=0;o=[],p=[];for(b=0;b<f;++b)r=n[b],typeof r.source=="number"&&(r.source=m[r.source]),typeof r.target=="number"&&(r.target=m[r.target]),o[b]=g.call(this,r,b),p[b]=h.call(this,r,b),++r.source.weight,++r.target.weight;for(b=0;b<e;++b)r=m[b],isNaN(r.x)&&(r.x=s("x",j)),isNaN(r.y)&&(r.y=s("y",k)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);q=[];if(typeof i=="function")for(b=0;b<e;++b)q[b]=+i.call(this,m[b],b);else for(b=0;b<e;++b)q[b]=i;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){d||(d=d3.behavior.drag().origin(Object).on("dragstart",s).on("drag",dP).on("dragend",dO)),this.on("mouseover.force",dM).on("mouseout.force",dN).call(d)},d3.rebind(a,b,"on")};var dK,dL;d3.layout.partition=function(){function c(a,b,d,e){var f=a.children;a.x=b,a.y=a.depth*e,a.dx=d,a.dy=e;if(f&&(h=f.length)){var g=-1,h,i,j;d=a.value?d/a.value:0;while(++g<h)c(i=f[g],b,j=i.value*d,e),b+=j}}function d(a){var b=a.children,c=0;if(b&&(f=b.length)){var e=-1,f;while(++e<f)c=Math.max(c,d(b[e]))}return 1+c}function e(e,f){var g=a.call(this,e,f);return c(g[0],0,b[0],b[1]/d(g[0])),g}var a=d3.layout.hierarchy(),b=[1,1];return e.size=function(a){return arguments.length?(b=a,e):b},ef(e,a)},d3.layout.pie=function(){function f(g,h){var i=g.map(function(b,c){return+a.call(f,b,c)}),j=+(typeof c=="function"?c.apply(this,arguments):c),k=((typeof e=="function"?e.apply(this,arguments):e)-c)/d3.sum(i),l=d3.range(g.length);b!=null&&l.sort(b===dT?function(a,b){return i[b]-i[a]}:function(a,c){return b(g[a],g[c])});var m=[];return l.forEach(function(a){m[a]={data:g[a],value:d=i[a],startAngle:j,endAngle:j+=d*k}}),m}var a=Number,b=dT,c=0,e=2*Math.PI;return f.value=function(b){return arguments.length?(a=b,f):a},f.sort=function(a){return arguments.length?(b=a,f):b},f.startAngle=function(a){return arguments.length?(c=a,f):c},f.endAngle=function(a){return arguments.length?(e=a,f):e},f};var dT={};d3.layout.stack=function(){function g(h,i){var j=h.map(function(b,c){return a.call(g,b,c)}),k=j.map(function(a,b){return a.map(function(a,b){return[e.call(g,a,b),f.call(g,a,b)]})}),l=b.call(g,k,i);j=d3.permute(j,l),k=d3.permute(k,l);var m=c.call(g,k,i),n=j.length,o=j[0].length,p,q,r;for(q=0;q<o;++q){d.call(g,j[0][q],r=m[q],k[0][q][1]);for(p=1;p<n;++p)d.call(g,j[p][q],r+=k[p-1][q][1],k[p][q][1])}return h}var a=Object,b=dZ,c=d$,d=dW,e=dU,f=dV;return g.values=function(b){return arguments.length?(a=b,g):a},g.order=function(a){return arguments.length?(b=typeof a=="function"?a:dX.get(a)||dZ,g):b},g.offset=function(a){return arguments.length?(c=typeof a=="function"?a:dY.get(a)||d$,g):c},g.x=function(a){return arguments.length?(e=a,g):e},g.y=function(a){return arguments.length?(f=a,g):f},g.out=function(a){return arguments.length?(d=a,g):d},g};var dX=d3.map({"inside-out":function(a){var b=a.length,c,d,e=a.map(d_),f=a.map(ea),g=d3.range(b).sort(function(a,b){return e[a]-e[b]}),h=0,i=0,j=[],k=[];for(c=0;c<b;++c)d=g[c],h<i?(h+=f[d],j.push(d)):(i+=f[d],k.push(d));return k.reverse().concat(j)},reverse:function(a){return d3.range(a.length).reverse()},"default":dZ}),dY=d3.map({silhouette:function(a){var b=a.length,c=a[0].length,d=[],e=0,f,g,h,i=[];for(g=0;g<c;++g){for(f=0,h=0;f<b;f++)h+=a[f][g][1];h>e&&(e=h),d.push(h)}for(g=0;g<c;++g)i[g]=(e-d[g])/2;return i},wiggle:function(a){var b=a.length,c=a[0],d=c.length,e=0,f,g,h,i,j,k,l,m,n,o=[];o[0]=m=n=0;for(g=1;g<d;++g){for(f=0,i=0;f<b;++f)i+=a[f][g][1];for(f=0,j=0,l=c[g][0]-c[g-1][0];f<b;++f){for(h=0,k=(a[f][g][1]-a[f][g-1][1])/(2*l);h<f;++h)k+=(a[h][g][1]-a[h][g-1][1])/l;j+=k*a[f][g][1]}o[g]=m-=i?j/i*l:0,m<n&&(n=m)}for(g=0;g<d;++g)o[g]-=n;return o},expand:function(a){var b=a.length,c=a[0].length,d=1/b,e,f,g,h=[];for(f=0;f<c;++f){for(e=0,g=0;e<b;e++)g+=a[e][f][1];if(g)for(e=0;e<b;e++)a[e][f][1]/=g;else for(e=0;e<b;e++)a[e][f][1]=d}for(f=0;f<c;++f)h[f]=0;return h},zero:d$});d3.layout.histogram=function(){function e(e,f){var g=[],h=e.map(b,this),i=c.call(this,h,f),j=d.call(this,i,h,f),k,f=-1,l=h.length,m=j.length-1,n=a?1:1/l,o;while(++f<m)k=g[f]=[],k.dx=j[f+1]-(k.x=j[f]),k.y=0;f=-1;while(++f<l)o=h[f],o>=i[0]&&o<=i[1]&&(k=g[d3.bisect(j,o,1,m)-1],k.y+=n,k.push(e[f]));return g}var a=!0,b=Number,c=ee,d=ec;return e.value=function(a){return arguments.length?(b=a,e):b},e.range=function(a){return arguments.length?(c=d3.functor(a),e):c},e.bins=function(a){return arguments.length?(d=typeof a=="number"?function(b){return ed(b,a)}:d3.functor(a),e):d},e.frequency=function(b){return arguments.length?(a=!!b,e):a},e},d3.layout.hierarchy=function(){function e(f,h,i){var j=b.call(g,f,h),k=ek?f:{data:f};k.depth=h,i.push(k);if(j&&(m=j.length)){var l=-1,m,n=k.children=[],o=0,p=h+1;while(++l<m)d=e(j[l],p,i),d.parent=k,n.push(d),o+=d.value;a&&n.sort(a),c&&(k.value=o)}else c&&(k.value=+c.call(g,f,h)||0);return k}function f(a,b){var d=a.children,e=0;if(d&&(i=d.length)){var h=-1,i,j=b+1;while(++h<i)e+=f(d[h],j)}else c&&(e=+c.call(g,ek?a:a.data,b)||0);return c&&(a.value=e),e}function g(a){var b=[];return e(a,0,b),b}var a=ei,b=eg,c=eh;return g.sort=function(b){return arguments.length?(a=b,g):a},g.children=function(a){return arguments.length?(b=a,g):b},g.value=function(a){return arguments.length?(c=a,g):c},g.revalue=function(a){return f(a,0),a},g};var ek=!1;d3.layout.pack=function(){function c(c,d){var e=a.call(this,c,d),f=e[0];f.x=0,f.y=0,es(f);var g=b[0],h=b[1],i=1/Math.max(2*f.r/g,2*f.r/h);return et(f,g/2,h/2,i),e}var a=d3.layout.hierarchy().sort(el),b=[1,1];return c.size=function(a){return arguments.length?(b=a,c):b},ef(c,a)},d3.layout.cluster=function(){function d(d,e){var f=a.call(this,d,e),g=f[0],h,i=0,j,k;eG(g,function(a){var c=a.children;c&&c.length?(a.x=ew(c),a.y=ev(c)):(a.x=h?i+=b(a,h):0,a.y=0,h=a)});var l=ex(g),m=ey(g),n=l.x-b(l,m)/2,o=m.x+b(m,l)/2;return eG(g,function(a){a.x=(a.x-n)/(o-n)*c[0],a.y=(1-(g.y?a.y/g.y:1))*c[1]}),f}var a=d3.layout.hierarchy().sort(null).value(null),b=ez,c=[1,1];return d.separation=function(a){return arguments.length?(b=a,d):b},d.size=function(a){return arguments.length?(c=a,d):c},ef(d,a)},d3.layout.tree=function(){function d(d,e){function h(a,c){var d=a.children,e=a._tree;if(d&&(f=d.length)){var f,g=d[0],i,k=g,l,m=-1;while(++m<f)l=d[m],h(l,i),k=j(l,i,k),i=l;eH(a);var n=.5*(g._tree.prelim+l._tree.prelim);c?(e.prelim=c._tree.prelim+b(a,c),e.mod=e.prelim-n):e.prelim=n}else c&&(e.prelim=c._tree.prelim+b(a,c))}function i(a,b){a.x=a._tree.prelim+b;var c=a.children;if(c&&(e=c.length)){var d=-1,e;b+=a._tree.mod;while(++d<e)i(c[d],b)}}function j(a,c,d){if(c){var e=a,f=a,g=c,h=a.parent.children[0],i=e._tree.mod,j=f._tree.mod,k=g._tree.mod,l=h._tree.mod,m;while(g=eB(g),e=eA(e),g&&e)h=eA(h),f=eB(f),f._tree.ancestor=a,m=g._tree.prelim+k-e._tree.prelim-i+b(g,e),m>0&&(eI(eJ(g,a,d),a,m),i+=m,j+=m),k+=g._tree.mod,i+=e._tree.mod,l+=h._tree.mod,j+=f._tree.mod;g&&!eB(f)&&(f._tree.thread=g,f._tree.mod+=k-j),e&&!eA(h)&&(h._tree.thread=e,h._tree.mod+=i-l,d=a)}return d}var f=a.call(this,d,e),g=f[0];eG(g,function(a,b){a._tree={ancestor:a,prelim:0,mod:0,change:0,shift:0,number:b?b._tree.number+1:0}}),h(g),i(g,-g._tree.prelim);var k=eC(g,eE),l=eC(g,eD),m=eC(g,eF),n=k.x-b(k,l)/2,o=l.x+b(l,k)/2,p=m.depth||1;return eG(g,function(a){a.x=(a.x-n)/(o-n)*c[0],a.y=a.depth/p*c[1],delete a._tree}),f}var a=d3.layout.hierarchy().sort(null).value(null),b=ez,c=[1,1];return d.separation=function(a){return arguments.length?(b=a,d):b},d.size=function(a){return arguments.length?(c=a,d):c},ef(d,a)},d3.layout.treemap=function(){function i(a,b){var c=-1,d=a.length,e,f;while(++c<d)f=(e=a[c]).value*(b<0?0:b),e.area=isNaN(f)||f<=0?0:f}function j(a){var b=a.children;if(b&&b.length){var c=e(a),d=[],f=b.slice(),g,h=Infinity,k,n=Math.min(c.dx,c.dy),o;i(f,c.dx*c.dy/a.value),d.area=0;while((o=f.length)>0)d.push(g=f[o-1]),d.area+=g.area,(k=l(d,n))<=h?(f.pop(),h=k):(d.area-=d.pop().area,m(d,n,c,!1),n=Math.min(c.dx,c.dy),d.length=d.area=0,h=Infinity);d.length&&(m(d,n,c,!0),d.length=d.area=0),b.forEach(j)}}function k(a){var b=a.children;if(b&&b.length){var c=e(a),d=b.slice(),f,g=[];i(d,c.dx*c.dy/a.value),g.area=0;while(f=d.pop())g.push(f),g.area+=f.area,f.z!=null&&(m(g,f.z?c.dx:c.dy,c,!d.length),g.length=g.area=0);b.forEach(k)}}function l(a,b){var c=a.area,d,e=0,f=Infinity,g=-1,i=a.length;while(++g<i){if(!(d=a[g].area))continue;d<f&&(f=d),d>e&&(e=d)}return c*=c,b*=b,c?Math.max(b*e*h/c,c/(b*f*h)):Infinity}function m(a,c,d,e){var f=-1,g=a.length,h=d.x,i=d.y,j=c?b(a.area/c):0,k;if(c==d.dx){if(e||j>d.dy)j=d.dy;while(++f<g)k=a[f],k.x=h,k.y=i,k.dy=j,h+=k.dx=Math.min(d.x+d.dx-h,j?b(k.area/j):0);k.z=!0,k.dx+=d.x+d.dx-h,d.y+=j,d.dy-=j}else{if(e||j>d.dx)j=d.dx;while(++f<g)k=a[f],k.x=h,k.y=i,k.dx=j,i+=k.dy=Math.min(d.y+d.dy-i,j?b(k.area/j):0);k.z=!1,k.dy+=d.y+d.dy-i,d.x+=j,d.dx-=j}}function n(b){var d=g||a(b),e=d[0];return e.x=0,e.y=0,e.dx=c[0],e.dy=c[1],g&&a.revalue(e),i([e],e.dx*e.dy/e.value),(g?k:j)(e),f&&(g=d),d}var a=d3.layout.hierarchy(),b=Math.round,c=[1,1],d=null,e=eK,f=!1,g,h=.5*(1+Math.sqrt(5));return n.size=function(a){return arguments.length?(c=a,n):c},n.padding=function(a){function b(b){var c=a.call(n,b,b.depth);return c==null?eK(b):eL(b,typeof c=="number"?[c,c,c,c]:c)}function c(b){return eL(b,a)}if(!arguments.length)return d;var f;return e=(d=a)==null?eK:(f=typeof a)==="function"?b:f==="number"?(a=[a,a,a,a],c):c,n},n.round=function(a){return arguments.length?(b=a?Math.round:Number,n):b!=Number},n.sticky=function(a){return arguments.length?(f=a,g=null,n):f},n.ratio=function(a){return arguments.length?(h=a,n):h},ef(n,a)},d3.csv=function(a,b){d3.text(a,"text/csv",function(a){b(a&&d3.csv.parse(a))})},d3.csv.parse=function(a){var b;return d3.csv.parseRows(a,function(a,c){if(c){var d={},e=-1,f=b.length;while(++e<f)d[b[e]]=a[e];return d}return b=a,null})},d3.csv.parseRows=function(a,b){function j(){if(f.lastIndex>=a.length)return d;if(i)return i=!1,c;var b=f.lastIndex;if(a.charCodeAt(b)===34){var e=b;while(e++<a.length)if(a.charCodeAt(e)===34){if(a.charCodeAt(e+1)!==34)break;e++}f.lastIndex=e+2;var g=a.charCodeAt(e+1);return g===13?(i=!0,a.charCodeAt(e+2)===10&&f.lastIndex++):g===10&&(i=!0),a.substring(b+1,e).replace(/""/g,'"')}var h=f.exec(a);return h?(i=h[0].charCodeAt(0)!==44,a.substring(b,h.index)):(f.lastIndex=a.length,a.substring(b))}var c={},d={},e=[],f=/\r\n|[,\r\n]/g,g=0,h,i;f.lastIndex=0;while((h=j())!==d){var k=[];while(h!==c&&h!==d)k.push(h),h=j();if(b&&!(k=b(k,g++)))continue;e.push(k)}return e},d3.csv.format=function(a){return a.map(eM).join("\n")},d3.geo={};var eO=Math.PI/180;d3.geo.azimuthal=function(){function i(b){var f=b[0]*eO-e,i=b[1]*eO,j=Math.cos(f),k=Math.sin(f),l=Math.cos(i),m=Math.sin(i),n=a!=="orthographic"?h*m+g*l*j:null,o,p=a==="stereographic"?1/(1+n):a==="gnomonic"?1/n:a==="equidistant"?(o=Math.acos(n),o?o/Math.sin(o):0):a==="equalarea"?Math.sqrt(2/(1+n)):1,q=p*l*k,r=p*(h*l*j-g*m);return[c*q+d[0],c*r+d[1]]}var a="orthographic",b,c=200,d=[480,250],e,f,g,h;return i.invert=function(b){var f=(b[0]-d[0])/c,i=(b[1]-d[1])/c,j=Math.sqrt(f*f+i*i),k=a==="stereographic"?2*Math.atan(j):a==="gnomonic"?Math.atan(j):a==="equidistant"?j:a==="equalarea"?2*Math.asin(.5*j):Math.asin(j),l=Math.sin(k),m=Math.cos(k);return[(e+Math.atan2(f*l,j*g*m+i*h*l))/eO,Math.asin(m*h-(j?i*l*g/j:0))/eO]},i.mode=function(b){return arguments.length?(a=b+"",i):a},i.origin=function(a){return arguments.length?(b=a,e=b[0]*eO,f=b[1]*eO,g=Math.cos(f),h=Math.sin(f),i):b},i.scale=function(a){return arguments.length?(c=+a,i):c},i.translate=function(a){return arguments.length?(d=[+a[0],+a[1]],i):d},i.origin([0,0])},d3.geo.albers=function(){function i(a){var b=f*(eO*a[0]-e),i=Math.sqrt(g-2*f*Math.sin(eO*a[1]))/f;return[c*i*Math.sin(b)+d[0],c*(i*Math.cos(b)-h)+d[1]]}function j(){var c=eO*b[0],d=eO*b[1],j=eO*a[1],k=Math.sin(c),l=Math.cos(c);return e=eO*a[0],f=.5*(k+Math.sin(d)),g=l*l+2*f*k,h=Math.sqrt(g-2*f*Math.sin(j))/f,i}var a=[-98,38],b=[29.5,45.5],c=1e3,d=[480,250],e,f,g,h;return i.invert=function(a){var b=(a[0]-d[0])/c,i=(a[1]-d[1])/c,j=h+i,k=Math.atan2(b,j),l=Math.sqrt(b*b+j*j);return[(e+k/f)/eO,Math.asin((g-l*l*f*f)/(2*f))/eO]},i.origin=function(b){return arguments.length?(a=[+b[0],+b[1]],j()):a},i.parallels=function(a){return arguments.length?(b=[+a[0],+a[1]],j()):b},i.scale=function(a){return arguments.length?(c=+a,i):c},i.translate=function(a){return arguments.length?(d=[+a[0],+a[1]],i):d},j()},d3.geo.albersUsa=function(){function e(e){var f=e[0],g=e[1];return(g>50?b:f<-140?c:g<21?d:a)(e)}var a=d3.geo.albers(),b=d3.geo.albers().origin([-160,60]).parallels([55,65]),c=d3.geo.albers().origin([-160,20]).parallels([8,18]),d=d3.geo.albers().origin([-60,10]).parallels([8,18]);return e.scale=function(f){return arguments.length?(a.scale(f),b.scale(f*.6),c.scale(f),d.scale(f*1.5),e.translate(a.translate())):a.scale()},e.translate=function(f){if(!arguments.length)return a.translate();var g=a.scale()/1e3,h=f[0],i=f[1];return a.translate(f),b.translate([h-400*g,i+170*g]),c.translate([h-190*g,i+200*g]),d.translate([h+580*g,i+430*g]),e},e.scale(a.scale())},d3.geo.bonne=function(){function g(g){var h=g[0]*eO-c,i=g[1]*eO-d;if(e){var j=f+e-i,k=h*Math.cos(i)/j;h=j*Math.sin(k),i=j*Math.cos(k)-f}else h*=Math.cos(i),i*=-1;return[a*h+b[0],a*i+b[1]]}var a=200,b=[480,250],c,d,e,f;return g.invert=function(d){var g=(d[0]-b[0])/a,h=(d[1]-b[1])/a;if(e){var i=f+h,j=Math.sqrt(g*g+i*i);h=f+e-j,g=c+j*Math.atan2(g,i)/Math.cos(h)}else h*=-1,g/=Math.cos(h);return[g/eO,h/eO]},g.parallel=function(a){return arguments.length?(f=1/Math.tan(e=a*eO),g):e/eO},g.origin=function(a){return arguments.length?(c=a[0]*eO,d=a[1]*eO,g):[c/eO,d/eO]},g.scale=function(b){return arguments.length?(a=+b,g):a},g.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],g):b},g.origin([0,0]).parallel(45)},d3.geo.equirectangular=function(){function c(c){var d=c[0]/360,e=-c[1]/360;return[a*d+b[0],a*e+b[1]]}var a=500,b=[480,250];return c.invert=function(c){var d=(c[0]-b[0])/a,e=(c[1]-b[1])/a;return[360*d,-360*e]},c.scale=function(b){return arguments.length?(a=+b,c):a},c.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],c):b},c},d3.geo.mercator=function(){function c(c){var d=c[0]/360,e=-(Math.log(Math.tan(Math.PI/4+c[1]*eO/2))/eO)/360;return[a*d+b[0],a*Math.max(-0.5,Math.min(.5,e))+b[1]]}var a=500,b=[480,250];return c.invert=function(c){var d=(c[0]-b[0])/a,e=(c[1]-b[1])/a;return[360*d,2*Math.atan(Math.exp(-360*e*eO))/eO-90]},c.scale=function(b){return arguments.length?(a=+b,c):a},c.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],c):b},c},d3.geo.path=function(){function d(c,d){return typeof a=="function"&&(b=eQ(a.apply(this,arguments))),f(c)||null}function e(a){return c(a).join(",")}function h(a){var b=k(a[0]),c=0,d=a.length;while(++c<d)b-=k(a[c]);return b}function i(a){var b=d3.geom.polygon(a[0].map(c)),d=b.area(),e=b.centroid(d<0?(d*=-1,1):-1),f=e[0],g=e[1],h=d,i=0,j=a.length;while(++i<j)b=d3.geom.polygon(a[i].map(c)),d=b.area(),e=b.centroid(d<0?(d*=-1,1):-1),f-=e[0],g-=e[1],h-=d;return[f,g,6*h]}function k(a){return Math.abs(d3.geom.polygon(a.map(c)).area())}var a=4.5,b=eQ(a),c=d3.geo.albersUsa(),f=eP({FeatureCollection:function(a){var b=[],c=a.features,d=-1,e=c.length;while(++d<e)b.push(f(c[d].geometry));return b.join("")},Feature:function(a){return f(a.geometry)},Point:function(a){return"M"+e(a.coordinates)+b},MultiPoint:function(a){var c=[],d=a.coordinates,f=-1,g=d.length;while(++f<g)c.push("M",e(d[f]),b);return c.join("")},LineString:function(a){var b=["M"],c=a.coordinates,d=-1,f=c.length;while(++d<f)b.push(e(c[d]),"L");return b.pop(),b.join("")},MultiLineString:function(a){var b=[],c=a.coordinates,d=-1,f=c.length,g,h,i;while(++d<f){g=c[d],h=-1,i=g.length,b.push("M");while(++h<i)b.push(e(g[h]),"L");b.pop()}return b.join("")},Polygon:function(a){var b=[],c=a.coordinates,d=-1,f=c.length,g,h,i;while(++d<f){g=c[d],h=-1;if((i=g.length-1)>0){b.push("M");while(++h<i)b.push(e(g[h]),"L");b[b.length-1]="Z"}}return b.join("")},MultiPolygon:function(a){var b=[],c=a.coordinates,d=-1,f=c.length,g,h,i,j,k,l;while(++d<f){g=c[d],h=-1,i=g.length;while(++h<i){j=g[h],k=-1;if((l=j.length-1)>0){b.push("M");while(++k<l)b.push(e(j[k]),"L");b[b.length-1]="Z"}}}return b.join("")},GeometryCollection:function(a){var b=[],c=a.geometries,d=-1,e=c.length;while(++d<e)b.push(f(c[d]));return b.join("")}}),g=d.area=eP({FeatureCollection:function(a){var b=0,c=a.features,d=-1,e=c.length;while(++d<e)b+=g(c[d]);return b},Feature:function(a){return g(a.geometry)},Polygon:function(a){return h(a.coordinates)},MultiPolygon:function(a){var b=0,c=a.coordinates,d=-1,e=c.length;while(++d<e)b+=h(c[d]);return b},GeometryCollection:function(a){var b=0,c=a.geometries,d=-1,e=c.length;while(++d<e)b+=g(c[d]);return b}},0),j=d.centroid=eP({Feature:function(a){return j(a.geometry)},Polygon:function(a){var b=i(a.coordinates);return[b[0]/b[2],b[1]/b[2]]},MultiPolygon:function(a){var b=0,c=a.coordinates,d,e=0,f=0,g=0,h=-1,j=c.length;while(++h<j)d=i(c[h]),e+=d[0],f+=d[1],g+=d[2];return[e/g,f/g]}});return d.projection=function(a){return c=a,d},d.pointRadius=function(c){return typeof c=="function"?a=c:(a=+c,b=eQ(a)),d},d},d3.geo.bounds=function(a){var b=Infinity,c=Infinity,d=-Infinity,e=-Infinity;return eR(a,function(a,f){a<b&&(b=a),a>d&&(d=a),f<c&&(c=f),f>e&&(e=f)}),[[b,c],[d,e]]};var eS={Feature:eT,FeatureCollection:eU,GeometryCollection:eV,LineString:eW,MultiLineString:eX,MultiPoint:eW,MultiPolygon:eY,Point:eZ,Polygon:e$};d3.geo.circle=function(){function e(){}function f(a){return d.distance(a)<c}function h(a){var b=-1,e=a.length,f=[],g,h,j,k,l;while(++b<e)l=d.distance(j=a[b]),l<c?(h&&f.push(fb(h,j)((k-c)/(k-l))),f.push(j),g=h=null):(h=j,!g&&f.length&&(f.push(fb(f[f.length-1],h)((c-k)/(l-k))),g=h)),k=l;return h&&f.length&&(l=d.distance(j=f[0]),f.push(fb(h,j)((k-c)/(k-l)))),i(f)}function i(a){var b=0,c=a.length,e,f,g=c?[a[0]]:a,h,i=d.source();while(++b<c){h=d.source(a[b-1])(a[b]).coordinates;for(e=0,f=h.length;++e<f;)g.push(h[e])}return d.source(i),g}var a=[0,0],b=89.99,c=b*eO,d=d3.geo.greatArc().target(Object);e.clip=function(b){return d.source(typeof a=="function"?a.apply(this,arguments):a),g(b)};var g=eP({FeatureCollection:function(a){var b=a.features.map(g).filter(Object);return b&&(a=Object.create(a),a.features=b,a)},Feature:function(a){var b=g(a.geometry);return b&&(a=Object.create(a),a.geometry=b,a)},Point:function(a){return f
+(a.coordinates)&&a},MultiPoint:function(a){var b=a.coordinates.filter(f);return b.length&&{type:a.type,coordinates:b}},LineString:function(a){var b=h(a.coordinates);return b.length&&(a=Object.create(a),a.coordinates=b,a)},MultiLineString:function(a){var b=a.coordinates.map(h).filter(function(a){return a.length});return b.length&&(a=Object.create(a),a.coordinates=b,a)},Polygon:function(a){var b=a.coordinates.map(h);return b[0].length&&(a=Object.create(a),a.coordinates=b,a)},MultiPolygon:function(a){var b=a.coordinates.map(function(a){return a.map(h)}).filter(function(a){return a[0].length});return b.length&&(a=Object.create(a),a.coordinates=b,a)},GeometryCollection:function(a){var b=a.geometries.map(g).filter(Object);return b.length&&(a=Object.create(a),a.geometries=b,a)}});return e.origin=function(b){return arguments.length?(a=b,e):a},e.angle=function(a){return arguments.length?(c=(b=+a)*eO,e):b},e.precision=function(a){return arguments.length?(d.precision(a),e):d.precision()},e},d3.geo.greatArc=function(){function d(){var d=typeof a=="function"?a.apply(this,arguments):a,e=typeof b=="function"?b.apply(this,arguments):b,f=fb(d,e),g=c/f.d,h=0,i=[d];while((h+=g)<1)i.push(f(h));return i.push(e),{type:"LineString",coordinates:i}}var a=e_,b=fa,c=6*eO;return d.distance=function(){var c=typeof a=="function"?a.apply(this,arguments):a,d=typeof b=="function"?b.apply(this,arguments):b;return fb(c,d).d},d.source=function(b){return arguments.length?(a=b,d):a},d.target=function(a){return arguments.length?(b=a,d):b},d.precision=function(a){return arguments.length?(c=a*eO,d):c/eO},d},d3.geo.greatCircle=d3.geo.circle,d3.geom={},d3.geom.contour=function(a,b){var c=b||fe(a),d=[],e=c[0],f=c[1],g=0,h=0,i=NaN,j=NaN,k=0;do k=0,a(e-1,f-1)&&(k+=1),a(e,f-1)&&(k+=2),a(e-1,f)&&(k+=4),a(e,f)&&(k+=8),k===6?(g=j===-1?-1:1,h=0):k===9?(g=0,h=i===1?-1:1):(g=fc[k],h=fd[k]),g!=i&&h!=j&&(d.push([e,f]),i=g,j=h),e+=g,f+=h;while(c[0]!=e||c[1]!=f);return d};var fc=[1,0,1,1,-1,0,-1,1,0,0,0,0,-1,0,-1,NaN],fd=[0,-1,0,0,0,-1,0,0,1,-1,1,1,0,-1,0,NaN];d3.geom.hull=function(a){if(a.length<3)return[];var b=a.length,c=b-1,d=[],e=[],f,g,h=0,i,j,k,l,m,n,o,p;for(f=1;f<b;++f)a[f][1]<a[h][1]?h=f:a[f][1]==a[h][1]&&(h=a[f][0]<a[h][0]?f:h);for(f=0;f<b;++f){if(f===h)continue;j=a[f][1]-a[h][1],i=a[f][0]-a[h][0],d.push({angle:Math.atan2(j,i),index:f})}d.sort(function(a,b){return a.angle-b.angle}),o=d[0].angle,n=d[0].index,m=0;for(f=1;f<c;++f)g=d[f].index,o==d[f].angle?(i=a[n][0]-a[h][0],j=a[n][1]-a[h][1],k=a[g][0]-a[h][0],l=a[g][1]-a[h][1],i*i+j*j>=k*k+l*l?d[f].index=-1:(d[m].index=-1,o=d[f].angle,m=f,n=g)):(o=d[f].angle,m=f,n=g);e.push(h);for(f=0,g=0;f<2;++g)d[g].index!==-1&&(e.push(d[g].index),f++);p=e.length;for(;g<c;++g){if(d[g].index===-1)continue;while(!ff(e[p-2],e[p-1],d[g].index,a))--p;e[p++]=d[g].index}var q=[];for(f=0;f<p;++f)q.push(a[e[f]]);return q},d3.geom.polygon=function(a){return a.area=function(){var b=0,c=a.length,d=a[c-1][0]*a[0][1],e=a[c-1][1]*a[0][0];while(++b<c)d+=a[b-1][0]*a[b][1],e+=a[b-1][1]*a[b][0];return(e-d)*.5},a.centroid=function(b){var c=-1,d=a.length,e=0,f=0,g,h=a[d-1],i;arguments.length||(b=-1/(6*a.area()));while(++c<d)g=h,h=a[c],i=g[0]*h[1]-h[0]*g[1],e+=(g[0]+h[0])*i,f+=(g[1]+h[1])*i;return[e*b,f*b]},a.clip=function(b){var c,d=-1,e=a.length,f,g,h=a[e-1],i,j,k;while(++d<e){c=b.slice(),b.length=0,i=a[d],j=c[(g=c.length)-1],f=-1;while(++f<g)k=c[f],fg(k,h,i)?(fg(j,h,i)||b.push(fh(j,k,h,i)),b.push(k)):fg(j,h,i)&&b.push(fh(j,k,h,i)),j=k;h=i}return b},a},d3.geom.voronoi=function(a){var b=a.map(function(){return[]});return fj(a,function(a){var c,d,e,f,g,h;a.a===1&&a.b>=0?(c=a.ep.r,d=a.ep.l):(c=a.ep.l,d=a.ep.r),a.a===1?(g=c?c.y:-1e6,e=a.c-a.b*g,h=d?d.y:1e6,f=a.c-a.b*h):(e=c?c.x:-1e6,g=a.c-a.a*e,f=d?d.x:1e6,h=a.c-a.a*f);var i=[e,g],j=[f,h];b[a.region.l.index].push(i,j),b[a.region.r.index].push(i,j)}),b.map(function(b,c){var d=a[c][0],e=a[c][1];return b.forEach(function(a){a.angle=Math.atan2(a[0]-d,a[1]-e)}),b.sort(function(a,b){return a.angle-b.angle}).filter(function(a,c){return!c||a.angle-b[c-1].angle>1e-10})})};var fi={l:"r",r:"l"};d3.geom.delaunay=function(a){var b=a.map(function(){return[]}),c=[];return fj(a,function(c){b[c.region.l.index].push(a[c.region.r.index])}),b.forEach(function(b,d){var e=a[d],f=e[0],g=e[1];b.forEach(function(a){a.angle=Math.atan2(a[0]-f,a[1]-g)}),b.sort(function(a,b){return a.angle-b.angle});for(var h=0,i=b.length-1;h<i;h++)c.push([e,b[h],b[h+1]])}),c},d3.geom.quadtree=function(a,b,c,d,e){function k(a,b,c,d,e,f){if(isNaN(b.x)||isNaN(b.y))return;if(a.leaf){var g=a.point;g?Math.abs(g.x-b.x)+Math.abs(g.y-b.y)<.01?l(a,b,c,d,e,f):(a.point=null,l(a,g,c,d,e,f),l(a,b,c,d,e,f)):a.point=b}else l(a,b,c,d,e,f)}function l(a,b,c,d,e,f){var g=(c+e)*.5,h=(d+f)*.5,i=b.x>=g,j=b.y>=h,l=(j<<1)+i;a.leaf=!1,a=a.nodes[l]||(a.nodes[l]=fk()),i?c=g:e=g,j?d=h:f=h,k(a,b,c,d,e,f)}var f,g=-1,h=a.length;h&&isNaN(a[0].x)&&(a=a.map(fm));if(arguments.length<5)if(arguments.length===3)e=d=c,c=b;else{b=c=Infinity,d=e=-Infinity;while(++g<h)f=a[g],f.x<b&&(b=f.x),f.y<c&&(c=f.y),f.x>d&&(d=f.x),f.y>e&&(e=f.y);var i=d-b,j=e-c;i>j?e=c+i:d=b+j}var m=fk();return m.add=function(a){k(m,a,b,c,d,e)},m.visit=function(a){fl(a,m,b,c,d,e)},a.forEach(m.add),m},d3.time={};var fn=Date;fo.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(){fp.setUTCDate.apply(this._,arguments)},setDay:function(){fp.setUTCDay.apply(this._,arguments)},setFullYear:function(){fp.setUTCFullYear.apply(this._,arguments)},setHours:function(){fp.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){fp.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){fp.setUTCMinutes.apply(this._,arguments)},setMonth:function(){fp.setUTCMonth.apply(this._,arguments)},setSeconds:function(){fp.setUTCSeconds.apply(this._,arguments)},setTime:function(){fp.setTime.apply(this._,arguments)}};var fp=Date.prototype;d3.time.format=function(a){function c(c){var d=[],e=-1,f=0,g,h;while(++e<b)a.charCodeAt(e)==37&&(d.push(a.substring(f,e),(h=fv[g=a.charAt(++e)])?h(c):g),f=e+1);return d.push(a.substring(f,e)),d.join("")}var b=a.length;return c.parse=function(b){var c={y:1900,m:0,d:1,H:0,M:0,S:0,L:0},d=fq(c,a,b,0);if(d!=b.length)return null;"p"in c&&(c.H=c.H%12+c.p*12);var e=new fn;return e.setFullYear(c.y,c.m,c.d),e.setHours(c.H,c.M,c.S,c.L),e},c.toString=function(){return a},c};var fr=d3.format("02d"),fs=d3.format("03d"),ft=d3.format("04d"),fu=d3.format("2d"),fv={a:function(a){return d3_time_weekdays[a.getDay()].substring(0,3)},A:function(a){return d3_time_weekdays[a.getDay()]},b:function(a){return fG[a.getMonth()].substring(0,3)},B:function(a){return fG[a.getMonth()]},c:d3.time.format("%a %b %e %H:%M:%S %Y"),d:function(a){return fr(a.getDate())},e:function(a){return fu(a.getDate())},H:function(a){return fr(a.getHours())},I:function(a){return fr(a.getHours()%12||12)},j:function(a){return fs(1+d3.time.dayOfYear(a))},L:function(a){return fs(a.getMilliseconds())},m:function(a){return fr(a.getMonth()+1)},M:function(a){return fr(a.getMinutes())},p:function(a){return a.getHours()>=12?"PM":"AM"},S:function(a){return fr(a.getSeconds())},U:function(a){return fr(d3.time.sundayOfYear(a))},w:function(a){return a.getDay()},W:function(a){return fr(d3.time.mondayOfYear(a))},x:d3.time.format("%m/%d/%y"),X:d3.time.format("%H:%M:%S"),y:function(a){return fr(a.getFullYear()%100)},Y:function(a){return ft(a.getFullYear()%1e4)},Z:fW,"%":function(a){return"%"}},fw={a:fx,A:fy,b:fB,B:fD,c:fH,d:fO,e:fO,H:fP,I:fP,L:fS,m:fN,M:fQ,p:fU,S:fR,x:fI,X:fJ,y:fL,Y:fK},fz=/^(?:sun|mon|tue|wed|thu|fri|sat)/i,fA=/^(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/i;d3_time_weekdays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var fC=d3.map({jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11}),fE=/^(?:January|February|March|April|May|June|July|August|September|October|November|December)/ig,fF=d3.map({january:0,february:1,march:2,april:3,may:4,june:5,july:6,august:7,september:8,october:9,november:10,december:11}),fG=["January","February","March","April","May","June","July","August","September","October","November","December"],fT=/\s*\d+/,fV=d3.map({am:0,pm:1});d3.time.format.utc=function(a){function c(a){try{fn=fo;var c=new fn;return c._=a,b(c)}finally{fn=Date}}var b=d3.time.format(a);return c.parse=function(a){try{fn=fo;var c=b.parse(a);return c&&c._}finally{fn=Date}},c.toString=b.toString,c};var fX=d3.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");d3.time.format.iso=Date.prototype.toISOString?fY:fX,fY.parse=function(a){return new Date(a)},fY.toString=fX.toString,d3.time.second=fZ(function(a){return new fn(Math.floor(a/1e3)*1e3)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*1e3)},function(a){return a.getSeconds()}),d3.time.seconds=d3.time.second.range,d3.time.seconds.utc=d3.time.second.utc.range,d3.time.minute=fZ(function(a){return new fn(Math.floor(a/6e4)*6e4)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*6e4)},function(a){return a.getMinutes()}),d3.time.minutes=d3.time.minute.range,d3.time.minutes.utc=d3.time.minute.utc.range,d3.time.hour=fZ(function(a){var b=a.getTimezoneOffset()/60;return new fn((Math.floor(a/36e5-b)+b)*36e5)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*36e5)},function(a){return a.getHours()}),d3.time.hours=d3.time.hour.range,d3.time.hours.utc=d3.time.hour.utc.range,d3.time.day=fZ(function(a){return new fn(a.getFullYear(),a.getMonth(),a.getDate())},function(a,b){a.setDate(a.getDate()+b)},function(a){return a.getDate()-1}),d3.time.days=d3.time.day.range,d3.time.days.utc=d3.time.day.utc.range,d3.time.dayOfYear=function(a){var b=d3.time.year(a);return Math.floor((a-b)/864e5-(a.getTimezoneOffset()-b.getTimezoneOffset())/1440)},d3_time_weekdays.forEach(function(a,b){a=a.toLowerCase(),b=7-b;var c=d3.time[a]=fZ(function(a){return(a=d3.time.day(a)).setDate(a.getDate()-(a.getDay()+b)%7),a},function(a,b){a.setDate(a.getDate()+Math.floor(b)*7)},function(a){var c=d3.time.year(a).getDay();return Math.floor((d3.time.dayOfYear(a)+(c+b)%7)/7)-(c!==b)});d3.time[a+"s"]=c.range,d3.time[a+"s"].utc=c.utc.range,d3.time[a+"OfYear"]=function(a){var c=d3.time.year(a).getDay();return Math.floor((d3.time.dayOfYear(a)+(c+b)%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=fZ(function(a){return new fn(a.getFullYear(),a.getMonth(),1)},function(a,b){a.setMonth(a.getMonth()+b)},function(a){return a.getMonth()}),d3.time.months=d3.time.month.range,d3.time.months.utc=d3.time.month.utc.range,d3.time.year=fZ(function(a){return new fn(a.getFullYear(),0,1)},function(a,b){a.setFullYear(a.getFullYear()+b)},function(a){return a.getFullYear()}),d3.time.years=d3.time.year.range,d3.time.years.utc=d3.time.year.utc.range;var gf=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],gg=[[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]],gh=[[d3.time.format("%Y"),function(a){return!0}],[d3.time.format("%B"),function(a){return a.getMonth()}],[d3.time.format("%b %d"),function(a){return a.getDate()!=1}],[d3.time.format("%a %d"),function(a){return a.getDay()&&a.getDate()!=1}],[d3.time.format("%I %p"),function(a){return a.getHours()}],[d3.time.format("%I:%M"),function(a){return a.getMinutes()}],[d3.time.format(":%S"),function(a){return a.getSeconds()}],[d3.time.format(".%L"),function(a){return a.getMilliseconds()}]],gi=d3.scale.linear(),gj=gc(gh);gg.year=function(a,b){return gi.domain(a.map(ge)).ticks(b).map(gd)},d3.time.scale=function(){return f_(d3.scale.linear(),gg,gj)};var gk=gg.map(function(a){return[a[0].utc,a[1]]}),gl=[[d3.time.format.utc("%Y"),function(a){return!0}],[d3.time.format.utc("%B"),function(a){return a.getUTCMonth()}],[d3.time.format.utc("%b %d"),function(a){return a.getUTCDate()!=1}],[d3.time.format.utc("%a %d"),function(a){return a.getUTCDay()&&a.getUTCDate()!=1}],[d3.time.format.utc("%I %p"),function(a){return a.getUTCHours()}],[d3.time.format.utc("%I:%M"),function(a){return a.getUTCMinutes()}],[d3.time.format.utc(":%S"),function(a){return a.getUTCSeconds()}],[d3.time.format.utc(".%L"),function(a){return a.getUTCMilliseconds()}]],gm=gc(gl);gk.year=function(a,b){return gi.domain(a.map(go)).ticks(b).map(gn)},d3.time.scale.utc=function(){return f_(d3.scale.linear(),gk,gm)}})();
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/examples/albers/albers.html b/static/vendor/d3-2.8.1/examples/albers/albers.html
new file mode 100755 (executable)
index 0000000..ef9891e
--- /dev/null
@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Albers Projection</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="../../lib/jquery/jquery.min.js"></script>
+    <script type="text/javascript" src="../../lib/jquery-ui/jquery-ui.min.js"></script>
+    <style type="text/css">
+
+@import url("../../lib/jquery-ui/jquery-ui.css");
+
+body, .ui-widget {
+  font: 14px Helvetica Neue;
+}
+
+svg {
+  width: 960px;
+  height: 500px;
+  border: solid 1px #ccc;
+  background: #eee;
+}
+
+#states path {
+  fill: #ccc;
+  stroke: #fff;
+}
+
+#states circle {
+  fill: #fcc;
+  stroke: #000;
+}
+
+div {
+  width: 960px;
+}
+
+    </style>
+  </head>
+  <body>
+    <h3>Albers Projection</h3>
+    <script type="text/javascript">
+
+// Our projection.
+var xy = d3.geo.albers(),
+    path = d3.geo.path().projection(xy);
+
+d3.select("body")
+  .append("svg")
+  .append("g")
+    .attr("id", "states");
+
+d3.json("../data/us-states.json", function(collection) {
+  d3.select("#states")
+    .selectAll("path")
+      .data(collection.features)
+    .enter().append("path")
+      .attr("d", path);
+  d3.select("#states")
+    .append("circle")
+      .attr("r", 10)
+      .attr("transform", "translate(" + xy(xy.origin()).join(",") + ")")
+});
+
+function refresh() {
+  d3.selectAll("#states path")
+      .attr("d", path);
+  d3.select("#states circle")
+      .attr("transform", "translate(" + xy(xy.origin()).join(",") + ")")
+  d3.select("#parallels span")
+      .text(xy.parallels());
+  d3.select("#lon span")
+      .text(xy.origin()[0]);
+  d3.select("#lat span")
+      .text(xy.origin()[1]);
+  d3.select("#scale span")
+      .text(xy.scale());
+  d3.select("#translate-x span")
+      .text(xy.translate()[0]);
+  d3.select("#translate-y span")
+      .text(xy.translate()[1]);
+}
+
+    </script><p>
+    <div id="lon">origin.longitude: <span>-98</span></div>
+    <div id="lat">origin.latitude: <span>38</span></div><p>
+    <div id="parallels">parallels: <span>29.5,45.5</span></div><p>
+    <div id="scale">scale: <span>1000</span></div><p>
+    <div id="translate-x">translate.x: <span>480</span></div>
+    <div id="translate-y">translate.y: <span>250</span></div>
+    <script type="text/javascript">
+
+$("#parallels").slider({
+  range: true,
+  min: -90,
+  max: 90,
+  step: 1e-1,
+  values: [29.5, 45.5],
+  slide: function(event, ui) {
+    xy.parallels(ui.values);
+    refresh();
+  }
+});
+
+$("#lon").slider({
+  min: -180,
+  max: 180,
+  step: 1e-1,
+  value: -98,
+  slide: function(event, ui) {
+    var origin = xy.origin();
+    origin[0] = ui.value;
+    xy.origin(origin);
+    refresh();
+  }
+});
+
+$("#lat").slider({
+  min: -90,
+  max: 90,
+  step: 1e-1,
+  value: 38,
+  slide: function(event, ui) {
+    var origin = xy.origin();
+    origin[1] = ui.value;
+    xy.origin(origin);
+    refresh();
+  }
+});
+
+$("#scale").slider({
+  min: 0,
+  max: 3000,
+  value: 1000,
+  slide: function(event, ui) {
+    xy.scale(ui.value);
+    refresh();
+  }
+});
+
+$("#translate-x").slider({
+  min: -2000,
+  max: 2000,
+  value: 480,
+  slide: function(event, ui) {
+    var translate = xy.translate();
+    translate[0] = ui.value;
+    xy.translate(translate);
+    refresh();
+  }
+});
+
+$("#translate-y").slider({
+  min: -2000,
+  max: 2000,
+  value: 250,
+  slide: function(event, ui) {
+    var translate = xy.translate();
+    translate[1] = ui.value;
+    xy.translate(translate);
+    refresh();
+  }
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/area/area-radial.html b/static/vendor/d3-2.8.1/examples/area/area-radial.html
new file mode 100755 (executable)
index 0000000..989da1b
--- /dev/null
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Area Chart (Radial)</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+.area {
+  fill: lightsteelblue;
+}
+
+.line {
+  fill: none;
+  stroke: steelblue;
+  stroke-width: 1.5px;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var r = 960 / 2,
+    data = d3.range(361).map(function(i) { return .8 + Math.sin(i / 20 * Math.PI) / 6; });
+
+var svg = d3.select("body").append("svg")
+    .data([data])
+    .attr("width", r * 2)
+    .attr("height", r * 2)
+  .append("g")
+    .attr("transform", "translate(" + r + "," + r + ")");
+
+svg.append("path")
+    .attr("class", "area")
+    .attr("d", d3.svg.area.radial()
+    .innerRadius(r / 2)
+    .outerRadius(function(d) { return r * d; })
+    .angle(function(d, i) { return i / 180 * Math.PI; }));
+
+svg.append("path")
+    .attr("class", "line")
+    .attr("d", d3.svg.line.radial()
+    .radius(function(d) { return r * d; })
+    .angle(function(d, i) { return i / 180 * Math.PI; }));
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/area/area.html b/static/vendor/d3-2.8.1/examples/area/area.html
new file mode 100755 (executable)
index 0000000..1c57ee4
--- /dev/null
@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Area Chart</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+.rule line {
+  stroke: #eee;
+  shape-rendering: crispEdges;
+}
+
+.rule line.axis {
+  stroke: #000;
+}
+
+.area {
+  fill: lightsteelblue;
+}
+
+.line, circle.area {
+  fill: none;
+  stroke: steelblue;
+  stroke-width: 1.5px;
+}
+
+circle.area {
+  fill: #fff;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var data = d3.range(20).map(function(i) {
+  return {x: i / 19, y: (Math.sin(i / 3) + 1) / 2};
+});
+
+var w = 450,
+    h = 275,
+    p = 20,
+    x = d3.scale.linear().domain([0, 1]).range([0, w]),
+    y = d3.scale.linear().domain([0, 1]).range([h, 0]);
+
+var vis = d3.select("body")
+  .append("svg")
+    .data([data])
+    .attr("width", w + p * 2)
+    .attr("height", h + p * 2)
+  .append("g")
+    .attr("transform", "translate(" + p + "," + p + ")");
+
+var rules = vis.selectAll("g.rule")
+    .data(x.ticks(10))
+  .enter().append("g")
+    .attr("class", "rule");
+
+rules.append("line")
+    .attr("x1", x)
+    .attr("x2", x)
+    .attr("y1", 0)
+    .attr("y2", h - 1);
+
+rules.append("line")
+    .attr("class", function(d) { return d ? null : "axis"; })
+    .attr("y1", y)
+    .attr("y2", y)
+    .attr("x1", 0)
+    .attr("x2", w + 1);
+
+rules.append("text")
+    .attr("x", x)
+    .attr("y", h + 3)
+    .attr("dy", ".71em")
+    .attr("text-anchor", "middle")
+    .text(x.tickFormat(10));
+
+rules.append("text")
+    .attr("y", y)
+    .attr("x", -3)
+    .attr("dy", ".35em")
+    .attr("text-anchor", "end")
+    .text(y.tickFormat(10));
+
+vis.append("path")
+    .attr("class", "area")
+    .attr("d", d3.svg.area()
+    .x(function(d) { return x(d.x); })
+    .y0(h - 1)
+    .y1(function(d) { return y(d.y); }));
+
+vis.append("path")
+    .attr("class", "line")
+    .attr("d", d3.svg.line()
+    .x(function(d) { return x(d.x); })
+    .y(function(d) { return y(d.y); }));
+
+vis.selectAll("circle.area")
+    .data(data)
+  .enter().append("circle")
+    .attr("class", "area")
+    .attr("cx", function(d) { return x(d.x); })
+    .attr("cy", function(d) { return y(d.y); })
+    .attr("r", 3.5);
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/axis/axis-alternating.html b/static/vendor/d3-2.8.1/examples/axis/axis-alternating.html
new file mode 100755 (executable)
index 0000000..1b054c9
--- /dev/null
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+line, path {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+.minor :not(.minor) {
+  display: none;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var m = [10, 10, 20, 10],
+    w = 960 - m[1] - m[3],
+    h = 80 - m[0] - m[2],
+    x = d3.scale.linear().domain([.05, .95]).range([0, w]),
+    y = d3.scale.linear().range([0, h]);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+svg.append("g")
+    .attr("class", "x minor")
+    .attr("transform", "translate(0," + h + ")")
+    .call(d3.svg.axis().scale(x).tickSubdivide(2).tickSize(-6));
+
+svg.append("g")
+    .attr("class", "x axis")
+    .attr("transform", "translate(0," + h + ")")
+    .call(d3.svg.axis().scale(x));
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/axis/axis-explicit-ticks.html b/static/vendor/d3-2.8.1/examples/axis/axis-explicit-ticks.html
new file mode 100755 (executable)
index 0000000..bb97a40
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+.axis path, .axis line {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var margin = {top: 10, right: 12, bottom: 20, left: 12},
+    width = 960 - margin.left - margin.right,
+    height = 80 - margin.top - margin.bottom;
+
+var x = d3.scale.sqrt()
+    .range([0, width]);
+
+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(d3.svg.axis()
+    .scale(x)
+    .orient("bottom")
+    .tickValues([.01, .02, .03, .05, .08, .13, .21, .34, .55, .89])
+    .tickFormat(d3.format(".02f")));
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/axis/axis-ggplot2.html b/static/vendor/d3-2.8.1/examples/axis/axis-ggplot2.html
new file mode 100755 (executable)
index 0000000..da46aba
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+rect {
+  fill: #ddd;
+}
+
+.grid line {
+  stroke: #fff;
+}
+
+.grid line.minor {
+  stroke-width: .5px;
+}
+
+.grid text {
+  display: none;
+}
+
+.axis line {
+  stroke: #000;
+}
+
+path {
+  display: none;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var m = [10, 10, 20, 10],
+    w = 960 - m[1] - m[3],
+    h = 80 - m[0] - m[2],
+    x = d3.scale.linear().domain([.05, .95]).range([0, w]),
+    y = d3.scale.linear().range([0, h]);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+svg.append("rect")
+    .attr("width", w)
+    .attr("height", h);
+
+svg.append("g")
+    .attr("class", "x grid")
+    .attr("transform", "translate(0," + h + ")")
+    .call(d3.svg.axis().scale(x).tickSubdivide(1).tickSize(-h));
+
+svg.append("g")
+    .attr("class", "x axis")
+    .attr("transform", "translate(0," + h + ")")
+    .call(d3.svg.axis().scale(x));
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/axis/axis-multiples.html b/static/vendor/d3-2.8.1/examples/axis/axis-multiples.html
new file mode 100755 (executable)
index 0000000..03a54e2
--- /dev/null
@@ -0,0 +1,115 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+  margin: 0;
+}
+
+path.line {
+  fill: none;
+  stroke: #666;
+  stroke-width: 1.5px;
+}
+
+path.area {
+  fill: #e7e7e7;
+}
+
+.axis path, .axis line {
+  fill: none;
+  stroke: #fff;
+  shape-rendering: crispEdges;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var m = [20, 20, 20, 20],
+    w = 960 - m[1] - m[3],
+    h = 140 - m[0] - m[2],
+    parse = d3.time.format("%b %Y").parse;
+
+// Scales. Note the inverted domain for the y-scale: bigger is up!
+var x = d3.time.scale().range([0, w]),
+    y = d3.scale.linear().range([h, 0]);
+
+// X-axis.
+var xAxis = d3.svg.axis()
+    .scale(x)
+    .tickSize(-h);
+
+// An area generator, for the light fill.
+var area = d3.svg.area()
+    .interpolate("monotone")
+    .x(function(d) { return x(d.date); })
+    .y0(h)
+    .y1(function(d) { return y(d.price); });
+
+// A line generator, for the dark stroke.
+var line = d3.svg.line()
+    .interpolate("monotone")
+    .x(function(d) { return x(d.date); })
+    .y(function(d) { return y(d.price); });
+
+d3.csv("../data/stocks.csv", function(data) {
+
+  // Nest values by symbol.
+  var symbols = d3.nest()
+      .key(function(d) { return d.symbol; })
+      .entries(data);
+
+  // Parse dates and numbers. We assume values are sorted by date.
+  // Also compute the maximum price per symbol, needed for the y-domain.
+  symbols.forEach(function(s) {
+    s.values.forEach(function(d) { d.date = parse(d.date); d.price = +d.price; });
+    s.maxPrice = d3.max(s.values, function(d) { return d.price; });
+  });
+
+  // Compute the minimum and maximum date across symbols.
+  x.domain([
+    d3.min(symbols, function(d) { return d.values[0].date; }),
+    d3.max(symbols, function(d) { return d.values[d.values.length - 1].date; })
+  ]);
+
+  // Add an SVG element for each symbol, with the desired dimensions and margin.
+  var svg = d3.select("body").selectAll("svg")
+      .data(symbols)
+    .enter().append("svg")
+      .attr("width", w + m[1] + m[3])
+      .attr("height", h + m[0] + m[2])
+    .append("g")
+      .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+  // Add the area path elements. Note: the y-domain is set per element.
+  svg.append("path")
+      .attr("class", "area")
+      .attr("d", function(d) { y.domain([0, d.maxPrice]); return area(d.values); });
+
+  // Add the x-axis.
+  svg.append("g")
+      .attr("class", "x axis")
+      .attr("transform", "translate(0," + h + ")")
+      .call(xAxis);
+
+  // Add the line path elements. Note: the y-domain is set per element.
+  svg.append("path")
+      .attr("class", "line")
+      .attr("d", function(d) { y.domain([0, d.maxPrice]); return line(d.values); });
+
+  // Add a small label for the symbol name.
+  svg.append("text")
+      .attr("x", w - 6)
+      .attr("y", h - 6)
+      .attr("text-anchor", "end")
+      .text(function(d) { return d.key; });
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/axis/axis-orientations.html b/static/vendor/d3-2.8.1/examples/axis/axis-orientations.html
new file mode 100755 (executable)
index 0000000..5abad27
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+.axis line, .axis path {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var m = [20, 40, 20, 40],
+    w = 960 - m[1] - m[3],
+    h = 500 - m[0] - m[2],
+    x = d3.time.scale().domain([new Date(2011, 07, 01), new Date(2011, 07, 08)]).range([0, w]),
+    y = d3.scale.sqrt().range([h, 0]);
+
+var xAxis = d3.svg.axis()
+    .scale(x)
+    .ticks(d3.time.days)
+    .tickFormat(d3.time.format("%m/%d"));
+
+var yAxis = d3.svg.axis()
+    .scale(y);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+svg.append("g")
+    .attr("class", "bottom axis")
+    .attr("transform", "translate(0," + h + ")")
+    .call(xAxis.orient("bottom"));
+
+svg.append("g")
+    .attr("class", "top axis")
+    .call(xAxis.orient("top"));
+
+svg.append("g")
+    .attr("class", "left axis")
+    .call(yAxis.orient("left"));
+
+svg.append("g")
+    .attr("class", "right axis")
+    .attr("transform", "translate(" + w + ",0)")
+    .call(yAxis.orient("right"));
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/axis/axis-transition.html b/static/vendor/d3-2.8.1/examples/axis/axis-transition.html
new file mode 100755 (executable)
index 0000000..bb06a08
--- /dev/null
@@ -0,0 +1,151 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+  margin: 0;
+}
+
+path.line {
+  fill: none;
+  stroke: #666;
+  stroke-width: 1.5px;
+}
+
+path.area {
+  fill: #e7e7e7;
+}
+
+.axis {
+  shape-rendering: crispEdges;
+}
+
+.x.axis line {
+  stroke: #fff;
+}
+
+.x.axis .minor {
+  stroke-opacity: .5;
+}
+
+.x.axis path {
+  display: none;
+}
+
+.y.axis line, .y.axis path {
+  fill: none;
+  stroke: #000;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var m = [20, 40, 20, 20],
+    w = 960 - m[1] - m[3],
+    h = 140 - m[0] - m[2],
+    parse = d3.time.format("%b %Y").parse;
+
+// Scales. Note the inverted domain for the y-scale: bigger is up!
+var x = d3.time.scale().range([0, w]),
+    y = d3.scale.linear().range([h, 0]);
+
+// Axes.
+var xAxis = d3.svg.axis().scale(x).tickSize(-h).tickSubdivide(true),
+    yAxis = d3.svg.axis().scale(y).ticks(4).orient("right");
+
+// An area generator, for the light fill.
+var area = d3.svg.area()
+    .interpolate("monotone")
+    .x(function(d) { return x(d.date); })
+    .y0(h)
+    .y1(function(d) { return y(d.price); });
+
+// A line generator, for the dark stroke.
+var line = d3.svg.line()
+    .interpolate("monotone")
+    .x(function(d) { return x(d.date); })
+    .y(function(d) { return y(d.price); });
+
+d3.csv("../data/stocks.csv", function(data) {
+
+  // Filter to one symbol; the S&P 500.
+  var values = data.filter(function(d) {
+    return d.symbol == "S&P 500";
+  });
+
+  // Parse dates and numbers. We assume values are sorted by date.
+  values.forEach(function(d) {
+    d.date = parse(d.date);
+    d.price = +d.price;
+  });
+
+  // Compute the minimum and maximum date, and the maximum price.
+  x.domain([values[0].date, values[values.length - 1].date]);
+  y.domain([0, d3.max(values, function(d) { return d.price; })]);
+
+  // Add an SVG element with the desired dimensions and margin.
+  var svg = d3.select("body").append("svg")
+      .attr("width", w + m[1] + m[3])
+      .attr("height", h + m[0] + m[2])
+    .append("g")
+      .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+  // Add the clip path.
+  svg.append("clipPath")
+      .attr("id", "clip")
+    .append("rect")
+      .attr("width", w)
+      .attr("height", h);
+
+  // Add the area path.
+  svg.append("path")
+      .attr("class", "area")
+      .attr("clip-path", "url(#clip)")
+      .attr("d", area(values));
+
+  // Add the x-axis.
+  svg.append("g")
+      .attr("class", "x axis")
+      .attr("transform", "translate(0," + h + ")")
+      .call(xAxis);
+
+  // Add the y-axis.
+  svg.append("g")
+      .attr("class", "y axis")
+      .attr("transform", "translate(" + w + ",0)")
+      .call(yAxis);
+
+  // Add the line path.
+  svg.append("path")
+      .attr("class", "line")
+      .attr("clip-path", "url(#clip)")
+      .attr("d", line(values));
+
+  // Add a small label for the symbol name.
+  svg.append("text")
+      .attr("x", w - 6)
+      .attr("y", h - 6)
+      .attr("text-anchor", "end")
+      .text(values[0].symbol);
+
+  // On click, update the x-axis.
+  svg.on("click", function() {
+    var n = values.length - 1,
+        i = Math.floor(Math.random() * n / 2),
+        j = i + Math.floor(Math.random() * n / 2) + 1;
+    x.domain([values[i].date, values[j].date]);
+    var t = svg.transition().duration(750);
+    t.select(".x.axis").call(xAxis);
+    t.select(".area").attr("d", area(values));
+    t.select(".line").attr("d", line(values));
+  });
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/azimuthal/azimuthal.css b/static/vendor/d3-2.8.1/examples/azimuthal/azimuthal.css
new file mode 100755 (executable)
index 0000000..f3da8df
--- /dev/null
@@ -0,0 +1,21 @@
+@import url("../../lib/jquery-ui/jquery-ui.css");
+
+body, .ui-widget {
+  font: 14px Helvetica Neue;
+}
+
+svg {
+  width: 960px;
+  height: 500px;
+  border: solid 1px #ccc;
+  background: #eee;
+}
+
+path {
+  fill: #ccc;
+  stroke: #fff;
+}
+
+div {
+  width: 960px;
+}
diff --git a/static/vendor/d3-2.8.1/examples/azimuthal/azimuthal.html b/static/vendor/d3-2.8.1/examples/azimuthal/azimuthal.html
new file mode 100755 (executable)
index 0000000..0e46b8d
--- /dev/null
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Azimuthal Projection</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="../../lib/jquery/jquery.min.js"></script>
+    <script type="text/javascript" src="../../lib/jquery-ui/jquery-ui.min.js"></script>
+    <link type="text/css" rel="stylesheet" href="azimuthal.css"/>
+  </head>
+  <body>
+    <h3>Azimuthal Projection</h3>
+    <script type="text/javascript" src="azimuthal.js"></script><p>
+    <select id="mode">
+      <option value="stereographic">stereographic</option>
+      <option value="orthographic">orthographic</option>
+      <option value="equidistant">equidistant</option>
+      <option value="gnomonic">gnomonic</option>
+      <option value="equalarea">equalarea</option>
+    </select>
+    <div id="lon">origin.longitude: <span>0</span></div>
+    <div id="lat">origin.latitude: <span>0</span></div><p>
+    <div id="scale">scale: <span>240</span></div><p>
+    <div id="translate-x">translate.x: <span>480</span></div>
+    <div id="translate-y">translate.y: <span>250</span></div>
+    <script type="text/javascript">
+
+$("#lon").slider({
+  min: -180,
+  max: 180,
+  step: 1e-1,
+  value: 0,
+  slide: function(event, ui) {
+    var origin = xy.origin();
+    origin[0] = ui.value;
+    xy.origin(origin);
+    circle.origin(origin);
+    refresh();
+  }
+});
+
+$("#lat").slider({
+  min: -90,
+  max: 90,
+  step: 1e-1,
+  value: 0,
+  slide: function(event, ui) {
+    var origin = xy.origin();
+    origin[1] = ui.value;
+    xy.origin(origin);
+    circle.origin(origin);
+    refresh();
+  }
+});
+
+$("#scale").slider({
+  min: 0,
+  max: 3000,
+  value: 240,
+  slide: function(event, ui) {
+    xy.scale(ui.value);
+    refresh();
+  }
+});
+
+$("#translate-x").slider({
+  min: -2000,
+  max: 2000,
+  value: 480,
+  slide: function(event, ui) {
+    var translate = xy.translate();
+    translate[0] = ui.value;
+    xy.translate(translate);
+    refresh();
+  }
+});
+
+$("#translate-y").slider({
+  min: -2000,
+  max: 2000,
+  value: 250,
+  slide: function(event, ui) {
+    var translate = xy.translate();
+    translate[1] = ui.value;
+    xy.translate(translate);
+    refresh();
+  }
+});
+
+$("#mode").change(function() {
+  var mode = $(this).val();
+  xy.mode(mode);
+  refresh(500);
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/azimuthal/azimuthal.js b/static/vendor/d3-2.8.1/examples/azimuthal/azimuthal.js
new file mode 100755 (executable)
index 0000000..36969f9
--- /dev/null
@@ -0,0 +1,29 @@
+var xy = d3.geo.azimuthal().scale(240).mode("stereographic"),
+    circle = d3.geo.greatCircle(),
+    path = d3.geo.path().projection(xy),
+    svg = d3.select("body").append("svg");
+
+d3.json("../data/world-countries.json", function(collection) {
+  svg.selectAll("path")
+      .data(collection.features)
+    .enter().append("path")
+      .attr("d", function(d) { return path(circle.clip(d)); })
+    .append("title")
+      .text(function(d) { return d.properties.name; });
+});
+
+function refresh(duration) {
+  var p = svg.selectAll("path");
+  if (duration) p = p.transition().duration(duration);
+  p.attr("d", function(d) { return path(circle.clip(d)); });
+  d3.select("#lon span")
+      .text(xy.origin()[0]);
+  d3.select("#lat span")
+      .text(xy.origin()[1]);
+  d3.select("#scale span")
+      .text(xy.scale());
+  d3.select("#translate-x span")
+      .text(xy.translate()[0]);
+  d3.select("#translate-y span")
+      .text(xy.translate()[1]);
+}
diff --git a/static/vendor/d3-2.8.1/examples/bar/bar-hierarchy.html b/static/vendor/d3-2.8.1/examples/bar/bar-hierarchy.html
new file mode 100755 (executable)
index 0000000..4eacf0b
--- /dev/null
@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Hierarchical Bar Chart</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+text {
+  font: 10px sans-serif;
+}
+
+rect.background {
+  fill: white;
+}
+
+.axis {
+  shape-rendering: crispEdges;
+}
+
+.axis path, .axis line {
+  fill: none;
+  stroke: #000;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var m = [20, 20, 20, 120], // top right bottom left
+    w = 960 - m[1] - m[3], // width
+    h = 500 - m[0] - m[2], // height
+    x = d3.scale.linear().range([0, w]),
+    y = 20, // bar height
+    z = d3.scale.ordinal().range(["steelblue", "#ccc"]), // bar color
+    duration = 750,
+    delay = 25;
+
+var hierarchy = d3.layout.partition()
+    .value(function(d) { return d.size; });
+
+var xAxis = d3.svg.axis()
+    .scale(x)
+    .orient("top");
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+svg.append("rect")
+    .attr("class", "background")
+    .attr("width", w)
+    .attr("height", h)
+    .on("click", up);
+
+svg.append("g")
+    .attr("class", "x axis");
+
+svg.append("g")
+    .attr("class", "y axis")
+  .append("line")
+    .attr("y1", "100%");
+
+d3.json("../data/flare.json", function(root) {
+  hierarchy.nodes(root);
+  x.domain([0, root.value]).nice();
+  down(root, 0);
+});
+
+function down(d, i) {
+  if (!d.children || this.__transition__) return;
+  var end = duration + d.children.length * delay;
+
+  // Mark any currently-displayed bars as exiting.
+  var exit = svg.selectAll(".enter").attr("class", "exit");
+
+  // Entering nodes immediately obscure the clicked-on bar, so hide it.
+  exit.selectAll("rect").filter(function(p) { return p === d; })
+      .style("fill-opacity", 1e-6);
+
+  // Enter the new bars for the clicked-on data.
+  // Per above, entering bars are immediately visible.
+  var enter = bar(d)
+      .attr("transform", stack(i))
+      .style("opacity", 1);
+
+  // Have the text fade-in, even though the bars are visible.
+  // Color the bars as parents; they will fade to children if appropriate.
+  enter.select("text").style("fill-opacity", 1e-6);
+  enter.select("rect").style("fill", z(true));
+
+  // Update the x-scale domain.
+  x.domain([0, d3.max(d.children, function(d) { return d.value; })]).nice();
+
+  // Update the x-axis.
+  svg.selectAll(".x.axis").transition().duration(duration).call(xAxis);
+
+  // Transition entering bars to their new position.
+  var enterTransition = enter.transition()
+      .duration(duration)
+      .delay(function(d, i) { return i * delay; })
+      .attr("transform", function(d, i) { return "translate(0," + y * i * 1.2 + ")"; });
+
+  // Transition entering text.
+  enterTransition.select("text").style("fill-opacity", 1);
+
+  // Transition entering rects to the new x-scale.
+  enterTransition.select("rect")
+      .attr("width", function(d) { return x(d.value); })
+      .style("fill", function(d) { return z(!!d.children); });
+
+  // Transition exiting bars to fade out.
+  var exitTransition = exit.transition()
+      .duration(duration)
+      .style("opacity", 1e-6)
+      .remove();
+
+  // Transition exiting bars to the new x-scale.
+  exitTransition.selectAll("rect").attr("width", function(d) { return x(d.value); });
+
+  // Rebind the current node to the background.
+  svg.select(".background").data([d]).transition().duration(end); d.index = i;
+}
+
+function up(d) {
+  if (!d.parent || this.__transition__) return;
+  var end = duration + d.children.length * delay;
+
+  // Mark any currently-displayed bars as exiting.
+  var exit = svg.selectAll(".enter").attr("class", "exit");
+
+  // Enter the new bars for the clicked-on data's parent.
+  var enter = bar(d.parent)
+      .attr("transform", function(d, i) { return "translate(0," + y * i * 1.2 + ")"; })
+      .style("opacity", 1e-6);
+
+  // Color the bars as appropriate.
+  // Exiting nodes will obscure the parent bar, so hide it.
+  enter.select("rect")
+      .style("fill", function(d) { return z(!!d.children); })
+    .filter(function(p) { return p === d; })
+      .style("fill-opacity", 1e-6);
+
+  // Update the x-scale domain.
+  x.domain([0, d3.max(d.parent.children, function(d) { return d.value; })]).nice();
+
+  // Update the x-axis.
+  svg.selectAll(".x.axis").transition().duration(duration).call(xAxis);
+
+  // Transition entering bars to fade in over the full duration.
+  var enterTransition = enter.transition()
+      .duration(end)
+      .style("opacity", 1);
+
+  // Transition entering rects to the new x-scale.
+  // When the entering parent rect is done, make it visible!
+  enterTransition.select("rect")
+      .attr("width", function(d) { return x(d.value); })
+      .each("end", function(p) { if (p === d) d3.select(this).style("fill-opacity", null); });
+
+  // Transition exiting bars to the parent's position.
+  var exitTransition = exit.selectAll("g").transition()
+      .duration(duration)
+      .delay(function(d, i) { return i * delay; })
+      .attr("transform", stack(d.index));
+
+  // Transition exiting text to fade out.
+  exitTransition.select("text")
+      .style("fill-opacity", 1e-6);
+
+  // Transition exiting rects to the new scale and fade to parent color.
+  exitTransition.select("rect")
+      .attr("width", function(d) { return x(d.value); })
+      .style("fill", z(true));
+
+  // Remove exiting nodes when the last child has finished transitioning.
+  exit.transition().duration(end).remove();
+
+  // Rebind the current parent to the background.
+  svg.select(".background").data([d.parent]).transition().duration(end);;
+}
+
+// Creates a set of bars for the given data node, at the specified index.
+function bar(d) {
+  var bar = svg.insert("g", ".y.axis")
+      .attr("class", "enter")
+      .attr("transform", "translate(0,5)")
+    .selectAll("g")
+      .data(d.children)
+    .enter().append("g")
+      .style("cursor", function(d) { return !d.children ? null : "pointer"; })
+      .on("click", down);
+
+  bar.append("text")
+      .attr("x", -6)
+      .attr("y", y / 2)
+      .attr("dy", ".35em")
+      .attr("text-anchor", "end")
+      .text(function(d) { return d.name; });
+
+  bar.append("rect")
+      .attr("width", function(d) { return x(d.value); })
+      .attr("height", y);
+
+  return bar;
+}
+
+// A stateful closure for stacking bars horizontally.
+function stack(i) {
+  var x0 = 0;
+  return function(d) {
+    var tx = "translate(" + x0 + "," + y * i * 1.2 + ")";
+    x0 += x(d.value);
+    return tx;
+  };
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/bar/bar.html b/static/vendor/d3-2.8.1/examples/bar/bar.html
new file mode 100755 (executable)
index 0000000..e61bea6
--- /dev/null
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Bar Chart</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+.bar rect {
+  fill: steelblue;
+}
+
+.bar text.value {
+  fill: white;
+}
+
+.axis {
+  shape-rendering: crispEdges;
+}
+
+.axis path {
+  fill: none;
+}
+
+.x.axis line {
+  stroke: #fff;
+  stroke-opacity: .8;
+}
+
+.y.axis path {
+  stroke: black;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var m = [30, 10, 10, 30],
+    w = 960 - m[1] - m[3],
+    h = 930 - m[0] - m[2];
+
+var format = d3.format(",.0f");
+
+var x = d3.scale.linear().range([0, w]),
+    y = d3.scale.ordinal().rangeRoundBands([0, h], .1);
+
+var xAxis = d3.svg.axis().scale(x).orient("top").tickSize(-h),
+    yAxis = d3.svg.axis().scale(y).orient("left").tickSize(0);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+d3.csv("sample-data.csv", function(data) {
+
+  // Parse numbers, and sort by value.
+  data.forEach(function(d) { d.value = +d.value; });
+  data.sort(function(a, b) { return b.value - a.value; });
+
+  // Set the scale domain.
+  x.domain([0, d3.max(data, function(d) { return d.value; })]);
+  y.domain(data.map(function(d) { return d.name; }));
+
+  var bar = svg.selectAll("g.bar")
+      .data(data)
+    .enter().append("g")
+      .attr("class", "bar")
+      .attr("transform", function(d) { return "translate(0," + y(d.name) + ")"; });
+
+  bar.append("rect")
+      .attr("width", function(d) { return x(d.value); })
+      .attr("height", y.rangeBand());
+
+  bar.append("text")
+      .attr("class", "value")
+      .attr("x", function(d) { return x(d.value); })
+      .attr("y", y.rangeBand() / 2)
+      .attr("dx", -3)
+      .attr("dy", ".35em")
+      .attr("text-anchor", "end")
+      .text(function(d) { return format(d.value); });
+
+  svg.append("g")
+      .attr("class", "x axis")
+      .call(xAxis);
+
+  svg.append("g")
+      .attr("class", "y axis")
+      .call(yAxis);
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/bar/sample-data.csv b/static/vendor/d3-2.8.1/examples/bar/sample-data.csv
new file mode 100755 (executable)
index 0000000..bff541f
--- /dev/null
@@ -0,0 +1,53 @@
+name,value
+AL,4708708
+AK,698473
+AZ,6595778
+AR,2889450
+CA,36961664
+CO,5024748
+CT,3518288
+DE,885122
+DC,599657
+FL,18537969
+GA,9829211
+HI,1295178
+ID,1545801
+IL,12910409
+IN,6423113
+IA,3007856
+KS,2818747
+KY,4314113
+LA,4492076
+ME,1318301
+MD,5699478
+MA,6593587
+MI,9969727
+MN,5266214
+MS,2951996
+MO,5987580
+MT,974989
+NE,1796619
+NV,2643085
+NH,1324575
+NJ,8707739
+NM,2009671
+NY,19541453
+NC,9380884
+ND,646844
+OH,11542645
+OK,3687050
+OR,3825657
+PA,12604767
+RI,1053209
+SC,4561242
+SD,812383
+TN,6296254
+TX,24782302
+UT,2784572
+VT,621760
+VA,7882590
+WA,6664195
+WV,1819777
+WI,5654774
+WY,544270
+PR,3967288
diff --git a/static/vendor/d3-2.8.1/examples/bonne/bonne.html b/static/vendor/d3-2.8.1/examples/bonne/bonne.html
new file mode 100755 (executable)
index 0000000..1b12fa2
--- /dev/null
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Bonne Projection</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="../../lib/jquery/jquery.min.js"></script>
+    <script type="text/javascript" src="../../lib/jquery-ui/jquery-ui.min.js"></script>
+    <style type="text/css">
+
+@import url("../../lib/jquery-ui/jquery-ui.css");
+
+body, .ui-widget {
+  font: 14px Helvetica Neue;
+}
+
+svg {
+  width: 960px;
+  height: 500px;
+  border: solid 1px #ccc;
+  background: #eee;
+}
+
+line {
+  stroke: brown;
+  stroke-dasharray: 4,2;
+}
+
+path {
+  fill: #ccc;
+  stroke: #fff;
+}
+
+div {
+  width: 960px;
+}
+
+    </style>
+  </head>
+  <body>
+    <h3>Bonne Projection</h3>
+    <script type="text/javascript">
+
+// Our projection.
+var xy = d3.geo.bonne(),
+    path = d3.geo.path().projection(xy);
+
+var countries = d3.select("body").append("svg")
+    .attr("id", "countries");
+
+d3.json("../data/world-countries.json", function(collection) {
+  countries.selectAll("path")
+      .data(collection.features)
+    .enter().append("path")
+      .attr("d", path)
+    .append("title")
+      .text(function(d) { return d.properties.name; });
+});
+
+function refresh() {
+  countries.selectAll("path")
+      .attr("d", path);
+  d3.select("#lon span")
+      .text(xy.origin()[0]);
+  d3.select("#lat span")
+      .text(xy.origin()[1]);
+  d3.select("#parallel span")
+      .text(xy.parallel());
+  d3.select("#scale span")
+      .text(xy.scale());
+  d3.select("#translate-x span")
+      .text(xy.translate()[0]);
+  d3.select("#translate-y span")
+      .text(xy.translate()[1]);
+}
+
+    </script><p>
+    <div id="lon">origin.longitude: <span>0</span></div>
+    <div id="lat">origin.latitude: <span>0</span></div><p>
+    <div id="parallel">parallel: <span>45</span></div><p>
+    <div id="scale">scale: <span>200</span></div><p>
+    <div id="translate-x">translate.x: <span>480</span></div>
+    <div id="translate-y">translate.y: <span>250</span></div>
+    <script type="text/javascript">
+
+$("#lon").slider({
+  min: -180,
+  max: 180,
+  step: 1e-1,
+  value: 0,
+  slide: function(event, ui) {
+    var origin = xy.origin();
+    origin[0] = ui.value;
+    xy.origin(origin);
+    refresh();
+  }
+});
+
+$("#lat").slider({
+  min: -90,
+  max: 90,
+  step: 1e-1,
+  value: 0,
+  slide: function(event, ui) {
+    var origin = xy.origin();
+    origin[1] = ui.value;
+    xy.origin(origin);
+    refresh();
+  }
+});
+
+$("#parallel").slider({
+  min: 0,
+  max: 90,
+  value: 45,
+  slide: function(event, ui) {
+    xy.parallel(ui.value);
+    refresh();
+  }
+});
+
+$("#scale").slider({
+  min: 0,
+  max: 800,
+  value: 200,
+  slide: function(event, ui) {
+    xy.scale(ui.value);
+    refresh();
+  }
+});
+
+$("#translate-x").slider({
+  min: -2000,
+  max: 2000,
+  value: 480,
+  slide: function(event, ui) {
+    var translate = xy.translate();
+    translate[0] = ui.value;
+    xy.translate(translate);
+    refresh();
+  }
+});
+
+$("#translate-y").slider({
+  min: -2000,
+  max: 2000,
+  value: 250,
+  slide: function(event, ui) {
+    var translate = xy.translate();
+    translate[1] = ui.value;
+    xy.translate(translate);
+    refresh();
+  }
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/box/box.css b/static/vendor/d3-2.8.1/examples/box/box.css
new file mode 100755 (executable)
index 0000000..0dd6f33
--- /dev/null
@@ -0,0 +1,4 @@
+.box { font: 10px sans-serif; }
+.box line, .box rect, .box circle { stroke: #000; stroke-width: 1.5px; fill: #fff; }
+.box .center { stroke-dasharray: 3 3; }
+.box .outlier { stroke: #ccc; fill: none; }
diff --git a/static/vendor/d3-2.8.1/examples/box/box.html b/static/vendor/d3-2.8.1/examples/box/box.html
new file mode 100755 (executable)
index 0000000..94e8a9b
--- /dev/null
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Box Plot Charts</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="../button.css"/>
+    <link type="text/css" rel="stylesheet" href="box.css"/>
+  </head>
+  <body>
+    <div id="chart">
+      <button class="first last" onclick="transition()">
+        Update
+      </button><p>
+    </div>
+    <script type="text/javascript" src="box.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/box/box.js b/static/vendor/d3-2.8.1/examples/box/box.js
new file mode 100755 (executable)
index 0000000..122397f
--- /dev/null
@@ -0,0 +1,366 @@
+var w = 120,
+    h = 500,
+    m = [10, 50, 20, 50], // top right bottom left
+    min = Infinity,
+    max = -Infinity;
+
+var chart = boxChart()
+    .whiskers(iqr(1.5))
+    .width(w - m[1] - m[3])
+    .height(h - m[0] - m[2]);
+
+d3.csv("../data/morley.csv", function(csv) {
+  var data = [];
+
+  csv.forEach(function(x) {
+    var e = ~~x.Expt - 1,
+        r = ~~x.Run - 1,
+        s = ~~x.Speed,
+        d = data[e];
+    if (!d) d = data[e] = [s];
+    else d.push(s);
+    if (s > max) max = s;
+    if (s < min) min = s;
+  });
+
+  chart.domain([min, max]);
+
+  var vis = d3.select("#chart").selectAll("svg")
+      .data(data)
+    .enter().append("svg")
+      .attr("class", "box")
+      .attr("width", w)
+      .attr("height", h)
+    .append("g")
+      .attr("transform", "translate(" + m[3] + "," + m[0] + ")")
+      .call(chart);
+
+  chart.duration(1000);
+  window.transition = function() {
+    vis.datum(randomize).call(chart);
+  };
+});
+
+function randomize(d) {
+  if (!d.randomizer) d.randomizer = randomizer(d);
+  return d.map(d.randomizer);
+}
+
+function randomizer(d) {
+  var k = d3.max(d) * .02;
+  return function(d) {
+    return Math.max(min, Math.min(max, d + k * (Math.random() - .5)));
+  };
+}
+
+// Returns a function to compute the interquartile range.
+function iqr(k) {
+  return function(d, i) {
+    var q1 = d.quartiles[0],
+        q3 = d.quartiles[2],
+        iqr = (q3 - q1) * k,
+        i = -1,
+        j = d.length;
+    while (d[++i] < q1 - iqr);
+    while (d[--j] > q3 + iqr);
+    return [i, j];
+  };
+}
+
+// Inspired by http://informationandvisualization.de/blog/box-plot
+function boxChart() {
+  var width = 1,
+      height = 1,
+      duration = 0,
+      domain = null,
+      value = Number,
+      whiskers = boxWhiskers,
+      quartiles = boxQuartiles,
+      tickFormat = null;
+
+  // For each small multiple…
+  function box(g) {
+    g.each(function(d, i) {
+      d = d.map(value).sort(d3.ascending);
+      var g = d3.select(this),
+          n = d.length,
+          min = d[0],
+          max = d[n - 1];
+
+      // Compute quartiles. Must return exactly 3 elements.
+      var quartileData = d.quartiles = quartiles(d);
+
+      // Compute whiskers. Must return exactly 2 elements, or null.
+      var whiskerIndices = whiskers && whiskers.call(this, d, i),
+          whiskerData = whiskerIndices && whiskerIndices.map(function(i) { return d[i]; });
+
+      // Compute outliers. If no whiskers are specified, all data are "outliers".
+      // We compute the outliers as indices, so that we can join across transitions!
+      var outlierIndices = whiskerIndices
+          ? d3.range(0, whiskerIndices[0]).concat(d3.range(whiskerIndices[1] + 1, n))
+          : d3.range(n);
+
+      // Compute the new x-scale.
+      var x1 = d3.scale.linear()
+          .domain(domain && domain.call(this, d, i) || [min, max])
+          .range([height, 0]);
+
+      // 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;
+
+      // Note: the box, median, and box tick elements are fixed in number,
+      // so we only have to handle enter and update. In contrast, the outliers
+      // and other elements are variable, so we need to exit them! Variable
+      // elements also fade in and out.
+
+      // Update center line: the vertical line spanning the whiskers.
+      var center = g.selectAll("line.center")
+          .data(whiskerData ? [whiskerData] : []);
+
+      center.enter().insert("svg:line", "rect")
+          .attr("class", "center")
+          .attr("x1", width / 2)
+          .attr("y1", function(d) { return x0(d[0]); })
+          .attr("x2", width / 2)
+          .attr("y2", function(d) { return x0(d[1]); })
+          .style("opacity", 1e-6)
+        .transition()
+          .duration(duration)
+          .style("opacity", 1)
+          .attr("y1", function(d) { return x1(d[0]); })
+          .attr("y2", function(d) { return x1(d[1]); });
+
+      center.transition()
+          .duration(duration)
+          .style("opacity", 1)
+          .attr("y1", function(d) { return x1(d[0]); })
+          .attr("y2", function(d) { return x1(d[1]); });
+
+      center.exit().transition()
+          .duration(duration)
+          .style("opacity", 1e-6)
+          .attr("y1", function(d) { return x1(d[0]); })
+          .attr("y2", function(d) { return x1(d[1]); })
+          .remove();
+
+      // Update innerquartile box.
+      var box = g.selectAll("rect.box")
+          .data([quartileData]);
+
+      box.enter().append("svg:rect")
+          .attr("class", "box")
+          .attr("x", 0)
+          .attr("y", function(d) { return x0(d[2]); })
+          .attr("width", width)
+          .attr("height", function(d) { return x0(d[0]) - x0(d[2]); })
+        .transition()
+          .duration(duration)
+          .attr("y", function(d) { return x1(d[2]); })
+          .attr("height", function(d) { return x1(d[0]) - x1(d[2]); });
+
+      box.transition()
+          .duration(duration)
+          .attr("y", function(d) { return x1(d[2]); })
+          .attr("height", function(d) { return x1(d[0]) - x1(d[2]); });
+
+      // Update median line.
+      var medianLine = g.selectAll("line.median")
+          .data([quartileData[1]]);
+
+      medianLine.enter().append("svg:line")
+          .attr("class", "median")
+          .attr("x1", 0)
+          .attr("y1", x0)
+          .attr("x2", width)
+          .attr("y2", x0)
+        .transition()
+          .duration(duration)
+          .attr("y1", x1)
+          .attr("y2", x1);
+
+      medianLine.transition()
+          .duration(duration)
+          .attr("y1", x1)
+          .attr("y2", x1);
+
+      // Update whiskers.
+      var whisker = g.selectAll("line.whisker")
+          .data(whiskerData || []);
+
+      whisker.enter().insert("svg:line", "circle, text")
+          .attr("class", "whisker")
+          .attr("x1", 0)
+          .attr("y1", x0)
+          .attr("x2", width)
+          .attr("y2", x0)
+          .style("opacity", 1e-6)
+        .transition()
+          .duration(duration)
+          .attr("y1", x1)
+          .attr("y2", x1)
+          .style("opacity", 1);
+
+      whisker.transition()
+          .duration(duration)
+          .attr("y1", x1)
+          .attr("y2", x1)
+          .style("opacity", 1);
+
+      whisker.exit().transition()
+          .duration(duration)
+          .attr("y1", x1)
+          .attr("y2", x1)
+          .style("opacity", 1e-6)
+          .remove();
+
+      // Update outliers.
+      var outlier = g.selectAll("circle.outlier")
+          .data(outlierIndices, Number);
+
+      outlier.enter().insert("svg:circle", "text")
+          .attr("class", "outlier")
+          .attr("r", 5)
+          .attr("cx", width / 2)
+          .attr("cy", function(i) { return x0(d[i]); })
+          .style("opacity", 1e-6)
+        .transition()
+          .duration(duration)
+          .attr("cy", function(i) { return x1(d[i]); })
+          .style("opacity", 1);
+
+      outlier.transition()
+          .duration(duration)
+          .attr("cy", function(i) { return x1(d[i]); })
+          .style("opacity", 1);
+
+      outlier.exit().transition()
+          .duration(duration)
+          .attr("cy", function(i) { return x1(d[i]); })
+          .style("opacity", 1e-6)
+          .remove();
+
+      // Compute the tick format.
+      var format = tickFormat || x1.tickFormat(8);
+
+      // Update box ticks.
+      var boxTick = g.selectAll("text.box")
+          .data(quartileData);
+
+      boxTick.enter().append("svg:text")
+          .attr("class", "box")
+          .attr("dy", ".3em")
+          .attr("dx", function(d, i) { return i & 1 ? 6 : -6 })
+          .attr("x", function(d, i) { return i & 1 ? width : 0 })
+          .attr("y", x0)
+          .attr("text-anchor", function(d, i) { return i & 1 ? "start" : "end"; })
+          .text(format)
+        .transition()
+          .duration(duration)
+          .attr("y", x1);
+
+      boxTick.transition()
+          .duration(duration)
+          .text(format)
+          .attr("y", x1);
+
+      // Update whisker ticks. These are handled separately from the box
+      // ticks because they may or may not exist, and we want don't want
+      // to join box ticks pre-transition with whisker ticks post-.
+      var whiskerTick = g.selectAll("text.whisker")
+          .data(whiskerData || []);
+
+      whiskerTick.enter().append("svg:text")
+          .attr("class", "whisker")
+          .attr("dy", ".3em")
+          .attr("dx", 6)
+          .attr("x", width)
+          .attr("y", x0)
+          .text(format)
+          .style("opacity", 1e-6)
+        .transition()
+          .duration(duration)
+          .attr("y", x1)
+          .style("opacity", 1);
+
+      whiskerTick.transition()
+          .duration(duration)
+          .text(format)
+          .attr("y", x1)
+          .style("opacity", 1);
+
+      whiskerTick.exit().transition()
+          .duration(duration)
+          .attr("y", x1)
+          .style("opacity", 1e-6)
+          .remove();
+    });
+    d3.timer.flush();
+  }
+
+  box.width = function(x) {
+    if (!arguments.length) return width;
+    width = x;
+    return box;
+  };
+
+  box.height = function(x) {
+    if (!arguments.length) return height;
+    height = x;
+    return box;
+  };
+
+  box.tickFormat = function(x) {
+    if (!arguments.length) return tickFormat;
+    tickFormat = x;
+    return box;
+  };
+
+  box.duration = function(x) {
+    if (!arguments.length) return duration;
+    duration = x;
+    return box;
+  };
+
+  box.domain = function(x) {
+    if (!arguments.length) return domain;
+    domain = x == null ? x : d3.functor(x);
+    return box;
+  };
+
+  box.value = function(x) {
+    if (!arguments.length) return value;
+    value = x;
+    return box;
+  };
+
+  box.whiskers = function(x) {
+    if (!arguments.length) return whiskers;
+    whiskers = x;
+    return box;
+  };
+
+  box.quartiles = function(x) {
+    if (!arguments.length) return quartiles;
+    quartiles = x;
+    return box;
+  };
+
+  return box;
+};
+
+function boxWhiskers(d) {
+  return [0, d.length - 1];
+}
+
+function boxQuartiles(d) {
+  return [
+    d3.quantile(d, .25),
+    d3.quantile(d, .5),
+    d3.quantile(d, .75)
+  ];
+}
diff --git a/static/vendor/d3-2.8.1/examples/brush/brush-ordinal.html b/static/vendor/d3-2.8.1/examples/brush/brush-ordinal.html
new file mode 100755 (executable)
index 0000000..ddac092
--- /dev/null
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+    <title>Brush</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  font: 10px sans-serif;
+}
+
+path {
+  -webkit-transition: fill-opacity 250ms linear;
+}
+
+.selecting path {
+  fill-opacity: .2;
+}
+
+.selecting path.selected {
+  stroke: #f00;
+  stroke-width: 2px;
+}
+
+.axis path, .axis line {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+.brush .extent {
+  stroke: #fff;
+  fill-opacity: .125;
+  shape-rendering: crispEdges;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var data = d3.svg.symbolTypes;
+
+var m = [10, 10, 20, 10],
+    w = 960 - m[1] - m[3],
+    h = 100 - m[0] - m[2];
+
+var x = d3.scale.ordinal().domain(data).rangePoints([0, w], 1);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+svg.append("g")
+    .attr("class", "x axis")
+    .attr("transform", "translate(0," + h + ")")
+    .call(d3.svg.axis().scale(x).orient("bottom"));
+
+var symbol = svg.append("g").selectAll("path")
+    .data(data)
+  .enter().append("path")
+    .attr("transform", function(d) { return "translate(" + x(d) + "," + (h / 2) + ")"; })
+    .attr("d", d3.svg.symbol().type(String).size(200));
+
+svg.append("g")
+    .attr("class", "brush")
+    .call(d3.svg.brush().x(x)
+    .on("brushstart", brushstart)
+    .on("brush", brushmove)
+    .on("brushend", brushend))
+  .selectAll("rect")
+    .attr("height", h);
+
+function brushstart() {
+  svg.classed("selecting", true);
+}
+
+function brushmove() {
+  var s = d3.event.target.extent();
+  symbol.classed("selected", function(d) { return s[0] <= (d = x(d)) && d <= s[1]; });
+}
+
+function brushend() {
+  svg.classed("selecting", !d3.event.target.empty());
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/brush/brush-x-resizer.html b/static/vendor/d3-2.8.1/examples/brush/brush-x-resizer.html
new file mode 100755 (executable)
index 0000000..492c7ca
--- /dev/null
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+    <title>Brush</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  font: 10px sans-serif;
+}
+
+circle {
+  -webkit-transition: fill-opacity 250ms linear;
+}
+
+.selecting circle {
+  fill-opacity: .2;
+}
+
+.selecting circle.selected {
+  stroke: #f00;
+}
+
+.resize path {
+  fill: #666;
+  fill-opacity: .8;
+  stroke: #000;
+  stroke-width: 1.5px;
+}
+
+.axis path, .axis line {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+.brush .extent {
+  fill-opacity: .125;
+  shape-rendering: crispEdges;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var data = d3.range(800).map(Math.random);
+
+var margin = {top: 4, right: 50, bottom: 20, left: 50},
+    width = 960 - margin.left - margin.right,
+    height = 120 - margin.top - margin.bottom;
+
+var x = d3.scale.linear().range([0, width]),
+    y = d3.random.normal(height / 2, height / 8);
+
+var brush = d3.svg.brush().x(x)
+    .on("brushstart", brushstart)
+    .on("brush", brushmove)
+    .on("brushend", brushend);
+
+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(d3.svg.axis().scale(x).orient("bottom"));
+
+var circle = svg.append("g").selectAll("circle")
+    .data(data)
+  .enter().append("circle")
+    .attr("transform", function(d) { return "translate(" + x(d) + "," + y() + ")"; })
+    .attr("r", 3.5);
+
+var brushg = svg.append("g")
+    .attr("class", "brush")
+    .call(brush);
+
+brushg.selectAll(".resize").append("path")
+    .attr("transform", "translate(0," +  height / 2 + ")")
+    .attr("d", d3.svg.arc()
+    .outerRadius(height / 2)
+    .startAngle(0)
+    .endAngle(function(d, i) { return i ? -Math.PI : Math.PI; }));
+
+brushg.selectAll("rect")
+    .attr("height", height);
+
+function brushstart() {
+  svg.classed("selecting", true);
+}
+
+function brushmove() {
+  var s = brush.extent();
+  circle.classed("selected", function(d) { return s[0] <= d && d <= s[1]; });
+}
+
+function brushend() {
+  svg.classed("selecting", !d3.event.target.empty());
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/brush/brush-x.html b/static/vendor/d3-2.8.1/examples/brush/brush-x.html
new file mode 100755 (executable)
index 0000000..0dcec2a
--- /dev/null
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+    <title>Brush</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  font: 10px sans-serif;
+}
+
+circle {
+  -webkit-transition: fill-opacity 250ms linear;
+}
+
+.selecting circle {
+  fill-opacity: .2;
+}
+
+.selecting circle.selected {
+  stroke: #f00;
+}
+
+.axis path, .axis line {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+.brush .extent {
+  stroke: #fff;
+  fill-opacity: .125;
+  shape-rendering: crispEdges;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var data = d3.range(800).map(Math.random);
+
+var m = [10, 10, 20, 10],
+    w = 960 - m[1] - m[3],
+    h = 100 - m[0] - m[2];
+
+var x = d3.scale.linear().range([0, w]),
+    y = d3.random.normal(h / 2, h / 8);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+svg.append("g")
+    .attr("class", "x axis")
+    .attr("transform", "translate(0," + h + ")")
+    .call(d3.svg.axis().scale(x).orient("bottom"));
+
+var circle = svg.append("g").selectAll("circle")
+    .data(data)
+  .enter().append("circle")
+    .attr("transform", function(d) { return "translate(" + x(d) + "," + y() + ")"; })
+    .attr("r", 3.5);
+
+svg.append("g")
+    .attr("class", "brush")
+    .call(d3.svg.brush().x(x)
+    .on("brushstart", brushstart)
+    .on("brush", brushmove)
+    .on("brushend", brushend))
+  .selectAll("rect")
+    .attr("height", h);
+
+function brushstart() {
+  svg.classed("selecting", true);
+}
+
+function brushmove() {
+  var s = d3.event.target.extent();
+  circle.classed("selected", function(d) { return s[0] <= d && d <= s[1]; });
+}
+
+function brushend() {
+  svg.classed("selecting", !d3.event.target.empty());
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/brush/brush-y.html b/static/vendor/d3-2.8.1/examples/brush/brush-y.html
new file mode 100755 (executable)
index 0000000..ba8de49
--- /dev/null
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+    <title>Brush</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  font: 10px sans-serif;
+}
+
+circle {
+  -webkit-transition: fill-opacity 250ms linear;
+}
+
+.selecting circle {
+  fill-opacity: .2;
+}
+
+.selecting circle.selected {
+  stroke: #f00;
+}
+
+.axis path, .axis line {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+.brush .extent {
+  stroke: #fff;
+  fill-opacity: .125;
+  shape-rendering: crispEdges;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var data = d3.range(800).map(Math.random);
+
+var m = [10, 10, 10, 40],
+    w = 120 - m[1] - m[3],
+    h = 960 - m[0] - m[2];
+
+var x = d3.random.normal(w / 2, w / 8),
+    y = d3.scale.linear().range([h, 0]);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+svg.append("g")
+    .attr("class", "y axis")
+    .call(d3.svg.axis().scale(y).orient("left"));
+
+var circle = svg.append("g").selectAll("circle")
+    .data(data)
+  .enter().append("circle")
+    .attr("transform", function(d) { return "translate(" + x() + "," + y(d) + ")"; })
+    .attr("r", 3.5);
+
+svg.append("g")
+    .attr("class", "brush")
+    .call(d3.svg.brush().y(y)
+    .on("brushstart", brushstart)
+    .on("brush", brushmove)
+    .on("brushend", brushend))
+  .selectAll("rect")
+    .attr("width", w);
+
+function brushstart() {
+  svg.classed("selecting", true);
+}
+
+function brushmove() {
+  var e = d3.event.target.extent();
+  circle.classed("selected", function(d) { return e[0] <= d && d <= e[1]; });
+}
+
+function brushend() {
+  svg.classed("selecting", !d3.event.target.empty());
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/brush/brush.html b/static/vendor/d3-2.8.1/examples/brush/brush.html
new file mode 100755 (executable)
index 0000000..e55c8b6
--- /dev/null
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+    <title>Brush</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  font: 10px sans-serif;
+}
+
+circle {
+  -webkit-transition: fill-opacity 250ms linear;
+}
+
+.selecting circle {
+  fill-opacity: .2;
+}
+
+.selecting circle.selected {
+  stroke: #f00;
+}
+
+.axis path, .axis line {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+.brush .extent {
+  stroke: #fff;
+  fill-opacity: .125;
+  shape-rendering: crispEdges;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var random = d3.random.normal(.5, .1),
+    data = d3.range(800).map(function() { return [random(), random()]; });
+
+var m = [10, 10, 20, 40],
+    w = 960 - m[1] - m[3],
+    h = 500 - m[0] - m[2];
+
+var x = d3.scale.linear().range([0, w]),
+    y = d3.scale.linear().range([h, 0]);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+svg.append("g")
+    .attr("class", "x axis")
+    .attr("transform", "translate(0," + h + ")")
+    .call(d3.svg.axis().scale(x).orient("bottom"));
+
+svg.append("g")
+    .attr("class", "y axis")
+    .call(d3.svg.axis().scale(y).orient("left"));
+
+var circle = svg.append("g").selectAll("circle")
+    .data(data)
+  .enter().append("circle")
+    .attr("transform", function(d) { return "translate(" + x(d[0]) + "," + y(d[1]) + ")"; })
+    .attr("r", 3.5);
+
+svg.append("g")
+    .attr("class", "brush")
+    .call(d3.svg.brush().x(x).y(y)
+    .on("brushstart", brushstart)
+    .on("brush", brushmove)
+    .on("brushend", brushend));
+
+function brushstart() {
+  svg.classed("selecting", true);
+}
+
+function brushmove() {
+  var e = d3.event.target.extent();
+  circle.classed("selected", function(d) {
+    return e[0][0] <= d[0] && d[0] <= e[1][0]
+        && e[0][1] <= d[1] && d[1] <= e[1][1];
+  });
+}
+
+function brushend() {
+  svg.classed("selecting", !d3.event.target.empty());
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/bubble/bubble.css b/static/vendor/d3-2.8.1/examples/bubble/bubble.css
new file mode 100755 (executable)
index 0000000..d667292
--- /dev/null
@@ -0,0 +1,8 @@
+circle {
+  stroke: #fff;
+  stroke-width: 1.5px;
+}
+
+text {
+  font: 10px sans-serif;
+}
diff --git a/static/vendor/d3-2.8.1/examples/bubble/bubble.html b/static/vendor/d3-2.8.1/examples/bubble/bubble.html
new file mode 100755 (executable)
index 0000000..c5fa394
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Bubble Chart</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="bubble.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="bubble.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/bubble/bubble.js b/static/vendor/d3-2.8.1/examples/bubble/bubble.js
new file mode 100755 (executable)
index 0000000..5dbff4c
--- /dev/null
@@ -0,0 +1,46 @@
+var r = 960,
+    format = d3.format(",d"),
+    fill = d3.scale.category20c();
+
+var bubble = d3.layout.pack()
+    .sort(null)
+    .size([r, r]);
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", r)
+    .attr("height", r)
+    .attr("class", "bubble");
+
+d3.json("../data/flare.json", function(json) {
+  var node = vis.selectAll("g.node")
+      .data(bubble.nodes(classes(json))
+      .filter(function(d) { return !d.children; }))
+    .enter().append("g")
+      .attr("class", "node")
+      .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
+
+  node.append("title")
+      .text(function(d) { return d.className + ": " + format(d.value); });
+
+  node.append("circle")
+      .attr("r", function(d) { return d.r; })
+      .style("fill", function(d) { return fill(d.packageName); });
+
+  node.append("text")
+      .attr("text-anchor", "middle")
+      .attr("dy", ".3em")
+      .text(function(d) { return d.className.substring(0, d.r / 3); });
+});
+
+// Returns a flattened hierarchy containing all leaf nodes under the root.
+function classes(root) {
+  var classes = [];
+
+  function recurse(name, node) {
+    if (node.children) node.children.forEach(function(child) { recurse(node.name, child); });
+    else classes.push({packageName: name, className: node.name, value: node.size});
+  }
+
+  recurse(null, root);
+  return {children: classes};
+}
diff --git a/static/vendor/d3-2.8.1/examples/bullet/bullet.css b/static/vendor/d3-2.8.1/examples/bullet/bullet.css
new file mode 100755 (executable)
index 0000000..50002b2
--- /dev/null
@@ -0,0 +1,10 @@
+.bullet { font: 10px sans-serif; }
+.bullet .marker { stroke: #000; stroke-width: 2px; }
+.bullet .tick line { stroke: #666; stroke-width: .5px; }
+.bullet .range.s0 { fill: #eee; }
+.bullet .range.s1 { fill: #ddd; }
+.bullet .range.s2 { fill: #ccc; }
+.bullet .measure.s0 { fill: lightsteelblue; }
+.bullet .measure.s1 { fill: steelblue; }
+.bullet .title { font-size: 14px; font-weight: bold; }
+.bullet .subtitle { fill: #999; }
diff --git a/static/vendor/d3-2.8.1/examples/bullet/bullet.html b/static/vendor/d3-2.8.1/examples/bullet/bullet.html
new file mode 100755 (executable)
index 0000000..f0ea064
--- /dev/null
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Bullet Charts</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="../button.css"/>
+    <link type="text/css" rel="stylesheet" href="bullet.css"/>
+  </head>
+  <body>
+    <div id="chart">
+      <button class="first last" onclick="transition()">
+        Update
+      </button><p>
+    </div>
+    <script type="text/javascript" src="bullet.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/bullet/bullet.js b/static/vendor/d3-2.8.1/examples/bullet/bullet.js
new file mode 100755 (executable)
index 0000000..54526ea
--- /dev/null
@@ -0,0 +1,291 @@
+var w = 960,
+    h = 50,
+    m = [5, 40, 20, 120]; // top right bottom left
+
+var chart = bulletChart()
+    .width(w - m[1] - m[3])
+    .height(h - m[0] - m[2]);
+
+d3.json("bullets.json", function(data) {
+
+  var vis = d3.select("#chart").selectAll("svg")
+      .data(data)
+    .enter().append("svg")
+      .attr("class", "bullet")
+      .attr("width", w)
+      .attr("height", h)
+    .append("g")
+      .attr("transform", "translate(" + m[3] + "," + m[0] + ")")
+      .call(chart);
+
+  var title = vis.append("g")
+      .attr("text-anchor", "end")
+      .attr("transform", "translate(-6," + (h - m[0] - m[2]) / 2 + ")");
+
+  title.append("text")
+      .attr("class", "title")
+      .text(function(d) { return d.title; });
+
+  title.append("text")
+      .attr("class", "subtitle")
+      .attr("dy", "1em")
+      .text(function(d) { return d.subtitle; });
+
+  chart.duration(1000);
+  window.transition = function() {
+    vis.datum(randomize).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));
+  };
+}
+
+// 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/
+function bulletChart() {
+  var orient = "left", // TODO top & bottom
+      reverse = false,
+      duration = 0,
+      ranges = bulletRanges,
+      markers = bulletMarkers,
+      measures = bulletMeasures,
+      width = 380,
+      height = 30,
+      tickFormat = null;
+
+  // For each small multiple…
+  function bullet(g) {
+    g.each(function(d, i) {
+      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),
+          g = d3.select(this);
+
+      // Compute the new x-scale.
+      var x1 = d3.scale.linear()
+          .domain([0, Math.max(rangez[0], markerz[0], measurez[0])])
+          .range(reverse ? [width, 0] : [0, width]);
+
+      // 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);
+
+      // Update the range rects.
+      var range = g.selectAll("rect.range")
+          .data(rangez);
+
+      range.enter().append("svg:rect")
+          .attr("class", function(d, i) { return "range s" + i; })
+          .attr("width", w0)
+          .attr("height", height)
+          .attr("x", reverse ? x0 : 0)
+        .transition()
+          .duration(duration)
+          .attr("width", w1)
+          .attr("x", reverse ? x1 : 0);
+
+      range.transition()
+          .duration(duration)
+          .attr("x", reverse ? x1 : 0)
+          .attr("width", w1)
+          .attr("height", height);
+
+      // Update the measure rects.
+      var measure = g.selectAll("rect.measure")
+          .data(measurez);
+
+      measure.enter().append("svg:rect")
+          .attr("class", function(d, i) { return "measure s" + i; })
+          .attr("width", w0)
+          .attr("height", height / 3)
+          .attr("x", reverse ? x0 : 0)
+          .attr("y", height / 3)
+        .transition()
+          .duration(duration)
+          .attr("width", w1)
+          .attr("x", reverse ? x1 : 0);
+
+      measure.transition()
+          .duration(duration)
+          .attr("width", w1)
+          .attr("height", height / 3)
+          .attr("x", reverse ? x1 : 0)
+          .attr("y", height / 3);
+
+      // Update the marker lines.
+      var marker = g.selectAll("line.marker")
+          .data(markerz);
+
+      marker.enter().append("svg:line")
+          .attr("class", "marker")
+          .attr("x1", x0)
+          .attr("x2", x0)
+          .attr("y1", height / 6)
+          .attr("y2", height * 5 / 6)
+        .transition()
+          .duration(duration)
+          .attr("x1", x1)
+          .attr("x2", x1);
+
+      marker.transition()
+          .duration(duration)
+          .attr("x1", x1)
+          .attr("x2", x1)
+          .attr("y1", height / 6)
+          .attr("y2", height * 5 / 6);
+
+      // Compute the tick format.
+      var format = tickFormat || x1.tickFormat(8);
+
+      // Update the tick groups.
+      var tick = g.selectAll("g.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("svg:g")
+          .attr("class", "tick")
+          .attr("transform", bulletTranslate(x0))
+          .style("opacity", 1e-6);
+
+      tickEnter.append("svg:line")
+          .attr("y1", height)
+          .attr("y2", height * 7 / 6);
+
+      tickEnter.append("svg:text")
+          .attr("text-anchor", "middle")
+          .attr("dy", "1em")
+          .attr("y", height * 7 / 6)
+          .text(format);
+
+      // Transition the entering ticks to the new scale, x1.
+      tickEnter.transition()
+          .duration(duration)
+          .attr("transform", bulletTranslate(x1))
+          .style("opacity", 1);
+
+      // Transition the updating ticks to the new scale, x1.
+      var tickUpdate = tick.transition()
+          .duration(duration)
+          .attr("transform", bulletTranslate(x1))
+          .style("opacity", 1);
+
+      tickUpdate.select("line")
+          .attr("y1", height)
+          .attr("y2", height * 7 / 6);
+
+      tickUpdate.select("text")
+          .attr("y", height * 7 / 6);
+
+      // Transition the exiting ticks to the new scale, x1.
+      tick.exit().transition()
+          .duration(duration)
+          .attr("transform", bulletTranslate(x1))
+          .style("opacity", 1e-6)
+          .remove();
+    });
+    d3.timer.flush();
+  }
+
+  // left, right, top, bottom
+  bullet.orient = function(x) {
+    if (!arguments.length) return orient;
+    orient = x;
+    reverse = orient == "right" || orient == "bottom";
+    return bullet;
+  };
+
+  // ranges (bad, satisfactory, good)
+  bullet.ranges = function(x) {
+    if (!arguments.length) return ranges;
+    ranges = x;
+    return bullet;
+  };
+
+  // markers (previous, goal)
+  bullet.markers = function(x) {
+    if (!arguments.length) return markers;
+    markers = x;
+    return bullet;
+  };
+
+  // measures (actual, forecast)
+  bullet.measures = function(x) {
+    if (!arguments.length) return measures;
+    measures = x;
+    return bullet;
+  };
+
+  bullet.width = function(x) {
+    if (!arguments.length) return width;
+    width = x;
+    return bullet;
+  };
+
+  bullet.height = function(x) {
+    if (!arguments.length) return height;
+    height = x;
+    return bullet;
+  };
+
+  bullet.tickFormat = function(x) {
+    if (!arguments.length) return tickFormat;
+    tickFormat = x;
+    return bullet;
+  };
+
+  bullet.duration = function(x) {
+    if (!arguments.length) return duration;
+    duration = x;
+    return bullet;
+  };
+
+  return bullet;
+};
+
+function bulletRanges(d) {
+  return d.ranges;
+}
+
+function bulletMarkers(d) {
+  return d.markers;
+}
+
+function bulletMeasures(d) {
+  return d.measures;
+}
+
+function bulletTranslate(x) {
+  return function(d) {
+    return "translate(" + x(d) + ",0)";
+  };
+}
+
+function bulletWidth(x) {
+  var x0 = x(0);
+  return function(d) {
+    return Math.abs(x(d) - x0);
+  };
+}
diff --git a/static/vendor/d3-2.8.1/examples/bullet/bullets.json b/static/vendor/d3-2.8.1/examples/bullet/bullets.json
new file mode 100755 (executable)
index 0000000..97cb1c1
--- /dev/null
@@ -0,0 +1,7 @@
+[
+  {"title":"Revenue","subtitle":"US$, in thousands","ranges":[150,225,300],"measures":[220,270],"markers":[250]},
+  {"title":"Profit","subtitle":"%","ranges":[20,25,30],"measures":[21,23],"markers":[26]},
+  {"title":"Order Size","subtitle":"US$, average","ranges":[350,500,600],"measures":[100,320],"markers":[550]},
+  {"title":"New Customers","subtitle":"count","ranges":[1400,2000,2500],"measures":[1000,1650],"markers":[2100]},
+  {"title":"Satisfaction","subtitle":"out of 5","ranges":[3.5,4.25,5],"measures":[3.2,4.7],"markers":[4.4]}
+]
diff --git a/static/vendor/d3-2.8.1/examples/bundle/bundle-radial.css b/static/vendor/d3-2.8.1/examples/bundle/bundle-radial.css
new file mode 100755 (executable)
index 0000000..a14751c
--- /dev/null
@@ -0,0 +1,9 @@
+.node {
+  font: 10px sans-serif;
+}
+
+.link {
+  stroke: steelblue;
+  stroke-opacity: .4;
+  fill: none;
+}
diff --git a/static/vendor/d3-2.8.1/examples/bundle/bundle-radial.html b/static/vendor/d3-2.8.1/examples/bundle/bundle-radial.html
new file mode 100755 (executable)
index 0000000..a2927c1
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Hierarchical Edge Bundling (Radial Tree)</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="packages.js"></script>
+    <link type="text/css" rel="stylesheet" href="bundle-radial.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="bundle-radial.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/bundle/bundle-radial.js b/static/vendor/d3-2.8.1/examples/bundle/bundle-radial.js
new file mode 100755 (executable)
index 0000000..9021f12
--- /dev/null
@@ -0,0 +1,50 @@
+var r = 960 / 2,
+    splines = [];
+
+var cluster = d3.layout.cluster()
+    .size([360, r - 120])
+    .sort(null)
+    .value(function(d) { return d.size; });
+
+var bundle = d3.layout.bundle();
+
+var line = d3.svg.line.radial()
+    .interpolate("bundle")
+    .tension(.85)
+    .radius(function(d) { return d.y; })
+    .angle(function(d) { return d.x / 180 * Math.PI; });
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", r * 2)
+    .attr("height", r * 2)
+  .append("g")
+    .attr("transform", "translate(" + r + "," + r + ")");
+
+d3.json("../data/flare-imports.json", function(classes) {
+  var nodes = cluster.nodes(packages.root(classes)),
+      links = packages.imports(nodes);
+
+  vis.selectAll("path.link")
+      .data(splines = bundle(links))
+    .enter().append("path")
+      .attr("class", "link")
+      .attr("d", line);
+
+  vis.selectAll("g.node")
+      .data(nodes.filter(function(n) { return !n.children; }))
+    .enter().append("g")
+      .attr("class", "node")
+      .attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")"; })
+    .append("text")
+      .attr("dx", function(d) { return d.x < 180 ? 8 : -8; })
+      .attr("dy", ".31em")
+      .attr("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; })
+      .attr("transform", function(d) { return d.x < 180 ? null : "rotate(180)"; })
+      .text(function(d) { return d.key; });
+});
+
+d3.select(window).on("mousemove", function() {
+  vis.selectAll("path.link")
+      .data(splines)
+      .attr("d", line.tension(Math.min(1, d3.event.clientX / 960)));
+});
diff --git a/static/vendor/d3-2.8.1/examples/bundle/bundle-treemap.css b/static/vendor/d3-2.8.1/examples/bundle/bundle-treemap.css
new file mode 100755 (executable)
index 0000000..62d9b41
--- /dev/null
@@ -0,0 +1,14 @@
+.cell {
+  border: solid 1px white;
+  font: 10px sans-serif;
+  line-height: 12px;
+  overflow: hidden;
+  position: absolute;
+  text-indent: 2px;
+}
+
+.link {
+  stroke: #000;
+  stroke-opacity: .5;
+  fill: none;
+}
diff --git a/static/vendor/d3-2.8.1/examples/bundle/bundle-treemap.html b/static/vendor/d3-2.8.1/examples/bundle/bundle-treemap.html
new file mode 100755 (executable)
index 0000000..929fe03
--- /dev/null
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Hierarchical Edge Bundling (Treemap)</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="../../lib/colorbrewer/colorbrewer.js"></script>
+    <script type="text/javascript" src="packages.js"></script>
+    <link type="text/css" rel="stylesheet" href="bundle-treemap.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="bundle-treemap.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/bundle/bundle-treemap.js b/static/vendor/d3-2.8.1/examples/bundle/bundle-treemap.js
new file mode 100755 (executable)
index 0000000..969f293
--- /dev/null
@@ -0,0 +1,53 @@
+var w = 960,
+    h = 500,
+    fill = d3.scale.ordinal().range(colorbrewer.Greys[9].slice(1, 4)),
+    stroke = d3.scale.linear().domain([0, 1e4]).range(["brown", "steelblue"]);
+
+var treemap = d3.layout.treemap()
+    .size([w, h])
+    .value(function(d) { return d.size; });
+
+var bundle = d3.layout.bundle();
+
+var div = d3.select("#chart").append("div")
+    .style("position", "relative")
+    .style("width", w + "px")
+    .style("height", h + "px");
+
+var line = d3.svg.line()
+    .interpolate("bundle")
+    .tension(.85)
+    .x(function(d) { return d.x + d.dx / 2; })
+    .y(function(d) { return d.y + d.dy / 2; });
+
+d3.json("../data/flare-imports.json", function(classes) {
+  var nodes = treemap.nodes(packages.root(classes)),
+      links = packages.imports(nodes);
+
+  div.selectAll("div")
+      .data(nodes)
+    .enter().append("div")
+      .attr("class", "cell")
+      .style("background", function(d) { return d.children ? fill(d.key) : null; })
+      .call(cell)
+      .text(function(d) { return d.children ? null : d.key; });
+
+  div.append("svg")
+      .attr("width", w)
+      .attr("height", h)
+      .style("position", "absolute")
+    .selectAll("path.link")
+      .data(bundle(links))
+    .enter().append("path")
+      .style("stroke", function(d) { return stroke(d[0].value); })
+      .attr("class", "link")
+      .attr("d", line);
+});
+
+function cell() {
+  this
+      .style("left", function(d) { return d.x + "px"; })
+      .style("top", function(d) { return d.y + "px"; })
+      .style("width", function(d) { return d.dx - 1 + "px"; })
+      .style("height", function(d) { return d.dy - 1 + "px"; });
+}
diff --git a/static/vendor/d3-2.8.1/examples/bundle/packages.js b/static/vendor/d3-2.8.1/examples/bundle/packages.js
new file mode 100755 (executable)
index 0000000..4bf5c8a
--- /dev/null
@@ -0,0 +1,49 @@
+(function() {
+  packages = {
+
+    // Lazily construct the package hierarchy from class names.
+    root: function(classes) {
+      var map = {};
+
+      function find(name, data) {
+        var node = map[name], i;
+        if (!node) {
+          node = map[name] = data || {name: name, children: []};
+          if (name.length) {
+            node.parent = find(name.substring(0, i = name.lastIndexOf(".")));
+            node.parent.children.push(node);
+            node.key = name.substring(i + 1);
+          }
+        }
+        return node;
+      }
+
+      classes.forEach(function(d) {
+        find(d.name, d);
+      });
+
+      return map[""];
+    },
+
+    // Return a list of imports for the given array of nodes.
+    imports: function(nodes) {
+      var map = {},
+          imports = [];
+
+      // Compute a map from name to node.
+      nodes.forEach(function(d) {
+        map[d.name] = d;
+      });
+
+      // For each import, construct a link from the source to target node.
+      nodes.forEach(function(d) {
+        if (d.imports) d.imports.forEach(function(i) {
+          imports.push({source: map[d.name], target: map[i]});
+        });
+      });
+
+      return imports;
+    }
+
+  };
+})();
diff --git a/static/vendor/d3-2.8.1/examples/button.css b/static/vendor/d3-2.8.1/examples/button.css
new file mode 100755 (executable)
index 0000000..b7c7ada
--- /dev/null
@@ -0,0 +1,35 @@
+button {
+  font: 14px Helvetica Neue;
+  background-color: #222;
+  background-image: -moz-linear-gradient(top, rgba(255,255,255,.25), rgba(255,255,255,.11));
+  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, rgba(255,255,255,.25)),color-stop(1, rgba(255,255,255,.11)));
+  background-image: -webkit-linear-gradient(rgba(255,255,255,.25), rgba(255,255,255,.11));
+  color: #fff;
+  text-rendering: optimizeLegibility;
+  text-shadow: 0 -1px 1px #222;
+  padding: 6px 10px 6px 10px;
+  border: 0;
+  border-radius: 0;
+  border-bottom: 1px solid #222;
+  margin: 0;
+  -moz-box-shadow: 0 1px 3px #999;
+  -webkit-box-shadow: 0 1px 3px #999;
+}
+
+button.first {
+  border-top-left-radius: 5px;
+  border-bottom-left-radius: 5px;
+}
+
+button.last {
+  border-top-right-radius: 5px;
+  border-bottom-right-radius: 5px;
+}
+
+button.active {
+  background-color: rgb(65,102,133);
+}
+
+button:hover {
+  background-color: steelblue;
+}
diff --git a/static/vendor/d3-2.8.1/examples/calendar/calendar.css b/static/vendor/d3-2.8.1/examples/calendar/calendar.css
new file mode 100755 (executable)
index 0000000..13557dc
--- /dev/null
@@ -0,0 +1,15 @@
+#chart {
+  font: 10px sans-serif;
+  shape-rendering: crispEdges;
+}
+
+.day {
+  fill: #fff;
+  stroke: #ccc;
+}
+
+.month {
+  fill: none;
+  stroke: #000;
+  stroke-width: 2px;
+}
diff --git a/static/vendor/d3-2.8.1/examples/calendar/dji-area.html b/static/vendor/d3-2.8.1/examples/calendar/dji-area.html
new file mode 100755 (executable)
index 0000000..336f22c
--- /dev/null
@@ -0,0 +1,118 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>DJI</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+rect {
+  fill: #ddd;
+}
+
+path.area {
+  fill: #000;
+  fill-opacity: .75;
+}
+
+.axis, .grid {
+  shape-rendering: crispEdges;
+}
+
+.grid line {
+  stroke: #fff;
+}
+
+.grid line.minor {
+  stroke-opacity: .5;
+}
+
+.grid text {
+  display: none;
+}
+
+.axis line {
+  stroke: #000;
+}
+
+.grid path, .axis path {
+  display: none;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var m = [10, 50, 20, 10],
+    w = 960 - m[1] - m[3],
+    h = 500 - m[0] - m[2],
+    parse = d3.time.format("%Y-%m-%d").parse;
+
+// Scales. Note the inverted domain for the y-scale: bigger is up!
+var x = d3.time.scale().range([20, w - 20]),
+    y = d3.scale.linear().range([h - 20, 20]);
+
+// Axes.
+var xAxis = d3.svg.axis().scale(x).orient("bottom"),
+    yAxis = d3.svg.axis().scale(y).orient("right");
+
+// An area generator.
+var area = d3.svg.area()
+    .x(function(d) { return x(d.Date); })
+    .y0(y(0))
+    .y1(function(d) { return y(d.Close); });
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+svg.append("rect")
+    .attr("width", w)
+    .attr("height", h);
+
+d3.csv("dji.csv", function(data) {
+
+  // Parse dates and numbers.
+  data.reverse().forEach(function(d) {
+    d.Date = parse(d.Date);
+    d.Close = +d.Close;
+  });
+
+  // Compute the minimum and maximum date, and the maximum price.
+  x.domain([data[0].Date, data[data.length - 1].Date]);
+  y.domain([0, d3.max(data, function(d) { return d.Close; })]);
+
+  svg.append("g")
+      .attr("class", "x grid")
+      .attr("transform", "translate(0," + h + ")")
+      .call(xAxis.tickSubdivide(1).tickSize(-h));
+
+  svg.append("g")
+      .attr("class", "y grid")
+      .attr("transform", "translate(" + w + ",0)")
+      .call(yAxis.tickSubdivide(1).tickSize(-w));
+
+  svg.append("g")
+      .attr("class", "x axis")
+      .attr("transform", "translate(0," + h + ")")
+      .call(xAxis.tickSubdivide(0).tickSize(6));
+
+  svg.append("g")
+      .attr("class", "y axis")
+      .attr("transform", "translate(" + w + ",0)")
+      .call(yAxis.tickSubdivide(0).tickSize(6));
+
+  svg.append("path")
+      .attr("class", "area")
+      .attr("d", area(data));
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/calendar/dji.csv b/static/vendor/d3-2.8.1/examples/calendar/dji.csv
new file mode 100755 (executable)
index 0000000..b441a78
--- /dev/null
@@ -0,0 +1,5233 @@
+Date,Open,High,Low,Close,Volume,Adj Close
+2010-10-01,10789.72,10907.41,10759.14,10829.68,4298910000,10829.68
+2010-09-30,10835.96,10960.99,10732.27,10788.05,4284160000,10788.05
+2010-09-29,10857.98,10901.96,10759.75,10835.28,3990280000,10835.28
+2010-09-28,10809.85,10905.44,10714.03,10858.14,4025840000,10858.14
+2010-09-27,10860.03,10902.52,10776.44,10812.04,3587860000,10812.04
+2010-09-24,10664.39,10897.83,10664.39,10860.26,4123950000,10860.26
+2010-09-23,10738.48,10779.65,10610.12,10662.42,3847850000,10662.42
+2010-09-22,10761.11,10829.75,10682.40,10739.31,3911070000,10739.31
+2010-09-21,10753.39,10844.89,10674.83,10761.03,4175660000,10761.03
+2010-09-20,10608.08,10783.51,10594.38,10753.62,3364080000,10753.62
+2010-09-17,10595.44,10689.29,10529.67,10607.85,4086140000,10607.85
+2010-09-16,10571.75,10624.58,10499.43,10594.83,3364080000,10594.83
+2010-09-15,10526.42,10609.21,10453.15,10572.73,3369840000,10572.73
+2010-09-14,10544.81,10622.69,10460.34,10526.49,4521050000,10526.49
+2010-09-13,10458.60,10605.73,10458.45,10544.13,4521050000,10544.13
+2010-09-10,10415.01,10502.80,10376.34,10462.77,3061160000,10462.77
+2010-09-09,10388.22,10515.86,10359.23,10415.24,3387770000,10415.24
+2010-09-08,10338.57,10460.50,10318.93,10387.01,3224640000,10387.01
+2010-09-07,10446.80,10448.99,10304.44,10340.69,3107380000,10340.69
+2010-09-03,10321.92,10484.71,10321.92,10447.93,3534500000,10447.93
+2010-09-02,10270.08,10350.98,10211.80,10320.10,3704210000,10320.10
+2010-09-01,10016.01,10305.87,10016.01,10269.47,4396880000,10269.47
+2010-08-31,10006.42,10101.53,9915.73,10014.72,4038770000,10014.72
+2010-08-30,10145.58,10170.10,10005.56,10009.73,2917990000,10009.73
+2010-08-27,9982.40,10176.30,9925.11,10150.65,4102460000,10150.65
+2010-08-26,10059.83,10138.12,9959.17,9985.81,3646710000,9985.81
+2010-08-25,10040.15,10104.18,9925.34,10060.06,4360190000,10060.06
+2010-08-24,10170.86,10170.86,9975.86,10040.45,4436330000,10040.45
+2010-08-23,10215.51,10328.88,10146.18,10174.41,3210950000,10174.41
+2010-08-20,10270.98,10276.13,10131.88,10213.62,3761570000,10213.62
+2010-08-19,10411.15,10412.29,10202.34,10271.21,4290540000,10271.21
+2010-08-18,10398.59,10486.38,10308.83,10415.54,3724260000,10415.54
+2010-08-17,10297.55,10501.67,10297.55,10405.85,3968210000,10405.85
+2010-08-16,10303.07,10354.39,10193.26,10302.01,3142450000,10302.01
+2010-08-13,10320.33,10381.86,10254.18,10303.15,3328890000,10303.15
+2010-08-12,10361.58,10388.37,10222.85,10319.95,4521050000,10319.95
+2010-08-11,10631.82,10631.82,10339.63,10378.83,4511860000,10378.83
+2010-08-10,10696.63,10717.21,10522.63,10644.25,3979360000,10644.25
+2010-08-09,10654.62,10755.66,10618.26,10698.75,3191630000,10698.75
+2010-08-06,10668.55,10688.08,10491.37,10653.56,3857890000,10653.56
+2010-08-05,10679.67,10712.37,10571.60,10674.98,3685560000,10674.98
+2010-08-04,10630.20,10738.48,10583.10,10680.43,4057850000,10680.43
+2010-08-03,10673.92,10714.19,10564.18,10636.38,4071820000,10636.38
+2010-08-02,10468.82,10715.21,10468.82,10674.38,4144180000,10674.38
+2010-07-30,10465.19,10528.84,10327.37,10465.94,4006450000,10465.94
+2010-07-29,10498.94,10609.74,10383.45,10467.16,4612420000,10467.16
+2010-07-28,10537.01,10586.36,10445.17,10497.88,4002390000,10497.88
+2010-07-27,10525.28,10632.52,10460.65,10537.69,4725690000,10537.69
+2010-07-26,10424.17,10545.94,10391.02,10525.43,4009650000,10525.43
+2010-07-23,10321.16,10465.19,10237.84,10424.62,4524570000,10424.62
+2010-07-22,10121.81,10391.78,10121.81,10322.30,4826900000,10322.30
+2010-07-21,10226.02,10310.04,10053.85,10120.53,4747180000,10120.53
+2010-07-20,10151.48,10248.20,9973.17,10229.96,4713280000,10229.96
+2010-07-19,10098.12,10213.09,10051.28,10154.43,4089500000,10154.43
+2010-07-16,10356.20,10356.20,10071.63,10097.90,5297350000,10097.90
+2010-07-15,10367.10,10409.49,10216.04,10359.31,4552470000,10359.31
+2010-07-14,10370.96,10423.03,10265.16,10366.72,4521050000,10366.72
+2010-07-13,10217.55,10436.20,10217.55,10363.02,4640460000,10363.02
+2010-07-12,10199.24,10260.62,10121.13,10216.27,3426990000,10216.27
+2010-07-09,10137.93,10226.48,10079.05,10198.03,3506570000,10198.03
+2010-07-08,10019.26,10175.02,9987.02,10138.99,4548460000,10138.99
+2010-07-07,9736.85,10029.93,9716.38,10018.28,4931220000,10018.28
+2010-07-06,9689.21,9880.76,9648.26,9743.62,4691240000,9743.62
+2010-07-02,9732.23,9798.19,9603.80,9686.48,3968500000,9686.48
+2010-07-01,9773.27,9834.71,9596.04,9732.53,6435770000,9732.53
+2010-06-30,9868.34,9951.47,9741.07,9774.02,5067080000,9774.02
+2010-06-29,10135.72,10135.72,9786.45,9870.30,6136700000,9870.30
+2010-06-28,10143.05,10246.82,10070.12,10138.52,3896410000,10138.52
+2010-06-25,10153.48,10261.10,10039.97,10143.81,5128840000,10143.81
+2010-06-24,10297.08,10314.31,10112.60,10152.80,4814830000,10152.80
+2010-06-23,10293.30,10393.89,10195.81,10298.44,4526150000,10298.44
+2010-06-22,10441.95,10524.78,10276.14,10293.52,4514380000,10293.52
+2010-06-21,10452.46,10627.19,10387.54,10442.41,4514360000,10442.41
+2010-06-18,10435.00,10513.75,10379.60,10450.64,4555360000,10450.64
+2010-06-17,10409.98,10479.74,10293.49,10434.17,4557760000,10434.17
+2010-06-16,10404.24,10456.39,10289.37,10409.46,5002600000,10409.46
+2010-06-15,10192.40,10416.11,10192.40,10404.77,4644490000,10404.77
+2010-06-14,10211.83,10354.97,10175.02,10190.89,4425830000,10190.89
+2010-06-11,10166.78,10235.10,10038.31,10211.07,4059280000,10211.07
+2010-06-10,9901.67,10206.61,9901.67,10172.53,5144780000,10172.53
+2010-06-09,9941.57,10093.33,9859.04,9899.25,5983200000,9899.25
+2010-06-08,9812.94,9971.57,9726.33,9939.98,6192750000,9939.98
+2010-06-07,9931.75,10025.84,9798.73,9816.49,5467560000,9816.49
+2010-06-04,10249.61,10249.61,9881.11,9931.97,6180580000,9931.97
+2010-06-03,10250.67,10348.84,10158.92,10255.28,4995970000,10255.28
+2010-06-02,10025.61,10256.57,10007.09,10249.54,5026360000,10249.54
+2010-06-01,10133.94,10249.27,9976.56,10024.02,5271480000,10024.02
+2010-05-28,10258.00,10293.45,10078.66,10136.63,4871210000,10136.63
+2010-05-27,9971.73,10279.01,9971.73,10258.99,5698460000,10258.99
+2010-05-26,10045.11,10211.60,9937.79,9974.45,4521050000,9974.45
+2010-05-25,10061.43,10061.43,9756.11,10043.75,7329580000,10043.75
+2010-05-24,10193.46,10235.63,10028.78,10066.57,5224040000,10066.57
+2010-05-21,10063.93,10225.88,9860.93,10193.39,5452130000,10193.39
+2010-05-20,10440.21,10440.21,10042.46,10068.01,8328569600,10068.01
+2010-05-19,10505.70,10558.56,10306.22,10444.37,6765800000,10444.37
+2010-05-18,10625.45,10760.05,10463.15,10510.95,6170840000,10510.95
+2010-05-17,10616.98,10707.30,10424.72,10625.83,5922920000,10625.83
+2010-05-14,10780.68,10780.68,10509.89,10620.16,6126400000,10620.16
+2010-05-13,10896.61,10952.84,10752.72,10782.95,4870640000,10782.95
+2010-05-12,10742.15,10941.88,10725.81,10896.91,5225460000,10896.91
+2010-05-11,10780.00,10888.30,10653.71,10748.26,5842550000,10748.26
+2010-05-10,10386.18,10880.14,10386.18,10785.14,6893700000,10785.14
+2010-05-07,10519.42,10622.27,10221.50,10380.43,9472910400,10380.43
+2010-05-06,10862.22,10925.86,9787.17,10520.32,10617809600,10520.32
+2010-05-05,10918.40,10984.05,10754.30,10868.12,6795940000,10868.12
+2010-05-04,11149.48,11149.48,10843.71,10926.77,6594720000,10926.77
+2010-05-03,11009.60,11203.37,11004.15,11151.83,4938050000,11151.83
+2010-04-30,11168.23,11235.94,10984.35,11008.61,6048260000,11008.61
+2010-04-29,11045.64,11232.54,11045.64,11167.32,6059410000,11167.32
+2010-04-28,10988.87,11115.63,10938.48,11045.27,6342310000,11045.27
+2010-04-27,11203.67,11260.88,10962.81,10991.99,7454540000,10991.99
+2010-04-26,11205.11,11308.95,11150.01,11205.03,5647760000,11205.03
+2010-04-23,11132.18,11247.20,11058.87,11204.28,5326060000,11204.28
+2010-04-22,11119.78,11175.33,10975.66,11134.29,6035780000,11134.29
+2010-04-21,11116.91,11217.35,11018.59,11124.92,5724310000,11124.92
+2010-04-20,11093.11,11190.22,11045.80,11117.06,5316590000,11117.06
+2010-04-19,11018.36,11116.76,10940.60,11092.05,6597740000,11092.05
+2010-04-16,11143.66,11186.82,10947.55,11018.66,8108470400,11018.66
+2010-04-15,11122.96,11189.61,11051.31,11144.57,5995330000,11144.57
+2010-04-14,11020.70,11147.14,11004.61,11123.11,5760040000,11123.11
+2010-04-13,11006.72,11072.70,10925.86,11019.42,5403580000,11019.42
+2010-04-12,10996.75,11066.96,10957.22,11005.97,4607090000,11005.97
+2010-04-09,10926.92,11032.12,10894.19,10997.35,4511570000,10997.35
+2010-04-08,10896.99,10969.92,10810.15,10927.07,4726970000,10927.07
+2010-04-07,10961.95,11000.22,10835.77,10897.52,5101430000,10897.52
+2010-04-06,10972.49,11017.76,10893.89,10969.99,4086180000,10969.99
+2010-04-05,10927.45,11026.75,10880.36,10973.55,3881620000,10973.55
+2010-04-01,10857.31,10983.14,10851.57,10927.07,4006870000,10927.07
+2010-03-31,10907.34,10933.19,10802.22,10856.63,4484340000,10856.63
+2010-03-30,10895.02,10968.56,10837.21,10907.42,4085000000,10907.42
+2010-03-29,10849.23,10954.43,10827.91,10895.86,4375580000,10895.86
+2010-03-26,10841.29,10934.85,10801.84,10850.36,4708420000,10850.36
+2010-03-25,10837.51,10985.26,10818.77,10841.21,5668900000,10841.21
+2010-03-24,10887.62,10925.48,10788.77,10836.15,4705750000,10836.15
+2010-03-23,10787.18,10906.06,10752.41,10888.83,4411640000,10888.83
+2010-03-22,10741.00,10836.68,10672.23,10785.89,4261680000,10785.89
+2010-03-19,10780.00,10869.55,10665.35,10741.98,5212410000,10741.98
+2010-03-18,10733.44,10821.49,10686.89,10779.17,4234510000,10779.17
+2010-03-17,10686.36,10787.86,10658.10,10733.67,4963200000,10733.67
+2010-03-16,10642.53,10717.42,10594.16,10685.98,4369770000,10685.98
+2010-03-15,10623.41,10680.32,10540.65,10642.15,4164110000,10642.15
+2010-03-12,10611.77,10690.90,10561.66,10624.69,4928160000,10624.69
+2010-03-11,10560.98,10626.73,10489.87,10611.84,4669060000,10611.84
+2010-03-10,10560.13,10639.05,10502.64,10567.33,5469120000,10567.33
+2010-03-09,10552.24,10637.46,10493.49,10564.38,5185570000,10564.38
+2010-03-08,10563.78,10632.48,10500.90,10552.52,3774680000,10552.52
+2010-03-05,10445.13,10587.13,10445.13,10566.20,4133000000,10566.20
+2010-03-04,10396.53,10484.05,10363.88,10444.14,3945010000,10444.14
+2010-03-03,10406.28,10496.22,10359.58,10396.76,3951320000,10396.76
+2010-03-02,10404.16,10493.80,10359.80,10405.98,4134680000,10405.98
+2010-03-01,10326.10,10444.60,10320.05,10403.79,3847640000,10403.79
+2010-02-26,10321.41,10391.24,10250.45,10325.26,3945190000,10325.26
+2010-02-25,10366.60,10366.60,10155.75,10321.03,4521130000,10321.03
+2010-02-24,10284.00,10416.94,10271.61,10374.16,4168360000,10374.16
+2010-02-23,10383.16,10430.16,10239.34,10282.41,4521050000,10282.41
+2010-02-22,10402.43,10468.55,10333.05,10383.38,3814440000,10383.38
+2010-02-19,10387.77,10459.18,10316.50,10402.35,3944280000,10402.35
+2010-02-18,10309.39,10416.79,10255.58,10392.90,3878620000,10392.90
+2010-02-17,10261.48,10366.83,10223.16,10309.24,4259230000,10309.24
+2010-02-16,10100.81,10292.62,10100.81,10268.81,4080770000,10268.81
+2010-02-12,10137.23,10140.18,9962.13,10099.14,4160680000,10099.14
+2010-02-11,10037.85,10184.85,9963.19,10144.19,4400870000,10144.19
+2010-02-10,10055.46,10120.15,9946.26,10038.38,4251450000,10038.38
+2010-02-09,9910.28,10154.24,9910.28,10058.64,5114260000,10058.64
+2010-02-08,10005.43,10059.24,9882.85,9908.39,4089820000,9908.39
+2010-02-05,10003.69,10078.89,9822.84,10012.23,6438900000,10012.23
+2010-02-04,10273.12,10273.12,9984.35,10002.18,5859690000,10002.18
+2010-02-03,10291.73,10356.86,10192.03,10270.55,4285450000,10270.55
+2010-02-02,10186.13,10333.35,10138.75,10296.85,4749540000,10296.85
+2010-02-01,10068.99,10227.24,10068.99,10185.53,4077610000,10185.53
+2010-01-29,10122.04,10272.29,10014.35,10067.33,5412850000,10067.33
+2010-01-28,10236.92,10310.68,10023.80,10120.46,5452400000,10120.46
+2010-01-27,10194.29,10294.13,10060.98,10236.16,5319120000,10236.16
+2010-01-26,10195.35,10323.00,10102.17,10194.29,4731910000,10194.29
+2010-01-25,10175.10,10316.65,10135.95,10196.86,4481390000,10196.86
+2010-01-22,10389.58,10450.04,10133.15,10172.98,6208650000,10172.98
+2010-01-21,10603.91,10651.14,10334.18,10389.88,6874289600,10389.88
+2010-01-20,10719.69,10719.69,10492.36,10603.15,4810560000,10603.15
+2010-01-19,10608.37,10763.45,10555.47,10725.43,4724830000,10725.43
+2010-01-15,10706.99,10736.54,10529.09,10609.65,4758730000,10609.65
+2010-01-14,10680.16,10767.15,10619.02,10710.55,3915200000,10710.55
+2010-01-13,10628.09,10747.12,10569.07,10680.77,4170360000,10680.77
+2010-01-12,10662.86,10701.48,10523.35,10627.26,4716160000,10627.26
+2010-01-11,10620.31,10739.87,10538.91,10663.99,4255780000,10663.99
+2010-01-08,10606.40,10653.11,10509.74,10618.19,4389590000,10618.19
+2010-01-07,10571.11,10655.60,10471.73,10606.86,5270680000,10606.86
+2010-01-06,10564.72,10655.22,10488.28,10573.68,4972660000,10573.68
+2010-01-05,10584.56,10647.14,10468.86,10572.02,2491020000,10572.02
+2010-01-04,10430.69,10641.62,10430.69,10583.96,3991400000,10583.96
+2009-12-31,10548.51,10578.74,10420.56,10428.05,2076990000,10428.05
+2009-12-30,10544.36,10583.28,10470.75,10548.51,2277300000,10548.51
+2009-12-29,10547.83,10605.65,10518.59,10545.41,2491020000,10545.41
+2009-12-28,10517.91,10585.02,10477.25,10547.08,2716400000,10547.08
+2009-12-24,10467.12,10541.26,10450.95,10520.10,1267710000,10520.10
+2009-12-23,10464.32,10520.93,10409.00,10466.44,3166870000,10466.44
+2009-12-22,10414.67,10511.56,10399.33,10464.93,3641130000,10464.93
+2009-12-21,10330.10,10489.41,10330.10,10414.14,3977340000,10414.14
+2009-12-18,10309.39,10412.55,10237.75,10328.89,6325890000,10328.89
+2009-12-17,10439.99,10439.99,10279.39,10308.26,7615070400,10308.26
+2009-12-16,10449.81,10552.75,10401.90,10441.12,4829820000,10441.12
+2009-12-15,10499.31,10542.09,10380.96,10452.00,5045100000,10452.00
+2009-12-14,10471.28,10566.88,10431.60,10501.05,4548490000,10501.05
+2009-12-11,10403.41,10516.47,10385.42,10471.50,3791090000,10471.50
+2009-12-10,10336.00,10479.06,10332.14,10405.83,3996490000,10405.83
+2009-12-09,10282.85,10377.11,10207.29,10337.05,4115410000,10337.05
+2009-12-08,10385.42,10385.42,10216.44,10285.97,4748030000,10285.97
+2009-12-07,10386.86,10478.23,10321.11,10390.11,4103360000,10390.11
+2009-12-04,10368.57,10549.04,10285.44,10388.90,5781140000,10388.90
+2009-12-03,10455.63,10533.55,10338.49,10366.15,4810030000,10366.15
+2009-12-02,10470.44,10537.63,10386.03,10452.68,3941340000,10452.68
+2009-12-01,10343.82,10537.03,10343.82,10471.58,4249310000,10471.58
+2009-11-30,10309.77,10394.34,10238.05,10344.84,3895520000,10344.84
+2009-11-27,10452.23,10452.23,10179.33,10309.92,2362910000,10309.92
+2009-11-25,10432.96,10513.60,10385.65,10464.40,3036350000,10464.40
+2009-11-24,10451.25,10488.66,10335.62,10433.71,3700820000,10433.71
+2009-11-23,10320.13,10524.40,10320.13,10450.95,3827920000,10450.95
+2009-11-20,10327.91,10377.41,10237.60,10318.16,3751230000,10318.16
+2009-11-19,10425.33,10425.33,10226.41,10332.44,4178030000,10332.44
+2009-11-18,10426.27,10471.28,10330.33,10426.31,4293340000,10426.31
+2009-11-17,10404.77,10465.76,10318.69,10437.42,3824070000,10437.42
+2009-11-16,10267.53,10465.83,10267.53,10406.96,4565850000,10406.96
+2009-11-13,10197.85,10332.29,10162.93,10270.47,3792610000,10270.47
+2009-11-12,10289.82,10341.21,10157.64,10197.47,4160250000,10197.47
+2009-11-11,10247.42,10357.38,10217.19,10291.26,4286700000,10291.26
+2009-11-10,10223.01,10300.33,10148.12,10246.97,4394770000,10246.97
+2009-11-09,10020.62,10248.93,10020.62,10226.94,4460030000,10226.94
+2009-11-06,10001.35,10077.08,9898.49,10023.42,4277130000,10023.42
+2009-11-05,9807.80,10043.75,9807.80,10005.96,4848350000,10005.96
+2009-11-04,9767.30,9962.35,9745.76,9802.14,5635510000,9802.14
+2009-11-03,9787.47,9844.84,9649.78,9771.91,5487500000,9771.91
+2009-11-02,9712.13,9883.68,9647.06,9789.44,6202640000,9789.44
+2009-10-30,9961.52,9980.19,9664.89,9712.73,6512420000,9712.73
+2009-10-29,9762.91,9996.67,9762.91,9962.58,5595040000,9962.58
+2009-10-28,9881.11,9940.89,9723.31,9762.69,6600350000,9762.69
+2009-10-27,9868.34,9994.55,9802.36,9882.17,5337380000,9882.17
+2009-10-26,9972.33,10107.99,9817.55,9867.96,6363380000,9867.96
+2009-10-23,10099.90,10138.59,9908.70,9972.18,4767460000,9972.18
+2009-10-22,9946.18,10133.08,9879.07,10081.31,5192410000,10081.31
+2009-10-21,10038.84,10157.94,9909.83,9949.36,5616290000,9949.36
+2009-10-20,10092.42,10157.26,9952.98,10041.48,5396930000,10041.48
+2009-10-19,9996.67,10146.61,9967.49,10092.19,4619240000,10092.19
+2009-10-16,10061.36,10072.62,9884.51,9995.91,4894740000,9995.91
+2009-10-15,10014.88,10087.43,9916.93,10062.94,5369780000,10062.94
+2009-10-14,9873.55,10064.98,9873.55,10015.86,5406420000,10015.86
+2009-10-13,9883.98,9935.53,9780.90,9871.06,4320480000,9871.06
+2009-10-12,9865.24,9978.07,9814.45,9885.80,3710430000,9885.80
+2009-10-09,9786.04,9890.41,9731.32,9864.94,3763780000,9864.94
+2009-10-08,9728.22,9872.50,9709.78,9786.87,4988400000,9786.87
+2009-10-07,9725.69,9782.56,9634.96,9725.58,4238220000,9725.58
+2009-10-06,9601.26,9793.37,9601.26,9731.25,5029840000,9731.25
+2009-10-05,9488.73,9640.33,9449.81,9599.75,4313310000,9599.75
+2009-10-02,9507.62,9571.71,9378.77,9487.67,5583240000,9487.67
+2009-10-01,9711.60,9714.70,9482.98,9509.28,5791450000,9509.28
+2009-09-30,9741.83,9817.17,9583.04,9712.28,5998860000,9712.28
+2009-09-29,9789.74,9861.99,9705.10,9742.20,4949900000,9742.20
+2009-09-28,9663.23,9861.39,9658.09,9789.36,3726950000,9789.36
+2009-09-25,9706.68,9781.73,9605.19,9665.19,4507090000,9665.19
+2009-09-24,9749.99,9836.82,9637.53,9707.44,5505610000,9707.44
+2009-09-23,9830.63,9937.72,9724.90,9748.55,5531930000,9748.55
+2009-09-22,9779.61,9890.71,9742.96,9829.87,5246600000,9829.87
+2009-09-21,9818.61,9846.12,9688.40,9778.86,4615280000,9778.86
+2009-09-18,9784.75,9898.57,9751.27,9820.20,5607970000,9820.20
+2009-09-17,9789.82,9896.38,9706.23,9783.92,6668110000,9783.92
+2009-09-16,9683.71,9837.05,9648.95,9791.71,6793529600,9791.71
+2009-09-15,9626.42,9745.91,9553.80,9683.41,6185620000,9683.41
+2009-09-14,9598.08,9662.10,9492.96,9626.80,4979610000,9626.80
+2009-09-11,9625.44,9698.67,9532.11,9605.41,4922600000,9605.41
+2009-09-10,9546.54,9666.55,9479.20,9627.48,5191380000,9627.48
+2009-09-09,9496.59,9604.43,9435.45,9547.22,5202550000,9547.22
+2009-09-08,9440.13,9564.45,9402.80,9497.34,5235160000,9497.34
+2009-09-04,9345.36,9465.37,9302.28,9441.27,4097370000,9441.27
+2009-09-03,9282.03,9350.27,9252.93,9344.61,4624280000,9344.61
+2009-09-02,9306.21,9378.77,9223.08,9280.67,5842730000,9280.67
+2009-09-01,9492.32,9573.67,9275.15,9310.60,6862360000,9310.60
+2009-08-31,9542.91,9552.97,9389.27,9496.28,5004560000,9496.28
+2009-08-28,9582.74,9666.71,9476.63,9544.20,5785780000,9544.20
+2009-08-27,9541.63,9629.98,9440.43,9580.63,5785880000,9580.63
+2009-08-26,9538.61,9613.65,9446.71,9543.52,5080060000,9543.52
+2009-08-25,9509.21,9646.53,9485.70,9539.29,5768740000,9539.29
+2009-08-24,9506.18,9625.89,9442.17,9509.28,6302450000,9509.28
+2009-08-21,9347.86,9549.19,9347.86,9505.96,5885550000,9505.96
+2009-08-20,9278.55,9385.72,9237.52,9350.05,4893160000,9350.05
+2009-08-19,9208.68,9333.34,9099.14,9279.16,4257000000,9279.16
+2009-08-18,9134.36,9262.08,9124.08,9217.94,4198970000,9217.94
+2009-08-17,9313.85,9313.85,9078.28,9135.34,4854970000,9135.34
+2009-08-14,9398.04,9425.17,9214.47,9321.40,4940750000,9321.40
+2009-08-13,9362.29,9448.97,9269.26,9398.19,5250660000,9398.19
+2009-08-12,9236.06,9442.47,9199.80,9361.61,5498170000,9361.61
+2009-08-11,9334.33,9351.86,9180.23,9241.45,5773160000,9241.45
+2009-08-10,9368.41,9420.56,9249.99,9337.95,5406080000,9337.95
+2009-08-07,9258.45,9466.89,9258.45,9370.07,6827089600,9370.07
+2009-08-06,9277.19,9378.01,9168.44,9256.26,6753380000,9256.26
+2009-08-05,9315.36,9374.38,9173.20,9280.97,7242120000,9280.97
+2009-08-04,9285.05,9370.30,9207.21,9320.19,5713700000,9320.19
+2009-08-03,9173.65,9342.11,9162.09,9286.56,5603440000,9286.56
+2009-07-31,9154.61,9264.65,9081.30,9171.61,5139070000,9171.61
+2009-07-30,9072.84,9298.13,9072.84,9154.46,6035180000,9154.46
+2009-07-29,9092.34,9141.23,8967.26,9070.72,5178770000,9070.72
+2009-07-28,9106.92,9154.76,8980.03,9096.72,5490350000,9096.72
+2009-07-27,9093.09,9154.23,8996.58,9108.51,4631290000,9108.51
+2009-07-24,9066.11,9144.48,8955.77,9093.24,4458300000,9093.24
+2009-07-23,8882.31,9143.05,8837.95,9069.29,5761650000,9069.29
+2009-07-22,8912.39,8993.48,8802.13,8881.26,4634100000,8881.26
+2009-07-21,8848.15,8991.07,8780.82,8915.94,5309300000,8915.94
+2009-07-20,8746.05,8884.43,8717.26,8848.15,4853150000,8848.15
+2009-07-17,8711.89,8797.97,8638.81,8743.94,5141380000,8743.94
+2009-07-16,8612.66,8750.28,8543.97,8711.82,4898640000,8711.82
+2009-07-15,8363.95,8643.04,8363.95,8616.21,5238830000,8616.21
+2009-07-14,8331.37,8407.48,8255.27,8359.49,4149030000,8359.49
+2009-07-13,8146.82,8348.08,8106.16,8331.68,4499440000,8331.68
+2009-07-10,8182.49,8216.65,8057.57,8146.52,3912080000,8146.52
+2009-07-09,8179.01,8273.48,8117.27,8183.17,4347170000,8183.17
+2009-07-08,8157.02,8259.05,8057.94,8178.41,5721780000,8178.41
+2009-07-07,8324.95,8355.48,8138.51,8163.60,4673300000,8163.60
+2009-07-06,8279.30,8364.02,8156.49,8324.87,4712580000,8324.87
+2009-07-02,8503.00,8503.00,8260.41,8280.74,3931000000,8280.74
+2009-07-01,8447.53,8610.32,8447.00,8504.06,3919400000,8504.06
+2009-06-30,8528.93,8584.17,8369.99,8447.00,4627570000,8447.00
+2009-06-29,8440.13,8569.59,8406.57,8529.38,4211760000,8529.38
+2009-06-26,8468.54,8509.73,8364.17,8438.39,6076660000,8438.39
+2009-06-25,8299.25,8512.60,8236.07,8472.40,4911240000,8472.40
+2009-06-24,8323.51,8456.83,8246.20,8299.86,4636720000,8299.86
+2009-06-23,8340.44,8413.22,8239.17,8322.91,5071020000,8322.91
+2009-06-22,8538.52,8538.52,8306.66,8339.01,4903940000,8339.01
+2009-06-19,8556.96,8665.26,8476.02,8539.73,5713390000,8539.73
+2009-06-18,8496.73,8634.28,8438.61,8555.60,4684010000,8555.60
+2009-06-17,8504.36,8602.99,8421.46,8497.18,5523650000,8497.18
+2009-06-16,8612.44,8688.69,8483.58,8504.67,4951200000,8504.67
+2009-06-15,8798.50,8798.50,8540.87,8612.13,4697880000,8612.13
+2009-06-12,8770.01,8850.95,8671.61,8799.26,4528120000,8799.26
+2009-06-11,8736.23,8911.11,8697.99,8770.92,5500840000,8770.92
+2009-06-10,8763.66,8871.36,8625.21,8739.02,5379420000,8739.02
+2009-06-09,8764.83,8854.80,8688.99,8763.06,4439950000,8763.06
+2009-06-08,8759.35,8832.13,8593.84,8764.49,4483430000,8764.49
+2009-06-05,8751.75,8900.48,8673.41,8763.13,5277910000,8763.13
+2009-06-04,8665.72,8802.59,8609.17,8750.24,5352890000,8750.24
+2009-06-03,8740.07,8750.83,8556.90,8675.24,5323770000,8675.24
+2009-06-02,8721.60,8832.16,8635.25,8740.87,5987340000,8740.87
+2009-06-01,8501.53,8797.58,8501.53,8721.44,6370440000,8721.44
+2009-05-29,8404.04,8541.27,8323.91,8500.33,6050420000,8500.33
+2009-05-28,8300.50,8463.70,8221.65,8403.80,5738980000,8403.80
+2009-05-27,8473.65,8534.66,8280.82,8300.02,5698800000,8300.02
+2009-05-26,8275.33,8523.59,8194.33,8473.49,5667050000,8473.49
+2009-05-22,8292.21,8415.75,8218.86,8277.32,5155320000,8277.32
+2009-05-21,8416.07,8416.07,8185.25,8292.13,6019840000,8292.13
+2009-05-20,8471.82,8645.85,8376.40,8422.04,8205060000,8422.04
+2009-05-19,8502.48,8594.16,8402.61,8474.85,6616270000,8474.85
+2009-05-18,8270.15,8534.66,8270.15,8504.08,5702150000,8504.08
+2009-05-15,8326.22,8422.28,8206.67,8268.64,5439720000,8268.64
+2009-05-14,8285.92,8427.93,8218.94,8331.32,6134870000,8331.32
+2009-05-13,8461.80,8461.80,8208.74,8284.89,7091820000,8284.89
+2009-05-12,8419.17,8574.88,8306.47,8469.11,6871750400,8469.11
+2009-05-11,8569.23,8569.23,8347.41,8418.77,6150600000,8418.77
+2009-05-08,8410.73,8657.96,8388.11,8574.65,8163280000,8574.65
+2009-05-07,8513.56,8651.51,8296.04,8409.85,9120100000,8409.85
+2009-05-06,8403.48,8608.26,8350.12,8512.28,8555040000,8512.28
+2009-05-05,8425.55,8520.80,8321.37,8410.65,6882860000,8410.65
+2009-05-04,8213.60,8488.87,8213.60,8426.74,7038840000,8426.74
+2009-05-01,8167.41,8278.28,8047.54,8212.41,5312170000,8212.41
+2009-04-30,8188.51,8383.81,8083.62,8168.12,6862540000,8168.12
+2009-04-29,8018.31,8278.12,8018.31,8185.73,6101620000,8185.73
+2009-04-28,8023.56,8136.74,7898.75,8016.95,6328000000,8016.95
+2009-04-27,8073.82,8152.27,7920.42,8025.00,5613460000,8025.00
+2009-04-24,7957.45,8182.30,7905.60,8076.29,7114440000,8076.29
+2009-04-23,7886.81,8015.36,7762.80,7957.06,6563100000,7957.06
+2009-04-22,7964.78,8111.02,7802.46,7886.57,7327860000,7886.57
+2009-04-21,7841.73,8027.54,7699.79,7969.56,7436489600,7969.56
+2009-04-20,8128.94,8128.94,7801.58,7841.73,6973960000,7841.73
+2009-04-17,8125.43,8251.20,8024.92,8131.33,7352009600,8131.33
+2009-04-16,8029.14,8201.81,7933.08,8125.43,6598670000,8125.43
+2009-04-15,7914.92,8069.92,7808.19,8029.62,6241100000,8029.62
+2009-04-14,8057.41,8076.05,7840.53,7920.18,7569840000,7920.18
+2009-04-13,8082.02,8146.86,7888.96,8057.81,6434890000,8057.81
+2009-04-09,7839.89,8150.44,7839.89,8083.38,7600710400,8083.38
+2009-04-08,7788.68,7925.36,7715.09,7837.11,5938460000,7837.11
+2009-04-07,7968.92,7968.92,7733.56,7789.56,5155580000,7789.56
+2009-04-06,8016.16,8037.42,7830.66,7975.85,6210000000,7975.85
+2009-04-03,7980.63,8090.71,7850.33,8017.59,5855640000,8017.59
+2009-04-02,7763.99,8129.33,7763.99,7978.08,7542809600,7978.08
+2009-04-01,7606.13,7804.77,7450.74,7761.60,6034140000,7761.60
+2009-03-31,7523.77,7744.24,7502.98,7608.92,6089100000,7608.92
+2009-03-30,7773.31,7773.31,7406.85,7522.02,5912660000,7522.02
+2009-03-27,7922.57,7922.57,7695.97,7776.18,5600210000,7776.18
+2009-03-26,7752.36,7969.00,7709.19,7924.56,6992960000,7924.56
+2009-03-25,7659.81,7897.48,7539.54,7749.81,7687180000,7749.81
+2009-03-24,7773.47,7837.11,7585.98,7660.21,6767980000,7660.21
+2009-03-23,7279.25,7789.24,7279.25,7775.86,7715769600,7775.86
+2009-03-20,7402.31,7524.81,7215.77,7278.38,7643720000,7278.38
+2009-03-19,7489.68,7624.45,7325.13,7400.80,9033870400,7400.80
+2009-03-18,7395.70,7592.03,7218.24,7486.58,9098449600,7486.58
+2009-03-17,7218.00,7407.41,7129.60,7395.70,6156800000,7395.70
+2009-03-16,7225.33,7428.75,7171.41,7216.97,7883540000,7216.97
+2009-03-13,7219.20,7241.98,7106.34,7223.98,6787089600,7223.98
+2009-03-12,6932.39,7198.25,6840.79,7170.06,7326630400,7170.06
+2009-03-11,6923.13,7078.22,6804.55,6930.40,7287809600,6930.40
+2009-03-10,6547.01,6951.50,6547.01,6926.49,8618329600,6926.49
+2009-03-09,6625.74,6758.44,6440.08,6547.05,7277320000,6547.05
+2009-03-06,6595.16,6776.44,6443.27,6626.94,7331830400,6626.94
+2009-03-05,6874.01,6874.01,6531.28,6594.44,7507249600,6594.44
+2009-03-04,6726.50,7012.19,6715.11,6875.84,7673620000,6875.84
+2009-03-03,6764.81,6922.59,6661.74,6726.02,7583230400,6726.02
+2009-03-02,7056.48,7056.48,6736.69,6763.29,7868289600,6763.29
+2009-02-27,7180.97,7244.61,6952.06,7062.93,8926480000,7062.93
+2009-02-26,7269.06,7451.13,7135.25,7182.08,7599969600,7182.08
+2009-02-25,7349.58,7442.13,7123.94,7270.89,7483640000,7270.89
+2009-02-24,7115.34,7396.34,7077.35,7350.94,7234489600,7350.94
+2009-02-23,7365.99,7477.10,7092.64,7114.78,6509300000,7114.78
+2009-02-20,7461.49,7500.44,7226.29,7365.67,8210590400,7365.67
+2009-02-19,7555.23,7679.01,7420.63,7465.95,5746940000,7465.95
+2009-02-18,7546.35,7661.56,7451.37,7555.63,5740710000,7555.63
+2009-02-17,7845.63,7845.63,7502.59,7552.60,5907820000,7552.60
+2009-02-13,7933.00,8005.96,7811.38,7850.41,5296650000,7850.41
+2009-02-12,7931.97,7956.02,7662.04,7932.76,6476460000,7932.76
+2009-02-11,7887.05,8042.36,7820.14,7939.53,5926460000,7939.53
+2009-02-10,8269.36,8293.17,7835.83,7888.88,6770169600,7888.88
+2009-02-09,8281.38,8376.56,8137.70,8270.87,5574370000,8270.87
+2009-02-06,8056.38,8360.07,8044.03,8280.59,6484100000,8280.59
+2009-02-05,7954.83,8138.65,7811.70,8063.07,6624030000,8063.07
+2009-02-04,8070.32,8197.04,7899.79,7956.66,6420450000,7956.66
+2009-02-03,7936.99,8157.13,7855.19,8078.36,5886310000,8078.36
+2009-02-02,8000.62,8053.43,7796.17,7936.83,5673270000,7936.83
+2009-01-30,8149.01,8243.95,7924.88,8000.86,5350580000,8000.86
+2009-01-29,8373.06,8373.06,8092.14,8149.01,5067060000,8149.01
+2009-01-28,8175.93,8446.33,8175.93,8375.45,6199180000,8375.45
+2009-01-27,8117.39,8264.10,8042.60,8174.73,5353260000,8174.73
+2009-01-26,8078.04,8278.12,7971.15,8116.03,6039940000,8116.03
+2009-01-23,8108.79,8187.88,7856.86,8077.56,5832160000,8077.56
+2009-01-22,8224.43,8239.33,7925.75,8122.80,5843830000,8122.80
+2009-01-21,7949.17,8286.40,7890.63,8228.10,6467830000,8228.10
+2009-01-20,8279.63,8309.02,7920.66,7949.09,6375230000,7949.09
+2009-01-16,8215.67,8424.59,8086.01,8281.22,6786040000,8281.22
+2009-01-15,8196.24,8326.06,7949.65,8212.49,7807350400,8212.49
+2009-01-14,8446.01,8446.01,8097.95,8200.14,5407880000,8200.14
+2009-01-13,8474.61,8584.68,8325.59,8448.56,5567460000,8448.56
+2009-01-12,8599.26,8653.97,8391.85,8473.97,4725050000,8473.97
+2009-01-09,8738.80,8800.45,8541.75,8599.18,4716500000,8599.18
+2009-01-08,8769.94,8807.14,8593.52,8742.46,4991550000,8742.46
+2009-01-07,8996.94,8996.94,8690.45,8769.70,4704940000,8769.70
+2009-01-06,8954.57,9175.19,8868.07,9015.10,5392620000,9015.10
+2009-01-05,9027.13,9093.47,8841.70,8952.89,5413910000,8952.89
+2009-01-02,8772.25,9080.57,8725.10,9034.69,4048270000,9034.69
+2008-12-31,8666.48,8862.65,8634.06,8776.39,4172940000,8776.39
+2008-12-30,8487.51,8700.89,8463.70,8668.39,3627800000,8668.39
+2008-12-29,8515.87,8575.60,8349.24,8483.93,3323430000,8483.93
+2008-12-26,8468.71,8581.58,8434.94,8515.55,1880050000,8515.55
+2008-12-24,8428.17,8498.26,8417.02,8468.48,1546550000,8468.48
+2008-12-23,8518.65,8647.60,8376.80,8419.49,4051970000,8419.49
+2008-12-22,8573.37,8672.06,8351.79,8519.69,4869850000,8519.69
+2008-12-19,8606.50,8823.78,8499.06,8579.11,6705310000,8579.11
+2008-12-18,8823.94,8946.36,8516.02,8604.99,5675000000,8604.99
+2008-12-17,8921.91,9001.96,8701.13,8824.34,5907380000,8824.34
+2008-12-16,8565.65,8985.63,8534.03,8924.14,6009780000,8924.14
+2008-12-15,8628.81,8738.40,8431.04,8564.53,4982390000,8564.53
+2008-12-12,8563.10,8705.43,8272.22,8629.68,5959590000,8629.68
+2008-12-11,8750.13,8861.86,8480.18,8565.09,5513840000,8565.09
+2008-12-10,8693.00,8942.46,8589.86,8761.42,5942130000,8761.42
+2008-12-09,8934.10,8978.14,8591.69,8691.33,5693110000,8691.33
+2008-12-08,8637.65,9151.61,8637.65,8934.18,6553600000,8934.18
+2008-12-05,8376.08,8722.47,8084.25,8635.42,6165370000,8635.42
+2008-12-04,8587.07,8705.98,8222.84,8376.24,5860390000,8376.24
+2008-12-03,8409.14,8654.77,8170.19,8591.69,6221880000,8591.69
+2008-12-02,8153.75,8490.62,8072.47,8419.09,6170100000,8419.09
+2008-12-01,8826.89,8826.89,8123.04,8149.09,6052010000,8149.09
+2008-11-28,8690.24,8840.33,8687.05,8829.04,2740860000,8829.04
+2008-11-26,8464.49,8760.46,8250.80,8726.61,5793260000,8726.61
+2008-11-25,8445.14,8682.09,8244.43,8479.47,6952700000,8479.47
+2008-11-24,8048.09,8624.27,8023.32,8443.39,7879440000,8443.39
+2008-11-21,7552.37,8121.45,7392.27,8046.42,9495900000,8046.42
+2008-11-20,7995.53,8224.35,7464.51,7552.29,9093740000,7552.29
+2008-11-19,8420.69,8534.34,7967.33,7997.28,6548600000,7997.28
+2008-11-18,8273.34,8540.08,8075.81,8424.75,6679470000,8424.75
+2008-11-17,8494.84,8596.31,8197.12,8273.58,4927490000,8273.58
+2008-11-14,8822.19,8980.93,8421.08,8497.31,5881030000,8497.31
+2008-11-13,8281.14,8898.41,7947.74,8835.25,7849120000,8835.25
+2008-11-12,8684.52,8684.52,8235.66,8282.66,5764180000,8282.66
+2008-11-11,8864.32,8892.20,8499.62,8693.96,4998340000,8693.96
+2008-11-10,8946.60,9212.94,8735.61,8870.54,4572000000,8870.54
+2008-11-07,8696.03,9032.54,8661.22,8943.81,4931640000,8943.81
+2008-11-06,9134.01,9216.37,8607.14,8695.79,6102230000,8695.79
+2008-11-05,9616.60,9628.15,9086.06,9139.27,5426640000,9139.27
+2008-11-04,9323.89,9711.46,9323.89,9625.28,5531290000,9625.28
+2008-11-03,9326.04,9488.92,9175.03,9319.83,4492280000,9319.83
+2008-10-31,9179.09,9498.48,9014.78,9325.01,6394350000,9325.01
+2008-10-30,9004.66,9380.36,8916.81,9180.69,6175830000,9180.69
+2008-10-29,9062.33,9405.05,8800.61,8990.96,7077800000,8990.96
+2008-10-28,8178.72,9112.51,8153.79,9065.12,7096950400,9065.12
+2008-10-27,8375.92,8639.64,8085.37,8175.77,5558050000,8175.77
+2008-10-24,8683.21,8683.21,8088.63,8378.95,6550050000,8378.95
+2008-10-23,8519.77,8864.48,8200.06,8691.25,7189900000,8691.25
+2008-10-22,9027.84,9027.84,8324.07,8519.21,6147980000,8519.21
+2008-10-21,9179.11,9293.07,9017.30,9045.21,5121830000,9045.21
+2008-10-20,8852.30,9305.89,8799.49,9265.43,5175640000,9265.43
+2008-10-17,8975.35,9304.38,8640.83,8852.22,6581780000,8852.22
+2008-10-16,8577.04,9073.64,8176.17,8979.26,7984500000,8979.26
+2008-10-15,9301.91,9301.91,8516.50,8577.91,6542330000,8577.91
+2008-10-14,9388.97,9924.28,9050.06,9310.99,8161990400,9310.99
+2008-10-13,8462.42,9501.91,8462.42,9387.61,7263369600,9387.61
+2008-10-10,8568.67,8989.13,7773.71,8451.19,11456230400,8451.19
+2008-10-09,9261.69,9522.77,8523.27,8579.19,8285670400,8579.19
+2008-10-08,9437.23,9778.04,9042.97,9258.10,8716329600,9258.10
+2008-10-07,9955.42,10205.04,9391.67,9447.11,7069209600,9447.11
+2008-10-06,10322.52,10322.52,9503.10,9955.50,7956020000,9955.50
+2008-10-03,10483.96,10844.69,10261.75,10325.38,6716120000,10325.38
+2008-10-02,10825.54,10843.10,10368.08,10482.85,6285640000,10482.85
+2008-10-01,10847.40,11022.06,10495.99,10831.07,5782130000,10831.07
+2008-09-30,10371.58,10922.03,10371.58,10850.66,6065000000,10850.66
+2008-09-29,11139.62,11139.62,10266.76,10365.45,7305060000,10365.45
+2008-09-26,11019.04,11218.48,10781.37,11143.13,5383610000,11143.13
+2008-09-25,10827.17,11206.05,10799.77,11022.06,5877640000,11022.06
+2008-09-24,10850.02,11041.02,10696.38,10825.17,4820360000,10825.17
+2008-09-23,11015.69,11214.65,10763.77,10854.17,5185730000,10854.17
+2008-09-22,11394.42,11450.81,10956.43,11015.69,5368130000,11015.69
+2008-09-19,11027.51,11415.48,11027.51,11388.44,9387169600,11388.44
+2008-09-18,10609.01,11149.07,10403.75,11019.69,10082689600,11019.69
+2008-09-17,11056.58,11068.87,10521.81,10609.66,9431870400,10609.66
+2008-09-16,10905.62,11193.12,10604.70,11059.02,9459830400,11059.02
+2008-09-15,11416.37,11416.37,10849.85,10917.51,8279510400,10917.51
+2008-09-12,11429.32,11532.72,11191.08,11421.99,6273260000,11421.99
+2008-09-11,11264.44,11461.15,11018.72,11433.71,6869249600,11433.71
+2008-09-10,11233.91,11453.50,11135.64,11268.92,6543440000,11268.92
+2008-09-09,11514.73,11623.50,11209.81,11230.73,7380630400,11230.73
+2008-09-08,11224.87,11656.64,11224.87,11510.74,7351340000,11510.74
+2008-09-05,11185.63,11301.73,10998.77,11220.96,5017080000,11220.96
+2008-09-04,11532.48,11532.48,11130.26,11188.23,5212500000,11188.23
+2008-09-03,11506.01,11629.69,11328.84,11532.88,5056980000,11532.88
+2008-09-02,11545.63,11831.29,11444.79,11516.92,4783560000,11516.92
+2008-08-29,11713.23,11730.49,11508.78,11543.55,3288120000,11543.55
+2008-08-28,11499.87,11756.46,11493.72,11715.18,3854280000,11715.18
+2008-08-27,11412.46,11575.14,11349.69,11502.51,3499610000,11502.51
+2008-08-26,11383.56,11483.62,11284.47,11412.87,3587570000,11412.87
+2008-08-25,11626.19,11626.19,11336.82,11386.25,3420600000,11386.25
+2008-08-22,11426.79,11684.00,11426.79,11628.06,3741070000,11628.06
+2008-08-21,11415.23,11501.29,11263.63,11430.21,4032590000,11430.21
+2008-08-20,11345.94,11511.06,11240.18,11417.43,4555030000,11417.43
+2008-08-19,11478.09,11501.45,11260.53,11348.55,4159760000,11348.55
+2008-08-18,11659.65,11744.49,11410.18,11479.39,3829290000,11479.39
+2008-08-15,11611.21,11776.41,11540.05,11659.90,4041820000,11659.90
+2008-08-14,11532.07,11744.33,11399.84,11615.93,4064000000,11615.93
+2008-08-13,11632.81,11689.05,11377.37,11532.96,4787600000,11532.96
+2008-08-12,11781.70,11830.39,11541.43,11642.47,4711290000,11642.47
+2008-08-11,11729.67,11933.55,11580.19,11782.35,5067310000,11782.35
+2008-08-08,11432.09,11808.49,11344.23,11734.32,4966810000,11734.32
+2008-08-07,11655.42,11680.50,11355.63,11431.43,5319380000,11431.43
+2008-08-06,11603.64,11745.71,11454.64,11656.07,4873420000,11656.07
+2008-08-05,11286.02,11652.24,11286.02,11615.77,1219310000,11615.77
+2008-08-04,11326.32,11449.67,11144.59,11284.15,4562280000,11284.15
+2008-08-01,11379.89,11512.61,11205.41,11326.32,4684870000,11326.32
+2008-07-31,11577.99,11631.16,11317.69,11378.02,5346050000,11378.02
+2008-07-30,11397.56,11681.47,11328.68,11583.69,5631330000,11583.69
+2008-07-29,11133.44,11444.05,11086.13,11397.56,5414240000,11397.56
+2008-07-28,11369.47,11439.25,11094.76,11131.08,4282960000,11131.08
+2008-07-25,11341.14,11540.78,11252.47,11370.69,4672560000,11370.69
+2008-07-24,11630.34,11714.21,11288.79,11349.28,6127980000,11349.28
+2008-07-23,11603.39,11820.21,11410.02,11632.38,6705830000,11632.38
+2008-07-22,11457.90,11692.79,11273.32,11602.50,6180230000,11602.50
+2008-07-21,11495.02,11663.40,11339.02,11467.34,4630640000,11467.34
+2008-07-18,11436.56,11599.57,11290.50,11496.57,5653280000,11496.57
+2008-07-17,11238.39,11538.50,11118.46,11446.66,7365209600,11446.66
+2008-07-16,10961.89,11308.41,10831.61,11239.28,6738630400,11239.28
+2008-07-15,11050.80,11201.67,10731.96,10962.54,7363640000,10962.54
+2008-07-14,11103.64,11299.70,10972.63,11055.19,5434860000,11055.19
+2008-07-11,11226.17,11292.04,10908.64,11100.54,6742200000,11100.54
+2008-07-10,11148.01,11351.24,11006.01,11229.02,5840430000,11229.02
+2008-07-09,11381.93,11505.12,11115.61,11147.44,5181000000,11147.44
+2008-07-08,11225.03,11459.52,11101.19,11384.21,6034110000,11384.21
+2008-07-07,11289.19,11477.52,11094.44,11231.96,5265420000,11231.96
+2008-07-03,11297.33,11336.49,11158.02,11288.53,3247590000,11288.53
+2008-07-02,11382.34,11510.41,11180.58,11215.51,5276090000,11215.51
+2008-07-01,11344.64,11465.79,11106.65,11382.26,5846290000,11382.26
+2008-06-30,11345.70,11504.55,11226.34,11350.01,5032330000,11350.01
+2008-06-27,11452.85,11556.33,11248.48,11346.51,6208260000,11346.51
+2008-06-26,11808.57,11808.57,11431.92,11453.42,5231280000,11453.42
+2008-06-25,11805.31,12008.70,11683.75,11811.83,4825640000,11811.83
+2008-06-24,11842.36,11962.37,11668.53,11807.43,4705050000,11807.43
+2008-06-23,11843.83,11986.96,11731.06,11842.36,4186370000,11842.36
+2008-06-20,12062.19,12078.23,11785.04,11842.69,5324900000,11842.69
+2008-06-19,12022.54,12188.31,11881.03,12063.09,4811670000,12063.09
+2008-06-18,12158.68,12212.33,11947.07,12029.06,4573570000,12029.06
+2008-06-17,12269.65,12378.67,12114.14,12160.30,3801960000,12160.30
+2008-06-16,12306.86,12381.44,12139.79,12269.08,3706940000,12269.08
+2008-06-13,12144.59,12376.72,12096.23,12307.35,4080420000,12307.35
+2008-06-12,12089.63,12337.72,12041.43,12141.58,4734240000,12141.58
+2008-06-11,12286.34,12317.20,12029.46,12083.77,4779980000,12083.77
+2008-06-10,12277.71,12425.98,12116.58,12289.76,4635070000,12289.76
+2008-06-09,12210.13,12406.36,12102.50,12280.32,4404570000,12280.32
+2008-06-06,12602.74,12602.74,12180.50,12209.81,4771660000,12209.81
+2008-06-05,12388.81,12652.81,12358.07,12604.45,4350790000,12604.45
+2008-06-04,12391.86,12540.37,12283.74,12390.48,4338640000,12390.48
+2008-06-03,12503.20,12620.98,12317.61,12402.85,4396380000,12402.85
+2008-06-02,12637.67,12645.40,12385.76,12503.82,3714320000,12503.82
+2008-05-30,12647.36,12750.84,12555.60,12638.32,3845630000,12638.32
+2008-05-29,12593.87,12760.21,12493.47,12646.22,3894440000,12646.22
+2008-05-28,12542.90,12693.77,12437.38,12594.03,3927240000,12594.03
+2008-05-27,12479.63,12626.84,12397.56,12548.35,3588860000,12548.35
+2008-05-23,12620.90,12637.43,12420.20,12479.63,3516380000,12479.63
+2008-05-22,12597.69,12743.68,12515.78,12625.62,3955960000,12625.62
+2008-05-21,12824.94,12926.71,12550.39,12601.19,4517990000,12601.19
+2008-05-20,13026.04,13026.04,12742.29,12828.68,3854320000,12828.68
+2008-05-19,12985.41,13170.97,12899.19,13028.16,3683970000,13028.16
+2008-05-16,12992.74,13069.52,12860.60,12986.80,3842590000,12986.80
+2008-05-15,12891.29,13028.16,12798.39,12992.66,3836480000,12992.66
+2008-05-14,12825.12,13037.44,12806.21,12898.38,3979370000,12898.38
+2008-05-13,12872.08,12957.65,12716.16,12832.18,4018590000,12832.18
+2008-05-12,12768.38,12903.33,12746.36,12876.05,3370630000,12876.05
+2008-05-09,12860.68,12871.75,12648.09,12745.88,3518620000,12745.88
+2008-05-08,12814.84,12965.95,12727.56,12866.78,3827550000,12866.78
+2008-05-07,13010.82,13097.77,12756.14,12814.35,4075860000,12814.35
+2008-05-06,12968.89,13071.07,12817.53,13020.83,3924100000,13020.83
+2008-05-05,13056.57,13105.75,12896.50,12969.54,3410090000,12969.54
+2008-05-02,13012.53,13191.49,12931.35,13058.20,3953030000,13058.20
+2008-05-01,12818.34,13079.94,12721.94,13010.00,4448780000,13010.00
+2008-04-30,12831.45,13052.91,12746.45,12820.13,4508890000,12820.13
+2008-04-29,12870.37,12970.27,12737.82,12831.94,3815320000,12831.94
+2008-04-28,12890.76,13015.62,12791.55,12871.75,3607000000,12871.75
+2008-04-25,12848.38,12987.29,12703.70,12891.86,3891150000,12891.86
+2008-04-24,12764.68,12979.88,12651.51,12848.95,4461660000,12848.95
+2008-04-23,12721.45,12883.80,12627.00,12763.22,4103610000,12763.22
+2008-04-22,12825.02,12870.86,12604.53,12720.23,3821900000,12720.23
+2008-04-21,12850.91,12902.69,12666.08,12825.02,3420570000,12825.02
+2008-04-18,12626.76,12965.47,12626.76,12849.36,4222380000,12849.36
+2008-04-17,12617.40,12725.93,12472.71,12620.49,3713880000,12620.49
+2008-04-16,12371.51,12670.56,12371.51,12619.27,4260370000,12619.27
+2008-04-15,12303.60,12459.36,12223.97,12362.47,3581230000,12362.47
+2008-04-14,12324.77,12430.86,12208.42,12302.06,3565020000,12302.06
+2008-04-11,12579.78,12579.78,12280.89,12325.42,3723790000,12325.42
+2008-04-10,12526.78,12705.90,12447.96,12581.98,3686150000,12581.98
+2008-04-09,12574.65,12686.93,12416.53,12527.26,3556670000,12527.26
+2008-04-08,12602.66,12664.38,12440.55,12576.44,3602500000,12576.44
+2008-04-07,12612.59,12786.83,12550.22,12612.43,3747780000,12612.43
+2008-04-04,12626.35,12738.30,12489.40,12609.42,3703100000,12609.42
+2008-04-03,12604.69,12734.97,12455.04,12626.03,3920100000,12626.03
+2008-04-02,12651.67,12790.28,12488.22,12608.92,4320440000,12608.92
+2008-04-01,12266.64,12693.93,12266.64,12654.36,4745120000,12654.36
+2008-03-31,12215.92,12384.84,12095.18,12262.89,4188990000,12262.89
+2008-03-28,12303.92,12441.67,12164.22,12216.40,3686980000,12216.40
+2008-03-27,12421.88,12528.13,12264.76,12302.46,4037930000,12302.46
+2008-03-26,12531.79,12531.79,12309.62,12422.86,4055670000,12422.86
+2008-03-25,12547.34,12639.82,12397.62,12532.60,4145120000,12532.60
+2008-03-24,12361.97,12687.61,12346.17,12548.64,4499000000,12548.64
+2008-03-20,12102.43,12434.34,12024.68,12361.32,6145220000,12361.32
+2008-03-19,12391.52,12525.19,12077.27,12099.66,5358550000,12099.66
+2008-03-18,11975.92,12411.63,11975.92,12392.66,5335630000,12392.66
+2008-03-17,11946.45,12119.69,11650.44,11972.25,5683010000,11972.25
+2008-03-14,12146.39,12249.86,11781.43,11951.09,5153780000,11951.09
+2008-03-13,12096.49,12242.29,11832.88,12145.74,5073360000,12145.74
+2008-03-12,12148.61,12360.58,12037.79,12110.24,4414280000,12110.24
+2008-03-11,11741.33,12205.98,11741.33,12156.81,5109080000,12156.81
+2008-03-10,11893.04,11993.75,11691.47,11740.15,4261240000,11740.15
+2008-03-07,12039.09,12131.33,11778.66,11893.69,4565410000,11893.69
+2008-03-06,12254.59,12267.86,12010.03,12040.39,4323460000,12040.39
+2008-03-05,12204.93,12392.74,12105.36,12254.99,4277710000,12254.99
+2008-03-04,12259.14,12291.22,11991.06,12213.80,4757180000,12213.80
+2008-03-03,12264.36,12344.71,12101.29,12258.90,4117570000,12258.90
+2008-02-29,12579.58,12579.58,12210.30,12266.39,4426730000,12266.39
+2008-02-28,12689.28,12713.99,12463.32,12582.18,3938580000,12582.18
+2008-02-27,12683.54,12815.59,12527.64,12694.28,3904700000,12694.28
+2008-02-26,12569.48,12771.14,12449.08,12684.92,4096060000,12684.92
+2008-02-25,12380.77,12612.47,12292.03,12570.22,3866350000,12570.22
+2008-02-22,12281.09,12429.05,12116.92,12381.02,3572660000,12381.02
+2008-02-21,12426.85,12545.79,12225.36,12284.30,3696660000,12284.30
+2008-02-20,12333.31,12489.29,12159.42,12427.26,3870520000,12427.26
+2008-02-19,12349.59,12571.11,12276.81,12337.22,3613550000,12337.22
+2008-02-15,12376.66,12441.20,12216.68,12348.21,3583300000,12348.21
+2008-02-14,12551.51,12611.26,12332.03,12376.98,3644760000,12376.98
+2008-02-13,12368.12,12627.76,12354.22,12552.24,3856420000,12552.24
+2008-02-12,12241.56,12524.12,12207.90,12373.41,4044640000,12373.41
+2008-02-11,12181.89,12332.76,12006.79,12240.01,3593140000,12240.01
+2008-02-08,12248.47,12330.97,12058.01,12182.13,3768490000,12182.13
+2008-02-07,12196.20,12366.99,12045.00,12247.00,4589160000,12247.00
+2008-02-06,12257.25,12436.33,12142.14,12200.10,4008120000,12200.10
+2008-02-05,12631.85,12631.85,12234.97,12265.13,4315740000,12265.13
+2008-02-04,12743.11,12810.34,12557.61,12635.16,3495780000,12635.16
+2008-02-01,12638.17,12841.88,12510.05,12743.19,4650770000,12743.19
+2008-01-31,12438.28,12734.74,12197.09,12650.36,4970290000,12650.36
+2008-01-30,12480.14,12715.96,12311.55,12442.83,4742760000,12442.83
+2008-01-29,12385.19,12604.92,12262.29,12480.30,4232960000,12480.30
+2008-01-28,12205.71,12423.81,12061.42,12383.89,4100930000,12383.89
+2008-01-25,12391.70,12590.69,12103.61,12207.17,4882250000,12207.17
+2008-01-24,12272.69,12522.82,12114.83,12378.61,5735300000,12378.61
+2008-01-23,11969.08,12339.10,11530.12,12270.17,3241680000,12270.17
+2008-01-22,12092.72,12167.42,11508.74,11971.19,6544690000,11971.19
+2008-01-18,12159.94,12441.85,11953.71,12099.30,6004840000,12099.30
+2008-01-17,12467.05,12597.85,12089.38,12159.21,5303130000,12159.21
+2008-01-16,12476.81,12699.05,12294.48,12466.16,5440620000,12466.16
+2008-01-15,12777.50,12777.50,12425.92,12501.11,4601640000,12501.11
+2008-01-14,12613.78,12866.10,12596.95,12778.15,3682090000,12778.15
+2008-01-11,12850.74,12863.34,12495.91,12606.30,4495840000,12606.30
+2008-01-10,12733.11,12931.29,12632.15,12853.09,5170490000,12853.09
+2008-01-09,12590.21,12814.97,12431.53,12735.31,5351030000,12735.31
+2008-01-08,12820.90,12998.11,12511.03,12589.07,4705390000,12589.07
+2008-01-07,12801.15,12984.95,12640.44,12827.49,4221260000,12827.49
+2008-01-04,13046.56,13049.65,12740.51,12800.18,4166000000,12800.18
+2008-01-03,13044.12,13197.43,12968.44,13056.72,3429500000,13056.72
+2008-01-02,13261.82,13338.23,12969.42,13043.96,3452650000,13043.96
+2007-12-31,13364.16,13423.91,13197.35,13264.82,2440880000,13264.82
+2007-12-28,13361.23,13494.30,13272.14,13365.87,2420510000,13365.87
+2007-12-27,13549.17,13551.53,13325.71,13359.61,2365770000,13359.61
+2007-12-26,13547.95,13614.53,13440.16,13551.69,2010500000,13551.69
+2007-12-24,13487.12,13562.72,13451.35,13550.04,2200000,13550.04
+2007-12-21,13241.66,13518.20,13241.66,13450.65,4508590000,13450.65
+2007-12-20,13206.46,13354.00,13112.98,13245.64,3526890000,13245.64
+2007-12-19,13231.98,13368.79,13097.77,13207.27,3401300000,13207.27
+2007-12-18,13168.66,13346.84,13059.32,13232.47,3723690000,13232.47
+2007-12-17,13339.20,13378.38,13111.92,13167.20,3569030000,13167.20
+2007-12-14,13515.11,13557.54,13284.66,13339.85,3401050000,13339.85
+2007-12-13,13473.98,13586.73,13281.00,13517.96,3635170000,13517.96
+2007-12-12,13434.80,13778.98,13299.61,13473.90,4482120000,13473.90
+2007-12-11,13726.87,13850.92,13374.89,13432.77,4080180000,13432.77
+2007-12-10,13623.55,13807.02,13582.50,13727.03,2911760000,13727.03
+2007-12-07,13618.27,13744.02,13514.22,13625.58,3177710000,13625.58
+2007-12-06,13445.85,13652.49,13362.37,13619.89,3568570000,13619.89
+2007-12-05,13244.01,13513.00,13244.01,13444.96,3663660000,13444.96
+2007-12-04,13311.24,13395.21,13139.56,13248.73,3343620000,13248.73
+2007-12-03,13368.22,13490.24,13207.60,13314.57,3323250000,13314.57
+2007-11-30,13314.25,13570.31,13225.32,13371.72,4422200000,13371.72
+2007-11-29,13287.91,13399.03,13150.21,13311.73,3524730000,13311.73
+2007-11-28,12958.04,13353.51,12958.04,13289.45,4508020000,13289.45
+2007-11-27,12744.78,13040.38,12711.98,12958.44,4320720000,12958.44
+2007-11-26,12979.99,13104.44,12707.26,12743.44,3706470000,12743.44
+2007-11-23,12889.45,12981.56,12796.29,12980.88,1612720000,12980.88
+2007-11-21,13006.65,13055.59,12725.39,12799.04,4076230000,12799.04
+2007-11-20,12955.92,13179.23,12800.74,13010.14,4875150000,13010.14
+2007-11-19,13176.30,13195.48,12871.14,12958.44,4119650000,12958.44
+2007-11-16,13109.48,13293.44,12987.22,13176.79,4168870000,13176.79
+2007-11-15,13230.68,13333.59,13007.95,13110.05,3941010000,13110.05
+2007-11-14,13305.47,13465.20,13159.88,13231.01,4031470000,13231.01
+2007-11-13,12975.11,13357.57,12975.11,13307.09,4141310000,13307.09
+2007-11-12,13039.16,13238.73,12910.40,12987.55,4192520000,12987.55
+2007-11-09,13261.17,13321.81,12920.65,13042.74,4587050000,13042.74
+2007-11-08,13299.70,13463.66,13001.93,13266.29,5439720000,13266.29
+2007-11-07,13646.72,13646.72,13269.46,13300.02,4353160000,13300.02
+2007-11-06,13542.34,13716.55,13460.73,13660.94,3879160000,13660.94
+2007-11-05,13592.58,13666.15,13393.67,13543.40,3819330000,13543.40
+2007-11-02,13569.90,13708.58,13381.64,13595.10,4285990000,13595.10
+2007-11-01,13924.16,13924.16,13522.75,13567.87,4241470000,13567.87
+2007-10-31,13792.06,13990.65,13711.59,13930.01,3953070000,13930.01
+2007-10-30,13869.04,13930.91,13719.80,13792.47,3212520000,13792.47
+2007-10-29,13807.35,13966.18,13748.33,13870.26,3124480000,13870.26
+2007-10-26,13675.66,13885.95,13622.01,13806.70,3612120000,13806.70
+2007-10-25,13677.85,13819.78,13471.87,13671.92,4183960000,13671.92
+2007-10-24,13675.58,13751.50,13423.74,13675.25,4003300000,13675.25
+2007-10-23,13568.93,13754.91,13494.95,13676.23,3309120000,13676.23
+2007-10-22,13521.62,13636.80,13337.90,13566.97,3471830000,13566.97
+2007-10-19,13888.47,13888.47,13478.94,13522.02,4160970000,13522.02
+2007-10-18,13887.90,13984.39,13746.22,13888.96,3203210000,13888.96
+2007-10-17,13920.66,14075.84,13738.66,13892.54,3638070000,13892.54
+2007-10-16,13986.34,14061.37,13810.68,13912.94,3234560000,13912.94
+2007-10-15,14092.43,14157.38,13877.82,13984.80,3139290000,13984.80
+2007-10-12,14016.34,14168.51,13949.85,14093.08,2788690000,14093.08
+2007-10-11,14079.10,14279.96,13917.82,14015.12,3911260000,14015.12
+2007-10-10,14165.02,14225.66,13963.26,14078.69,3044760000,14078.69
+2007-10-09,14043.73,14198.83,13980.90,14164.53,2932040000,14164.53
+2007-10-08,14065.36,14134.05,13747.41,14043.73,2040650000,14043.73
+2007-10-05,13969.07,14169.49,13965.05,14066.01,2919030000,14066.01
+2007-10-04,13967.89,14074.54,13894.98,13974.31,2690430000,13974.31
+2007-10-03,14038.86,14090.48,13883.43,13968.05,3065320000,13968.05
+2007-10-02,14087.14,14166.16,13951.72,14047.31,3101910000,14047.31
+2007-10-01,13895.71,14147.30,13869.86,14087.55,3281990000,14087.55
+2007-09-28,13912.94,13994.64,13802.96,13895.63,2925350000,13895.63
+2007-09-27,13879.53,13991.63,13811.17,13912.94,2872180000,13912.94
+2007-09-26,13779.30,13962.61,13741.26,13878.15,3237390000,13878.15
+2007-09-25,13757.84,13847.10,13629.16,13778.65,3187770000,13778.65
+2007-09-24,13821.57,13930.74,13702.89,13759.06,3131310000,13759.06
+2007-09-21,13768.33,13948.95,13740.61,13820.19,3679460000,13820.19
+2007-09-20,13813.52,13893.02,13680.21,13766.70,2957700000,13766.70
+2007-09-19,13740.61,13936.68,13689.80,13815.56,3846750000,13815.56
+2007-09-18,13403.18,13772.15,13379.68,13739.39,3708940000,13739.39
+2007-09-17,13441.95,13514.71,13306.69,13403.42,2598390000,13403.42
+2007-09-14,13421.39,13507.55,13273.68,13442.52,2641740000,13442.52
+2007-09-13,13292.38,13519.91,13292.38,13424.88,2877080000,13424.88
+2007-09-12,13298.31,13408.62,13195.40,13291.65,2885720000,13291.65
+2007-09-11,13129.40,13369.77,13124.68,13308.39,3015330000,13308.39
+2007-09-10,13116.39,13280.67,12992.02,13127.85,2835720000,13127.85
+2007-09-07,13360.74,13360.74,13059.16,13113.38,3191080000,13113.38
+2007-09-06,13306.44,13464.79,13217.11,13363.35,2459590000,13363.35
+2007-09-05,13442.85,13442.85,13203.86,13305.47,2991600000,13305.47
+2007-09-04,13358.39,13521.86,13248.57,13448.86,2766600000,13448.86
+2007-08-31,13240.84,13472.35,13240.84,13357.74,2731610000,13357.74
+2007-08-30,13287.91,13355.46,13126.39,13238.73,2582960000,13238.73
+2007-08-29,13043.07,13336.93,13020.63,13289.29,2824070000,13289.29
+2007-08-28,13318.43,13319.61,13024.29,13041.85,3078090000,13041.85
+2007-08-27,13377.16,13438.46,13248.32,13322.13,2406180000,13322.13
+2007-08-24,13231.78,13402.20,13174.27,13378.87,2541400000,13378.87
+2007-08-23,13237.27,13358.22,13127.69,13235.88,3084390000,13235.88
+2007-08-22,13088.26,13304.33,13075.34,13236.13,3309120000,13236.13
+2007-08-21,13120.05,13228.57,12975.68,13090.86,3012150000,13090.86
+2007-08-20,13078.51,13245.80,12938.77,13121.35,3321340000,13121.35
+2007-08-17,12848.05,13289.70,12847.24,13079.08,3570040000,13079.08
+2007-08-16,12859.52,12996.73,12455.92,12845.78,6509300000,12845.78
+2007-08-15,13021.93,13184.51,12800.83,12861.47,4290930000,12861.47
+2007-08-14,13235.72,13309.04,12974.30,13028.92,3814630000,13028.92
+2007-08-13,13238.24,13440.08,13163.54,13236.53,3696280000,13236.53
+2007-08-10,13270.59,13386.43,12958.04,13239.54,5345780000,13239.54
+2007-08-09,13652.33,13675.66,13196.05,13270.68,5889600000,13270.68
+2007-08-08,13497.23,13769.63,13386.92,13657.86,5499560000,13657.86
+2007-08-07,13467.72,13635.09,13282.38,13504.30,4909390000,13504.30
+2007-08-06,13183.13,13501.86,13077.05,13468.78,5067200000,13468.78
+2007-08-03,13462.25,13539.50,13156.79,13181.91,4272110000,13181.91
+2007-08-02,13357.82,13547.47,13272.79,13463.33,4368850000,13463.33
+2007-08-01,13211.09,13431.06,13041.77,13362.37,5256780000,13362.37
+2007-07-31,13360.66,13579.41,13182.15,13211.99,4524520000,13211.99
+2007-07-30,13266.21,13445.12,13143.87,13358.31,4128780000,13358.31
+2007-07-27,13472.68,13589.17,13228.57,13265.47,4784650000,13265.47
+2007-07-26,13783.12,13793.61,13307.74,13473.57,4472550000,13473.57
+2007-07-25,13718.25,13919.77,13607.70,13785.07,4283200000,13785.07
+2007-07-24,13940.90,13967.65,13661.51,13716.95,4115830000,13716.95
+2007-07-23,13851.73,14039.59,13819.54,13943.42,3102700000,13943.42
+2007-07-20,14000.73,14039.67,13745.65,13851.08,3745780000,13851.08
+2007-07-19,13918.79,14121.04,13860.18,14000.41,3251450000,14000.41
+2007-07-18,13955.05,14020.89,13768.73,13918.22,3609220000,13918.22
+2007-07-17,13951.96,14095.60,13880.67,13971.55,3007140000,13971.55
+2007-07-16,13907.09,14053.57,13834.33,13950.98,2704110000,13950.98
+2007-07-13,13859.86,13982.93,13784.83,13907.25,2801120000,13907.25
+2007-07-12,13579.33,13889.45,13579.33,13861.73,3489600000,13861.73
+2007-07-11,13500.40,13638.75,13435.45,13577.87,3082920000,13577.87
+2007-07-10,13648.59,13685.90,13463.57,13501.70,3244280000,13501.70
+2007-07-09,13612.66,13739.06,13563.89,13649.97,2715330000,13649.97
+2007-07-06,13559.01,13670.46,13501.54,13611.68,2441520000,13611.68
+2007-07-05,13576.24,13637.78,13459.84,13565.84,2622950000,13565.84
+2007-07-03,13556.87,13592.07,13531.83,13577.30,1560790000,13577.30
+2007-07-02,13409.60,13586.97,13406.59,13535.43,2648990000,13535.43
+2007-06-29,13422.61,13556.16,13291.32,13408.62,3165410000,13408.62
+2007-06-28,13427.48,13537.47,13342.05,13422.28,3006710000,13422.28
+2007-06-27,13336.93,13455.36,13205.08,13427.73,3398150000,13427.73
+2007-06-26,13352.37,13491.70,13272.79,13337.66,3398530000,13337.66
+2007-06-25,13360.09,13519.34,13273.68,13352.05,3287250000,13352.05
+2007-06-22,13545.03,13564.13,13323.51,13360.26,4284320000,13360.26
+2007-06-21,13486.66,13596.56,13368.79,13545.84,3161110000,13545.84
+2007-06-20,13636.56,13735.08,13469.43,13489.42,3286900000,13489.42
+2007-06-19,13611.68,13705.41,13527.14,13635.42,2873590000,13635.42
+2007-06-18,13639.00,13720.29,13560.15,13612.98,2480240000,13612.98
+2007-06-15,13556.65,13741.18,13556.65,13639.48,3406030000,13639.48
+2007-06-14,13482.43,13622.66,13444.07,13553.73,2813630000,13553.73
+2007-06-13,13287.62,13502.76,13287.62,13482.35,3077930000,13482.35
+2007-06-12,13424.39,13474.12,13264.05,13295.01,3056200000,13295.01
+2007-06-11,13423.74,13519.88,13335.16,13424.96,2525280000,13424.96
+2007-06-08,13267.14,13445.19,13207.73,13424.39,2993460000,13424.39
+2007-06-07,13463.48,13517.85,13236.34,13266.73,3538470000,13266.73
+2007-06-06,13590.66,13606.75,13403.10,13465.67,2964190000,13465.67
+2007-06-05,13673.19,13689.40,13523.70,13595.46,2939450000,13595.46
+2007-06-04,13667.21,13723.37,13575.14,13676.32,2738930000,13676.32
+2007-06-01,13628.69,13756.69,13562.54,13668.11,2927020000,13668.11
+2007-05-31,13633.00,13718.82,13564.49,13627.64,3335530000,13627.64
+2007-05-30,13517.89,13650.64,13403.26,13633.08,2980210000,13633.08
+2007-05-29,13507.28,13603.26,13428.86,13521.34,2571790000,13521.34
+2007-05-25,13441.94,13571.48,13410.00,13507.28,2316250000,13507.28
+2007-05-24,13522.60,13645.52,13391.56,13441.13,3365530000,13441.13
+2007-05-23,13540.84,13648.69,13476.72,13525.65,3084260000,13525.65
+2007-05-22,13544.99,13632.03,13466.57,13539.95,2860500000,13539.95
+2007-05-21,13556.53,13636.98,13473.31,13542.88,3465360000,13542.88
+2007-05-18,13476.40,13611.95,13454.46,13556.53,2959050000,13556.53
+2007-05-17,13486.96,13558.24,13384.89,13476.72,2868640000,13476.72
+2007-05-16,13374.13,13526.54,13325.49,13487.53,2915350000,13487.53
+2007-05-15,13346.05,13518.33,13302.65,13383.84,3071020000,13383.84
+2007-05-14,13325.81,13432.84,13265.02,13346.78,2776130000,13346.78
+2007-05-11,13212.20,13373.35,13192.62,13326.22,2720780000,13326.22
+2007-05-10,13359.05,13376.20,13161.08,13215.13,3031240000,13215.13
+2007-05-09,13300.62,13410.17,13229.92,13362.87,2935550000,13362.87
+2007-05-08,13309.40,13359.05,13192.45,13309.07,2795720000,13309.07
+2007-05-07,13264.13,13385.06,13218.87,13312.97,2545090000,13312.97
+2007-05-04,13243.08,13340.60,13176.61,13264.62,2761930000,13264.62
+2007-05-03,13206.65,13306.55,13131.42,13241.38,3007970000,13241.38
+2007-05-02,13133.94,13291.60,13105.34,13211.88,3189800000,13211.88
+2007-05-01,13062.75,13188.96,12993.02,13136.14,3400350000,13136.14
+2007-04-30,13120.21,13226.99,13003.91,13062.91,3093420000,13062.91
+2007-04-27,13104.04,13195.05,13002.37,13120.94,2732810000,13120.94
+2007-04-26,13088.84,13197.49,13016.43,13105.50,3211800000,13105.50
+2007-04-25,12951.42,13142.31,12929.80,13089.89,3252590000,13089.89
+2007-04-24,12919.64,13033.66,12845.12,12953.94,3119750000,12953.94
+2007-04-23,12961.49,13029.59,12867.96,12919.40,2575020000,12919.40
+2007-04-20,12811.15,13035.77,12811.15,12961.98,3329940000,12961.98
+2007-04-19,12799.77,12889.17,12677.47,12808.63,2913610000,12808.63
+2007-04-18,12771.08,12871.21,12691.20,12803.84,2971330000,12803.84
+2007-04-17,12719.56,12837.40,12669.50,12773.04,2920570000,12773.04
+2007-04-16,12611.64,12770.60,12596.36,12720.46,2870140000,12720.46
+2007-04-13,12551.91,12654.47,12504.04,12612.13,2690020000,12612.13
+2007-04-12,12483.64,12580.92,12407.50,12552.96,2770570000,12552.96
+2007-04-11,12573.12,12618.63,12432.53,12484.62,2950190000,12484.62
+2007-04-10,12568.49,12641.87,12496.48,12573.85,2510110000,12573.85
+2007-04-09,12562.64,12641.22,12505.83,12569.14,2349410000,12569.14
+2007-04-05,12505.73,12573.02,12501.25,12560.83,2357230000,12560.83
+2007-04-04,12511.36,12591.81,12444.55,12530.05,2616320000,12530.05
+2007-04-03,12431.28,12534.49,12378.94,12510.93,2921760000,12510.93
+2007-04-02,12354.52,12450.81,12284.54,12382.30,2875880000,12382.30
+2007-03-30,12348.91,12442.40,12237.87,12354.35,2903960000,12354.35
+2007-03-29,12301.48,12424.77,12251.89,12348.75,2854710000,12348.75
+2007-03-28,12396.49,12415.56,12234.50,12300.36,3000440000,12300.36
+2007-03-27,12468.59,12484.54,12336.89,12397.29,2673040000,12397.29
+2007-03-26,12480.37,12526.27,12339.53,12469.07,2754660000,12469.07
+2007-03-23,12460.50,12550.07,12396.89,12481.01,2619020000,12481.01
+2007-03-22,12446.72,12524.03,12364.21,12461.14,3129970000,12461.14
+2007-03-21,12288.98,12489.02,12220.49,12447.52,3184770000,12447.52
+2007-03-20,12226.81,12324.31,12172.66,12288.10,2795940000,12288.10
+2007-03-19,12110.41,12273.52,12110.41,12226.17,2777180000,12226.17
+2007-03-16,12160.16,12226.01,12053.05,12110.41,3393640000,12110.41
+2007-03-15,12133.16,12228.42,12060.10,12159.68,2821900000,12159.68
+2007-03-14,12074.52,12187.88,11926.79,12133.40,3758350000,12133.40
+2007-03-13,12307.49,12319.66,12049.85,12075.96,3485570000,12075.96
+2007-03-12,12275.68,12385.44,12205.58,12318.62,2664000000,12318.62
+2007-03-09,12262.06,12379.51,12200.62,12276.32,2623050000,12276.32
+2007-03-08,12193.33,12355.47,12183.79,12260.70,3014850000,12260.70
+2007-03-07,12204.46,12315.18,12122.11,12192.45,3141350000,12192.45
+2007-03-06,12051.17,12252.61,12051.17,12207.59,3358160000,12207.59
+2007-03-05,12111.61,12220.16,11973.58,12050.41,3480520000,12050.41
+2007-03-02,12233.78,12293.15,12064.91,12114.10,3312260000,12114.10
+2007-03-01,12265.59,12338.89,11996.17,12234.34,3874910000,12234.34
+2007-02-28,12214.92,12396.81,12122.03,12268.63,3925250000,12268.63
+2007-02-27,12628.90,12628.90,12078.85,12216.24,4065230000,12216.24
+2007-02-26,12647.88,12746.34,12562.72,12632.26,2822170000,12632.26
+2007-02-23,12679.89,12726.79,12578.51,12647.48,2579950000,12647.48
+2007-02-22,12735.77,12792.97,12621.93,12686.02,1950770000,12686.02
+2007-02-21,12782.87,12813.88,12662.79,12738.41,2606980000,12738.41
+2007-02-20,12766.85,12845.76,12675.04,12786.64,2337860000,12786.64
+2007-02-16,12764.13,12829.42,12685.86,12767.57,2399450000,12767.57
+2007-02-15,12741.70,12828.38,12681.85,12765.01,2490920000,12765.01
+2007-02-14,12651.29,12793.29,12623.21,12741.86,2699290000,12741.86
+2007-02-13,12549.19,12702.36,12549.19,12654.85,2652150000,12654.85
+2007-02-12,12595.90,12605.11,12536.77,12552.55,2395680000,12552.55
+2007-02-09,12638.03,12725.59,12518.58,12580.83,2951810000,12580.83
+2007-02-08,12639.16,12666.88,12576.59,12637.63,2816180000,12637.63
+2007-02-07,12656.86,12748.99,12589.56,12666.87,2618820000,12666.87
+2007-02-06,12661.66,12738.41,12586.44,12666.31,2608710000,12666.31
+2007-02-05,12641.08,12681.06,12630.50,12661.74,2439430000,12661.74
+2007-02-02,12673.84,12740.65,12582.99,12653.49,2569450000,12653.49
+2007-02-01,12617.20,12741.30,12563.85,12673.68,2914890000,12673.68
+2007-01-31,12520.03,12685.54,12461.30,12621.69,2976690000,12621.69
+2007-01-30,12484.70,12538.06,12463.07,12523.31,2706250000,12523.31
+2007-01-29,12487.10,12599.74,12422.93,12490.78,2730480000,12490.78
+2007-01-26,12503.28,12582.67,12391.44,12487.02,2626620000,12487.02
+2007-01-25,12621.77,12670.48,12461.54,12502.56,2994330000,12502.56
+2007-01-24,12534.37,12659.42,12489.98,12621.77,2783180000,12621.77
+2007-01-23,12467.96,12553.44,12467.96,12533.80,2975070000,12533.80
+2007-01-22,12566.33,12619.04,12389.68,12477.16,2540120000,12477.16
+2007-01-19,12567.93,12649.89,12462.50,12565.53,2777480000,12565.53
+2007-01-18,12575.06,12674.16,12487.90,12567.93,2822430000,12567.93
+2007-01-17,12563.53,12613.28,12550.95,12577.15,2690270000,12577.15
+2007-01-16,12555.84,12638.27,12489.90,12582.59,2599530000,12582.59
+2007-01-12,12514.66,12616.08,12432.30,12556.08,2686480000,12556.08
+2007-01-11,12442.96,12586.12,12413.72,12514.98,2857870000,12514.98
+2007-01-10,12417.00,12487.18,12313.01,12442.16,2764660000,12442.16
+2007-01-09,12424.77,12516.66,12337.85,12416.60,3038380000,12416.60
+2007-01-08,12393.93,12445.37,12337.53,12423.49,2763340000,12423.49
+2007-01-05,12480.05,12504.40,12326.79,12398.01,2919400000,12398.01
+2007-01-04,12467.32,12510.26,12405.47,12480.69,3004460000,12480.69
+2007-01-03,12459.54,12630.34,12373.82,12474.52,3429160000,12474.52
+2006-12-29,12500.48,12560.16,12423.81,12463.15,1678200000,12463.15
+2006-12-28,12510.57,12566.17,12440.23,12501.52,1508570000,12501.52
+2006-12-27,12463.46,12518.34,12407.62,12510.57,1667370000,12510.57
+2006-12-26,12341.94,12439.19,12301.40,12407.63,1310310000,12407.63
+2006-12-22,12407.87,12417.96,12341.77,12343.21,1647590000,12343.21
+2006-12-21,12461.62,12526.59,12369.97,12421.25,2322410000,12421.25
+2006-12-20,12471.32,12549.35,12393.45,12463.87,2387630000,12463.87
+2006-12-19,12439.51,12517.78,12348.50,12471.32,2717060000,12471.32
+2006-12-18,12446.24,12545.74,12372.30,12441.27,2568140000,12441.27
+2006-12-15,12417.96,12536.37,12377.35,12445.52,3229580000,12445.52
+2006-12-14,12317.50,12472.76,12271.44,12416.76,2729700000,12416.76
+2006-12-13,12312.71,12411.55,12263.19,12317.50,2552260000,12317.50
+2006-12-12,12328.24,12396.01,12222.65,12315.58,2738170000,12315.58
+2006-12-11,12306.21,12399.54,12245.32,12328.48,2289900000,12328.48
+2006-12-08,12256.21,12332.16,12243.31,12307.48,2440460000,12307.48
+2006-12-07,12310.13,12396.33,12233.06,12278.41,2743150000,12278.41
+2006-12-06,12328.72,12390.88,12239.95,12309.25,2725280000,12309.25
+2006-12-05,12283.69,12398.57,12218.24,12331.60,2755700000,12331.60
+2006-12-04,12195.57,12349.87,12149.27,12283.85,2766320000,12283.85
+2006-12-01,12220.97,12289.30,12070.52,12194.13,2800980000,12194.13
+2006-11-30,12226.73,12317.10,12118.42,12221.93,4006230000,12221.93
+2006-11-29,12134.40,12283.05,12119.70,12226.73,2790970000,12226.73
+2006-11-28,12095.27,12148.78,12073.40,12136.44,2639750000,12136.44
+2006-11-27,12279.13,12303.32,12079.01,12121.71,2711210000,12121.71
+2006-11-24,12321.71,12340.89,12219.28,12280.17,832550000,12280.17
+2006-11-22,12321.91,12403.54,12238.43,12326.95,2237710000,12326.95
+2006-11-21,12312.13,12409.31,12233.94,12321.59,2597940000,12321.59
+2006-11-20,12340.71,12400.10,12257.34,12316.54,2546710000,12316.54
+2006-11-17,12293.49,12342.55,12278.20,12342.55,2726100000,12342.55
+2006-11-16,12250.05,12375.37,12204.00,12305.82,2835730000,12305.82
+2006-11-15,12214.37,12326.07,12156.37,12251.71,2831130000,12251.71
+2006-11-14,12132.44,12261.15,12051.68,12218.01,3027480000,12218.01
+2006-11-13,12084.89,12164.22,12084.89,12131.88,2386340000,12131.88
+2006-11-10,12102.74,12173.08,12074.01,12108.43,2290200000,12108.43
+2006-11-09,12174.70,12236.10,12039.59,12103.30,3012050000,12103.30
+2006-11-08,12147.38,12233.54,12051.60,12176.54,2814820000,12176.54
+2006-11-07,12104.75,12239.94,12065.20,12156.77,2636390000,12156.77
+2006-11-06,11985.16,12146.45,11973.23,12105.55,2533550000,12105.55
+2006-11-03,12018.30,12095.30,11928.97,11986.04,2419730000,11986.04
+2006-11-02,12023.98,12070.25,11938.89,12018.54,2646180000,12018.54
+2006-11-01,12080.25,12160.70,11972.99,12031.02,2821160000,12031.02
+2006-10-31,12086.18,12160.46,11986.84,12080.73,2803030000,12080.73
+2006-10-30,12074.01,12117.07,12050.23,12086.49,2770440000,12086.49
+2006-10-27,12164.78,12202.72,12024.78,12090.26,2458450000,12090.26
+2006-10-26,12134.84,12236.10,12037.99,12163.66,2793350000,12163.66
+2006-10-25,12127.24,12212.16,12017.66,12134.68,2953540000,12134.68
+2006-10-24,12116.51,12204.80,12028.14,12127.88,2876890000,12127.88
+2006-10-23,12001.33,12177.35,11940.41,12116.91,2480430000,12116.91
+2006-10-20,12013.01,12087.38,11881.34,12002.37,2526410000,12002.37
+2006-10-19,11988.92,12082.33,11911.44,12011.73,2619830000,12011.73
+2006-10-18,11947.62,12108.91,11900.79,11992.68,2658840000,11992.68
+2006-10-17,11977.40,12024.54,11849.16,11950.02,2519620000,11950.02
+2006-10-16,11957.70,11996.92,11945.70,11980.59,2305920000,11980.59
+2006-10-13,11947.22,12009.97,11862.29,11960.51,2482920000,11960.51
+2006-10-12,11896.63,11959.14,11852.12,11947.70,2514350000,11947.70
+2006-10-11,11865.49,11907.60,11762.72,11852.13,2521000000,11852.13
+2006-10-10,11857.73,11930.33,11778.09,11867.17,2376140000,11867.17
+2006-10-09,11849.56,11923.53,11759.36,11857.81,1935170000,11857.81
+2006-10-06,11865.49,11921.04,11743.35,11850.21,2523000000,11850.21
+2006-10-05,11832.51,11869.33,11821.55,11866.69,2817240000,11866.69
+2006-10-04,11722.94,11879.18,11654.02,11850.61,3019880000,11850.61
+2006-10-03,11670.11,11794.41,11608.23,11727.34,2682690000,11727.34
+2006-10-02,11678.99,11773.60,11608.79,11670.35,2154480000,11670.35
+2006-09-29,11718.05,11782.49,11642.17,11679.07,2273430000,11679.07
+2006-09-28,11689.40,11775.36,11625.92,11718.45,2397820000,11718.45
+2006-09-27,11670.19,11775.60,11595.75,11689.24,2749190000,11689.24
+2006-09-26,11575.73,11723.74,11517.54,11669.39,2673350000,11669.39
+2006-09-25,11536.67,11616.23,11486.00,11575.81,2710240000,11575.81
+2006-09-22,11532.91,11588.62,11423.57,11508.10,2162880000,11508.10
+2006-09-21,11611.67,11677.39,11471.76,11533.23,2627440000,11533.23
+2006-09-20,11542.28,11680.19,11514.50,11613.19,2543070000,11613.19
+2006-09-19,11554.60,11605.67,11450.30,11540.91,2390850000,11540.91
+2006-09-18,11538.35,11588.22,11528.43,11555.00,2325080000,11555.00
+2006-09-15,11528.75,11661.38,11504.57,11560.77,3198030000,11560.77
+2006-09-14,11508.82,11548.84,11495.77,11527.39,2351220000,11527.39
+2006-09-13,11487.69,11605.59,11423.73,11543.32,2597220000,11543.32
+2006-09-12,11412.52,11512.74,11396.83,11498.09,2791580000,11498.09
+2006-09-11,11389.87,11468.88,11295.90,11396.84,2506430000,11396.84
+2006-09-08,11332.24,11448.30,11295.18,11392.11,2132890000,11392.11
+2006-09-07,11405.16,11443.66,11273.89,11331.44,2325850000,11331.44
+2006-09-06,11421.33,11469.27,11395.15,11406.20,2329870000,11406.20
+2006-09-05,11461.83,11533.87,11385.95,11469.28,2114480000,11469.28
+2006-09-01,11427.41,11476.40,11381.14,11464.15,1800520000,11464.15
+2006-08-31,11383.47,11451.03,11326.80,11381.15,1974540000,11381.15
+2006-08-30,11365.98,11452.95,11309.99,11382.91,2060690000,11382.91
+2006-08-29,11352.65,11432.38,11255.88,11369.94,2093720000,11369.94
+2006-08-28,11285.33,11411.24,11240.91,11352.01,1834920000,11352.01
+2006-08-25,11301.22,11350.09,11218.66,11284.05,1667580000,11284.05
+2006-08-24,11297.82,11386.59,11232.83,11304.46,1930320000,11304.46
+2006-08-23,11337.12,11394.75,11238.67,11297.90,1893670000,11297.90
+2006-08-22,11344.41,11426.13,11279.25,11339.84,1908740000,11339.84
+2006-08-21,11353.29,11381.46,11322.31,11345.04,1759240000,11345.04
+2006-08-18,11333.76,11437.66,11273.49,11381.47,2033910000,11381.47
+2006-08-17,11321.19,11372.34,11298.54,11334.96,2458340000,11334.96
+2006-08-16,11224.91,11373.78,11207.85,11327.12,2554570000,11327.12
+2006-08-15,11098.03,11271.25,11098.03,11230.26,2334100000,11230.26
+2006-08-14,11089.07,11242.83,11049.68,11097.87,2118020000,11097.87
+2006-08-11,11103.55,11121.40,11042.88,11088.02,2004540000,11088.02
+2006-08-10,11073.14,11176.47,10998.06,11124.37,2402190000,11124.37
+2006-08-09,11168.47,11296.22,11044.64,11076.18,2555180000,11076.18
+2006-08-08,11218.18,11319.51,11117.80,11173.59,2457840000,11173.59
+2006-08-07,11239.47,11294.14,11143.02,11219.38,2045660000,11219.38
+2006-08-04,11244.59,11367.94,11165.11,11240.35,2530970000,11240.35
+2006-08-03,11195.28,11304.78,11101.55,11242.59,2728440000,11242.59
+2006-08-02,11167.91,11228.98,11124.52,11199.92,2610750000,11199.92
+2006-08-01,11184.80,11210.65,11035.92,11125.73,2527690000,11125.73
+2006-07-31,11218.90,11265.80,11115.24,11185.68,2461300000,11185.68
+2006-07-28,11102.11,11282.05,11102.11,11219.70,2480420000,11219.70
+2006-07-27,11104.19,11245.47,11040.80,11100.43,2776710000,11100.43
+2006-07-26,11102.91,11208.09,10987.41,11102.51,2667710000,11102.51
+2006-07-25,11037.59,11133.73,11000.05,11103.71,2563930000,11103.71
+2006-07-24,10868.70,11096.35,10868.70,11051.05,2312720000,11051.05
+2006-07-21,10937.94,10995.73,10778.58,10868.38,2704090000,10868.38
+2006-07-20,11007.26,11098.75,10884.47,10928.10,2345580000,10928.10
+2006-07-19,10854.22,11038.16,10796.74,11011.42,2701980000,11011.42
+2006-07-18,10745.84,10867.02,10658.35,10799.23,2481750000,10799.23
+2006-07-17,10739.35,10858.22,10668.35,10747.36,2146410000,10747.36
+2006-07-14,10846.53,10892.64,10664.43,10739.35,2467120000,10739.35
+2006-07-13,11012.62,11015.19,10790.82,10846.29,2545760000,10846.29
+2006-07-12,11133.97,11181.12,10973.37,11013.18,2250450000,11013.18
+2006-07-11,11102.59,11186.32,10987.33,11134.77,2310850000,11134.77
+2006-07-10,11130.53,11174.47,11090.10,11103.55,1854590000,11103.55
+2006-07-07,11224.18,11227.62,11040.32,11090.67,1988150000,11090.67
+2006-07-06,11147.12,11301.58,11117.16,11225.30,2009160000,11225.30
+2006-07-05,11225.06,11239.47,11083.94,11151.82,2165070000,11151.82
+2006-07-03,11149.34,11277.09,11146.06,11228.02,1114470000,11228.02
+2006-06-30,11190.80,11288.86,11100.11,11150.22,3049560000,11150.22
+2006-06-29,10974.36,11225.06,10974.36,11190.80,2621250000,11190.80
+2006-06-28,10925.30,11026.07,10869.02,10973.56,2085490000,10973.56
+2006-06-27,11048.24,11064.09,10920.73,10924.74,2203130000,10924.74
+2006-06-26,10990.29,11089.07,10937.06,11045.28,1878580000,11045.28
+2006-06-23,11019.19,11098.67,10932.82,10989.09,2017270000,10989.09
+2006-06-22,11077.78,11127.73,10954.83,11019.11,2148180000,11019.11
+2006-06-21,10975.24,11165.91,10952.43,11079.46,2361230000,11079.46
+2006-06-20,10942.03,11066.73,10895.28,10974.84,2232950000,10974.84
+2006-06-19,11014.87,11098.99,10886.63,10942.11,2517200000,10942.11
+2006-06-16,11009.10,11045.04,10984.29,11014.54,2783390000,11014.54
+2006-06-15,10817.48,11049.85,10788.34,11015.19,2775480000,11015.19
+2006-06-14,10713.10,10816.99,10699.25,10816.91,2667990000,10816.91
+2006-06-13,10783.14,10893.04,10653.23,10706.14,3215770000,10706.14
+2006-06-12,10892.00,10969.32,10767.61,10792.58,2247010000,10792.58
+2006-06-09,10939.14,11015.67,10842.89,10891.92,2214000000,10891.92
+2006-06-08,10929.70,11032.15,10726.15,10938.82,3543790000,10938.82
+2006-06-07,11002.06,11107.48,10897.76,10930.90,2644170000,10930.90
+2006-06-06,11048.24,11140.45,10890.24,11002.14,2697650000,11002.14
+2006-06-05,11247.55,11259.96,11025.75,11048.72,2313470000,11048.72
+2006-06-02,11260.52,11329.28,11158.06,11247.87,2295540000,11247.87
+2006-06-01,11169.03,11290.86,11115.40,11260.28,2360160000,11260.28
+2006-05-31,11091.15,11225.78,11050.40,11168.31,2692160000,11168.31
+2006-05-30,11277.25,11277.25,11071.70,11094.43,2176190000,11094.43
+2006-05-26,11211.69,11329.36,11177.43,11278.61,1814020000,11278.61
+2006-05-25,11114.96,11258.12,11089.55,11211.05,2372730000,11211.05
+2006-05-24,11100.11,11241.15,10980.29,11117.32,2999030000,11117.32
+2006-05-23,11126.29,11254.68,11068.49,11098.35,2605250000,11098.35
+2006-05-22,11092.90,11175.03,11040.16,11125.32,2773010000,11125.32
+2006-05-19,11124.37,11254.60,11009.98,11144.06,2982300000,11144.06
+2006-05-18,11206.17,11301.26,11096.35,11128.29,2537490000,11128.29
+2006-05-17,11410.13,11412.28,11139.17,11205.61,2830200000,11205.61
+2006-05-16,11428.21,11520.42,11334.64,11419.89,2386210000,11419.89
+2006-05-15,11380.43,11485.61,11273.65,11428.77,2505660000,11428.77
+2006-05-12,11500.01,11551.40,11336.96,11380.99,2567970000,11380.99
+2006-05-11,11639.29,11660.58,11449.74,11500.73,2531520000,11500.73
+2006-05-10,11630.48,11709.09,11545.64,11642.65,2268550000,11642.65
+2006-05-09,11584.62,11684.28,11535.71,11639.77,2157290000,11639.77
+2006-05-08,11576.37,11665.14,11504.09,11584.54,2151300000,11584.54
+2006-05-05,11440.62,11616.16,11440.62,11577.74,2294760000,11577.74
+2006-05-04,11401.80,11512.18,11366.82,11438.86,2431450000,11438.86
+2006-05-03,11414.69,11472.96,11308.55,11400.28,2395230000,11400.28
+2006-05-02,11372.74,11427.43,11343.28,11416.44,2403470000,11416.44
+2006-05-01,11367.78,11476.96,11304.30,11343.29,2437040000,11343.29
+2006-04-28,11358.33,11462.95,11278.13,11367.14,2419920000,11367.14
+2006-04-27,11349.53,11465.75,11220.74,11382.51,2772010000,11382.51
+2006-04-26,11283.25,11428.77,11256.12,11354.49,2502690000,11354.49
+2006-04-25,11336.56,11401.32,11213.05,11283.25,2366380000,11283.25
+2006-04-24,11346.81,11420.05,11246.35,11336.32,2117330000,11336.32
+2006-04-21,11343.45,11468.16,11272.61,11347.45,2392630000,11347.45
+2006-04-20,11278.53,11429.25,11221.30,11342.89,2512920000,11342.89
+2006-04-19,11265.40,11379.79,11181.84,11278.77,2447310000,11278.77
+2006-04-18,11074.58,11302.30,11064.01,11268.77,2595440000,11268.77
+2006-04-17,11137.33,11203.13,11017.43,11073.78,1794650000,11073.78
+2006-04-13,11130.13,11210.73,11053.29,11137.65,1891940000,11137.65
+2006-04-12,11089.47,11194.00,11052.17,11129.97,1938100000,11129.97
+2006-04-11,11141.33,11220.98,11017.99,11089.63,2232880000,11089.63
+2006-04-10,11119.88,11211.37,11083.06,11141.33,1898320000,11141.33
+2006-04-07,11228.10,11268.92,11108.75,11120.04,2082470000,11120.04
+2006-04-06,11233.01,11294.30,11137.57,11216.50,2281680000,11216.50
+2006-04-05,11203.21,11290.30,11141.82,11239.55,2420020000,11239.55
+2006-04-04,11142.54,11269.17,11094.03,11203.85,2147660000,11203.85
+2006-04-03,11113.00,11287.02,11101.07,11144.94,2494080000,11144.94
+2006-03-31,11151.34,11229.47,11069.78,11109.32,2236710000,11109.32
+2006-03-30,11195.36,11259.08,11118.12,11150.70,2294560000,11150.70
+2006-03-29,11154.94,11283.97,11117.48,11215.70,2143540000,11215.70
+2006-03-28,11250.11,11312.31,11132.05,11154.54,2148580000,11154.54
+2006-03-27,11280.13,11314.96,11194.07,11250.11,2029700000,11250.11
+2006-03-24,11270.61,11353.21,11197.21,11279.97,2326070000,11279.97
+2006-03-23,11317.35,11363.46,11207.85,11270.29,1980940000,11270.29
+2006-03-22,11234.51,11358.01,11200.22,11317.43,2039810000,11317.43
+2006-03-21,11275.89,11364.34,11188.56,11235.47,2147370000,11235.47
+2006-03-20,11278.93,11350.73,11208.33,11274.53,1976830000,11274.53
+2006-03-17,11294.94,11294.94,11253.23,11279.65,2549620000,11279.65
+2006-03-16,11210.97,11324.80,11176.07,11253.24,2292180000,11253.24
+2006-03-15,11149.76,11258.28,11097.23,11209.77,2293000000,11209.77
+2006-03-14,11076.02,11190.96,11030.23,11151.34,2165270000,11151.34
+2006-03-13,11067.61,11157.82,11019.75,11076.02,2070330000,11076.02
+2006-03-10,10972.92,11125.41,10948.43,11076.34,2123450000,11076.34
+2006-03-09,11005.66,11093.39,10923.86,10972.28,2140110000,10972.28
+2006-03-08,10977.08,11065.61,10885.99,11005.74,2442870000,11005.74
+2006-03-07,10957.31,11032.31,10885.35,10980.69,2268050000,10980.69
+2006-03-06,11022.47,11084.66,10899.76,10958.59,2280190000,10958.59
+2006-03-03,11024.23,11125.01,10942.99,11021.59,2152950000,11021.59
+2006-03-02,11052.57,11090.91,10951.71,11025.51,2494590000,11025.51
+2006-03-01,10993.25,11115.80,10960.60,11053.53,2308320000,11053.53
+2006-02-28,11096.75,11115.24,10947.07,10993.41,2370860000,10993.41
+2006-02-27,11062.81,11180.48,11038.72,11097.55,1975320000,11097.55
+2006-02-24,11068.33,11085.38,11010.46,11061.85,1933010000,11061.85
+2006-02-23,11133.52,11167.83,11017.27,11069.22,2144210000,11069.22
+2006-02-22,11086.98,11159.02,11064.25,11137.17,2222380000,11137.17
+2006-02-21,11115.48,11182.68,11011.18,11069.06,2104320000,11069.06
+2006-02-17,11119.56,11178.80,11035.44,11115.32,2128260000,11115.32
+2006-02-16,11059.05,11154.14,10997.66,11120.68,2251490000,11120.68
+2006-02-15,11025.67,11115.56,10940.18,11058.97,2317590000,11058.97
+2006-02-14,10890.72,11071.54,10873.62,11028.39,2437940000,11028.39
+2006-02-13,10915.21,10982.93,10824.60,10892.32,1850080000,10892.32
+2006-02-10,10883.51,10972.76,10787.62,10919.05,2290050000,10919.05
+2006-02-09,10859.42,11003.50,10800.91,10883.35,2441920000,10883.35
+2006-02-08,10742.16,10897.44,10712.30,10858.62,2456860000,10858.62
+2006-02-07,10796.42,10874.79,10691.97,10749.76,2366370000,10749.76
+2006-02-06,10793.30,10868.62,10725.91,10798.27,2132360000,10798.27
+2006-02-03,10849.57,10905.28,10725.35,10793.62,2282210000,10793.62
+2006-02-02,10950.11,10987.73,10800.35,10851.98,2565300000,10851.98
+2006-02-01,10862.14,11001.82,10815.39,10953.95,2589410000,10953.95
+2006-01-31,10900.40,10970.28,10807.55,10864.86,2708310000,10864.86
+2006-01-30,10913.13,10930.34,10887.67,10899.92,2282730000,10899.92
+2006-01-27,10815.32,10988.29,10766.01,10907.21,2623620000,10907.21
+2006-01-26,10768.17,10827.96,10709.73,10809.47,2856780000,10809.47
+2006-01-25,10713.26,10832.93,10615.20,10709.74,2617060000,10709.74
+2006-01-24,10690.21,10804.75,10624.49,10712.22,2608720000,10712.22
+2006-01-23,10668.75,10783.70,10607.36,10688.77,2256070000,10688.77
+2006-01-20,10880.71,10890.08,10637.21,10667.39,2845810000,10667.39
+2006-01-19,10855.18,10965.00,10796.66,10880.71,2444020000,10880.71
+2006-01-18,10890.08,10934.90,10778.33,10854.86,2233200000,10854.86
+2006-01-17,10957.55,10977.01,10841.17,10896.32,2179970000,10896.32
+2006-01-13,10961.48,11033.04,10888.88,10959.87,2206510000,10959.87
+2006-01-12,11043.12,11070.10,10918.09,10962.36,2318350000,10962.36
+2006-01-11,11011.66,11099.15,10939.86,11043.44,2406130000,11043.44
+2006-01-10,11010.46,11054.49,10902.96,11011.58,2373080000,11011.58
+2006-01-09,10959.47,11053.93,10906.33,11011.90,2301490000,11011.90
+2006-01-06,10875.45,11005.98,10846.21,10959.31,2446560000,10959.31
+2006-01-05,10880.39,10951.39,10797.55,10882.15,2433340000,10882.15
+2006-01-04,10843.97,10946.27,10772.89,10880.15,2515330000,10880.15
+2006-01-03,10718.30,10888.40,10650.18,10847.41,2554570000,10847.41
+2005-12-30,10783.86,10801.87,10675.64,10717.50,1443500000,10717.50
+2005-12-29,10795.70,10870.71,10747.76,10784.82,1382540000,10784.82
+2005-12-28,10778.25,10858.07,10750.40,10796.26,1422360000,10796.26
+2005-12-27,10883.75,10956.99,10754.16,10777.77,1540470000,10777.77
+2005-12-23,10901.68,10904.40,10869.98,10883.27,1285810000,10883.27
+2005-12-22,10831.56,10928.34,10785.93,10889.44,1888500000,10889.44
+2005-12-21,10805.63,10933.70,10776.01,10833.73,2065170000,10833.73
+2005-12-20,10836.93,10905.28,10754.56,10805.55,1996690000,10805.55
+2005-12-19,10875.51,10970.04,10781.70,10836.53,2208810000,10836.53
+2005-12-16,10881.67,10978.21,10830.84,10875.59,2584190000,10875.59
+2005-12-15,10883.43,10985.01,10803.55,10881.67,2180590000,10881.67
+2005-12-14,10821.32,10953.07,10786.34,10883.51,2145520000,10883.51
+2005-12-13,10765.69,10902.64,10694.29,10823.72,2390020000,10823.72
+2005-12-12,10778.66,10857.02,10707.18,10767.77,1876550000,10767.77
+2005-12-09,10751.76,10845.33,10694.05,10778.58,1896290000,10778.58
+2005-12-08,10808.43,10871.11,10705.17,10755.12,2178300000,10755.12
+2005-12-07,10856.86,10916.89,10737.27,10810.91,2093830000,10810.91
+2005-12-06,10835.41,10956.13,10809.15,10856.86,2110740000,10856.86
+2005-12-05,10876.95,10923.37,10766.57,10835.01,2325840000,10835.01
+2005-12-02,10912.01,10952.83,10818.36,10877.51,2125580000,10877.51
+2005-12-01,10806.03,10969.97,10806.03,10912.57,2614830000,10912.57
+2005-11-30,10883.91,10959.80,10789.38,10805.87,2374690000,10805.87
+2005-11-29,10888.48,10994.85,10850.29,10888.16,2268340000,10888.16
+2005-11-28,10932.74,10992.39,10839.37,10890.72,2016900000,10890.72
+2005-11-25,10915.13,10997.50,10883.55,10931.62,724940000,10931.62
+2005-11-23,10865.90,10950.59,10855.42,10916.09,1985400000,10916.09
+2005-11-22,10815.96,10907.77,10729.99,10871.43,2291420000,10871.43
+2005-11-21,10766.33,10871.11,10708.86,10820.28,2117350000,10820.28
+2005-11-18,10719.34,10865.58,10663.79,10766.33,2453290000,10766.33
+2005-11-17,10677.00,10778.50,10619.61,10720.22,2298040000,10720.22
+2005-11-16,10697.81,10710.78,10653.14,10674.76,2121580000,10674.76
+2005-11-15,10697.01,10783.62,10610.08,10686.44,2359370000,10686.44
+2005-11-14,10686.60,10756.88,10618.89,10697.17,1899780000,10697.17
+2005-11-11,10641.30,10725.99,10595.89,10686.04,1773140000,10686.04
+2005-11-10,10550.61,10655.22,10519.71,10640.10,2378460000,10640.10
+2005-11-09,10539.24,10637.78,10466.24,10546.21,2214460000,10546.21
+2005-11-08,10574.18,10606.80,10478.49,10539.72,1965050000,10539.72
+2005-11-07,10531.24,10632.34,10488.74,10586.23,1987580000,10586.23
+2005-11-04,10523.23,10593.51,10441.59,10530.76,2050510000,10530.76
+2005-11-03,10470.49,10613.84,10421.98,10522.59,2716630000,10522.59
+2005-11-02,10406.29,10527.32,10347.70,10472.73,2648090000,10472.73
+2005-11-01,10437.51,10510.03,10352.42,10406.77,2457850000,10406.77
+2005-10-31,10403.17,10539.16,10372.67,10440.07,2567470000,10440.07
+2005-10-28,10231.15,10433.51,10213.14,10402.77,2379400000,10402.77
+2005-10-27,10334.81,10348.66,10229.95,10229.95,2395370000,10229.95
+2005-10-26,10377.39,10474.18,10283.10,10344.98,2467750000,10344.98
+2005-10-25,10383.88,10457.52,10282.78,10377.87,2312470000,10377.87
+2005-10-24,10219.15,10411.57,10219.15,10385.00,2197790000,10385.00
+2005-10-21,10282.22,10354.02,10161.60,10215.22,2470920000,10215.22
+2005-10-20,10411.73,10483.21,10230.27,10281.10,2617250000,10281.10
+2005-10-19,10277.18,10444.15,10173.52,10414.13,2703590000,10414.13
+2005-10-18,10349.14,10412.85,10233.47,10285.26,2197010000,10285.26
+2005-10-17,10287.42,10419.58,10213.06,10348.10,2054570000,10348.10
+2005-10-14,10216.59,10327.21,10165.12,10287.34,2188940000,10287.34
+2005-10-13,10216.91,10309.20,10098.18,10216.59,2351150000,10216.59
+2005-10-12,10247.40,10308.23,10186.17,10216.90,2491280000,10216.90
+2005-10-11,10239.16,10361.15,10195.13,10253.17,2299040000,10253.17
+2005-10-10,10292.95,10378.19,10184.09,10238.76,2195990000,10238.76
+2005-10-07,10287.42,10387.48,10221.47,10292.31,2126080000,10292.31
+2005-10-06,10317.36,10425.98,10200.81,10287.10,2792030000,10287.10
+2005-10-05,10434.81,10477.21,10299.27,10317.36,2546780000,10317.36
+2005-10-04,10534.36,10618.41,10409.89,10441.11,2341420000,10441.11
+2005-10-03,10569.50,10637.00,10486.17,10535.48,2097490000,10535.48
+2005-09-30,10540.51,10569.81,10526.34,10568.70,2097520000,10568.70
+2005-09-29,10472.61,10583.43,10389.01,10552.78,2176120000,10552.78
+2005-09-28,10456.61,10560.02,10390.05,10473.08,2106980000,10473.08
+2005-09-27,10444.58,10534.31,10376.83,10456.21,1976270000,10456.21
+2005-09-26,10420.22,10544.98,10381.53,10443.63,2022220000,10443.63
+2005-09-23,10421.81,10494.42,10328.59,10419.59,1973020000,10419.59
+2005-09-22,10376.20,10489.64,10303.51,10422.05,2424720000,10422.05
+2005-09-21,10484.23,10512.02,10335.28,10378.03,2548150000,10378.03
+2005-09-20,10558.19,10642.26,10453.98,10481.52,2319250000,10481.52
+2005-09-19,10641.87,10656.75,10497.29,10557.63,2076540000,10557.63
+2005-09-16,10560.50,10696.24,10539.64,10641.94,3152470000,10641.94
+2005-09-15,10545.85,10627.85,10488.05,10558.75,2079340000,10558.75
+2005-09-14,10545.85,10627.85,10488.05,10558.75,1986750000,10558.75
+2005-09-13,10673.71,10701.57,10561.61,10597.44,2082360000,10597.44
+2005-09-12,10678.41,10743.77,10618.13,10682.94,1938050000,10682.94
+2005-09-09,10594.10,10727.53,10573.47,10678.56,1992560000,10678.56
+2005-09-08,10633.11,10670.60,10530.01,10595.93,1955380000,10595.93
+2005-09-07,10588.68,10667.10,10534.23,10633.50,2067700000,10633.50
+2005-09-06,10447.69,10621.96,10447.69,10589.24,1932090000,10589.24
+2005-09-02,10460.67,10536.14,10400.88,10447.37,1640160000,10447.37
+2005-09-01,10481.44,10557.47,10382.09,10459.63,2229860000,10459.63
+2005-08-31,10415.84,10484.55,10357.65,10481.60,2365510000,10481.60
+2005-08-30,10461.54,10476.83,10329.15,10412.82,1916470000,10412.82
+2005-08-29,10396.90,10508.35,10321.42,10463.05,1599450000,10463.05
+2005-08-26,10450.95,10480.01,10355.02,10397.29,1541090000,10397.29
+2005-08-25,10434.39,10506.60,10391.71,10450.63,1571110000,10450.63
+2005-08-24,10519.34,10584.30,10407.56,10434.87,1930800000,10434.87
+2005-08-23,10571.01,10604.29,10475.63,10519.58,1678620000,10519.58
+2005-08-22,10559.78,10669.81,10509.07,10569.89,1621330000,10569.89
+2005-08-19,10552.70,10656.59,10503.90,10559.23,1558790000,10559.23
+2005-08-18,10531.12,10592.34,10517.67,10554.92,1808170000,10554.92
+2005-08-17,10505.60,10625.86,10472.45,10550.71,1859150000,10550.71
+2005-08-16,10631.59,10650.14,10489.24,10513.45,1820410000,10513.45
+2005-08-15,10599.19,10687.72,10532.48,10634.38,1562880000,10634.38
+2005-08-12,10682.70,10688.68,10549.19,10600.30,1709300000,10600.30
+2005-08-11,10591.83,10721.56,10549.43,10685.89,1941560000,10685.89
+2005-08-10,10606.52,10746.87,10553.81,10594.41,2172320000,10594.41
+2005-08-09,10537.65,10662.80,10537.01,10615.67,1897520000,10615.67
+2005-08-08,10557.24,10635.65,10497.45,10536.93,1804140000,10536.93
+2005-08-05,10610.34,10643.46,10512.49,10558.03,1930280000,10558.03
+2005-08-04,10696.80,10709.77,10568.70,10610.10,1981220000,10610.10
+2005-08-03,10681.51,10735.17,10600.02,10697.59,1999980000,10697.59
+2005-08-02,10623.79,10729.60,10600.62,10683.74,2043120000,10683.74
+2005-08-01,10641.78,10713.51,10578.97,10623.15,1716870000,10623.15
+2005-07-29,10705.16,10754.60,10608.27,10640.91,1789600000,10640.91
+2005-07-28,10633.50,10745.68,10603.49,10705.55,2001680000,10705.55
+2005-07-27,10579.45,10689.31,10530.50,10637.09,1945800000,10637.09
+2005-07-26,10597.60,10667.90,10535.58,10579.77,1934180000,10579.77
+2005-07-25,10651.66,10709.69,10565.12,10596.48,1717580000,10596.48
+2005-07-22,10624.19,10702.21,10552.54,10651.18,1766990000,10651.18
+2005-07-21,10690.03,10735.33,10567.98,10627.77,2129840000,10627.77
+2005-07-20,10629.52,10726.81,10535.10,10689.15,2063340000,10689.15
+2005-07-19,10576.90,10718.69,10573.00,10646.56,2041280000,10646.56
+2005-07-18,10640.19,10681.99,10533.59,10574.99,1582100000,10574.99
+2005-07-15,10629.44,10698.07,10559.46,10640.83,1716400000,10640.83
+2005-07-14,10559.86,10696.96,10559.86,10628.88,2048710000,10628.88
+2005-07-13,10513.36,10596.98,10481.36,10557.39,1812500000,10557.39
+2005-07-12,10519.49,10583.02,10444.46,10513.89,1932010000,10513.89
+2005-07-11,10449.60,10570.67,10425.97,10519.72,1846300000,10519.72
+2005-07-08,10302.90,10486.50,10279.65,10449.14,1900810000,10449.14
+2005-07-07,10269.76,10337.84,10142.24,10302.29,1952440000,10302.29
+2005-07-06,10366.52,10413.23,10242.21,10270.68,1883470000,10270.68
+2005-07-05,10292.62,10388.91,10282.64,10371.80,1805820000,10371.80
+2005-07-01,10273.59,10380.78,10239.91,10303.44,1593820000,10303.44
+2005-06-30,10374.18,10458.19,10253.49,10274.97,2109490000,10274.97
+2005-06-29,10405.94,10472.46,10332.52,10374.48,1769280000,10374.48
+2005-06-28,10291.01,10434.18,10285.86,10405.63,1772410000,10405.63
+2005-06-27,10298.07,10377.55,10229.40,10290.78,1738620000,10290.78
+2005-06-24,10422.28,10452.82,10266.30,10297.83,2418800000,10297.83
+2005-06-23,10587.09,10617.39,10401.49,10421.44,2029920000,10421.44
+2005-06-22,10599.36,10676.24,10543.28,10587.93,1823250000,10587.93
+2005-06-21,10608.88,10670.56,10545.89,10599.67,1720700000,10599.67
+2005-06-20,10621.54,10656.66,10539.21,10609.10,1714530000,10609.10
+2005-06-17,10580.41,10710.38,10561.00,10623.07,2407370000,10623.07
+2005-06-16,10566.76,10632.20,10501.92,10578.65,1776040000,10578.65
+2005-06-15,10548.65,10628.67,10471.69,10566.37,1840440000,10566.37
+2005-06-14,10521.95,10617.01,10473.92,10547.57,1698150000,10547.57
+2005-06-13,10503.57,10611.10,10437.32,10522.56,1661350000,10522.56
+2005-06-10,10503.02,10581.13,10410.50,10512.63,1664180000,10512.63
+2005-06-09,10477.75,10556.90,10410.80,10503.02,1824120000,10503.02
+2005-06-08,10484.84,10575.81,10439.77,10476.86,1715490000,10476.86
+2005-06-07,10466.00,10603.15,10454.18,10483.07,1851370000,10483.07
+2005-06-06,10461.64,10519.79,10410.28,10467.03,1547120000,10467.03
+2005-06-03,10552.82,10572.18,10427.35,10460.97,1627520000,10460.97
+2005-06-02,10548.83,10590.07,10478.26,10553.49,1813790000,10553.49
+2005-06-01,10462.86,10616.15,10433.48,10549.87,1810100000,10549.87
+2005-05-31,10541.89,10574.92,10437.77,10467.48,1840680000,10467.48
+2005-05-27,10537.08,10579.94,10489.35,10542.55,1381430000,10542.55
+2005-05-26,10458.68,10581.87,10450.55,10537.60,1654110000,10537.60
+2005-05-25,10503.17,10516.17,10396.46,10457.80,1742180000,10457.80
+2005-05-24,10522.68,10550.24,10433.78,10503.68,1681000000,10503.68
+2005-05-23,10472.80,10589.92,10438.36,10523.56,1681170000,10523.56
+2005-05-20,10492.75,10535.24,10400.60,10471.91,1631750000,10471.91
+2005-05-19,10464.45,10538.71,10394.39,10493.19,1775860000,10493.19
+2005-05-18,10323.19,10518.17,10323.19,10464.45,2266320000,10464.45
+2005-05-17,10247.49,10357.30,10175.81,10331.88,1887260000,10331.88
+2005-05-16,10139.61,10274.39,10118.32,10252.29,1856860000,10252.29
+2005-05-13,10188.23,10268.85,10062.76,10140.12,2188590000,10140.12
+2005-05-12,10299.74,10357.37,10155.86,10189.48,1995290000,10189.48
+2005-05-11,10272.91,10355.31,10172.86,10300.25,1834970000,10300.25
+2005-05-10,10382.94,10389.96,10230.35,10281.11,1889660000,10281.11
+2005-05-09,10345.40,10416.56,10288.95,10384.34,1857020000,10384.34
+2005-05-06,10339.71,10454.40,10300.70,10345.40,1707200000,10345.40
+2005-05-05,10384.49,10447.08,10276.75,10340.38,1997100000,10340.38
+2005-05-04,10255.25,10412.20,10239.95,10384.64,2306480000,10384.64
+2005-05-03,10251.04,10327.37,10169.39,10256.95,2167020000,10256.95
+2005-05-02,10192.00,10309.86,10149.06,10251.70,1980040000,10251.70
+2005-04-29,10073.47,10231.31,10021.23,10192.51,2362360000,10192.51
+2005-04-28,10194.58,10229.09,10036.74,10070.37,2182270000,10070.37
+2005-04-27,10150.32,10250.23,10048.27,10198.80,2151520000,10198.80
+2005-04-26,10240.99,10298.85,10108.79,10151.13,1959740000,10151.13
+2005-04-25,10158.52,10305.87,10148.25,10242.47,1795030000,10242.47
+2005-04-22,10216.68,10266.48,10055.29,10157.71,2045880000,10157.71
+2005-04-21,10010.51,10250.30,10010.51,10218.60,2308560000,10218.60
+2005-04-20,10131.18,10232.34,9978.74,10012.36,2217050000,10012.36
+2005-04-19,10071.55,10220.21,10021.08,10127.41,2142700000,10127.41
+2005-04-18,10088.54,10183.50,9961.52,10071.25,2180670000,10071.25
+2005-04-15,10276.61,10311.26,10059.36,10087.51,2689960000,10087.51
+2005-04-14,10403.71,10457.06,10248.23,10278.75,2355040000,10278.75
+2005-04-13,10507.45,10567.38,10355.16,10403.93,2049740000,10403.93
+2005-04-12,10448.63,10552.60,10331.21,10507.97,1979830000,10507.97
+2005-04-11,10462.08,10530.58,10393.36,10448.56,1525310000,10448.56
+2005-04-08,10546.32,10584.60,10445.31,10461.34,1661330000,10461.34
+2005-04-07,10485.88,10589.99,10434.30,10546.32,1900620000,10546.32
+2005-04-06,10453.45,10557.18,10434.22,10486.02,1797400000,10486.02
+2005-04-05,10421.14,10530.14,10372.59,10458.46,1870800000,10458.46
+2005-04-04,10401.71,10496.44,10307.64,10421.14,2079770000,10421.14
+2005-04-01,10504.57,10600.56,10349.02,10404.30,2168690000,10404.30
+2005-03-31,10541.59,10586.15,10448.19,10503.76,2214230000,10503.76
+2005-03-30,10405.77,10564.80,10395.21,10540.93,2097110000,10540.93
+2005-03-29,10486.10,10565.46,10351.76,10405.70,2223250000,10405.70
+2005-03-28,10444.13,10568.05,10412.79,10485.65,1746220000,10485.65
+2005-03-24,10457.06,10554.60,10415.16,10442.87,1721720000,10442.87
+2005-03-23,10470.58,10558.51,10384.34,10456.02,2246870000,10456.02
+2005-03-22,10565.39,10651.41,10446.78,10470.51,2114470000,10470.51
+2005-03-21,10629.90,10662.93,10503.46,10565.39,1819440000,10565.39
+2005-03-18,10627.83,10709.85,10520.60,10629.67,2344370000,10629.67
+2005-03-17,10633.30,10707.86,10561.10,10626.35,1581930000,10626.35
+2005-03-16,10741.63,10764.16,10569.30,10633.07,1653190000,10633.07
+2005-03-15,10804.29,10884.76,10716.87,10745.10,1513530000,10745.10
+2005-03-14,10773.92,10859.12,10709.26,10804.51,1437430000,10804.51
+2005-03-11,10845.30,10897.68,10728.62,10774.36,1449820000,10774.36
+2005-03-10,10806.28,10907.45,10757.36,10851.51,1604020000,10851.51
+2005-03-09,10912.32,10949.20,10768.66,10805.62,1704970000,10805.62
+2005-03-08,10935.60,10996.56,10863.40,10912.62,1523090000,10912.62
+2005-03-07,10940.55,11027.15,10886.09,10936.86,1488830000,10936.86
+2005-03-04,10834.51,10996.93,10834.51,10940.55,1636820000,10940.55
+2005-03-03,10812.27,10904.34,10744.14,10833.03,1616240000,10833.03
+2005-03-02,10825.68,10896.66,10736.16,10811.97,1568540000,10811.97
+2005-03-01,10794.98,10849.14,10769.04,10830.00,1708060000,10830.00
+2005-02-28,10842.05,10877.07,10709.41,10766.23,1795480000,10766.23
+2005-02-25,10748.42,10871.53,10698.32,10841.60,1523680000,10841.60
+2005-02-24,10672.24,10779.39,10612.24,10748.79,1518750000,10748.79
+2005-02-23,10609.28,10735.42,10583.64,10673.79,1501090000,10673.79
+2005-02-22,10783.38,10806.36,10596.79,10611.20,1744940000,10611.20
+2005-02-18,10755.15,10854.98,10682.29,10785.22,1551200000,10785.22
+2005-02-17,10835.03,10873.60,10729.95,10754.26,1580120000,10754.26
+2005-02-16,10832.03,10889.78,10746.21,10834.88,1490100000,10834.88
+2005-02-15,10791.06,10886.31,10745.10,10837.32,1527080000,10837.32
+2005-02-14,10795.72,10853.80,10722.63,10791.13,1290180000,10791.13
+2005-02-11,10742.92,10865.69,10680.15,10796.01,1562300000,10796.01
+2005-02-10,10665.00,10803.92,10633.67,10749.61,1491670000,10749.61
+2005-02-09,10717.76,10781.38,10621.84,10664.11,1511040000,10664.11
+2005-02-08,10712.51,10783.97,10647.85,10724.63,1416170000,10724.63
+2005-02-07,10715.76,10774.80,10650.59,10715.76,1347270000,10715.76
+2005-02-04,10593.17,10750.94,10553.93,10716.13,1648160000,10716.13
+2005-02-03,10592.21,10640.69,10511.96,10593.10,1554460000,10593.10
+2005-02-02,10551.05,10638.25,10501.02,10596.79,1561740000,10596.79
+2005-02-01,10489.72,10609.73,10464.38,10551.94,1681980000,10551.94
+2005-01-31,10428.76,10559.77,10414.49,10489.94,1679800000,10489.94
+2005-01-28,10470.58,10520.61,10331.58,10427.20,1641800000,10427.20
+2005-01-27,10498.14,10535.16,10379.47,10467.40,1600600000,10467.40
+2005-01-26,10463.19,10571.66,10433.56,10498.59,1635900000,10498.59
+2005-01-25,10369.42,10534.72,10369.42,10461.56,1610400000,10461.56
+2005-01-24,10393.58,10491.71,10317.10,10368.61,1494600000,10368.61
+2005-01-21,10471.98,10541.30,10370.97,10392.99,1643500000,10392.99
+2005-01-20,10538.90,10582.09,10414.72,10471.47,1692000000,10471.47
+2005-01-19,10626.05,10668.40,10519.20,10539.97,1498700000,10539.97
+2005-01-18,10554.23,10665.44,10456.61,10628.79,1596800000,10628.79
+2005-01-14,10506.71,10606.47,10475.01,10558.00,1335400000,10558.00
+2005-01-13,10617.41,10650.96,10463.26,10505.83,1510300000,10505.83
+2005-01-12,10561.32,10648.52,10481.37,10617.78,1562100000,10617.78
+2005-01-11,10619.77,10632.63,10504.72,10556.22,1488800000,10556.22
+2005-01-10,10603.44,10696.85,10544.99,10621.03,1490400000,10621.03
+2005-01-07,10624.80,10697.81,10545.80,10603.96,1477900000,10603.96
+2005-01-06,10593.19,10708.37,10555.48,10622.88,1569100000,10622.88
+2005-01-05,10629.53,10736.16,10561.03,10597.83,1738900000,10597.83
+2005-01-04,10727.81,10803.62,10587.48,10630.78,1720200000,10630.78
+2005-01-03,10783.75,10892.67,10694.18,10729.43,1505900000,10729.43
+2004-12-31,10800.30,10849.81,10759.94,10783.01,786900000,10783.01
+2004-12-30,10829.12,10880.03,10781.67,10800.30,829800000,10800.30
+2004-12-29,10853.72,10872.71,10771.26,10829.19,924900000,10829.19
+2004-12-28,10776.06,10890.82,10774.51,10854.54,984200000,10854.54
+2004-12-27,10828.01,10892.52,10755.67,10776.13,922000000,10776.13
+2004-12-23,10815.00,10895.10,10780.12,10827.12,956100000,10827.12
+2004-12-22,10752.34,10861.33,10709.78,10815.89,1390800000,10815.89
+2004-12-21,10661.89,10789.66,10646.60,10759.43,1483700000,10759.43
+2004-12-20,10652.14,10769.13,10622.20,10661.60,1422800000,10661.60
+2004-12-17,10704.83,10766.01,10562.76,10649.92,2335000000,10649.92
+2004-12-16,10691.71,10776.43,10612.31,10705.64,1793900000,10705.64
+2004-12-15,10675.71,10749.53,10601.74,10691.45,1695800000,10691.45
+2004-12-14,10640.53,10715.76,10571.67,10676.45,1544400000,10676.45
+2004-12-13,10543.44,10678.52,10520.61,10638.32,1436100000,10638.32
+2004-12-10,10552.16,10616.23,10469.62,10543.22,1443700000,10543.22
+2004-12-09,10492.45,10579.94,10389.81,10552.82,1624700000,10552.82
+2004-12-08,10438.77,10550.16,10395.05,10494.23,1525200000,10494.23
+2004-12-07,10546.80,10612.90,10423.21,10440.58,1533900000,10440.58
+2004-12-06,10591.32,10614.82,10490.31,10547.06,1354400000,10547.06
+2004-12-03,10597.90,10670.47,10515.73,10592.21,1566700000,10592.21
+2004-12-02,10590.44,10670.02,10485.21,10585.12,1774900000,10585.12
+2004-12-01,10425.80,10618.59,10421.66,10590.22,1772800000,10590.22
+2004-11-30,10475.27,10530.80,10380.58,10428.02,1553500000,10428.02
+2004-11-29,10520.64,10590.73,10390.92,10475.90,1378500000,10475.90
+2004-11-26,10518.69,10574.70,10479.52,10522.23,504580000,10522.23
+2004-11-24,10493.86,10565.76,10451.66,10520.31,1149600000,10520.31
+2004-11-23,10486.69,10547.28,10407.18,10492.60,1428300000,10492.60
+2004-11-22,10455.73,10535.46,10380.95,10489.42,1392700000,10489.42
+2004-11-19,10571.63,10588.29,10419.89,10456.91,1526600000,10456.91
+2004-11-18,10549.20,10639.43,10499.62,10572.55,1456700000,10572.55
+2004-11-17,10481.83,10655.09,10470.21,10549.57,1684200000,10549.57
+2004-11-16,10549.79,10570.56,10445.31,10487.65,1364400000,10487.65
+2004-11-15,10541.89,10612.31,10463.34,10550.24,1453300000,10550.24
+2004-11-12,10469.21,10565.48,10419.77,10539.01,1531600000,10539.01
+2004-11-11,10386.95,10513.42,10364.10,10469.84,1393000000,10469.84
+2004-11-10,10378.59,10470.21,10330.54,10385.48,1504300000,10385.48
+2004-11-09,10387.62,10466.81,10327.00,10386.37,1450800000,10386.37
+2004-11-08,10385.15,10452.58,10313.51,10391.31,1358700000,10391.31
+2004-11-05,10317.05,10458.10,10279.96,10387.54,1724400000,10387.54
+2004-11-04,10132.48,10352.81,10076.36,10314.76,1782700000,10314.76
+2004-11-03,10137.05,10253.27,10062.80,10137.05,1767500000,10137.05
+2004-11-02,10053.87,10180.85,9976.29,10035.73,1659000000,10035.73
+2004-11-01,10028.73,10124.44,9953.29,10054.39,1395900000,10054.39
+2004-10-29,10004.69,10083.44,9936.77,10027.47,1500800000,10027.47
+2004-10-28,9998.94,10074.89,9900.42,10004.54,1628200000,10004.54
+2004-10-27,9888.25,10051.96,9807.80,10002.03,1741900000,10002.03
+2004-10-26,9750.59,9914.65,9718.94,9888.48,1685400000,9888.48
+2004-10-25,9757.22,9827.20,9660.18,9749.99,1380500000,9749.99
+2004-10-22,9863.85,9920.99,9732.81,9757.81,1469600000,9757.81
+2004-10-21,9884.65,9969.07,9769.16,9865.76,1673000000,9865.76
+2004-10-20,9895.19,9957.05,9766.95,9886.93,1685700000,9886.93
+2004-10-19,9958.38,10064.20,9854.19,9897.62,1737500000,9897.62
+2004-10-18,9932.98,10002.18,9816.73,9956.32,1373300000,9956.32
+2004-10-15,9895.63,10022.31,9845.56,9933.38,1645100000,9933.38
+2004-10-14,10002.54,10048.48,9837.22,9894.45,1489500000,9894.45
+2004-10-13,10085.21,10157.11,9935.08,10002.33,1546200000,10002.33
+2004-10-12,10080.42,10121.49,9985.44,10077.18,1320100000,10077.18
+2004-10-11,10056.09,10142.74,10017.67,10081.97,943800000,10081.97
+2004-10-08,10124.11,10177.53,10013.91,10055.20,1291600000,10055.20
+2004-10-07,10239.84,10267.57,10086.83,10125.40,1447500000,10125.40
+2004-10-06,10170.70,10267.14,10112.20,10239.92,1416700000,10239.92
+2004-10-05,10216.76,10253.93,10123.19,10177.68,1418400000,10177.68
+2004-10-04,10191.40,10313.81,10153.79,10216.54,1534000000,10216.54
+2004-10-01,10082.04,10237.05,10081.38,10192.65,1582200000,10192.65
+2004-09-30,10136.38,10155.49,9987.36,10080.27,1748000000,10080.27
+2004-09-29,10078.06,10160.50,10002.57,10136.24,1402900000,10136.24
+2004-09-28,9989.73,10132.04,9950.71,10077.40,1396600000,10077.40
+2004-09-27,10046.65,10077.32,9952.78,9988.54,1263500000,9988.54
+2004-09-24,10039.42,10111.39,9993.92,10047.24,1255400000,10047.24
+2004-09-23,10108.29,10134.84,9999.67,10038.90,1286300000,10038.90
+2004-09-22,10244.05,10244.05,10075.33,10109.18,1379900000,10109.18
+2004-09-21,10204.52,10291.39,10159.54,10244.93,1325000000,10244.93
+2004-09-20,10283.87,10293.23,10152.90,10204.89,1197600000,10204.89
+2004-09-17,10245.82,10352.37,10219.71,10284.46,1422600000,10284.46
+2004-09-16,10231.59,10315.72,10194.35,10244.49,1113900000,10244.49
+2004-09-15,10316.90,10324.87,10195.60,10231.36,1256000000,10231.36
+2004-09-14,10315.13,10374.79,10260.93,10318.16,1204500000,10318.16
+2004-09-13,10306.65,10380.47,10250.61,10314.76,1299800000,10314.76
+2004-09-10,10289.47,10348.68,10196.19,10313.07,1261200000,10313.07
+2004-09-09,10313.36,10337.33,10269.49,10289.10,1371300000,10289.10
+2004-09-08,10342.42,10390.64,10267.94,10313.36,1246300000,10313.36
+2004-09-07,10261.52,10388.95,10255.62,10341.16,1214400000,10341.16
+2004-09-03,10277.82,10346.99,10229.52,10260.20,924170000,10260.20
+2004-09-02,10168.39,10312.99,10129.01,10290.28,1118400000,10290.28
+2004-09-01,10170.12,10230.48,10092.37,10168.46,1142100000,10168.46
+2004-08-31,10121.97,10198.03,10056.09,10173.92,1138200000,10173.92
+2004-08-30,10193.83,10226.87,10110.43,10122.52,843100000,10122.52
+2004-08-27,10174.07,10235.49,10143.91,10195.01,845400000,10195.01
+2004-08-26,10181.07,10225.61,10124.88,10173.41,1023600000,10173.41
+2004-08-25,10098.49,10224.29,10041.93,10181.74,1192200000,10181.74
+2004-08-24,10074.89,10165.07,10044.66,10098.63,1092500000,10098.63
+2004-08-23,10111.10,10159.54,10046.72,10073.05,1021900000,10073.05
+2004-08-20,10040.81,10143.76,9989.65,10110.14,1199900000,10110.14
+2004-08-19,10082.78,10111.91,9972.39,10040.82,1249400000,10040.82
+2004-08-18,9964.22,10097.01,9910.82,10083.15,1282500000,10083.15
+2004-08-17,9955.50,10053.21,9916.05,9972.83,1267800000,9972.83
+2004-08-16,9825.35,9987.58,9807.44,9954.55,1206200000,9954.55
+2004-08-13,9814.11,9897.34,9746.60,9825.35,1175100000,9825.35
+2004-08-12,9936.48,9940.02,9780.52,9814.59,1405100000,9814.59
+2004-08-11,9931.24,9981.61,9804.63,9938.32,1410400000,9938.32
+2004-08-10,9815.55,9961.70,9798.44,9944.67,1245600000,9944.67
+2004-08-09,9816.14,9902.49,9773.74,9814.66,1086000000,9814.66
+2004-08-06,9960.67,9963.47,9767.54,9815.33,1521000000,9815.33
+2004-08-05,10127.10,10158.44,9945.84,9963.03,1397400000,9963.03
+2004-08-04,10117.96,10186.16,10029.02,10126.51,1369200000,10126.51
+2004-08-03,10178.27,10228.49,10064.57,10120.24,1338300000,10120.24
+2004-08-02,10138.45,10224.29,10063.75,10179.16,1276000000,10179.16
+2004-07-30,10129.12,10194.13,10045.76,10139.71,1298200000,10139.71
+2004-07-29,10115.52,10213.08,10049.74,10129.24,1530100000,10129.24
+2004-07-28,10084.03,10170.31,9966.34,10117.07,1554300000,10117.07
+2004-07-27,9963.54,10133.95,9942.75,10085.14,1610800000,10085.14
+2004-07-26,9964.71,10054.32,9874.38,9961.92,1413400000,9961.92
+2004-07-23,10045.46,10069.51,9893.93,9962.22,1337500000,9962.22
+2004-07-22,10047.60,10114.41,9906.62,10050.33,1680800000,10050.33
+2004-07-21,10156.30,10279.96,10027.92,10046.13,1679500000,10046.13
+2004-07-20,10094.43,10186.90,10031.24,10149.07,1445800000,10149.07
+2004-07-19,10140.95,10211.60,10027.33,10094.06,1319900000,10094.06
+2004-07-16,10162.34,10289.40,10095.32,10139.78,1450300000,10139.78
+2004-07-15,10208.20,10275.27,10115.81,10163.16,1408700000,10163.16
+2004-07-14,10232.84,10313.95,10129.31,10208.80,1462000000,10208.80
+2004-07-13,10238.37,10297.58,10188.45,10247.59,1199700000,10247.59
+2004-07-12,10211.75,10284.39,10130.42,10238.22,1114600000,10238.22
+2004-07-09,10173.12,10277.16,10150.32,10213.22,1186300000,10213.22
+2004-07-08,10238.52,10297.73,10134.99,10171.56,1401100000,10171.56
+2004-07-07,10211.92,10300.53,10156.45,10240.29,1328600000,10240.29
+2004-07-06,10280.26,10308.43,10163.60,10219.34,1283300000,10219.34
+2004-07-02,10334.00,10371.40,10228.71,10282.83,1085000000,10282.83
+2004-07-01,10434.00,10473.23,10255.55,10334.16,1495700000,10334.16
+2004-06-30,10413.43,10489.16,10348.98,10435.48,1473800000,10435.48
+2004-06-29,10356.35,10460.25,10315.65,10413.43,1375000000,10413.43
+2004-06-28,10377.52,10505.16,10317.64,10357.09,1354600000,10357.09
+2004-06-25,10444.24,10514.67,10329.88,10371.84,1812900000,10371.84
+2004-06-24,10477.43,10530.01,10398.16,10443.81,1394900000,10443.81
+2004-06-23,10395.14,10498.67,10323.32,10479.57,1444200000,10479.57
+2004-06-22,10370.21,10431.05,10284.24,10395.07,1382300000,10395.07
+2004-06-21,10417.82,10471.76,10336.44,10371.47,1123900000,10371.47
+2004-06-18,10375.82,10471.84,10328.20,10416.41,1500600000,10416.41
+2004-06-17,10378.59,10417.69,10308.25,10377.52,1296700000,10377.52
+2004-06-16,10380.23,10433.52,10320.60,10379.58,1168400000,10379.58
+2004-06-15,10336.51,10464.04,10319.89,10380.43,1345900000,10380.43
+2004-06-14,10401.23,10403.50,10283.48,10334.73,1179400000,10334.73
+2004-06-10,10367.80,10448.00,10333.94,10410.10,1160600000,10410.10
+2004-06-09,10431.10,10466.59,10325.07,10368.44,1276800000,10368.44
+2004-06-08,10389.41,10462.97,10323.94,10432.52,1190300000,10432.52
+2004-06-07,10243.31,10410.81,10243.31,10391.08,1211800000,10391.08
+2004-06-04,10196.83,10327.84,10196.83,10242.82,1115300000,10242.82
+2004-06-03,10261.85,10309.46,10163.40,10195.91,1232400000,10195.91
+2004-06-02,10199.78,10310.10,10170.57,10262.97,1251700000,10262.97
+2004-06-01,10187.18,10254.17,10104.07,10202.65,1238000000,10202.65
+2004-05-28,10205.83,10250.27,10137.14,10188.45,1172600000,10188.45
+2004-05-27,10109.89,10267.66,10106.13,10205.20,1447500000,10205.20
+2004-05-26,10116.84,10175.75,10034.16,10109.89,1369400000,10109.89
+2004-05-25,9958.08,10139.27,9895.41,10117.62,1545700000,10117.62
+2004-05-24,9968.02,10084.91,9891.22,9958.43,1227500000,9958.43
+2004-05-21,9939.34,10058.50,9910.81,9966.74,1258600000,9966.74
+2004-05-20,9939.12,10014.50,9867.73,9937.64,1211000000,9937.64
+2004-05-19,9962.55,10124.79,9919.90,9937.71,1548600000,9937.71
+2004-05-18,9906.71,10028.27,9895.77,9968.51,1353000000,9968.51
+2004-05-17,10009.92,10009.92,9827.21,9906.91,1430100000,9906.91
+2004-05-14,10008.43,10096.69,9912.45,10012.87,1335900000,10012.87
+2004-05-13,10044.31,10100.24,9924.94,10010.74,1411100000,10010.74
+2004-05-12,10011.52,10089.87,9822.10,10045.16,1697600000,10045.16
+2004-05-11,9989.24,10092.78,9928.91,10019.47,1533800000,10019.47
+2004-05-10,10116.28,10116.28,9881.86,9990.02,1918400000,9990.02
+2004-05-07,10240.62,10302.93,10086.94,10117.34,1653600000,10117.34
+2004-05-06,10308.20,10332.10,10147.21,10241.26,1509300000,10241.26
+2004-05-05,10316.98,10382.98,10249.63,10310.95,1469000000,10310.95
+2004-05-04,10314.32,10403.14,10232.31,10317.20,1662100000,10317.20
+2004-05-03,10227.27,10365.74,10199.67,10314.00,1571600000,10314.00
+2004-04-30,10273.06,10374.61,10198.39,10225.57,1634700000,10225.57
+2004-04-29,10339.41,10443.81,10199.31,10272.27,1859000000,10272.27
+2004-04-28,10476.67,10479.58,10301.65,10342.60,1855600000,10342.60
+2004-04-27,10445.38,10570.92,10410.52,10478.16,1518000000,10478.16
+2004-04-26,10472.91,10540.26,10396.75,10444.73,1290600000,10444.73
+2004-04-23,10463.11,10543.95,10362.97,10472.84,1396100000,10472.84
+2004-04-22,10314.99,10529.12,10255.88,10461.20,1826700000,10461.20
+2004-04-21,10311.87,10398.53,10200.38,10317.27,1738100000,10317.27
+2004-04-20,10437.85,10530.61,10297.39,10314.50,1508500000,10314.50
+2004-04-19,10451.62,10501.79,10351.97,10437.85,1194900000,10437.85
+2004-04-16,10398.32,10500.57,10343.74,10451.97,1487800000,10451.97
+2004-04-15,10377.95,10481.21,10279.37,10397.46,1568700000,10397.46
+2004-04-14,10378.10,10453.39,10259.35,10377.95,1547700000,10377.95
+2004-04-13,10516.05,10572.13,10343.17,10381.28,1423200000,10381.28
+2004-04-12,10444.38,10559.28,10439.27,10515.56,1102400000,10515.56
+2004-04-08,10482.77,10590.15,10383.84,10442.03,1199800000,10442.03
+2004-04-07,10569.26,10580.51,10422.74,10480.15,1458800000,10480.15
+2004-04-06,10553.76,10596.37,10467.26,10570.81,1397700000,10570.81
+2004-04-05,10470.59,10582.22,10423.33,10558.37,1413700000,10558.37
+2004-04-02,10375.33,10548.74,10375.33,10470.59,1629200000,10470.59
+2004-04-01,10357.52,10449.33,10299.48,10373.33,1560700000,10373.33
+2004-03-31,10380.89,10428.59,10287.11,10357.70,1560700000,10357.70
+2004-03-30,10327.63,10411.41,10264.15,10381.70,1332400000,10381.70
+2004-03-29,10212.91,10389.93,10212.91,10329.63,1405500000,10329.63
+2004-03-26,10218.37,10306.22,10145.63,10212.97,1319100000,10212.97
+2004-03-25,10049.56,10246.15,10049.56,10218.82,1471700000,10218.82
+2004-03-24,10065.41,10140.23,9975.86,10048.23,1527800000,10048.23
+2004-03-23,10066.67,10177.04,10020.75,10063.64,1458200000,10063.64
+2004-03-22,10185.93,10185.93,9985.19,10064.75,1452300000,10064.75
+2004-03-19,10295.85,10355.41,10163.71,10186.60,1457400000,10186.60
+2004-03-18,10298.96,10355.04,10187.78,10295.78,1369200000,10295.78
+2004-03-17,10184.30,10356.59,10184.30,10300.30,1490100000,10300.30
+2004-03-16,10103.41,10253.26,10085.34,10184.67,1500700000,10184.67
+2004-03-15,10238.45,10252.68,10066.08,10102.89,1600600000,10102.89
+2004-03-12,10130.67,10281.63,10097.04,10240.08,1388500000,10240.08
+2004-03-11,10288.85,10356.22,10102.75,10128.38,1889900000,10128.38
+2004-03-10,10457.59,10523.11,10259.34,10296.89,1648400000,10296.89
+2004-03-09,10529.52,10567.03,10391.48,10456.96,1499400000,10456.96
+2004-03-08,10595.37,10677.85,10505.85,10529.48,1254400000,10529.48
+2004-03-05,10582.59,10681.40,10497.11,10595.55,1398200000,10595.55
+2004-03-04,10593.48,10645.33,10522.59,10588.00,1265800000,10588.00
+2004-03-03,10588.59,10651.03,10506.66,10593.11,1334500000,10593.11
+2004-03-02,10678.36,10713.92,10539.40,10591.48,1476000000,10591.48
+2004-03-01,10582.25,10720.14,10568.74,10678.14,1497100000,10678.14
+2004-02-27,10581.55,10689.55,10519.03,10583.92,1540400000,10583.92
+2004-02-26,10598.14,10652.96,10493.70,10580.14,1383900000,10580.14
+2004-02-25,10566.59,10660.73,10509.40,10601.62,1360700000,10601.62
+2004-02-24,10609.55,10681.40,10479.33,10566.37,1543600000,10566.37
+2004-02-23,10619.55,10711.84,10508.89,10609.62,1380400000,10609.62
+2004-02-20,10666.29,10722.77,10559.11,10619.03,1479600000,10619.03
+2004-02-19,10674.59,10794.95,10626.44,10664.73,1562800000,10664.73
+2004-02-18,10706.68,10764.36,10623.62,10671.99,1382400000,10671.99
+2004-02-17,10628.88,10762.07,10628.88,10714.88,1396500000,10714.88
+2004-02-13,10696.22,10755.47,10578.66,10627.85,1329200000,10627.85
+2004-02-12,10735.18,10775.03,10636.44,10694.07,1464300000,10694.07
+2004-02-11,10605.48,10779.40,10561.55,10737.70,1699300000,10737.70
+2004-02-10,10578.74,10667.03,10511.18,10613.85,1403900000,10613.85
+2004-02-09,10592.00,10634.81,10433.70,10579.03,1303500000,10579.03
+2004-02-06,10494.89,10634.81,10433.70,10593.03,1477600000,10593.03
+2004-02-05,10469.33,10566.37,10399.92,10495.55,1566600000,10495.55
+2004-02-04,10503.11,10567.85,10394.81,10470.74,1634800000,10470.74
+2004-02-03,10499.48,10571.48,10414.15,10505.18,1476900000,10505.18
+2004-02-02,10487.78,10614.44,10395.55,10499.18,1599200000,10499.18
+2004-01-30,10510.22,10551.03,10385.56,10488.07,1635000000,10488.07
+2004-01-29,10467.41,10611.56,10369.92,10510.29,1921900000,10510.29
+2004-01-28,10610.07,10703.25,10412.44,10468.37,1842000000,10468.37
+2004-01-27,10701.10,10748.81,10579.33,10609.92,1673100000,10609.92
+2004-01-26,10568.00,10725.18,10510.44,10702.51,1480600000,10702.51
+2004-01-23,10625.25,10691.77,10490.14,10568.29,1561200000,10568.29
+2004-01-22,10624.22,10717.40,10545.03,10623.18,1693700000,10623.18
+2004-01-21,10522.77,10665.70,10453.11,10623.62,1757600000,10623.62
+2004-01-20,10601.40,10676.96,10447.92,10528.66,1698200000,10528.66
+2004-01-16,10556.37,10666.88,10503.70,10600.51,1721100000,10600.51
+2004-01-15,10534.52,10639.03,10454.52,10553.85,1695000000,10553.85
+2004-01-14,10428.67,10573.85,10426.89,10538.37,1514600000,10538.37
+2004-01-13,10485.18,10539.25,10341.19,10427.18,1595900000,10427.18
+2004-01-12,10461.55,10543.03,10389.85,10485.18,1510200000,10485.18
+2004-01-09,10589.25,10603.48,10420.52,10458.89,1720700000,10458.89
+2004-01-08,10530.07,10651.99,10480.59,10592.44,1868400000,10592.44
+2004-01-07,10535.46,10587.55,10432.00,10529.03,1704900000,10529.03
+2004-01-06,10543.85,10584.07,10454.37,10538.66,1494500000,10538.66
+2004-01-05,10411.85,10575.92,10411.85,10544.07,1578200000,10544.07
+2004-01-02,10452.74,10554.96,10367.41,10409.85,1153200000,10409.85
+2003-12-31,10426.30,10494.44,10382.89,10453.92,1027500000,10453.92
+2003-12-30,10449.70,10493.11,10374.52,10425.04,1012600000,10425.04
+2003-12-29,10321.35,10457.78,10319.70,10450.00,1058800000,10450.00
+2003-12-26,10305.85,10368.89,10282.22,10324.67,356070000,10324.67
+2003-12-24,10341.41,10365.63,10263.04,10305.19,518060000,10305.19
+2003-12-23,10337.56,10421.48,10265.71,10341.26,1145300000,10341.26
+2003-12-22,10276.48,10371.11,10216.08,10338.00,1251700000,10338.00
+2003-12-19,10249.48,10345.44,10189.63,10278.22,1657300000,10278.22
+2003-12-18,10141.41,10278.82,10117.78,10248.08,1579900000,10248.08
+2003-12-17,10128.75,10186.67,10040.08,10145.26,1441700000,10145.26
+2003-12-16,10023.34,10173.19,9986.23,10129.56,1547900000,10129.56
+2003-12-15,10046.53,10180.97,9994.38,10022.82,1520800000,10022.82
+2003-12-12,10008.75,10091.71,9946.60,10042.16,1223100000,10042.16
+2003-12-11,9922.45,10056.97,9896.16,10008.16,1441100000,10008.16
+2003-12-10,9922.38,10000.53,9848.97,9921.86,1444000000,9921.86
+2003-12-09,9966.45,10048.75,9887.57,9923.42,1465500000,9923.42
+2003-12-08,9862.01,9997.34,9824.83,9965.27,1218900000,9965.27
+2003-12-05,9923.27,9954.16,9819.05,9862.68,1265900000,9862.68
+2003-12-04,9874.83,9978.08,9814.97,9930.82,1463100000,9930.82
+2003-12-03,9851.94,9974.45,9824.31,9873.42,1441700000,9873.42
+2003-12-02,9899.64,9936.97,9798.83,9853.64,1383200000,9853.64
+2003-12-01,9785.35,9943.34,9777.64,9899.05,1375000000,9899.05
+2003-11-28,9779.72,9832.16,9733.20,9782.46,487220000,9782.46
+2003-11-26,9763.49,9838.01,9689.05,9779.57,1097700000,9779.57
+2003-11-25,9748.68,9821.94,9679.13,9763.94,1333700000,9763.94
+2003-11-24,9629.87,9788.60,9629.87,9747.79,1302800000,9747.79
+2003-11-21,9622.02,9692.53,9556.68,9628.53,1273800000,9628.53
+2003-11-20,9688.46,9756.09,9576.91,9619.42,1326700000,9619.42
+2003-11-19,9620.68,9731.94,9584.31,9690.46,1326200000,9690.46
+2003-11-18,9711.44,9792.16,9601.35,9624.16,1354300000,9624.16
+2003-11-17,9765.64,9775.35,9603.57,9710.83,1374300000,9710.83
+2003-11-14,9836.46,9919.19,9709.13,9768.68,1356100000,9768.68
+2003-11-13,9846.97,9895.71,9740.53,9837.94,1383000000,9837.94
+2003-11-12,9729.50,9882.60,9700.02,9848.83,1349300000,9848.83
+2003-11-11,9756.53,9801.21,9673.64,9737.79,1162500000,9737.79
+2003-11-10,9807.49,9861.05,9702.46,9756.53,1243600000,9756.53
+2003-11-07,9857.12,9945.71,9770.31,9809.79,1440500000,9809.79
+2003-11-06,9820.68,9888.90,9738.53,9856.97,1453900000,9856.97
+2003-11-05,9837.64,9883.86,9746.98,9820.83,1401800000,9820.83
+2003-11-04,9857.49,9905.94,9770.46,9838.83,1417600000,9838.83
+2003-11-03,9802.46,9936.31,9792.60,9858.46,1378200000,9858.46
+2003-10-31,9786.75,9880.08,9745.94,9801.12,1498900000,9801.12
+2003-10-30,9772.01,9882.97,9719.20,9786.61,1629700000,9786.61
+2003-10-29,9747.05,9830.23,9663.27,9774.53,1562600000,9774.53
+2003-10-28,9609.72,9769.57,9592.54,9748.31,1629200000,9748.31
+2003-10-27,9584.54,9696.98,9553.80,9608.16,1371800000,9608.16
+2003-10-24,9600.98,9631.50,9463.28,9582.46,1420300000,9582.46
+2003-10-23,9597.20,9661.05,9517.50,9613.13,1604300000,9613.13
+2003-10-22,9741.98,9741.98,9551.65,9598.24,1647200000,9598.24
+2003-10-21,9778.31,9824.90,9697.94,9747.64,1498000000,9747.64
+2003-10-20,9721.50,9816.97,9665.35,9777.94,1172600000,9777.94
+2003-10-17,9791.86,9833.12,9679.72,9721.79,1352000000,9721.79
+2003-10-16,9798.68,9838.53,9679.13,9791.72,1417700000,9791.72
+2003-10-15,9824.09,9901.64,9731.57,9803.05,1521100000,9803.05
+2003-10-14,9763.27,9833.42,9696.90,9812.98,1271900000,9812.98
+2003-10-13,9675.72,9814.97,9675.72,9764.38,1040500000,9764.38
+2003-10-10,9682.90,9743.12,9622.31,9674.68,1108100000,9674.68
+2003-10-09,9633.35,9798.08,9617.35,9680.01,1578700000,9680.01
+2003-10-08,9653.33,9699.35,9571.35,9630.90,1262500000,9630.90
+2003-10-07,9593.28,9672.68,9512.76,9654.61,1279500000,9654.61
+2003-10-06,9572.39,9656.09,9524.39,9594.98,1025800000,9594.98
+2003-10-03,9492.54,9701.87,9492.54,9572.31,1570500000,9572.31
+2003-10-02,9464.76,9539.20,9397.87,9487.80,1269300000,9487.80
+2003-10-01,9275.06,9472.69,9275.06,9469.20,1566300000,9469.20
+2003-09-30,9378.10,9393.35,9199.43,9275.06,1590500000,9275.06
+2003-09-29,9314.42,9431.54,9259.68,9380.24,1366500000,9380.24
+2003-09-26,9342.43,9407.89,9257.99,9313.08,1472500000,9313.08
+2003-09-25,9425.58,9493.44,9311.47,9343.96,1530000000,9343.96
+2003-09-24,9575.97,9612.53,9400.67,9425.51,1556000000,9425.51
+2003-09-23,9535.76,9623.34,9479.41,9576.04,1301700000,9576.04
+2003-09-22,9641.80,9641.87,9467.83,9535.41,1278800000,9535.41
+2003-09-19,9661.80,9719.49,9582.64,9644.82,1518600000,9644.82
+2003-09-18,9544.04,9691.55,9513.37,9659.13,1498800000,9659.13
+2003-09-17,9566.08,9641.45,9510.28,9545.65,1338210000,9545.65
+2003-09-16,9449.16,9587.90,9426.84,9567.34,1403200000,9567.34
+2003-09-15,9471.19,9541.02,9396.03,9448.81,1151300000,9448.81
+2003-09-12,9456.88,9517.37,9348.59,9471.55,1236700000,9471.55
+2003-09-11,9415.05,9540.60,9374.49,9459.76,1335900000,9459.76
+2003-09-10,9504.88,9545.51,9373.08,9420.46,1582100000,9420.46
+2003-09-09,9584.92,9617.02,9459.85,9507.20,1414800000,9507.20
+2003-09-08,9503.41,9638.57,9492.25,9586.29,1299300000,9586.29
+2003-09-05,9589.52,9602.22,9441.93,9503.34,1465200000,9503.34
+2003-09-04,9569.09,9661.80,9492.74,9587.90,1453900000,9587.90
+2003-09-03,9521.86,9632.75,9465.72,9568.46,1675600000,9568.46
+2003-09-02,9416.67,9563.83,9357.44,9523.27,1470500000,9523.27
+2003-08-29,9373.33,9444.25,9320.52,9415.82,945100000,9415.82
+2003-08-28,9334.35,9415.68,9246.48,9374.21,1165200000,9374.21
+2003-08-27,9339.82,9387.82,9280.03,9333.79,1051400000,9333.79
+2003-08-26,9316.03,9372.45,9203.54,9340.45,1178700000,9340.45
+2003-08-25,9349.44,9381.51,9242.56,9317.64,971700000,9317.64
+2003-08-22,9436.04,9535.97,9323.26,9348.87,1308900000,9348.87
+2003-08-21,9399.96,9517.37,9345.71,9423.68,1407100000,9423.68
+2003-08-20,9420.13,9454.49,9324.03,9397.51,1210800000,9397.51
+2003-08-19,9412.17,9490.60,9315.25,9428.90,1300600000,9428.90
+2003-08-18,9320.66,9466.79,9309.16,9412.45,1127600000,9412.45
+2003-08-15,9308.52,9360.27,9253.20,9321.69,636370000,9321.69
+2003-08-14,9272.25,9356.63,9193.33,9310.56,1186800000,9310.56
+2003-08-13,9303.69,9350.19,9213.43,9271.76,1208800000,9271.76
+2003-08-12,9218.12,9329.04,9163.29,9310.06,1132300000,9310.06
+2003-08-11,9189.62,9275.61,9124.00,9217.35,1022200000,9217.35
+2003-08-08,9127.36,9230.37,9097.74,9191.09,1086600000,9191.09
+2003-08-07,9060.48,9171.13,9003.63,9126.45,1389300000,9126.45
+2003-08-06,9032.96,9151.38,8964.13,9061.74,1491000000,9061.74
+2003-08-05,9185.27,9210.21,9024.77,9036.32,1351700000,9036.32
+2003-08-04,9154.18,9231.84,9033.66,9186.04,1318700000,9186.04
+2003-08-01,9232.68,9266.37,9100.12,9153.97,1390600000,9153.97
+2003-07-31,9199.35,9398.02,9183.80,9233.80,1608000000,9233.80
+2003-07-30,9204.39,9272.88,9131.70,9200.05,1391900000,9200.05
+2003-07-29,9268.19,9327.36,9135.62,9204.46,1508900000,9204.46
+2003-07-28,9284.92,9356.77,9182.96,9266.51,1328600000,9266.51
+2003-07-25,9113.85,9296.62,9062.38,9284.57,1397500000,9284.57
+2003-07-24,9196.56,9313.99,9092.98,9112.51,1559000000,9112.51
+2003-07-23,9159.08,9249.91,9064.69,9194.24,1362700000,9194.24
+2003-07-22,9098.65,9221.83,9008.60,9158.45,1439700000,9158.45
+2003-07-21,9187.80,9219.87,9025.12,9096.69,1254200000,9096.69
+2003-07-18,9052.29,9212.31,9034.36,9188.15,1365200000,9188.15
+2003-07-17,9089.34,9160.27,8968.82,9050.82,1661400000,9050.82
+2003-07-16,9133.70,9185.63,9005.23,9094.59,1662000000,9094.59
+2003-07-15,9179.18,9260.42,9054.60,9128.97,1518600000,9128.97
+2003-07-14,9126.45,9316.44,9126.45,9177.15,1448900000,9177.15
+2003-07-11,9036.39,9176.59,9009.01,9119.59,1212700000,9119.59
+2003-07-10,9154.53,9154.53,8978.13,9036.04,1465700000,9036.04
+2003-07-09,9221.90,9270.22,9077.91,9156.21,1618000000,9156.21
+2003-07-08,9213.48,9281.77,9122.24,9223.09,1565700000,9223.09
+2003-07-07,9073.92,9289.90,9073.92,9216.79,1429100000,9216.79
+2003-07-03,9141.16,9164.48,9014.06,9070.21,775900000,9070.21
+2003-07-02,9043.54,9168.82,9025.12,9142.84,1519300000,9142.84
+2003-07-01,8983.66,9068.05,8843.61,9040.95,1460200000,9040.95
+2003-06-30,8990.74,9100.12,8934.71,8985.44,1587200000,8985.44
+2003-06-27,9079.74,9135.91,8938.26,8989.05,1267800000,8989.05
+2003-06-26,9011.06,9118.82,8953.83,9079.04,1387400000,9079.04
+2003-06-25,9109.57,9195.20,8984.29,9011.53,1459200000,9011.53
+2003-06-24,9071.48,9179.25,9020.08,9109.85,1388300000,9109.85
+2003-06-23,9199.49,9215.32,9003.83,9072.95,1398100000,9072.95
+2003-06-20,9180.93,9306.36,9149.21,9200.75,1698000000,9200.75
+2003-06-19,9293.80,9346.34,9134.50,9179.53,1530100000,9179.53
+2003-06-18,9322.67,9363.15,9185.17,9293.80,1488900000,9293.80
+2003-06-17,9319.66,9406.50,9234.78,9323.02,1479700000,9323.02
+2003-06-16,9117.56,9335.49,9117.56,9318.96,1345900000,9318.96
+2003-06-13,9197.88,9234.23,9042.63,9117.12,1271600000,9117.12
+2003-06-12,9184.29,9270.64,9089.38,9196.55,1553100000,9196.55
+2003-06-11,9048.85,9202.08,9010.13,9183.22,1520000000,9183.22
+2003-06-10,8980.79,9111.11,8946.06,9054.89,1275400000,9054.89
+2003-06-09,9061.18,9109.43,8909.78,8980.00,1307000000,8980.00
+2003-06-06,9045.57,9248.71,9008.87,9062.79,1837200000,9062.79
+2003-06-05,9036.67,9106.70,8905.37,9041.30,1693100000,9041.30
+2003-06-04,8919.94,9076.94,8882.75,9038.98,1618700000,9038.98
+2003-06-03,8898.23,8973.02,8823.51,8922.95,1450200000,8922.95
+2003-06-02,8851.45,9040.46,8833.66,8897.81,1662500000,8897.81
+2003-05-30,8711.46,8897.04,8711.46,8850.26,1688800000,8850.26
+2003-05-29,8787.23,8895.99,8657.96,8711.18,1685800000,8711.18
+2003-05-28,8781.84,8885.34,8721.90,8793.12,1559000000,8793.12
+2003-05-27,8600.54,8812.30,8523.64,8781.35,1532000000,8781.35
+2003-05-23,8594.02,8668.47,8513.98,8601.38,1201000000,8601.38
+2003-05-22,8516.99,8650.33,8495.35,8594.02,1448500000,8594.02
+2003-05-21,8485.62,8577.64,8389.68,8516.43,1457800000,8516.43
+2003-05-20,8494.09,8593.61,8394.51,8491.36,1505300000,8491.36
+2003-05-19,8676.52,8676.52,8455.72,8493.39,1375700000,8493.39
+2003-05-16,8710.36,8766.36,8614.33,8678.97,1505500000,8678.97
+2003-05-15,8649.22,8766.58,8613.84,8713.14,1508700000,8713.14
+2003-05-14,8673.29,8744.94,8575.96,8647.82,1401800000,8647.82
+2003-05-13,8722.88,8757.40,8611.18,8679.25,1418100000,8679.25
+2003-05-12,8603.90,8764.12,8544.24,8726.73,1378800000,8726.73
+2003-05-09,8492.69,8637.58,8482.89,8604.60,1326100000,8604.60
+2003-05-08,8558.67,8591.01,8435.61,8491.22,1379600000,8491.22
+2003-05-07,8585.42,8650.82,8494.87,8560.63,1531900000,8560.63
+2003-05-06,8531.28,8658.18,8486.88,8588.36,1649600000,8588.36
+2003-05-05,8583.17,8643.11,8472.67,8531.57,1446300000,8531.57
+2003-05-02,8453.48,8612.86,8389.40,8582.68,1554300000,8582.68
+2003-05-01,8478.48,8519.09,8328.55,8454.25,1397500000,8454.25
+2003-04-30,8501.38,8557.62,8402.36,8480.09,1788510000,8480.09
+2003-04-29,8472.88,8578.55,8414.61,8502.99,1525600000,8502.99
+2003-04-28,8306.84,8515.80,8290.46,8471.61,1273000000,8471.61
+2003-04-25,8438.98,8453.06,8258.80,8306.35,1335800000,8306.35
+2003-04-24,8512.44,8527.99,8363.28,8440.04,1648100000,8440.04
+2003-04-23,8484.92,8587.72,8398.65,8515.66,1667200000,8515.66
+2003-04-22,8326.38,8509.43,8238.14,8484.99,1631200000,8484.99
+2003-04-21,8336.67,8423.09,8270.56,8328.90,1118700000,8328.90
+2003-04-17,8255.79,8388.28,8172.52,8337.65,1430600000,8337.65
+2003-04-16,8405.72,8459.15,8217.27,8257.61,1587600000,8257.61
+2003-04-15,8347.66,8443.11,8251.38,8402.36,1460200000,8402.36
+2003-04-14,8203.97,8375.19,8175.60,8351.10,1131000000,8351.10
+2003-04-11,8223.22,8360.76,8156.77,8203.41,1141600000,8203.41
+2003-04-10,8198.99,8274.56,8109.85,8221.33,1275300000,8221.33
+2003-04-09,8299.28,8404.25,8174.90,8197.94,1293700000,8197.94
+2003-04-08,8299.12,8382.43,8222.24,8298.92,1235400000,8298.92
+2003-04-07,8284.15,8550.40,8272.24,8300.41,1494000000,8300.41
+2003-04-04,8240.59,8348.29,8176.66,8277.15,1241200000,8277.15
+2003-04-03,8285.76,8378.76,8199.49,8240.38,1351500000,8240.38
+2003-04-02,8070.98,8342.27,8070.98,8285.06,1589800000,8285.06
+2003-04-01,7992.83,8133.03,7947.38,8069.86,1461600000,8069.86
+2003-03-31,8142.83,8142.83,7903.97,7992.13,1495500000,7992.13
+2003-03-28,8198.85,8224.83,8070.77,8145.77,1227000000,8145.77
+2003-03-27,8226.39,8272.03,8085.40,8201.45,1232900000,8201.45
+2003-03-26,8279.88,8323.01,8165.52,8229.88,1319700000,8229.88
+2003-03-25,8216.85,8355.93,8155.65,8280.23,1333400000,8280.23
+2003-03-24,8514.82,8514.82,8166.78,8214.68,1293000000,8214.68
+2003-03-21,8290.38,8552.08,8290.38,8521.97,1883710000,8521.97
+2003-03-20,8264.68,8335.20,8122.59,8286.60,1439100000,8286.60
+2003-03-19,8193.04,8304.04,8116.01,8265.45,1473400000,8265.45
+2003-03-18,8142.69,8253.48,8057.54,8194.23,1555100000,8194.23
+2003-03-17,7857.96,8163.56,7763.56,8141.92,1700420000,8141.92
+2003-03-14,7822.17,7961.60,7761.25,7859.71,1541900000,7859.71
+2003-03-13,7555.29,7847.03,7555.29,7821.75,1816300000,7821.75
+2003-03-12,7517.76,7582.96,7397.31,7552.07,1620000000,7552.07
+2003-03-11,7568.53,7673.98,7488.00,7524.06,1427700000,7524.06
+2003-03-10,7739.40,7739.40,7545.77,7568.18,1255000000,7568.18
+2003-03-07,7671.75,7780.57,7536.18,7740.03,1368500000,7740.03
+2003-03-06,7774.76,7795.07,7624.97,7673.99,1299200000,7673.99
+2003-03-05,7702.35,7801.79,7639.82,7775.60,1332700000,7775.60
+2003-03-04,7838.14,7859.08,7688.98,7704.87,1256600000,7704.87
+2003-03-03,7890.24,7997.66,7809.05,7837.86,1208900000,7837.86
+2003-02-28,7886.11,7987.80,7826.72,7891.08,1373300000,7891.08
+2003-02-27,7807.96,7950.46,7774.34,7884.99,1287800000,7884.99
+2003-02-26,7907.39,7944.93,7767.62,7806.98,1374400000,7806.98
+2003-02-25,7856.42,7931.14,7700.53,7909.50,1483700000,7909.50
+2003-02-24,8017.34,8017.34,7828.06,7858.24,1229200000,7858.24
+2003-02-21,7915.52,8055.79,7843.81,8018.11,1398200000,8018.11
+2003-02-20,8002.70,8051.37,7858.24,7914.96,1194100000,7914.96
+2003-02-19,8033.80,8079.11,7913.70,8000.60,1075600000,8000.60
+2003-02-18,7909.30,8114.82,7909.30,8041.15,1250800000,8041.15
+2003-02-14,7750.90,7936.56,7704.96,7908.80,1404600000,7908.80
+2003-02-13,7756.55,7817.88,7602.81,7749.87,1489300000,7749.87
+2003-02-12,7836.36,7892.96,7720.39,7758.17,1260500000,7758.17
+2003-02-11,7920.93,8010.89,7798.69,7843.11,1307000000,7843.11
+2003-02-10,7865.74,7963.03,7777.98,7920.11,1238200000,7920.11
+2003-02-07,7932.45,8019.46,7811.10,7864.23,1276800000,7864.23
+2003-02-06,7981.95,8031.66,7855.87,7929.30,1430900000,7929.30
+2003-02-05,8014.45,8162.96,7950.42,7985.18,1450800000,7985.18
+2003-02-04,8104.61,8104.61,7915.93,8013.29,1451600000,8013.29
+2003-02-03,8053.74,8189.35,8032.90,8109.82,1258500000,8109.82
+2003-01-31,7939.72,8121.37,7884.66,8053.81,1578530000,8053.81
+2003-01-30,8109.14,8169.81,7918.19,7945.13,1510300000,7945.13
+2003-01-29,8087.95,8173.31,7916.89,8110.71,1595400000,8110.71
+2003-01-28,7991.07,8153.36,7954.95,8088.84,1459100000,8088.84
+2003-01-27,8128.54,8167.41,7929.16,7989.56,1435900000,7989.56
+2003-01-24,8367.89,8367.89,8092.00,8131.01,1574800000,8131.01
+2003-01-23,8320.72,8437.69,8215.61,8369.47,1744550000,8369.47
+2003-01-22,8439.54,8493.50,8270.94,8318.73,1560800000,8318.73
+2003-01-21,8586.26,8650.43,8421.03,8442.90,1335200000,8442.90
+2003-01-17,8695.82,8695.82,8523.60,8586.74,1358200000,8586.74
+2003-01-16,8721.12,8837.47,8634.46,8697.87,1534600000,8697.87
+2003-01-15,8843.64,8865.65,8674.43,8723.18,1432100000,8723.18
+2003-01-14,8787.22,8865.41,8717.56,8842.62,1379400000,8842.62
+2003-01-13,8787.83,8896.09,8721.12,8785.98,1396300000,8785.98
+2003-01-10,8776.04,8846.25,8654.21,8784.89,1485400000,8784.89
+2003-01-09,8596.68,8814.09,8596.68,8776.18,1560300000,8776.18
+2003-01-08,8735.93,8749.44,8549.72,8595.31,1467600000,8595.31
+2003-01-07,8775.84,8843.37,8661.20,8740.59,1545200000,8740.59
+2003-01-06,8602.78,8826.71,8578.86,8773.57,1435900000,8773.57
+2003-01-03,8607.38,8669.91,8503.71,8601.69,1130800000,8601.69
+2003-01-02,8342.38,8633.02,8342.38,8607.52,1229200000,8607.52
+2002-12-31,8332.24,8400.46,8216.44,8341.63,1088500000,8341.63
+2002-12-30,8304.06,8405.67,8214.93,8332.85,1057800000,8332.85
+2002-12-27,8429.28,8470.05,8272.31,8303.78,758400000,8303.78
+2002-12-26,8448.86,8587.98,8392.23,8432.61,721100000,8432.61
+2002-12-24,8491.99,8522.98,8407.45,8448.11,458310000,8448.11
+2002-12-23,8511.39,8573.92,8418.90,8493.29,1112100000,8493.29
+2002-12-20,8367.41,8557.47,8367.41,8511.32,1782730000,8511.32
+2002-12-19,8441.94,8530.25,8302.41,8364.80,1385900000,8364.80
+2002-12-18,8531.31,8553.76,8367.89,8447.35,1446200000,8447.35
+2002-12-17,8626.99,8672.38,8495.21,8535.39,1251800000,8535.39
+2002-12-16,8436.59,8649.06,8421.58,8627.40,1271600000,8627.40
+2002-12-13,8536.07,8563.16,8374.68,8433.71,1330800000,8433.71
+2002-12-12,8590.99,8662.71,8466.21,8538.40,1255300000,8538.40
+2002-12-11,8571.52,8669.91,8452.84,8589.14,1285100000,8589.14
+2002-12-10,8473.61,8624.93,8419.86,8574.26,1286600000,8574.26
+2002-12-09,8643.99,8643.99,8438.24,8473.41,1320800000,8473.41
+2002-12-06,8620.88,8707.21,8469.16,8645.77,1241100000,8645.77
+2002-12-05,8740.66,8796.68,8572.00,8623.28,1250200000,8623.28
+2002-12-04,8734.22,8834.04,8600.93,8737.85,1588900000,8737.85
+2002-12-03,8861.13,8882.04,8649.89,8742.93,1488400000,8742.93
+2002-12-02,8902.95,9076.35,8757.60,8862.57,1612000000,8862.57
+2002-11-29,8933.67,8995.78,8847.42,8896.09,643460000,8896.09
+2002-11-27,8678.96,8975.08,8678.96,8931.68,1350300000,8931.68
+2002-11-26,8844.12,8845.01,8634.53,8676.42,1543600000,8676.42
+2002-11-25,8804.97,8918.03,8717.63,8849.40,1574000000,8849.40
+2002-11-22,8842.41,8944.16,8732.23,8804.84,1626800000,8804.84
+2002-11-21,8625.48,8910.83,8619.58,8845.15,2415100000,8845.15
+2002-11-20,8469.57,8675.12,8402.72,8623.01,1517300000,8623.01
+2002-11-19,8484.93,8566.45,8355.62,8474.78,1337400000,8474.78
+2002-11-18,8579.74,8671.41,8444.26,8486.57,1282600000,8486.57
+2002-11-15,8535.64,8622.30,8421.10,8579.09,1400100000,8579.09
+2002-11-14,8403.69,8596.50,8396.27,8542.13,1488100000,8542.13
+2002-11-13,8380.32,8523.47,8237.65,8398.49,1463400000,8398.49
+2002-11-12,8356.73,8557.25,8286.13,8386.00,1377100000,8386.00
+2002-11-11,8535.81,8541.09,8315.40,8358.95,1113000000,8358.95
+2002-11-08,8585.75,8688.96,8455.01,8537.13,1446500000,8537.13
+2002-11-07,8766.08,8766.08,8517.78,8586.24,1466900000,8586.24
+2002-11-06,8677.17,8841.61,8561.48,8771.01,1623700000,8771.01
+2002-11-05,8568.76,8730.92,8497.60,8678.27,1354100000,8678.27
+2002-11-04,8521.60,8787.30,8510.08,8571.60,1645900000,8571.60
+2002-11-01,8395.64,8569.24,8271.77,8517.64,1450400000,8517.64
+2002-10-31,8427.34,8538.17,8293.17,8397.03,1641300000,8397.03
+2002-10-30,8363.95,8502.32,8273.99,8427.41,1422300000,8427.41
+2002-10-29,8367.28,8456.19,8161.01,8368.94,1529700000,8368.94
+2002-10-28,8448.98,8601.01,8281.34,8368.04,1382600000,8368.04
+2002-10-25,8317.48,8474.92,8210.74,8443.99,1340400000,8443.99
+2002-10-24,8495.38,8607.04,8253.60,8317.34,1700570000,8317.34
+2002-10-23,8448.56,8546.57,8256.79,8494.27,1593900000,8494.27
+2002-10-22,8534.08,8543.65,8303.33,8450.16,1549200000,8450.16
+2002-10-21,8320.74,8580.13,8191.87,8538.24,1447000000,8538.24
+2002-10-18,8287.72,8383.16,8115.72,8322.40,1423100000,8322.40
+2002-10-17,8038.31,8395.99,8038.31,8275.04,1780390000,8275.04
+2002-10-16,8232.10,8232.10,7958.34,8036.03,1585000000,8036.03
+2002-10-15,7883.23,8304.58,7883.23,8255.68,1956000000,8255.68
+2002-10-14,7848.21,7948.91,7725.23,7877.40,1200300000,7877.40
+2002-10-11,7540.74,7919.57,7540.74,7850.29,1854130000,7850.29
+2002-10-10,7286.34,7588.25,7181.47,7533.95,2090230000,7533.95
+2002-10-09,7499.96,7500.03,7215.39,7286.27,1885030000,7286.27
+2002-10-08,7425.82,7680.57,7294.53,7501.49,1938430000,7501.49
+2002-10-07,7528.68,7685.42,7368.46,7422.84,1576500000,7422.84
+2002-10-04,7719.34,7817.06,7428.32,7528.40,1835930000,7528.40
+2002-10-03,7753.46,7943.64,7638.47,7717.19,1674500000,7717.19
+2002-10-02,7936.57,7996.77,7696.66,7755.61,1668900000,7755.61
+2002-10-01,7593.04,7964.24,7558.36,7938.79,1780900000,7938.79
+2002-09-30,7698.81,7729.53,7422.28,7591.93,1721870000,7591.93
+2002-09-27,7996.01,7997.12,7664.89,7701.45,1507300000,7701.45
+2002-09-26,7844.62,8086.86,7800.97,7997.12,1650000000,7997.12
+2002-09-25,7687.16,7939.90,7641.87,7841.82,1651500000,7841.82
+2002-09-24,7871.23,7893.36,7606.77,7683.13,1670240000,7683.13
+2002-09-23,7984.77,7984.77,7738.06,7872.15,1381100000,7872.15
+2002-09-20,7945.93,8081.04,7868.60,7986.02,1792800000,7986.02
+2002-09-19,8170.65,8170.65,7904.87,7942.39,1524000000,7942.39
+2002-09-18,8203.07,8283.49,8013.42,8172.45,1501000000,8172.45
+2002-09-17,8386.35,8508.61,8169.88,8207.55,1448600000,8207.55
+2002-09-16,8311.79,8435.04,8214.27,8380.18,1001400000,8380.18
+2002-09-13,8377.68,8414.79,8175.85,8312.69,1271000000,8312.69
+2002-09-12,8574.94,8574.94,8334.82,8379.41,1191600000,8379.41
+2002-09-11,8604.27,8767.82,8545.11,8581.17,846600000,8581.17
+2002-09-10,8520.14,8660.94,8447.73,8602.61,1186400000,8602.61
+2002-09-09,8425.88,8584.30,8288.28,8519.38,1130600000,8519.38
+2002-09-06,8296.46,8526.80,8296.46,8427.20,1184500000,8427.20
+2002-09-05,8420.20,8420.20,8173.56,8283.70,1401300000,8283.70
+2002-09-04,8308.53,8495.03,8216.98,8425.12,1372100000,8425.12
+2002-09-03,8659.27,8659.27,8282.87,8308.05,1323400000,8308.05
+2002-08-30,8669.26,8811.72,8572.85,8663.50,929900000,8663.50
+2002-08-29,8690.69,8769.34,8514.10,8670.99,1271100000,8670.99
+2002-08-28,8823.93,8832.18,8610.79,8694.09,1146600000,8694.09
+2002-08-27,8917.49,9040.04,8747.77,8824.41,1307700000,8824.41
+2002-08-26,8873.93,8981.23,8723.43,8919.01,1016900000,8919.01
+2002-08-23,9051.49,9051.49,8806.38,8872.96,1071500000,8872.96
+2002-08-22,8961.18,9129.10,8860.34,9053.64,1373000000,9053.64
+2002-08-21,8866.14,9033.52,8768.51,8957.23,1353100000,8957.23
+2002-08-20,8986.50,8989.69,8789.13,8872.07,1308500000,8872.07
+2002-08-19,8777.09,9037.38,8720.81,8990.79,1299800000,8990.79
+2002-08-16,8813.07,8899.42,8644.59,8778.06,1265300000,8778.06
+2002-08-15,8745.04,8914.37,8620.98,8818.14,1505100000,8818.14
+2002-08-14,8479.14,8778.89,8295.34,8743.31,1533800000,8743.31
+2002-08-13,8683.15,8801.87,8445.91,8482.39,1297700000,8482.39
+2002-08-12,8741.92,8753.14,8528.15,8688.89,1036500000,8688.89
+2002-08-09,8707.24,8824.92,8538.46,8745.45,1294900000,8745.45
+2002-08-08,8456.29,8755.70,8364.29,8712.02,1646700000,8712.02
+2002-08-07,8282.25,8520.95,8171.70,8456.15,1490400000,8456.15
+2002-08-06,8049.93,8472.28,8049.93,8274.09,1514100000,8274.09
+2002-08-05,8312.92,8371.00,7991.43,8043.63,1425500000,8043.63
+2002-08-02,8504.96,8566.36,8179.80,8313.13,1538100000,8313.13
+2002-08-01,8732.58,8758.40,8430.68,8506.62,1672200000,8506.62
+2002-07-31,8678.65,8793.36,8463.21,8736.59,2049360000,8736.59
+2002-07-30,8707.03,8806.86,8484.05,8680.03,1826090000,8680.03
+2002-07-29,8267.99,8749.12,8267.99,8711.88,1778650000,8711.88
+2002-07-26,8192.61,8350.10,8039.89,8264.39,1796100000,8264.39
+2002-07-25,8185.89,8390.39,7893.34,8186.31,2424700000,8186.31
+2002-07-24,7698.46,8243.07,7489.53,8191.29,2775560000,8191.29
+2002-07-23,7785.55,8007.91,7590.75,7702.34,2441020000,7702.34
+2002-07-22,8015.04,8173.08,7668.35,7784.58,2248060000,7784.58
+2002-07-19,8356.74,8356.74,7940.83,8019.26,2654100000,8019.26
+2002-07-18,8540.47,8683.84,8350.72,8409.49,1736300000,8409.49
+2002-07-17,8476.21,8765.39,8401.12,8542.48,2566500000,8542.48
+2002-07-16,8635.31,8697.69,8346.29,8473.11,1843700000,8473.11
+2002-07-15,8681.28,8720.18,8220.78,8639.19,2574800000,8639.19
+2002-07-12,8805.33,8903.00,8555.15,8684.53,1607400000,8684.53
+2002-07-11,8812.12,8937.87,8557.84,8801.53,2080480000,8801.53
+2002-07-10,9098.16,9188.71,8772.94,8813.50,1816900000,8813.50
+2002-07-09,9273.38,9357.35,9065.88,9096.09,1348900000,9096.09
+2002-07-08,9375.70,9433.08,9184.90,9274.90,1184400000,9274.90
+2002-07-05,9061.54,9399.65,9054.97,9379.50,699400000,9379.50
+2002-07-03,9006.37,9140.32,8832.89,9054.97,1527800000,9054.97
+2002-07-02,9104.95,9185.88,8918.11,9007.75,1823000000,9007.75
+2002-07-01,9239.25,9381.37,9059.88,9109.79,1425500000,9109.79
+2002-06-28,9270.33,9435.44,9131.49,9243.26,2117000000,9243.26
+2002-06-27,9122.12,9342.33,8992.32,9269.92,1908600000,9269.92
+2002-06-26,9108.22,9207.07,8831.92,9120.11,336570000,9120.11
+2002-06-25,9285.56,9457.38,9089.17,9126.82,1513700000,9126.82
+2002-06-24,9252.47,9417.23,9046.04,9281.82,1552600000,9281.82
+2002-06-21,9430.66,9456.76,9186.71,9253.79,1497200000,9253.79
+2002-06-20,9561.64,9628.11,9390.10,9431.77,1389700000,9431.77
+2002-06-19,9702.00,9760.20,9514.29,9561.57,1336100000,9561.57
+2002-06-18,9684.52,9775.83,9588.29,9706.12,1193100000,9706.12
+2002-06-17,9476.50,9736.58,9462.30,9687.42,1236600000,9687.42
+2002-06-14,9498.92,9538.93,9229.63,9474.21,1549000000,9474.21
+2002-06-13,9612.87,9671.64,9454.41,9502.80,1405500000,9502.80
+2002-06-12,9515.12,9682.37,9380.82,9617.71,1795720000,9617.71
+2002-06-11,9647.62,9794.17,9487.91,9517.26,1212400000,9517.26
+2002-06-10,9587.38,9744.33,9509.91,9645.40,1226200000,9645.40
+2002-06-07,9592.38,9668.18,9416.33,9589.67,1341300000,9589.67
+2002-06-06,9795.70,9820.41,9552.85,9624.64,1601500000,9624.64
+2002-06-05,9688.53,9860.91,9636.82,9796.80,1300100000,9796.80
+2002-06-04,9710.34,9798.74,9541.36,9687.84,1466600000,9687.84
+2002-06-03,9923.94,10016.04,9685.49,9709.79,1324300000,9709.79
+2002-05-31,9915.15,10074.16,9865.89,9925.25,1277300000,9925.25
+2002-05-30,9915.01,9995.76,9769.64,9911.69,1286600000,9911.69
+2002-05-29,9976.94,10056.31,9860.42,9923.04,1081800000,9923.04
+2002-05-28,10106.54,10144.53,9917.64,9981.58,996500000,9981.58
+2002-05-24,10211.92,10255.93,10054.58,10104.26,885400000,10104.26
+2002-05-23,10158.30,10268.87,10044.20,10216.08,1192900000,10216.08
+2002-05-22,10098.58,10200.78,10004.41,10157.88,1136300000,10157.88
+2002-05-21,10229.08,10322.15,10060.46,10105.71,1169200000,10105.71
+2002-05-20,10348.93,10357.44,10164.39,10229.50,989800000,10229.50
+2002-05-17,10291.05,10400.62,10209.49,10353.08,1274400000,10353.08
+2002-05-16,10242.11,10374.05,10168.64,10289.21,1256600000,10289.21
+2002-05-15,10288.56,10382.97,10152.97,10243.68,1420200000,10243.68
+2002-05-14,10119.34,10346.59,10119.34,10298.14,1414500000,10298.14
+2002-05-13,9938.82,10148.71,9892.73,10109.66,1088600000,10109.66
+2002-05-10,10040.25,10115.23,9891.04,9939.92,1171900000,9939.92
+2002-05-09,10137.96,10185.08,9966.63,10037.42,1153000000,10037.42
+2002-05-08,9847.96,10203.76,9847.96,10141.83,1502000000,10141.83
+2002-05-07,9810.53,9985.32,9749.73,9836.55,1354700000,9836.55
+2002-05-06,10005.80,10081.98,9780.29,9808.04,1122600000,9808.04
+2002-05-03,10091.73,10130.97,9891.49,10006.63,1284500000,10006.63
+2002-05-02,10057.62,10182.94,9970.92,10091.87,1364000000,10091.87
+2002-05-01,9944.90,10121.21,9778.42,10059.63,1451400000,10059.63
+2002-04-30,9818.90,10063.64,9775.10,9946.22,1628600000,9946.22
+2002-04-29,9910.52,10012.16,9767.15,9819.87,1314700000,9819.87
+2002-04-26,10037.42,10127.85,9875.44,9910.72,1374200000,9910.72
+2002-04-25,10028.70,10103.64,9864.08,10035.06,1517400000,10035.06
+2002-04-24,10090.07,10209.64,9984.00,10030.43,1373200000,10030.43
+2002-04-23,10137.20,10243.06,10003.84,10089.24,1388500000,10089.24
+2002-04-22,10256.00,10299.39,10056.45,10136.43,1181800000,10136.43
+2002-04-19,10212.69,10338.83,10151.52,10257.11,1185000000,10257.11
+2002-04-18,10219.47,10334.67,10010.22,10205.28,1359300000,10205.28
+2002-04-17,10299.66,10379.51,10137.47,10220.78,1376900000,10220.78
+2002-04-16,10100.38,10365.12,10100.38,10301.32,1341300000,10301.32
+2002-04-15,10189.57,10261.05,10037.90,10093.67,1120400000,10093.67
+2002-04-12,10178.57,10312.26,10083.92,10190.82,1282100000,10190.82
+2002-04-11,10378.89,10425.87,10116.37,10176.08,1505600000,10176.08
+2002-04-10,10210.40,10437.43,10175.18,10381.73,1447900000,10381.73
+2002-04-09,10249.84,10362.98,10156.57,10208.67,1235400000,10208.67
+2002-04-08,10258.91,10300.78,10049.94,10249.08,1095300000,10249.08
+2002-04-05,10235.80,10403.66,10169.79,10271.64,1110200000,10271.64
+2002-04-04,10199.54,10301.53,10118.10,10235.17,1283800000,10235.17
+2002-04-03,10311.81,10377.09,10116.02,10198.29,1219700000,10198.29
+2002-04-02,10352.46,10394.94,10204.66,10313.71,1176700000,10313.71
+2002-04-01,10402.07,10434.52,10226.59,10362.70,1050900000,10362.70
+2002-03-28,10429.68,10537.48,10341.59,10403.94,1147600000,10403.94
+2002-03-27,10351.28,10490.15,10300.29,10426.91,1180100000,10426.91
+2002-03-26,10280.51,10475.00,10233.65,10353.36,1223600000,10353.36
+2002-03-25,10428.43,10497.76,10255.59,10281.67,1057900000,10281.67
+2002-03-22,10477.70,10537.62,10324.23,10427.67,1243300000,10427.67
+2002-03-21,10501.99,10577.82,10326.99,10479.84,1339200000,10479.84
+2002-03-20,10626.85,10634.84,10455.56,10501.57,1304900000,10501.57
+2002-03-19,10578.38,10722.78,10530.63,10635.25,1255000000,10635.25
+2002-03-18,10608.54,10707.01,10488.84,10577.75,1169500000,10577.75
+2002-03-15,10516.45,10663.69,10452.10,10607.23,1493900000,10607.23
+2002-03-14,10501.29,10615.74,10421.17,10517.14,1208800000,10517.14
+2002-03-13,10620.17,10648.68,10427.67,10501.85,1354000000,10501.85
+2002-03-12,10604.32,10682.72,10462.34,10632.35,1304400000,10632.35
+2002-03-11,10570.07,10679.68,10470.85,10611.24,1210200000,10611.24
+2002-03-08,10531.67,10728.87,10480.33,10572.49,1412000000,10572.49
+2002-03-07,10578.10,10663.82,10405.95,10525.37,1517400000,10525.37
+2002-03-06,10431.96,10637.19,10393.84,10574.29,1541300000,10574.29
+2002-03-05,10591.38,10639.96,10349.90,10433.41,1549300000,10433.41
+2002-03-04,10368.10,10656.50,10313.01,10586.82,1594300000,10586.82
+2002-03-01,10111.04,10397.09,10086.51,10368.86,1456500000,10368.86
+2002-02-28,10130.28,10283.89,10055.34,10106.13,1392200000,10106.13
+2002-02-27,10117.65,10315.72,10025.86,10127.58,1393800000,10127.58
+2002-02-26,10145.86,10241.89,9986.84,10115.26,1309200000,10115.26
+2002-02-25,9969.75,10204.04,9934.94,10145.71,1367400000,10145.71
+2002-02-22,9834.89,10032.45,9726.67,9968.15,1411000000,9968.15
+2002-02-21,9933.56,10072.98,9788.11,9834.68,1381600000,9834.68
+2002-02-20,9742.37,9990.78,9674.91,9941.17,1438900000,9941.17
+2002-02-19,9899.24,9923.39,9704.03,9745.14,1189900000,9745.14
+2002-02-15,10000.83,10065.37,9843.54,9903.04,1359200000,9903.04
+2002-02-14,9989.67,10092.29,9905.95,10001.99,1272500000,10001.99
+2002-02-13,9856.99,10056.24,9839.18,9989.67,1215900000,9989.67
+2002-02-12,9880.35,9943.24,9766.18,9863.74,1094200000,9863.74
+2002-02-11,9739.81,9933.07,9668.34,9884.78,1159400000,9884.78
+2002-02-08,9627.65,9795.38,9503.52,9744.24,1371900000,9744.24
+2002-02-07,9650.97,9799.67,9562.12,9625.44,1441600000,9625.44
+2002-02-06,9682.04,9801.33,9558.18,9653.39,1665800000,9653.39
+2002-02-05,9684.74,9842.77,9553.96,9685.43,1778300000,9685.43
+2002-02-04,9905.46,9940.96,9648.55,9687.09,1437600000,9687.09
+2002-02-01,9923.04,10022.82,9795.45,9907.26,1367200000,9907.26
+2002-01-31,9763.20,9963.79,9701.76,9920.00,1557000000,9920.00
+2002-01-30,9619.14,9821.81,9443.32,9762.86,2019600000,9762.86
+2002-01-29,9865.54,9952.59,9576.65,9618.24,1812000000,9618.24
+2002-01-28,9843.05,9959.44,9746.66,9865.75,1186800000,9865.75
+2002-01-25,9793.23,9949.54,9697.47,9840.08,1345100000,9840.08
+2002-01-24,9734.21,9926.71,9670.99,9796.07,1552800000,9796.07
+2002-01-23,9710.96,9853.64,9588.49,9730.96,1479200000,9730.96
+2002-01-22,9772.34,9905.26,9652.01,9713.80,1311600000,9713.80
+2002-01-18,9830.94,9873.98,9673.11,9771.85,1333300000,9771.85
+2002-01-17,9712.21,9910.11,9684.39,9850.04,1380100000,9850.04
+2002-01-16,9916.54,9923.32,9661.00,9712.27,1482500000,9712.27
+2002-01-15,9892.73,10038.94,9805.33,9924.15,1386900000,9924.15
+2002-01-14,9985.38,10038.87,9831.98,9891.42,1286400000,9891.42
+2002-01-11,10069.52,10163.77,9938.12,9987.53,1211900000,9987.53
+2002-01-10,10092.50,10174.91,9956.67,10067.86,1299000000,10067.86
+2002-01-09,10153.18,10311.98,10049.25,10094.09,1452000000,10094.09
+2002-01-08,10195.76,10270.53,10063.43,10150.55,1258800000,10150.55
+2002-01-07,10261.33,10345.40,10137.61,10197.05,1308300000,10197.05
+2002-01-04,10176.84,10341.87,10132.14,10259.74,1513000000,10259.74
+2002-01-03,10073.88,10227.36,10002.54,10172.14,1398900000,10172.14
+2002-01-02,10021.71,10125.85,9889.69,10073.40,1171000000,10073.40
+2001-12-31,10136.36,10178.71,10002.96,10021.57,943600000,10021.57
+2001-12-28,10133.94,10220.78,10067.17,10136.99,917400000,10136.99
+2001-12-27,10088.71,10187.71,10036.10,10131.31,876300000,10131.31
+2001-12-26,10035.55,10203.28,10014.10,10088.14,791100000,10088.14
+2001-12-24,10036.59,10114.91,9987.39,10035.34,439670000,10035.34
+2001-12-21,9986.84,10148.13,9935.70,10035.34,1694000000,10035.34
+2001-12-20,10064.13,10141.21,9912.76,9985.18,1490500000,9985.18
+2001-12-19,9994.59,10142.95,9876.96,10070.49,1484900000,10070.49
+2001-12-18,9893.22,10066.27,9876.19,9998.39,1354000000,9998.39
+2001-12-17,9809.42,9996.25,9747.77,9891.97,1260400000,9891.97
+2001-12-14,9764.72,9888.44,9661.14,9811.15,1306800000,9811.15
+2001-12-13,9889.13,9927.95,9691.30,9766.45,1511500000,9766.45
+2001-12-12,9887.27,9985.59,9745.42,9894.81,1449700000,9894.81
+2001-12-11,9925.60,10063.98,9794.48,9888.37,1367200000,9888.37
+2001-12-10,10047.04,10123.78,9868.03,9921.45,1218700000,9921.45
+2001-12-07,10099.14,10160.24,9938.54,10049.46,1248200000,10049.46
+2001-12-06,10113.53,10220.23,9997.98,10099.14,1487900000,10099.14
+2001-12-05,9891.35,10195.04,9875.92,10114.29,1765300000,10114.29
+2001-12-04,9765.55,9937.29,9700.24,9893.84,1318500000,9893.84
+2001-12-03,9848.93,9861.94,9651.87,9763.96,1202900000,9763.96
+2001-11-30,9828.80,9945.80,9752.26,9851.56,1343600000,9851.56
+2001-11-29,9710.34,9873.29,9629.72,9829.42,1375700000,9829.42
+2001-11-28,9867.06,9889.13,9662.80,9711.86,1423700000,9711.86
+2001-11-27,9980.33,10021.48,9776.07,9872.60,1288000000,9872.60
+2001-11-26,9961.58,10054.58,9862.22,9982.75,1129800000,9982.75
+2001-11-23,9833.09,9983.24,9804.37,9959.71,410300000,9959.71
+2001-11-21,9894.19,9932.31,9746.45,9834.68,1029300000,9834.68
+2001-11-20,9968.64,10023.37,9825.06,9901.38,1330200000,9901.38
+2001-11-19,9870.45,10040.46,9826.96,9976.46,1316800000,9976.46
+2001-11-16,9871.51,9967.94,9754.07,9866.99,1337400000,9866.99
+2001-11-15,9824.65,9967.46,9745.43,9872.39,1454500000,9872.39
+2001-11-14,9751.13,9943.18,9683.97,9823.61,1443400000,9823.61
+2001-11-13,9551.43,9811.29,9551.43,9750.95,1370100000,9750.95
+2001-11-12,9606.13,9642.25,9347.76,9554.37,991600000,9554.37
+2001-11-09,9586.96,9692.35,9478.75,9608.00,1093800000,9608.00
+2001-11-08,9558.39,9765.00,9506.91,9587.52,1517500000,9587.52
+2001-11-07,9584.68,9695.67,9457.99,9554.37,1411300000,9554.37
+2001-11-06,9437.09,9627.44,9315.79,9591.12,1356000000,9591.12
+2001-11-05,9326.59,9534.58,9326.59,9441.03,1267700000,9441.03
+2001-11-02,9264.52,9406.93,9152.91,9323.54,1121900000,9323.54
+2001-11-01,9087.45,9320.77,8987.61,9263.90,1317400000,9263.90
+2001-10-31,9123.64,9281.68,9018.26,9075.14,1352500000,9075.14
+2001-10-30,9264.52,9265.34,9011.96,9121.98,1297400000,9121.98
+2001-10-29,9543.37,9543.37,9232.83,9269.50,1106100000,9269.50
+2001-10-26,9462.28,9626.54,9369.35,9545.17,1244500000,9545.17
+2001-10-25,9342.29,9491.48,9143.09,9462.90,1364400000,9462.90
+2001-10-24,9341.40,9456.40,9218.29,9345.62,1336200000,9345.62
+2001-10-23,9379.17,9499.78,9249.02,9340.08,1317300000,9340.08
+2001-10-22,9203.91,9438.75,9101.08,9377.03,1105700000,9377.03
+2001-10-19,9162.81,9278.36,9027.74,9204.11,1294900000,9204.11
+2001-10-18,9230.75,9310.33,9061.02,9163.22,1262900000,9163.22
+2001-10-17,9389.76,9539.22,9199.89,9232.97,1452200000,9232.97
+2001-10-16,9346.31,9479.37,9239.68,9384.23,1210500000,9384.23
+2001-10-15,9340.84,9417.51,9181.07,9347.62,1024700000,9347.62
+2001-10-12,9409.07,9426.30,9146.34,9344.16,1331400000,9344.16
+2001-10-11,9242.63,9522.61,9204.04,9410.45,1704580000,9410.45
+2001-10-10,9052.30,9305.97,8975.15,9240.86,1312400000,9240.86
+2001-10-09,9066.56,9168.42,8927.34,9052.44,1227800000,9052.44
+2001-10-08,9115.75,9187.85,8937.86,9067.94,979000000,9067.94
+2001-10-05,9058.83,9208.41,8894.47,9119.77,1301700000,9119.77
+2001-10-04,9127.24,9259.61,8982.28,9060.88,1609100000,9060.88
+2001-10-03,8946.02,9193.32,8800.99,9123.78,1650600000,9123.78
+2001-10-02,8836.69,9001.03,8737.61,8950.59,1289800000,8950.59
+2001-10-01,8845.97,8931.70,8659.90,8836.83,1175600000,8836.83
+2001-09-28,8679.07,8945.68,8633.75,8847.56,1727400000,8847.56
+2001-09-27,8567.46,8757.47,8398.14,8681.42,1467000000,8681.42
+2001-09-26,8660.06,8766.81,8457.37,8567.39,1519100000,8567.39
+2001-09-25,8605.59,8778.23,8435.56,8659.97,1613800000,8659.97
+2001-09-24,8242.32,8733.39,8242.32,8603.86,1746600000,8603.86
+2001-09-21,8356.56,8484.22,7926.93,8235.81,2317300000,8235.81
+2001-09-20,8375.72,8711.38,8304.45,8376.21,2004800000,8376.21
+2001-09-19,8903.54,8990.37,8453.01,8759.13,2120550000,8759.13
+2001-09-18,8922.70,9126.89,8743.91,8903.40,1650410000,8903.40
+2001-09-17,9294.55,9294.55,8755.46,8920.70,2330830000,8920.70
+2001-09-10,9603.36,9740.44,9431.07,9605.51,1276600000,9605.51
+2001-09-07,9841.25,9842.08,9507.04,9605.85,1424300000,9605.85
+2001-09-06,10028.35,10053.73,9762.03,9840.84,1359700000,9840.84
+2001-09-05,9998.12,10140.79,9820.98,10033.27,1384500000,10033.27
+2001-09-04,9946.98,10238.50,9858.34,9997.49,1178300000,9997.49
+2001-08-31,9918.96,10072.22,9846.72,9949.75,920100000,9949.75
+2001-08-30,10077.07,10149.10,9829.35,9919.58,1157000000,9919.58
+2001-08-29,10224.45,10292.60,10030.43,10090.90,963700000,10090.90
+2001-08-28,10382.56,10405.88,10175.60,10222.03,987100000,10222.03
+2001-08-27,10422.76,10498.03,10334.88,10382.35,842600000,10382.35
+2001-08-24,10232.48,10487.52,10190.34,10423.17,1043600000,10423.17
+2001-08-23,10276.41,10357.09,10142.66,10229.15,986200000,10229.15
+2001-08-22,10170.30,10340.76,10099.07,10276.90,1110800000,10276.90
+2001-08-21,10320.07,10436.39,10132.92,10174.14,1041600000,10174.14
+2001-08-20,10239.33,10388.23,10146.05,10320.07,897100000,10320.07
+2001-08-17,10385.46,10418.68,10143.49,10240.78,974300000,10240.78
+2001-08-16,10342.10,10460.82,10198.15,10392.52,1055400000,10392.52
+2001-08-15,10407.05,10530.36,10289.01,10345.95,1065600000,10345.95
+2001-08-14,10416.95,10513.68,10333.29,10412.17,964600000,10412.17
+2001-08-13,10411.90,10504.82,10314.95,10415.91,837600000,10415.91
+2001-08-10,10296.89,10473.34,10164.67,10416.25,960900000,10416.25
+2001-08-09,10291.15,10361.52,10160.51,10298.56,1104200000,10298.56
+2001-08-08,10456.18,10509.80,10245.68,10293.50,1124600000,10293.50
+2001-08-07,10399.03,10520.11,10324.50,10458.74,1012000000,10458.74
+2001-08-06,10504.13,10549.59,10337.23,10401.31,811700000,10401.31
+2001-08-03,10550.01,10592.98,10381.10,10512.78,939900000,10512.78
+2001-08-02,10513.47,10663.07,10454.53,10551.18,1218300000,10551.18
+2001-08-01,10527.38,10659.33,10423.31,10510.01,1340300000,10510.01
+2001-07-31,10403.18,10639.40,10364.84,10522.81,1129200000,10522.81
+2001-07-30,10418.68,10513.26,10301.05,10401.72,909100000,10401.72
+2001-07-27,10451.89,10516.38,10316.27,10416.67,1015300000,10416.67
+2001-07-26,10403.46,10498.73,10237.46,10455.63,1213900000,10455.63
+2001-07-25,10241.75,10466.28,10159.34,10405.67,1280700000,10405.67
+2001-07-24,10423.80,10469.40,10170.82,10241.12,1198700000,10241.12
+2001-07-23,10576.92,10644.73,10374.81,10424.42,986900000,10424.42
+2001-07-20,10606.19,10668.33,10456.25,10576.65,1170900000,10576.65
+2001-07-19,10574.33,10758.14,10480.54,10610.00,1343500000,10610.00
+2001-07-18,10594.54,10676.83,10374.55,10569.83,1316300000,10569.83
+2001-07-17,10468.62,10683.76,10363.51,10606.39,1238100000,10606.39
+2001-07-16,10537.98,10649.02,10374.55,10472.12,1039800000,10472.12
+2001-07-13,10478.39,10615.42,10374.01,10539.06,1121700000,10539.06
+2001-07-12,10269.31,10542.02,10249.58,10478.99,1394000000,10478.99
+2001-07-11,10174.70,10355.83,10049.38,10241.02,1384100000,10241.02
+2001-07-10,10300.82,10406.87,10104.06,10175.64,1263800000,10175.64
+2001-07-09,10253.62,10389.91,10166.55,10299.40,1045700000,10299.40
+2001-07-06,10476.73,10483.82,10176.26,10252.68,1056700000,10252.68
+2001-07-05,10566.23,10617.47,10403.57,10479.86,934900000,10479.86
+2001-07-03,10588.89,10648.00,10479.99,10571.11,622110000,10571.11
+2001-07-02,10504.95,10707.24,10397.20,10593.72,1128300000,10593.72
+2001-06-29,10565.27,10729.18,10374.32,10502.40,1832360000,10502.40
+2001-06-28,10438.73,10736.43,10429.74,10566.21,1327300000,10566.21
+2001-06-27,10470.35,10608.48,10351.10,10434.84,1162100000,10434.84
+2001-06-26,10497.30,10600.90,10313.40,10472.48,1198900000,10472.48
+2001-06-25,10607.88,10711.19,10417.93,10504.22,1050100000,10504.22
+2001-06-22,10716.50,10753.27,10513.61,10604.59,1189200000,10604.59
+2001-06-21,10646.39,10848.47,10512.67,10715.43,1546820000,10715.43
+2001-06-20,10593.79,10770.88,10480.20,10647.33,1350100000,10647.33
+2001-06-19,10654.30,10793.46,10514.74,10596.67,1184900000,10596.67
+2001-06-18,10622.50,10781.45,10531.78,10645.38,1111600000,10645.38
+2001-06-15,10690.13,10792.25,10495.69,10623.64,1635550000,10623.64
+2001-06-14,10868.27,10874.91,10604.45,10690.13,1242900000,10690.13
+2001-06-13,10942.00,11065.92,10817.21,10871.62,1063600000,10871.62
+2001-06-12,10914.67,11009.93,10744.99,10948.38,1136500000,10948.38
+2001-06-11,10974.79,11038.56,10819.29,10922.09,870100000,10922.09
+2001-06-08,11095.62,11096.46,10882.92,10977.00,726200000,10977.00
+2001-06-07,11069.58,11169.34,10940.11,11090.74,1089600000,11090.74
+2001-06-06,11177.73,11236.68,10998.48,11070.24,1061900000,11070.24
+2001-06-05,11061.39,11234.98,10973.10,11175.84,1116800000,11175.84
+2001-06-04,10991.77,11125.99,10898.80,11061.52,836500000,11061.52
+2001-06-01,10913.57,11063.61,10793.46,10990.41,1015000000,10990.41
+2001-05-31,10873.23,11023.25,10798.53,10911.94,1226600000,10911.94
+2001-05-30,11032.96,11089.89,10819.74,10872.64,1158600000,10872.64
+2001-05-29,11004.66,11162.96,10913.44,11039.14,1026000000,11039.14
+2001-05-25,11122.03,11166.92,10949.01,11005.37,828100000,11005.37
+2001-05-24,11107.07,11248.19,10977.20,11122.42,1100700000,11122.42
+2001-05-23,11257.76,11308.44,11033.16,11105.51,1134800000,11105.51
+2001-05-22,11339.80,11411.63,11162.83,11257.24,1260400000,11257.24
+2001-05-21,11299.14,11436.42,11149.82,11337.92,1174900000,11337.92
+2001-05-18,11245.78,11374.87,11123.01,11301.74,1130800000,11301.74
+2001-05-17,11218.65,11413.46,11104.34,11248.58,1355600000,11248.58
+2001-05-16,10864.74,11258.21,10779.66,11215.92,1405300000,11215.92
+2001-05-15,10877.46,10979.35,10752.73,10872.97,1071800000,10872.97
+2001-05-14,10819.55,10930.09,10730.74,10877.33,858200000,10877.33
+2001-05-11,10908.30,10969.39,10716.16,10821.31,906200000,10821.31
+2001-05-10,10868.87,11049.39,10826.90,10910.44,1056700000,10910.44
+2001-05-09,10875.96,10964.84,10739.78,10866.98,1132400000,10866.98
+2001-05-08,10936.66,11001.66,10755.07,10883.51,1006300000,10883.51
+2001-05-07,10952.35,11059.51,10822.74,10935.17,949000000,10935.17
+2001-05-04,10793.20,10989.95,10638.48,10951.24,1082100000,10951.24
+2001-05-03,10872.32,10911.06,10657.99,10796.65,1137900000,10796.65
+2001-05-02,10902.77,11024.31,10726.77,10876.68,1342200000,10876.68
+2001-05-01,10734.05,10966.07,10669.32,10898.34,1181300000,10898.34
+2001-04-30,10814.41,10973.15,10666.13,10734.97,1226000000,10734.97
+2001-04-27,10694.95,10894.60,10632.36,10810.05,1091300000,10810.05
+2001-04-26,10633.01,10820.72,10533.98,10692.35,1345200000,10692.35
+2001-04-25,10453.43,10675.95,10373.14,10625.20,1203600000,10625.20
+2001-04-24,10529.75,10694.61,10401.45,10454.34,1216500000,10454.34
+2001-04-23,10571.00,10669.71,10393.05,10532.23,1012600000,10532.23
+2001-04-20,10690.33,10755.46,10445.43,10579.85,1338700000,10579.85
+2001-04-19,10616.09,10768.28,10468.79,10693.71,1486800000,10693.71
+2001-04-18,10226.88,10806.41,10215.69,10615.83,1918900000,10615.83
+2001-04-17,10151.73,10286.61,9980.22,10216.73,1109600000,10216.73
+2001-04-16,10118.16,10282.38,9991.14,10158.56,913900000,10158.56
+2001-04-12,10013.08,10178.22,9862.71,10126.94,1102000000,10126.94
+2001-04-11,10109.05,10246.59,9898.77,10013.47,1290300000,10013.47
+2001-04-10,9850.35,10226.85,9850.35,10102.74,1349600000,10102.74
+2001-04-09,9793.58,9999.35,9699.92,9845.15,1062800000,9845.15
+2001-04-06,9913.94,9951.73,9600.91,9791.09,1266800000,9791.09
+2001-04-05,9527.21,9969.92,9527.21,9918.05,1368000000,9918.05
+2001-04-04,9480.95,9693.05,9303.48,9515.42,1425590000,9515.42
+2001-04-03,9774.78,9779.74,9385.43,9485.71,1386100000,9485.71
+2001-04-02,9877.16,10043.02,9638.35,9777.93,1204200000,9777.93
+2001-03-30,9799.47,9998.49,9685.07,9878.78,1280800000,9878.78
+2001-03-29,9784.94,9950.22,9583.67,9799.06,1234500000,9799.06
+2001-03-28,9939.68,9939.68,9607.06,9785.35,1333400000,9785.35
+2001-03-27,9687.93,10012.98,9584.29,9947.54,1314200000,9947.54
+2001-03-26,9509.25,9820.50,9489.75,9687.53,1114000000,9687.53
+2001-03-23,9395.58,9631.80,9249.63,9504.78,1364900000,9504.78
+2001-03-22,9490.66,9565.40,9047.56,9389.48,1723950000,9389.48
+2001-03-21,9717.46,9807.08,9391.42,9487.00,1346300000,9487.00
+2001-03-20,9961.14,10130.45,9675.51,9720.76,1235900000,9720.76
+2001-03-19,9820.05,10059.08,9720.94,9959.11,1126200000,9959.11
+2001-03-16,10023.55,10119.44,9720.17,9823.41,1543560000,9823.41
+2001-03-15,9982.92,10190.80,9887.68,10031.28,1259500000,10031.28
+2001-03-14,10279.42,10279.42,9817.74,9973.46,1397400000,9973.46
+2001-03-13,10206.89,10397.83,10021.60,10290.80,1360900000,10290.80
+2001-03-12,10638.52,10638.63,10138.90,10208.25,1229000000,10208.25
+2001-03-09,10850.11,10874.15,10520.42,10644.62,1085900000,10644.62
+2001-03-08,10727.16,10940.45,10625.95,10858.25,1114100000,10858.25
+2001-03-07,10591.86,10822.23,10524.76,10729.60,1132200000,10729.60
+2001-03-06,10570.17,10759.40,10508.43,10591.22,1091800000,10591.22
+2001-03-05,10468.93,10659.52,10393.59,10562.30,929200000,10562.30
+2001-03-02,10438.04,10645.57,10239.81,10466.31,1294000000,10466.31
+2001-03-01,10493.25,10605.23,10236.92,10450.14,1294900000,10450.14
+2001-02-28,10639.32,10750.23,10374.62,10495.28,1225300000,10495.28
+2001-02-27,10638.44,10787.29,10463.92,10636.88,1114100000,10636.88
+2001-02-26,10447.59,10701.92,10347.59,10642.53,1130800000,10642.53
+2001-02-23,10529.25,10595.01,10225.14,10441.90,1231300000,10441.90
+2001-02-22,10527.80,10694.50,10278.93,10526.81,1365900000,10526.81
+2001-02-21,10721.29,10828.48,10468.32,10526.58,1208500000,10526.58
+2001-02-20,10800.23,10988.29,10612.25,10730.88,1112200000,10730.88
+2001-02-16,10884.11,10946.11,10652.33,10799.82,1257200000,10799.82
+2001-02-15,10800.65,11023.44,10694.43,10891.02,1153700000,10891.02
+2001-02-14,10899.42,10989.61,10683.39,10795.41,1150300000,10795.41
+2001-02-13,10950.18,11114.44,10774.98,10903.32,1075200000,10903.32
+2001-02-12,10779.42,11024.92,10727.02,10946.77,1039100000,10946.77
+2001-02-09,10878.51,10979.12,10682.77,10781.45,1075500000,10781.45
+2001-02-08,10940.62,11080.42,10776.04,10880.55,1107200000,10880.55
+2001-02-07,10948.95,11140.09,10794.29,10946.72,1158300000,10946.72
+2001-02-06,10965.03,11117.80,10820.28,10957.42,1059600000,10957.42
+2001-02-05,10860.44,11061.42,10759.98,10965.85,1013000000,10965.85
+2001-02-02,10982.71,11093.01,10786.69,10864.10,1048400000,10864.10
+2001-02-01,10884.82,11063.95,10759.85,10983.63,1118800000,10983.63
+2001-01-31,10882.25,11072.28,10705.23,10887.36,1295300000,10887.36
+2001-01-30,10702.19,10950.38,10609.77,10881.20,1149800000,10881.20
+2001-01-29,10657.13,10832.56,10515.99,10702.19,1053100000,10702.19
+2001-01-26,10727.08,10874.28,10506.26,10659.98,1098000000,10659.98
+2001-01-25,10644.53,10882.42,10520.90,10729.52,1258000000,10729.52
+2001-01-24,10651.85,10795.80,10483.49,10646.97,1309000000,10646.97
+2001-01-23,10575.80,10773.94,10459.91,10649.81,1232600000,10649.81
+2001-01-22,10581.90,10749.44,10371.66,10578.24,1164000000,10578.24
+2001-01-19,10686.00,10792.14,10448.93,10587.59,1407800000,10587.59
+2001-01-18,10584.57,10834.43,10466.01,10678.28,1445000000,10678.28
+2001-01-17,10660.95,10817.35,10442.83,10584.34,1349100000,10584.34
+2001-01-16,10525.78,10751.48,10362.72,10652.66,1205700000,10652.66
+2001-01-12,10608.74,10743.75,10339.94,10525.38,1276000000,10525.38
+2001-01-11,10600.20,10808.00,10400.94,10609.55,1411200000,10609.55
+2001-01-10,10568.48,10728.30,10325.71,10604.27,1296500000,10604.27
+2001-01-09,10625.21,10801.09,10387.12,10572.55,1191300000,10572.55
+2001-01-08,10658.73,10818.98,10407.85,10621.35,1115500000,10621.35
+2001-01-05,10912.81,10990.59,10492.84,10662.01,1430800000,10662.01
+2001-01-04,10944.94,11224.41,10672.58,10912.41,216940000,10912.41
+2001-01-03,10637.42,11212.62,10367.19,10945.75,188070000,10945.75
+2001-01-02,10790.92,10916.98,10450.55,10646.15,1129400000,10646.15
+2000-12-29,10868.76,11031.05,10675.75,10787.99,1035500000,10787.99
+2000-12-28,10795.20,11009.44,10645.42,10868.76,1015300000,10868.76
+2000-12-27,10690.10,10944.60,10551.00,10803.16,1092700000,10803.16
+2000-12-26,10638.21,10813.78,10479.71,10692.44,806500000,10692.44
+2000-12-22,10495.26,10772.07,10364.06,10635.56,1087100000,10635.56
+2000-12-21,10314.38,10651.96,10158.16,10487.29,1449900000,10487.29
+2000-12-20,10580.97,10604.08,10197.59,10318.93,1421600000,10318.93
+2000-12-19,10643.14,10865.35,10441.41,10584.37,1324900000,10584.37
+2000-12-18,10433.34,10783.82,10417.43,10645.42,1189900000,10645.42
+2000-12-15,10647.98,10706.84,10324.24,10434.96,156110000,10434.96
+2000-12-14,10794.82,10864.49,10508.53,10674.99,1061300000,10674.99
+2000-12-13,10777.95,11002.23,10653.76,10794.44,1195100000,10794.44
+2000-12-12,10722.77,10968.77,10582.09,10768.27,1083400000,10768.27
+2000-12-11,10719.36,10931.33,10521.04,10725.80,1202400000,10725.80
+2000-12-08,10632.14,10896.82,10534.69,10712.91,1358300000,10712.91
+2000-12-07,10644.66,10791.40,10448.99,10617.36,1128000000,10617.36
+2000-12-06,10896.14,10995.41,10513.84,10664.38,1399300000,10664.38
+2000-12-05,10576.78,11044.70,10504.36,10898.72,900300000,10898.72
+2000-12-04,10377.33,10701.35,10227.17,10560.95,1103000000,10560.95
+2000-12-01,10416.76,10645.42,10238.54,10373.54,1195200000,10373.54
+2000-11-30,10610.53,10690.16,10204.80,10414.49,1186530000,10414.49
+2000-11-29,10502.74,10746.66,10383.02,10629.11,402100000,10629.11
+2000-11-28,10537.86,10730.35,10356.47,10507.58,1028200000,10507.58
+2000-11-27,10479.33,10758.04,10411.08,10546.07,946100000,10546.07
+2000-11-24,10403.87,10596.50,10354.20,10470.23,404870000,10470.23
+2000-11-22,10484.26,10589.67,10251.06,10399.32,963200000,10399.32
+2000-11-21,10465.57,10676.13,10303.39,10494.50,1137100000,10494.50
+2000-11-20,10624.18,10707.22,10331.45,10462.65,955800000,10462.65
+2000-11-17,10657.13,10824.77,10462.55,10629.87,1070400000,10629.87
+2000-11-16,10705.33,10857.38,10536.30,10656.03,956300000,10656.03
+2000-11-15,10681.21,10863.83,10544.17,10707.60,1066800000,10707.60
+2000-11-14,10528.25,10809.61,10484.64,10681.06,1118800000,10681.06
+2000-11-13,10595.35,10701.54,10273.24,10517.25,1129300000,10517.25
+2000-11-10,10813.78,10886.20,10497.53,10602.95,962500000,10602.95
+2000-11-09,10902.11,10989.34,10576.40,10834.25,1111000000,10834.25
+2000-11-08,10954.34,11152.02,10779.27,10907.06,909300000,10907.06
+2000-11-07,10978.72,11105.75,10825.15,10952.18,880900000,10952.18
+2000-11-06,10820.60,11092.10,10741.73,10977.21,930900000,10977.21
+2000-11-03,10883.17,10996.17,10650.72,10817.95,997700000,10817.95
+2000-11-02,10903.17,11071.06,10731.49,10880.51,1167700000,10880.51
+2000-11-01,10966.21,11103.10,10736.42,10899.47,1206800000,10899.47
+2000-10-31,10835.39,11108.79,10681.06,10971.14,1366400000,10971.14
+2000-10-30,10588.06,10944.98,10506.25,10835.77,1186500000,10835.77
+2000-10-27,10381.60,10696.43,10296.70,10590.62,1086300000,10590.62
+2000-10-26,10330.18,10563.25,10128.18,10380.12,1303800000,10380.12
+2000-10-25,10395.66,10563.99,10170.08,10326.48,1315600000,10326.48
+2000-10-24,10273.57,10583.96,10136.69,10393.07,1158600000,10393.07
+2000-10-23,10230.29,10496.28,10078.24,10271.72,1046800000,10271.72
+2000-10-20,10141.13,10406.76,9925.82,10226.59,1177400000,10226.59
+2000-10-19,10014.61,10317.23,9901.77,10142.98,1297900000,10142.98
+2000-10-18,10085.99,10171.47,9571.40,9975.02,1441700000,9975.02
+2000-10-17,10242.87,10402.32,9924.34,10089.71,1161500000,10089.71
+2000-10-16,10184.78,10428.95,10033.84,10238.80,1005400000,10238.80
+2000-10-13,10031.62,10325.37,9883.27,10192.18,1223900000,10192.18
+2000-10-12,10424.14,10462.25,9873.66,10034.58,1388600000,10034.58
+2000-10-11,10521.07,10647.23,10228.44,10413.79,1387500000,10413.79
+2000-10-10,10569.17,10744.52,10377.16,10524.40,1044000000,10524.40
+2000-10-09,10596.91,10762.10,10438.94,10568.43,716600000,10568.43
+2000-10-06,10726.76,10871.42,10440.05,10596.54,1150100000,10596.54
+2000-10-05,10783.72,10940.23,10570.28,10724.92,1176100000,10724.92
+2000-10-04,10723.33,10972.41,10596.54,10784.48,1167400000,10784.48
+2000-10-03,10709.84,10976.11,10561.03,10719.74,1098100000,10719.74
+2000-10-02,10659.06,10876.23,10479.27,10700.13,1051200000,10700.13
+2000-09-29,10821.40,10923.21,10552.15,10650.92,1197100000,10650.92
+2000-09-28,10629.84,10948.00,10539.48,10824.06,1206200000,10824.06
+2000-09-27,10634.45,10821.10,10439.31,10628.36,1174700000,10628.36
+2000-09-26,10806.30,10915.44,10499.61,10631.32,1106600000,10631.32
+2000-09-25,10847.37,11039.47,10664.24,10808.15,982400000,10808.15
+2000-09-22,10678.30,10936.53,10505.16,10847.37,1185500000,10847.37
+2000-09-21,10680.52,10902.12,10548.08,10765.52,1105400000,10765.52
+2000-09-20,10794.47,10906.93,10500.35,10687.92,1104000000,10687.92
+2000-09-19,10812.22,10960.95,10645.38,10789.29,1024900000,10789.29
+2000-09-18,10926.42,11053.80,10693.84,10808.52,962500000,10808.52
+2000-09-15,11087.84,11203.26,10857.73,10927.00,1268400000,10927.00
+2000-09-14,11189.58,11285.39,10986.47,11087.47,1014000000,11087.47
+2000-09-13,11225.03,11350.87,11020.14,11182.18,1068300000,11182.18
+2000-09-12,11197.71,11351.98,11015.70,11233.23,991200000,11233.23
+2000-09-11,11219.54,11367.15,11043.07,11195.49,899300000,11195.49
+2000-09-08,11261.72,11381.95,11059.72,11220.65,961000000,11220.65
+2000-09-07,11316.01,11444.84,11124.83,11259.87,985500000,11259.87
+2000-09-06,11253.58,11518.83,11186.25,11310.64,995100000,11310.64
+2000-09-05,11221.76,11382.69,11094.50,11260.61,838500000,11260.61
+2000-09-01,11219.54,11406.74,11130.01,11238.78,767700000,11238.78
+2000-08-31,11105.23,11415.99,11040.85,11215.10,1056600000,11215.10
+2000-08-30,11209.01,11282.06,11034.57,11103.01,818400000,11103.01
+2000-08-29,11249.27,11356.42,11100.79,11215.10,795600000,11215.10
+2000-08-28,11194.48,11410.44,11123.35,11252.84,733600000,11252.84
+2000-08-25,11180.54,11301.41,11073.59,11192.63,685600000,11192.63
+2000-08-24,11143.91,11302.51,11009.12,11182.74,837100000,11182.74
+2000-08-23,11130.55,11253.06,10990.44,11144.65,871000000,11144.65
+2000-08-22,11082.20,11274.67,11000.33,11139.15,818800000,11139.15
+2000-08-21,11058.85,11193.73,10945.39,11079.81,731600000,11079.81
+2000-08-18,11051.20,11180.54,10933.30,11046.48,821400000,11046.48
+2000-08-17,11010.95,11180.91,10899.24,11055.64,922400000,11055.64
+2000-08-16,11068.83,11171.02,10888.62,11008.39,929800000,11008.39
+2000-08-15,11175.05,11227.06,10965.54,11067.00,895900000,11067.00
+2000-08-14,11027.07,11232.92,10928.91,11176.14,783800000,11176.14
+2000-08-11,10905.98,11131.83,10841.37,11027.80,835500000,11027.80
+2000-08-10,10901.06,11069.93,10779.47,10908.76,940800000,10908.76
+2000-08-09,10970.94,11097.03,10780.02,10905.83,1054000000,10905.83
+2000-08-08,10865.15,11083.11,10741.38,10976.89,992200000,10976.89
+2000-08-07,10773.98,10973.23,10657.50,10867.01,854800000,10867.01
+2000-08-04,10713.36,10873.97,10555.68,10767.75,956000000,10767.75
+2000-08-03,10679.37,10844.30,10518.68,10706.58,1095600000,10706.58
+2000-08-02,10609.15,10818.66,10514.29,10687.53,986300000,10687.53
+2000-08-01,10523.81,10728.92,10428.58,10606.95,938700000,10606.95
+2000-07-31,10514.29,10727.09,10374.00,10521.98,952600000,10521.98
+2000-07-28,10594.97,10732.14,10367.28,10511.17,980000000,10511.17
+2000-07-27,10516.83,10745.93,10450.01,10586.13,1156400000,10586.13
+2000-07-26,10689.36,10790.13,10447.18,10516.48,1235800000,10516.48
+2000-07-25,10689.28,10867.20,10557.49,10699.97,969400000,10699.97
+2000-07-24,10731.44,10895.84,10545.47,10685.12,880300000,10685.12
+2000-07-21,10843.51,10949.58,10614.06,10733.56,968300000,10733.56
+2000-07-20,10700.68,10980.34,10671.33,10843.87,1064600000,10843.87
+2000-07-19,10724.15,10907.15,10587.89,10696.08,909400000,10696.08
+2000-07-18,10799.16,10895.57,10613.00,10739.92,908300000,10739.92
+2000-07-17,10812.40,10969.38,10653.30,10804.27,906000000,10804.27
+2000-07-14,10793.31,10935.44,10661.43,10812.75,960600000,10812.75
+2000-07-13,10774.92,10963.02,10643.40,10788.71,1026800000,10788.71
+2000-07-12,10722.24,10930.84,10639.51,10783.76,1001200000,10783.76
+2000-07-11,10649.06,10877.46,10544.76,10727.19,980500000,10727.19
+2000-07-10,10627.14,10792.25,10520.01,10646.58,838700000,10646.58
+2000-07-07,10483.33,10742.04,10419.25,10635.98,931700000,10635.98
+2000-07-06,10481.45,10644.11,10303.28,10481.47,947300000,10481.47
+2000-07-05,10538.23,10674.16,10362.33,10483.60,1019300000,10483.60
+2000-07-03,10450.36,10610.17,10353.66,10560.67,451900000,10560.67
+2000-06-30,10393.09,10626.79,10161.51,10447.89,1459700000,10447.89
+2000-06-29,10523.90,10582.94,10279.24,10398.04,1110900000,10398.04
+2000-06-28,10506.39,10712.70,10399.10,10527.79,1095100000,10527.79
+2000-06-27,10541.58,10741.69,10384.60,10504.46,1042500000,10504.46
+2000-06-26,10403.69,10680.26,10365.15,10542.99,889000000,10542.99
+2000-06-23,10376.47,10555.37,10283.13,10404.75,847600000,10404.75
+2000-06-22,10495.97,10596.73,10256.97,10376.12,1022700000,10376.12
+2000-06-21,10446.83,10607.69,10312.48,10497.74,1009600000,10497.74
+2000-06-20,10558.90,10632.09,10318.84,10435.16,1031500000,10435.16
+2000-06-19,10448.40,10733.56,10322.02,10557.84,921700000,10557.84
+2000-06-16,10717.76,10784.47,10393.44,10449.30,1250800000,10449.30
+2000-06-15,10689.63,10889.48,10552.89,10714.82,1011400000,10714.82
+2000-06-14,10632.46,10860.84,10542.99,10687.95,929700000,10687.95
+2000-06-13,10562.31,10751.86,10395.56,10621.84,935900000,10621.84
+2000-06-12,10615.12,10757.60,10476.88,10564.21,774100000,10564.21
+2000-06-09,10678.47,10848.38,10515.52,10614.06,786000000,10614.06
+2000-06-08,10818.78,10887.72,10524.92,10668.72,854300000,10668.72
+2000-06-07,10733.48,10974.07,10588.64,10812.86,854600000,10812.86
+2000-06-06,10822.61,10916.97,10592.82,10735.57,950100000,10735.57
+2000-06-05,10793.11,10951.79,10629.03,10815.30,838600000,10815.30
+2000-06-02,10660.09,11013.05,10600.46,10794.76,1162400000,10794.76
+2000-06-01,10532.27,10780.37,10422.95,10652.20,960100000,10652.20
+2000-05-31,10528.28,10692.73,10377.37,10522.33,960500000,10522.33
+2000-05-30,10302.31,10596.00,10287.94,10527.13,844200000,10527.13
+2000-05-26,10322.89,10487.72,10163.20,10299.24,722600000,10299.24
+2000-05-25,10529.87,10644.32,10207.75,10323.92,984500000,10323.92
+2000-05-24,10420.90,10679.53,10240.99,10535.35,1152300000,10535.35
+2000-05-23,10539.12,10671.74,10325.63,10422.27,869900000,10422.27
+2000-05-22,10624.79,10718.00,10308.15,10542.55,869000000,10542.55
+2000-05-19,10764.22,10821.83,10468.18,10626.85,853700000,10626.85
+2000-05-18,10771.80,10938.34,10669.00,10777.28,807900000,10777.28
+2000-05-17,10930.64,10947.25,10648.78,10769.74,820500000,10769.74
+2000-05-16,10816.01,11086.72,10723.48,10934.57,955500000,10934.57
+2000-05-15,10606.97,10902.36,10509.31,10807.78,854600000,10807.78
+2000-05-12,10549.06,10780.37,10444.54,10609.37,858200000,10609.37
+2000-05-11,10369.27,10676.88,10315.69,10545.97,953600000,10545.97
+2000-05-10,10533.09,10649.95,10169.77,10367.78,1006400000,10367.78
+2000-05-09,10607.54,10765.75,10435.96,10536.75,896600000,10536.75
+2000-05-08,10571.31,10744.22,10400.40,10603.63,787600000,10603.63
+2000-05-05,10409.70,10688.61,10312.91,10577.86,805500000,10577.86
+2000-05-04,10478.89,10631.53,10293.05,10412.49,925800000,10412.49
+2000-05-03,10732.21,10754.39,10345.17,10480.13,991600000,10480.13
+2000-05-02,10805.58,10932.47,10580.65,10731.12,1011500000,10731.12
+2000-05-01,10749.42,11001.34,10622.22,10811.78,966300000,10811.78
+2000-04-28,10892.76,11005.07,10632.46,10733.91,984600000,10733.91
+2000-04-27,10941.91,11024.61,10650.14,10888.10,1111000000,10888.10
+2000-04-26,11127.92,11246.75,10816.44,10945.50,999600000,10945.50
+2000-04-25,10916.65,11265.67,10764.62,11124.82,1071100000,11124.82
+2000-04-24,10822.33,11060.29,10579.10,10906.10,868700000,10906.10
+2000-04-20,10668.19,10941.47,10582.51,10844.05,896200000,10844.05
+2000-04-19,10748.97,10909.20,10503.40,10674.96,1001400000,10674.96
+2000-04-18,10584.02,10941.78,10424.90,10767.42,1109400000,10767.42
+2000-04-17,10303.29,10721.50,10128.62,10582.51,1204700000,10582.51
+2000-04-14,10922.85,10922.85,10173.92,10305.77,1279700000,10305.77
+2000-04-13,11132.58,11290.80,10806.51,10923.55,1032000000,10923.55
+2000-04-12,11283.05,11600.43,11026.47,11125.13,1175900000,11125.13
+2000-04-11,11180.98,11459.58,11024.22,11287.08,971400000,11287.08
+2000-04-10,11114.89,11404.35,10955.43,11186.56,853700000,11186.56
+2000-04-07,11122.03,11317.79,10932.78,11111.48,891600000,11111.48
+2000-04-06,11029.56,11303.83,10921.07,11114.27,1008000000,11114.27
+2000-04-05,11163.29,11326.79,10894.00,11033.92,1110300000,11033.92
+2000-04-04,11225.34,11531.24,10682.72,11164.84,1515460000,11164.84
+2000-04-03,10863.28,11344.17,10821.71,11221.93,1021700000,11221.93
+2000-03-31,10993.28,11244.58,10801.23,10921.92,1227400000,10921.92
+2000-03-30,11008.17,11258.23,10796.58,10980.25,1193400000,10980.25
+2000-03-29,10939.05,11214.48,10792.24,11018.72,1061900000,11018.72
+2000-03-28,11023.68,11192.76,10804.65,10936.11,959100000,10936.11
+2000-03-27,11093.25,11274.98,10881.90,11025.85,901000000,11025.85
+2000-03-24,11107.45,11311.28,10901.44,11112.72,1052200000,11112.72
+2000-03-23,10884.38,11224.72,10737.63,11119.86,1078300000,11119.86
+2000-03-22,10916.96,11054.71,10671.86,10866.70,1075000000,10866.70
+2000-03-21,10680.24,11012.20,10515.50,10907.34,1065900000,10907.34
+2000-03-20,10594.75,10866.08,10456.86,10680.24,920800000,10680.24
+2000-03-17,10629.98,10849.32,10399.15,10595.23,1295100000,10595.23
+2000-03-16,10139.58,10716.23,10139.58,10630.60,1482300000,10630.60
+2000-03-15,9808.15,10294.60,9676.90,10131.41,1302800000,10131.41
+2000-03-14,9957.67,10149.41,9747.33,9811.24,1094000000,9811.24
+2000-03-13,9911.22,10111.25,9670.07,9947.13,1016100000,9947.13
+2000-03-10,10008.55,10211.77,9792.93,9928.82,1138800000,9928.82
+2000-03-09,9855.29,10097.28,9667.28,10010.73,1123000000,10010.73
+2000-03-08,9800.69,10037.41,9611.75,9856.53,1203000000,9856.53
+2000-03-07,10197.61,10208.66,9651.77,9796.03,1314100000,9796.03
+2000-03-06,10358.96,10518.91,10038.65,10170.50,1029000000,10170.50
+2000-03-03,10171.12,10581.89,10148.16,10367.20,1150300000,10367.20
+2000-03-02,10135.44,10361.61,9986.53,10164.92,1198600000,10164.92
+2000-03-01,10128.11,10355.72,9935.96,10137.93,1274100000,10137.93
+2000-02-29,10039.58,10332.14,9926.65,10128.31,1204300000,10128.31
+2000-02-28,9854.66,10228.52,9760.36,10038.65,1026500000,10038.65
+2000-02-25,10090.77,10196.02,9767.80,9862.12,1065200000,9862.12
+2000-02-24,10242.48,10321.90,9877.94,10092.63,1215000000,10092.63
+2000-02-23,10294.82,10443.21,10077.74,10225.73,993700000,10225.73
+2000-02-22,10219.83,10446.62,10011.66,10304.84,980000000,10304.84
+2000-02-18,10514.57,10562.34,10129.24,10219.52,1042300000,10219.52
+2000-02-17,10565.76,10768.66,10348.66,10514.57,1034800000,10514.57
+2000-02-16,10711.82,10831.64,10468.65,10561.41,1018800000,10561.41
+2000-02-15,10520.15,10821.09,10377.44,10718.09,1092100000,10718.09
+2000-02-14,10431.65,10674.96,10327.56,10519.84,927300000,10519.84
+2000-02-11,10638.64,10763.38,10301.12,10425.21,1025700000,10425.21
+2000-02-10,10697.92,10853.67,10491.30,10643.63,1058800000,10643.63
+2000-02-09,10948.82,11016.54,10647.97,10699.16,1050500000,10699.16
+2000-02-08,10904.26,11139.40,10826.67,10957.60,1047700000,10957.60
+2000-02-07,10965.97,11097.52,10732.67,10905.79,918100000,10905.79
+2000-02-04,11014.37,11200.83,10847.54,10963.80,1045100000,10963.80
+2000-02-03,11010.48,11207.97,10799.68,11013.44,1146500000,11013.44
+2000-02-02,11037.64,11228.44,10876.00,11003.20,1038600000,11003.20
+2000-02-01,10937.74,11187.18,10798.44,11041.05,981000000,11041.05
+2000-01-31,10735.77,11059.67,10610.43,10940.53,993800000,10940.53
+2000-01-28,11024.92,11115.20,10649.21,10738.87,1095800000,10738.87
+2000-01-27,11035.55,11274.36,10818.30,11028.02,1129500000,11028.02
+2000-01-26,11025.85,11280.87,10870.73,11032.99,1117300000,11032.99
+2000-01-25,11010.96,11228.75,10779.83,11029.89,1073700000,11029.89
+2000-01-24,11251.94,11501.15,10849.01,11008.17,1115800000,11008.17
+2000-01-21,11356.26,11513.87,11113.65,11251.71,1209800000,11251.71
+2000-01-20,11490.29,11654.72,11194.32,11351.30,1100700000,11351.30
+2000-01-19,11535.24,11710.57,11320.28,11489.36,1087800000,11489.36
+2000-01-18,11719.19,11834.67,11397.22,11560.72,1056700000,11560.72
+2000-01-14,11619.35,11908.50,11506.42,11722.98,1085900000,11722.98
+2000-01-13,11558.24,11761.14,11421.42,11582.43,1030400000,11582.43
+2000-01-12,11506.73,11751.83,11385.74,11551.10,974600000,11551.10
+2000-01-11,11568.47,11748.11,11398.30,11511.08,1014000000,11511.08
+2000-01-10,11532.48,11765.17,11427.00,11572.20,1064800000,11572.20
+2000-01-07,11247.06,11655.65,11168.26,11522.56,1225200000,11522.56
+2000-01-06,11113.37,11447.79,10963.18,11253.26,1092300000,11253.26
+2000-01-05,10989.37,11337.65,10862.66,11122.65,1085500000,11122.65
+2000-01-04,11349.75,11358.44,10907.03,10997.93,1009000000,10997.93
+2000-01-03,11501.85,11641.07,11180.98,11357.51,931800000,11357.51
+1999-12-31,11453.48,11598.26,11368.05,11497.12,374050000,11497.12
+1999-12-30,11484.36,11640.33,11388.94,11452.86,554680000,11452.86
+1999-12-29,11472.88,11658.68,11367.53,11484.66,567860000,11484.66
+1999-12-28,11389.24,11613.72,11302.08,11476.71,655400000,11476.71
+1999-12-27,11410.65,11603.02,11253.15,11391.08,722600000,11391.08
+1999-12-23,11202.07,11506.38,11202.07,11405.76,728600000,11405.76
+1999-12-22,11199.45,11375.17,11075.76,11203.60,850000000,11203.60
+1999-12-21,11142.43,11336.03,10973.61,11200.54,963500000,11200.54
+1999-12-20,11254.50,11417.38,11026.22,11144.27,904600000,11144.27
+1999-12-17,11259.26,11497.20,11103.59,11257.43,1349800000,11257.43
+1999-12-16,11224.40,11396.89,11016.13,11244.89,1070300000,11244.89
+1999-12-15,11158.78,11400.48,11014.60,11225.32,1033900000,11225.32
+1999-12-14,11195.34,11336.33,11027.13,11160.17,1027800000,11160.17
+1999-12-13,11217.46,11379.46,11024.38,11192.59,977600000,11192.59
+1999-12-10,11137.85,11358.66,11042.12,11224.70,987200000,11224.70
+1999-12-09,11073.62,11327.46,10962.60,11134.79,1122100000,11134.79
+1999-12-08,11107.26,11273.33,10957.41,11068.12,957000000,11068.12
+1999-12-07,11221.65,11351.32,10993.49,11106.65,1085800000,11106.65
+1999-12-06,11286.79,11412.79,11100.53,11225.01,916800000,11225.01
+1999-12-03,11046.10,11423.50,11046.10,11286.18,1006400000,11286.18
+1999-12-02,10995.02,11183.72,10896.24,11039.06,900700000,11039.06
+1999-12-01,10876.47,11111.24,10798.07,10998.39,884000000,10998.39
+1999-11-30,10945.49,11142.13,10785.22,10877.81,951500000,10877.81
+1999-11-29,10985.73,11059.25,10813.97,10947.92,866100000,10947.92
+1999-11-26,11007.26,11115.83,10938.44,10988.91,312120000,10988.91
+1999-11-24,11000.22,11131.12,10859.23,11008.17,734800000,11008.17
+1999-11-23,11090.29,11178.83,10899.60,10995.63,926100000,10995.63
+1999-11-22,11008.78,11195.34,10887.67,11089.52,873500000,11089.52
+1999-11-19,11033.25,11146.41,10871.77,11003.89,893800000,11003.89
+1999-11-18,10887.67,11147.02,10859.92,11035.70,1022800000,11035.70
+1999-11-17,10929.00,11040.90,10774.21,10883.09,960000000,10883.09
+1999-11-16,10762.89,10992.88,10691.94,10932.33,942200000,10932.33
+1999-11-15,10764.73,10899.22,10626.80,10760.75,795700000,10760.75
+1999-11-12,10593.51,10845.16,10513.03,10769.32,900200000,10769.32
+1999-11-11,10603.25,10716.71,10485.20,10595.30,891300000,10595.30
+1999-11-10,10611.94,10713.04,10449.42,10597.74,984700000,10597.74
+1999-11-09,10715.10,10806.02,10506.61,10617.32,854300000,10617.32
+1999-11-08,10668.42,10838.74,10548.20,10718.85,806800000,10718.85
+1999-11-05,10639.95,10885.53,10636.59,10704.48,1007300000,10704.48
+1999-11-04,10612.42,10817.95,10523.43,10639.64,981700000,10639.64
+1999-11-03,10582.54,10759.22,10485.50,10609.06,914400000,10609.06
+1999-11-02,10653.71,10816.11,10508.14,10581.84,904500000,10581.84
+1999-11-01,10730.78,10828.96,10568.08,10648.51,861000000,10648.51
+1999-10-29,10629.18,10883.10,10580.11,10729.86,1120500000,10729.86
+1999-10-28,10397.67,10726.70,10397.67,10622.53,1135100000,10622.53
+1999-10-27,10302.76,10515.21,10172.32,10394.89,950100000,10394.89
+1999-10-26,10350.88,10486.39,10208.73,10302.13,878300000,10302.13
+1999-10-25,10468.98,10518.37,10225.82,10349.93,777000000,10349.93
+1999-10-22,10581.69,10581.69,10301.18,10470.25,959200000,10470.25
+1999-10-21,10390.71,10414.52,10047.57,10297.69,1012500000,10297.69
+1999-10-20,10203.31,10485.13,10144.46,10392.36,928800000,10392.36
+1999-10-19,10117.54,10418.01,10093.80,10204.93,905700000,10204.93
+1999-10-18,10018.45,10221.08,9884.20,10116.28,818700000,10116.28
+1999-10-15,10286.61,10286.61,9911.43,10019.71,912600000,10019.71
+1999-10-14,10230.89,10416.74,10071.64,10286.61,892300000,10286.61
+1999-10-13,10412.31,10495.89,10173.58,10232.16,821500000,10232.16
+1999-10-12,10648.81,10659.58,10366.08,10417.06,778300000,10417.06
+1999-10-11,10649.76,10781.16,10545.60,10648.18,655900000,10648.18
+1999-10-08,10534.52,10743.48,10423.71,10649.76,897300000,10649.76
+1999-10-07,10588.34,10687.12,10430.99,10537.05,827800000,10537.05
+1999-10-06,10399.77,10655.46,10340.75,10588.34,895200000,10588.34
+1999-10-05,10401.23,10578.21,10250.20,10400.59,965700000,10400.59
+1999-10-04,10274.58,10538.32,10220.44,10401.23,803300000,10401.23
+1999-10-01,10335.69,10425.92,10108.05,10273.00,896200000,10273.00
+1999-09-30,10214.11,10456.32,10156.85,10336.95,1017600000,10336.95
+1999-09-29,10274.27,10408.51,10119.76,10213.48,856000000,10213.48
+1999-09-28,10300.51,10386.03,10055.17,10275.53,885400000,10275.53
+1999-09-27,10279.33,10498.74,10201.76,10303.39,780600000,10303.39
+1999-09-24,10311.94,10428.14,10128.63,10279.33,872800000,10279.33
+1999-09-23,10524.07,10643.75,10260.33,10318.59,890800000,10318.59
+1999-09-22,10599.42,10688.39,10407.56,10524.07,822200000,10524.07
+1999-09-21,10822.95,10822.95,10517.10,10598.47,817300000,10598.47
+1999-09-20,10801.87,10918.88,10715.93,10823.90,568000000,10823.90
+1999-09-17,10745.38,10946.74,10690.61,10803.63,861900000,10803.63
+1999-09-16,10795.77,10876.46,10592.46,10737.46,739000000,10737.46
+1999-09-15,10910.40,11049.96,10757.41,10801.42,787300000,10801.42
+1999-09-14,11028.74,11061.04,10815.67,10910.33,734500000,10910.33
+1999-09-13,11027.40,11146.52,10886.90,11030.33,657900000,11030.33
+1999-09-10,11087.00,11218.39,10965.74,11028.43,808500000,11028.43
+1999-09-09,11031.28,11172.17,10900.83,11079.40,773900000,11079.40
+1999-09-08,11034.13,11164.89,10898.62,11036.34,791200000,11036.34
+1999-09-07,11079.08,11191.80,10910.65,11034.13,715300000,11034.13
+1999-09-03,10922.36,11155.70,10922.36,11078.45,663200000,11078.45
+1999-09-02,10923.95,10923.95,10669.71,10843.21,687100000,10843.21
+1999-09-01,10828.44,11013.55,10784.32,10937.88,708200000,10937.88
+1999-08-31,10909.70,11079.08,10725.43,10829.28,861700000,10829.28
+1999-08-30,11087.69,11176.60,10869.81,10914.13,597900000,10914.13
+1999-08-27,11198.45,11295.33,11021.14,11090.17,570050000,11090.17
+1999-08-26,11326.04,11393.48,11133.86,11198.45,719000000,11198.45
+1999-08-25,11282.38,11428.94,11106.31,11326.04,864600000,11326.04
+1999-08-24,11297.54,11404.87,11135.76,11283.30,732700000,11283.30
+1999-08-23,11099.66,11344.09,11087.95,11299.76,682600000,11299.76
+1999-08-20,10963.84,11155.07,10916.35,11100.61,661200000,11100.61
+1999-08-19,10988.85,11037.29,10809.65,10963.84,684200000,10963.84
+1999-08-18,11109.66,11153.49,10913.50,10991.38,682800000,10991.38
+1999-08-17,11049.64,11180.08,10963.52,11117.08,691500000,11117.08
+1999-08-16,10980.11,11105.05,10853.98,11046.79,583550000,11046.79
+1999-08-13,10822.00,11049.64,10822.00,10973.65,691700000,10973.65
+1999-08-12,10785.65,10967.64,10688.07,10789.39,745600000,10789.39
+1999-08-11,10650.59,10878.99,10596.26,10787.80,792300000,10787.80
+1999-08-10,10704.22,10812.82,10487.34,10655.15,836200000,10655.15
+1999-08-09,10714.03,10854.61,10571.56,10707.70,684300000,10707.70
+1999-08-06,10792.58,10896.08,10584.54,10714.03,698900000,10714.03
+1999-08-05,10675.41,10876.77,10509.19,10793.82,859300000,10793.82
+1999-08-04,10675.66,10901.78,10585.17,10674.77,789300000,10674.77
+1999-08-03,10645.96,10812.82,10538.00,10677.31,739600000,10677.31
+1999-08-02,10654.83,10849.23,10551.30,10645.96,649550000,10645.96
+1999-07-30,10791.29,10897.98,10594.99,10655.15,736800000,10655.15
+1999-07-29,10920.15,10920.15,10672.24,10791.29,770100000,10791.29
+1999-07-28,10979.04,11090.48,10851.13,10972.07,690900000,10972.07
+1999-07-27,10863.16,11079.40,10834.35,10979.04,723800000,10979.04
+1999-07-26,10910.96,11014.50,10748.86,10863.16,613450000,10863.16
+1999-07-23,10979.67,11069.59,10813.77,10910.96,630580000,10910.96
+1999-07-22,11002.78,11140.51,10796.67,10969.22,771700000,10969.22
+1999-07-21,10998.94,11142.72,10865.69,11002.78,785500000,11002.78
+1999-07-20,11130.06,11245.62,10914.13,10996.13,754800000,10996.13
+1999-07-19,11209.84,11321.61,11069.90,11187.68,642330000,11187.68
+1999-07-16,11188.63,11300.08,11069.27,11209.84,714100000,11209.84
+1999-07-15,11200.03,11313.37,11072.75,11186.41,818800000,11186.41
+1999-07-14,11202.24,11289.95,11051.86,11148.10,756100000,11148.10
+1999-07-13,11106.31,11277.60,11013.55,11175.02,736000000,11175.02
+1999-07-12,11234.22,11314.64,11087.95,11200.98,685300000,11200.98
+1999-07-09,11142.72,11284.25,11050.59,11193.70,701000000,11193.70
+1999-07-08,11118.66,11290.58,10985.68,11126.89,830600000,11126.89
+1999-07-07,11129.74,11268.42,11008.16,11187.36,791200000,11187.36
+1999-07-06,11119.93,11291.21,11021.78,11135.12,722900000,11135.12
+1999-07-02,11089.53,11205.41,10995.50,11139.24,613570000,11139.24
+1999-07-01,10972.39,11156.65,10841.63,11066.42,843400000,11066.42
+1999-06-30,10805.22,11120.24,10657.36,10970.80,1117000000,10970.80
+1999-06-29,10673.83,10855.56,10589.61,10815.35,820100000,10815.35
+1999-06-28,10633.93,10792.24,10535.15,10655.15,652910000,10655.15
+1999-06-25,10586.44,10719.42,10477.21,10552.56,623460000,10552.56
+1999-06-24,10620.32,10736.83,10404.07,10534.83,690400000,10534.83
+1999-06-23,10702.32,10791.29,10542.75,10666.86,731800000,10666.86
+1999-06-22,10768.49,10879.94,10639.63,10721.63,716500000,10721.63
+1999-06-21,10865.06,10960.36,10684.91,10815.98,686600000,10815.98
+1999-06-18,10885.00,10978.09,10751.39,10855.56,914500000,10855.56
+1999-06-17,10732.71,10936.61,10642.80,10841.63,700300000,10841.63
+1999-06-16,10709.92,10883.74,10608.92,10784.95,806800000,10784.95
+1999-06-15,10612.09,10740.00,10500.01,10594.99,696600000,10594.99
+1999-06-14,10490.83,10691.24,10414.52,10563.33,669400000,10563.33
+1999-06-11,10619.69,10744.11,10386.98,10490.51,698200000,10490.51
+1999-06-10,10621.58,10736.20,10452.52,10621.27,716500000,10621.27
+1999-06-09,10780.84,10871.39,10602.59,10690.29,662000000,10690.29
+1999-06-08,10878.35,10954.66,10671.93,10765.64,685900000,10765.64
+1999-06-07,10805.20,11016.40,10718.47,10909.38,664300000,10909.38
+1999-06-04,10702.64,10892.60,10558.26,10799.84,694500000,10799.84
+1999-06-03,10629.18,10767.86,10515.52,10663.69,719600000,10663.69
+1999-06-02,10591.82,10694.09,10388.24,10577.89,728000000,10577.89
+1999-06-01,10549.08,10717.20,10334.42,10596.26,683800000,10596.26
+1999-05-28,10489.56,10690.07,10389.94,10559.74,649960000,10559.74
+1999-05-27,10643.04,10734.21,10372.96,10466.93,811400000,10466.93
+1999-05-26,10580.94,10818.08,10416.06,10702.16,870800000,10702.16
+1999-05-25,10651.73,10818.96,10494.52,10531.09,826700000,10531.09
+1999-05-24,10829.87,10924.26,10568.85,10654.67,754700000,10654.67
+1999-05-21,10879.13,10974.69,10728.12,10829.28,686600000,10829.28
+1999-05-20,10892.40,11020.70,10773.83,10866.74,752200000,10866.74
+1999-05-19,10836.67,10988.85,10722.81,10887.39,801100000,10887.39
+1999-05-18,10895.94,11017.75,10678.86,10836.95,753400000,10836.95
+1999-05-17,10864.35,10976.32,10677.64,10853.47,665500000,10853.47
+1999-05-14,10950.26,11076.55,10787.03,10913.32,727800000,10913.32
+1999-05-13,11087.71,11244.36,10931.36,11107.19,796900000,11107.19
+1999-05-12,11002.38,11146.71,10759.54,11000.37,825500000,11000.37
+1999-05-11,11059.65,11185.08,10882.11,11026.15,836100000,11026.15
+1999-05-10,11029.25,11173.05,10876.38,11007.25,773300000,11007.25
+1999-05-07,10967.16,11135.54,10838.29,11031.59,814900000,11031.59
+1999-05-06,10909.02,11093.44,10730.33,10946.82,875400000,10946.82
+1999-05-05,10902.72,11055.36,10711.15,10955.41,913500000,10955.41
+1999-05-04,11012.11,11140.12,10787.32,10886.11,933100000,10886.11
+1999-05-03,10788.75,11083.13,10701.12,11014.69,811400000,11014.69
+1999-04-30,10933.94,11072.25,10603.76,10789.04,936500000,10789.04
+1999-04-29,10864.64,11052.49,10710.00,10878.38,1003600000,10878.38
+1999-04-28,10806.22,11050.77,10665.90,10845.45,951700000,10845.45
+1999-04-27,10781.88,10977.46,10647.29,10831.71,891700000,10831.71
+1999-04-26,10721.17,10854.33,10540.47,10718.59,712000000,10718.59
+1999-04-23,10646.71,10858.34,10530.45,10689.67,744900000,10689.67
+1999-04-22,10735.77,10896.42,10517.85,10727.18,927900000,10727.18
+1999-04-21,10462.58,10702.56,10309.09,10581.42,920000000,10581.42
+1999-04-20,10440.53,10610.06,10212.87,10448.55,985400000,10448.55
+1999-04-19,10566.07,10879.76,10284.39,10440.53,1214400000,10440.53
+1999-04-16,10497.26,10632.90,10299.55,10493.89,1002300000,10493.89
+1999-04-15,10411.66,10673.90,10201.31,10462.72,1089800000,10462.72
+1999-04-14,10436.91,10692.49,10196.87,10411.66,952000000,10411.66
+1999-04-13,10340.62,10512.11,10239.33,10395.01,810900000,10395.01
+1999-04-12,10094.19,10384.46,10042.02,10339.51,810800000,10339.51
+1999-04-09,10166.62,10298.71,10035.09,10173.84,716100000,10173.84
+1999-04-08,10083.93,10282.62,9980.69,10197.70,850500000,10197.70
+1999-04-07,10023.43,10166.62,9859.98,10085.31,816400000,10085.31
+1999-04-06,9985.69,10097.25,9862.48,9963.49,787500000,9963.49
+1999-04-05,9893.84,10080.87,9826.40,10007.33,695800000,10007.33
+1999-04-01,9825.29,9927.69,9707.91,9832.51,703000000,9832.51
+1999-03-31,9968.21,10025.10,9744.82,9786.16,924300000,9786.16
+1999-03-30,10003.84,10035.36,9812.53,9913.26,729000000,9913.26
+1999-03-29,9879.41,10089.48,9837.78,10006.78,747900000,10006.78
+1999-03-26,9795.88,9923.53,9700.69,9822.24,707200000,9822.24
+1999-03-25,9735.66,9916.59,9666.28,9836.39,784200000,9836.39
+1999-03-24,9702.08,9803.09,9547.23,9666.84,761900000,9666.84
+1999-03-23,9846.66,9897.72,9593.85,9671.83,811300000,9671.83
+1999-03-22,9901.88,10005.95,9796.99,9890.51,658200000,9890.51
+1999-03-19,10107.79,10158.57,9856.37,9903.55,914700000,9903.55
+1999-03-18,9958.59,10060.62,9776.17,9997.62,831000000,9997.62
+1999-03-17,9939.90,10024.54,9792.55,9879.41,752300000,9879.41
+1999-03-16,9969.32,10062.84,9857.48,9930.47,751900000,9930.47
+1999-03-15,9880.24,10027.59,9807.53,9958.77,727200000,9958.77
+1999-03-12,9927.14,10042.58,9779.78,9876.35,825800000,9876.35
+1999-03-11,9815.86,9992.35,9742.32,9897.44,904800000,9897.44
+1999-03-10,9735.10,9849.71,9624.94,9772.84,841900000,9772.84
+1999-03-09,9703.47,9856.65,9586.08,9693.76,803700000,9693.76
+1999-03-08,9728.72,9825.02,9616.33,9727.61,714600000,9727.61
+1999-03-05,9636.65,9799.92,9558.41,9736.08,834900000,9736.08
+1999-03-04,9339.18,9549.99,9272.08,9467.40,770900000,9467.40
+1999-03-03,9311.74,9397.86,9163.41,9275.88,751700000,9275.88
+1999-03-02,9382.10,9494.57,9216.66,9297.61,753600000,9297.61
+1999-03-01,9315.27,9419.32,9167.76,9324.78,699500000,9324.78
+1999-02-26,9382.64,9459.52,9177.54,9306.58,784600000,9306.58
+1999-02-25,9395.66,9446.32,9200.27,9366.34,740500000,9366.34
+1999-02-24,9547.88,9662.77,9357.81,9399.67,782000000,9399.67
+1999-02-23,9549.21,9659.58,9425.26,9544.42,781100000,9544.42
+1999-02-22,9346.62,9596.13,9289.04,9552.68,718500000,9552.68
+1999-02-19,9284.51,9430.59,9218.13,9339.95,700000000,9339.95
+1999-02-18,9239.72,9368.48,9145.09,9298.63,742400000,9298.63
+1999-02-17,9240.79,9409.53,9124.03,9195.47,735100000,9195.47
+1999-02-16,9333.34,9458.46,9187.10,9297.03,653760000,9297.03
+1999-02-12,9346.47,9437.35,9161.35,9274.89,691500000,9274.89
+1999-02-11,9176.28,9423.19,9088.49,9363.46,815800000,9363.46
+1999-02-10,9135.86,9267.68,9025.41,9177.31,721400000,9177.31
+1999-02-09,9268.46,9361.92,9076.13,9133.03,736000000,9133.03
+1999-02-08,9318.66,9427.83,9148.99,9291.11,705400000,9291.11
+1999-02-05,9317.12,9457.43,9141.27,9304.24,872000000,9304.24
+1999-02-04,9389.72,9511.50,9178.60,9304.50,854400000,9304.50
+1999-02-03,9275.41,9454.09,9176.80,9366.81,876500000,9366.81
+1999-02-02,9318.40,9394.10,9146.16,9274.12,845500000,9274.12
+1999-02-01,9405.43,9513.05,9266.91,9345.70,799400000,9345.70
+1999-01-29,9317.37,9457.18,9172.16,9358.83,917000000,9358.83
+1999-01-28,9220.57,9384.83,9134.57,9281.33,848800000,9281.33
+1999-01-27,9378.65,9461.04,9135.86,9200.23,893800000,9200.23
+1999-01-26,9210.78,9408.77,9118.35,9324.58,896400000,9324.58
+1999-01-25,9117.58,9273.09,8994.26,9203.32,723900000,9203.32
+1999-01-22,9149.51,9289.31,8998.89,9120.67,785900000,9120.67
+1999-01-21,9371.96,9479.83,9150.28,9264.08,871800000,9264.08
+1999-01-20,9395.64,9555.01,9230.35,9335.91,905700000,9335.91
+1999-01-19,9408.52,9499.14,9165.73,9355.22,785500000,9355.22
+1999-01-15,9200.74,9381.74,9124.02,9340.55,798100000,9340.55
+1999-01-14,9315.06,9380.20,9052.44,9120.93,797200000,9120.93
+1999-01-13,9213.62,9485.24,9134.06,9349.56,931500000,9349.56
+1999-01-12,9599.55,9680.40,9394.87,9474.68,800200000,9474.68
+1999-01-11,9613.97,9751.46,9446.36,9619.89,818000000,9619.89
+1999-01-08,9612.17,9759.44,9447.91,9643.32,937800000,9643.32
+1999-01-07,9445.33,9616.29,9369.12,9537.76,863000000,9537.76
+1999-01-06,9399.25,9608.05,9331.02,9544.97,986900000,9544.97
+1999-01-05,9201.00,9389.46,9137.66,9311.19,775000000,9311.19
+1999-01-04,9212.84,9393.84,9089.00,9184.27,877000000,9184.27
+1998-12-31,9271.55,9343.64,9106.77,9181.43,719200000,9181.43
+1998-12-30,9310.17,9390.75,9211.30,9274.64,594220000,9274.64
+1998-12-29,9222.63,9375.30,9152.34,9320.98,586490000,9320.98
+1998-12-28,9251.21,9330.50,9133.54,9226.75,531560000,9226.75
+1998-12-24,9202.29,9289.57,9146.42,9217.99,246980000,9217.99
+1998-12-23,9085.91,9255.84,9022.58,9202.03,697500000,9202.03
+1998-12-22,9000.95,9122.99,8909.29,9044.46,680500000,9044.46
+1998-12-21,8903.89,9150.54,8874.28,8988.85,744800000,8988.85
+1998-12-18,8902.86,9012.28,8789.31,8903.63,839600000,8903.63
+1998-12-17,8787.55,8959.76,8725.21,8875.82,739400000,8875.82
+1998-12-16,8843.38,8922.94,8675.52,8790.60,725500000,8790.60
+1998-12-15,8725.72,8878.40,8614.75,8823.30,777900000,8823.30
+1998-12-14,8767.95,8868.10,8610.63,8695.60,741800000,8695.60
+1998-12-11,8814.29,8916.24,8680.41,8821.76,688900000,8821.76
+1998-12-10,9008.42,9034.42,8795.24,8841.58,748600000,8841.58
+1998-12-09,9025.41,9138.18,8881.23,9009.19,694200000,9009.19
+1998-12-08,9038.03,9153.63,8903.37,9027.98,727700000,9027.98
+1998-12-07,9031.59,9146.93,8946.11,9070.47,671200000,9070.47
+1998-12-04,8964.91,9078.70,8873.76,9016.14,709700000,9016.14
+1998-12-03,9031.33,9112.69,8839.78,8879.68,799100000,8879.68
+1998-12-02,9039.57,9154.40,8922.94,9064.54,727400000,9064.54
+1998-12-01,9039.57,9214.65,8934.52,9133.54,789200000,9133.54
+1998-11-30,9292.40,9348.53,9074.07,9116.55,687900000,9116.55
+1998-11-27,9333.85,9403.62,9263.82,9333.08,256950000,9333.08
+1998-11-25,9292.91,9387.66,9199.20,9314.28,583580000,9314.28
+1998-11-24,9327.93,9457.95,9219.28,9301.15,766200000,9301.15
+1998-11-23,9225.72,9425.77,9137.92,9374.27,774100000,9374.27
+1998-11-20,9129.94,9215.93,9048.32,9159.55,721200000,9159.55
+1998-11-19,9081.02,9147.96,8967.22,9056.05,671000000,9056.05
+1998-11-18,8988.85,9095.70,8897.96,9041.11,652510000,9041.11
+1998-11-17,8991.17,9158.26,8870.42,8986.28,705200000,8986.28
+1998-11-16,8921.14,9093.12,8885.09,9011.25,615580000,9011.25
+1998-11-13,8863.21,8982.16,8782.62,8919.59,602270000,8919.59
+1998-11-12,8823.04,8951.26,8733.70,8829.74,662300000,8829.74
+1998-11-11,8922.42,8980.35,8759.19,8823.82,715700000,8823.82
+1998-11-10,8895.17,9020.00,8760.99,8863.98,671300000,8863.98
+1998-11-09,8980.87,9024.89,8813.00,8897.96,592990000,8897.96
+1998-11-06,8902.86,9042.40,8831.02,8975.46,683100000,8975.46
+1998-11-05,8782.11,8943.79,8676.55,8915.47,770200000,8915.47
+1998-11-04,8801.93,8933.49,8660.33,8783.14,861100000,8783.14
+1998-11-03,8708.99,8819.18,8601.88,8706.15,704300000,8706.15
+1998-11-02,8645.65,8804.51,8573.56,8706.15,753800000,8706.15
+1998-10-30,8591.58,8718.25,8481.39,8592.10,785000000,8592.10
+1998-10-29,8371.22,8539.83,8305.54,8495.03,699400000,8495.03
+1998-10-28,8372.74,8504.04,8271.55,8371.97,677500000,8371.97
+1998-10-27,8503.79,8586.69,8309.92,8366.04,764500000,8366.04
+1998-10-26,8483.96,8564.03,8349.57,8432.21,609910000,8432.21
+1998-10-23,8531.34,8589.01,8366.04,8452.29,637640000,8452.29
+1998-10-22,8519.03,8629.17,8334.12,8533.14,754900000,8533.14
+1998-10-21,8504.67,8641.02,8380.72,8519.23,745100000,8519.23
+1998-10-20,8540.09,8713.62,8419.08,8505.85,958200000,8505.85
+1998-10-19,8415.48,8591.07,8321.50,8466.45,738600000,8466.45
+1998-10-16,8384.84,8521.29,8244.26,8416.76,1042200000,8416.76
+1998-10-15,7953.07,8375.57,7885.62,8299.36,937600000,8299.36
+1998-10-14,7925.01,8107.29,7812.75,7968.78,791200000,7968.78
+1998-10-13,7982.68,8093.90,7805.29,7938.14,733300000,7938.14
+1998-10-12,8038.03,8162.65,7931.19,8001.47,691100000,8001.47
+1998-10-09,7806.57,7976.76,7628.15,7899.52,878100000,7899.52
+1998-10-08,7734.48,7822.02,7399.78,7731.91,1114600000,7731.91
+1998-10-07,7754.82,7913.94,7558.89,7741.69,977000000,7741.69
+1998-10-06,7733.97,7951.53,7646.43,7742.98,845700000,7742.98
+1998-10-05,7760.75,7866.82,7507.14,7726.24,817500000,7726.24
+1998-10-02,7631.50,7866.31,7496.84,7784.69,902900000,7784.69
+1998-10-01,7749.42,7856.26,7540.87,7632.53,899700000,7632.53
+1998-09-30,8025.42,8097.51,7775.42,7842.62,800100000,7842.62
+1998-09-29,8141.28,8253.79,7946.63,8080.52,760100000,8080.52
+1998-09-28,8114.76,8239.37,7986.80,8108.84,690500000,8108.84
+1998-09-25,7911.10,8127.89,7849.06,8028.77,736800000,8028.77
+1998-09-24,8117.33,8227.53,7906.73,8001.99,805900000,8001.99
+1998-09-23,7988.60,8198.43,7891.79,8154.41,899700000,8154.41
+1998-09-22,7987.83,8038.29,7816.87,7897.20,694900000,7897.20
+1998-09-21,7739.12,8008.43,7653.64,7933.25,609880000,7933.25
+1998-09-18,7942.77,8012.03,7759.97,7895.66,794700000,7895.66
+1998-09-17,7905.96,8001.99,7795.50,7873.77,694500000,7873.77
+1998-09-16,8061.46,8159.30,7923.46,8089.78,797500000,8089.78
+1998-09-15,7918.83,8087.21,7840.30,8024.39,724600000,8024.39
+1998-09-14,7936.08,8081.29,7848.03,7945.35,714400000,7945.35
+1998-09-11,7583.61,7866.31,7497.10,7795.50,819100000,7795.50
+1998-09-10,7680.42,7761.00,7469.04,7615.54,880300000,7615.54
+1998-09-09,7995.04,8094.16,7796.79,7865.02,704300000,7865.02
+1998-09-08,7964.91,8103.69,7779.03,8020.78,814800000,8020.78
+1998-09-04,7737.32,7831.29,7450.24,7640.25,780300000,7640.25
+1998-09-03,7679.13,7841.59,7499.68,7682.22,880500000,7682.22
+1998-09-02,7901.06,8036.23,7710.54,7782.37,894600000,7782.37
+1998-09-01,7583.09,7937.37,7379.70,7827.43,1216600000,7827.43
+1998-08-31,8078.97,8149.00,7517.70,7539.07,917500000,7539.07
+1998-08-28,8193.54,8301.68,7951.27,8051.68,840300000,8051.68
+1998-08-27,8377.89,8448.69,8062.24,8165.99,938600000,8165.99
+1998-08-26,8492.97,8639.47,8396.68,8523.35,674100000,8523.35
+1998-08-25,8632.00,8740.91,8510.22,8602.65,664900000,8602.65
+1998-08-24,8584.63,8680.66,8452.29,8566.61,558100000,8566.61
+1998-08-21,8600.34,8600.34,8307.60,8533.65,725700000,8533.65
+1998-08-20,8639.47,8726.75,8538.29,8611.41,621630000,8611.41
+1998-08-19,8745.80,8797.81,8635.61,8693.28,633630000,8693.28
+1998-08-18,8593.90,8767.69,8551.93,8714.65,690600000,8714.65
+1998-08-17,8404.66,8613.98,8350.34,8574.85,584380000,8574.85
+1998-08-14,8531.85,8635.87,8342.10,8425.00,644030000,8425.00
+1998-08-13,8535.46,8656.46,8399.51,8459.50,660700000,8459.50
+1998-08-12,8528.76,8621.71,8437.10,8552.96,711700000,8552.96
+1998-08-11,8431.44,8538.29,8263.32,8462.85,774400000,8462.85
+1998-08-10,8585.40,8689.16,8491.17,8574.85,579180000,8574.85
+1998-08-07,8610.63,8745.03,8490.40,8598.02,759100000,8598.02
+1998-08-06,8513.83,8671.14,8415.22,8577.68,768400000,8577.68
+1998-08-05,8493.75,8641.79,8316.10,8546.78,851600000,8546.78
+1998-08-04,8859.86,8896.68,8463.37,8487.31,852600000,8487.31
+1998-08-03,8868.10,8948.17,8729.58,8786.74,620400000,8786.74
+1998-07-31,9024.64,9109.34,8810.94,8883.29,645910000,8883.29
+1998-07-30,8962.85,9113.20,8884.83,9026.95,687400000,9026.95
+1998-07-29,8976.49,9039.57,8831.28,8914.96,644350000,8914.96
+1998-07-28,8982.16,9065.57,8786.48,8934.78,703600000,8934.78
+1998-07-27,8905.17,9084.63,8806.05,9028.24,619990000,9028.24
+1998-07-24,9002.24,9077.67,8814.29,8937.36,698600000,8937.36
+1998-07-23,9130.46,9196.11,8892.56,8932.98,741600000,8932.98
+1998-07-22,9185.71,9264.85,8996.83,9128.91,739800000,9128.91
+1998-07-21,9296.26,9369.12,9145.65,9190.19,659700000,9190.19
+1998-07-20,9340.55,9408.26,9206.15,9295.75,560580000,9295.75
+1998-07-17,9328.19,9412.64,9259.96,9337.97,618030000,9337.97
+1998-07-16,9233.23,9368.35,9173.19,9328.19,677800000,9328.19
+1998-07-15,9246.57,9388.69,9165.99,9234.47,723900000,9234.47
+1998-07-14,9100.07,9314.54,9087.20,9245.54,700300000,9245.54
+1998-07-13,9107.03,9186.58,9020.52,9096.21,574880000,9096.21
+1998-07-10,9098.53,9194.82,8976.23,9105.74,576080000,9105.74
+1998-07-09,9135.36,9217.07,9014.30,9089.78,663600000,9089.78
+1998-07-08,9107.96,9231.27,9041.70,9174.97,607230000,9174.97
+1998-07-07,9094.76,9209.85,9001.84,9085.04,624890000,9085.04
+1998-07-06,9017.53,9137.11,8965.97,9091.77,514750000,9091.77
+1998-07-02,9037.71,9094.01,8956.25,9025.26,510210000,9025.26
+1998-07-01,9011.56,9103.23,8918.64,9048.67,701600000,9048.67
+1998-06-30,9010.81,9085.79,8868.57,8952.02,757200000,8952.02
+1998-06-29,9002.34,9099.24,8930.84,8997.36,564350000,8997.36
+1998-06-26,8948.28,9047.93,8879.78,8944.54,520050000,8944.54
+1998-06-25,8950.52,9079.56,8863.58,8935.58,669900000,8935.58
+1998-06-24,8828.46,8970.20,8740.52,8923.87,714900000,8923.87
+1998-06-23,8789.35,8877.78,8724.83,8828.46,657100000,8828.46
+1998-06-22,8705.65,8805.04,8639.38,8711.13,531550000,8711.13
+1998-06-19,8844.90,8885.01,8664.79,8712.87,715500000,8712.87
+1998-06-18,8825.72,8900.20,8740.77,8813.01,590440000,8813.01
+1998-06-17,8745.51,8932.34,8695.43,8829.46,744400000,8829.46
+1998-06-16,8666.04,8751.24,8524.55,8665.29,664600000,8665.29
+1998-06-15,8723.34,8818.99,8588.32,8627.93,595820000,8627.93
+1998-06-12,8812.77,8891.24,8660.56,8834.94,633300000,8834.94
+1998-06-11,8975.43,9015.54,8774.40,8811.77,627470000,8811.77
+1998-06-10,9031.98,9145.08,8891.98,8971.70,609410000,8971.70
+1998-06-09,9074.58,9130.13,8966.72,9049.92,563610000,9049.92
+1998-06-08,9052.66,9155.04,8994.12,9069.60,543390000,9069.60
+1998-06-05,8920.88,9057.39,8866.57,9037.71,558440000,9037.71
+1998-06-04,8798.07,8916.64,8719.85,8870.56,577470000,8870.56
+1998-06-03,8909.42,8970.20,8769.67,8803.80,584480000,8803.80
+1998-06-02,8961.48,9014.05,8838.92,8891.24,590930000,8891.24
+1998-06-01,8907.93,9023.01,8805.04,8922.37,537660000,8922.37
+1998-05-29,9004.83,9060.13,8859.60,8899.95,556780000,8899.95
+1998-05-28,8947.53,9040.70,8861.59,8970.20,588900000,8970.20
+1998-05-27,8902.45,9015.04,8760.95,8936.57,682040000,8936.57
+1998-05-26,9167.00,9201.63,8949.78,8963.73,541410000,8963.73
+1998-05-22,9153.05,9209.35,9040.70,9114.44,444070000,9114.44
+1998-05-21,9173.48,9248.96,9058.64,9132.37,551970000,9132.37
+1998-05-20,9101.98,9219.06,9010.56,9171.48,587240000,9171.48
+1998-05-19,9097.00,9164.51,8997.36,9054.65,566020000,9054.65
+1998-05-18,9088.53,9171.23,8972.20,9050.91,519100000,9050.91
+1998-05-15,9161.52,9240.74,9051.91,9096.00,621990000,9096.00
+1998-05-14,9136.86,9266.89,9077.07,9172.23,578380000,9172.23
+1998-05-13,9178.06,9283.09,9119.67,9211.84,600010000,9211.84
+1998-05-12,9098.00,9214.08,9023.51,9161.77,604420000,9161.77
+1998-05-11,9125.65,9231.52,9045.43,9091.52,560840000,9091.52
+1998-05-08,8981.91,9143.09,8951.27,9055.15,567890000,9055.15
+1998-05-07,9044.44,9102.98,8914.90,8976.68,582240000,8976.68
+1998-05-06,9174.72,9223.80,9017.28,9054.65,606540000,9054.65
+1998-05-05,9189.92,9251.95,9062.37,9147.57,583630000,9147.57
+1998-05-04,9201.38,9311.98,9134.86,9192.66,551700000,9192.66
+1998-05-01,9106.47,9211.84,9015.54,9147.07,581970000,9147.07
+1998-04-30,9018.28,9169.99,8970.95,9063.37,695600000,9063.37
+1998-04-29,8899.21,9036.47,8857.85,8951.52,638790000,8951.52
+1998-04-28,8920.88,9051.16,8828.71,8898.96,678600000,8898.96
+1998-04-27,8937.07,9026.25,8796.08,8917.64,685960000,8917.64
+1998-04-24,9143.83,9206.36,8983.65,9064.62,633890000,9064.62
+1998-04-23,9176.96,9269.88,9061.88,9143.33,653190000,9143.33
+1998-04-22,9184.93,9287.32,9083.80,9176.72,696740000,9176.72
+1998-04-21,9137.85,9250.20,9051.41,9184.94,675640000,9184.94
+1998-04-20,9166.75,9245.22,9027.25,9141.84,595190000,9141.84
+1998-04-17,9077.57,9213.58,9010.06,9167.50,672290000,9167.50
+1998-04-16,9162.27,9204.12,8978.92,9076.57,699570000,9076.57
+1998-04-15,9110.45,9249.95,9017.53,9162.27,685020000,9162.27
+1998-04-14,9014.30,9177.96,8971.45,9110.20,613730000,9110.20
+1998-04-13,8997.11,9107.21,8870.31,9012.30,564480000,9012.30
+1998-04-09,8891.48,9062.12,8891.48,8994.86,548940000,8994.86
+1998-04-08,8951.52,9023.51,8821.73,8891.48,616330000,8891.48
+1998-04-07,8995.36,9072.34,8862.34,8956.50,670760000,8956.50
+1998-04-06,9051.16,9170.74,8958.49,9033.23,625810000,9033.23
+1998-04-03,8986.64,9085.79,8896.22,8983.41,653880000,8983.41
+1998-04-02,8900.20,9025.26,8829.21,8986.64,674340000,8986.64
+1998-04-01,8818.50,8935.33,8715.61,8868.32,677310000,8868.32
+1998-03-31,8852.12,8937.57,8726.32,8799.81,674930000,8799.81
+1998-03-30,8802.30,8877.04,8701.66,8782.12,497400000,8782.12
+1998-03-27,8835.68,8941.31,8741.77,8796.08,582190000,8796.08
+1998-03-26,8847.89,8931.09,8769.92,8846.89,606770000,8846.89
+1998-03-25,8943.05,8997.11,8780.88,8872.80,676550000,8872.80
+1998-03-24,8887.00,8962.48,8815.01,8904.44,605720000,8904.44
+1998-03-23,8839.42,8939.31,8758.71,8816.25,631350000,8816.25
+1998-03-20,8814.01,8957.25,8766.43,8906.43,717310000,8906.43
+1998-03-19,8776.89,8855.11,8708.64,8803.05,598240000,8803.05
+1998-03-18,8749.24,8825.72,8655.83,8775.40,632690000,8775.40
+1998-03-17,8706.64,8812.52,8633.41,8749.99,680960000,8749.99
+1998-03-16,8647.36,8760.45,8573.37,8718.85,548980000,8718.85
+1998-03-13,8669.28,8733.30,8563.90,8602.52,597800000,8602.52
+1998-03-12,8622.20,8725.58,8576.86,8659.56,594940000,8659.56
+1998-03-11,8682.73,8740.52,8599.28,8675.75,655260000,8675.75
+1998-03-10,8623.19,8688.71,8550.45,8643.12,631920000,8643.12
+1998-03-09,8601.02,8661.56,8482.45,8567.14,624700000,8567.14
+1998-03-06,8505.86,8610.49,8432.62,8569.39,665500000,8569.39
+1998-03-05,8480.20,8536.80,8377.32,8444.33,648270000,8444.33
+1998-03-04,8524.55,8609.99,8454.79,8539.24,644280000,8539.24
+1998-03-03,8532.77,8632.16,8464.26,8584.83,612360000,8584.83
+1998-03-02,8528.78,8649.35,8427.89,8550.45,591470000,8550.45
+1998-02-27,8532.77,8616.72,8426.15,8545.72,574480000,8545.72
+1998-02-26,8471.48,8541.98,8377.82,8490.67,646280000,8490.67
+1998-02-25,8455.29,8510.60,8362.37,8457.78,611350000,8457.78
+1998-02-24,8370.10,8457.78,8303.83,8370.10,589880000,8370.10
+1998-02-23,8381.31,8490.92,8331.98,8410.20,550730000,8410.20
+1998-02-20,8350.67,8449.06,8291.88,8413.94,594300000,8413.94
+1998-02-19,8379.56,8463.26,8327.25,8375.58,581820000,8375.58
+1998-02-18,8419.17,8503.12,8326.75,8451.06,606000000,8451.06
+1998-02-17,8439.35,8483.94,8335.97,8398.50,605890000,8398.50
+1998-02-13,8346.68,8416.43,8269.21,8370.10,531940000,8370.10
+1998-02-12,8260.49,8412.20,8206.93,8369.60,611480000,8369.60
+1998-02-11,8298.60,8367.61,8223.87,8314.55,599300000,8314.55
+1998-02-10,8241.81,8368.10,8149.88,8295.61,642800000,8295.61
+1998-02-09,8185.26,8256.75,8104.55,8180.52,524810000,8180.52
+1998-02-06,8178.28,8255.26,8102.30,8189.49,569650000,8189.49
+1998-02-05,8129.71,8215.65,8037.54,8117.25,703980000,8117.25
+1998-02-04,8160.35,8188.00,8050.99,8129.71,695420000,8129.71
+1998-02-03,8107.78,8193.23,8010.63,8160.35,692120000,8160.35
+1998-02-02,7987.46,8157.86,7987.46,8107.78,724320000,8107.78
+1998-01-30,7973.02,8023.83,7850.95,7906.50,613380000,7906.50
+1998-01-29,7915.47,8015.12,7883.09,7973.02,750760000,7973.02
+1998-01-28,7815.08,7985.97,7761.52,7915.47,708470000,7915.47
+1998-01-27,7712.94,7890.56,7677.07,7815.08,679140000,7815.08
+1998-01-26,7700.74,7813.59,7629.99,7712.94,555080000,7712.94
+1998-01-23,7730.88,7814.08,7609.31,7700.74,635770000,7700.74
+1998-01-22,7794.40,7833.26,7637.71,7730.88,646570000,7730.88
+1998-01-21,7873.12,7874.87,7707.96,7794.40,626160000,7794.40
+1998-01-20,7753.55,7908.00,7696.01,7873.12,644790000,7873.12
+1998-01-16,7691.77,7846.47,7687.04,7753.55,670080000,7753.55
+1998-01-15,7784.69,7803.87,7651.66,7691.77,569050000,7691.77
+1998-01-14,7732.13,7836.25,7669.10,7784.69,603280000,7784.69
+1998-01-13,7647.18,7791.17,7610.31,7732.13,646740000,7732.13
+1998-01-12,7580.42,7706.22,7391.59,7647.18,705450000,7647.18
+1998-01-09,7802.62,7815.08,7513.41,7580.42,746420000,7580.42
+1998-01-08,7902.27,7935.40,7733.12,7802.62,652140000,7802.62
+1998-01-07,7906.25,7943.87,7751.56,7902.27,667390000,7902.27
+1998-01-06,7978.99,7999.17,7832.52,7906.25,618360000,7906.25
+1998-01-05,7965.04,8072.91,7865.40,7978.99,628070000,7978.99
+1998-01-02,7908.25,8001.41,7845.47,7965.04,366730000,7965.04
+1997-12-31,7915.97,7995.93,7833.76,7908.25,467280000,7908.25
+1997-12-30,7792.41,7958.32,7787.68,7915.97,499500000,7915.97
+1997-12-29,7712.94,7835.01,7712.94,7792.41,443160000,7792.41
+1997-12-26,7660.13,7743.34,7634.72,7679.31,154900000,7679.31
+1997-12-24,7691.77,7767.75,7624.26,7660.13,265980000,7660.13
+1997-12-23,7819.31,7874.12,7667.11,7691.77,515070000,7691.77
+1997-12-22,7756.29,7892.05,7710.45,7819.31,530670000,7819.31
+1997-12-19,7846.50,7878.60,7563.23,7756.29,793200000,7756.29
+1997-12-18,7957.41,7991.48,7781.35,7846.50,618870000,7846.50
+1997-12-17,7976.31,8068.81,7879.08,7957.41,618900000,7957.41
+1997-12-16,7922.59,8069.06,7889.52,7976.31,623320000,7976.31
+1997-12-15,7838.30,7992.72,7807.96,7922.59,597150000,7922.59
+1997-12-12,7848.99,7947.21,7756.73,7838.30,579280000,7838.30
+1997-12-11,7961.64,7961.64,7778.37,7848.99,631770000,7848.99
+1997-12-10,8049.66,8077.27,7881.07,7978.79,602290000,7978.79
+1997-12-09,8110.84,8142.67,7990.98,8049.66,539130000,8049.66
+1997-12-08,8149.13,8195.88,8057.37,8110.84,490320000,8110.84
+1997-12-05,8050.16,8209.56,7980.04,8149.13,563590000,8149.13
+1997-12-04,8032.01,8159.58,7978.30,8050.16,633470000,8050.16
+1997-12-03,8018.83,8118.30,7915.63,8032.01,624610000,8032.01
+1997-12-02,8013.11,8096.66,7935.03,8018.83,576120000,8018.83
+1997-12-01,7823.62,8048.92,7823.62,8013.11,590300000,8013.11
+1997-11-28,7794.78,7872.86,7786.08,7823.13,189070000,7823.13
+1997-11-26,7808.95,7893.50,7749.77,7794.78,487750000,7794.78
+1997-11-25,7767.92,7880.32,7706.00,7808.95,587890000,7808.95
+1997-11-24,7881.07,7887.28,7723.41,7767.92,514920000,7767.92
+1997-11-21,7826.61,7934.53,7758.47,7881.07,611000000,7881.07
+1997-11-20,7724.74,7889.77,7718.19,7826.61,602610000,7826.61
+1997-11-19,7650.82,7779.75,7599.50,7724.74,542720000,7724.74
+1997-11-18,7698.22,7772.62,7607.11,7650.82,521380000,7650.82
+1997-11-17,7613.49,7781.71,7613.49,7698.22,576540000,7698.22
+1997-11-14,7487.76,7634.61,7431.03,7572.48,635760000,7572.48
+1997-11-13,7401.32,7546.45,7334.77,7487.76,653960000,7487.76
+1997-11-12,7558.73,7573.22,7359.32,7401.32,585340000,7401.32
+1997-11-11,7552.59,7599.74,7518.21,7558.73,435660000,7558.73
+1997-11-10,7581.32,7687.90,7511.83,7552.59,464140000,7552.59
+1997-11-07,7646.89,7646.89,7460.99,7581.32,569980000,7581.32
+1997-11-06,7692.57,7758.63,7597.78,7683.24,522890000,7683.24
+1997-11-05,7689.13,7791.78,7628.96,7692.57,565680000,7692.57
+1997-11-04,7674.39,7757.15,7583.29,7689.13,541590000,7689.13
+1997-11-03,7443.07,7674.39,7443.07,7674.39,564740000,7674.39
+1997-10-31,7381.67,7544.24,7329.61,7442.08,638070000,7442.08
+1997-10-30,7506.67,7569.78,7340.42,7381.67,712230000,7381.67
+1997-10-29,7498.32,7664.08,7409.67,7506.67,777660000,7506.67
+1997-10-28,7161.15,7553.57,6936.45,7498.32,1202550000,7498.32
+1997-10-27,7715.41,7717.37,7150.10,7161.15,693730000,7161.15
+1997-10-24,7847.77,7975.47,7645.91,7715.41,677630000,7715.41
+1997-10-23,7957.05,7957.05,7767.22,7847.77,673270000,7847.77
+1997-10-22,8060.44,8124.78,7941.33,8034.65,613490000,8034.65
+1997-10-21,7921.44,8090.40,7909.41,8060.44,582310000,8060.44
+1997-10-20,7847.03,7966.63,7774.83,7921.44,483880000,7921.44
+1997-10-17,7938.88,7953.61,7731.12,7847.03,624980000,7847.03
+1997-10-16,8057.98,8146.14,7880.18,7938.88,597010000,7938.88
+1997-10-15,8096.29,8127.48,7997.57,8057.98,505310000,8057.98
+1997-10-14,8072.22,8168.24,7990.20,8096.29,510330000,8096.29
+1997-10-13,8045.21,8150.31,8026.30,8072.22,354800000,8072.22
+1997-10-10,8061.42,8091.38,7961.96,8045.21,500680000,8045.21
+1997-10-09,8095.06,8127.72,7980.87,8061.42,551840000,8061.42
+1997-10-08,8178.31,8208.52,8019.92,8095.06,573110000,8095.06
+1997-10-07,8100.22,8218.34,8058.96,8178.31,551970000,8178.31
+1997-10-06,8038.58,8160.63,8017.71,8100.22,495620000,8100.22
+1997-10-03,8027.53,8183.22,7937.89,8038.58,623370000,8038.58
+1997-10-02,8015.50,8087.45,7943.79,8027.53,474760000,8027.53
+1997-10-01,7945.26,8081.06,7909.41,8015.50,598660000,8015.50
+1997-09-30,7991.43,8045.70,7900.08,7945.26,587500000,7945.26
+1997-09-29,7922.18,8030.48,7862.99,7991.43,477100000,7991.43
+1997-09-26,7853.66,7970.80,7853.66,7922.18,505340000,7922.18
+1997-09-25,7906.71,7962.45,7802.34,7848.01,524880000,7848.01
+1997-09-24,7970.06,8065.84,7866.43,7906.71,639460000,7906.71
+1997-09-23,7996.83,8048.16,7885.34,7970.06,522930000,7970.06
+1997-09-22,7917.27,8078.36,7889.27,7996.83,490900000,7996.83
+1997-09-19,7922.72,7972.29,7821.69,7917.27,631040000,7917.27
+1997-09-18,7886.44,8049.36,7858.93,7922.72,566830000,7922.72
+1997-09-17,7895.92,7981.54,7816.47,7886.44,590550000,7886.44
+1997-09-16,7721.14,7951.18,7709.75,7895.92,636380000,7895.92
+1997-09-15,7742.97,7832.86,7680.95,7721.14,468030000,7721.14
+1997-09-12,7660.98,7779.67,7584.56,7742.97,544150000,7742.97
+1997-09-11,7719.28,7745.29,7556.23,7660.98,575020000,7660.98
+1997-09-10,7851.91,7868.16,7686.30,7719.28,517620000,7719.28
+1997-09-09,7835.18,7922.05,7768.52,7851.91,502200000,7851.91
+1997-09-08,7822.41,7921.35,7795.00,7835.18,466430000,7835.18
+1997-09-05,7867.24,7952.01,7765.27,7822.41,536400000,7822.41
+1997-09-04,7894.64,7936.45,7788.50,7867.24,559310000,7867.24
+1997-09-03,7879.78,7972.22,7828.45,7894.64,549060000,7894.64
+1997-09-02,7650.99,7903.47,7650.99,7879.78,491870000,7879.78
+1997-08-29,7694.43,7729.73,7580.85,7622.42,413910000,7622.42
+1997-08-28,7787.33,7831.70,7634.50,7694.43,486300000,7694.43
+1997-08-27,7782.22,7850.51,7666.55,7787.33,492150000,7787.33
+1997-08-26,7859.57,7891.62,7734.61,7782.22,449110000,7782.22
+1997-08-25,7887.91,7974.08,7791.75,7859.57,388990000,7859.57
+1997-08-22,7893.95,7904.86,7695.36,7887.91,460160000,7887.91
+1997-08-21,8021.23,8043.06,7834.02,7893.95,499000000,7893.95
+1997-08-20,7918.10,8037.95,7870.95,8021.23,521270000,8021.23
+1997-08-19,7803.36,7947.37,7776.65,7918.10,545630000,7918.10
+1997-08-18,7694.66,7847.49,7588.28,7803.36,514330000,7803.36
+1997-08-15,7919.26,7919.26,7685.14,7694.66,537820000,7694.66
+1997-08-14,7928.32,8027.73,7843.54,7942.03,530460000,7942.03
+1997-08-13,7960.84,8075.58,7848.19,7928.32,587210000,7928.32
+1997-08-12,8062.11,8132.49,7926.46,7960.84,499310000,7960.84
+1997-08-11,8031.22,8122.27,7922.52,8062.11,480340000,8062.11
+1997-08-08,8170.58,8170.58,7961.07,8031.22,563420000,8031.22
+1997-08-07,8259.31,8340.14,8158.73,8188.00,576030000,8188.00
+1997-08-06,8187.54,8302.05,8130.63,8259.31,565200000,8259.31
+1997-08-05,8198.45,8251.88,8129.93,8187.54,525710000,8187.54
+1997-08-04,8194.04,8261.40,8097.65,8198.45,456000000,8198.45
+1997-08-01,8222.61,8287.65,8062.11,8194.04,513750000,8194.04
+1997-07-31,8254.89,8328.99,8160.36,8222.61,547830000,8222.61
+1997-07-30,8174.53,8313.19,8156.88,8254.89,568470000,8254.89
+1997-07-29,8121.11,8232.36,8049.34,8174.53,544540000,8174.53
+1997-07-28,8113.44,8221.68,8051.89,8121.11,466920000,8121.11
+1997-07-25,8116.93,8200.31,8037.95,8113.44,521510000,8113.44
+1997-07-24,8088.36,8174.53,7968.51,8116.93,571020000,8116.93
+1997-07-23,8061.65,8199.15,8024.95,8088.36,616930000,8088.36
+1997-07-22,7906.72,8093.93,7870.72,8061.65,579590000,8061.65
+1997-07-21,7890.46,7981.51,7783.85,7906.72,459500000,7906.72
+1997-07-18,8020.77,8057.23,7829.61,7890.46,589710000,7890.46
+1997-07-17,8038.88,8136.67,7910.67,8020.77,629250000,8020.77
+1997-07-16,7975.71,8108.10,7919.73,8038.88,647390000,8038.88
+1997-07-15,7922.98,8037.03,7843.78,7975.71,598370000,7975.71
+1997-07-14,7921.82,8001.26,7831.00,7922.98,485960000,7922.98
+1997-07-11,7886.76,7984.02,7837.68,7921.82,500050000,7921.82
+1997-07-10,7842.43,7953.94,7777.06,7886.76,551340000,7886.76
+1997-07-09,7962.31,8027.68,7775.48,7842.43,589110000,7842.43
+1997-07-08,7858.49,8000.08,7824.33,7962.31,526010000,7962.31
+1997-07-07,7895.81,7983.79,7805.34,7858.49,518780000,7858.49
+1997-07-03,7805.79,7952.35,7805.79,7895.81,374680000,7895.81
+1997-07-02,7722.33,7814.38,7648.14,7795.38,526970000,7795.38
+1997-07-01,7672.79,7801.04,7613.53,7722.33,544190000,7722.33
+1997-06-30,7687.72,7768.01,7571.46,7672.79,561540000,7672.79
+1997-06-27,7654.25,7793.12,7627.33,7687.72,472540000,7687.72
+1997-06-26,7689.98,7754.22,7581.64,7654.25,499780000,7654.25
+1997-06-25,7758.06,7832.48,7615.57,7689.98,603040000,7689.98
+1997-06-24,7787.01,7787.01,7602.90,7758.06,542650000,7758.06
+1997-06-23,7796.51,7816.87,7592.04,7604.26,492940000,7604.26
+1997-06-20,7777.06,7868.44,7733.64,7796.51,653110000,7796.51
+1997-06-19,7718.71,7834.51,7697.45,7777.06,536940000,7777.06
+1997-06-18,7760.78,7789.28,7651.30,7718.71,491740000,7718.71
+1997-06-17,7772.09,7834.97,7680.71,7760.78,543010000,7760.78
+1997-06-16,7782.04,7829.99,7712.37,7772.09,414280000,7772.09
+1997-06-13,7711.47,7829.08,7683.42,7782.04,575810000,7782.04
+1997-06-12,7575.83,7741.42,7569.66,7711.47,592730000,7711.47
+1997-06-11,7539.27,7633.96,7476.29,7575.83,513740000,7575.83
+1997-06-10,7478.50,7599.61,7459.12,7539.27,526980000,7539.27
+1997-06-09,7435.78,7548.52,7412.44,7478.50,465810000,7478.50
+1997-06-06,7305.29,7473.98,7290.26,7435.78,488940000,7435.78
+1997-06-05,7269.66,7376.97,7241.33,7305.29,452610000,7305.29
+1997-06-04,7312.15,7350.36,7214.29,7269.66,466690000,7269.66
+1997-06-03,7289.40,7379.98,7225.02,7312.15,527120000,7312.15
+1997-06-02,7331.04,7383.84,7244.76,7289.40,435950000,7289.40
+1997-05-30,7330.18,7385.99,7203.99,7331.04,537200000,7331.04
+1997-05-29,7357.23,7404.44,7272.24,7330.18,462600000,7330.18
+1997-05-28,7383.41,7430.20,7287.26,7357.23,487340000,7357.23
+1997-05-27,7345.91,7421.32,7276.68,7383.41,436150000,7383.41
+1997-05-23,7260.61,7382.58,7260.61,7345.91,417030000,7345.91
+1997-05-22,7290.69,7348.79,7210.33,7258.13,426940000,7258.13
+1997-05-21,7303.46,7385.47,7218.99,7290.69,540730000,7290.69
+1997-05-20,7228.88,7336.02,7123.38,7303.46,450850000,7303.46
+1997-05-19,7194.67,7274.21,7140.69,7228.88,345140000,7228.88
+1997-05-16,7332.31,7332.31,7192.61,7194.67,486780000,7194.67
+1997-05-15,7286.16,7363.63,7225.99,7333.55,458180000,7333.55
+1997-05-14,7274.21,7381.76,7238.35,7286.16,504960000,7286.16
+1997-05-13,7292.75,7350.85,7211.16,7274.21,489760000,7274.21
+1997-05-12,7169.53,7317.47,7156.35,7292.75,459370000,7292.75
+1997-05-09,7136.62,7235.76,7079.63,7169.53,455690000,7169.53
+1997-05-08,7085.65,7236.96,7040.30,7136.62,534120000,7136.62
+1997-05-07,7225.32,7246.60,7064.78,7085.65,500580000,7085.65
+1997-05-06,7213.68,7299.98,7139.43,7225.32,603680000,7225.32
+1997-05-05,7071.20,7220.91,7029.46,7213.68,549410000,7213.68
+1997-05-02,6976.48,7104.51,6935.54,7071.20,499770000,7071.20
+1997-05-01,7008.99,7041.90,6891.39,6976.48,460380000,6976.48
+1997-04-30,6962.03,7081.23,6912.26,7008.99,562830000,7008.99
+1997-04-29,6820.75,6998.15,6820.75,6962.03,547690000,6962.03
+1997-04-28,6738.87,6826.37,6691.51,6783.02,404470000,6783.02
+1997-04-25,6792.25,6826.77,6681.08,6738.87,414350000,6738.87
+1997-04-24,6812.72,6923.90,6742.89,6792.25,493640000,6792.25
+1997-04-23,6833.59,6902.23,6746.50,6812.72,489350000,6812.72
+1997-04-22,6660.21,6858.08,6628.50,6833.59,507500000,6833.59
+1997-04-21,6703.55,6768.17,6594.38,6660.21,397300000,6660.21
+1997-04-18,6658.60,6749.71,6616.46,6703.55,468940000,6703.55
+1997-04-17,6679.87,6750.91,6600.80,6658.60,503760000,6658.60
+1997-04-16,6587.16,6708.77,6506.08,6679.87,498820000,6679.87
+1997-04-15,6457.92,6626.09,6457.92,6587.16,507370000,6587.16
+1997-04-14,6391.69,6487.22,6315.84,6451.90,406800000,6451.90
+1997-04-11,6529.48,6529.48,6358.42,6391.69,444380000,6391.69
+1997-04-10,6563.84,6626.91,6495.48,6540.05,421790000,6540.05
+1997-04-09,6609.16,6662.41,6521.16,6563.84,451500000,6563.84
+1997-04-08,6555.91,6638.62,6491.71,6609.16,450790000,6609.16
+1997-04-07,6526.07,6639.00,6508.70,6555.91,453790000,6555.91
+1997-04-04,6477.35,6561.57,6376.90,6526.07,544580000,6526.07
+1997-04-03,6517.01,6540.43,6379.16,6477.35,498010000,6477.35
+1997-04-02,6611.05,6636.73,6476.60,6517.01,478210000,6517.01
+1997-04-01,6583.48,6667.70,6482.64,6611.05,515770000,6611.05
+1997-03-31,6740.59,6743.23,6532.49,6583.48,555880000,6583.48
+1997-03-27,6880.70,6918.47,6654.86,6740.59,476790000,6740.59
+1997-03-26,6876.17,6954.72,6811.21,6880.70,506670000,6880.70
+1997-03-25,6905.25,6984.94,6832.74,6876.17,487520000,6876.17
+1997-03-24,6804.79,6933.58,6746.63,6905.25,451970000,6905.25
+1997-03-21,6820.28,6890.52,6742.85,6804.79,544830000,6804.79
+1997-03-20,6877.68,6901.47,6765.14,6820.28,497480000,6820.28
+1997-03-19,6896.56,6944.15,6794.22,6877.68,539200000,6877.68
+1997-03-18,6955.48,6997.40,6841.05,6896.56,467490000,6896.56
+1997-03-17,6935.46,7004.20,6820.28,6955.48,495260000,6955.48
+1997-03-14,6878.89,6996.27,6851.19,6935.46,491540000,6935.46
+1997-03-13,7023.59,7023.59,6852.72,6878.89,507560000,6878.89
+1997-03-12,7085.16,7111.72,6988.96,7039.37,490200000,7039.37
+1997-03-11,7079.39,7158.28,7026.28,7085.16,493250000,7085.16
+1997-03-10,7000.89,7103.25,6970.10,7079.39,468780000,7079.39
+1997-03-07,6944.70,7047.07,6927.00,7000.89,508270000,7000.89
+1997-03-06,6945.85,7017.05,6896.60,6944.70,540310000,6944.70
+1997-03-05,6852.72,6966.64,6836.95,6945.85,532500000,6945.85
+1997-03-04,6918.92,6983.95,6814.63,6852.72,537890000,6852.72
+1997-03-03,6877.74,6957.01,6798.46,6918.92,437220000,6918.92
+1997-02-28,6925.07,6978.18,6820.78,6877.74,508280000,6877.74
+1997-02-27,6983.18,7028.59,6885.44,6925.07,467190000,6925.07
+1997-02-26,7037.83,7076.31,6878.12,6983.18,573920000,6983.18
+1997-02-25,7008.20,7099.79,6935.08,7037.83,527450000,7037.83
+1997-02-24,6931.62,7049.76,6868.50,7008.20,462450000,7008.20
+1997-02-21,6927.38,6984.72,6869.27,6931.62,478450000,6931.62
+1997-02-20,7020.13,7035.91,6890.82,6927.38,492220000,6927.38
+1997-02-19,7067.46,7112.87,6980.87,7020.13,519350000,7020.13
+1997-02-18,6988.96,7084.39,6946.62,7067.46,474110000,7067.46
+1997-02-14,7022.44,7074.77,6935.85,6988.96,491540000,6988.96
+1997-02-13,6961.63,7074.39,6924.30,7022.44,593710000,7022.44
+1997-02-12,6858.11,6976.64,6844.26,6961.63,563890000,6961.63
+1997-02-11,6806.54,6887.36,6756.90,6858.11,483090000,6858.11
+1997-02-10,6855.80,6908.14,6771.14,6806.54,471590000,6806.54
+1997-02-07,6773.06,6906.22,6747.28,6855.80,540910000,6855.80
+1997-02-06,6746.90,6821.17,6683.40,6773.06,519660000,6773.06
+1997-02-05,6833.48,6913.14,6704.56,6746.90,580520000,6746.90
+1997-02-04,6806.16,6859.65,6738.43,6833.48,506530000,6833.48
+1997-02-03,6813.09,6858.11,6733.04,6806.16,463600000,6806.16
+1997-01-31,6823.86,6912.37,6769.99,6813.09,578550000,6813.09
+1997-01-30,6740.74,6845.03,6719.96,6823.86,524160000,6823.86
+1997-01-29,6656.08,6766.91,6627.98,6740.74,498390000,6740.74
+1997-01-28,6660.69,6823.48,6612.20,6656.08,541580000,6656.08
+1997-01-27,6696.48,6748.82,6598.73,6660.69,445760000,6660.69
+1997-01-24,6755.75,6798.08,6629.91,6696.48,542920000,6696.48
+1997-01-23,6850.03,6953.55,6724.19,6755.75,685070000,6755.75
+1997-01-22,6883.90,6913.14,6801.16,6850.03,587300000,6850.03
+1997-01-21,6843.87,6934.69,6771.14,6883.90,571280000,6883.90
+1997-01-20,6833.10,6893.13,6777.30,6843.87,440470000,6843.87
+1997-01-17,6765.37,6863.88,6732.66,6833.10,534640000,6833.10
+1997-01-16,6726.88,6818.47,6688.40,6765.37,537290000,6765.37
+1997-01-15,6762.29,6800.77,6669.93,6726.88,524990000,6726.88
+1997-01-14,6709.18,6816.17,6689.94,6762.29,531600000,6762.29
+1997-01-13,6703.79,6773.45,6647.99,6709.18,445400000,6709.18
+1997-01-10,6625.67,6725.35,6530.62,6703.79,545860000,6703.79
+1997-01-09,6549.48,6677.24,6520.23,6625.67,555370000,6625.67
+1997-01-08,6600.66,6650.30,6509.84,6549.48,557510000,6549.48
+1997-01-07,6567.18,6621.82,6481.75,6600.66,538220000,6600.66
+1997-01-06,6544.09,6647.22,6508.30,6567.18,531350000,6567.18
+1997-01-03,6442.49,6586.42,6437.10,6544.09,452970000,6544.09
+1997-01-02,6448.27,6511.38,6318.96,6442.49,463230000,6442.49
+1996-12-31,6549.37,6580.90,6421.74,6448.27,399760000,6448.27
+1996-12-30,6560.91,6623.96,6518.23,6549.37,339060000,6549.37
+1996-12-27,6546.68,6607.81,6510.93,6560.91,253810000,6560.91
+1996-12-26,6522.85,6594.74,6495.94,6546.68,254630000,6546.68
+1996-12-24,6489.02,6546.68,6467.10,6522.85,165140000,6522.85
+1996-12-23,6484.40,6539.76,6428.27,6489.02,343280000,6489.02
+1996-12-20,6473.64,6597.43,6445.19,6484.40,654340000,6484.40
+1996-12-19,6352.15,6499.40,6352.15,6473.64,526410000,6473.64
+1996-12-18,6308.33,6399.06,6272.96,6346.77,500490000,6346.77
+1996-12-17,6268.35,6354.46,6206.83,6308.33,519840000,6308.33
+1996-12-16,6304.87,6388.68,6227.98,6268.35,447560000,6268.35
+1996-12-13,6303.71,6377.14,6227.59,6304.87,458540000,6304.87
+1996-12-12,6402.52,6465.57,6283.72,6303.71,492920000,6303.71
+1996-12-11,6457.88,6457.88,6317.94,6402.52,494210000,6402.52
+1996-12-10,6463.94,6545.56,6427.04,6473.25,446120000,6473.25
+1996-12-09,6381.94,6496.73,6375.98,6463.94,381570000,6463.94
+1996-12-06,6437.10,6441.20,6274.24,6381.94,500860000,6381.94
+1996-12-05,6422.94,6491.14,6363.31,6437.10,483710000,6437.10
+1996-12-04,6442.69,6482.20,6339.46,6422.94,498240000,6422.94
+1996-12-03,6521.70,6577.23,6422.94,6442.69,516160000,6442.69
+1996-12-02,6521.70,6553.01,6439.34,6521.70,412520000,6521.70
+1996-11-29,6499.34,6551.15,6490.40,6521.70,151550000,6521.70
+1996-11-27,6528.41,6566.43,6457.97,6499.34,377780000,6499.34
+1996-11-26,6547.79,6606.30,6475.49,6528.41,527380000,6528.41
+1996-11-25,6471.76,6565.68,6443.44,6547.79,475260000,6547.79
+1996-11-22,6418.47,6498.22,6402.44,6471.76,525210000,6471.76
+1996-11-21,6430.02,6463.56,6370.02,6418.47,464430000,6418.47
+1996-11-20,6397.60,6482.20,6370.02,6430.02,497900000,6430.02
+1996-11-19,6346.91,6428.16,6323.06,6397.60,461980000,6397.60
+1996-11-18,6348.03,6407.66,6297.34,6346.91,388520000,6346.91
+1996-11-15,6313.00,6414.37,6277.22,6348.03,529100000,6348.03
+1996-11-14,6274.24,6350.64,6232.50,6313.00,480350000,6313.00
+1996-11-13,6266.04,6317.10,6206.78,6274.24,429840000,6274.24
+1996-11-12,6255.60,6314.49,6199.70,6266.04,472940000,6266.04
+1996-11-11,6219.82,6292.87,6198.58,6255.60,353960000,6255.60
+1996-11-08,6206.04,6247.40,6151.62,6219.82,402320000,6219.82
+1996-11-07,6177.71,6238.83,6130.38,6206.04,502530000,6206.04
+1996-11-06,6081.18,6200.44,6060.69,6177.71,509600000,6177.71
+1996-11-05,6041.68,6125.53,6029.01,6081.18,492860000,6081.18
+1996-11-04,6021.93,6083.05,5981.30,6041.68,398790000,6041.68
+1996-11-01,6029.38,6082.67,5975.34,6021.93,465510000,6021.93
+1996-10-31,5993.23,6063.67,5955.59,6029.38,488500000,6029.38
+1996-10-30,6007.02,6055.84,5956.71,5993.23,437770000,5993.23
+1996-10-29,5972.73,6054.72,5938.82,6007.02,443890000,6007.02
+1996-10-28,6007.02,6063.67,5952.61,5972.73,383630000,5972.73
+1996-10-25,5992.48,6047.64,5954.47,6007.02,367640000,6007.02
+1996-10-24,6036.46,6080.07,5953.72,5992.48,418970000,5992.48
+1996-10-23,6061.80,6081.93,5965.65,6036.46,442170000,6036.46
+1996-10-22,6090.87,6114.73,6015.59,6061.80,410790000,6061.80
+1996-10-21,6094.23,6162.80,6027.89,6090.87,414630000,6090.87
+1996-10-18,6059.20,6119.57,6011.49,6094.23,473020000,6094.23
+1996-10-17,6020.81,6101.31,5994.72,6059.20,478550000,6059.20
+1996-10-16,6004.78,6056.21,5943.66,6020.81,441410000,6020.81
+1996-10-15,6010.00,6077.83,5951.12,6004.78,458980000,6004.78
+1996-10-14,5969.38,6043.91,5952.61,6010.00,322000000,6010.00
+1996-10-11,5921.67,5999.56,5912.36,5969.38,396050000,5969.38
+1996-10-10,5930.62,5956.71,5876.58,5921.67,394950000,5921.67
+1996-10-09,5966.77,5985.03,5892.23,5930.62,408450000,5930.62
+1996-10-08,5979.81,6032.36,5930.24,5966.77,435070000,5966.77
+1996-10-07,5992.86,6025.28,5945.15,5979.81,380750000,5979.81
+1996-10-04,5932.85,6023.79,5917.20,5992.86,463940000,5992.86
+1996-10-03,5933.97,5972.36,5887.76,5932.85,386500000,5932.85
+1996-10-02,5904.90,5966.02,5888.88,5933.97,440130000,5933.97
+1996-10-01,5882.17,5942.17,5833.72,5904.90,421550000,5904.90
+1996-09-30,5845.18,5934.32,5845.18,5882.17,394260000,5882.17
+1996-09-27,5868.85,5903.99,5819.65,5872.92,414760000,5872.92
+1996-09-26,5877.36,5928.04,5828.90,5868.85,500870000,5868.85
+1996-09-25,5874.03,5928.77,5827.42,5877.36,451710000,5877.36
+1996-09-24,5894.74,5952.08,5831.86,5874.03,460150000,5874.03
+1996-09-23,5888.46,5913.24,5820.39,5894.74,297760000,5894.74
+1996-09-20,5867.74,5925.82,5840.74,5888.46,519420000,5888.46
+1996-09-19,5877.36,5908.80,5818.17,5867.74,398580000,5867.74
+1996-09-18,5888.83,5919.90,5838.15,5877.36,396600000,5877.36
+1996-09-17,5889.20,5929.51,5830.38,5888.83,449850000,5888.83
+1996-09-16,5838.52,5920.64,5823.72,5889.20,430080000,5889.20
+1996-09-13,5786.73,5871.44,5786.73,5838.52,488360000,5838.52
+1996-09-12,5754.92,5815.59,5739.76,5771.94,398820000,5771.94
+1996-09-11,5727.18,5777.49,5696.85,5754.92,376880000,5754.92
+1996-09-10,5733.84,5767.87,5681.68,5727.18,372960000,5727.18
+1996-09-09,5662.08,5756.40,5662.08,5733.84,311530000,5733.84
+1996-09-06,5606.96,5696.48,5585.51,5659.86,348710000,5659.86
+1996-09-05,5656.90,5669.47,5592.53,5606.96,361430000,5606.96
+1996-09-04,5648.39,5682.05,5608.81,5656.90,351290000,5656.90
+1996-09-03,5616.21,5667.99,5550.37,5648.39,345740000,5648.39
+1996-08-30,5647.65,5659.86,5571.45,5616.21,258380000,5616.21
+1996-08-29,5712.38,5716.82,5615.47,5647.65,321120000,5647.65
+1996-08-28,5711.27,5747.89,5678.72,5712.38,296440000,5712.38
+1996-08-27,5693.89,5735.32,5670.58,5711.27,310520000,5711.27
+1996-08-26,5722.74,5742.71,5665.41,5693.89,281430000,5693.89
+1996-08-23,5733.47,5761.58,5679.09,5722.74,308010000,5722.74
+1996-08-22,5689.82,5761.95,5662.45,5733.47,354950000,5733.47
+1996-08-21,5721.26,5734.95,5648.76,5689.82,348820000,5689.82
+1996-08-20,5699.44,5747.52,5670.21,5721.26,334960000,5721.26
+1996-08-19,5689.45,5728.66,5664.30,5699.44,294080000,5699.44
+1996-08-16,5665.78,5722.74,5646.54,5689.45,337650000,5689.45
+1996-08-15,5666.88,5701.66,5633.22,5665.78,323950000,5665.78
+1996-08-14,5647.28,5695.00,5614.36,5666.88,343470000,5666.88
+1996-08-13,5618.06,5713.86,5618.06,5647.28,362470000,5647.28
+1996-08-12,5681.31,5746.04,5625.83,5704.98,312170000,5704.98
+1996-08-09,5713.49,5747.15,5654.31,5681.31,327280000,5681.31
+1996-08-08,5718.67,5746.41,5661.34,5713.49,334570000,5713.49
+1996-08-07,5696.11,5754.55,5659.12,5718.67,394340000,5718.67
+1996-08-06,5674.28,5716.45,5630.26,5696.11,347290000,5696.11
+1996-08-05,5679.83,5719.04,5639.14,5674.28,307240000,5674.28
+1996-08-02,5601.41,5703.51,5601.41,5679.83,442080000,5679.83
+1996-08-01,5528.91,5628.79,5507.83,5594.75,439110000,5594.75
+1996-07-31,5481.93,5558.13,5460.48,5528.91,403560000,5528.91
+1996-07-30,5434.59,5503.73,5403.52,5481.93,341090000,5481.93
+1996-07-29,5473.06,5497.47,5414.61,5434.59,281560000,5434.59
+1996-07-26,5422.01,5503.02,5397.97,5473.06,349900000,5473.06
+1996-07-25,5355.80,5469.36,5355.80,5422.01,405390000,5422.01
+1996-07-24,5346.55,5402.04,5244.83,5354.69,463030000,5354.69
+1996-07-23,5390.94,5447.90,5313.63,5346.55,421900000,5346.55
+1996-07-22,5426.82,5446.05,5346.92,5390.94,327300000,5390.94
+1996-07-19,5464.18,5490.44,5393.53,5426.82,408070000,5426.82
+1996-07-18,5376.88,5500.43,5352.10,5464.18,474460000,5464.18
+1996-07-17,5358.76,5465.29,5325.10,5376.88,513830000,5376.88
+1996-07-16,5349.51,5438.66,5170.11,5358.76,68290000,5358.76
+1996-07-15,5510.56,5527.93,5326.98,5349.51,419020000,5349.51
+1996-07-12,5520.54,5562.65,5455.16,5510.56,397790000,5510.56
+1996-07-11,5600.33,5600.33,5447.77,5520.54,520470000,5520.54
+1996-07-10,5581.86,5628.03,5515.00,5603.65,421350000,5603.65
+1996-07-09,5550.83,5622.49,5540.12,5581.86,379200000,5581.86
+1996-07-08,5588.14,5622.12,5519.80,5550.83,367560000,5550.83
+1996-07-05,5657.58,5657.58,5570.77,5588.14,181470000,5588.14
+1996-07-03,5720.38,5749.93,5656.47,5703.02,336260000,5703.02
+1996-07-02,5729.98,5769.88,5668.29,5720.38,388000000,5720.38
+1996-07-01,5654.63,5749.19,5637.26,5729.98,345750000,5729.98
+1996-06-28,5677.53,5724.44,5625.81,5654.63,470460000,5654.63
+1996-06-27,5682.70,5715.21,5616.21,5677.53,405580000,5677.53
+1996-06-26,5719.27,5739.22,5652.04,5682.70,386520000,5682.70
+1996-06-25,5717.79,5760.27,5668.66,5719.27,391900000,5719.27
+1996-06-24,5705.23,5770.61,5688.61,5717.79,333840000,5717.79
+1996-06-21,5659.43,5722.22,5639.11,5705.23,520340000,5705.23
+1996-06-20,5648.35,5709.30,5606.97,5659.43,441060000,5659.43
+1996-06-19,5628.03,5693.78,5600.70,5648.35,383610000,5648.35
+1996-06-18,5652.78,5683.44,5607.71,5628.03,373290000,5628.03
+1996-06-17,5649.45,5689.72,5614.36,5652.78,298410000,5652.78
+1996-06-14,5657.95,5687.13,5609.93,5649.45,390630000,5649.45
+1996-06-13,5668.29,5714.84,5622.86,5657.95,397620000,5657.95
+1996-06-12,5668.66,5725.55,5637.63,5668.29,397190000,5668.29
+1996-06-11,5687.87,5747.71,5637.63,5668.66,405390000,5668.66
+1996-06-10,5697.11,5727.03,5643.54,5687.87,337480000,5687.87
+1996-06-07,5667.19,5708.93,5559.69,5697.11,445710000,5697.11
+1996-06-06,5697.48,5750.67,5639.48,5667.19,464800000,5667.19
+1996-06-05,5665.71,5718.53,5631.35,5697.48,380360000,5697.48
+1996-06-04,5624.71,5697.84,5616.58,5665.71,386040000,5665.71
+1996-06-03,5643.18,5662.75,5587.40,5624.71,318470000,5624.71
+1996-05-31,5693.41,5712.62,5614.36,5643.18,351750000,5643.18
+1996-05-30,5673.83,5734.41,5625.07,5693.41,381960000,5693.41
+1996-05-29,5709.67,5743.65,5632.46,5673.83,346730000,5673.83
+1996-05-28,5762.86,5798.69,5680.48,5709.67,341480000,5709.67
+1996-05-24,5762.12,5815.68,5722.59,5762.86,329150000,5762.86
+1996-05-23,5778.00,5833.04,5704.12,5762.12,431850000,5762.12
+1996-05-22,5736.26,5803.49,5687.87,5778.00,423670000,5778.00
+1996-05-21,5748.82,5794.63,5698.21,5736.26,409610000,5736.26
+1996-05-20,5687.50,5778.74,5657.58,5748.82,385000000,5748.82
+1996-05-17,5635.05,5729.61,5631.35,5687.50,429140000,5687.50
+1996-05-16,5625.44,5677.53,5577.42,5635.05,392070000,5635.05
+1996-05-15,5624.71,5691.57,5590.72,5625.44,447790000,5625.44
+1996-05-14,5582.60,5663.12,5566.71,5624.71,460440000,5624.71
+1996-05-13,5518.14,5601.80,5495.42,5582.60,394180000,5582.60
+1996-05-10,5478.03,5559.68,5478.03,5518.14,428370000,5518.14
+1996-05-09,5474.06,5534.76,5419.87,5475.14,404310000,5475.14
+1996-05-08,5420.95,5486.34,5327.74,5474.06,495460000,5474.06
+1996-05-07,5464.31,5486.34,5392.05,5420.95,410770000,5420.95
+1996-05-06,5478.03,5528.97,5397.83,5464.31,375820000,5464.31
+1996-05-03,5498.27,5555.71,5439.74,5478.03,434010000,5478.03
+1996-05-02,5575.22,5578.11,5455.27,5498.27,442960000,5498.27
+1996-05-01,5569.08,5619.29,5523.56,5575.22,404620000,5575.22
+1996-04-30,5573.41,5606.29,5522.83,5569.08,393390000,5569.08
+1996-04-29,5567.99,5611.71,5515.25,5573.41,344030000,5573.41
+1996-04-26,5566.91,5618.57,5517.78,5567.99,402530000,5567.99
+1996-04-25,5553.90,5601.23,5490.68,5566.91,461120000,5566.91
+1996-04-24,5588.59,5619.29,5512.36,5553.90,494220000,5553.90
+1996-04-23,5564.74,5621.82,5534.76,5588.59,452690000,5588.59
+1996-04-22,5535.48,5610.62,5516.33,5564.74,397460000,5564.74
+1996-04-19,5551.74,5593.64,5504.41,5535.48,435690000,5535.48
+1996-04-18,5549.93,5600.51,5493.93,5551.74,415150000,5551.74
+1996-04-17,5620.02,5653.25,5500.07,5549.93,465200000,5549.93
+1996-04-16,5592.92,5656.14,5554.99,5620.02,453310000,5620.02
+1996-04-15,5532.59,5614.60,5517.41,5592.92,346370000,5592.92
+1996-04-12,5487.07,5577.39,5445.16,5532.59,413270000,5532.59
+1996-04-11,5485.98,5540.17,5382.66,5487.07,519710000,5487.07
+1996-04-10,5560.41,5601.23,5452.02,5485.98,475150000,5485.98
+1996-04-09,5594.37,5644.58,5530.06,5560.41,426790000,5560.41
+1996-04-08,5624.71,5624.71,5518.14,5594.37,411810000,5594.37
+1996-04-04,5689.74,5737.07,5633.02,5682.88,383400000,5682.88
+1996-04-03,5671.68,5712.50,5619.29,5689.74,386620000,5689.74
+1996-04-02,5637.72,5706.72,5597.26,5671.68,406640000,5671.68
+1996-04-01,5587.14,5670.23,5562.57,5637.72,392120000,5637.72
+1996-03-29,5630.85,5682.88,5550.29,5587.14,413510000,5587.14
+1996-03-28,5626.88,5664.45,5564.74,5630.85,370750000,5630.85
+1996-03-27,5670.60,5703.47,5596.53,5626.88,406280000,5626.88
+1996-03-26,5643.86,5701.30,5595.81,5670.60,400090000,5670.60
+1996-03-25,5636.64,5712.14,5592.92,5643.86,336700000,5643.86
+1996-03-22,5626.88,5681.07,5589.67,5636.64,329390000,5636.64
+1996-03-21,5655.42,5696.25,5590.03,5626.88,367180000,5626.88
+1996-03-20,5669.51,5724.06,5590.39,5655.42,409780000,5655.42
+1996-03-19,5683.60,5755.86,5619.66,5669.51,438300000,5669.51
+1996-03-18,5584.97,5706.00,5573.41,5683.60,437100000,5683.60
+1996-03-15,5586.06,5628.69,5523.56,5584.97,529970000,5584.97
+1996-03-14,5568.72,5662.29,5536.56,5586.06,492630000,5586.06
+1996-03-13,5583.89,5626.52,5513.80,5568.72,413030000,5568.72
+1996-03-12,5581.00,5622.55,5464.67,5583.89,454980000,5583.89
+1996-03-11,5470.45,5605.20,5425.29,5581.00,449500000,5581.00
+1996-03-08,5612.79,5612.79,5395.30,5470.45,546550000,5470.45
+1996-03-07,5629.77,5667.34,5572.33,5641.69,425790000,5641.69
+1996-03-06,5642.42,5700.22,5585.70,5629.77,428220000,5629.77
+1996-03-05,5600.15,5655.78,5558.24,5642.42,445700000,5642.42
+1996-03-04,5536.56,5646.39,5511.99,5600.15,417270000,5600.15
+1996-03-01,5485.62,5573.41,5424.20,5536.56,471480000,5536.56
+1996-02-29,5506.21,5562.21,5440.46,5485.62,453170000,5485.62
+1996-02-28,5549.21,5625.07,5487.07,5506.21,447790000,5506.21
+1996-02-27,5565.10,5597.26,5478.76,5549.21,431340000,5549.21
+1996-02-26,5630.49,5647.83,5530.42,5565.10,399330000,5565.10
+1996-02-23,5608.46,5693.36,5546.32,5630.49,443130000,5630.49
+1996-02-22,5515.97,5638.44,5511.63,5608.46,494750000,5608.46
+1996-02-21,5458.53,5548.12,5440.82,5515.97,431220000,5515.97
+1996-02-20,5503.32,5515.97,5393.50,5458.53,395910000,5458.53
+1996-02-16,5551.37,5563.30,5470.45,5503.32,445570000,5503.32
+1996-02-15,5579.55,5623.27,5514.88,5551.37,415320000,5551.37
+1996-02-14,5601.23,5633.02,5534.39,5579.55,421790000,5579.55
+1996-02-13,5600.15,5644.94,5530.06,5601.23,441540000,5601.23
+1996-02-12,5541.62,5643.50,5531.14,5600.15,401490000,5600.15
+1996-02-09,5539.45,5603.76,5474.06,5541.62,477640000,5541.62
+1996-02-08,5492.12,5559.68,5441.55,5539.45,474970000,5539.45
+1996-02-07,5459.61,5520.30,5423.84,5492.12,462730000,5492.12
+1996-02-06,5407.59,5483.82,5371.82,5459.61,465940000,5459.61
+1996-02-05,5373.99,5433.96,5319.43,5407.59,377760000,5407.59
+1996-02-02,5405.06,5442.99,5338.94,5373.99,420020000,5373.99
+1996-02-01,5395.30,5438.29,5335.69,5405.06,461610000,5405.06
+1996-01-31,5381.21,5433.24,5314.38,5395.30,472210000,5395.30
+1996-01-30,5304.98,5409.75,5288.73,5381.21,464350000,5381.21
+1996-01-29,5271.75,5338.22,5246.82,5304.98,363330000,5304.98
+1996-01-26,5216.83,5293.78,5187.21,5271.75,385700000,5271.75
+1996-01-25,5242.84,5289.45,5173.84,5216.83,453270000,5216.83
+1996-01-24,5192.27,5297.04,5176.73,5242.84,476380000,5242.84
+1996-01-23,5219.36,5241.76,5141.33,5192.27,416910000,5192.27
+1996-01-22,5184.68,5254.77,5133.02,5219.36,398040000,5219.36
+1996-01-19,5124.35,5214.66,5087.49,5184.68,497720000,5184.68
+1996-01-18,5066.90,5166.98,5032.58,5124.35,450410000,5124.35
+1996-01-17,5088.22,5133.38,5028.61,5066.90,458720000,5066.90
+1996-01-16,5043.78,5116.04,5000.79,5088.22,425220000,5088.22
+1996-01-15,5061.12,5099.42,5012.71,5043.78,306180000,5043.78
+1996-01-12,5065.10,5114.23,5000.07,5061.12,383400000,5061.12
+1996-01-11,5032.94,5099.78,5002.96,5065.10,408800000,5065.10
+1996-01-10,5130.13,5151.69,5000.07,5032.94,496830000,5032.94
+1996-01-09,5197.70,5239.23,5100.86,5130.13,417400000,5130.13
+1996-01-08,5181.43,5207.08,5179.98,5197.70,130360000,5197.70
+1996-01-05,5173.84,5217.55,5107.00,5181.43,437110000,5181.43
+1996-01-04,5194.07,5259.46,5114.23,5173.84,512580000,5173.84
+1996-01-03,5177.45,5252.60,5143.13,5194.07,468950000,5194.07
+1996-01-02,5117.12,5208.16,5087.13,5177.45,364180000,5177.45
+1995-12-29,5095.80,5144.58,5063.65,5117.12,319680000,5117.12
+1995-12-28,5105.92,5132.65,5062.21,5095.80,288470000,5095.80
+1995-12-27,5110.26,5146.74,5077.74,5105.92,252270000,5105.92
+1995-12-26,5097.97,5149.27,5072.32,5110.26,217030000,5110.26
+1995-12-22,5096.53,5146.74,5064.01,5097.97,289600000,5097.97
+1995-12-21,5059.32,5135.91,5031.50,5096.53,415780000,5096.53
+1995-12-20,5109.89,5173.48,5047.39,5059.32,437650000,5059.32
+1995-12-19,5075.21,5146.02,5016.68,5109.89,18440000,5109.89
+1995-12-18,5159.39,5159.39,5042.70,5075.21,426230000,5075.21
+1995-12-15,5182.15,5217.55,5135.54,5176.73,636780000,5176.73
+1995-12-14,5216.47,5266.69,5148.55,5182.15,461960000,5182.15
+1995-12-13,5174.92,5246.10,5144.22,5216.47,414680000,5216.47
+1995-12-12,5184.32,5226.23,5132.29,5174.92,349410000,5174.92
+1995-12-11,5156.86,5225.50,5122.18,5184.32,342050000,5184.32
+1995-12-08,5159.39,5200.21,5115.31,5156.86,327500000,5156.86
+1995-12-07,5199.13,5211.05,5124.35,5159.39,379260000,5159.39
+1995-12-06,5177.45,5234.53,5147.47,5199.13,417750000,5199.13
+1995-12-05,5139.52,5216.83,5108.45,5177.45,434000000,5177.45
+1995-12-04,5087.13,5157.58,5057.87,5139.52,405080000,5139.52
+1995-12-01,5074.49,5133.02,5038.36,5087.13,392650000,5087.13
+1995-11-30,5105.56,5143.13,5033.17,5074.49,439470000,5074.49
+1995-11-29,5078.10,5126.51,5047.03,5105.56,398230000,5105.56
+1995-11-28,5070.88,5105.56,5006.21,5078.10,408860000,5078.10
+1995-11-27,5048.84,5114.23,5034.03,5070.88,356180000,5070.88
+1995-11-24,5041.61,5072.68,5028.61,5048.84,125870000,5048.84
+1995-11-22,5023.55,5096.17,4982.72,5041.61,404900000,5041.61
+1995-11-21,4983.09,5050.28,4948.04,5023.55,405860000,5023.55
+1995-11-20,4989.95,5030.77,4946.60,4983.09,333110000,4983.09
+1995-11-17,4969.36,5022.10,4934.31,4989.95,429990000,4989.95
+1995-11-16,4922.75,5003.68,4902.16,4969.36,418430000,4969.36
+1995-11-15,4871.81,4939.73,4835.69,4922.75,373090000,4922.75
+1995-11-14,4872.90,4923.11,4826.29,4871.81,353650000,4871.81
+1995-11-13,4870.37,4909.75,4821.23,4872.90,292390000,4872.90
+1995-11-10,4864.23,4896.02,4820.51,4870.37,297950000,4870.37
+1995-11-09,4852.67,4902.52,4811.84,4864.23,379500000,4864.23
+1995-11-08,4797.03,4877.59,4775.71,4852.67,359770000,4852.67
+1995-11-07,4814.01,4839.30,4770.66,4797.03,365720000,4797.03
+1995-11-06,4825.57,4862.78,4779.33,4814.01,309090000,4814.01
+1995-11-03,4808.59,4858.81,4774.63,4825.57,344360000,4825.57
+1995-11-02,4766.68,4833.16,4745.00,4808.59,396150000,4808.59
+1995-11-01,4755.48,4801.73,4719.72,4766.68,377930000,4766.68
+1995-10-31,4756.57,4821.96,4735.97,4755.48,377350000,4755.48
+1995-10-30,4741.75,4798.84,4716.46,4756.57,318840000,4756.57
+1995-10-27,4703.82,4766.68,4653.24,4741.75,378820000,4741.75
+1995-10-26,4753.68,4777.88,4655.05,4703.82,464190000,4703.82
+1995-10-25,4783.66,4824.49,4708.88,4753.68,433570000,4753.68
+1995-10-24,4755.48,4819.07,4730.92,4783.66,415400000,4783.66
+1995-10-23,4794.86,4805.70,4724.41,4755.48,329720000,4755.48
+1995-10-20,4802.45,4836.41,4758.37,4794.86,388140000,4794.86
+1995-10-19,4777.52,4830.27,4744.28,4802.45,406620000,4802.45
+1995-10-18,4795.95,4837.49,4747.53,4777.52,411270000,4777.52
+1995-10-17,4784.38,4831.35,4747.90,4795.95,352940000,4795.95
+1995-10-16,4793.78,4823.04,4751.51,4784.38,299520000,4784.38
+1995-10-13,4764.88,4845.08,4749.70,4793.78,373970000,4793.78
+1995-10-12,4735.25,4790.16,4709.24,4764.88,343930000,4764.88
+1995-10-11,4720.80,4773.91,4686.43,4735.25,343060000,4735.25
+1995-10-10,4726.22,4745.73,4638.43,4720.80,412670000,4720.80
+1995-10-09,4769.21,4781.13,4691.54,4726.22,275280000,4726.22
+1995-10-06,4762.71,4805.70,4731.64,4769.21,314170000,4769.21
+1995-10-05,4740.67,4794.86,4705.63,4762.71,367410000,4762.71
+1995-10-04,4749.70,4787.27,4689.01,4740.67,339350000,4740.67
+1995-10-03,4761.26,4791.61,4702.74,4749.70,385890000,4749.70
+1995-10-02,4789.08,4817.98,4732.72,4761.26,304990000,4761.26
+1995-09-29,4787.64,4834.96,4757.65,4789.08,337670000,4789.08
+1995-09-28,4762.35,4810.03,4731.64,4787.64,367610000,4787.64
+1995-09-27,4765.60,4790.16,4692.98,4762.35,410970000,4762.35
+1995-09-26,4769.93,4816.54,4738.86,4765.60,362550000,4765.60
+1995-09-25,4764.15,4804.62,4728.02,4769.93,273110000,4769.93
+1995-09-22,4767.40,4789.44,4706.35,4764.15,370750000,4764.15
+1995-09-21,4792.69,4820.15,4728.75,4767.40,367060000,4767.40
+1995-09-20,4767.04,4828.46,4746.45,4792.69,402530000,4792.69
+1995-09-19,4780.41,4798.11,4734.53,4767.04,371080000,4767.04
+1995-09-18,4797.57,4814.01,4729.47,4780.41,328630000,4780.41
+1995-09-15,4801.80,4839.48,4762.35,4797.57,459370000,4797.57
+1995-09-14,4765.52,4830.32,4731.36,4801.80,382860000,4801.80
+1995-09-13,4747.21,4801.09,4697.55,4765.52,381450000,4765.52
+1995-09-12,4704.94,4762.35,4689.45,4747.21,342580000,4747.21
+1995-09-11,4700.72,4744.04,4672.54,4704.94,296820000,4704.94
+1995-09-08,4669.72,4722.91,4648.59,4700.72,317260000,4700.72
+1995-09-07,4683.81,4710.58,4640.14,4669.72,321710000,4669.72
+1995-09-06,4670.08,4716.21,4648.95,4683.81,369510000,4683.81
+1995-09-05,4647.54,4697.90,4625.70,4670.08,332660000,4670.08
+1995-09-01,4610.56,4672.19,4594.71,4647.54,255710000,4647.54
+1995-08-31,4604.57,4634.51,4582.38,4610.56,300890000,4610.56
+1995-08-30,4608.44,4639.79,4582.38,4604.57,329780000,4604.57
+1995-08-29,4594.00,4625.35,4554.21,4608.44,311290000,4608.44
+1995-08-28,4601.40,4632.39,4566.53,4594.00,267860000,4594.00
+1995-08-25,4580.62,4629.93,4569.70,4601.40,255990000,4601.40
+1995-08-24,4584.85,4618.30,4552.80,4580.62,299200000,4580.62
+1995-08-23,4620.42,4636.27,4571.81,4584.85,291380000,4584.85
+1995-08-22,4614.78,4646.13,4580.62,4620.42,290350000,4620.42
+1995-08-21,4617.60,4676.42,4593.65,4614.78,303200000,4614.78
+1995-08-18,4630.63,4665.15,4597.88,4617.60,312030000,4617.60
+1995-08-17,4639.08,4659.16,4587.66,4630.63,354460000,4630.63
+1995-08-16,4640.84,4673.60,4593.30,4639.08,390070000,4639.08
+1995-08-15,4659.86,4672.89,4602.10,4640.84,330040000,4640.84
+1995-08-14,4618.30,4677.12,4601.75,4659.86,263750000,4659.86
+1995-08-11,4643.66,4659.51,4584.85,4618.30,267850000,4618.30
+1995-08-10,4671.49,4698.96,4621.47,4643.66,306660000,4643.66
+1995-08-09,4693.32,4712.34,4649.30,4671.49,303390000,4671.49
+1995-08-08,4693.32,4722.55,4654.23,4693.32,305150000,4693.32
+1995-08-07,4683.46,4727.84,4667.26,4693.32,276040000,4693.32
+1995-08-04,4701.42,4728.54,4660.57,4683.46,314730000,4683.46
+1995-08-03,4690.15,4720.44,4632.04,4701.42,353110000,4701.42
+1995-08-02,4700.37,4772.56,4667.96,4690.15,374310000,4690.15
+1995-08-01,4708.47,4742.98,4648.59,4700.37,334770000,4700.37
+1995-07-31,4715.51,4753.55,4671.13,4708.47,291950000,4708.47
+1995-07-28,4732.77,4762.70,4686.28,4715.51,311580000,4715.51
+1995-07-27,4707.06,4767.99,4691.56,4732.77,356570000,4732.77
+1995-07-26,4714.45,4750.73,4665.15,4707.06,393460000,4707.06
+1995-07-25,4668.67,4743.69,4651.76,4714.45,373210000,4714.45
+1995-07-24,4641.55,4701.42,4620.42,4668.67,315170000,4668.67
+1995-07-21,4641.55,4676.06,4596.82,4641.55,427770000,4641.55
+1995-07-20,4628.87,4684.52,4578.51,4641.55,383380000,4641.55
+1995-07-19,4686.28,4698.60,4530.26,4628.87,489850000,4628.87
+1995-07-18,4734.53,4734.53,4648.24,4686.28,372230000,4686.28
+1995-07-17,4708.82,4767.63,4681.35,4736.29,322540000,4736.29
+1995-07-14,4727.48,4736.99,4664.79,4708.82,312930000,4708.82
+1995-07-13,4727.29,4766.58,4676.06,4727.48,387470000,4727.48
+1995-07-12,4680.60,4747.00,4654.66,4727.29,416000000,4727.29
+1995-07-11,4702.39,4724.52,4647.74,4680.60,376770000,4680.60
+1995-07-10,4702.73,4747.69,4670.91,4702.39,409700000,4702.39
+1995-07-07,4664.00,4740.77,4628.38,4702.73,466540000,4702.73
+1995-07-06,4615.23,4681.98,4587.91,4664.00,420470000,4664.00
+1995-07-05,4585.15,4652.24,4561.63,4615.23,357810000,4615.23
+1995-07-03,4556.10,4594.83,4536.04,4585.15,117870000,4585.15
+1995-06-30,4550.56,4606.24,4513.90,4556.10,311320000,4556.10
+1995-06-29,4556.79,4592.76,4510.45,4550.56,313060000,4550.56
+1995-06-28,4542.61,4587.22,4512.87,4556.79,368060000,4556.79
+1995-06-27,4551.25,4592.41,4511.48,4542.61,346950000,4542.61
+1995-06-26,4585.84,4600.02,4536.38,4551.25,296720000,4551.25
+1995-06-23,4589.64,4609.70,4549.18,4585.84,321530000,4585.84
+1995-06-22,4547.10,4614.20,4535.35,4589.64,420950000,4589.64
+1995-06-21,4550.56,4583.07,4517.02,4547.10,398210000,4547.10
+1995-06-20,4553.68,4587.22,4497.99,4550.56,382290000,4550.56
+1995-06-19,4510.79,4577.19,4498.69,4553.68,322620000,4553.68
+1995-06-16,4496.27,4533.96,4482.43,4510.79,442740000,4510.79
+1995-06-15,4491.08,4527.74,4466.87,4496.27,334640000,4496.27
+1995-06-14,4484.51,4510.79,4449.23,4491.08,330750000,4491.08
+1995-06-13,4446.46,4504.91,4440.24,4484.51,339620000,4484.51
+1995-06-12,4423.99,4482.09,4415.69,4446.46,287830000,4446.46
+1995-06-09,4458.57,4466.87,4394.59,4423.99,328960000,4423.99
+1995-06-08,4462.03,4492.12,4431.59,4458.57,289880000,4458.57
+1995-06-07,4485.20,4497.65,4432.29,4462.03,327790000,4462.03
+1995-06-06,4476.55,4520.47,4446.46,4485.20,340470000,4485.20
+1995-06-05,4444.39,4510.45,4417.76,4476.55,337520000,4476.55
+1995-06-02,4472.75,4496.27,4406.35,4444.39,366000000,4444.39
+1995-06-01,4465.14,4499.72,4421.56,4472.75,345890000,4472.75
+1995-05-31,4378.68,4467.91,4360.70,4465.14,358160000,4465.14
+1995-05-30,4369.00,4412.92,4334.41,4378.68,283020000,4378.68
+1995-05-26,4412.23,4423.64,4338.91,4369.00,290730000,4369.00
+1995-05-25,4427.44,4451.31,4375.91,4412.23,341820000,4412.23
+1995-05-24,4436.44,4480.70,4390.78,4438.16,391750000,4438.16
+1995-05-23,4395.63,4451.65,4372.46,4436.44,362690000,4436.44
+1995-05-22,4341.33,4416.03,4337.87,4395.63,285600000,4395.63
+1995-05-19,4340.64,4368.65,4287.38,4341.33,354010000,4341.33
+1995-05-18,4422.60,4426.41,4330.95,4340.64,351850000,4340.64
+1995-05-17,4435.05,4452.69,4386.63,4422.60,347930000,4422.60
+1995-05-16,4437.47,4464.10,4408.08,4435.05,366180000,4435.05
+1995-05-15,4430.56,4468.94,4398.74,4437.47,316240000,4437.47
+1995-05-12,4411.19,4463.07,4371.07,4430.56,361000000,4430.56
+1995-05-11,4404.62,4446.12,4365.19,4411.19,339900000,4411.19
+1995-05-10,4390.78,4440.24,4347.55,4404.62,381990000,4404.62
+1995-05-09,4383.87,4421.22,4360.00,4390.78,361430000,4390.78
+1995-05-08,4343.40,4407.04,4316.43,4383.87,291810000,4383.87
+1995-05-05,4359.66,4389.75,4310.55,4343.40,342380000,4343.40
+1995-05-04,4373.15,4426.41,4329.92,4359.66,434920000,4359.66
+1995-05-03,4328.88,4392.51,4312.28,4373.15,392290000,4373.15
+1995-05-02,4316.08,4348.25,4288.42,4328.88,300660000,4328.88
+1995-05-01,4321.27,4352.74,4278.73,4316.08,296830000,4316.08
+1995-04-28,4314.70,4348.94,4270.78,4321.27,320270000,4321.27
+1995-04-27,4299.83,4335.10,4269.05,4314.70,350850000,4314.70
+1995-04-26,4300.17,4324.73,4267.32,4299.83,350790000,4299.83
+1995-04-25,4303.98,4337.18,4267.32,4300.17,351790000,4300.17
+1995-04-24,4270.09,4328.88,4239.65,4303.98,325760000,4303.98
+1995-04-21,4230.66,4296.37,4214.41,4270.09,403210000,4270.09
+1995-04-20,4207.49,4263.86,4186.39,4230.66,368440000,4230.66
+1995-04-19,4179.13,4232.39,4143.51,4207.49,377520000,4207.49
+1995-04-18,4195.38,4221.67,4152.15,4179.13,344680000,4179.13
+1995-04-17,4208.18,4260.06,4174.63,4195.38,333930000,4195.38
+1995-04-13,4197.81,4243.46,4173.94,4208.18,301510000,4208.18
+1995-04-12,4187.08,4221.67,4163.57,4197.81,327880000,4197.81
+1995-04-11,4198.15,4229.97,4168.06,4187.08,309710000,4187.08
+1995-04-10,4192.62,4219.94,4163.91,4198.15,260980000,4198.15
+1995-04-07,4205.41,4226.86,4154.23,4192.62,314750000,4192.62
+1995-04-06,4200.57,4239.31,4179.13,4205.41,320460000,4205.41
+1995-04-05,4201.61,4229.62,4166.33,4200.57,315170000,4200.57
+1995-04-04,4168.41,4220.98,4154.23,4201.61,330550000,4201.61
+1995-04-03,4157.69,4202.30,4129.68,4168.41,287380000,4168.41
+1995-03-31,4172.56,4194.00,4100.28,4157.69,352940000,4157.69
+1995-03-30,4160.80,4213.37,4128.29,4172.56,362020000,4172.56
+1995-03-29,4151.81,4213.71,4121.72,4160.80,385910000,4160.80
+1995-03-28,4157.34,4176.02,4120.68,4151.81,320360000,4151.81
+1995-03-27,4138.67,4177.40,4113.08,4157.34,296160000,4157.34
+1995-03-24,4087.83,4155.27,4087.14,4138.67,358370000,4138.67
+1995-03-23,4082.99,4107.89,4046.33,4087.83,318490000,4087.83
+1995-03-22,4072.61,4107.54,4039.07,4082.99,313120000,4082.99
+1995-03-21,4083.68,4122.41,4046.67,4072.61,367110000,4072.61
+1995-03-20,4073.65,4115.15,4051.17,4083.68,301720000,4083.68
+1995-03-17,4069.15,4101.66,4044.94,4073.65,415810000,4073.65
+1995-03-16,4038.37,4095.78,4021.77,4069.15,336330000,4069.15
+1995-03-15,4048.75,4070.19,4008.63,4038.37,309540000,4038.37
+1995-03-14,4025.23,4087.14,4014.86,4048.75,346140000,4048.75
+1995-03-13,4035.61,4060.85,3999.29,4025.23,275280000,4025.23
+1995-03-10,3983.39,4054.97,3978.20,4035.61,383000000,4035.61
+1995-03-09,3979.23,4011.40,3953.99,3983.39,319100000,3983.39
+1995-03-08,3962.63,4002.41,3944.65,3979.23,349700000,3979.23
+1995-03-07,3997.56,4009.67,3935.31,3962.63,355550000,3962.63
+1995-03-06,3989.61,4015.89,3944.31,3997.56,298850000,3997.56
+1995-03-03,3979.93,4004.83,3946.03,3989.61,330840000,3989.61
+1995-03-02,3994.80,4009.67,3947.07,3979.93,329430000,3979.93
+1995-03-01,4011.05,4033.19,3960.56,3994.80,362590000,3994.80
+1995-02-28,3988.57,4021.43,3967.48,4011.05,317120000,4011.05
+1995-02-27,4011.74,4033.19,3966.78,3988.57,285790000,3988.57
+1995-02-24,4003.33,4033.61,3974.06,4011.74,302850000,4011.74
+1995-02-23,3979.45,4034.62,3979.45,4003.33,394100000,4003.33
+1995-02-22,3963.97,4002.32,3944.46,3973.05,339140000,3973.05
+1995-02-21,3953.54,3989.88,3930.66,3963.97,308060000,3963.97
+1995-02-17,3987.52,4001.99,3937.05,3953.54,350560000,3953.54
+1995-02-16,3986.17,4011.07,3948.16,3987.52,360990000,3987.52
+1995-02-15,3958.25,4019.15,3937.73,3986.17,377940000,3986.17
+1995-02-14,3954.21,3984.83,3930.66,3958.25,300720000,3958.25
+1995-02-13,3939.07,3974.74,3920.57,3954.21,256210000,3954.21
+1995-02-10,3932.68,3962.96,3908.46,3939.07,295550000,3939.07
+1995-02-09,3935.37,3967.33,3904.76,3932.68,325570000,3932.68
+1995-02-08,3937.39,3967.67,3909.13,3935.37,317910000,3935.37
+1995-02-07,3937.73,3960.27,3907.45,3937.39,317110000,3937.39
+1995-02-06,3928.64,3964.31,3900.04,3937.73,325660000,3937.73
+1995-02-03,3876.16,3959.60,3876.16,3928.64,440950000,3928.64
+1995-02-02,3847.56,3884.23,3828.38,3870.77,322030000,3870.77
+1995-02-01,3843.86,3886.25,3809.21,3847.56,395300000,3847.56
+1995-01-31,3832.08,3872.12,3809.54,3843.86,411570000,3843.86
+1995-01-30,3857.99,3881.20,3794.40,3832.08,318530000,3832.08
+1995-01-27,3870.44,3914.18,3827.37,3857.99,339490000,3857.99
+1995-01-26,3871.45,3903.41,3839.15,3870.44,304650000,3870.44
+1995-01-25,3862.70,3908.79,3832.08,3871.45,342240000,3871.45
+1995-01-24,3867.41,3898.36,3840.16,3862.70,315410000,3862.70
+1995-01-23,3869.43,3885.58,3815.26,3867.41,325810000,3867.41
+1995-01-20,3882.21,3898.70,3826.70,3869.43,376870000,3869.43
+1995-01-19,3928.98,3929.99,3866.74,3882.21,297220000,3882.21
+1995-01-18,3930.66,3950.85,3889.95,3928.98,343100000,3928.98
+1995-01-17,3932.34,3953.88,3895.33,3930.66,330890000,3930.66
+1995-01-16,3908.46,3955.56,3889.95,3932.34,315800000,3932.34
+1995-01-13,3859.00,3924.27,3852.61,3908.46,336740000,3908.46
+1995-01-12,3862.03,3886.59,3831.41,3859.00,313040000,3859.00
+1995-01-11,3866.74,3899.71,3824.68,3862.03,346310000,3862.03
+1995-01-10,3861.35,3912.49,3844.87,3866.74,352440000,3866.74
+1995-01-09,3867.41,3889.28,3834.44,3861.35,278710000,3861.35
+1995-01-06,3850.92,3902.40,3823.67,3867.41,308070000,3867.41
+1995-01-05,3857.65,3876.83,3825.35,3850.92,309140000,3850.92
+1995-01-04,3838.48,3876.83,3815.26,3857.65,319510000,3857.65
+1995-01-03,3834.44,3864.72,3805.50,3838.48,262450000,3838.48
+1994-12-30,3833.43,3874.48,3812.91,3834.44,256260000,3834.44
+1994-12-29,3839.49,3867.41,3812.91,3833.43,250650000,3833.43
+1994-12-28,3861.69,3871.45,3816.94,3839.49,246260000,3839.49
+1994-12-27,3833.43,3882.21,3832.08,3861.69,211180000,3861.69
+1994-12-23,3814.92,3860.01,3808.53,3833.43,196540000,3833.43
+1994-12-22,3801.80,3850.59,3780.61,3814.92,339670000,3814.92
+1994-12-21,3767.15,3836.46,3761.77,3801.80,378790000,3801.80
+1994-12-20,3790.70,3807.19,3752.35,3767.15,325510000,3767.15
+1994-12-19,3807.19,3815.26,3764.46,3790.70,271850000,3790.70
+1994-12-16,3765.47,3817.95,3758.07,3807.19,481860000,3807.19
+1994-12-15,3746.29,3794.07,3729.13,3765.47,332790000,3765.47
+1994-12-14,3715.34,3772.20,3700.53,3746.29,355000000,3746.29
+1994-12-13,3718.37,3749.32,3690.78,3715.34,307110000,3715.34
+1994-12-12,3691.11,3734.52,3667.90,3718.37,285730000,3718.37
+1994-12-09,3685.73,3713.32,3638.97,3691.11,336440000,3691.11
+1994-12-08,3735.52,3757.39,3670.25,3685.73,362280000,3685.73
+1994-12-07,3745.95,3758.07,3700.87,3735.52,283490000,3735.52
+1994-12-06,3741.92,3762.10,3703.56,3745.95,298890000,3745.95
+1994-12-05,3745.62,3779.93,3715.67,3741.92,258480000,3741.92
+1994-12-02,3700.87,3755.04,3680.68,3745.62,284740000,3745.62
+1994-12-01,3739.23,3755.37,3680.68,3700.87,285920000,3700.87
+1994-11-30,3738.55,3783.30,3718.37,3739.23,300800000,3739.23
+1994-11-29,3739.56,3755.04,3703.90,3738.55,286580000,3738.55
+1994-11-28,3708.27,3759.41,3693.13,3739.56,265020000,3739.56
+1994-11-25,3675.97,3722.40,3675.97,3708.27,118290000,3708.27
+1994-11-23,3677.99,3704.91,3612.05,3674.63,430730000,3674.63
+1994-11-22,3769.51,3787.34,3669.58,3677.99,387270000,3677.99
+1994-11-21,3815.26,3845.20,3758.74,3769.51,293030000,3769.51
+1994-11-18,3828.05,3844.87,3773.21,3815.26,356730000,3815.26
+1994-11-17,3845.20,3868.08,3797.77,3828.05,323190000,3828.05
+1994-11-16,3826.36,3864.38,3803.82,3845.20,296980000,3845.20
+1994-11-15,3829.73,3871.45,3794.40,3826.36,336330000,3826.36
+1994-11-14,3801.47,3849.91,3795.07,3829.73,260380000,3829.73
+1994-11-11,3821.99,3830.06,3779.93,3801.47,220800000,3801.47
+1994-11-10,3831.75,3873.47,3821.99,3821.99,280910000,3821.99
+1994-11-09,3830.74,3882.89,3798.44,3831.75,341500000,3831.75
+1994-11-08,3808.87,3857.65,3798.75,3830.74,290860000,3830.74
+1994-11-07,3807.52,3830.40,3781.62,3808.87,255030000,3808.87
+1994-11-04,3845.88,3879.52,3802.81,3807.52,280560000,3807.52
+1994-11-03,3837.13,3872.46,3814.25,3845.88,284480000,3845.88
+1994-11-02,3863.37,3888.94,3820.31,3837.13,331360000,3837.13
+1994-11-01,3908.12,3919.90,3836.79,3863.37,314940000,3863.37
+1994-10-31,3930.66,3956.90,3889.28,3908.12,302810000,3908.12
+1994-10-28,3875.15,3953.54,3863.37,3930.66,381450000,3930.66
+1994-10-27,3848.23,3893.99,3834.44,3875.15,327790000,3875.15
+1994-10-26,3850.59,3891.97,3816.61,3848.23,322560000,3848.23
+1994-10-25,3855.30,3883.56,3803.49,3850.59,326100000,3850.59
+1994-10-24,3891.30,3925.61,3840.16,3855.30,282800000,3855.30
+1994-10-21,3911.15,3921.58,3861.35,3891.30,309410000,3891.30
+1994-10-20,3936.04,3954.89,3873.13,3911.15,326100000,3911.15
+1994-10-19,3917.54,3958.25,3887.93,3936.04,317030000,3936.04
+1994-10-18,3923.93,3945.46,3892.64,3917.54,259730000,3917.54
+1994-10-17,3910.47,3949.84,3883.22,3923.93,238490000,3923.93
+1994-10-14,3889.95,3927.97,3862.03,3910.47,251770000,3910.47
+1994-10-13,3878.18,3944.12,3878.18,3889.95,337900000,3889.95
+1994-10-12,3876.83,3903.07,3844.87,3875.15,269550000,3875.15
+1994-10-11,3828.96,3898.36,3828.96,3876.83,355540000,3876.83
+1994-10-10,3797.43,3843.19,3789.36,3821.32,213110000,3821.32
+1994-10-07,3775.56,3826.03,3754.37,3797.43,284230000,3797.43
+1994-10-06,3787.34,3810.89,3752.01,3775.56,272620000,3775.56
+1994-10-05,3801.13,3811.56,3736.20,3787.34,359670000,3787.34
+1994-10-04,3846.89,3873.47,3788.35,3801.13,325620000,3801.13
+1994-10-03,3843.19,3872.79,3809.21,3846.89,269130000,3846.89
+1994-09-30,3854.63,3891.30,3825.69,3843.19,292060000,3843.19
+1994-09-29,3878.18,3892.64,3834.78,3854.63,302280000,3854.63
+1994-09-28,3863.04,3904.76,3854.29,3878.18,330020000,3878.18
+1994-09-27,3849.24,3891.63,3828.72,3863.04,290330000,3863.04
+1994-09-26,3831.75,3869.43,3804.50,3849.24,272530000,3849.24
+1994-09-23,3837.13,3872.46,3806.51,3831.75,300060000,3831.75
+1994-09-22,3851.60,3882.55,3818.29,3837.13,305210000,3837.13
+1994-09-21,3869.09,3886.92,3806.85,3851.60,355330000,3851.60
+1994-09-20,3932.01,3932.01,3859.67,3869.09,326050000,3869.09
+1994-09-19,3933.35,3972.72,3909.80,3936.72,272920000,3936.72
+1994-09-16,3953.88,3955.22,3894.66,3933.35,410750000,3933.35
+1994-09-15,3895.33,3959.93,3883.90,3953.88,281890000,3953.88
+1994-09-14,3879.86,3918.55,3856.64,3895.33,297480000,3895.33
+1994-09-13,3860.34,3905.76,3854.29,3879.86,293370000,3879.86
+1994-09-12,3874.81,3897.02,3843.86,3860.34,244680000,3860.34
+1994-09-09,3902.06,3902.06,3844.20,3874.81,293330000,3874.81
+1994-09-08,3886.25,3926.96,3872.46,3908.46,295010000,3908.46
+1994-09-07,3898.70,3920.90,3860.68,3886.25,292110000,3886.25
+1994-09-06,3885.58,3918.55,3860.01,3898.70,199670000,3898.70
+1994-09-02,3901.44,3928.64,3871.98,3885.58,216150000,3885.58
+1994-09-01,3913.42,3927.99,3871.66,3901.44,285670000,3901.44
+1994-08-31,3917.30,3954.54,3878.78,3913.42,354650000,3913.42
+1994-08-30,3898.85,3934.14,3875.87,3917.30,294520000,3917.30
+1994-08-29,3881.05,3927.34,3869.39,3898.85,266080000,3898.85
+1994-08-26,3836.69,3903.38,3836.69,3881.05,305120000,3881.05
+1994-08-25,3846.73,3872.63,3810.47,3829.89,284200000,3829.89
+1994-08-24,3775.83,3852.56,3767.41,3846.73,309780000,3846.73
+1994-08-23,3751.22,3804.64,3745.07,3775.83,307240000,3775.83
+1994-08-22,3755.11,3771.94,3722.41,3751.22,235870000,3751.22
+1994-08-19,3755.43,3785.22,3727.59,3755.11,276630000,3755.11
+1994-08-18,3776.48,3793.63,3736.98,3755.43,287330000,3755.43
+1994-08-17,3784.57,3812.09,3754.46,3776.48,309250000,3776.48
+1994-08-16,3760.29,3804.64,3732.45,3784.57,306640000,3784.57
+1994-08-15,3768.71,3798.17,3742.16,3760.29,223210000,3760.29
+1994-08-12,3750.90,3792.66,3738.27,3768.71,249270000,3768.71
+1994-08-11,3766.76,3785.86,3728.56,3750.90,275690000,3750.90
+1994-08-10,3755.76,3793.97,3738.27,3766.76,279470000,3766.76
+1994-08-09,3753.81,3773.89,3728.56,3755.76,259130000,3755.76
+1994-08-08,3747.02,3780.68,3732.77,3753.81,217670000,3753.81
+1994-08-05,3765.79,3769.68,3725.00,3747.02,230270000,3747.02
+1994-08-04,3792.66,3807.23,3752.52,3765.79,289150000,3765.79
+1994-08-03,3796.22,3815.00,3762.88,3792.66,283840000,3792.66
+1994-08-02,3798.17,3829.25,3776.48,3796.22,294740000,3796.22
+1994-08-01,3764.50,3809.50,3749.28,3798.17,258180000,3798.17
+1994-07-29,3730.83,3782.63,3726.30,3764.50,269560000,3764.50
+1994-07-28,3720.47,3757.05,3701.69,3730.83,247560000,3730.83
+1994-07-27,3735.68,3753.17,3693.27,3720.47,251680000,3720.47
+1994-07-26,3741.84,3764.50,3706.22,3735.68,232670000,3735.68
+1994-07-25,3735.04,3762.56,3713.67,3741.84,213470000,3741.84
+1994-07-22,3732.45,3765.15,3707.19,3735.04,261090000,3735.04
+1994-07-21,3727.27,3763.20,3684.86,3732.45,292080000,3732.45
+1994-07-20,3748.31,3763.85,3706.22,3727.27,267740000,3727.27
+1994-07-19,3755.43,3777.45,3726.30,3748.31,251530000,3748.31
+1994-07-18,3753.81,3779.39,3725.00,3755.43,227480000,3755.43
+1994-07-15,3739.25,3769.35,3712.37,3753.81,275860000,3753.81
+1994-07-14,3704.28,3763.53,3697.48,3739.25,319950000,3739.25
+1994-07-13,3702.66,3738.27,3683.89,3704.28,265840000,3704.28
+1994-07-12,3702.99,3725.32,3660.90,3702.66,252250000,3702.66
+1994-07-11,3709.14,3735.36,3671.26,3702.99,222580000,3702.99
+1994-07-08,3688.42,3728.56,3660.90,3709.14,236520000,3709.14
+1994-07-07,3674.50,3714.32,3656.04,3688.42,258500000,3688.42
+1994-07-06,3652.48,3698.13,3631.11,3674.50,233640000,3674.50
+1994-07-05,3646.65,3680.65,3621.73,3652.48,193030000,3652.48
+1994-07-01,3624.96,3675.79,3611.04,3646.65,199030000,3646.65
+1994-06-30,3667.05,3683.56,3610.72,3624.96,294110000,3624.96
+1994-06-29,3669.64,3711.73,3645.68,3667.05,263890000,3667.05
+1994-06-28,3685.50,3705.58,3630.47,3669.64,265880000,3669.64
+1994-06-27,3636.94,3694.89,3603.92,3685.50,250110000,3685.50
+1994-06-24,3699.09,3704.80,3616.65,3636.94,261260000,3636.94
+1994-06-23,3724.77,3752.04,3685.14,3699.09,256480000,3699.09
+1994-06-22,3707.97,3748.87,3694.65,3724.77,251110000,3724.77
+1994-06-21,3741.90,3756.80,3674.68,3707.97,298730000,3707.97
+1994-06-20,3771.07,3771.07,3716.21,3741.90,229520000,3741.90
+1994-06-17,3811.34,3821.48,3764.09,3776.78,373400000,3776.78
+1994-06-16,3790.41,3830.68,3771.39,3811.34,254880000,3811.34
+1994-06-15,3814.83,3838.29,3772.02,3790.41,269740000,3790.41
+1994-06-14,3783.12,3839.88,3769.17,3814.83,288550000,3814.83
+1994-06-13,3773.45,3808.17,3741.26,3783.12,242810000,3783.12
+1994-06-10,3753.14,3798.68,3739.60,3773.45,222480000,3773.45
+1994-06-09,3749.45,3776.83,3721.45,3753.14,252870000,3753.14
+1994-06-08,3755.91,3780.83,3721.45,3749.45,256000000,3749.45
+1994-06-07,3768.52,3788.52,3733.14,3755.91,234680000,3755.91
+1994-06-06,3772.22,3812.83,3749.75,3768.52,259080000,3768.52
+1994-06-03,3758.99,3792.22,3732.52,3772.22,271490000,3772.22
+1994-06-02,3760.83,3791.60,3732.83,3758.99,271150000,3758.99
+1994-06-01,3758.37,3785.14,3717.76,3760.83,279910000,3760.83
+1994-05-31,3757.14,3783.29,3725.45,3758.37,216700000,3758.37
+1994-05-27,3753.46,3772.18,3723.68,3757.14,186430000,3757.14
+1994-05-26,3755.30,3785.07,3722.76,3753.46,255740000,3753.46
+1994-05-25,3745.17,3768.19,3710.79,3755.30,254410000,3755.30
+1994-05-24,3742.41,3786.30,3707.11,3745.17,280040000,3745.17
+1994-05-23,3766.35,3770.65,3711.40,3742.41,249390000,3742.41
+1994-05-20,3758.98,3788.76,3721.84,3766.35,295180000,3766.35
+1994-05-19,3732.89,3782.92,3707.72,3758.98,303680000,3758.98
+1994-05-18,3720.61,3761.74,3683.16,3732.89,339280000,3732.89
+1994-05-17,3671.50,3735.04,3653.70,3720.61,311280000,3720.61
+1994-05-16,3659.68,3694.21,3628.52,3671.50,234680000,3671.50
+1994-05-13,3652.84,3690.32,3626.37,3659.68,252070000,3659.68
+1994-05-12,3629.04,3682.58,3624.58,3652.84,272770000,3652.84
+1994-05-11,3656.41,3678.42,3609.71,3629.04,277400000,3629.04
+1994-05-10,3629.04,3684.67,3627.56,3656.41,297660000,3656.41
+1994-05-09,3669.50,3676.93,3612.39,3629.04,250870000,3629.04
+1994-05-06,3695.97,3702.51,3625.77,3669.50,291910000,3669.50
+1994-05-05,3697.75,3731.07,3675.45,3695.97,255690000,3695.97
+1994-05-04,3714.41,3730.17,3670.09,3697.75,267940000,3697.75
+1994-05-03,3701.02,3736.12,3669.79,3714.41,288270000,3714.41
+1994-05-02,3681.69,3734.04,3648.97,3701.02,296130000,3701.02
+1994-04-29,3668.31,3707.87,3642.13,3681.69,293970000,3681.69
+1994-04-28,3699.54,3723.93,3640.35,3668.31,325200000,3668.31
+1994-04-26,3705.78,3733.15,3669.79,3699.54,288110000,3699.54
+1994-04-25,3648.68,3721.25,3635.29,3705.78,262220000,3705.78
+1994-04-22,3652.54,3690.32,3621.01,3648.68,295710000,3648.68
+1994-04-21,3598.71,3673.96,3582.94,3652.54,378760000,3652.54
+1994-04-20,3619.82,3662.66,3546.65,3598.71,366540000,3598.71
+1994-04-19,3620.42,3670.39,3567.18,3619.82,323280000,3619.82
+1994-04-18,3661.47,3679.61,3593.35,3620.42,271450000,3620.42
+1994-04-15,3663.25,3699.24,3631.13,3661.47,309550000,3661.47
+1994-04-14,3661.47,3693.59,3625.77,3663.25,275130000,3663.25
+1994-04-13,3681.69,3704.30,3616.85,3661.47,278030000,3661.47
+1994-04-12,3688.83,3722.14,3661.17,3681.69,256250000,3681.69
+1994-04-11,3674.26,3720.66,3651.35,3688.83,243180000,3688.83
+1994-04-08,3693.26,3717.15,3644.03,3674.26,264090000,3674.26
+1994-04-07,3679.73,3712.83,3642.59,3693.26,289280000,3693.26
+1994-04-06,3675.41,3722.34,3643.16,3679.73,302000000,3679.73
+1994-04-05,3625.02,3698.15,3625.02,3675.41,366890000,3675.41
+1994-04-04,3633.08,3633.08,3520.80,3593.35,344390000,3593.35
+1994-03-31,3626.75,3673.10,3544.12,3635.96,403580000,3635.96
+1994-03-30,3699.02,3718.88,3612.36,3626.75,390520000,3626.75
+1994-03-29,3762.35,3771.86,3689.23,3699.02,301630000,3699.02
+1994-03-28,3774.73,3793.45,3719.74,3762.35,287360000,3762.35
+1994-03-25,3821.09,3845.85,3764.66,3774.73,249670000,3774.73
+1994-03-24,3865.42,3865.42,3792.58,3821.09,303800000,3821.09
+1994-03-23,3862.55,3901.41,3839.80,3869.46,284600000,3869.46
+1994-03-22,3864.85,3896.23,3840.66,3862.55,283090000,3862.55
+1994-03-21,3895.65,3898.25,3838.65,3864.85,247390000,3864.85
+1994-03-18,3865.14,3911.78,3838.65,3895.65,462240000,3895.65
+1994-03-17,3848.15,3891.34,3821.66,3865.14,303950000,3865.14
+1994-03-16,3849.59,3879.53,3819.94,3848.15,306820000,3848.15
+1994-03-15,3862.98,3888.46,3826.85,3849.59,329260000,3849.59
+1994-03-14,3862.70,3894.21,3835.96,3862.98,260160000,3862.98
+1994-03-11,3830.62,3872.83,3806.69,3862.70,303250000,3862.70
+1994-03-10,3853.41,3865.51,3801.63,3830.62,369370000,3830.62
+1994-03-09,3851.72,3874.52,3817.95,3853.41,309810000,3853.41
+1994-03-08,3856.22,3881.55,3822.45,3851.72,298110000,3851.72
+1994-03-07,3832.30,3882.40,3824.71,3856.22,285580000,3856.22
+1994-03-04,3824.42,3868.04,3800.50,3832.30,311850000,3832.30
+1994-03-03,3831.74,3862.13,3784.74,3824.42,291960000,3824.42
+1994-03-02,3809.23,3845.25,3741.69,3831.74,361130000,3831.74
+1994-03-01,3832.02,3848.34,3772.93,3809.23,304450000,3809.23
+1994-02-28,3838.78,3874.52,3817.95,3832.02,267610000,3832.02
+1994-02-25,3839.90,3868.89,3811.76,3838.78,273680000,3838.78
+1994-02-24,3891.68,3895.62,3823.86,3839.90,342940000,3839.90
+1994-02-23,3911.66,3931.36,3872.83,3891.68,309910000,3891.68
+1994-02-22,3887.46,3928.83,3873.39,3911.66,270900000,3911.66
+1994-02-18,3922.64,3931.92,3869.73,3887.46,293210000,3887.46
+1994-02-17,3937.27,3975.82,3894.21,3922.64,340030000,3922.64
+1994-02-16,3928.27,3964.85,3906.32,3937.27,295450000,3937.27
+1994-02-15,3904.06,3950.50,3891.40,3928.27,306790000,3928.27
+1994-02-14,3894.78,3935.86,3873.67,3904.06,263190000,3904.06
+1994-02-11,3895.34,3920.95,3855.94,3894.78,213740000,3894.78
+1994-02-10,3931.92,3953.59,3882.96,3895.34,327250000,3895.34
+1994-02-09,3906.03,3956.97,3887.74,3931.92,332670000,3931.92
+1994-02-08,3906.32,3951.34,3873.67,3906.03,318180000,3906.03
+1994-02-07,3871.42,3923.48,3840.75,3906.32,348270000,3906.32
+1994-02-04,3967.66,3979.76,3857.63,3871.42,378380000,3871.42
+1994-02-03,3975.54,3995.52,3932.77,3967.66,318350000,3967.66
+1994-02-02,3964.01,3997.78,3937.27,3975.54,328960000,3975.54
+1994-02-01,3978.36,3998.06,3938.12,3964.01,322510000,3964.01
+1994-01-31,3945.43,4002.84,3937.27,3978.36,322870000,3978.36
+1994-01-28,3926.30,3971.89,3919.54,3945.43,313140000,3945.43
+1994-01-27,3908.00,3951.34,3876.77,3926.30,346500000,3926.30
+1994-01-26,3895.34,3934.74,3863.82,3908.00,304660000,3908.00
+1994-01-25,3912.79,3937.55,3863.82,3895.34,326120000,3895.34
+1994-01-24,3914.48,3947.68,3882.11,3912.79,296900000,3912.79
+1994-01-21,3891.96,3933.33,3875.36,3914.48,346220000,3914.48
+1994-01-20,3884.37,3915.60,3857.91,3891.96,310450000,3891.96
+1994-01-19,3870.29,3909.97,3839.34,3884.37,311370000,3884.37
+1994-01-18,3870.29,3905.19,3840.75,3870.29,309730000,3870.29
+1994-01-17,3867.20,3896.75,3833.71,3870.29,233980000,3870.29
+1994-01-14,3842.43,3891.96,3830.62,3867.20,304910000,3867.20
+1994-01-13,3848.63,3864.67,3808.38,3842.43,277970000,3842.43
+1994-01-12,3850.31,3876.49,3809.79,3848.63,310690000,3848.63
+1994-01-11,3865.51,3885.21,3823.02,3850.31,305490000,3850.31
+1994-01-10,3820.77,3874.52,3804.72,3865.51,319490000,3865.51
+1994-01-07,3803.88,3842.15,3778.83,3820.77,324920000,3820.77
+1994-01-06,3798.82,3843.84,3771.52,3803.88,367880000,3803.88
+1994-01-05,3783.90,3821.33,3750.41,3798.82,400030000,3798.82
+1994-01-04,3756.60,3798.25,3718.89,3783.90,326600000,3783.90
+1994-01-03,3754.09,3790.70,3715.24,3756.60,270140000,3756.60
+1993-12-31,3775.88,3804.11,3745.15,3754.09,168590000,3754.09
+1993-12-30,3794.33,3806.34,3759.96,3775.88,195860000,3775.88
+1993-12-29,3793.77,3818.92,3764.43,3794.33,269570000,3794.33
+1993-12-28,3792.93,3813.33,3766.10,3793.77,200960000,3793.77
+1993-12-27,3757.72,3804.95,3750.46,3792.93,171200000,3792.93
+1993-12-23,3762.19,3791.81,3739.56,3757.72,227240000,3757.72
+1993-12-22,3745.15,3780.64,3725.86,3762.19,272440000,3762.19
+1993-12-21,3755.21,3774.77,3719.72,3745.15,273370000,3745.15
+1993-12-20,3751.57,3777.84,3728.66,3755.21,255900000,3755.21
+1993-12-17,3726.14,3768.90,3706.30,3751.57,363750000,3751.57
+1993-12-16,3716.92,3756.60,3694.29,3726.14,284620000,3726.14
+1993-12-15,3742.63,3776.44,3689.82,3716.92,331770000,3716.92
+1993-12-14,3764.43,3785.94,3726.70,3742.63,275050000,3742.63
+1993-12-13,3740.67,3780.64,3711.33,3764.43,256580000,3764.43
+1993-12-10,3729.78,3758.84,3704.91,3740.67,245620000,3740.67
+1993-12-09,3734.53,3764.43,3709.94,3729.78,287570000,3729.78
+1993-12-08,3718.88,3756.60,3693.73,3734.53,314460000,3734.53
+1993-12-07,3710.21,3746.82,3689.26,3718.88,285690000,3718.88
+1993-12-06,3704.07,3738.44,3687.30,3710.21,292370000,3710.21
+1993-12-03,3702.11,3726.98,3677.80,3704.07,268780000,3704.07
+1993-12-02,3697.08,3725.30,3674.17,3702.11,256370000,3702.11
+1993-12-01,3683.95,3731.73,3673.33,3697.08,293870000,3697.08
+1993-11-30,3677.80,3713.57,3654.88,3683.95,290250000,3683.95
+1993-11-29,3683.95,3721.67,3654.33,3677.80,272710000,3677.80
+1993-11-26,3687.58,3703.23,3660.75,3683.95,90220000,3683.95
+1993-11-24,3674.17,3709.94,3654.33,3687.58,230630000,3687.58
+1993-11-23,3670.25,3702.67,3649.57,3674.17,261590000,3674.17
+1993-11-22,3694.01,3697.92,3627.78,3670.25,280130000,3670.25
+1993-11-19,3685.34,3711.05,3640.07,3694.01,302970000,3694.01
+1993-11-18,3704.35,3721.95,3649.57,3685.34,313480000,3685.34
+1993-11-17,3710.77,3749.90,3660.19,3704.35,319560000,3704.35
+1993-11-16,3677.52,3723.91,3653.77,3710.77,303980000,3710.77
+1993-11-15,3684.51,3705.74,3653.49,3677.52,251030000,3677.52
+1993-11-12,3662.43,3707.42,3648.74,3684.51,326240000,3684.51
+1993-11-11,3663.55,3700.43,3638.40,3662.43,287110000,3662.43
+1993-11-10,3640.07,3683.39,3616.60,3663.55,283450000,3663.55
+1993-11-09,3647.90,3689.82,3623.03,3640.07,278290000,3640.07
+1993-11-08,3643.43,3674.17,3621.91,3647.90,232340000,3647.90
+1993-11-05,3624.98,3663.83,3585.86,3643.43,336900000,3643.43
+1993-11-04,3661.87,3681.99,3609.61,3624.98,323430000,3624.98
+1993-11-03,3697.64,3714.69,3638.40,3661.87,342110000,3661.87
+1993-11-02,3692.61,3724.75,3656.00,3697.64,304780000,3697.64
+1993-11-01,3680.59,3708.26,3656.84,3692.61,256030000,3692.61
+1993-10-29,3687.86,3712.45,3656.84,3680.59,270570000,3680.59
+1993-10-28,3664.66,3713.57,3657.96,3687.86,301220000,3687.86
+1993-10-27,3672.49,3692.33,3634.76,3664.66,279830000,3664.66
+1993-10-26,3673.61,3701.55,3636.16,3672.49,284530000,3672.49
+1993-10-25,3649.30,3694.01,3618.28,3673.61,260310000,3673.61
+1993-10-22,3636.16,3697.92,3612.13,3649.30,301440000,3649.30
+1993-10-21,3645.10,3678.36,3610.45,3636.16,288820000,3636.16
+1993-10-20,3635.32,3667.74,3611.85,3645.10,305670000,3645.10
+1993-10-19,3642.31,3669.97,3601.79,3635.32,304400000,3635.32
+1993-10-18,3629.73,3675.84,3595.92,3642.31,329570000,3642.31
+1993-10-15,3621.63,3664.66,3596.20,3629.73,366110000,3629.73
+1993-10-14,3603.19,3652.09,3574.40,3621.63,353820000,3621.63
+1993-10-13,3593.13,3628.34,3574.12,3603.19,290930000,3603.19
+1993-10-12,3593.41,3619.39,3575.24,3593.13,263970000,3593.13
+1993-10-11,3584.74,3611.01,3565.46,3593.41,183190000,3593.41
+1993-10-08,3583.63,3610.45,3550.37,3584.74,243590000,3584.74
+1993-10-07,3598.99,3616.32,3564.90,3583.63,255210000,3583.63
+1993-10-06,3587.26,3620.79,3570.21,3598.99,277070000,3598.99
+1993-10-05,3577.76,3616.88,3553.72,3587.26,294570000,3587.26
+1993-10-04,3581.11,3603.19,3550.65,3577.76,229380000,3577.76
+1993-10-01,3555.12,3605.14,3541.71,3581.11,256870000,3581.11
+1993-09-30,3566.30,3583.63,3528.57,3555.12,282740000,3555.12
+1993-09-29,3566.02,3596.48,3538.91,3566.30,277690000,3566.30
+1993-09-28,3567.70,3589.49,3542.27,3566.02,243320000,3566.02
+1993-09-27,3543.11,3589.49,3539.47,3567.70,244920000,3567.70
+1993-09-24,3539.75,3568.54,3507.90,3543.11,248270000,3543.11
+1993-09-23,3547.02,3567.70,3513.48,3539.75,276660000,3539.75
+1993-09-22,3537.24,3577.20,3516.56,3547.02,288960000,3547.02
+1993-09-21,3575.80,3592.57,3501.47,3537.24,301740000,3537.24
+1993-09-20,3613.25,3632.81,3567.98,3575.80,228040000,3575.80
+1993-09-17,3630.85,3637.28,3580.83,3613.25,369600000,3613.25
+1993-09-16,3633.65,3651.25,3601.79,3630.85,229700000,3630.85
+1993-09-15,3615.76,3644.82,3573.84,3633.65,294410000,3633.65
+1993-09-14,3634.21,3639.51,3590.61,3615.76,258620000,3615.76
+1993-09-13,3621.63,3655.16,3607.66,3634.21,244970000,3634.21
+1993-09-10,3589.49,3636.16,3576.64,3621.63,269950000,3621.63
+1993-09-09,3588.93,3616.04,3556.52,3589.49,258070000,3589.49
+1993-09-08,3607.10,3623.31,3561.27,3588.93,283100000,3588.93
+1993-09-07,3633.93,3649.02,3592.57,3607.10,229500000,3607.10
+1993-09-03,3626.10,3651.53,3603.75,3633.93,197160000,3633.93
+1993-09-02,3645.10,3660.19,3610.17,3626.10,259870000,3626.10
+1993-09-01,3651.25,3665.50,3619.67,3645.10,245040000,3645.10
+1993-08-31,3643.99,3662.99,3619.67,3651.25,252830000,3651.25
+1993-08-30,3640.63,3667.46,3621.63,3643.99,194180000,3643.99
+1993-08-27,3648.18,3656.28,3606.54,3640.63,196140000,3640.63
+1993-08-26,3652.09,3681.71,3620.23,3648.18,247800000,3648.18
+1993-08-25,3638.96,3674.17,3620.51,3652.09,301640000,3652.09
+1993-08-24,3605.98,3648.18,3590.89,3638.96,270700000,3638.96
+1993-08-23,3615.48,3630.57,3578.87,3605.98,212500000,3605.98
+1993-08-20,3612.13,3633.37,3580.55,3615.48,276800000,3615.48
+1993-08-19,3604.86,3632.25,3581.11,3612.13,293330000,3612.13
+1993-08-18,3586.98,3638.96,3577.48,3604.86,312940000,3604.86
+1993-08-17,3579.15,3611.29,3554.00,3586.98,261320000,3586.98
+1993-08-16,3569.65,3606.54,3547.86,3579.15,229190000,3579.15
+1993-08-13,3569.09,3594.52,3547.58,3569.65,214370000,3569.65
+1993-08-12,3583.35,3607.66,3537.24,3569.09,278530000,3569.09
+1993-08-11,3572.73,3607.94,3550.93,3583.35,268330000,3583.35
+1993-08-10,3576.08,3599.83,3547.02,3572.73,255520000,3572.73
+1993-08-09,3560.43,3599.83,3541.15,3576.08,232750000,3576.08
+1993-08-06,3548.97,3583.35,3536.12,3560.43,221150000,3560.43
+1993-08-05,3552.05,3574.12,3523.54,3548.97,249650000,3548.97
+1993-08-04,3561.27,3579.99,3530.25,3552.05,230040000,3552.05
+1993-08-03,3560.99,3588.10,3530.81,3561.27,254540000,3561.27
+1993-08-02,3539.47,3578.32,3524.94,3560.99,230380000,3560.99
+1993-07-30,3567.42,3581.11,3515.72,3539.47,254420000,3539.47
+1993-07-29,3553.45,3593.41,3531.37,3567.42,261240000,3567.42
+1993-07-28,3565.46,3588.38,3524.38,3553.45,270530000,3553.45
+1993-07-27,3567.70,3604.86,3533.60,3565.46,256750000,3565.46
+1993-07-26,3546.74,3584.74,3541.43,3567.70,223280000,3567.70
+1993-07-23,3525.22,3569.37,3508.17,3546.74,222170000,3546.74
+1993-07-22,3555.40,3566.86,3514.32,3525.22,249630000,3525.22
+1993-07-21,3544.78,3573.84,3516.84,3555.40,278590000,3555.40
+1993-07-20,3535.28,3567.98,3500.63,3544.78,275130000,3544.78
+1993-07-19,3528.29,3563.23,3502.87,3535.28,216370000,3535.28
+1993-07-16,3550.93,3571.61,3505.94,3528.29,263100000,3528.29
+1993-07-15,3542.55,3573.01,3509.85,3550.93,277810000,3550.93
+1993-07-14,3515.44,3562.39,3507.34,3542.55,285890000,3542.55
+1993-07-13,3524.38,3544.22,3491.13,3515.44,236720000,3515.44
+1993-07-12,3521.06,3545.97,3495.04,3524.38,202310000,3524.38
+1993-07-09,3514.42,3544.03,3490.89,3521.06,235210000,3521.06
+1993-07-08,3475.67,3532.41,3462.38,3514.42,282910000,3514.42
+1993-07-07,3449.93,3495.32,3443.28,3475.67,253170000,3475.67
+1993-07-06,3483.97,3502.52,3443.28,3449.93,233420000,3449.93
+1993-07-02,3510.54,3511.65,3468.47,3483.97,220750000,3483.97
+1993-07-01,3516.08,3542.10,3487.29,3510.54,292040000,3510.54
+1993-06-30,3518.85,3543.48,3493.11,3516.08,281120000,3516.08
+1993-06-29,3530.20,3544.87,3491.44,3518.85,276310000,3518.85
+1993-06-28,3490.89,3542.10,3486.74,3530.20,242090000,3530.20
+1993-06-25,3490.61,3512.76,3473.18,3490.89,210430000,3490.89
+1993-06-24,3466.81,3504.73,3449.10,3490.61,267450000,3490.61
+1993-06-23,3497.53,3514.14,3445.77,3466.81,278260000,3466.81
+1993-06-22,3510.82,3530.47,3474.28,3497.53,259530000,3497.53
+1993-06-21,3494.77,3531.86,3477.05,3510.82,223650000,3510.82
+1993-06-18,3521.89,3539.88,3478.44,3494.77,300500000,3494.77
+1993-06-17,3511.65,3539.61,3488.68,3521.89,239810000,3521.89
+1993-06-16,3492.00,3527.43,3460.17,3511.65,264500000,3511.65
+1993-06-15,3514.69,3531.86,3471.24,3492.00,234110000,3492.00
+1993-06-14,3505.01,3538.22,3486.74,3514.69,210440000,3514.69
+1993-06-11,3491.72,3536.01,3479.27,3505.01,255200000,3505.01
+1993-06-10,3511.93,3538.22,3461.83,3491.72,231760000,3491.72
+1993-06-09,3510.54,3541.54,3490.89,3511.93,249030000,3511.93
+1993-06-08,3532.13,3543.48,3494.21,3510.54,238170000,3510.54
+1993-06-07,3545.14,3570.33,3510.82,3532.13,236930000,3532.13
+1993-06-04,3544.87,3563.13,3516.63,3545.14,226440000,3545.14
+1993-06-03,3553.45,3569.50,3516.08,3544.87,285770000,3544.87
+1993-06-02,3552.34,3576.14,3530.47,3553.45,287120000,3553.45
+1993-06-01,3527.43,3577.25,3518.02,3552.34,229690000,3552.34
+1993-05-28,3554.83,3563.41,3503.62,3527.43,207820000,3527.43
+1993-05-27,3540.16,3582.23,3523.28,3554.83,300810000,3554.83
+1993-05-26,3516.63,3558.98,3498.64,3540.16,274230000,3540.16
+1993-05-25,3507.78,3534.35,3486.46,3516.63,222090000,3516.63
+1993-05-24,3492.83,3526.60,3472.35,3507.78,197990000,3507.78
+1993-05-21,3523.28,3532.96,3468.47,3492.83,279120000,3492.83
+1993-05-20,3500.03,3539.88,3475.39,3523.28,289160000,3523.28
+1993-05-19,3444.39,3511.10,3405.09,3500.03,342420000,3500.03
+1993-05-18,3449.93,3468.47,3409.79,3444.39,264300000,3444.39
+1993-05-17,3443.01,3465.98,3421.42,3449.93,227580000,3449.93
+1993-05-14,3447.99,3472.62,3421.14,3443.01,252910000,3443.01
+1993-05-13,3482.31,3486.74,3428.89,3447.99,289860000,3447.99
+1993-05-12,3468.75,3501.69,3441.07,3482.31,255680000,3482.31
+1993-05-11,3443.28,3481.76,3421.42,3468.75,218480000,3468.75
+1993-05-10,3437.19,3485.36,3420.31,3443.28,235580000,3443.28
+1993-05-07,3441.90,3468.47,3413.67,3437.19,223570000,3437.19
+1993-05-06,3449.10,3475.67,3418.93,3441.90,255460000,3441.90
+1993-05-05,3446.19,3478.44,3420.86,3449.10,270960000,3449.10
+1993-05-04,3446.46,3477.26,3424.04,3446.19,268310000,3446.19
+1993-05-03,3427.55,3462.94,3402.42,3446.46,220860000,3446.46
+1993-04-30,3425.12,3466.18,3405.39,3427.55,247460000,3427.55
+1993-04-29,3413.50,3444.57,3377.57,3425.12,249760000,3425.12
+1993-04-28,3415.93,3445.65,3372.16,3413.50,267980000,3413.50
+1993-04-27,3398.37,3433.76,3364.06,3415.93,284140000,3415.93
+1993-04-26,3413.77,3442.14,3369.46,3398.37,281180000,3398.37
+1993-04-23,3429.17,3448.08,3385.67,3413.77,259810000,3413.77
+1993-04-22,3439.44,3488.33,3399.99,3429.17,310390000,3429.17
+1993-04-21,3443.49,3480.77,3401.34,3439.44,287300000,3439.44
+1993-04-20,3466.99,3486.71,3400.26,3443.49,317990000,3443.49
+1993-04-19,3478.61,3499.41,3436.73,3466.99,244710000,3466.99
+1993-04-16,3455.92,3498.60,3437.54,3478.61,305160000,3478.61
+1993-04-15,3455.64,3484.28,3419.17,3455.92,259500000,3455.92
+1993-04-14,3444.03,3482.93,3424.85,3455.64,257340000,3455.64
+1993-04-13,3428.09,3469.42,3408.37,3444.03,286690000,3444.03
+1993-04-12,3396.48,3452.67,3391.08,3428.09,259610000,3428.09
+1993-04-08,3397.02,3429.44,3357.58,3396.48,282470000,3396.48
+1993-04-07,3377.57,3417.55,3355.41,3397.02,296290000,3397.02
+1993-04-06,3379.19,3417.55,3339.75,3377.57,289640000,3377.57
+1993-04-05,3370.81,3411.61,3338.39,3379.19,238630000,3379.19
+1993-04-02,3439.44,3439.44,3344.88,3370.81,323330000,3370.81
+1993-04-01,3435.11,3466.45,3419.98,3439.44,231950000,3439.44
+1993-03-31,3457.27,3484.82,3424.85,3435.11,275710000,3435.11
+1993-03-30,3455.10,3481.58,3422.14,3457.27,233330000,3457.27
+1993-03-29,3439.98,3487.52,3431.87,3455.10,199890000,3455.10
+1993-03-26,3461.32,3484.28,3428.63,3439.98,219130000,3439.98
+1993-03-25,3445.38,3485.36,3429.44,3461.32,250040000,3461.32
+1993-03-24,3461.86,3489.14,3417.55,3445.38,271980000,3445.38
+1993-03-23,3463.48,3488.60,3438.08,3461.86,231900000,3461.86
+1993-03-22,3471.58,3483.20,3429.71,3463.48,231900000,3463.48
+1993-03-19,3465.64,3493.20,3446.46,3471.58,295510000,3471.58
+1993-03-18,3427.01,3486.17,3427.01,3465.64,240490000,3465.64
+1993-03-17,3442.95,3458.35,3408.91,3426.74,237850000,3426.74
+1993-03-16,3442.41,3466.72,3423.77,3442.95,217730000,3442.95
+1993-03-15,3427.82,3460.51,3412.96,3442.41,192690000,3442.41
+1993-03-12,3447.81,3447.81,3385.40,3427.82,244740000,3427.82
+1993-03-11,3478.34,3493.74,3437.27,3457.00,250720000,3457.00
+1993-03-10,3472.12,3497.25,3432.68,3478.34,255190000,3478.34
+1993-03-09,3469.42,3495.63,3443.76,3472.12,290120000,3472.12
+1993-03-08,3404.58,3476.99,3401.34,3469.42,274560000,3469.42
+1993-03-05,3398.91,3447.81,3373.25,3404.58,247130000,3404.58
+1993-03-04,3404.04,3423.77,3372.43,3398.91,230780000,3398.91
+1993-03-03,3400.53,3437.00,3368.92,3404.04,272290000,3404.04
+1993-03-02,3355.41,3406.21,3334.07,3400.53,269640000,3400.53
+1993-03-01,3370.81,3404.58,3336.23,3355.41,232090000,3355.41
+1993-02-26,3365.14,3396.21,3336.23,3370.81,234160000,3370.81
+1993-02-25,3356.50,3387.02,3326.78,3365.14,252790000,3365.14
+1993-02-24,3323.27,3371.89,3311.92,3356.50,298940000,3356.50
+1993-02-23,3342.99,3373.52,3296.79,3323.27,321050000,3323.27
+1993-02-22,3322.18,3367.30,3297.06,3342.99,311510000,3342.99
+1993-02-19,3302.19,3347.04,3270.04,3322.18,307960000,3322.18
+1993-02-18,3312.19,3362.98,3262.48,3302.19,309570000,3302.19
+1993-02-17,3309.49,3338.12,3273.56,3312.19,287240000,3312.19
+1993-02-16,3391.62,3391.62,3285.98,3309.49,325350000,3309.49
+1993-02-12,3422.69,3436.19,3378.11,3392.43,215750000,3392.43
+1993-02-11,3412.42,3455.64,3395.94,3422.69,252780000,3422.69
+1993-02-10,3414.58,3438.08,3379.19,3412.42,248480000,3412.42
+1993-02-09,3437.54,3449.16,3394.86,3414.58,233670000,3414.58
+1993-02-08,3442.14,3472.94,3408.91,3437.54,240350000,3437.54
+1993-02-05,3416.74,3463.21,3391.62,3442.14,320960000,3442.14
+1993-02-04,3373.79,3441.33,3367.03,3416.74,346480000,3416.74
+1993-02-03,3328.67,3397.83,3322.73,3373.79,342530000,3373.79
+1993-02-02,3332.18,3355.68,3300.30,3328.67,269250000,3328.67
+1993-02-01,3310.03,3343.80,3300.30,3332.18,238260000,3332.18
+1993-01-29,3306.25,3331.10,3287.06,3310.03,247010000,3310.03
+1993-01-28,3291.39,3327.86,3270.58,3306.25,255550000,3306.25
+1993-01-27,3298.95,3318.67,3260.05,3291.39,276880000,3291.39
+1993-01-26,3292.20,3331.91,3272.47,3298.95,311450000,3298.95
+1993-01-25,3256.81,3324.89,3243.84,3292.20,288010000,3292.20
+1993-01-22,3253.02,3292.74,3225.74,3256.81,293250000,3256.81
+1993-01-21,3241.95,3269.77,3219.25,3253.02,257350000,3253.02
+1993-01-20,3255.99,3278.96,3231.41,3241.95,267740000,3241.95
+1993-01-19,3274.91,3299.49,3239.52,3255.99,283110000,3255.99
+1993-01-18,3271.12,3296.52,3244.65,3274.91,195980000,3274.91
+1993-01-15,3267.88,3300.03,3238.70,3271.12,306140000,3271.12
+1993-01-14,3263.56,3297.06,3230.87,3267.88,280020000,3267.88
+1993-01-13,3264.64,3283.01,3225.47,3263.56,245020000,3263.56
+1993-01-12,3262.75,3287.06,3229.79,3264.64,239250000,3264.64
+1993-01-11,3251.67,3284.09,3228.98,3262.75,217150000,3262.75
+1993-01-08,3268.96,3280.31,3221.68,3251.67,262620000,3251.67
+1993-01-07,3305.16,3333.51,3250.30,3268.96,303140000,3268.96
+1993-01-06,3307.87,3330.29,3276.53,3305.16,282850000,3305.16
+1993-01-05,3309.22,3338.12,3279.23,3307.87,240550000,3307.87
+1993-01-04,3301.11,3335.69,3282.74,3309.22,199680000,3309.22
+1992-12-31,3321.10,3340.29,3294.36,3301.11,165910000,3301.11
+1992-12-30,3310.84,3340.54,3298.93,3321.10,183870000,3321.10
+1992-12-29,3333.26,3364.87,3295.71,3310.84,213660000,3310.84
+1992-12-28,3326.24,3352.17,3297.33,3333.26,143800000,3333.26
+1992-12-24,3313.54,3339.48,3303.27,3326.24,95240000,3326.24
+1992-12-23,3321.10,3350.55,3293.01,3313.54,227980000,3313.54
+1992-12-22,3312.46,3347.04,3286.52,3321.10,249670000,3321.10
+1992-12-21,3313.27,3335.15,3280.85,3312.46,224680000,3312.46
+1992-12-18,3269.23,3325.97,3261.94,3313.27,371080000,3313.27
+1992-12-17,3255.18,3289.22,3229.79,3269.23,248590000,3269.23
+1992-12-16,3284.36,3303.00,3238.70,3255.18,241910000,3255.18
+1992-12-15,3292.20,3313.27,3260.32,3284.36,225880000,3284.36
+1992-12-14,3304.08,3324.89,3279.50,3292.20,183510000,3292.20
+1992-12-11,3312.19,3324.89,3280.85,3304.08,164450000,3304.08
+1992-12-10,3323.81,3335.69,3285.17,3312.19,240570000,3312.19
+1992-12-09,3322.18,3345.42,3295.98,3323.81,229980000,3323.81
+1992-12-08,3307.33,3331.64,3288.41,3322.18,234300000,3322.18
+1992-12-07,3288.68,3320.56,3274.37,3307.33,217700000,3307.33
+1992-12-04,3276.53,3312.46,3261.40,3288.68,227410000,3288.68
+1992-12-03,3286.25,3302.73,3252.48,3276.53,238200000,3276.53
+1992-12-02,3294.36,3310.84,3265.18,3286.25,241860000,3286.25
+1992-12-01,3305.16,3321.64,3268.15,3294.36,259020000,3294.36
+1992-11-30,3282.20,3326.51,3270.31,3305.16,230190000,3305.16
+1992-11-27,3266.26,3304.62,3259.24,3282.20,106010000,3282.20
+1992-11-25,3248.70,3285.71,3243.57,3266.26,206700000,3266.26
+1992-11-24,3223.04,3277.88,3209.26,3248.70,241520000,3248.70
+1992-11-23,3227.36,3251.13,3196.83,3223.04,190490000,3223.04
+1992-11-20,3209.53,3249.78,3197.64,3227.36,256340000,3227.36
+1992-11-19,3207.37,3231.14,3190.35,3209.53,218700000,3209.53
+1992-11-18,3193.32,3227.09,3176.84,3207.37,218660000,3207.37
+1992-11-17,3205.74,3223.31,3178.19,3193.32,185460000,3193.32
+1992-11-16,3233.03,3241.41,3191.16,3205.74,173500000,3205.74
+1992-11-13,3239.79,3252.48,3211.69,3233.03,192320000,3233.03
+1992-11-12,3240.33,3264.91,3214.39,3239.79,224580000,3239.79
+1992-11-11,3225.47,3258.70,3203.31,3240.33,240160000,3240.33
+1992-11-10,3240.87,3268.15,3212.50,3225.47,221990000,3225.47
+1992-11-09,3240.06,3268.69,3220.33,3240.87,197490000,3240.87
+1992-11-06,3243.84,3264.64,3216.82,3240.06,204870000,3240.06
+1992-11-05,3223.04,3259.78,3203.58,3243.84,219580000,3243.84
+1992-11-04,3252.48,3274.10,3211.15,3223.04,193980000,3223.04
+1992-11-03,3262.21,3285.44,3226.82,3252.48,209740000,3252.48
+1992-11-02,3226.28,3274.64,3211.42,3262.21,201620000,3262.21
+1992-10-30,3246.27,3260.59,3208.45,3226.28,196740000,3226.28
+1992-10-29,3251.40,3268.96,3224.39,3246.27,206300000,3246.27
+1992-10-28,3235.73,3262.48,3210.34,3251.40,203040000,3251.40
+1992-10-27,3244.11,3270.31,3210.88,3235.73,201650000,3235.73
+1992-10-26,3207.64,3256.00,3190.08,3244.11,187950000,3244.11
+1992-10-23,3200.88,3233.57,3175.76,3207.64,197400000,3207.64
+1992-10-22,3187.10,3221.14,3162.79,3200.88,216080000,3200.88
+1992-10-21,3186.02,3211.69,3163.33,3187.10,218990000,3187.10
+1992-10-20,3188.45,3223.31,3166.30,3186.02,258220000,3186.02
+1992-10-19,3174.41,3211.15,3154.14,3188.45,218670000,3188.45
+1992-10-16,3174.68,3203.85,3123.89,3174.41,234480000,3174.41
+1992-10-15,3195.48,3207.37,3147.66,3174.68,206990000,3174.68
+1992-10-14,3201.42,3225.74,3167.11,3195.48,175440000,3195.48
+1992-10-13,3174.41,3222.77,3159.28,3201.42,184120000,3201.42
+1992-10-12,3140.10,3186.29,3140.10,3174.41,126590000,3174.41
+1992-10-09,3176.03,3176.57,3120.37,3136.58,178910000,3136.58
+1992-10-08,3152.25,3195.48,3135.77,3176.03,203780000,3176.03
+1992-10-07,3178.19,3200.88,3136.85,3152.25,183100000,3152.25
+1992-10-06,3179.00,3205.20,3147.93,3178.19,196660000,3178.19
+1992-10-05,3197.10,3197.10,3087.41,3179.00,284380000,3179.00
+1992-10-02,3254.37,3259.51,3193.59,3200.61,187400000,3200.61
+1992-10-01,3271.66,3291.39,3237.35,3254.37,203670000,3254.37
+1992-09-30,3266.80,3291.66,3247.89,3271.66,184220000,3271.66
+1992-09-29,3276.26,3295.98,3247.08,3266.80,170350000,3266.80
+1992-09-28,3250.32,3283.01,3226.55,3276.26,157480000,3276.26
+1992-09-25,3287.87,3292.20,3226.82,3250.32,213650000,3250.32
+1992-09-24,3278.69,3310.84,3267.07,3287.87,187770000,3287.87
+1992-09-23,3280.85,3302.19,3252.48,3278.69,204350000,3278.69
+1992-09-22,3320.83,3327.05,3270.58,3280.85,186990000,3280.85
+1992-09-21,3327.05,3341.91,3295.71,3320.83,153900000,3320.83
+1992-09-18,3315.70,3340.56,3297.87,3327.05,236080000,3327.05
+1992-09-17,3319.21,3347.04,3292.20,3315.70,188270000,3315.70
+1992-09-16,3327.32,3353.52,3288.95,3319.21,229380000,3319.21
+1992-09-15,3372.98,3372.98,3317.86,3327.32,200220000,3327.32
+1992-09-14,3326.51,3391.35,3326.51,3376.22,250900000,3376.22
+1992-09-11,3305.16,3327.32,3285.44,3305.70,180640000,3305.70
+1992-09-10,3271.39,3318.94,3261.67,3305.16,221970000,3305.16
+1992-09-09,3260.59,3284.09,3244.92,3271.39,172890000,3271.39
+1992-09-08,3281.93,3292.20,3245.73,3260.59,160930000,3260.59
+1992-09-04,3292.20,3306.23,3265.16,3281.93,124340000,3281.93
+1992-09-03,3290.31,3325.95,3268.94,3292.20,212540000,3292.20
+1992-09-02,3266.26,3301.90,3249.76,3290.31,187010000,3290.31
+1992-09-01,3257.35,3279.21,3239.77,3266.26,172650000,3266.26
+1992-08-31,3267.61,3287.04,3244.90,3257.35,160230000,3257.35
+1992-08-28,3254.64,3280.56,3237.88,3267.61,152230000,3267.61
+1992-08-27,3246.81,3285.69,3237.06,3254.64,178490000,3254.64
+1992-08-26,3232.22,3261.38,3217.07,3246.81,171840000,3246.81
+1992-08-25,3228.17,3253.00,3200.86,3232.22,201630000,3232.22
+1992-08-24,3254.09,3258.41,3207.08,3228.17,165130000,3228.17
+1992-08-21,3304.89,3330.27,3243.55,3254.09,202640000,3254.09
+1992-08-20,3307.06,3326.22,3285.69,3304.89,183390000,3304.89
+1992-08-19,3329.48,3347.56,3302.44,3307.06,186710000,3307.06
+1992-08-18,3324.89,3343.80,3309.22,3329.48,169880000,3329.48
+1992-08-17,3328.94,3350.28,3310.03,3324.89,152750000,3324.89
+1992-08-14,3313.27,3342.16,3300.82,3328.94,166180000,3328.94
+1992-08-13,3320.83,3347.29,3294.07,3313.27,185700000,3313.27
+1992-08-12,3331.10,3349.72,3304.88,3320.83,176440000,3320.83
+1992-08-11,3337.58,3356.48,3304.34,3331.10,173810000,3331.10
+1992-08-10,3332.18,3350.26,3305.14,3337.58,142440000,3337.58
+1992-08-07,3340.56,3378.38,3318.40,3332.18,188340000,3332.18
+1992-08-06,3365.14,3374.33,3327.05,3340.56,181390000,3340.56
+1992-08-05,3384.32,3391.35,3347.58,3365.14,172410000,3365.14
+1992-08-04,3395.40,3405.12,3367.03,3384.32,166740000,3384.32
+1992-08-03,3393.78,3413.23,3365.14,3395.40,164360000,3395.40
+1992-07-31,3391.89,3414.85,3371.89,3393.78,172920000,3393.78
+1992-07-30,3379.19,3409.16,3351.07,3391.89,193280000,3391.89
+1992-07-29,3345.13,3399.70,3345.13,3379.19,275760000,3379.19
+1992-07-28,3282.20,3345.67,3277.59,3334.07,217950000,3334.07
+1992-07-27,3285.71,3311.38,3265.99,3282.20,164680000,3282.20
+1992-07-24,3290.04,3305.68,3261.94,3285.71,163870000,3285.71
+1992-07-23,3277.61,3308.39,3255.43,3290.04,175460000,3290.04
+1992-07-22,3308.41,3310.28,3262.19,3277.61,190130000,3277.61
+1992-07-21,3303.00,3335.94,3292.45,3308.41,173800000,3308.41
+1992-07-20,3318.38,3318.38,3271.11,3303.00,165730000,3303.00
+1992-07-17,3359.74,3359.74,3308.14,3331.64,187520000,3331.64
+1992-07-16,3345.42,3375.66,3318.65,3361.63,206040000,3361.63
+1992-07-15,3358.39,3381.87,3319.73,3345.42,206550000,3345.42
+1992-07-14,3337.31,3371.88,3315.95,3358.39,195310000,3358.39
+1992-07-13,3330.56,3357.55,3315.41,3337.31,148820000,3337.31
+1992-07-10,3324.08,3355.93,3304.88,3330.56,164750000,3330.56
+1992-07-09,3293.28,3345.40,3292.45,3324.08,207970000,3324.08
+1992-07-08,3295.17,3322.98,3258.70,3293.28,200020000,3293.28
+1992-07-07,3339.21,3360.80,3285.69,3295.17,218740000,3295.17
+1992-07-06,3330.29,3367.57,3295.96,3339.21,186410000,3339.21
+1992-07-02,3354.10,3385.43,3303.30,3330.29,220130000,3330.29
+1992-07-01,3318.52,3366.43,3305.45,3354.10,214240000,3354.10
+1992-06-30,3319.86,3347.71,3295.01,3318.52,195520000,3318.52
+1992-06-29,3282.41,3330.32,3278.16,3319.86,176710000,3319.86
+1992-06-26,3284.01,3303.04,3254.89,3282.41,154430000,3282.41
+1992-06-25,3290.70,3319.62,3261.31,3284.01,182310000,3284.01
+1992-06-24,3285.62,3317.75,3262.11,3290.70,193850000,3290.70
+1992-06-23,3280.80,3312.13,3263.45,3285.62,189170000,3285.62
+1992-06-22,3285.35,3298.22,3242.32,3280.80,169340000,3280.80
+1992-06-19,3274.12,3313.20,3264.79,3285.35,233440000,3285.35
+1992-06-18,3287.76,3313.74,3245.53,3274.12,215080000,3274.12
+1992-06-17,3329.49,3347.98,3271.21,3287.76,227650000,3287.76
+1992-06-16,3354.90,3379.01,3321.76,3329.49,178850000,3329.49
+1992-06-15,3354.36,3371.79,3327.11,3354.90,159100000,3354.90
+1992-06-12,3351.51,3397.68,3339.62,3354.36,181830000,3354.36
+1992-06-11,3343.22,3374.61,3301.51,3351.51,192940000,3351.51
+1992-06-10,3369.92,3385.76,3328.99,3343.22,206380000,3343.22
+1992-06-09,3404.14,3412.98,3350.25,3369.92,190780000,3369.92
+1992-06-08,3398.69,3422.83,3370.21,3404.14,161130000,3404.14
+1992-06-05,3399.73,3424.64,3356.98,3398.69,199050000,3398.69
+1992-06-04,3406.99,3428.02,3376.43,3399.73,204360000,3399.73
+1992-06-03,3396.10,3431.13,3378.76,3406.99,215730000,3406.99
+1992-06-02,3413.21,3435.27,3380.84,3396.10,200660000,3396.10
+1992-06-01,3396.88,3424.39,3365.02,3413.21,180780000,3413.21
+1992-05-29,3398.43,3433.98,3384.20,3396.88,202730000,3396.88
+1992-05-28,3370.44,3408.31,3354.91,3398.43,195230000,3398.43
+1992-05-27,3364.21,3396.65,3337.29,3370.44,179980000,3370.44
+1992-05-26,3386.77,3410.91,3338.84,3364.21,196950000,3364.21
+1992-05-22,3378.71,3408.49,3364.08,3386.77,146640000,3386.77
+1992-05-21,3393.84,3402.88,3354.80,3378.71,182190000,3378.71
+1992-05-20,3397.99,3421.42,3376.04,3393.84,198170000,3393.84
+1992-05-19,3376.03,3413.37,3350.41,3397.99,187030000,3397.99
+1992-05-18,3353.09,3398.24,3349.93,3376.03,149830000,3376.03
+1992-05-15,3368.88,3380.30,3330.43,3353.09,192040000,3353.09
+1992-05-14,3391.98,3397.46,3347.59,3368.88,187700000,3368.88
+1992-05-13,3385.12,3414.17,3362.93,3391.98,171610000,3391.98
+1992-05-12,3397.58,3414.81,3361.51,3385.12,192810000,3385.12
+1992-05-11,3369.41,3410.11,3363.82,3397.58,155730000,3397.58
+1992-05-08,3363.37,3388.41,3344.59,3369.41,168670000,3369.41
+1992-05-07,3369.41,3390.65,3343.25,3363.37,168910000,3363.37
+1992-05-06,3359.35,3398.70,3346.60,3369.41,199070000,3369.41
+1992-05-05,3378.13,3393.78,3346.15,3359.35,198860000,3359.35
+1992-05-04,3340.79,3394.68,3340.79,3378.13,174520000,3378.13
+1992-05-01,3359.12,3375.67,3316.64,3336.09,177360000,3336.09
+1992-04-30,3333.18,3377.01,3314.40,3359.12,223160000,3359.12
+1992-04-29,3307.92,3353.75,3295.39,3333.18,199740000,3333.18
+1992-04-28,3304.56,3329.83,3273.03,3307.92,186740000,3307.92
+1992-04-27,3324.46,3340.79,3284.66,3304.56,172820000,3304.56
+1992-04-24,3348.61,3381.48,3305.23,3324.46,198740000,3324.46
+1992-04-23,3338.77,3376.34,3298.52,3348.61,235740000,3348.61
+1992-04-22,3343.25,3366.72,3309.48,3338.77,218790000,3338.77
+1992-04-21,3336.31,3366.50,3305.68,3343.25,214400000,3343.25
+1992-04-20,3366.50,3375.67,3300.98,3336.31,191910000,3336.31
+1992-04-16,3353.76,3387.97,3321.33,3366.50,232480000,3366.50
+1992-04-15,3306.13,3370.08,3296.51,3353.76,228400000,3353.76
+1992-04-14,3269.90,3336.54,3259.39,3306.13,232040000,3306.13
+1992-04-13,3255.37,3293.60,3230.77,3269.90,143100000,3269.90
+1992-04-10,3227.64,3280.86,3227.64,3255.37,199450000,3255.37
+1992-04-09,3181.35,3245.08,3171.06,3224.96,231330000,3224.96
+1992-04-08,3213.55,3221.38,3141.77,3181.35,249210000,3181.35
+1992-04-07,3275.49,3291.81,3207.51,3213.55,205110000,3213.55
+1992-04-06,3249.11,3295.84,3238.37,3275.49,179330000,3275.49
+1992-04-03,3234.12,3271.91,3201.92,3249.11,188530000,3249.11
+1992-04-02,3249.33,3277.06,3209.08,3234.12,185110000,3234.12
+1992-04-01,3235.47,3262.52,3202.37,3249.33,186260000,3249.33
+1992-03-31,3235.24,3272.81,3216.46,3235.47,182200000,3235.47
+1992-03-30,3231.44,3260.06,3215.79,3235.24,133980000,3235.24
+1992-03-27,3267.67,3272.58,3218.92,3231.44,166140000,3231.44
+1992-03-26,3259.39,3288.91,3245.08,3267.67,176690000,3267.67
+1992-03-25,3260.96,3290.47,3238.15,3259.39,192080000,3259.39
+1992-03-24,3272.14,3296.96,3242.84,3260.96,191580000,3260.96
+1992-03-23,3276.39,3288.68,3249.33,3272.14,156620000,3272.14
+1992-03-20,3261.40,3292.48,3240.83,3276.39,246170000,3276.39
+1992-03-19,3254.25,3286.22,3240.38,3261.40,197240000,3261.40
+1992-03-18,3256.04,3281.98,3230.10,3254.25,190800000,3254.25
+1992-03-17,3236.36,3272.58,3222.27,3256.04,187240000,3256.04
+1992-03-16,3235.91,3249.11,3201.25,3236.36,151280000,3236.36
+1992-03-13,3208.63,3252.23,3203.71,3235.91,176000000,3235.91
+1992-03-12,3208.63,3232.33,3176.21,3208.63,180240000,3208.63
+1992-03-11,3230.99,3242.17,3189.85,3208.63,185320000,3208.63
+1992-03-10,3215.12,3259.17,3207.29,3230.99,194530000,3230.99
+1992-03-09,3221.60,3242.62,3188.95,3215.12,160620000,3215.12
+1992-03-06,3241.50,3262.97,3204.61,3221.60,185040000,3221.60
+1992-03-05,3268.56,3283.54,3226.74,3241.50,205730000,3241.50
+1992-03-04,3290.25,3318.42,3256.04,3268.56,206770000,3268.56
+1992-03-03,3275.27,3313.28,3258.50,3290.25,200860000,3290.25
+1992-03-02,3267.67,3298.97,3242.39,3275.27,180380000,3275.27
+1992-02-28,3269.45,3304.11,3247.09,3267.67,202130000,3267.67
+1992-02-27,3283.32,3300.54,3251.79,3269.45,215050000,3269.45
+1992-02-26,3257.83,3305.01,3246.20,3283.32,240690000,3283.32
+1992-02-25,3282.42,3293.60,3226.74,3257.83,208400000,3257.83
+1992-02-24,3280.19,3305.01,3253.58,3282.42,177470000,3282.42
+1992-02-21,3280.64,3307.47,3242.17,3280.19,258700000,3280.19
+1992-02-20,3230.32,3304.34,3224.28,3280.64,270550000,3280.64
+1992-02-19,3224.73,3259.17,3199.02,3230.32,232900000,3230.32
+1992-02-18,3245.97,3280.19,3195.66,3224.73,234270000,3224.73
+1992-02-14,3246.65,3271.91,3208.63,3245.97,214840000,3245.97
+1992-02-13,3276.83,3296.73,3226.07,3246.65,229360000,3246.65
+1992-02-12,3251.57,3291.37,3233.68,3276.83,230230000,3276.83
+1992-02-11,3245.08,3277.28,3222.49,3251.57,200110000,3251.57
+1992-02-10,3225.40,3269.00,3208.85,3245.08,184390000,3245.08
+1992-02-07,3255.59,3283.09,3199.91,3225.40,230950000,3225.40
+1992-02-06,3257.60,3285.55,3224.95,3255.59,238210000,3255.59
+1992-02-05,3272.81,3299.87,3233.68,3257.60,261960000,3257.60
+1992-02-04,3234.12,3283.09,3208.63,3272.81,231530000,3272.81
+1992-02-03,3223.39,3261.40,3193.42,3234.12,182150000,3234.12
+1992-01-31,3244.86,3274.37,3207.96,3223.39,197060000,3223.39
+1992-01-30,3224.96,3269.68,3200.58,3244.86,194670000,3244.86
+1992-01-29,3272.14,3313.51,3204.16,3224.96,248900000,3224.96
+1992-01-28,3240.61,3298.30,3230.99,3272.14,217070000,3272.14
+1992-01-27,3232.78,3267.44,3216.23,3240.61,190430000,3240.61
+1992-01-24,3226.74,3264.31,3203.71,3232.78,213600000,3232.78
+1992-01-23,3255.81,3279.52,3205.95,3226.74,229680000,3226.74
+1992-01-22,3223.39,3272.80,3190.96,3255.81,225030000,3255.81
+1992-01-21,3254.03,3275.49,3194.09,3223.39,218650000,3223.39
+1992-01-20,3264.98,3283.32,3230.99,3254.03,180870000,3254.03
+1992-01-17,3249.55,3297.63,3224.28,3264.98,284560000,3264.98
+1992-01-16,3258.50,3289.13,3200.80,3249.55,333750000,3249.55
+1992-01-15,3246.20,3299.19,3207.73,3258.50,312400000,3258.50
+1992-01-14,3185.60,3255.81,3167.93,3246.20,264540000,3246.20
+1992-01-13,3199.46,3215.56,3161.67,3185.60,200270000,3185.60
+1992-01-10,3209.53,3235.91,3165.92,3199.46,236060000,3199.46
+1992-01-09,3203.94,3246.64,3173.75,3209.53,291780000,3209.53
+1992-01-08,3204.83,3245.53,3164.58,3203.94,289690000,3203.94
+1992-01-07,3200.13,3224.73,3165.25,3204.83,251280000,3204.83
+1992-01-06,3201.48,3230.32,3166.37,3200.13,241980000,3200.13
+1992-01-03,3172.41,3221.38,3156.30,3201.48,219170000,3201.48
+1992-01-02,3168.83,3184.70,3119.86,3172.41,203610000,3172.41
+1991-12-31,3163.91,3204.61,3121.20,3168.83,247670000,3168.83
+1991-12-30,3101.52,3174.64,3090.79,3163.91,245450000,3163.91
+1991-12-27,3082.96,3121.65,3063.73,3101.52,157940000,3101.52
+1991-12-26,3050.98,3101.97,3036.23,3082.96,149200000,3082.96
+1991-12-24,3022.58,3087.88,3015.65,3050.98,162300000,3050.98
+1991-12-23,2934.48,3037.57,2919.05,3022.58,228730000,3022.58
+1991-12-20,2914.36,2965.79,2907.65,2934.48,313810000,2934.48
+1991-12-19,2908.09,2927.10,2881.48,2914.36,199830000,2914.36
+1991-12-18,2902.28,2921.29,2870.30,2908.09,192350000,2908.09
+1991-12-17,2919.05,2936.27,2886.40,2902.28,191280000,2902.28
+1991-12-16,2914.36,2946.33,2900.49,2919.05,173010000,2919.05
+1991-12-13,2895.13,2936.72,2893.34,2914.36,195790000,2914.36
+1991-12-12,2865.38,2911.67,2861.14,2895.13,192930000,2895.13
+1991-12-11,2863.82,2889.53,2832.29,2865.38,207410000,2865.38
+1991-12-10,2871.65,2891.10,2841.23,2863.82,191800000,2863.82
+1991-12-09,2886.40,2913.46,2856.22,2871.65,174700000,2871.65
+1991-12-06,2889.09,2924.87,2854.65,2886.40,198170000,2886.40
+1991-12-05,2911.67,2923.75,2874.77,2889.09,165660000,2889.09
+1991-12-04,2929.56,2945.66,2892.22,2911.67,186380000,2911.67
+1991-12-03,2935.38,2958.18,2904.74,2929.56,187160000,2929.56
+1991-12-02,2894.68,2941.64,2855.32,2935.38,188050000,2935.38
+1991-11-29,2900.04,2913.46,2877.46,2894.68,77420000,2894.68
+1991-11-27,2916.14,2929.11,2883.72,2900.04,159790000,2900.04
+1991-11-26,2902.06,2942.31,2861.14,2916.14,213650000,2916.14
+1991-11-25,2902.73,2921.96,2870.30,2902.06,173520000,2902.06
+1991-11-22,2932.69,2940.30,2880.81,2902.73,188110000,2902.73
+1991-11-21,2930.01,2953.94,2902.28,2932.69,195060000,2932.69
+1991-11-20,2931.57,2973.61,2912.12,2930.01,192670000,2930.01
+1991-11-19,2960.20,2960.20,2883.72,2931.57,243880000,2931.57
+1991-11-18,2943.20,2990.61,2923.30,2972.72,238170000,2972.72
+1991-11-15,3063.51,3069.54,2936.05,2943.20,236000000,2943.20
+1991-11-14,3065.30,3084.97,3037.34,3063.51,200030000,3063.51
+1991-11-13,3054.11,3075.58,3023.70,3065.30,184080000,3065.30
+1991-11-12,3042.26,3078.71,3028.62,3054.11,198600000,3054.11
+1991-11-11,3045.62,3057.69,3025.27,3042.26,128910000,3042.26
+1991-11-08,3054.11,3080.95,3034.66,3045.62,183260000,3045.62
+1991-11-07,3038.46,3066.19,3020.35,3054.11,205440000,3054.11
+1991-11-06,3031.31,3056.57,3010.51,3038.46,167370000,3038.46
+1991-11-05,3045.62,3062.84,3015.88,3031.31,171950000,3031.31
+1991-11-04,3056.35,3061.27,3019.01,3045.62,155530000,3045.62
+1991-11-01,3069.10,3091.91,3031.75,3056.35,205750000,3056.35
+1991-10-31,3071.78,3091.01,3045.62,3069.10,179490000,3069.10
+1991-10-30,3061.94,3090.12,3038.24,3071.78,195340000,3071.78
+1991-10-29,3045.62,3077.82,3020.13,3061.94,192700000,3061.94
+1991-10-28,3004.92,3055.23,3001.57,3045.62,160220000,3045.62
+1991-10-25,3016.32,3034.44,2983.01,3004.92,167260000,3004.92
+1991-10-24,3040.92,3047.63,2991.73,3016.32,178990000,3016.32
+1991-10-23,3039.80,3065.52,3015.21,3040.92,185340000,3040.92
+1991-10-22,3060.38,3084.53,3020.57,3039.80,194120000,3039.80
+1991-10-21,3077.15,3085.20,3042.49,3060.38,153770000,3060.38
+1991-10-18,3053.00,3089.45,3045.62,3077.15,204030000,3077.15
+1991-10-17,3061.72,3077.15,3027.06,3053.00,202780000,3053.00
+1991-10-16,3041.37,3082.29,3016.10,3061.72,225290000,3061.72
+1991-10-15,3019.45,3057.69,3000.22,3041.37,213440000,3041.37
+1991-10-14,2983.68,3026.39,2975.85,3019.45,130110000,3019.45
+1991-10-11,2976.52,3000.89,2957.51,2983.68,146560000,2983.68
+1991-10-10,2946.33,2985.47,2930.23,2976.52,164120000,2976.52
+1991-10-09,2963.77,2984.79,2925.54,2946.33,186590000,2946.33
+1991-10-08,2942.75,2983.68,2927.77,2963.77,170000000,2963.77
+1991-10-07,2961.76,2973.17,2926.21,2942.75,148430000,2942.75
+1991-10-04,2984.79,3007.16,2956.17,2961.76,163930000,2961.76
+1991-10-03,3012.52,3021.24,2972.50,2984.79,174230000,2984.79
+1991-10-02,3018.34,3040.25,2992.40,3012.52,166290000,3012.52
+1991-10-01,3016.77,3043.60,3002.46,3018.34,163520000,3018.34
+1991-09-30,3006.04,3032.87,2982.78,3016.77,146740000,3016.77
+1991-09-27,3017.22,3040.70,2989.49,3006.04,160430000,3006.04
+1991-09-26,3021.02,3040.70,2996.87,3017.22,160190000,3017.22
+1991-09-25,3029.07,3048.52,3004.92,3021.02,153800000,3021.02
+1991-09-24,3010.51,3043.38,2995.97,3029.07,170300000,3029.07
+1991-09-23,3019.23,3037.79,2997.76,3010.51,145530000,3010.51
+1991-09-20,3024.37,3045.39,3002.46,3019.23,241340000,3019.23
+1991-09-19,3017.89,3050.76,3002.91,3024.37,210770000,3024.37
+1991-09-18,3013.19,3025.49,2993.52,3017.89,141280000,3017.89
+1991-09-17,3015.21,3036.00,2992.62,3013.19,168310000,3013.19
+1991-09-16,2985.69,3023.03,2973.61,3015.21,171960000,3015.21
+1991-09-13,3007.83,3021.47,2963.10,2985.69,167800000,2985.69
+1991-09-12,2987.03,3023.26,2977.64,3007.83,160310000,3007.83
+1991-09-11,2982.56,3004.70,2964.67,2987.03,147910000,2987.03
+1991-09-10,3007.16,3012.97,2967.80,2982.56,146730000,2982.56
+1991-09-09,3011.63,3025.49,2987.70,3007.16,109250000,3007.16
+1991-09-06,3008.50,3033.32,2987.48,3011.63,166410000,3011.63
+1991-09-05,3008.50,3031.98,2989.71,3008.50,162250000,3008.50
+1991-09-04,3017.67,3034.66,2990.83,3008.50,156770000,3008.50
+1991-09-03,3043.60,3066.64,3013.64,3017.67,153550000,3017.67
+1991-08-30,3049.64,3059.26,3024.82,3043.60,125830000,3043.60
+1991-08-29,3055.23,3068.65,3030.86,3049.64,150180000,3049.64
+1991-08-28,3026.16,3064.85,3018.11,3055.23,169590000,3055.23
+1991-08-27,3039.36,3047.41,3007.83,3026.16,143920000,3026.16
+1991-08-26,3040.25,3057.02,3020.80,3039.36,128400000,3039.36
+1991-08-23,3007.38,3065.97,2999.11,3040.25,187010000,3040.25
+1991-08-22,3001.79,3029.96,2989.94,3007.38,172900000,3007.38
+1991-08-21,2941.64,3009.17,2941.64,3001.79,231720000,3001.79
+1991-08-20,2898.03,2937.39,2886.85,2913.69,184090000,2913.69
+1991-08-19,2924.42,2924.42,2836.31,2898.03,229590000,2898.03
+1991-08-16,2998.43,3013.64,2945.89,2968.02,188360000,2968.02
+1991-08-15,3005.37,3029.96,2985.24,2998.43,174310000,2998.43
+1991-08-14,3008.72,3036.67,2988.60,3005.37,195890000,3005.37
+1991-08-13,3001.34,3041.14,2989.27,3008.72,211890000,3008.72
+1991-08-12,2996.20,3013.42,2974.06,3001.34,145280000,3001.34
+1991-08-09,3013.86,3036.45,2986.81,2996.20,143610000,2996.20
+1991-08-08,3026.61,3045.17,2995.30,3013.86,163620000,3013.86
+1991-08-07,3027.28,3050.54,3008.50,3026.61,170820000,3026.61
+1991-08-06,2989.04,3034.88,2970.48,3027.28,174340000,3027.28
+1991-08-05,3006.26,3019.68,2978.76,2989.04,125790000,2989.04
+1991-08-02,3017.67,3042.26,2994.41,3006.26,162050000,3006.26
+1991-08-01,3024.82,3037.12,2997.76,3017.67,169920000,3017.67
+1991-07-31,3016.32,3039.58,2999.11,3024.82,166650000,3024.82
+1991-07-30,2985.24,3029.07,2983.68,3016.32,168950000,3016.32
+1991-07-29,2972.50,2996.20,2957.07,2985.24,135240000,2985.24
+1991-07-26,2980.10,2994.86,2953.26,2972.50,127690000,2972.50
+1991-07-25,2966.23,2999.11,2947.23,2980.10,145510000,2980.10
+1991-07-24,2983.23,3003.13,2950.80,2966.23,158530000,2966.23
+1991-07-23,3012.97,3038.24,2972.94,2983.23,160010000,2983.23
+1991-07-22,3016.32,3034.44,2990.83,3012.97,148880000,3012.97
+1991-07-19,3016.32,3036.23,2989.49,3016.32,187290000,3016.32
+1991-07-18,2978.76,3026.61,2970.93,3016.32,199470000,3016.32
+1991-07-17,2983.90,3011.18,2961.54,2978.76,194150000,2978.76
+1991-07-16,2990.61,3012.52,2962.88,2983.90,182740000,2983.90
+1991-07-15,2980.77,3007.38,2965.79,2990.61,159340000,2990.61
+1991-07-12,2959.75,3003.35,2942.98,2980.77,173060000,2980.77
+1991-07-11,2944.77,2975.63,2933.36,2959.75,157680000,2959.75
+1991-07-10,2947.23,2990.83,2927.77,2944.77,178170000,2944.77
+1991-07-09,2961.99,2980.10,2934.03,2947.23,151430000,2947.23
+1991-07-08,2932.47,2966.23,2897.36,2961.99,138210000,2961.99
+1991-07-05,2934.70,2953.26,2917.71,2932.47,69790000,2932.47
+1991-07-03,2957.07,2957.07,2915.03,2934.70,139290000,2934.70
+1991-07-02,2958.41,2987.03,2939.62,2972.72,157140000,2972.72
+1991-07-01,2911.67,2971.15,2911.67,2958.41,166880000,2958.41
+1991-06-28,2934.03,2934.03,2879.25,2906.75,162670000,2906.75
+1991-06-27,2913.01,2946.56,2909.21,2934.93,155820000,2934.93
+1991-06-26,2910.11,2934.03,2879.25,2913.01,186830000,2913.01
+1991-06-25,2913.01,2938.51,2887.97,2910.11,155450000,2910.11
+1991-06-24,2957.29,2957.29,2904.29,2913.01,137700000,2913.01
+1991-06-21,2953.94,2977.64,2937.84,2965.56,193110000,2965.56
+1991-06-20,2955.50,2969.81,2927.33,2953.94,163780000,2953.94
+1991-06-19,2978.31,2978.31,2933.59,2955.50,156070000,2955.50
+1991-06-18,2993.96,3022.14,2970.48,2986.81,154900000,2986.81
+1991-06-17,3000.45,3021.69,2977.86,2993.96,133910000,2993.96
+1991-06-14,2967.58,3014.98,2967.58,3000.45,167530000,3000.45
+1991-06-13,2961.99,2982.11,2942.53,2965.12,144870000,2965.12
+1991-06-12,2985.91,2987.25,2928.89,2961.99,165720000,2961.99
+1991-06-11,2975.40,3012.08,2963.10,2985.91,161240000,2985.91
+1991-06-10,2976.74,2992.84,2958.41,2975.40,127420000,2975.40
+1991-06-07,2994.86,3005.14,2954.61,2976.74,167830000,2976.74
+1991-06-06,3005.37,3027.06,2975.63,2994.86,168050000,2994.86
+1991-06-05,3027.95,3042.93,2989.49,3005.37,186300000,3005.37
+1991-06-04,3035.33,3042.04,2992.62,3027.95,180170000,3027.95
+1991-06-03,3027.50,3057.47,3000.67,3035.33,173710000,3035.33
+1991-05-31,3000.45,3044.50,2972.94,3027.50,231680000,3027.50
+1991-05-30,2969.59,3022.81,2950.58,3000.45,234090000,3000.45
+1991-05-29,2958.86,2987.92,2940.74,2969.59,188150000,2969.59
+1991-05-28,2913.91,2965.12,2903.85,2958.86,161950000,2958.86
+1991-05-24,2900.04,2931.13,2893.78,2913.91,124500000,2913.91
+1991-05-23,2910.33,2935.38,2881.04,2900.04,173080000,2900.04
+1991-05-22,2906.08,2930.01,2881.93,2910.33,159310000,2910.33
+1991-05-21,2892.22,2931.80,2875.00,2906.08,186860000,2906.08
+1991-05-20,2886.63,2910.78,2872.76,2892.22,109510000,2892.22
+1991-05-17,2894.01,2908.54,2860.02,2886.63,174210000,2886.63
+1991-05-16,2865.38,2905.64,2863.82,2894.01,154460000,2894.01
+1991-05-15,2886.85,2901.83,2834.53,2865.38,193110000,2865.38
+1991-05-14,2922.85,2922.85,2870.08,2886.85,207910000,2886.85
+1991-05-13,2920.17,2945.44,2896.24,2924.42,129620000,2924.42
+1991-05-10,2971.15,2986.14,2906.08,2920.17,172730000,2920.17
+1991-05-09,2930.90,2983.68,2926.88,2971.15,180210000,2971.15
+1991-05-08,2917.49,2945.21,2898.70,2930.90,157240000,2930.90
+1991-05-07,2941.64,2962.66,2906.53,2917.49,153290000,2917.49
+1991-05-06,2938.86,2956.84,2911.45,2941.64,128360000,2941.64
+1991-05-03,2938.61,2959.90,2906.93,2938.86,158160000,2938.86
+1991-05-02,2930.20,2966.34,2917.33,2938.61,187090000,2938.61
+1991-05-01,2887.87,2945.30,2882.43,2930.20,181900000,2930.20
+1991-04-30,2876.98,2929.21,2859.41,2887.87,204930000,2887.87
+1991-04-29,2912.38,2941.09,2869.55,2876.98,149860000,2876.98
+1991-04-26,2921.04,2934.90,2888.61,2912.38,154550000,2912.38
+1991-04-25,2949.51,2958.42,2905.20,2921.04,166940000,2921.04
+1991-04-24,2930.45,2965.10,2913.37,2949.51,166800000,2949.51
+1991-04-23,2927.72,2957.92,2905.94,2930.45,167840000,2930.45
+1991-04-22,2962.13,2962.13,2911.63,2927.72,164410000,2927.72
+1991-04-19,2999.26,3000.25,2943.56,2965.59,195510000,2965.59
+1991-04-18,3004.46,3027.72,2976.24,2999.26,217410000,2999.26
+1991-04-17,2986.88,3030.45,2963.12,3004.46,246930000,3004.46
+1991-04-16,2933.17,2995.79,2912.13,2986.88,214480000,2986.88
+1991-04-15,2920.79,2957.18,2896.29,2933.17,161800000,2933.17
+1991-04-12,2905.45,2946.53,2884.16,2920.79,198610000,2920.79
+1991-04-11,2877.72,2937.62,2877.72,2905.45,196570000,2905.45
+1991-04-10,2873.02,2902.48,2848.51,2874.50,167940000,2874.50
+1991-04-09,2918.56,2932.42,2863.36,2873.02,169940000,2873.02
+1991-04-08,2896.78,2929.21,2877.72,2918.56,138580000,2918.56
+1991-04-05,2924.50,2949.26,2876.98,2896.78,187410000,2896.78
+1991-04-04,2926.73,2959.41,2899.75,2924.50,198120000,2924.50
+1991-04-03,2945.05,2970.54,2915.84,2926.73,213720000,2926.73
+1991-04-02,2881.19,2951.98,2878.22,2945.05,189530000,2945.05
+1991-04-01,2913.86,2919.31,2868.32,2881.19,144010000,2881.19
+1991-03-28,2917.57,2942.08,2893.32,2913.86,150750000,2913.86
+1991-03-27,2914.85,2956.93,2886.14,2917.57,201830000,2917.57
+1991-03-26,2865.84,2924.01,2848.02,2914.85,198720000,2914.85
+1991-03-25,2858.91,2897.52,2837.87,2865.84,153920000,2865.84
+1991-03-22,2855.45,2879.95,2829.21,2858.91,160890000,2858.91
+1991-03-21,2872.03,2907.92,2841.58,2855.45,199830000,2855.45
+1991-03-20,2867.82,2897.03,2840.84,2872.03,196810000,2872.03
+1991-03-19,2908.17,2908.17,2840.84,2867.82,177070000,2867.82
+1991-03-18,2948.27,2960.64,2899.75,2929.95,163100000,2929.95
+1991-03-15,2952.23,2966.58,2918.81,2948.27,237660000,2948.27
+1991-03-14,2955.20,3000.00,2925.74,2952.23,231000000,2952.23
+1991-03-13,2922.52,2967.82,2910.89,2955.20,176000000,2955.20
+1991-03-12,2939.36,2962.13,2906.68,2922.52,176440000,2922.52
+1991-03-11,2955.20,2975.50,2923.27,2939.36,161600000,2939.36
+1991-03-08,2963.37,3003.47,2934.90,2955.20,206850000,2955.20
+1991-03-07,2973.27,2998.51,2948.51,2963.37,197060000,2963.37
+1991-03-06,2972.52,3017.82,2957.67,2973.27,262290000,2973.27
+1991-03-05,2914.11,2995.54,2913.86,2972.52,253700000,2972.52
+1991-03-04,2909.90,2950.74,2897.03,2914.11,199830000,2914.11
+1991-03-01,2882.18,2923.51,2846.78,2909.90,221510000,2909.90
+1991-02-28,2889.11,2923.51,2858.42,2882.18,223010000,2882.18
+1991-02-27,2864.60,2915.35,2839.85,2889.11,211410000,2889.11
+1991-02-26,2887.87,2895.30,2840.10,2864.60,164170000,2864.60
+1991-02-25,2889.36,2935.89,2865.35,2887.87,193820000,2887.87
+1991-02-22,2891.83,2945.79,2860.40,2889.36,218760000,2889.36
+1991-02-21,2899.01,2927.72,2871.29,2891.83,180770000,2891.83
+1991-02-20,2923.76,2923.76,2879.46,2899.01,185680000,2899.01
+1991-02-19,2934.65,2955.20,2895.30,2932.18,189900000,2932.18
+1991-02-15,2877.23,2947.28,2868.07,2934.65,222370000,2934.65
+1991-02-14,2909.16,2942.08,2852.48,2877.23,230750000,2877.23
+1991-02-13,2874.75,2918.32,2848.51,2909.16,209960000,2909.16
+1991-02-12,2902.23,2923.02,2848.27,2874.75,256160000,2874.75
+1991-02-11,2830.69,2910.64,2822.52,2902.23,265930000,2902.23
+1991-02-08,2810.64,2847.28,2787.13,2830.69,187830000,2830.69
+1991-02-07,2830.94,2875.50,2790.59,2810.64,292190000,2810.64
+1991-02-06,2788.37,2844.80,2760.15,2830.94,276940000,2830.94
+1991-02-05,2772.28,2805.20,2742.82,2788.37,290570000,2788.37
+1991-02-04,2730.69,2791.83,2714.85,2772.28,250750000,2772.28
+1991-02-01,2736.39,2764.60,2694.31,2730.69,246670000,2730.69
+1991-01-31,2713.12,2747.28,2691.58,2736.39,204240000,2736.39
+1991-01-30,2662.62,2725.99,2654.70,2713.12,226790000,2713.12
+1991-01-29,2654.46,2677.23,2627.23,2662.62,155740000,2662.62
+1991-01-28,2659.41,2688.61,2635.15,2654.46,141270000,2654.46
+1991-01-25,2643.07,2679.46,2623.27,2659.41,194350000,2659.41
+1991-01-24,2619.06,2667.33,2615.10,2643.07,223150000,2643.07
+1991-01-23,2603.22,2645.54,2584.65,2619.06,169440000,2619.06
+1991-01-22,2629.21,2645.05,2586.39,2603.22,175590000,2603.22
+1991-01-21,2646.29,2646.29,2602.97,2629.21,136290000,2629.21
+1991-01-18,2623.51,2663.37,2600.25,2646.78,226770000,2646.78
+1991-01-17,2571.78,2635.40,2571.78,2623.51,318890000,2623.51
+1991-01-16,2490.59,2525.25,2475.99,2508.91,134560000,2508.91
+1991-01-15,2483.91,2504.46,2470.05,2490.59,109980000,2490.59
+1991-01-14,2500.99,2500.99,2447.03,2483.91,120830000,2483.91
+1991-01-11,2498.76,2516.09,2472.77,2501.49,123050000,2501.49
+1991-01-10,2470.30,2512.13,2467.08,2498.76,124510000,2498.76
+1991-01-09,2509.41,2562.38,2456.19,2470.30,191100000,2470.30
+1991-01-08,2522.77,2544.06,2493.07,2509.41,143390000,2509.41
+1991-01-07,2563.37,2563.37,2514.11,2522.77,130610000,2522.77
+1991-01-04,2573.51,2601.98,2540.84,2566.09,140820000,2566.09
+1991-01-03,2610.64,2622.28,2567.57,2573.51,141450000,2573.51
+1991-01-02,2633.66,2651.73,2600.99,2610.64,126280000,2610.64
+1990-12-31,2629.21,2641.09,2611.14,2633.66,114130000,2633.66
+1990-12-28,2625.50,2639.11,2607.92,2629.21,111030000,2629.21
+1990-12-27,2637.13,2652.23,2616.58,2625.50,102900000,2625.50
+1990-12-26,2621.29,2653.96,2613.37,2637.13,78730000,2637.13
+1990-12-24,2633.66,2638.12,2609.65,2621.29,57200000,2621.29
+1990-12-21,2629.46,2662.62,2619.55,2633.66,233400000,2633.66
+1990-12-20,2626.73,2645.81,2591.58,2629.46,174700000,2629.46
+1990-12-19,2626.73,2648.51,2602.48,2626.73,180380000,2626.73
+1990-12-18,2593.32,2639.36,2583.17,2626.73,176460000,2626.73
+1990-12-17,2593.81,2600.74,2563.61,2593.32,118560000,2593.32
+1990-12-14,2614.36,2617.82,2572.03,2593.81,150880000,2593.81
+1990-12-13,2622.28,2640.59,2598.76,2614.36,162110000,2614.36
+1990-12-12,2586.14,2630.69,2578.22,2622.28,182270000,2622.28
+1990-12-11,2596.78,2606.93,2565.59,2586.14,145330000,2586.14
+1990-12-10,2590.10,2609.40,2566.58,2596.78,138650000,2596.78
+1990-12-07,2602.48,2618.07,2571.78,2590.10,164950000,2590.10
+1990-12-06,2610.40,2656.44,2589.36,2602.48,256380000,2602.48
+1990-12-05,2579.70,2615.84,2558.42,2610.40,205820000,2610.40
+1990-12-04,2565.59,2592.08,2534.65,2579.70,185820000,2579.70
+1990-12-03,2559.65,2589.60,2543.56,2565.59,177010000,2565.59
+1990-11-30,2518.81,2577.23,2498.51,2559.65,192350000,2559.65
+1990-11-29,2535.15,2544.31,2501.23,2518.81,140920000,2518.81
+1990-11-28,2543.81,2564.60,2521.04,2535.15,145490000,2535.15
+1990-11-27,2533.17,2562.62,2516.09,2543.81,147590000,2543.81
+1990-11-26,2527.23,2541.58,2489.85,2533.17,131540000,2533.17
+1990-11-23,2539.36,2557.92,2521.04,2527.23,63350000,2527.23
+1990-11-21,2530.20,2552.23,2502.72,2539.36,140660000,2539.36
+1990-11-20,2565.35,2574.50,2524.01,2530.20,161170000,2530.20
+1990-11-19,2550.25,2580.69,2543.07,2565.35,140950000,2565.35
+1990-11-16,2545.05,2570.79,2522.28,2550.25,165440000,2550.25
+1990-11-15,2559.65,2567.33,2528.71,2545.05,151370000,2545.05
+1990-11-14,2535.40,2581.19,2522.77,2559.65,179310000,2559.65
+1990-11-13,2540.35,2559.90,2512.38,2535.40,160240000,2535.40
+1990-11-12,2490.10,2550.99,2490.10,2540.35,161390000,2540.35
+1990-11-09,2443.81,2500.74,2438.61,2488.61,145160000,2488.61
+1990-11-08,2440.84,2468.81,2415.84,2443.81,155570000,2443.81
+1990-11-07,2485.15,2490.35,2430.94,2440.84,149130000,2440.84
+1990-11-06,2502.23,2516.83,2471.53,2485.15,141130000,2485.15
+1990-11-05,2490.84,2519.06,2472.77,2502.23,147510000,2502.23
+1990-11-02,2454.95,2501.73,2447.28,2490.84,168700000,2490.84
+1990-11-01,2442.33,2473.02,2415.59,2454.95,159270000,2454.95
+1990-10-31,2448.02,2475.99,2419.55,2442.33,156060000,2442.33
+1990-10-30,2430.20,2462.87,2400.50,2448.02,153450000,2448.02
+1990-10-29,2436.14,2470.30,2407.67,2430.20,133980000,2430.20
+1990-10-26,2482.18,2482.18,2429.21,2436.14,130190000,2436.14
+1990-10-25,2504.21,2525.99,2464.11,2484.41,141460000,2484.41
+1990-10-24,2494.06,2523.02,2470.54,2504.21,149290000,2504.21
+1990-10-23,2516.09,2527.97,2480.20,2494.06,146300000,2494.06
+1990-10-22,2520.79,2535.40,2476.73,2516.09,152650000,2516.09
+1990-10-19,2453.47,2536.88,2453.47,2520.79,221480000,2520.79
+1990-10-18,2391.83,2461.63,2391.83,2452.72,204110000,2452.72
+1990-10-17,2381.19,2418.56,2358.17,2387.87,161260000,2387.87
+1990-10-16,2416.34,2434.41,2366.83,2381.19,149570000,2381.19
+1990-10-15,2398.02,2451.24,2354.95,2416.34,164980000,2416.34
+1990-10-12,2365.10,2428.71,2349.75,2398.02,187940000,2398.02
+1990-10-11,2407.92,2427.23,2344.31,2365.10,180060000,2365.10
+1990-10-10,2445.54,2472.03,2388.36,2407.92,167890000,2407.92
+1990-10-09,2514.60,2514.60,2437.87,2445.54,145610000,2445.54
+1990-10-08,2510.64,2548.02,2507.18,2523.76,99470000,2523.76
+1990-10-05,2516.83,2544.55,2453.47,2510.64,153380000,2510.64
+1990-10-04,2489.36,2528.22,2464.85,2516.83,145410000,2516.83
+1990-10-03,2505.20,2534.65,2470.79,2489.36,135490000,2489.36
+1990-10-02,2515.84,2565.35,2487.62,2505.20,188360000,2505.20
+1990-10-01,2452.48,2534.65,2446.53,2515.84,202210000,2515.84
+1990-09-28,2427.48,2465.59,2367.82,2452.48,201010000,2452.48
+1990-09-27,2459.65,2492.33,2396.29,2427.48,182690000,2427.48
+1990-09-26,2485.64,2496.04,2435.40,2459.65,155570000,2459.65
+1990-09-25,2452.97,2501.24,2437.38,2485.64,155940000,2485.64
+1990-09-24,2498.02,2498.02,2438.12,2452.97,162210000,2452.97
+1990-09-21,2518.32,2538.37,2479.95,2512.38,201050000,2512.38
+1990-09-20,2549.01,2549.01,2495.54,2518.32,145100000,2518.32
+1990-09-19,2571.29,2594.55,2534.41,2557.43,147530000,2557.43
+1990-09-18,2567.33,2587.87,2524.26,2571.29,141130000,2571.29
+1990-09-17,2564.11,2585.89,2537.13,2567.33,110600000,2567.33
+1990-09-14,2582.67,2585.15,2545.54,2564.11,133390000,2564.11
+1990-09-13,2625.74,2629.21,2570.54,2582.67,123370000,2582.67
+1990-09-12,2612.62,2639.11,2592.33,2625.74,129890000,2625.74
+1990-09-11,2615.59,2635.64,2586.88,2612.62,113220000,2612.62
+1990-09-10,2619.55,2665.35,2600.99,2615.59,119730000,2615.59
+1990-09-07,2596.29,2635.89,2577.72,2619.55,123800000,2619.55
+1990-09-06,2628.22,2633.17,2575.99,2596.29,125620000,2596.29
+1990-09-05,2613.37,2643.07,2588.61,2628.22,120610000,2628.22
+1990-09-04,2614.36,2618.07,2573.02,2613.37,92940000,2613.37
+1990-08-31,2593.32,2624.50,2569.31,2614.36,96480000,2614.36
+1990-08-30,2632.43,2641.34,2578.47,2593.32,120890000,2593.32
+1990-08-29,2614.85,2651.24,2596.53,2632.43,134240000,2632.43
+1990-08-28,2611.63,2629.95,2582.92,2614.85,127660000,2614.85
+1990-08-27,2590.59,2645.05,2590.59,2611.63,160150000,2611.63
+1990-08-24,2483.42,2555.69,2480.45,2532.92,199040000,2532.92
+1990-08-23,2539.60,2539.60,2459.41,2483.42,250440000,2483.42
+1990-08-22,2603.96,2630.69,2553.22,2560.15,175550000,2560.15
+1990-08-21,2645.53,2645.53,2566.09,2603.96,194630000,2603.96
+1990-08-20,2644.80,2679.21,2632.43,2656.44,129630000,2656.44
+1990-08-17,2679.21,2679.21,2598.02,2644.80,212560000,2644.80
+1990-08-16,2746.53,2746.53,2676.24,2681.44,138850000,2681.44
+1990-08-15,2747.77,2778.71,2736.38,2748.27,135210000,2748.27
+1990-08-14,2746.78,2773.02,2720.54,2747.77,130320000,2747.77
+1990-08-13,2716.58,2752.23,2676.73,2746.78,122820000,2746.78
+1990-08-10,2758.91,2763.61,2692.82,2716.58,145340000,2716.58
+1990-08-09,2734.90,2774.26,2716.58,2758.91,155810000,2758.91
+1990-08-08,2710.64,2763.37,2691.34,2734.90,190400000,2734.90
+1990-08-07,2716.34,2763.86,2676.24,2710.64,231580000,2710.64
+1990-08-06,2758.42,2758.42,2683.17,2716.34,240400000,2716.34
+1990-08-03,2863.86,2863.86,2722.03,2809.65,292360000,2809.65
+1990-08-02,2899.26,2903.71,2833.17,2864.60,253090000,2864.60
+1990-08-01,2905.20,2931.19,2875.00,2899.26,176810000,2899.26
+1990-07-31,2917.33,2940.10,2878.47,2905.20,173810000,2905.20
+1990-07-30,2898.51,2922.52,2861.14,2917.33,146470000,2917.33
+1990-07-27,2920.79,2938.36,2877.72,2898.51,149070000,2898.51
+1990-07-26,2930.94,2945.79,2888.12,2920.79,155040000,2920.79
+1990-07-25,2922.52,2946.53,2896.78,2930.94,163530000,2930.94
+1990-07-24,2904.70,2939.60,2866.83,2922.52,181920000,2922.52
+1990-07-23,2961.14,2961.39,2833.17,2904.70,209030000,2904.70
+1990-07-20,2993.81,3019.31,2953.71,2961.14,177810000,2961.14
+1990-07-19,2981.68,3006.19,2948.27,2993.81,161990000,2993.81
+1990-07-18,2999.75,3009.65,2963.61,2981.68,168760000,2981.68
+1990-07-17,2999.75,3024.26,2970.05,2999.75,176790000,2999.75
+1990-07-16,2980.20,3017.08,2971.78,2999.75,149450000,2999.75
+1990-07-13,2969.80,3012.38,2956.68,2980.20,215600000,2980.20
+1990-07-12,2932.67,2980.69,2917.82,2969.80,211510000,2969.80
+1990-07-11,2890.84,2942.33,2890.10,2932.67,162220000,2932.67
+1990-07-10,2914.11,2928.22,2882.18,2890.84,147630000,2890.84
+1990-07-09,2904.95,2927.97,2890.84,2914.11,119390000,2914.11
+1990-07-06,2879.21,2919.80,2867.57,2904.95,111730000,2904.95
+1990-07-05,2906.44,2906.44,2863.61,2879.21,128320000,2879.21
+1990-07-03,2899.26,2925.74,2891.09,2911.63,130050000,2911.63
+1990-07-02,2880.69,2908.66,2869.80,2899.26,130200000,2899.26
+1990-06-29,2878.71,2901.98,2865.84,2880.69,145510000,2880.69
+1990-06-28,2862.13,2896.04,2850.50,2878.71,136120000,2878.71
+1990-06-27,2842.33,2878.96,2821.53,2862.13,146620000,2862.13
+1990-06-26,2845.05,2882.92,2832.67,2842.33,141420000,2842.33
+1990-06-25,2857.18,2882.18,2834.90,2845.05,133100000,2845.05
+1990-06-22,2901.73,2931.93,2848.02,2857.18,172570000,2857.18
+1990-06-21,2895.30,2916.58,2870.05,2901.73,138570000,2901.73
+1990-06-20,2893.56,2914.60,2868.81,2895.30,137420000,2895.30
+1990-06-19,2882.18,2907.92,2866.58,2893.56,134930000,2893.56
+1990-06-18,2930.45,2930.45,2877.48,2882.18,133470000,2882.18
+1990-06-15,2928.22,2947.77,2902.72,2935.89,205130000,2935.89
+1990-06-14,2929.95,2943.56,2902.97,2928.22,135770000,2928.22
+1990-06-13,2933.42,2956.93,2910.15,2929.95,158910000,2929.95
+1990-06-12,2892.57,2947.52,2877.97,2933.42,157100000,2933.42
+1990-06-11,2862.38,2901.98,2852.97,2892.57,119550000,2892.57
+1990-06-08,2897.33,2908.50,2850.73,2862.38,142600000,2862.38
+1990-06-07,2911.65,2930.58,2880.34,2897.33,160360000,2897.33
+1990-06-06,2925.00,2936.65,2891.99,2911.65,164030000,2911.65
+1990-06-05,2935.19,2956.55,2911.89,2925.00,199720000,2925.00
+1990-06-04,2900.97,2943.69,2883.98,2935.19,175520000,2935.19
+1990-06-01,2876.66,2919.90,2868.69,2900.97,187860000,2900.97
+1990-05-31,2878.56,2900.62,2854.64,2876.66,165690000,2876.66
+1990-05-30,2870.49,2908.21,2853.89,2878.56,199540000,2878.56
+1990-05-29,2820.92,2876.19,2812.62,2870.49,137410000,2870.49
+1990-05-25,2855.55,2856.50,2806.69,2820.92,120250000,2820.92
+1990-05-24,2856.26,2878.08,2828.04,2855.55,155140000,2855.55
+1990-05-23,2852.23,2869.07,2824.95,2856.26,172330000,2856.26
+1990-05-22,2844.68,2877.13,2828.51,2852.23,203350000,2852.23
+1990-05-21,2819.91,2859.72,2802.08,2844.68,166280000,2844.68
+1990-05-18,2831.71,2838.43,2804.63,2819.91,162520000,2819.91
+1990-05-17,2819.68,2856.25,2811.57,2831.71,164770000,2831.71
+1990-05-16,2822.45,2841.44,2800.23,2819.68,159810000,2819.68
+1990-05-15,2821.53,2840.74,2798.15,2822.45,165730000,2822.45
+1990-05-14,2801.58,2857.87,2793.75,2821.53,225410000,2821.53
+1990-05-11,2743.02,2810.36,2743.02,2801.58,234040000,2801.58
+1990-05-10,2732.88,2755.63,2716.44,2738.51,158460000,2738.51
+1990-05-09,2733.56,2745.50,2710.14,2732.88,152220000,2732.88
+1990-05-08,2721.62,2739.41,2710.36,2733.56,144230000,2733.56
+1990-05-07,2710.36,2739.19,2698.87,2721.62,132760000,2721.62
+1990-05-04,2696.17,2718.92,2682.43,2710.36,140550000,2710.36
+1990-05-03,2689.64,2716.22,2682.88,2696.17,145560000,2696.17
+1990-05-02,2668.92,2697.30,2659.01,2689.64,141610000,2689.64
+1990-05-01,2656.76,2687.39,2651.35,2668.92,149020000,2668.92
+1990-04-30,2645.05,2667.79,2627.70,2656.76,122750000,2656.76
+1990-04-27,2676.58,2687.39,2639.19,2645.05,130630000,2645.05
+1990-04-26,2666.44,2691.89,2650.22,2676.58,141330000,2676.58
+1990-04-25,2654.50,2685.36,2649.32,2666.44,133480000,2666.44
+1990-04-24,2666.67,2686.04,2643.69,2654.50,137360000,2654.50
+1990-04-23,2690.77,2690.77,2650.90,2666.67,136150000,2666.67
+1990-04-20,2711.94,2722.07,2668.47,2695.95,174260000,2695.95
+1990-04-19,2732.88,2742.12,2700.00,2711.94,152930000,2711.94
+1990-04-18,2765.77,2775.68,2722.75,2732.88,147130000,2732.88
+1990-04-17,2763.06,2774.77,2738.29,2765.77,127990000,2765.77
+1990-04-16,2751.80,2793.47,2748.87,2763.06,142810000,2763.06
+1990-04-12,2729.73,2763.96,2729.50,2751.80,142470000,2751.80
+1990-04-11,2731.08,2751.35,2713.29,2729.73,141080000,2729.73
+1990-04-10,2722.07,2741.67,2707.88,2731.08,136020000,2731.08
+1990-04-09,2717.12,2737.39,2701.35,2722.07,114970000,2722.07
+1990-04-06,2721.17,2732.43,2695.50,2717.12,137490000,2717.12
+1990-04-05,2719.37,2746.17,2709.01,2721.17,144170000,2721.17
+1990-04-04,2736.71,2755.86,2708.56,2719.37,159540000,2719.37
+1990-04-03,2700.45,2747.30,2699.55,2736.71,154310000,2736.71
+1990-04-02,2707.21,2708.78,2668.69,2700.45,124360000,2700.45
+1990-03-30,2727.70,2736.71,2692.34,2707.21,139340000,2707.21
+1990-03-29,2743.69,2753.38,2711.49,2727.70,132190000,2727.70
+1990-03-28,2736.94,2755.63,2716.21,2743.69,142300000,2743.69
+1990-03-27,2707.66,2738.96,2691.89,2736.94,131610000,2736.94
+1990-03-26,2704.28,2735.81,2697.97,2707.66,116110000,2707.66
+1990-03-23,2695.72,2722.75,2688.06,2704.28,132070000,2704.28
+1990-03-22,2727.93,2734.01,2674.32,2695.72,175930000,2695.72
+1990-03-21,2738.74,2759.68,2718.24,2727.93,130990000,2727.93
+1990-03-20,2755.63,2775.00,2724.10,2738.74,177320000,2738.74
+1990-03-19,2741.22,2761.71,2706.53,2755.63,142300000,2755.63
+1990-03-16,2699.32,2745.50,2699.32,2741.22,222520000,2741.22
+1990-03-15,2687.84,2714.86,2677.93,2695.72,144410000,2695.72
+1990-03-14,2674.55,2705.18,2662.39,2687.84,145060000,2687.84
+1990-03-13,2686.71,2699.55,2657.88,2674.55,145440000,2674.55
+1990-03-12,2683.33,2698.65,2661.94,2686.71,114790000,2686.71
+1990-03-09,2696.17,2705.63,2665.54,2683.33,150410000,2683.33
+1990-03-08,2669.59,2705.18,2661.26,2696.17,170900000,2696.17
+1990-03-07,2676.80,2696.85,2656.08,2669.59,163580000,2669.59
+1990-03-06,2649.55,2684.46,2638.06,2676.80,143640000,2676.80
+1990-03-05,2660.36,2675.22,2636.71,2649.55,140110000,2649.55
+1990-03-02,2635.59,2669.82,2630.18,2660.36,164330000,2660.36
+1990-03-01,2627.25,2655.63,2607.88,2635.59,157930000,2635.59
+1990-02-28,2617.12,2652.48,2603.60,2627.25,184410000,2627.25
+1990-02-27,2602.48,2637.84,2592.12,2617.12,152590000,2617.12
+1990-02-26,2564.19,2606.30,2560.13,2602.48,148910000,2602.48
+1990-02-23,2574.77,2591.44,2540.99,2564.19,148490000,2564.19
+1990-02-22,2583.56,2622.30,2568.02,2574.77,184320000,2574.77
+1990-02-21,2596.85,2602.48,2556.31,2583.56,159240000,2583.56
+1990-02-20,2619.14,2619.14,2579.05,2596.85,147300000,2596.85
+1990-02-16,2649.55,2669.37,2623.65,2635.59,166840000,2635.59
+1990-02-15,2624.32,2658.78,2614.86,2649.55,174630000,2649.55
+1990-02-14,2624.10,2643.69,2608.11,2624.32,138530000,2624.32
+1990-02-13,2619.14,2639.19,2592.57,2624.10,144490000,2624.10
+1990-02-12,2648.20,2652.48,2610.59,2619.14,118390000,2619.14
+1990-02-09,2644.37,2666.67,2628.15,2648.20,146910000,2648.20
+1990-02-08,2640.09,2674.32,2622.30,2644.37,176240000,2644.37
+1990-02-07,2606.31,2651.35,2579.28,2640.09,186710000,2640.09
+1990-02-06,2622.52,2629.50,2588.29,2606.31,134070000,2606.31
+1990-02-05,2602.70,2633.56,2592.12,2622.52,130950000,2622.52
+1990-02-02,2586.26,2623.65,2577.03,2602.70,164400000,2602.70
+1990-02-01,2590.54,2611.49,2571.85,2586.26,154580000,2586.26
+1990-01-31,2546.85,2600.90,2546.85,2590.54,189660000,2590.54
+1990-01-30,2553.38,2576.13,2513.06,2543.24,186030000,2543.24
+1990-01-29,2559.23,2583.56,2522.97,2553.38,150770000,2553.38
+1990-01-26,2561.04,2591.67,2516.89,2559.23,198190000,2559.23
+1990-01-25,2604.50,2628.83,2546.17,2561.04,172270000,2561.04
+1990-01-24,2615.32,2619.59,2534.23,2604.50,207830000,2604.50
+1990-01-23,2600.45,2639.64,2584.01,2615.32,179300000,2615.32
+1990-01-22,2677.90,2683.33,2595.27,2600.45,148380000,2600.45
+1990-01-19,2666.38,2696.89,2657.85,2677.90,185590000,2677.90
+1990-01-18,2659.13,2678.11,2625.85,2666.38,178590000,2666.38
+1990-01-17,2692.62,2711.39,2643.77,2659.13,170470000,2659.13
+1990-01-16,2669.37,2698.38,2634.17,2692.62,186070000,2692.62
+1990-01-15,2689.21,2698.11,2656.36,2669.37,140590000,2669.37
+1990-01-12,2735.92,2735.92,2675.98,2689.21,183880000,2689.21
+1990-01-11,2750.64,2783.27,2748.29,2760.67,154390000,2760.67
+1990-01-10,2766.00,2772.82,2725.47,2750.64,175990000,2750.64
+1990-01-09,2794.37,2810.79,2760.03,2766.00,155210000,2766.00
+1990-01-08,2773.25,2803.97,2753.41,2794.37,140110000,2794.37
+1990-01-05,2796.08,2810.15,2758.11,2773.25,158530000,2773.25
+1990-01-04,2809.73,2821.46,2766.42,2796.08,177000000,2796.08
+1990-01-03,2810.15,2834.04,2786.26,2809.73,192330000,2809.73
+1990-01-02,2753.20,2811.65,2732.51,2810.15,162070000,2810.15
diff --git a/static/vendor/d3-2.8.1/examples/calendar/dji.html b/static/vendor/d3-2.8.1/examples/calendar/dji.html
new file mode 100755 (executable)
index 0000000..a9e5731
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>DJI</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="../../lib/colorbrewer/colorbrewer.css"/>
+    <link type="text/css" rel="stylesheet" href="calendar.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="dji.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/calendar/dji.js b/static/vendor/d3-2.8.1/examples/calendar/dji.js
new file mode 100755 (executable)
index 0000000..098315e
--- /dev/null
@@ -0,0 +1,69 @@
+var m = [19, 20, 20, 19], // top right bottom left margin
+    w = 960 - m[1] - m[3], // width
+    h = 136 - m[0] - m[2], // height
+    z = 17; // cell size
+
+var day = d3.time.format("%w"),
+    week = d3.time.format("%U"),
+    percent = d3.format(".1%"),
+    format = d3.time.format("%Y-%m-%d");
+
+var color = d3.scale.quantize()
+    .domain([-.05, .05])
+    .range(d3.range(9));
+
+var svg = d3.select("#chart").selectAll("svg")
+    .data(d3.range(1990, 2011))
+  .enter().append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+    .attr("class", "RdYlGn")
+  .append("g")
+    .attr("transform", "translate(" + (m[3] + (w - z * 53) / 2) + "," + (m[0] + (h - z * 7) / 2) + ")");
+
+svg.append("text")
+    .attr("transform", "translate(-6," + z * 3.5 + ")rotate(-90)")
+    .attr("text-anchor", "middle")
+    .text(String);
+
+var rect = svg.selectAll("rect.day")
+    .data(function(d) { return d3.time.days(new Date(d, 0, 1), new Date(d + 1, 0, 1)); })
+  .enter().append("rect")
+    .attr("class", "day")
+    .attr("width", z)
+    .attr("height", z)
+    .attr("x", function(d) { return week(d) * z; })
+    .attr("y", function(d) { return day(d) * z; })
+    .datum(format);
+
+rect.append("title")
+    .text(function(d) { return d; });
+
+svg.selectAll("path.month")
+    .data(function(d) { return d3.time.months(new Date(d, 0, 1), new Date(d + 1, 0, 1)); })
+  .enter().append("path")
+    .attr("class", "month")
+    .attr("d", monthPath);
+
+d3.csv("dji.csv", function(csv) {
+  var data = d3.nest()
+    .key(function(d) { return d.Date; })
+    .rollup(function(d) { return (d[0].Close - d[0].Open) / d[0].Open; })
+    .map(csv);
+
+  rect.filter(function(d) { return d in data; })
+      .attr("class", function(d) { return "day q" + color(data[d]) + "-9"; })
+    .select("title")
+      .text(function(d) { return d + ": " + percent(data[d]); });
+});
+
+function monthPath(t0) {
+  var t1 = new Date(t0.getFullYear(), t0.getMonth() + 1, 0),
+      d0 = +day(t0), w0 = +week(t0),
+      d1 = +day(t1), w1 = +week(t1);
+  return "M" + (w0 + 1) * z + "," + d0 * z
+      + "H" + w0 * z + "V" + 7 * z
+      + "H" + w1 * z + "V" + (d1 + 1) * z
+      + "H" + (w1 + 1) * z + "V" + 0
+      + "H" + (w0 + 1) * z + "Z";
+}
diff --git a/static/vendor/d3-2.8.1/examples/calendar/vix.csv b/static/vendor/d3-2.8.1/examples/calendar/vix.csv
new file mode 100755 (executable)
index 0000000..e2319e3
--- /dev/null
@@ -0,0 +1,5231 @@
+Date,Open,High,Low,Close,Volume,Adj Close
+2010-10-04,23.63,24.34,23.30,23.53,000,23.53
+2010-10-01,22.90,23.67,22.46,22.50,000,22.50
+2010-09-30,22.85,24.52,22.39,23.70,000,23.70
+2010-09-29,23.14,23.45,22.72,23.25,000,23.25
+2010-09-28,22.92,24.28,22.40,22.60,000,22.60
+2010-09-27,22.58,22.75,21.97,22.54,000,22.54
+2010-09-24,22.61,22.61,21.71,21.71,000,21.71
+2010-09-23,23.91,24.06,22.56,23.87,000,23.87
+2010-09-22,22.56,23.19,21.91,22.51,000,22.51
+2010-09-21,21.54,22.59,21.42,22.35,000,22.35
+2010-09-20,22.47,22.58,21.25,21.50,000,21.50
+2010-09-17,21.65,22.56,21.63,22.01,000,22.01
+2010-09-16,22.65,22.83,21.71,21.72,000,21.72
+2010-09-15,22.55,22.80,22.10,22.10,000,22.10
+2010-09-14,21.69,21.97,20.85,21.56,000,21.56
+2010-09-13,21.06,22.05,20.93,21.21,000,21.21
+2010-09-10,22.64,22.87,21.76,21.99,000,21.99
+2010-09-09,22.22,23.24,22.14,22.81,000,22.81
+2010-09-08,23.51,23.56,22.92,23.25,000,23.25
+2010-09-07,22.77,23.94,22.77,23.80,000,23.80
+2010-09-03,21.99,22.78,21.24,21.31,000,21.31
+2010-09-02,24.23,24.31,23.15,23.19,000,23.19
+2010-09-01,25.13,25.13,23.86,23.89,000,23.89
+2010-08-31,27.58,27.83,25.93,26.05,000,26.05
+2010-08-30,25.88,27.21,25.41,27.21,000,27.21
+2010-08-27,26.50,28.11,24.41,24.45,000,24.45
+2010-08-26,26.45,27.55,25.86,27.37,000,27.37
+2010-08-25,28.30,28.92,26.46,26.70,000,26.70
+2010-08-24,27.91,28.77,26.32,27.46,000,27.46
+2010-08-23,25.97,25.97,24.62,25.66,000,25.66
+2010-08-20,26.73,27.00,25.49,25.49,000,25.49
+2010-08-19,24.48,26.78,24.26,26.44,000,26.44
+2010-08-18,24.30,25.23,23.40,24.59,000,24.59
+2010-08-17,24.72,24.89,23.71,24.33,000,24.33
+2010-08-16,27.41,28.10,25.38,26.10,000,26.10
+2010-08-13,26.08,26.26,25.45,26.24,000,26.24
+2010-08-12,27.21,27.21,25.18,25.73,000,25.73
+2010-08-11,24.96,26.10,24.96,25.39,000,25.39
+2010-08-10,23.30,24.24,22.17,22.37,000,22.37
+2010-08-09,21.85,22.87,21.36,22.14,000,22.14
+2010-08-06,23.34,23.89,21.72,21.74,000,21.74
+2010-08-05,23.04,23.13,22.07,22.10,000,22.10
+2010-08-04,22.69,23.69,22.16,22.21,000,22.21
+2010-08-03,22.44,23.06,21.98,22.63,000,22.63
+2010-08-02,23.07,23.24,21.74,22.01,000,22.01
+2010-07-30,25.47,27.32,23.35,23.50,000,23.50
+2010-07-29,23.40,25.54,23.04,24.13,000,24.13
+2010-07-28,23.93,24.54,22.24,24.25,000,24.25
+2010-07-27,21.89,23.57,21.86,23.19,000,23.19
+2010-07-26,24.37,24.61,22.70,22.73,000,22.73
+2010-07-23,24.79,25.17,23.32,23.47,000,23.47
+2010-07-22,24.37,24.85,23.72,24.63,000,24.63
+2010-07-21,23.61,26.63,23.59,25.64,000,25.64
+2010-07-20,27.35,27.40,23.79,23.93,000,23.93
+2010-07-19,27.02,27.30,25.12,25.97,000,25.97
+2010-07-16,25.77,28.16,25.71,26.25,000,26.25
+2010-07-15,25.08,27.24,24.74,25.14,000,25.14
+2010-07-14,24.61,25.80,24.18,24.89,000,24.89
+2010-07-13,23.29,24.57,23.12,24.56,000,24.56
+2010-07-12,24.66,25.14,23.53,24.43,000,24.43
+2010-07-09,25.35,25.67,24.37,24.98,000,24.98
+2010-07-08,26.50,27.42,24.22,25.71,000,25.71
+2010-07-07,29.56,29.56,26.84,26.84,000,26.84
+2010-07-06,28.82,31.15,27.96,29.65,000,29.65
+2010-07-02,31.71,31.88,29.35,30.12,000,30.12
+2010-07-01,34.41,37.58,32.72,32.86,000,32.86
+2010-06-30,33.95,34.63,31.74,34.54,000,34.54
+2010-06-29,31.22,35.39,31.22,34.13,000,34.13
+2010-06-28,29.20,29.90,28.47,29.00,000,29.00
+2010-06-25,29.64,30.41,28.07,28.53,000,28.53
+2010-06-24,27.61,30.27,27.53,29.74,000,29.74
+2010-06-23,26.93,28.55,26.54,26.91,000,26.91
+2010-06-22,25.14,27.05,24.41,27.05,000,27.05
+2010-06-21,22.90,25.64,22.87,24.88,000,24.88
+2010-06-18,24.87,24.88,23.30,23.95,000,23.95
+2010-06-17,25.59,26.64,25.05,25.05,000,25.05
+2010-06-16,26.72,26.72,25.34,25.92,000,25.92
+2010-06-15,27.68,27.84,25.68,25.87,000,25.87
+2010-06-14,27.94,28.72,26.98,28.58,000,28.58
+2010-06-11,31.79,31.79,28.60,28.79,000,28.79
+2010-06-10,31.00,31.77,29.69,30.57,000,30.57
+2010-06-09,32.33,34.12,30.23,33.73,000,33.73
+2010-06-08,36.53,37.38,33.36,33.70,000,33.70
+2010-06-07,35.66,36.80,34.43,36.57,000,36.57
+2010-06-04,32.93,36.12,31.81,35.48,000,35.48
+2010-06-03,29.65,31.20,29.12,29.46,000,29.46
+2010-06-02,34.39,34.57,29.94,30.17,000,30.17
+2010-06-01,34.87,35.68,31.82,35.54,000,35.54
+2010-05-28,30.23,33.30,29.53,32.07,000,32.07
+2010-05-27,30.24,31.03,29.54,29.68,000,29.68
+2010-05-26,32.54,35.02,29.39,35.02,000,35.02
+2010-05-25,43.15,43.74,34.59,34.61,000,34.61
+2010-05-24,41.74,41.74,35.57,38.32,000,38.32
+2010-05-21,47.66,48.20,38.95,40.10,000,40.10
+2010-05-20,41.79,46.37,40.30,45.79,000,45.79
+2010-05-19,34.65,38.42,33.07,35.32,000,35.32
+2010-05-18,28.67,34.17,28.09,33.55,000,33.55
+2010-05-17,31.33,35.25,30.76,30.84,000,30.84
+2010-05-14,28.40,33.24,28.40,31.24,000,31.24
+2010-05-13,26.17,26.85,24.30,26.68,000,26.68
+2010-05-12,26.56,26.67,24.98,25.52,000,25.52
+2010-05-11,31.04,31.04,25.86,28.32,000,28.32
+2010-05-10,28.65,30.89,25.68,28.84,000,28.84
+2010-05-07,32.76,42.15,31.71,40.95,000,40.95
+2010-05-06,25.88,40.71,24.43,32.80,000,32.80
+2010-05-05,25.96,27.23,23.75,24.91,000,24.91
+2010-05-04,22.46,25.70,22.46,23.84,000,23.84
+2010-05-03,22.41,22.41,19.61,20.19,000,20.19
+2010-04-30,18.75,22.39,18.41,22.05,000,22.05
+2010-04-29,20.37,20.37,18.44,18.44,000,18.44
+2010-04-28,22.08,23.03,20.86,21.08,000,21.08
+2010-04-27,18.13,23.20,17.94,22.81,000,22.81
+2010-04-26,17.52,17.53,17.07,17.47,000,17.47
+2010-04-23,16.62,16.71,16.12,16.62,000,16.62
+2010-04-22,17.48,18.19,16.20,16.47,000,16.47
+2010-04-21,15.94,16.85,15.50,16.32,000,16.32
+2010-04-20,16.84,16.89,15.73,15.73,000,15.73
+2010-04-19,19.14,19.55,17.34,17.34,000,17.34
+2010-04-16,16.19,19.70,16.11,18.36,000,18.36
+2010-04-15,15.87,16.50,15.68,15.89,000,15.89
+2010-04-14,15.80,16.38,15.55,15.59,000,15.59
+2010-04-13,15.98,16.77,15.81,16.20,000,16.20
+2010-04-12,15.67,16.00,15.23,15.58,000,15.58
+2010-04-09,16.32,16.65,16.06,16.14,000,16.14
+2010-04-08,17.21,17.80,16.30,16.48,000,16.48
+2010-04-07,16.72,17.21,16.16,16.62,000,16.62
+2010-04-06,17.39,17.54,16.08,16.23,000,16.23
+2010-04-05,17.96,18.16,17.02,17.02,000,17.02
+2010-04-01,17.01,18.09,16.79,17.47,000,17.47
+2010-03-31,17.66,17.92,17.29,17.59,000,17.59
+2010-03-30,17.64,18.08,17.13,17.13,000,17.13
+2010-03-29,18.17,18.28,17.57,17.59,000,17.59
+2010-03-26,18.27,18.69,17.35,17.77,000,17.77
+2010-03-25,17.07,18.54,16.62,18.40,000,18.40
+2010-03-24,16.85,17.92,16.83,17.55,000,17.55
+2010-03-23,16.84,17.09,16.21,16.35,000,16.35
+2010-03-22,18.30,18.34,16.77,16.87,000,16.87
+2010-03-19,16.17,17.57,16.17,16.97,000,16.97
+2010-03-18,16.96,16.99,16.31,16.62,000,16.62
+2010-03-17,16.97,17.17,16.52,16.91,000,16.91
+2010-03-16,17.78,18.01,17.42,17.69,000,17.69
+2010-03-15,18.28,18.78,17.96,18.00,000,18.00
+2010-03-12,17.97,18.53,17.58,17.58,000,17.58
+2010-03-11,18.90,19.34,18.06,18.06,000,18.06
+2010-03-10,18.00,18.60,17.43,18.57,000,18.57
+2010-03-09,18.18,18.19,17.51,17.92,000,17.92
+2010-03-08,17.95,17.96,17.56,17.79,000,17.79
+2010-03-05,18.06,18.15,17.23,17.42,000,17.42
+2010-03-04,18.86,19.27,18.58,18.72,000,18.72
+2010-03-03,18.95,19.30,18.42,18.83,000,18.83
+2010-03-02,18.83,19.36,18.60,19.06,000,19.06
+2010-03-01,19.93,19.94,19.18,19.26,000,19.26
+2010-02-26,19.88,20.53,19.32,19.50,000,19.50
+2010-02-25,22.03,22.68,20.06,20.10,000,20.10
+2010-02-24,21.23,21.58,20.22,20.27,000,20.27
+2010-02-23,20.39,21.94,20.06,21.37,000,21.37
+2010-02-22,20.16,21.00,19.59,19.94,000,19.94
+2010-02-19,21.07,21.14,19.71,20.02,000,20.02
+2010-02-18,21.72,22.21,20.60,20.63,000,20.63
+2010-02-17,22.47,22.60,21.70,21.72,000,21.72
+2010-02-16,23.51,23.57,22.13,22.25,000,22.25
+2010-02-12,23.96,25.54,22.73,22.73,000,22.73
+2010-02-11,25.82,26.11,23.87,23.96,000,23.96
+2010-02-10,26.36,26.77,24.80,25.40,000,25.40
+2010-02-09,26.51,26.56,24.78,26.00,000,26.00
+2010-02-08,26.11,27.11,25.48,26.51,000,26.51
+2010-02-05,25.69,29.22,25.37,26.11,000,26.11
+2010-02-04,22.63,26.32,22.63,26.08,000,26.08
+2010-02-03,22.11,22.11,21.33,21.60,000,21.60
+2010-02-02,22.59,22.99,21.08,21.48,000,21.48
+2010-02-01,24.33,24.33,22.58,22.59,000,22.59
+2010-01-29,23.73,25.03,22.11,24.62,000,24.62
+2010-01-28,22.79,25.30,22.69,23.73,000,23.73
+2010-01-27,24.81,25.69,23.14,23.14,000,23.14
+2010-01-26,26.03,26.22,22.77,24.55,000,24.55
+2010-01-25,27.32,27.32,24.61,25.41,000,25.41
+2010-01-22,22.27,28.01,22.27,27.31,000,27.31
+2010-01-21,18.59,22.30,18.27,22.27,000,22.27
+2010-01-20,18.51,19.69,18.44,18.68,000,18.68
+2010-01-19,18.63,18.85,17.33,17.58,000,17.58
+2010-01-15,17.63,19.02,17.63,17.91,000,17.91
+2010-01-14,18.16,18.27,17.38,17.63,000,17.63
+2010-01-13,17.94,18.72,17.56,17.85,000,17.85
+2010-01-12,17.95,19.46,17.95,18.25,000,18.25
+2010-01-11,16.93,17.74,16.86,17.55,000,17.55
+2010-01-08,19.27,19.27,18.11,18.13,000,18.13
+2010-01-07,19.68,19.71,18.70,19.06,000,19.06
+2010-01-06,19.59,19.68,18.77,19.16,000,19.16
+2010-01-05,20.05,20.13,19.34,19.35,000,19.35
+2010-01-04,21.68,21.68,20.03,20.04,000,20.04
+2009-12-31,19.96,21.83,19.89,21.68,000,21.68
+2009-12-30,20.36,20.44,19.93,19.96,000,19.96
+2009-12-29,19.87,20.12,19.62,20.01,000,20.01
+2009-12-28,20.29,20.53,19.90,19.93,000,19.93
+2009-12-24,19.67,19.67,19.25,19.47,000,19.47
+2009-12-23,19.54,19.97,19.35,19.71,000,19.71
+2009-12-22,20.39,20.40,19.54,19.54,000,19.54
+2009-12-21,21.46,21.51,20.28,20.49,000,20.49
+2009-12-18,21.84,23.02,21.68,21.68,000,21.68
+2009-12-17,21.89,22.86,21.40,22.57,000,22.57
+2009-12-16,21.50,21.50,20.46,20.54,000,20.54
+2009-12-15,21.09,21.87,20.91,21.50,000,21.50
+2009-12-14,21.59,21.59,20.57,21.15,000,21.15
+2009-12-11,21.45,22.31,21.39,21.59,000,21.59
+2009-12-10,22.66,22.66,21.77,22.32,000,22.32
+2009-12-09,23.21,24.20,22.54,22.66,000,22.66
+2009-12-08,23.28,23.97,22.84,23.69,000,23.69
+2009-12-07,22.32,22.46,21.60,22.10,000,22.10
+2009-12-04,21.18,22.76,20.62,21.25,000,21.25
+2009-12-03,21.15,22.50,20.61,22.46,000,22.46
+2009-12-02,21.89,22.19,21.01,21.12,000,21.12
+2009-12-01,24.51,24.51,21.88,21.92,000,21.92
+2009-11-30,24.95,25.57,24.19,24.51,000,24.51
+2009-11-27,25.75,25.93,23.12,24.74,000,24.74
+2009-11-25,20.23,20.57,20.05,20.48,000,20.48
+2009-11-24,21.28,21.87,20.35,20.47,000,20.47
+2009-11-23,21.98,21.98,20.90,21.16,000,21.16
+2009-11-20,23.45,23.45,22.14,22.19,000,22.19
+2009-11-19,21.63,24.20,21.63,22.63,000,22.63
+2009-11-18,22.35,22.65,21.63,21.63,000,21.63
+2009-11-17,22.81,23.33,22.27,22.41,000,22.41
+2009-11-16,23.36,23.42,22.02,22.89,000,22.89
+2009-11-13,24.25,24.43,23.22,23.36,000,23.36
+2009-11-12,23.04,24.61,22.91,24.24,000,24.24
+2009-11-11,22.84,23.68,21.61,23.00,000,23.00
+2009-11-10,23.15,23.53,22.78,22.84,000,22.84
+2009-11-09,24.19,24.24,22.78,23.15,000,23.15
+2009-11-06,26.17,26.17,24.06,24.19,000,24.19
+2009-11-05,27.28,27.39,25.41,25.43,000,25.43
+2009-11-04,28.81,28.81,26.61,27.72,000,27.72
+2009-11-03,30.62,30.80,28.77,28.81,000,28.81
+2009-11-02,30.70,31.84,28.07,29.78,000,29.78
+2009-10-30,24.76,31.59,24.76,30.69,000,30.69
+2009-10-29,27.16,27.19,24.68,24.76,000,24.76
+2009-10-28,24.83,27.94,24.83,27.91,000,27.91
+2009-10-27,24.38,25.22,24.03,24.83,000,24.83
+2009-10-26,23.06,24.86,21.89,24.31,000,24.31
+2009-10-23,20.70,22.59,20.34,22.27,000,22.27
+2009-10-22,22.22,22.77,20.33,20.69,000,20.69
+2009-10-21,20.90,22.48,20.10,22.22,000,22.22
+2009-10-20,21.55,21.76,20.90,20.90,000,20.90
+2009-10-19,21.41,22.46,20.91,21.49,000,21.49
+2009-10-16,21.72,22.60,20.98,21.43,000,21.43
+2009-10-15,23.51,23.53,21.49,21.72,000,21.72
+2009-10-14,22.08,22.89,21.55,22.86,000,22.86
+2009-10-13,23.00,24.07,22.74,22.99,000,22.99
+2009-10-12,23.12,23.53,22.67,23.01,000,23.01
+2009-10-09,24.39,24.54,22.99,23.12,000,23.12
+2009-10-08,24.68,24.69,23.90,24.18,000,24.18
+2009-10-07,25.78,25.82,24.57,24.68,000,24.68
+2009-10-06,26.39,26.41,25.19,25.70,000,25.70
+2009-10-05,29.34,29.34,26.57,26.84,000,26.84
+2009-10-02,29.34,29.56,27.98,28.68,000,28.68
+2009-10-01,25.98,28.42,25.98,28.27,000,28.27
+2009-09-30,25.19,26.45,24.76,25.61,000,25.61
+2009-09-29,24.88,25.28,24.54,25.19,000,25.19
+2009-09-28,26.26,26.40,24.85,24.88,000,24.88
+2009-09-25,25.18,26.34,24.81,25.61,000,25.61
+2009-09-24,23.67,25.37,23.44,24.95,000,24.95
+2009-09-23,22.90,23.69,22.19,23.49,000,23.49
+2009-09-22,23.81,23.98,23.06,23.08,000,23.08
+2009-09-21,25.34,25.51,23.71,24.06,000,24.06
+2009-09-18,23.65,24.43,23.14,23.92,000,23.92
+2009-09-17,23.99,24.07,22.79,23.65,000,23.65
+2009-09-16,23.29,23.92,22.78,23.69,000,23.69
+2009-09-15,23.90,24.27,23.07,23.42,000,23.42
+2009-09-14,25.39,25.39,23.32,23.86,000,23.86
+2009-09-11,23.49,24.33,22.48,24.15,000,24.15
+2009-09-10,24.40,24.76,22.82,23.55,000,23.55
+2009-09-09,25.66,25.93,24.23,24.32,000,24.32
+2009-09-08,25.26,26.15,25.26,25.62,000,25.62
+2009-09-04,26.98,26.98,24.86,25.26,000,25.26
+2009-09-03,28.90,28.90,26.98,27.10,000,27.10
+2009-09-02,29.14,29.57,28.41,28.90,000,28.90
+2009-09-01,26.01,29.23,26.00,29.15,000,29.15
+2009-08-31,24.76,27.01,24.76,26.01,000,26.01
+2009-08-28,24.44,25.50,24.28,24.76,000,24.76
+2009-08-27,25.13,25.89,24.43,24.68,000,24.68
+2009-08-26,24.91,25.56,24.69,24.95,000,24.95
+2009-08-25,25.13,25.13,22.58,24.92,000,24.92
+2009-08-24,25.01,25.70,25.01,25.14,000,25.14
+2009-08-21,24.49,25.06,23.91,25.01,000,25.01
+2009-08-20,26.45,26.45,24.75,25.09,000,25.09
+2009-08-19,28.08,28.14,26.14,26.26,000,26.26
+2009-08-18,27.89,27.89,26.08,26.18,000,26.18
+2009-08-17,24.27,28.39,24.27,27.89,000,27.89
+2009-08-14,24.77,25.94,24.26,24.27,000,24.27
+2009-08-13,25.34,26.15,24.71,24.71,000,24.71
+2009-08-12,25.99,26.50,25.11,25.45,000,25.45
+2009-08-11,24.98,26.98,24.98,25.99,000,25.99
+2009-08-10,24.76,25.82,24.76,24.99,000,24.99
+2009-08-07,24.71,24.95,23.98,24.76,000,24.76
+2009-08-06,24.90,26.15,24.47,25.67,000,25.67
+2009-08-05,24.91,25.85,24.86,24.90,000,24.90
+2009-08-04,25.55,26.16,24.89,24.89,000,24.89
+2009-08-03,25.92,26.49,25.56,25.56,000,25.56
+2009-07-31,25.40,26.22,24.93,25.92,000,25.92
+2009-07-30,25.40,25.76,24.85,25.40,000,25.40
+2009-07-29,25.47,26.18,25.41,25.61,000,25.61
+2009-07-28,24.28,25.61,24.28,25.01,000,25.01
+2009-07-27,24.06,24.86,24.02,24.28,000,24.28
+2009-07-24,23.87,23.87,23.00,23.09,000,23.09
+2009-07-23,23.71,24.05,23.21,23.43,000,23.43
+2009-07-22,24.05,24.14,23.24,23.47,000,23.47
+2009-07-21,24.28,25.14,23.81,23.87,000,23.87
+2009-07-20,25.06,25.42,24.26,24.40,000,24.40
+2009-07-17,25.42,25.55,23.88,24.34,000,24.34
+2009-07-16,25.96,26.18,24.51,25.42,000,25.42
+2009-07-15,25.05,26.06,23.83,25.89,000,25.89
+2009-07-14,26.31,26.84,24.99,25.02,000,25.02
+2009-07-13,28.36,29.24,25.42,26.31,000,26.31
+2009-07-10,29.78,30.34,28.82,29.02,000,29.02
+2009-07-09,30.23,30.49,29.28,29.78,000,29.78
+2009-07-08,30.85,33.05,30.43,31.30,000,31.30
+2009-07-07,29.00,30.94,28.90,30.85,000,30.85
+2009-07-06,30.32,30.60,28.99,29.00,000,29.00
+2009-07-02,26.22,28.62,26.22,27.95,000,27.95
+2009-07-01,25.73,26.31,24.80,26.22,000,26.22
+2009-06-30,25.36,27.38,25.02,26.35,000,26.35
+2009-06-29,25.93,27.18,25.29,25.35,000,25.35
+2009-06-26,27.09,27.22,25.76,25.93,000,25.93
+2009-06-25,29.45,29.56,26.30,26.36,000,26.36
+2009-06-24,30.58,30.58,28.79,29.05,000,29.05
+2009-06-23,31.30,31.54,27.83,30.58,000,30.58
+2009-06-22,30.40,32.05,30.30,31.17,000,31.17
+2009-06-19,29.16,29.32,27.56,27.99,000,27.99
+2009-06-18,31.54,31.54,29.60,30.03,000,30.03
+2009-06-17,31.19,32.77,30.64,31.54,000,31.54
+2009-06-16,30.81,32.75,30.07,32.68,000,32.68
+2009-06-15,29.70,31.09,29.64,30.81,000,30.81
+2009-06-12,28.08,28.50,27.73,28.15,000,28.15
+2009-06-11,27.36,28.11,26.81,28.11,000,28.11
+2009-06-10,26.90,29.74,26.90,28.46,000,28.46
+2009-06-09,29.77,29.77,27.79,28.27,000,28.27
+2009-06-08,30.84,31.82,26.41,29.77,000,29.77
+2009-06-05,29.39,30.81,28.85,29.62,000,29.62
+2009-06-04,31.02,31.02,29.92,30.18,000,30.18
+2009-06-03,29.62,31.79,29.62,31.02,000,31.02
+2009-06-02,30.04,30.13,28.30,29.63,000,29.63
+2009-06-01,28.70,30.05,28.45,30.04,000,30.04
+2009-05-29,31.67,31.67,28.85,28.92,000,28.92
+2009-05-28,31.54,33.32,31.10,31.67,000,31.67
+2009-05-27,30.80,32.53,29.62,32.36,000,32.36
+2009-05-26,34.57,34.57,30.38,30.62,000,30.62
+2009-05-22,31.36,32.71,30.57,32.63,000,32.63
+2009-05-21,29.03,32.77,29.03,31.35,000,31.35
+2009-05-20,27.47,29.16,26.57,29.03,000,29.03
+2009-05-19,30.23,30.32,28.35,28.80,000,28.80
+2009-05-18,32.91,32.91,30.00,30.24,000,30.24
+2009-05-15,31.36,33.61,30.59,33.12,000,33.12
+2009-05-14,33.65,33.96,31.32,31.37,000,31.37
+2009-05-13,32.97,33.99,32.56,33.65,000,33.65
+2009-05-12,32.68,33.29,31.57,31.80,000,31.80
+2009-05-11,32.05,34.08,32.05,32.87,000,32.87
+2009-05-08,32.36,32.72,31.19,32.05,000,32.05
+2009-05-07,32.10,34.56,31.91,33.44,000,33.44
+2009-05-06,33.36,33.70,32.43,32.45,000,32.45
+2009-05-05,34.54,35.14,33.36,33.36,000,33.36
+2009-05-04,35.30,36.24,34.31,34.53,000,34.53
+2009-05-01,36.50,36.88,34.88,35.30,000,35.30
+2009-04-30,36.09,36.71,34.50,36.50,000,36.50
+2009-04-29,37.95,37.95,35.37,36.08,000,36.08
+2009-04-28,39.43,39.64,37.42,37.95,000,37.95
+2009-04-27,39.46,39.52,37.97,38.32,000,38.32
+2009-04-24,36.86,37.53,36.37,36.82,000,36.82
+2009-04-23,38.10,38.52,37.01,37.15,000,37.15
+2009-04-22,37.14,38.19,36.01,38.10,000,38.10
+2009-04-21,40.27,40.29,36.95,37.14,000,37.14
+2009-04-20,33.94,39.58,33.94,39.18,000,39.18
+2009-04-17,35.36,35.52,33.68,33.94,000,33.94
+2009-04-16,36.04,36.80,34.88,35.79,000,35.79
+2009-04-15,37.85,38.06,36.10,36.17,000,36.17
+2009-04-14,37.95,38.50,36.88,37.67,000,37.67
+2009-04-13,38.32,38.91,37.51,37.81,000,37.81
+2009-04-09,37.22,37.74,36.53,36.53,000,36.53
+2009-04-08,40.39,40.86,38.70,38.85,000,38.85
+2009-04-07,41.48,42.50,40.36,40.39,000,40.39
+2009-04-06,41.96,43.02,40.83,40.93,000,40.93
+2009-04-03,42.03,42.03,39.64,39.70,000,39.70
+2009-04-02,42.28,42.68,40.30,42.04,000,42.04
+2009-04-01,45.42,45.60,42.26,42.28,000,42.28
+2009-03-31,45.54,45.54,42.27,44.14,000,44.14
+2009-03-30,44.86,46.28,44.86,45.54,000,45.54
+2009-03-27,40.36,42.13,40.36,41.04,000,41.04
+2009-03-26,42.25,42.25,40.17,40.36,000,40.36
+2009-03-25,42.35,44.20,40.81,42.25,000,42.25
+2009-03-24,43.24,44.00,41.63,42.93,000,42.93
+2009-03-23,45.89,45.89,41.27,43.23,000,43.23
+2009-03-20,43.60,47.63,43.07,45.89,000,45.89
+2009-03-19,40.06,44.17,38.79,43.68,000,43.68
+2009-03-18,41.14,42.39,38.98,40.06,000,40.06
+2009-03-17,44.23,44.59,40.74,40.80,000,40.80
+2009-03-16,42.36,44.23,42.36,43.74,000,43.74
+2009-03-13,40.99,43.52,40.03,42.36,000,42.36
+2009-03-12,43.53,43.98,40.75,41.18,000,41.18
+2009-03-11,43.35,44.26,42.36,43.61,000,43.61
+2009-03-10,49.68,49.68,43.88,44.37,000,44.37
+2009-03-09,49.35,51.34,48.40,49.68,000,49.68
+2009-03-06,50.17,51.95,47.65,49.33,000,49.33
+2009-03-05,47.56,51.95,46.98,50.17,000,50.17
+2009-03-04,48.02,48.83,45.02,47.56,000,47.56
+2009-03-03,52.65,52.76,48.50,50.93,000,50.93
+2009-03-02,49.96,53.25,48.35,52.65,000,52.65
+2009-02-27,44.66,47.34,44.46,46.35,000,46.35
+2009-02-26,43.75,45.33,41.91,44.66,000,44.66
+2009-02-25,45.73,47.23,42.84,44.67,000,44.67
+2009-02-24,52.50,52.56,44.28,45.49,000,45.49
+2009-02-23,49.30,53.16,48.97,52.62,000,52.62
+2009-02-20,47.08,52.04,42.02,49.30,000,49.30
+2009-02-19,48.54,48.54,44.81,47.08,000,47.08
+2009-02-18,48.66,50.29,46.00,48.46,000,48.46
+2009-02-17,48.14,51.18,46.96,48.66,000,48.66
+2009-02-13,41.60,43.02,40.73,42.93,000,42.93
+2009-02-12,44.52,48.63,41.21,41.25,000,41.25
+2009-02-11,46.67,46.67,44.50,44.53,000,44.53
+2009-02-10,45.14,48.12,44.18,46.67,000,46.67
+2009-02-09,45.40,45.45,43.04,43.64,000,43.64
+2009-02-06,43.71,43.71,41.20,43.37,000,43.37
+2009-02-05,43.83,46.23,42.32,43.73,000,43.73
+2009-02-04,43.06,44.52,41.39,43.85,000,43.85
+2009-02-03,45.52,45.52,42.43,43.06,000,43.06
+2009-02-02,49.42,49.54,45.26,45.52,000,45.52
+2009-01-30,42.63,45.53,42.09,44.84,000,44.84
+2009-01-29,41.34,43.03,41.12,42.63,000,42.63
+2009-01-28,42.25,42.25,33.76,39.66,000,39.66
+2009-01-27,45.11,45.93,42.20,42.25,000,42.25
+2009-01-26,47.89,47.93,44.29,45.69,000,45.69
+2009-01-23,50.39,51.11,46.43,47.27,000,47.27
+2009-01-22,50.65,51.76,46.51,47.29,000,47.29
+2009-01-21,51.52,54.12,46.15,46.42,000,46.42
+2009-01-20,50.12,57.36,49.27,56.65,000,56.65
+2009-01-16,51.00,51.00,45.96,46.11,000,46.11
+2009-01-15,49.14,55.16,49.14,51.00,000,51.00
+2009-01-14,46.24,51.55,46.14,49.14,000,49.14
+2009-01-13,45.84,47.08,43.23,43.27,000,43.27
+2009-01-12,42.06,46.62,41.94,45.84,000,45.84
+2009-01-09,41.18,43.13,41.05,42.82,000,42.82
+2009-01-08,43.38,44.60,42.56,42.56,000,42.56
+2009-01-07,40.29,43.82,40.12,43.39,000,43.39
+2009-01-06,38.06,39.33,37.34,38.56,000,38.56
+2009-01-05,39.24,40.22,38.30,39.08,000,39.08
+2009-01-02,39.58,39.82,36.88,39.19,000,39.19
+2008-12-31,41.63,41.63,37.96,40.00,000,40.00
+2008-12-30,43.99,44.29,41.63,41.63,000,41.63
+2008-12-29,43.35,46.24,42.16,43.90,000,43.90
+2008-12-26,44.27,44.36,42.92,43.38,000,43.38
+2008-12-24,45.02,45.02,44.15,44.21,000,44.21
+2008-12-23,43.19,45.39,41.68,45.02,000,45.02
+2008-12-22,44.93,46.69,42.75,44.56,000,44.56
+2008-12-19,46.01,46.01,41.29,44.93,000,44.93
+2008-12-18,49.84,49.84,44.50,47.34,000,47.34
+2008-12-17,52.00,52.19,49.36,49.84,000,49.84
+2008-12-16,56.76,56.76,50.91,52.37,000,52.37
+2008-12-15,55.68,58.49,55.68,56.76,000,56.76
+2008-12-12,55.78,58.84,54.26,54.28,000,54.28
+2008-12-11,55.08,56.44,52.94,55.78,000,55.78
+2008-12-10,58.91,58.91,53.79,55.73,000,55.73
+2008-12-09,59.48,59.57,56.37,58.91,000,58.91
+2008-12-08,58.86,59.87,57.35,58.49,000,58.49
+2008-12-05,63.64,66.54,59.26,59.93,000,59.93
+2008-12-04,62.19,65.08,60.21,63.64,000,63.64
+2008-12-03,62.98,65.37,60.18,60.72,000,60.72
+2008-12-02,66.68,67.01,62.31,62.98,000,62.98
+2008-12-01,60.47,68.60,60.36,68.51,000,68.51
+2008-11-28,56.02,56.82,50.50,55.28,000,55.28
+2008-11-26,60.90,62.50,54.62,54.92,000,54.92
+2008-11-25,64.76,65.49,60.25,60.90,000,60.90
+2008-11-24,71.19,71.35,61.81,64.70,000,64.70
+2008-11-21,80.74,80.74,71.63,72.67,000,72.67
+2008-11-20,74.26,81.48,72.76,80.86,000,80.86
+2008-11-19,68.46,75.00,67.34,74.26,000,74.26
+2008-11-18,70.09,73.13,67.18,67.64,000,67.64
+2008-11-17,69.57,69.59,65.10,69.15,000,69.15
+2008-11-14,62.60,66.31,59.75,66.31,000,66.31
+2008-11-13,66.45,69.99,58.66,59.83,000,59.83
+2008-11-12,61.52,67.19,61.52,66.46,000,66.46
+2008-11-11,59.98,64.73,58.58,61.44,000,61.44
+2008-11-10,56.09,62.09,54.63,59.98,000,59.98
+2008-11-07,63.68,63.68,56.03,56.10,000,56.10
+2008-11-06,56.71,64.78,55.60,63.68,000,63.68
+2008-11-05,47.73,55.62,46.87,54.56,000,54.56
+2008-11-04,53.68,53.68,44.25,47.73,000,47.73
+2008-11-03,60.17,60.77,53.63,53.68,000,53.68
+2008-10-31,62.93,65.85,56.73,59.89,000,59.89
+2008-10-30,69.83,69.83,62.67,62.90,000,62.90
+2008-10-29,66.96,71.14,62.72,69.96,000,69.96
+2008-10-28,73.30,78.98,65.66,66.96,000,66.96
+2008-10-27,79.13,81.65,65.90,80.06,000,80.06
+2008-10-24,67.80,89.53,67.80,79.13,000,79.13
+2008-10-23,68.03,79.43,51.83,67.80,000,67.80
+2008-10-22,53.00,80.64,53.00,69.65,000,69.65
+2008-10-21,52.95,56.37,50.91,53.11,000,53.11
+2008-10-20,70.40,70.40,52.70,52.97,000,52.97
+2008-10-17,67.65,74.48,59.82,70.33,000,70.33
+2008-10-16,69.21,81.17,66.51,67.61,000,67.61
+2008-10-15,55.69,69.47,55.69,69.25,000,69.25
+2008-10-14,55.10,59.81,47.29,55.13,000,55.13
+2008-10-13,69.95,71.42,54.69,54.99,000,54.99
+2008-10-10,65.85,76.94,59.96,69.95,000,69.95
+2008-10-09,57.57,64.92,52.54,63.92,000,63.92
+2008-10-08,53.68,59.06,51.90,57.53,000,57.53
+2008-10-07,52.05,54.19,47.03,53.68,000,53.68
+2008-10-06,45.12,58.24,45.12,52.05,000,52.05
+2008-10-03,45.22,45.52,41.51,45.14,000,45.14
+2008-10-02,39.82,46.48,39.82,45.26,000,45.26
+2008-10-01,39.39,42.38,39.39,39.81,000,39.81
+2008-09-30,43.77,43.80,38.86,39.39,000,39.39
+2008-09-29,36.92,48.40,36.92,46.72,000,46.72
+2008-09-26,32.82,36.40,32.82,34.74,000,34.74
+2008-09-25,35.19,35.19,32.45,32.82,000,32.82
+2008-09-24,35.70,36.71,34.16,35.19,000,35.19
+2008-09-23,33.85,36.08,32.63,35.72,000,35.72
+2008-09-22,32.40,34.22,30.81,33.85,000,33.85
+2008-09-19,33.07,33.08,27.95,32.07,000,32.07
+2008-09-18,36.10,42.16,33.10,33.10,000,33.10
+2008-09-17,30.25,36.40,30.25,36.22,000,36.22
+2008-09-16,31.70,33.70,30.24,30.30,000,30.30
+2008-09-15,25.66,31.87,25.66,31.70,000,31.70
+2008-09-12,24.80,26.67,24.80,25.66,000,25.66
+2008-09-11,25.38,26.25,24.39,24.39,000,24.39
+2008-09-10,25.47,25.48,23.80,24.52,000,24.52
+2008-09-09,22.69,25.68,22.58,25.47,000,25.47
+2008-09-08,22.22,24.06,22.12,22.64,000,22.64
+2008-09-05,24.54,24.71,22.97,23.06,000,23.06
+2008-09-04,22.02,24.15,21.91,24.03,000,24.03
+2008-09-03,21.99,22.30,21.39,21.43,000,21.43
+2008-09-02,20.65,22.30,20.47,21.99,000,21.99
+2008-08-29,19.43,20.71,19.43,20.65,000,20.65
+2008-08-28,19.36,19.66,19.22,19.43,000,19.43
+2008-08-27,20.48,20.67,19.53,19.76,000,19.76
+2008-08-26,20.98,21.27,20.48,20.49,000,20.49
+2008-08-25,18.78,21.22,18.78,20.97,000,20.97
+2008-08-22,19.83,19.83,18.64,18.81,000,18.81
+2008-08-21,20.43,21.08,18.94,19.82,000,19.82
+2008-08-20,21.30,21.67,20.39,20.42,000,20.42
+2008-08-19,21.76,22.14,21.28,21.28,000,21.28
+2008-08-18,19.58,21.44,19.58,20.98,000,20.98
+2008-08-15,20.24,20.65,19.57,19.58,000,19.58
+2008-08-14,22.30,22.30,20.07,20.34,000,20.34
+2008-08-13,21.57,22.11,20.80,21.55,000,21.55
+2008-08-12,20.64,21.51,20.38,21.17,000,21.17
+2008-08-11,20.66,20.96,19.66,20.12,000,20.12
+2008-08-08,21.15,21.69,20.11,20.66,000,20.66
+2008-08-07,20.23,21.46,20.23,21.15,000,21.15
+2008-08-06,21.14,21.66,19.75,20.23,000,20.23
+2008-08-05,22.99,22.99,20.06,21.14,000,21.14
+2008-08-04,23.77,23.86,22.94,23.49,000,23.49
+2008-08-01,22.66,23.37,22.35,22.57,000,22.57
+2008-07-31,22.33,22.96,21.45,22.94,000,22.94
+2008-07-30,22.03,22.31,20.99,21.21,000,21.21
+2008-07-29,24.20,24.22,21.96,22.03,000,22.03
+2008-07-28,22.91,24.62,19.65,24.23,000,24.23
+2008-07-25,23.45,23.45,22.31,22.91,000,22.91
+2008-07-24,21.31,23.61,21.31,23.44,000,23.44
+2008-07-23,21.23,22.08,20.73,21.31,000,21.31
+2008-07-22,24.02,24.08,21.05,21.18,000,21.18
+2008-07-21,24.05,24.58,23.04,23.05,000,23.05
+2008-07-18,25.01,25.19,23.78,24.05,000,24.05
+2008-07-17,24.58,25.50,23.99,25.01,000,25.01
+2008-07-16,28.19,28.19,24.87,25.10,000,25.10
+2008-07-15,28.47,30.81,27.01,28.54,000,28.54
+2008-07-14,27.49,29.30,26.90,28.48,000,28.48
+2008-07-11,25.56,29.44,25.56,27.49,000,27.49
+2008-07-10,25.22,26.62,25.07,25.59,000,25.59
+2008-07-09,23.16,25.39,22.59,25.23,000,25.23
+2008-07-08,25.72,26.05,23.02,23.15,000,23.15
+2008-07-07,25.48,26.91,24.73,25.78,000,25.78
+2008-07-03,25.92,26.08,24.44,24.79,000,24.79
+2008-07-02,23.40,25.96,22.70,25.92,000,25.92
+2008-07-01,25.14,25.57,23.64,23.65,000,23.65
+2008-06-30,24.25,24.26,23.27,23.95,000,23.95
+2008-06-27,23.75,24.56,23.30,23.44,000,23.44
+2008-06-26,22.23,23.99,22.15,23.93,000,23.93
+2008-06-25,22.42,22.42,20.34,21.14,000,21.14
+2008-06-24,22.69,23.48,21.68,22.42,000,22.42
+2008-06-23,22.89,23.14,22.52,22.64,000,22.64
+2008-06-20,21.58,23.70,21.58,22.87,000,22.87
+2008-06-19,22.24,22.61,20.91,21.58,000,21.58
+2008-06-18,21.67,22.86,21.26,22.24,000,22.24
+2008-06-17,20.96,21.42,20.02,21.13,000,21.13
+2008-06-16,21.22,22.84,20.73,20.95,000,20.95
+2008-06-13,23.02,23.14,21.04,21.22,000,21.22
+2008-06-12,23.61,23.98,21.91,23.33,000,23.33
+2008-06-11,23.44,24.30,22.86,24.12,000,24.12
+2008-06-10,24.37,24.42,22.31,23.18,000,23.18
+2008-06-09,23.56,24.47,20.78,23.12,000,23.12
+2008-06-06,18.63,23.79,18.63,23.56,000,23.56
+2008-06-05,20.54,20.59,18.62,18.63,000,18.63
+2008-06-04,20.64,21.31,19.76,20.80,000,20.80
+2008-06-03,19.80,21.00,18.89,20.24,000,20.24
+2008-06-02,17.83,20.45,17.83,19.83,000,19.83
+2008-05-30,18.14,18.21,17.56,17.83,000,17.83
+2008-05-29,19.08,19.17,17.54,18.14,000,18.14
+2008-05-28,19.64,20.03,19.01,19.07,000,19.07
+2008-05-27,20.78,20.95,19.42,19.64,000,19.64
+2008-05-23,18.58,19.80,18.38,19.55,000,19.55
+2008-05-22,18.92,19.11,17.82,18.05,000,18.05
+2008-05-21,17.64,18.89,17.01,18.59,000,18.59
+2008-05-20,17.02,18.42,17.02,17.58,000,17.58
+2008-05-19,16.47,17.89,15.82,17.01,000,17.01
+2008-05-16,16.30,17.92,16.30,16.47,000,16.47
+2008-05-15,17.65,17.84,16.25,16.30,000,16.30
+2008-05-14,17.98,17.98,16.19,17.66,000,17.66
+2008-05-13,17.79,18.63,17.76,17.98,000,17.98
+2008-05-12,19.17,19.48,16.92,17.79,000,17.79
+2008-05-09,19.98,20.01,19.30,19.41,000,19.41
+2008-05-08,19.73,19.92,18.62,19.40,000,19.40
+2008-05-07,18.48,19.98,18.42,19.73,000,19.73
+2008-05-06,18.90,19.57,18.11,18.21,000,18.21
+2008-05-05,18.68,19.29,18.68,18.90,000,18.90
+2008-05-02,18.87,19.11,17.97,18.18,000,18.18
+2008-05-01,20.78,20.83,18.87,18.88,000,18.88
+2008-04-30,20.24,20.81,19.69,20.79,000,20.79
+2008-04-29,19.86,20.54,19.63,20.24,000,20.24
+2008-04-28,20.14,20.25,19.37,19.64,000,19.64
+2008-04-25,19.60,20.36,19.28,19.59,000,19.59
+2008-04-24,20.26,20.77,19.21,20.06,000,20.06
+2008-04-23,20.63,20.95,19.88,20.26,000,20.26
+2008-04-22,20.47,21.60,20.47,20.87,000,20.87
+2008-04-21,20.15,21.12,20.15,20.50,000,20.50
+2008-04-18,20.37,20.37,19.21,20.13,000,20.13
+2008-04-17,21.13,21.54,20.35,20.37,000,20.37
+2008-04-16,22.03,22.09,20.50,20.53,000,20.53
+2008-04-15,23.84,23.99,22.72,22.78,000,22.78
+2008-04-14,23.46,24.35,23.46,23.82,000,23.82
+2008-04-11,23.03,23.59,22.65,23.46,000,23.46
+2008-04-10,22.80,23.22,21.63,21.98,000,21.98
+2008-04-09,22.36,23.57,22.36,22.81,000,22.81
+2008-04-08,22.42,23.16,22.36,22.36,000,22.36
+2008-04-07,22.45,22.73,21.21,22.42,000,22.42
+2008-04-04,23.00,23.31,21.75,22.45,000,22.45
+2008-04-03,23.84,24.15,23.00,23.21,000,23.21
+2008-04-02,22.64,23.65,22.39,23.43,000,23.43
+2008-04-01,25.61,25.61,22.52,22.68,000,22.68
+2008-03-31,25.71,26.77,25.35,25.61,000,25.61
+2008-03-28,25.81,25.96,25.04,25.71,000,25.71
+2008-03-27,25.55,25.98,24.91,25.88,000,25.88
+2008-03-26,25.75,26.85,25.51,26.08,000,26.08
+2008-03-25,25.75,26.42,25.17,25.72,000,25.72
+2008-03-24,26.64,27.04,24.75,25.73,000,25.73
+2008-03-20,29.84,29.84,25.80,26.62,000,26.62
+2008-03-19,25.78,29.95,25.16,29.84,000,29.84
+2008-03-18,32.24,32.24,25.58,25.79,000,25.79
+2008-03-17,35.14,35.60,31.10,32.24,000,32.24
+2008-03-14,27.31,32.89,26.02,31.16,000,31.16
+2008-03-13,27.22,29.62,25.65,27.29,000,27.29
+2008-03-12,26.39,27.25,24.90,27.22,000,27.22
+2008-03-11,27.25,28.64,26.35,26.36,000,26.36
+2008-03-10,28.13,29.73,27.92,29.38,000,29.38
+2008-03-07,28.52,29.29,26.48,27.49,000,27.49
+2008-03-06,25.45,27.90,25.04,27.55,000,27.55
+2008-03-05,25.52,25.77,23.30,24.60,000,24.60
+2008-03-04,27.19,27.42,25.51,25.52,000,25.52
+2008-03-03,27.54,28.13,26.27,26.28,000,26.28
+2008-02-29,23.54,26.91,23.54,26.54,000,26.54
+2008-02-28,22.69,23.79,22.69,23.53,000,23.53
+2008-02-27,21.90,23.01,21.83,22.69,000,22.69
+2008-02-26,23.44,23.45,21.64,21.90,000,21.90
+2008-02-25,24.06,25.07,22.69,23.03,000,23.03
+2008-02-22,24.99,25.93,23.62,24.06,000,24.06
+2008-02-21,24.42,25.45,23.74,25.12,000,25.12
+2008-02-20,25.60,26.95,24.21,24.40,000,24.40
+2008-02-19,25.39,26.59,24.73,25.59,000,25.59
+2008-02-15,25.58,25.67,24.45,25.02,000,25.02
+2008-02-14,24.64,25.64,23.98,25.54,000,25.54
+2008-02-13,25.67,26.06,24.57,24.88,000,24.88
+2008-02-12,26.56,27.17,25.25,26.33,000,26.33
+2008-02-11,29.14,29.57,27.32,27.60,000,27.60
+2008-02-08,27.98,28.89,27.22,28.01,000,28.01
+2008-02-07,29.51,29.70,26.78,27.66,000,27.66
+2008-02-06,27.75,29.31,27.04,28.97,000,28.97
+2008-02-05,27.20,28.49,27.20,28.24,000,28.24
+2008-02-04,25.09,26.03,24.85,25.99,000,25.99
+2008-02-01,25.66,25.75,24.02,24.02,000,24.02
+2008-01-31,28.78,28.81,25.45,26.20,000,26.20
+2008-01-30,27.53,28.34,24.74,27.62,000,27.62
+2008-01-29,26.61,27.96,26.55,27.32,000,27.32
+2008-01-28,29.67,30.26,27.57,27.78,000,27.78
+2008-01-25,26.19,29.76,25.93,29.08,000,29.08
+2008-01-24,28.07,28.48,27.03,27.78,000,27.78
+2008-01-23,33.84,34.42,22.82,29.02,000,29.02
+2008-01-22,35.12,37.57,29.71,31.01,000,31.01
+2008-01-18,27.55,29.30,26.27,27.18,000,27.18
+2008-01-17,24.11,28.51,23.87,28.46,000,28.46
+2008-01-16,23.90,24.38,22.85,24.38,000,24.38
+2008-01-15,24.10,24.59,22.97,23.34,000,23.34
+2008-01-14,23.76,23.93,22.65,22.90,000,22.90
+2008-01-11,24.04,24.41,23.22,23.68,000,23.68
+2008-01-10,24.56,24.61,22.62,23.45,000,23.45
+2008-01-09,25.61,25.95,23.90,24.12,000,24.12
+2008-01-08,23.27,25.60,22.63,25.43,000,25.43
+2008-01-07,24.62,24.88,23.30,23.79,000,23.79
+2008-01-04,23.50,24.30,23.25,23.94,000,23.94
+2008-01-03,23.11,23.27,22.11,22.49,000,22.49
+2008-01-02,22.58,24.05,22.40,23.17,000,23.17
+2007-12-31,21.87,22.75,21.79,22.50,000,22.50
+2007-12-28,19.59,21.05,19.44,20.74,000,20.74
+2007-12-27,19.15,20.51,19.15,20.26,000,20.26
+2007-12-26,19.37,19.47,18.60,18.66,000,18.66
+2007-12-24,19.08,19.42,18.48,18.60,000,18.60
+2007-12-21,19.82,19.82,18.28,18.47,000,18.47
+2007-12-20,21.02,21.67,20.58,20.58,000,20.58
+2007-12-19,22.62,22.68,21.30,21.68,000,21.68
+2007-12-18,23.70,24.60,22.41,22.64,000,22.64
+2007-12-17,24.13,24.86,23.42,24.52,000,24.52
+2007-12-14,23.53,23.53,22.26,23.27,000,23.27
+2007-12-13,23.53,24.04,22.41,22.56,000,22.56
+2007-12-12,20.82,24.22,20.49,22.47,000,22.47
+2007-12-11,20.69,23.70,19.77,23.59,000,23.59
+2007-12-10,21.16,21.46,20.36,20.74,000,20.74
+2007-12-07,20.69,21.01,20.29,20.85,000,20.85
+2007-12-06,22.68,22.75,19.65,20.96,000,20.96
+2007-12-05,22.72,23.03,21.87,22.53,000,22.53
+2007-12-04,24.30,24.59,23.32,23.79,000,23.79
+2007-12-03,23.59,24.49,23.40,23.61,000,23.61
+2007-11-30,22.67,23.39,22.00,22.87,000,22.87
+2007-11-29,24.59,24.61,23.35,23.97,000,23.97
+2007-11-28,25.14,25.14,23.55,24.11,000,24.11
+2007-11-27,28.14,28.24,26.23,26.28,000,26.28
+2007-11-26,26.46,28.95,25.84,28.91,000,28.91
+2007-11-23,26.42,26.42,25.35,25.96,000,25.96
+2007-11-21,26.30,27.77,24.55,26.84,000,26.84
+2007-11-20,26.12,27.35,23.62,24.88,000,24.88
+2007-11-19,26.74,27.18,25.74,26.01,000,26.01
+2007-11-16,27.04,28.12,25.12,25.49,000,25.49
+2007-11-15,26.96,29.31,25.98,28.06,000,28.06
+2007-11-14,23.35,27.03,23.07,25.94,000,25.94
+2007-11-13,27.47,27.50,23.82,24.10,000,24.10
+2007-11-12,30.57,31.09,24.47,31.09,000,31.09
+2007-11-09,27.96,28.84,26.21,28.50,000,28.50
+2007-11-08,26.45,29.15,25.32,26.16,000,26.16
+2007-11-07,23.15,26.85,22.75,26.49,000,26.49
+2007-11-06,23.50,23.74,21.24,21.39,000,21.39
+2007-11-05,25.25,25.46,23.61,24.31,000,24.31
+2007-11-02,22.56,25.17,22.56,23.01,000,23.01
+2007-11-01,19.89,24.15,17.38,23.21,000,23.21
+2007-10-31,20.53,22.09,18.30,18.53,000,18.53
+2007-10-30,20.46,21.15,20.31,21.07,000,21.07
+2007-10-29,19.93,20.24,16.84,19.87,000,19.87
+2007-10-26,19.84,20.97,19.48,19.56,000,19.56
+2007-10-25,20.84,22.40,20.04,21.17,000,21.17
+2007-10-24,21.16,24.15,20.59,20.80,000,20.80
+2007-10-23,21.29,21.43,20.13,20.41,000,20.41
+2007-10-22,23.89,23.94,21.38,21.64,000,21.64
+2007-10-19,19.15,22.96,19.02,22.96,000,22.96
+2007-10-18,19.16,19.56,17.73,18.50,000,18.50
+2007-10-17,18.76,20.11,18.28,18.54,000,18.54
+2007-10-16,20.07,20.75,19.73,20.02,000,20.02
+2007-10-15,18.14,20.01,17.95,19.25,000,19.25
+2007-10-12,18.68,18.74,17.49,17.73,000,17.73
+2007-10-11,16.15,19.73,16.08,18.88,000,18.88
+2007-10-10,16.42,17.35,16.39,16.67,000,16.67
+2007-10-09,17.15,17.28,16.09,16.12,000,16.12
+2007-10-08,17.73,17.83,17.32,17.46,000,17.46
+2007-10-05,17.55,17.56,16.44,16.91,000,16.91
+2007-10-04,18.65,18.65,18.26,18.44,000,18.44
+2007-10-03,18.88,18.99,18.31,18.80,000,18.80
+2007-10-02,17.67,18.89,17.60,18.49,000,18.49
+2007-10-01,18.44,18.44,17.11,17.84,000,17.84
+2007-09-28,17.23,18.22,16.91,18.00,000,18.00
+2007-09-27,17.12,17.47,16.95,17.00,000,17.00
+2007-09-26,17.92,18.18,17.30,17.63,000,17.63
+2007-09-25,20.25,20.46,18.44,18.60,000,18.60
+2007-09-24,19.04,19.62,18.32,19.37,000,19.37
+2007-09-21,19.44,19.81,18.37,19.00,000,19.00
+2007-09-20,20.47,20.82,19.55,20.45,000,20.45
+2007-09-19,19.96,20.57,19.17,20.03,000,20.03
+2007-09-18,25.79,26.23,20.27,20.35,000,20.35
+2007-09-17,26.45,27.08,25.80,26.48,000,26.48
+2007-09-14,26.38,26.48,24.68,24.92,000,24.92
+2007-09-13,25.01,25.32,23.83,24.76,000,24.76
+2007-09-12,25.97,26.21,24.57,24.96,000,24.96
+2007-09-11,27.11,27.21,25.19,25.27,000,25.27
+2007-09-10,26.91,28.82,26.56,27.38,000,27.38
+2007-09-07,25.98,26.97,25.60,26.23,000,26.23
+2007-09-06,24.43,25.14,23.66,23.99,000,23.99
+2007-09-05,24.03,25.45,23.80,24.58,000,24.58
+2007-09-04,21.93,24.81,21.71,22.78,000,22.78
+2007-08-31,23.53,24.07,22.47,23.38,000,23.38
+2007-08-30,25.40,25.58,23.69,25.06,000,25.06
+2007-08-29,25.87,26.02,23.44,23.81,000,23.81
+2007-08-28,23.87,26.57,23.72,26.30,000,26.30
+2007-08-27,22.24,22.83,21.96,22.72,000,22.72
+2007-08-24,22.75,23.03,20.44,20.72,000,20.72
+2007-08-23,22.47,23.61,22.05,22.62,000,22.62
+2007-08-22,24.33,24.44,22.87,22.89,000,22.89
+2007-08-21,26.39,26.72,24.77,25.25,000,25.25
+2007-08-20,29.87,29.95,25.80,26.33,000,26.33
+2007-08-17,25.25,31.46,25.23,29.99,000,29.99
+2007-08-16,32.68,37.50,30.44,30.83,000,30.83
+2007-08-15,28.22,31.76,26.16,30.67,000,30.67
+2007-08-14,25.56,28.29,25.31,27.68,000,27.68
+2007-08-13,28.02,28.02,25.48,26.57,000,26.57
+2007-08-10,28.04,29.84,26.91,28.30,000,28.30
+2007-08-09,24.46,26.90,23.84,26.48,000,26.48
+2007-08-08,20.97,22.95,19.33,21.45,000,21.45
+2007-08-07,23.33,23.74,21.37,21.56,000,21.56
+2007-08-06,25.32,26.47,22.44,22.60,000,22.60
+2007-08-03,21.52,25.55,21.09,25.16,000,25.16
+2007-08-02,22.94,23.00,21.20,21.22,000,21.22
+2007-08-01,23.71,26.22,23.26,23.67,000,23.67
+2007-07-31,20.08,23.93,19.68,23.52,000,23.52
+2007-07-30,23.64,23.64,20.86,20.87,000,20.87
+2007-07-27,20.34,24.17,19.60,24.17,000,24.17
+2007-07-26,19.41,23.36,19.30,20.74,000,20.74
+2007-07-25,17.77,19.46,17.38,18.10,000,18.10
+2007-07-24,17.63,19.09,17.48,18.55,000,18.55
+2007-07-23,16.62,17.09,16.39,16.81,000,16.81
+2007-07-20,15.39,18.53,15.36,16.95,000,16.95
+2007-07-19,15.43,15.62,15.06,15.23,000,15.23
+2007-07-18,16.38,17.06,15.95,16.00,000,16.00
+2007-07-17,15.58,15.78,15.31,15.63,000,15.63
+2007-07-16,15.57,15.83,15.27,15.59,000,15.59
+2007-07-13,15.39,15.51,14.79,15.15,000,15.15
+2007-07-12,16.39,16.39,14.93,15.54,000,15.54
+2007-07-11,17.69,17.91,16.64,16.64,000,16.64
+2007-07-10,15.88,17.68,15.83,17.57,000,17.57
+2007-07-09,15.34,15.69,15.03,15.16,000,15.16
+2007-07-06,15.36,15.59,14.67,14.72,000,14.72
+2007-07-05,15.37,15.95,15.17,15.48,000,15.48
+2007-07-03,15.29,15.40,14.85,15.29,000,15.29
+2007-07-02,16.48,16.48,15.31,15.40,000,15.40
+2007-06-29,15.25,17.13,14.62,16.23,000,16.23
+2007-06-28,15.70,15.71,14.98,15.54,000,15.54
+2007-06-27,18.87,18.98,15.44,15.53,000,15.53
+2007-06-26,16.46,18.89,16.21,18.89,000,18.89
+2007-06-25,16.50,17.24,15.41,16.65,000,16.65
+2007-06-22,14.45,16.58,14.31,15.75,000,15.75
+2007-06-21,14.80,15.56,14.17,14.21,000,14.21
+2007-06-20,12.77,14.76,12.75,14.67,000,14.67
+2007-06-19,13.78,13.80,12.79,12.85,000,12.85
+2007-06-18,14.42,14.51,13.35,13.42,000,13.42
+2007-06-15,13.01,13.97,12.58,13.94,000,13.94
+2007-06-14,14.76,14.82,13.59,13.64,000,13.64
+2007-06-13,16.05,16.10,14.67,14.73,000,14.73
+2007-06-12,15.46,16.70,14.77,16.67,000,16.67
+2007-06-11,15.31,15.47,14.24,14.71,000,14.71
+2007-06-08,16.75,17.06,14.73,14.84,000,14.84
+2007-06-07,15.08,17.09,14.89,17.06,000,17.06
+2007-06-06,14.07,15.06,13.63,14.87,000,14.87
+2007-06-05,13.58,14.17,13.29,13.63,000,13.63
+2007-06-04,13.47,13.54,12.78,13.29,000,13.29
+2007-06-01,12.77,13.01,12.43,12.78,000,12.78
+2007-05-31,12.78,13.18,12.62,13.05,000,13.05
+2007-05-30,14.18,14.29,12.82,12.83,000,12.83
+2007-05-29,13.86,13.95,13.31,13.53,000,13.53
+2007-05-25,13.81,13.87,13.23,13.34,000,13.34
+2007-05-24,13.15,14.36,12.92,14.08,000,14.08
+2007-05-23,12.77,13.28,12.55,13.24,000,13.24
+2007-05-22,13.29,13.38,12.70,13.02,000,13.02
+2007-05-21,13.24,13.30,12.70,13.30,000,13.30
+2007-05-18,13.01,13.22,12.69,12.76,000,12.76
+2007-05-17,13.62,13.82,13.25,13.51,000,13.51
+2007-05-16,14.02,14.18,13.47,13.50,000,13.50
+2007-05-15,13.88,14.30,13.27,14.01,000,14.01
+2007-05-14,13.26,14.43,13.01,13.96,000,13.96
+2007-05-11,13.47,13.47,12.63,12.95,000,12.95
+2007-05-10,13.31,13.85,12.88,13.60,000,13.60
+2007-05-09,13.43,13.50,12.54,12.88,000,12.88
+2007-05-08,13.48,13.69,13.15,13.21,000,13.21
+2007-05-07,13.34,13.37,12.91,13.15,000,13.15
+2007-05-04,12.91,13.36,12.59,12.91,000,12.91
+2007-05-03,13.01,13.36,12.89,13.09,000,13.09
+2007-05-02,13.52,13.52,12.55,13.08,000,13.08
+2007-05-01,14.10,14.60,13.48,13.51,000,13.51
+2007-04-30,12.90,14.31,12.45,14.22,000,14.22
+2007-04-27,13.12,13.26,12.41,12.45,000,12.45
+2007-04-26,13.16,13.67,12.67,12.79,000,12.79
+2007-04-25,12.74,13.23,12.58,13.21,000,13.21
+2007-04-24,13.12,13.89,13.04,13.12,000,13.12
+2007-04-23,12.60,13.08,12.07,13.04,000,13.04
+2007-04-20,12.03,12.67,11.97,12.07,000,12.07
+2007-04-19,13.16,13.27,12.41,12.54,000,12.54
+2007-04-18,12.48,12.57,11.95,12.42,000,12.42
+2007-04-17,11.70,12.17,11.50,12.14,000,12.14
+2007-04-16,11.86,12.10,11.46,11.98,000,11.98
+2007-04-13,12.67,13.00,12.13,12.20,000,12.20
+2007-04-12,13.65,14.15,12.58,12.71,000,12.71
+2007-04-11,12.72,14.08,12.68,13.49,000,13.49
+2007-04-10,13.33,13.33,12.56,12.68,000,12.68
+2007-04-09,13.26,13.56,12.89,13.14,000,13.14
+2007-04-05,13.57,13.66,12.69,13.23,000,13.23
+2007-04-04,13.82,13.91,13.20,13.24,000,13.24
+2007-04-03,14.02,14.53,12.81,13.46,000,13.46
+2007-04-02,14.91,15.46,14.40,14.53,000,14.53
+2007-03-30,15.14,15.82,14.14,14.64,000,14.64
+2007-03-29,14.98,16.05,14.34,15.14,1988300,15.14
+2007-03-28,14.28,15.51,14.22,14.98,000,14.98
+2007-03-27,13.56,13.90,13.40,13.48,000,13.48
+2007-03-26,13.39,14.70,12.91,13.11,000,13.11
+2007-03-23,13.13,13.18,12.46,12.95,000,12.95
+2007-03-22,12.29,12.95,12.04,12.93,000,12.93
+2007-03-21,13.27,13.67,11.21,12.19,000,12.19
+2007-03-20,15.01,15.16,13.25,13.27,000,13.27
+2007-03-19,15.82,15.82,14.58,14.59,000,14.59
+2007-03-16,15.38,17.71,15.29,16.79,000,16.79
+2007-03-15,16.91,16.91,15.27,16.43,000,16.43
+2007-03-14,17.63,21.25,16.75,17.27,000,17.27
+2007-03-13,14.87,18.42,14.60,18.13,000,18.13
+2007-03-12,14.96,14.96,13.76,13.99,000,13.99
+2007-03-09,13.70,14.62,13.67,14.09,000,14.09
+2007-03-08,14.34,14.70,13.48,14.29,000,14.29
+2007-03-07,16.25,16.27,14.52,15.24,000,15.24
+2007-03-06,18.31,18.34,15.76,15.96,000,15.96
+2007-03-05,20.40,20.41,18.13,19.63,000,19.63
+2007-03-02,16.70,18.63,16.04,18.61,000,18.61
+2007-03-01,17.76,19.40,15.36,15.82,000,15.82
+2007-02-28,17.21,17.29,14.50,15.42,000,15.42
+2007-02-27,12.12,19.01,12.10,18.31,000,18.31
+2007-02-26,10.59,11.44,10.52,11.15,000,11.15
+2007-02-23,10.41,10.70,10.36,10.58,000,10.58
+2007-02-22,10.23,10.52,10.01,10.18,000,10.18
+2007-02-21,10.48,10.53,10.17,10.20,000,10.20
+2007-02-20,10.62,10.72,10.14,10.24,000,10.24
+2007-02-16,10.42,10.44,9.98,10.02,000,10.02
+2007-02-15,10.28,10.32,10.05,10.22,000,10.22
+2007-02-14,10.19,10.26,9.70,10.23,000,10.23
+2007-02-13,11.42,11.42,10.33,10.34,000,10.34
+2007-02-12,11.33,11.88,11.30,11.61,000,11.61
+2007-02-09,10.42,11.56,10.25,11.10,000,11.10
+2007-02-08,10.49,10.91,10.40,10.44,000,10.44
+2007-02-07,10.31,10.56,10.24,10.32,000,10.32
+2007-02-06,10.55,10.88,10.44,10.65,000,10.65
+2007-02-05,10.53,10.70,10.44,10.55,000,10.55
+2007-02-02,10.30,10.36,9.96,10.08,000,10.08
+2007-02-01,10.32,10.43,10.14,10.31,000,10.31
+2007-01-31,11.09,11.26,10.27,10.42,000,10.42
+2007-01-30,11.28,11.49,10.95,10.96,000,10.96
+2007-01-29,11.50,11.60,10.92,11.45,000,11.45
+2007-01-26,10.95,11.60,10.92,11.13,000,11.13
+2007-01-25,9.99,11.38,9.95,11.22,000,11.22
+2007-01-24,10.41,10.41,9.87,9.89,000,9.89
+2007-01-23,10.77,10.94,10.22,10.34,000,10.34
+2007-01-22,10.77,11.08,10.62,10.77,000,10.77
+2007-01-19,10.80,11.03,10.24,10.40,000,10.40
+2007-01-18,10.65,11.04,10.45,10.85,000,10.85
+2007-01-17,10.90,10.90,10.35,10.59,000,10.59
+2007-01-16,10.64,10.89,10.40,10.74,000,10.74
+2007-01-12,10.93,10.93,10.14,10.15,000,10.15
+2007-01-11,11.42,11.48,10.50,10.87,000,10.87
+2007-01-10,12.34,12.50,11.43,11.47,000,11.47
+2007-01-09,11.86,12.47,11.69,11.91,000,11.91
+2007-01-08,12.48,12.83,11.78,12.00,000,12.00
+2007-01-05,11.84,12.25,11.68,12.14,000,12.14
+2007-01-04,12.40,12.42,11.28,11.51,000,11.51
+2007-01-03,12.16,12.75,11.53,12.04,000,12.04
+2006-12-29,10.95,11.65,10.71,11.56,000,11.56
+2006-12-28,10.84,11.06,10.73,10.99,000,10.99
+2006-12-27,11.12,11.12,10.59,10.64,000,10.64
+2006-12-26,12.03,12.03,11.24,11.26,000,11.26
+2006-12-22,10.59,11.46,10.59,11.36,000,11.36
+2006-12-21,10.36,10.89,10.13,10.53,000,10.53
+2006-12-20,10.30,10.33,10.03,10.26,000,10.26
+2006-12-19,11.06,11.31,10.27,10.30,000,10.30
+2006-12-18,10.64,10.91,10.46,10.60,000,10.60
+2006-12-15,9.68,10.07,9.39,10.05,000,10.05
+2006-12-14,10.74,10.75,9.64,9.97,000,9.97
+2006-12-13,10.45,10.58,10.15,10.18,000,10.18
+2006-12-12,11.20,11.39,10.35,10.65,000,10.65
+2006-12-11,11.88,11.93,10.71,10.71,000,10.71
+2006-12-08,12.58,12.67,11.91,12.08,000,12.08
+2006-12-07,11.35,12.68,11.17,12.67,000,12.67
+2006-12-06,11.39,11.55,11.19,11.33,000,11.33
+2006-12-05,11.13,11.59,10.85,11.27,000,11.27
+2006-12-04,12.01,12.01,10.98,11.23,000,11.23
+2006-12-01,11.07,12.28,10.96,11.66,000,11.66
+2006-11-30,10.88,11.30,10.58,10.91,000,10.91
+2006-11-29,11.41,11.43,10.67,10.83,000,10.83
+2006-11-28,12.48,12.55,11.56,11.62,000,11.62
+2006-11-27,11.26,12.33,11.14,12.30,000,12.30
+2006-11-24,10.81,10.86,10.56,10.73,000,10.73
+2006-11-22,10.02,10.15,9.81,10.14,000,10.14
+2006-11-21,10.05,10.06,9.84,9.90,000,9.90
+2006-11-20,10.42,10.48,9.91,9.97,000,9.97
+2006-11-17,10.37,10.48,10.05,10.05,000,10.05
+2006-11-16,10.13,10.35,10.04,10.16,000,10.16
+2006-11-15,10.47,10.61,10.13,10.31,000,10.31
+2006-11-14,10.89,11.31,10.14,10.50,000,10.50
+2006-11-13,11.19,11.26,10.69,10.86,000,10.86
+2006-11-10,11.01,11.12,10.77,10.79,000,10.79
+2006-11-09,10.65,11.07,10.57,11.01,000,11.01
+2006-11-08,11.41,11.49,10.70,10.75,000,10.75
+2006-11-07,11.06,11.19,10.87,11.09,000,11.09
+2006-11-06,11.39,11.41,10.99,11.16,000,11.16
+2006-11-03,11.16,11.43,10.34,11.16,000,11.16
+2006-11-02,11.61,11.76,11.41,11.42,000,11.42
+2006-11-01,10.93,11.68,10.89,11.51,000,11.51
+2006-10-31,11.10,11.39,10.99,11.10,000,11.10
+2006-10-30,11.36,11.43,10.92,11.20,000,11.20
+2006-10-27,10.66,10.99,10.53,10.80,000,10.80
+2006-10-26,10.56,10.96,10.47,10.56,000,10.56
+2006-10-25,10.88,10.88,10.60,10.66,000,10.66
+2006-10-24,11.25,11.27,10.78,10.78,000,10.78
+2006-10-23,11.15,11.25,10.62,11.08,000,11.08
+2006-10-20,11.06,11.23,10.44,10.63,000,10.63
+2006-10-19,11.51,11.57,10.78,10.90,000,10.90
+2006-10-18,11.44,11.83,11.33,11.34,000,11.34
+2006-10-17,11.36,12.03,11.35,11.75,000,11.75
+2006-10-16,11.07,11.20,10.91,11.09,000,11.09
+2006-10-13,11.17,11.35,10.75,10.75,000,10.75
+2006-10-12,11.50,11.51,11.09,11.09,000,11.09
+2006-10-11,11.75,12.03,11.31,11.62,000,11.62
+2006-10-10,11.77,11.89,11.47,11.52,000,11.52
+2006-10-09,12.07,12.09,11.58,11.68,000,11.68
+2006-10-06,11.99,12.17,11.55,11.56,000,11.56
+2006-10-05,11.94,12.06,11.65,11.98,000,11.98
+2006-10-04,12.64,12.64,11.62,11.86,000,11.86
+2006-10-03,12.68,12.91,11.97,12.24,000,12.24
+2006-10-02,12.45,12.72,12.11,12.57,000,12.57
+2006-09-29,11.75,12.10,11.72,11.98,000,11.98
+2006-09-28,11.64,12.06,11.59,11.72,000,11.72
+2006-09-27,11.65,11.90,11.42,11.58,000,11.58
+2006-09-26,12.23,12.23,11.51,11.53,000,11.53
+2006-09-25,12.97,13.41,11.93,12.12,000,12.12
+2006-09-22,12.47,13.28,12.47,12.59,000,12.59
+2006-09-21,11.43,12.60,11.28,12.25,000,12.25
+2006-09-20,11.75,11.75,11.34,11.39,000,11.39
+2006-09-19,11.96,12.69,11.86,11.98,000,11.98
+2006-09-18,12.28,12.41,11.58,11.78,000,11.78
+2006-09-15,11.49,12.54,11.40,11.76,000,11.76
+2006-09-14,11.36,12.02,10.74,11.55,000,11.55
+2006-09-13,11.40,11.56,10.99,11.18,000,11.18
+2006-09-12,13.04,13.14,11.55,11.92,000,11.92
+2006-09-11,13.95,13.95,12.75,12.99,000,12.99
+2006-09-08,13.79,13.80,13.05,13.16,000,13.16
+2006-09-07,14.07,14.49,13.67,13.88,000,13.88
+2006-09-06,13.06,13.88,13.06,13.74,000,13.74
+2006-09-05,12.80,12.86,12.43,12.63,000,12.63
+2006-09-01,12.14,12.33,11.91,11.96,000,11.96
+2006-08-31,12.23,12.33,12.07,12.31,000,12.31
+2006-08-30,12.14,12.35,12.10,12.22,000,12.22
+2006-08-29,12.27,12.83,12.21,12.28,000,12.28
+2006-08-28,12.92,12.92,12.07,12.18,000,12.18
+2006-08-25,12.41,12.47,12.08,12.31,000,12.31
+2006-08-24,12.24,12.58,12.21,12.40,000,12.40
+2006-08-23,12.26,12.73,12.16,12.40,000,12.40
+2006-08-22,12.42,12.42,11.93,12.19,000,12.19
+2006-08-21,12.40,12.62,12.21,12.22,000,12.22
+2006-08-18,12.11,12.52,11.57,11.64,000,11.64
+2006-08-17,12.69,12.72,12.21,12.24,000,12.24
+2006-08-16,12.69,12.95,12.11,12.41,000,12.41
+2006-08-15,13.57,13.72,13.15,13.42,000,13.42
+2006-08-14,14.15,14.43,13.41,14.26,000,14.26
+2006-08-11,14.72,14.85,14.30,14.30,000,14.30
+2006-08-10,15.56,15.73,14.45,14.46,000,14.46
+2006-08-09,14.76,15.41,14.07,15.20,000,15.20
+2006-08-08,15.20,15.55,14.86,15.23,000,15.23
+2006-08-07,14.98,15.53,14.97,15.23,000,15.23
+2006-08-04,14.03,14.91,13.65,14.34,000,14.34
+2006-08-03,15.10,15.19,14.20,14.46,000,14.46
+2006-08-02,14.93,14.93,13.92,14.34,000,14.34
+2006-08-01,15.49,16.15,15.03,15.05,000,15.05
+2006-07-31,15.01,15.13,14.86,14.95,000,14.95
+2006-07-28,14.73,14.75,14.06,14.33,000,14.33
+2006-07-27,14.26,15.39,14.07,14.94,000,14.94
+2006-07-26,15.04,15.21,14.09,14.62,000,14.62
+2006-07-25,15.44,15.68,14.31,14.85,000,14.85
+2006-07-24,17.08,17.08,14.89,14.98,000,14.98
+2006-07-21,16.23,17.56,16.23,17.40,000,17.40
+2006-07-20,15.10,16.37,14.87,16.21,000,16.21
+2006-07-19,17.62,17.62,14.47,15.55,000,15.55
+2006-07-18,18.20,19.58,17.66,17.74,000,17.74
+2006-07-17,18.73,18.76,17.75,18.64,000,18.64
+2006-07-14,17.57,18.79,17.28,18.05,000,18.05
+2006-07-13,15.17,17.83,15.17,17.79,000,17.79
+2006-07-12,13.39,14.85,13.26,14.49,000,14.49
+2006-07-11,14.31,14.68,13.10,13.14,000,13.14
+2006-07-10,14.17,14.50,13.67,14.02,000,14.02
+2006-07-07,13.90,14.45,13.43,13.97,000,13.97
+2006-07-06,14.04,14.04,13.25,13.65,000,13.65
+2006-07-05,13.92,14.77,13.86,14.15,000,14.15
+2006-07-03,13.29,13.51,12.77,13.05,000,13.05
+2006-06-30,12.90,13.47,12.74,13.08,000,13.08
+2006-06-29,15.28,15.30,12.93,13.03,000,13.03
+2006-06-28,16.02,17.00,15.78,15.79,000,15.79
+2006-06-27,15.58,16.55,15.27,16.40,000,16.40
+2006-06-26,16.55,16.61,15.49,15.62,000,15.62
+2006-06-23,16.41,16.58,14.94,15.89,000,15.89
+2006-06-22,15.95,16.66,15.56,15.88,000,15.88
+2006-06-21,16.67,16.72,14.88,15.52,000,15.52
+2006-06-20,17.52,17.65,16.39,16.69,000,16.69
+2006-06-19,16.06,18.10,15.73,17.83,000,17.83
+2006-06-16,16.56,18.13,16.52,17.25,000,17.25
+2006-06-15,21.05,21.14,15.65,15.90,000,15.90
+2006-06-14,23.45,23.49,21.45,21.46,000,21.46
+2006-06-13,20.95,23.81,20.27,23.81,000,23.81
+2006-06-12,18.13,21.25,17.89,20.96,000,20.96
+2006-06-09,17.90,18.45,17.07,18.12,000,18.12
+2006-06-08,17.92,20.75,17.88,18.35,000,18.35
+2006-06-07,17.21,17.86,16.07,17.80,000,17.80
+2006-06-06,16.72,18.56,16.65,17.34,000,17.34
+2006-06-05,14.97,17.14,14.97,16.65,000,16.65
+2006-06-02,14.17,14.97,13.92,14.32,000,14.32
+2006-06-01,16.47,16.56,14.48,14.52,000,14.52
+2006-05-31,18.09,18.09,16.41,16.44,000,16.44
+2006-05-30,15.39,18.72,15.39,18.66,000,18.66
+2006-05-26,14.92,15.04,14.26,14.26,000,14.26
+2006-05-25,16.67,16.67,15.31,15.50,000,15.50
+2006-05-24,17.87,19.87,17.13,17.36,000,17.36
+2006-05-23,16.70,18.26,15.36,18.26,000,18.26
+2006-05-22,18.55,19.62,16.73,17.72,000,17.72
+2006-05-19,16.16,18.01,15.90,17.18,000,17.18
+2006-05-18,15.54,17.09,14.96,16.99,000,16.99
+2006-05-17,13.83,16.26,13.39,16.26,000,16.26
+2006-05-16,13.49,13.61,12.98,13.35,000,13.35
+2006-05-15,15.12,15.13,13.44,13.57,000,13.57
+2006-05-12,12.71,14.26,12.71,14.19,000,14.19
+2006-05-11,12.33,12.92,11.99,12.49,000,12.49
+2006-05-10,12.22,12.32,11.78,11.78,000,11.78
+2006-05-09,12.10,12.15,11.88,11.99,000,11.99
+2006-05-08,11.98,12.06,11.81,12.00,000,12.00
+2006-05-05,11.39,11.62,11.18,11.62,000,11.62
+2006-05-04,11.92,12.16,11.71,11.86,000,11.86
+2006-05-03,12.21,12.45,11.95,11.99,000,11.99
+2006-05-02,12.20,12.27,11.93,11.99,000,11.99
+2006-05-01,11.83,12.59,11.75,12.54,000,12.54
+2006-04-28,12.13,12.13,11.42,11.59,000,11.59
+2006-04-27,12.27,12.52,11.55,11.84,000,11.84
+2006-04-26,11.76,11.79,11.34,11.76,000,11.76
+2006-04-25,11.71,12.19,11.59,11.75,000,11.75
+2006-04-24,12.26,12.42,11.67,11.75,000,11.75
+2006-04-21,11.24,11.98,11.19,11.59,000,11.59
+2006-04-20,11.30,11.67,11.02,11.64,000,11.64
+2006-04-19,11.52,11.80,11.23,11.32,000,11.32
+2006-04-18,12.55,12.55,11.31,11.40,000,11.40
+2006-04-17,12.80,13.02,12.27,12.58,000,12.58
+2006-04-13,12.93,13.00,12.28,12.38,000,12.38
+2006-04-12,13.08,13.09,12.66,12.76,000,12.76
+2006-04-11,12.09,13.06,12.06,13.00,000,13.00
+2006-04-10,12.44,12.49,12.04,12.19,000,12.19
+2006-04-07,11.44,12.31,11.20,12.26,000,12.26
+2006-04-06,11.34,11.74,11.25,11.45,000,11.45
+2006-04-05,11.24,11.36,11.06,11.13,000,11.13
+2006-04-04,11.66,11.80,11.09,11.14,000,11.14
+2006-04-03,11.47,11.62,11.03,11.57,000,11.57
+2006-03-31,11.42,11.65,11.27,11.39,000,11.39
+2006-03-30,11.03,11.73,10.70,11.57,000,11.57
+2006-03-29,11.46,11.57,10.79,10.95,000,10.95
+2006-03-28,11.69,11.90,11.38,11.58,000,11.58
+2006-03-27,11.46,11.72,11.41,11.46,000,11.46
+2006-03-24,11.23,11.48,11.09,11.19,000,11.19
+2006-03-23,11.19,11.57,11.11,11.17,000,11.17
+2006-03-22,11.71,11.79,11.11,11.21,000,11.21
+2006-03-21,11.71,11.89,11.17,11.62,000,11.62
+2006-03-20,12.11,12.21,10.79,11.79,000,11.79
+2006-03-17,11.56,12.20,11.53,12.12,000,12.12
+2006-03-16,10.59,12.05,10.57,11.98,000,11.98
+2006-03-15,11.17,11.54,10.98,11.35,000,11.35
+2006-03-14,11.61,11.72,10.53,10.74,000,10.74
+2006-03-13,11.72,11.75,10.89,11.37,000,11.37
+2006-03-10,12.52,12.60,11.79,11.85,000,11.85
+2006-03-09,12.21,12.69,12.01,12.68,000,12.68
+2006-03-08,12.83,13.34,12.26,12.32,000,12.32
+2006-03-07,12.92,13.34,12.64,12.66,000,12.66
+2006-03-06,12.22,12.91,12.22,12.74,000,12.74
+2006-03-03,12.03,12.10,11.36,11.96,000,11.96
+2006-03-02,11.79,11.95,11.56,11.72,000,11.72
+2006-03-01,12.05,12.07,11.52,11.54,000,11.54
+2006-02-28,11.74,12.36,11.71,12.34,000,12.34
+2006-02-27,11.79,11.83,11.40,11.59,000,11.59
+2006-02-24,11.94,12.06,11.42,11.46,000,11.46
+2006-02-23,11.86,11.97,11.58,11.87,000,11.87
+2006-02-22,12.27,12.30,11.68,11.88,000,11.88
+2006-02-21,12.36,12.64,12.28,12.41,000,12.41
+2006-02-17,11.64,12.21,11.52,12.01,000,12.01
+2006-02-16,12.19,12.29,11.13,11.48,000,11.48
+2006-02-15,12.43,12.95,12.21,12.31,000,12.31
+2006-02-14,13.09,13.15,12.01,12.25,000,12.25
+2006-02-13,13.34,13.70,13.05,13.35,000,13.35
+2006-02-10,13.35,13.73,12.69,12.87,000,12.87
+2006-02-09,12.56,13.15,12.27,13.12,000,13.12
+2006-02-08,13.41,13.61,12.76,12.83,000,12.83
+2006-02-07,13.20,13.67,12.97,13.59,000,13.59
+2006-02-06,13.43,13.43,12.99,13.04,000,13.04
+2006-02-03,13.37,13.70,12.64,12.96,000,12.96
+2006-02-02,12.54,13.47,12.48,13.23,000,13.23
+2006-02-01,13.03,13.03,12.34,12.36,000,12.36
+2006-01-31,12.45,13.06,12.45,12.95,000,12.95
+2006-01-30,12.22,12.46,12.07,12.39,000,12.39
+2006-01-27,12.27,12.33,11.72,11.97,000,11.97
+2006-01-26,12.89,12.91,12.19,12.42,000,12.42
+2006-01-25,12.95,13.38,12.62,12.87,000,12.87
+2006-01-24,13.79,13.83,13.14,13.31,000,13.31
+2006-01-23,14.44,14.48,13.58,13.93,000,13.93
+2006-01-20,12.10,14.56,11.89,14.56,000,14.56
+2006-01-19,12.12,12.34,11.65,11.98,000,11.98
+2006-01-18,12.62,12.70,12.20,12.25,000,12.25
+2006-01-17,12.13,12.46,11.87,11.91,000,11.91
+2006-01-13,11.40,11.61,11.11,11.23,000,11.23
+2006-01-12,10.98,11.38,10.94,11.20,000,11.20
+2006-01-11,11.03,11.16,10.83,10.94,000,10.94
+2006-01-10,11.39,11.39,10.84,10.86,000,10.86
+2006-01-09,11.35,11.35,10.98,11.13,000,11.13
+2006-01-06,11.23,11.50,10.81,11.00,000,11.00
+2006-01-05,11.43,11.84,11.31,11.31,000,11.31
+2006-01-04,11.22,11.71,10.97,11.37,000,11.37
+2006-01-03,12.25,12.51,10.99,11.14,000,11.14
+2005-12-30,11.96,12.07,11.55,12.07,000,12.07
+2005-12-29,11.36,11.67,11.14,11.61,000,11.61
+2005-12-28,11.55,11.64,11.26,11.35,000,11.35
+2005-12-27,10.97,11.65,10.83,11.57,000,11.57
+2005-12-23,10.37,10.48,10.24,10.27,000,10.27
+2005-12-22,10.82,10.89,10.28,10.29,000,10.29
+2005-12-21,10.71,11.07,10.34,10.81,000,10.81
+2005-12-20,11.32,11.45,11.00,11.19,000,11.19
+2005-12-19,11.11,11.38,10.65,11.38,000,11.38
+2005-12-16,10.70,10.75,10.15,10.68,000,10.68
+2005-12-15,10.66,11.11,10.37,10.73,000,10.73
+2005-12-14,10.75,10.79,10.39,10.48,000,10.48
+2005-12-13,10.57,11.42,10.57,11.11,000,11.11
+2005-12-12,10.86,11.81,10.83,11.47,000,11.47
+2005-12-09,11.91,12.20,11.56,11.69,000,11.69
+2005-12-08,11.88,12.41,11.73,12.21,000,12.21
+2005-12-07,11.49,12.44,11.45,12.18,000,12.18
+2005-12-06,11.16,11.59,10.96,11.52,000,11.52
+2005-12-05,11.45,11.68,11.40,11.60,000,11.60
+2005-12-02,11.10,11.23,10.94,11.01,000,11.01
+2005-12-01,12.09,12.23,11.14,11.24,000,11.24
+2005-11-30,11.84,12.13,11.55,12.06,000,12.06
+2005-11-29,11.77,11.96,11.61,11.89,000,11.89
+2005-11-28,11.34,11.99,11.33,11.84,000,11.84
+2005-11-25,11.04,11.24,10.88,10.88,000,10.88
+2005-11-23,10.96,11.03,10.67,10.96,000,10.96
+2005-11-22,11.01,11.10,10.50,10.60,000,10.60
+2005-11-21,11.18,11.38,10.71,10.82,000,10.82
+2005-11-18,11.19,11.67,10.96,11.12,000,11.12
+2005-11-17,11.92,12.20,11.25,11.25,000,11.25
+2005-11-16,12.22,12.68,12.17,12.26,000,12.26
+2005-11-15,12.16,12.69,11.70,12.23,000,12.23
+2005-11-14,11.99,12.34,11.77,12.18,000,12.18
+2005-11-11,11.82,11.96,11.63,11.63,000,11.63
+2005-11-10,12.68,13.17,11.73,11.90,000,11.90
+2005-11-09,13.14,13.36,12.42,12.80,000,12.80
+2005-11-08,13.61,13.61,13.04,13.08,000,13.08
+2005-11-07,13.11,13.65,12.76,13.10,000,13.10
+2005-11-04,12.88,13.62,12.69,13.17,000,13.17
+2005-11-03,13.12,13.23,12.50,13.00,000,13.00
+2005-11-02,14.99,14.99,13.38,13.48,000,13.48
+2005-11-01,14.85,15.66,14.65,14.85,000,14.85
+2005-10-31,14.04,15.39,13.93,15.32,000,15.32
+2005-10-28,15.45,15.61,14.11,14.25,000,14.25
+2005-10-27,14.73,16.30,14.57,16.02,000,16.02
+2005-10-26,14.80,14.88,13.72,14.59,000,14.59
+2005-10-25,14.96,15.30,14.20,14.53,000,14.53
+2005-10-24,16.18,16.44,14.61,14.74,000,14.74
+2005-10-21,15.53,16.27,15.26,16.13,000,16.13
+2005-10-20,14.18,16.19,13.98,16.11,000,16.11
+2005-10-19,15.63,15.86,13.47,13.50,000,13.50
+2005-10-18,14.92,15.40,14.79,15.33,000,15.33
+2005-10-17,15.30,15.30,14.58,14.67,000,14.67
+2005-10-14,15.99,16.03,14.83,14.87,000,14.87
+2005-10-13,16.32,17.19,15.98,16.47,000,16.47
+2005-10-12,15.56,16.27,15.04,16.22,000,16.22
+2005-10-11,15.35,15.70,15.06,15.63,000,15.63
+2005-10-10,14.93,15.61,14.87,15.55,000,15.55
+2005-10-07,14.56,14.82,14.30,14.59,000,14.59
+2005-10-06,14.53,15.63,14.04,14.96,000,14.96
+2005-10-05,13.15,14.58,12.97,14.55,000,14.55
+2005-10-04,12.50,13.21,12.11,13.20,000,13.20
+2005-10-03,12.37,12.62,11.98,12.46,000,12.46
+2005-09-30,12.42,12.44,11.92,11.92,000,11.92
+2005-09-29,12.92,13.23,12.15,12.24,000,12.24
+2005-09-28,12.60,12.98,12.37,12.63,000,12.63
+2005-09-27,13.06,13.46,12.51,12.76,000,12.76
+2005-09-26,13.27,13.47,12.64,13.04,000,13.04
+2005-09-23,13.64,13.88,12.75,12.96,000,12.96
+2005-09-22,13.85,14.39,13.31,13.33,000,13.33
+2005-09-21,13.07,13.91,12.96,13.79,000,13.79
+2005-09-20,12.23,12.96,11.83,12.64,000,12.64
+2005-09-19,12.17,12.46,12.04,12.14,000,12.14
+2005-09-16,11.89,11.93,11.07,11.22,000,11.22
+2005-09-15,12.72,13.17,12.28,12.49,000,12.49
+2005-09-14,12.79,13.26,12.67,12.91,000,12.91
+2005-09-13,11.76,12.48,11.75,12.39,000,12.39
+2005-09-12,11.66,11.89,11.45,11.65,000,11.65
+2005-09-09,12.46,12.65,11.96,11.98,000,11.98
+2005-09-08,12.72,12.94,12.37,12.93,000,12.93
+2005-09-07,13.06,13.20,12.44,12.52,000,12.52
+2005-09-06,14.17,14.18,12.90,12.93,000,12.93
+2005-09-02,13.21,13.72,13.03,13.57,000,13.57
+2005-09-01,12.86,13.37,12.31,13.15,000,13.15
+2005-08-31,13.37,13.63,12.56,12.60,000,12.60
+2005-08-30,13.49,14.18,13.47,13.65,000,13.65
+2005-08-29,14.34,14.41,13.38,13.52,000,13.52
+2005-08-26,13.79,14.20,13.65,13.72,000,13.72
+2005-08-25,13.92,14.12,13.66,13.73,000,13.73
+2005-08-24,13.56,14.18,13.00,14.17,000,14.17
+2005-08-23,13.63,14.05,13.30,13.34,000,13.34
+2005-08-22,13.67,13.89,13.20,13.42,000,13.42
+2005-08-19,12.84,13.85,12.61,13.42,000,13.42
+2005-08-18,13.47,13.88,13.01,13.42,000,13.42
+2005-08-17,13.35,13.76,12.78,13.30,000,13.30
+2005-08-16,12.37,13.89,12.28,13.52,000,13.52
+2005-08-15,12.87,12.99,12.08,12.26,000,12.26
+2005-08-12,12.36,12.98,12.18,12.74,000,12.74
+2005-08-11,12.34,12.94,11.88,12.42,000,12.42
+2005-08-10,12.03,12.56,11.51,12.38,000,12.38
+2005-08-09,12.25,12.78,12.24,12.40,000,12.40
+2005-08-08,12.56,13.29,12.56,13.21,000,13.21
+2005-08-05,11.82,12.92,11.82,12.48,000,12.48
+2005-08-04,12.12,12.57,11.99,12.52,000,12.52
+2005-08-03,11.90,12.01,11.62,11.83,000,11.83
+2005-08-02,12.00,12.03,11.69,11.75,000,11.75
+2005-08-01,11.75,12.23,11.36,12.08,000,12.08
+2005-07-29,10.24,11.73,10.24,11.57,000,11.57
+2005-07-28,10.40,10.58,10.27,10.52,000,10.52
+2005-07-27,11.03,11.03,10.34,10.36,000,10.36
+2005-07-26,11.11,11.25,10.92,10.99,000,10.99
+2005-07-25,11.12,11.28,10.70,11.10,000,11.10
+2005-07-22,11.01,11.05,10.51,10.52,161600,10.52
+2005-07-21,10.23,11.21,10.23,10.97,161600,10.97
+2005-07-20,10.80,10.94,9.88,10.23,161700,10.23
+2005-07-19,10.63,10.79,10.36,10.45,161600,10.45
+2005-07-18,11.09,11.09,10.77,10.77,111400,10.77
+2005-07-15,10.61,10.90,10.13,10.33,161100,10.33
+2005-07-14,10.87,11.13,10.50,10.81,161600,10.81
+2005-07-13,11.09,11.44,10.80,10.84,161500,10.84
+2005-07-12,11.03,11.37,10.85,10.95,161600,10.95
+2005-07-11,10.96,11.41,10.53,11.28,161500,11.28
+2005-07-08,12.24,12.29,11.09,11.45,161600,11.45
+2005-07-07,13.91,13.92,12.48,12.49,161300,12.49
+2005-07-06,11.67,12.33,11.54,12.27,161600,12.27
+2005-07-05,12.41,12.41,11.53,11.68,161400,11.68
+2005-07-01,11.75,11.92,11.38,11.40,158400,11.40
+2005-06-30,11.72,12.10,11.50,12.04,161600,12.04
+2005-06-29,11.54,11.78,11.44,11.77,161600,11.77
+2005-06-28,12.31,12.31,11.55,11.58,161200,11.58
+2005-06-27,12.73,12.78,12.38,12.52,000,12.52
+2005-06-24,12.27,12.32,11.95,12.18,161600,12.18
+2005-06-23,11.19,12.13,10.96,12.13,161600,12.13
+2005-06-22,10.96,11.31,10.81,11.05,161600,11.05
+2005-06-21,11.52,11.67,11.01,11.08,161600,11.08
+2005-06-20,12.51,12.53,11.31,11.47,161600,11.47
+2005-06-17,10.83,11.64,10.78,11.48,161600,11.48
+2005-06-16,11.24,11.36,11.04,11.15,161600,11.15
+2005-06-15,11.22,11.96,11.05,11.46,161600,11.46
+2005-06-14,11.65,12.02,11.52,11.79,161600,11.79
+2005-06-13,12.12,12.12,11.31,11.65,161600,11.65
+2005-06-10,12.16,12.40,11.90,11.96,158900,11.96
+2005-06-09,12.69,13.07,12.06,12.08,161500,12.08
+2005-06-08,12.05,12.83,12.05,12.70,000,12.70
+2005-06-07,12.22,12.43,11.47,12.39,161300,12.39
+2005-06-06,12.68,13.00,12.21,12.28,161200,12.28
+2005-06-03,11.78,12.49,11.52,12.15,161600,12.15
+2005-06-02,12.35,12.43,11.80,11.84,161600,11.84
+2005-06-01,13.34,13.34,12.17,12.36,161500,12.36
+2005-05-31,12.69,13.45,12.67,13.29,161100,13.29
+2005-05-27,12.06,12.43,12.06,12.15,161600,12.15
+2005-05-26,12.23,12.38,11.65,12.24,161200,12.24
+2005-05-25,12.83,13.11,12.58,12.58,161600,12.58
+2005-05-24,13.12,13.30,12.53,12.69,161600,12.69
+2005-05-23,13.38,13.45,12.75,12.95,161600,12.95
+2005-05-20,13.57,13.73,13.07,13.14,159500,13.14
+2005-05-19,13.35,14.02,13.25,13.32,161600,13.32
+2005-05-18,14.11,14.13,13.30,13.63,000,13.63
+2005-05-17,15.92,16.21,14.45,14.57,161600,14.57
+2005-05-16,16.87,16.87,15.67,15.68,161600,15.68
+2005-05-13,15.88,17.70,15.40,16.32,161600,16.32
+2005-05-12,14.43,16.23,14.16,16.12,161500,16.12
+2005-05-11,14.69,15.80,14.31,14.45,160700,14.45
+2005-05-10,14.05,15.11,14.03,14.91,161600,14.91
+2005-05-09,14.11,14.56,13.53,13.75,161600,13.75
+2005-05-06,13.29,14.06,13.11,14.05,161600,14.05
+2005-05-05,13.48,15.82,13.43,13.98,161600,13.98
+2005-05-04,14.44,15.38,13.70,13.85,161600,13.85
+2005-05-03,15.19,15.31,14.53,14.53,000,14.53
+2005-05-02,15.45,16.01,15.08,15.12,161600,15.12
+2005-04-29,15.75,16.92,15.26,15.31,149200,15.31
+2005-04-28,14.19,16.87,14.19,16.86,161600,16.86
+2005-04-27,14.62,15.93,14.43,14.87,161600,14.87
+2005-04-26,14.27,15.15,14.27,14.91,161600,14.91
+2005-04-25,15.29,15.47,14.60,14.62,161600,14.62
+2005-04-22,14.54,16.32,14.20,15.38,161600,15.38
+2005-04-21,16.22,16.22,14.26,14.41,161600,14.41
+2005-04-20,14.86,17.25,14.52,16.92,160700,16.92
+2005-04-19,15.28,15.97,14.81,14.96,161600,14.96
+2005-04-18,18.33,18.59,16.41,16.56,161600,16.56
+2005-04-15,14.92,18.05,14.71,17.74,161200,17.74
+2005-04-14,13.40,14.60,12.67,14.53,161500,14.53
+2005-04-13,11.68,13.44,11.27,13.31,161600,13.31
+2005-04-12,12.12,12.83,11.20,11.30,000,11.30
+2005-04-11,12.09,12.46,11.82,11.98,161600,11.98
+2005-04-08,12.06,12.65,11.52,12.62,161600,12.62
+2005-04-07,12.92,12.96,12.30,12.33,161600,12.33
+2005-04-06,13.75,13.76,12.89,13.15,161500,13.15
+2005-04-05,14.10,14.11,13.66,13.68,161600,13.68
+2005-04-04,14.53,14.76,13.96,14.11,161600,14.11
+2005-04-01,13.64,14.38,12.92,14.09,160900,14.09
+2005-03-31,13.71,14.10,13.57,14.02,160900,14.02
+2005-03-30,14.47,14.47,13.64,13.64,161600,13.64
+2005-03-29,13.96,14.68,13.38,14.49,161600,14.49
+2005-03-28,14.01,14.01,13.44,13.75,161500,13.75
+2005-03-24,13.86,13.88,12.97,13.42,161600,13.42
+2005-03-23,14.61,14.89,13.88,14.06,161600,14.06
+2005-03-22,13.76,14.28,13.15,14.27,161600,14.27
+2005-03-21,13.62,13.98,13.33,13.61,161600,13.61
+2005-03-18,13.65,13.67,13.08,13.14,161600,13.14
+2005-03-17,13.25,13.67,13.20,13.29,161600,13.29
+2005-03-16,13.30,13.81,13.19,13.49,161600,13.49
+2005-03-15,12.44,13.22,12.33,13.15,161600,13.15
+2005-03-14,12.82,12.99,12.36,12.39,161600,12.39
+2005-03-11,12.29,12.98,12.11,12.80,161600,12.80
+2005-03-10,12.62,12.97,12.42,12.49,160400,12.49
+2005-03-09,12.23,12.72,12.20,12.70,161600,12.70
+2005-03-08,12.06,12.50,11.95,12.40,161500,12.40
+2005-03-07,12.36,12.60,12.05,12.26,161600,12.26
+2005-03-04,12.49,12.50,11.94,11.94,161600,11.94
+2005-03-03,12.28,13.07,12.23,12.93,161600,12.93
+2005-03-02,12.88,12.91,12.20,12.50,161400,12.50
+2005-03-01,11.95,12.10,11.66,12.04,161400,12.04
+2005-02-28,11.89,12.50,11.73,12.08,161600,12.08
+2005-02-25,11.75,11.78,10.92,11.49,159000,11.49
+2005-02-24,12.51,12.51,11.48,11.57,161600,11.57
+2005-02-23,12.94,12.94,12.30,12.39,161500,12.39
+2005-02-22,12.18,13.20,12.09,13.14,161600,13.14
+2005-02-18,11.99,12.12,11.18,11.18,161400,11.18
+2005-02-17,11.25,11.91,11.21,11.77,161500,11.77
+2005-02-16,11.40,11.50,11.03,11.10,161600,11.10
+2005-02-15,11.57,11.76,11.13,11.27,161600,11.27
+2005-02-14,11.28,11.86,11.18,11.52,161400,11.52
+2005-02-11,11.64,11.82,11.25,11.43,161600,11.43
+2005-02-10,11.98,11.99,11.38,11.51,161500,11.51
+2005-02-09,11.52,12.02,11.41,12.00,161600,12.00
+2005-02-08,11.66,11.67,11.45,11.60,161600,11.60
+2005-02-07,11.53,11.75,11.36,11.73,161500,11.73
+2005-02-04,11.97,11.97,10.90,11.21,161600,11.21
+2005-02-03,12.03,12.12,11.72,11.79,161500,11.79
+2005-02-02,12.01,12.06,11.52,11.66,161600,11.66
+2005-02-01,12.80,13.02,12.02,12.03,000,12.03
+2005-01-31,13.63,13.63,12.79,12.82,161600,12.82
+2005-01-28,13.15,13.56,12.83,13.24,160800,13.24
+2005-01-27,13.50,13.57,12.96,13.24,159600,13.24
+2005-01-26,13.84,13.84,13.06,13.44,000,13.44
+2005-01-25,14.34,14.36,13.88,14.06,000,14.06
+2005-01-24,14.38,14.75,14.17,14.65,000,14.65
+2005-01-21,13.75,14.46,13.40,14.36,1000,14.36
+2005-01-20,13.37,14.11,13.28,13.83,000,13.83
+2005-01-19,12.47,13.21,12.41,13.18,000,13.18
+2005-01-18,13.13,13.15,12.30,12.47,000,12.47
+2005-01-14,12.68,12.82,12.29,12.43,000,12.43
+2005-01-13,12.70,12.86,12.37,12.84,000,12.84
+2005-01-12,13.94,13.94,12.54,12.56,000,12.56
+2005-01-11,13.44,13.68,13.05,13.19,000,13.19
+2005-01-10,13.92,13.93,12.94,13.23,000,13.23
+2005-01-07,13.47,13.51,12.94,13.49,000,13.49
+2005-01-06,14.09,14.09,13.33,13.58,000,13.58
+2005-01-05,13.98,14.09,13.26,14.09,000,14.09
+2005-01-04,14.01,14.45,13.93,13.98,000,13.98
+2005-01-03,13.39,14.23,13.25,14.08,000,14.08
+2004-12-31,12.42,13.29,12.42,13.29,000,13.29
+2004-12-30,12.25,12.61,12.18,12.56,000,12.56
+2004-12-29,11.61,11.79,11.61,11.62,000,11.62
+2004-12-28,12.25,12.40,11.97,12.00,000,12.00
+2004-12-27,11.53,12.16,11.53,12.14,000,12.14
+2004-12-23,11.41,11.64,11.14,11.23,000,11.23
+2004-12-22,11.42,11.71,11.37,11.45,000,11.45
+2004-12-21,11.78,12.00,11.37,11.55,000,11.55
+2004-12-20,12.26,12.34,11.77,11.83,000,11.83
+2004-12-17,12.34,12.75,11.87,11.95,000,11.95
+2004-12-16,12.34,12.59,11.96,12.27,000,12.27
+2004-12-15,12.41,12.88,12.23,12.35,000,12.35
+2004-12-14,12.55,12.97,12.21,12.73,000,12.73
+2004-12-13,12.37,12.61,12.13,12.54,000,12.54
+2004-12-10,13.05,13.15,12.68,12.76,000,12.76
+2004-12-09,13.52,13.71,12.77,12.88,000,12.88
+2004-12-08,13.52,13.68,13.18,13.19,000,13.19
+2004-12-07,13.07,13.74,12.96,13.67,000,13.67
+2004-12-06,12.95,13.40,12.93,13.19,1300,13.19
+2004-12-03,13.02,13.06,12.40,12.96,000,12.96
+2004-12-02,12.97,13.04,12.72,12.98,000,12.98
+2004-12-01,13.10,13.12,12.77,12.97,000,12.97
+2004-11-30,13.27,13.38,13.07,13.24,1300,13.24
+2004-11-29,12.99,13.69,12.93,13.30,000,13.30
+2004-11-26,12.76,12.90,12.59,12.78,000,12.78
+2004-11-24,12.58,12.89,12.56,12.72,000,12.72
+2004-11-23,12.78,12.91,12.57,12.67,000,12.67
+2004-11-22,13.71,13.71,12.94,12.97,000,12.97
+2004-11-19,12.79,13.83,12.77,13.50,000,13.50
+2004-11-18,13.22,13.29,12.96,12.98,000,12.98
+2004-11-17,13.20,13.39,12.77,13.21,000,13.21
+2004-11-16,13.41,13.67,13.20,13.21,000,13.21
+2004-11-15,14.05,14.06,13.25,13.38,000,13.38
+2004-11-12,13.24,13.48,13.04,13.33,000,13.33
+2004-11-11,13.11,13.12,12.64,13.04,1300,13.04
+2004-11-10,13.16,13.51,12.79,13.08,000,13.08
+2004-11-09,12.89,13.96,12.89,13.61,000,13.61
+2004-11-08,14.11,14.48,13.68,13.80,000,13.80
+2004-11-05,13.67,14.10,13.23,13.84,000,13.84
+2004-11-04,13.83,14.02,12.95,13.97,000,13.97
+2004-11-03,15.05,15.18,13.79,14.04,000,14.04
+2004-11-02,15.99,16.32,15.21,16.18,000,16.18
+2004-11-01,16.43,16.76,16.18,16.27,000,16.27
+2004-10-29,15.83,16.29,14.96,16.27,000,16.27
+2004-10-28,16.02,16.05,15.36,15.39,000,15.39
+2004-10-27,16.48,16.53,15.66,15.72,000,15.72
+2004-10-26,16.72,16.87,15.97,16.39,000,16.39
+2004-10-25,16.07,16.71,16.02,16.58,000,16.58
+2004-10-22,14.59,15.41,14.31,15.28,000,15.28
+2004-10-21,14.98,15.19,14.28,14.54,000,14.54
+2004-10-20,15.46,15.53,14.80,14.85,1200,14.85
+2004-10-19,16.32,16.32,14.32,15.13,000,15.13
+2004-10-18,16.16,16.16,14.64,14.71,000,14.71
+2004-10-15,16.28,16.49,14.72,15.04,000,15.04
+2004-10-14,15.22,16.56,15.22,16.43,000,16.43
+2004-10-13,13.92,15.63,13.92,15.42,000,15.42
+2004-10-12,15.21,15.69,14.91,15.05,000,15.05
+2004-10-11,14.69,15.27,14.28,14.71,000,14.71
+2004-10-08,14.70,15.52,13.78,15.05,000,15.05
+2004-10-07,13.33,14.66,13.32,14.50,000,14.50
+2004-10-06,14.01,14.10,13.24,13.28,000,13.28
+2004-10-05,13.51,14.19,13.51,13.95,000,13.95
+2004-10-04,13.05,13.45,12.99,13.41,000,13.41
+2004-10-01,13.11,13.11,12.60,12.75,000,12.75
+2004-09-30,13.49,13.67,13.20,13.34,000,13.34
+2004-09-29,14.09,14.14,13.20,13.21,000,13.21
+2004-09-28,14.73,14.84,13.69,13.83,000,13.83
+2004-09-27,14.86,15.09,14.55,14.62,000,14.62
+2004-09-24,14.93,14.94,14.08,14.28,000,14.28
+2004-09-23,14.85,15.08,14.61,14.80,000,14.80
+2004-09-22,15.28,15.30,13.95,14.74,000,14.74
+2004-09-21,15.98,15.98,13.38,13.66,000,13.66
+2004-09-20,13.98,15.29,13.98,14.43,000,14.43
+2004-09-17,14.11,14.43,13.93,14.03,000,14.03
+2004-09-16,14.29,14.66,14.27,14.39,000,14.39
+2004-09-15,13.88,14.67,13.68,14.64,000,14.64
+2004-09-14,13.50,13.89,13.50,13.56,000,13.56
+2004-09-13,13.64,13.78,13.16,13.17,000,13.17
+2004-09-10,13.90,14.23,13.69,13.76,000,13.76
+2004-09-09,14.12,14.41,13.70,14.01,000,14.01
+2004-09-08,14.16,14.31,13.88,14.06,000,14.06
+2004-09-07,14.52,14.64,14.03,14.07,1400,14.07
+2004-09-03,14.36,14.38,13.79,13.91,1500,13.91
+2004-09-02,14.97,15.05,14.18,14.28,000,14.28
+2004-09-01,15.39,15.39,14.72,14.91,000,14.91
+2004-08-31,15.64,15.85,15.28,15.29,000,15.29
+2004-08-30,15.35,15.58,15.30,15.44,000,15.44
+2004-08-27,14.91,15.02,14.67,14.71,000,14.71
+2004-08-26,15.22,15.22,14.76,14.91,000,14.91
+2004-08-25,15.40,15.76,14.81,14.98,000,14.98
+2004-08-24,15.63,15.81,15.33,15.33,000,15.33
+2004-08-23,16.68,16.71,15.79,15.88,000,15.88
+2004-08-20,16.99,17.04,15.78,16.00,000,16.00
+2004-08-19,16.54,17.55,16.31,16.96,000,16.96
+2004-08-18,17.55,17.55,16.13,16.23,1400,16.23
+2004-08-17,16.58,17.28,16.16,17.02,000,17.02
+2004-08-16,19.28,19.28,17.42,17.57,1500,17.57
+2004-08-13,18.91,19.25,17.97,17.98,000,17.98
+2004-08-12,18.61,19.30,18.36,19.08,000,19.08
+2004-08-11,18.15,18.49,17.84,18.04,000,18.04
+2004-08-10,18.80,18.86,17.25,17.47,000,17.47
+2004-08-09,19.97,19.97,18.63,18.89,000,18.89
+2004-08-06,18.21,19.68,18.18,19.34,000,19.34
+2004-08-05,16.19,18.41,16.17,18.32,000,18.32
+2004-08-04,16.33,16.65,15.82,16.21,000,16.21
+2004-08-03,15.56,16.05,15.28,16.03,000,16.03
+2004-08-02,16.42,16.58,15.22,15.37,000,15.37
+2004-07-30,15.85,15.89,15.27,15.32,000,15.32
+2004-07-29,16.00,16.12,15.42,15.68,000,15.68
+2004-07-28,16.77,17.41,15.94,16.15,000,16.15
+2004-07-27,17.24,17.34,16.30,16.55,000,16.55
+2004-07-26,17.22,17.93,16.98,17.30,000,17.30
+2004-07-23,15.82,16.94,15.82,16.50,000,16.50
+2004-07-22,16.65,17.10,15.29,15.75,000,15.75
+2004-07-21,14.00,16.46,13.91,16.41,000,16.41
+2004-07-20,15.53,15.57,13.98,14.17,000,14.17
+2004-07-19,15.17,15.83,14.86,15.17,000,15.17
+2004-07-16,14.27,14.58,13.95,14.34,000,14.34
+2004-07-15,13.94,14.73,13.60,14.71,000,14.71
+2004-07-14,14.90,16.59,13.34,13.76,000,13.76
+2004-07-13,14.86,15.08,14.28,14.46,000,14.46
+2004-07-12,15.25,15.61,14.61,14.96,000,14.96
+2004-07-09,16.01,16.03,15.71,15.78,000,15.78
+2004-07-08,15.86,16.36,15.50,16.20,000,16.20
+2004-07-07,16.36,16.47,15.59,15.81,000,15.81
+2004-07-06,16.25,16.75,16.13,16.25,000,16.25
+2004-07-02,15.23,15.45,14.80,15.08,000,15.08
+2004-07-01,14.74,15.57,14.41,15.20,000,15.20
+2004-06-30,15.27,15.73,14.25,14.34,000,14.34
+2004-06-29,15.22,16.28,15.22,15.47,000,15.47
+2004-06-28,15.28,16.13,15.19,16.07,000,16.07
+2004-06-25,14.78,15.29,14.47,15.19,000,15.19
+2004-06-24,14.39,14.97,14.16,14.81,000,14.81
+2004-06-23,14.60,14.82,13.75,13.98,000,13.98
+2004-06-22,15.44,15.64,14.31,14.31,000,14.31
+2004-06-21,15.61,15.62,14.96,15.26,000,15.26
+2004-06-18,14.74,15.25,14.51,14.99,000,14.99
+2004-06-17,15.06,15.58,15.00,15.15,000,15.15
+2004-06-16,14.83,15.22,14.48,14.79,000,14.79
+2004-06-15,15.34,15.35,14.72,15.05,000,15.05
+2004-06-14,15.54,16.36,15.54,16.07,000,16.07
+2004-06-10,15.33,15.35,14.92,15.04,000,15.04
+2004-06-09,14.56,15.46,14.56,15.39,000,15.39
+2004-06-08,15.79,15.88,15.00,15.01,000,15.01
+2004-06-07,16.60,16.70,15.33,15.39,1600,15.39
+2004-06-04,16.24,16.90,15.82,16.78,000,16.78
+2004-06-03,16.43,17.04,16.16,17.03,000,17.03
+2004-06-02,16.05,16.70,15.95,16.08,000,16.08
+2004-06-01,16.60,16.96,16.19,16.30,000,16.30
+2004-05-28,15.44,15.65,15.39,15.50,000,15.50
+2004-05-27,15.74,15.86,15.19,15.28,000,15.28
+2004-05-26,16.09,16.30,15.78,15.97,000,15.97
+2004-05-25,18.41,18.42,15.73,15.96,000,15.96
+2004-05-24,18.79,18.82,17.96,18.08,000,18.08
+2004-05-21,18.73,18.74,18.00,18.49,000,18.49
+2004-05-20,18.60,19.25,18.55,18.67,000,18.67
+2004-05-19,18.48,18.93,17.58,18.93,000,18.93
+2004-05-18,19.60,19.70,19.14,19.33,000,19.33
+2004-05-17,19.70,20.45,19.65,19.96,000,19.96
+2004-05-14,18.66,19.27,18.06,18.47,000,18.47
+2004-05-13,18.78,18.92,17.97,18.86,000,18.86
+2004-05-12,18.79,20.41,18.14,18.14,1400,18.14
+2004-05-11,19.23,19.28,17.94,18.57,000,18.57
+2004-05-10,19.44,20.20,18.99,19.77,000,19.77
+2004-05-07,17.22,18.17,16.44,18.13,000,18.13
+2004-05-06,16.45,17.67,16.45,17.05,000,17.05
+2004-05-05,16.43,16.55,15.64,15.77,000,15.77
+2004-05-04,16.80,17.13,15.97,16.55,000,16.55
+2004-05-03,17.69,17.72,16.61,16.62,000,16.62
+2004-04-30,16.27,17.23,16.14,17.19,000,17.19
+2004-04-29,16.36,17.27,15.87,16.60,000,16.60
+2004-04-28,15.55,16.54,15.55,16.29,000,16.29
+2004-04-27,15.05,15.17,14.37,15.07,000,15.07
+2004-04-26,14.75,15.22,14.39,14.77,1600,14.77
+2004-04-23,14.42,14.56,13.89,14.01,000,14.01
+2004-04-22,15.89,15.98,13.86,14.61,000,14.61
+2004-04-21,16.61,16.94,15.55,15.60,000,15.60
+2004-04-20,15.24,16.72,14.79,16.67,000,16.67
+2004-04-19,15.73,16.08,15.33,15.42,000,15.42
+2004-04-16,15.59,15.69,14.77,14.94,1500,14.94
+2004-04-15,16.02,16.78,15.22,15.74,000,15.74
+2004-04-14,17.29,17.71,15.60,15.62,000,15.62
+2004-04-13,15.29,17.98,15.29,17.26,000,17.26
+2004-04-12,15.71,16.12,15.00,15.28,000,15.28
+2004-04-08,14.96,16.82,14.96,16.26,000,16.26
+2004-04-07,15.41,16.36,15.34,15.76,000,15.76
+2004-04-06,15.35,15.53,15.07,15.32,000,15.32
+2004-04-05,16.17,16.64,14.81,14.97,1700,14.97
+2004-04-02,15.21,16.55,15.21,15.64,000,15.64
+2004-04-01,16.76,17.25,16.65,16.65,000,16.65
+2004-03-31,16.33,16.96,16.23,16.74,000,16.74
+2004-03-30,16.68,16.80,16.13,16.28,000,16.28
+2004-03-29,17.11,17.17,16.29,16.50,000,16.50
+2004-03-26,18.19,18.23,16.67,17.33,000,17.33
+2004-03-25,19.58,19.58,17.61,17.88,000,17.88
+2004-03-24,20.24,20.83,19.45,19.81,000,19.81
+2004-03-23,21.06,21.33,20.01,20.67,000,20.67
+2004-03-22,20.61,22.67,20.61,21.58,000,21.58
+2004-03-19,17.98,19.25,17.89,19.15,000,19.15
+2004-03-18,18.38,19.23,18.35,18.53,000,18.53
+2004-03-17,19.54,19.55,17.98,18.11,000,18.11
+2004-03-16,20.27,20.94,19.86,20.34,000,20.34
+2004-03-15,18.98,21.39,18.86,21.13,000,21.13
+2004-03-12,19.94,20.08,18.06,18.30,000,18.30
+2004-03-11,18.81,20.69,17.63,20.67,000,20.67
+2004-03-10,16.12,18.70,16.11,18.67,000,18.67
+2004-03-09,15.57,16.74,15.56,16.60,000,16.60
+2004-03-08,14.83,15.83,14.54,15.79,000,15.79
+2004-03-05,14.81,14.82,13.83,14.48,000,14.48
+2004-03-04,14.45,14.50,14.19,14.40,000,14.40
+2004-03-03,14.73,15.27,14.47,14.55,000,14.55
+2004-03-02,14.59,14.89,14.18,14.86,000,14.86
+2004-03-01,14.91,15.05,14.40,14.44,000,14.44
+2004-02-27,13.80,14.77,13.80,14.55,000,14.55
+2004-02-26,15.32,15.33,14.69,14.83,000,14.83
+2004-02-25,15.58,16.05,14.93,14.93,000,14.93
+2004-02-24,16.38,16.76,15.77,15.90,000,15.90
+2004-02-23,16.50,16.78,16.25,16.29,000,16.29
+2004-02-20,15.85,16.55,15.82,16.04,000,16.04
+2004-02-19,15.33,15.97,15.20,15.80,000,15.80
+2004-02-18,15.51,15.76,15.30,15.59,000,15.59
+2004-02-17,15.63,15.96,15.32,15.40,000,15.40
+2004-02-13,15.12,16.03,14.86,15.58,000,15.58
+2004-02-12,15.36,15.72,15.23,15.31,000,15.31
+2004-02-11,15.90,16.16,15.26,15.39,1600,15.39
+2004-02-10,16.41,16.76,15.84,15.94,000,15.94
+2004-02-09,16.54,16.82,16.12,16.39,000,16.39
+2004-02-06,17.71,17.71,15.94,16.00,000,16.00
+2004-02-05,17.91,17.99,17.60,17.71,000,17.71
+2004-02-04,17.84,18.06,17.46,17.87,000,17.87
+2004-02-03,17.29,17.78,17.17,17.34,000,17.34
+2004-02-02,17.45,17.56,16.67,17.11,000,17.11
+2004-01-30,16.55,17.35,16.55,16.63,000,16.63
+2004-01-29,16.88,17.66,16.79,17.14,000,17.14
+2004-01-28,15.37,17.06,15.29,16.78,000,16.78
+2004-01-27,15.28,15.44,14.74,15.35,000,15.35
+2004-01-26,15.78,15.78,14.52,14.55,000,14.55
+2004-01-23,14.73,15.05,14.56,14.84,000,14.84
+2004-01-22,14.20,14.87,14.01,14.71,000,14.71
+2004-01-21,15.63,15.63,14.24,14.34,000,14.34
+2004-01-20,15.77,16.13,15.09,15.21,000,15.21
+2004-01-16,15.40,15.44,14.90,15.00,000,15.00
+2004-01-15,17.07,17.31,15.49,15.56,000,15.56
+2004-01-14,17.29,17.30,16.40,16.75,000,16.75
+2004-01-13,16.60,18.33,16.53,18.04,000,18.04
+2004-01-12,17.32,17.46,16.79,16.82,000,16.82
+2004-01-09,16.15,16.88,15.57,16.75,000,16.75
+2004-01-08,15.42,15.68,15.32,15.61,000,15.61
+2004-01-07,16.72,16.75,15.50,15.50,000,15.50
+2004-01-06,17.66,17.67,16.19,16.73,000,16.73
+2004-01-05,18.45,18.49,17.44,17.49,000,17.49
+2004-01-02,17.96,18.68,17.54,18.22,000,18.22
+2003-12-31,17.49,18.86,17.41,18.31,000,18.31
+2003-12-30,17.32,17.97,17.20,17.68,000,17.68
+2003-12-29,17.81,17.86,17.07,17.09,000,17.09
+2003-12-26,16.76,17.49,16.63,17.45,000,17.45
+2003-12-24,16.65,16.77,16.24,16.66,000,16.66
+2003-12-23,17.32,17.40,16.29,16.49,000,16.49
+2003-12-22,17.06,17.31,16.63,16.94,000,16.94
+2003-12-19,16.66,16.81,15.71,16.42,000,16.42
+2003-12-18,15.59,16.19,14.66,16.16,000,16.16
+2003-12-17,16.12,16.27,15.52,15.58,000,15.58
+2003-12-16,17.27,17.42,15.90,15.93,000,15.93
+2003-12-15,15.80,17.42,15.79,17.23,000,17.23
+2003-12-12,16.19,16.98,16.09,16.41,000,16.41
+2003-12-11,17.95,17.95,16.51,16.73,000,16.73
+2003-12-10,17.66,18.27,17.58,17.87,000,17.87
+2003-12-09,16.63,17.80,16.56,17.63,000,17.63
+2003-12-08,17.55,17.59,16.52,16.54,000,16.54
+2003-12-05,16.76,17.32,16.50,17.09,000,17.09
+2003-12-04,16.48,16.83,16.29,16.30,000,16.30
+2003-12-03,16.08,16.68,15.77,16.63,000,16.63
+2003-12-02,16.89,16.89,16.17,16.27,000,16.27
+2003-12-01,16.74,17.00,16.17,16.77,000,16.77
+2003-11-28,16.51,16.62,16.16,16.32,000,16.32
+2003-11-26,16.11,17.26,16.02,16.23,000,16.23
+2003-11-25,17.40,17.87,16.40,16.71,000,16.71
+2003-11-24,18.91,18.98,17.19,17.44,000,17.44
+2003-11-21,19.10,19.40,18.82,18.98,000,18.98
+2003-11-20,19.09,19.61,18.46,19.48,000,19.48
+2003-11-19,19.14,19.51,18.65,18.80,000,18.80
+2003-11-18,18.09,19.17,17.78,19.11,000,19.11
+2003-11-17,18.14,19.36,18.04,18.60,000,18.60
+2003-11-14,16.63,17.00,16.17,16.94,000,16.94
+2003-11-13,17.05,17.12,16.43,16.47,000,16.47
+2003-11-12,17.78,17.85,16.55,16.75,000,16.75
+2003-11-11,18.14,18.53,17.50,17.54,000,17.54
+2003-11-10,17.79,17.88,17.53,17.62,1600,17.62
+2003-11-07,16.63,16.93,16.50,16.93,000,16.93
+2003-11-06,17.00,17.37,16.62,16.74,1600,16.74
+2003-11-05,16.99,17.32,16.55,16.86,000,16.86
+2003-11-04,16.57,16.78,16.45,16.55,000,16.55
+2003-11-03,16.33,16.70,16.22,16.55,000,16.55
+2003-10-31,16.11,16.18,15.79,16.10,000,16.10
+2003-10-30,18.45,18.45,16.01,16.33,000,16.33
+2003-10-29,16.85,17.02,16.34,16.43,000,16.43
+2003-10-28,17.79,17.89,16.77,16.82,000,16.82
+2003-10-27,17.97,18.18,17.74,18.05,000,18.05
+2003-10-24,18.25,18.68,17.67,17.71,000,17.71
+2003-10-23,18.51,18.51,17.48,17.68,000,17.68
+2003-10-22,17.10,17.98,17.10,17.67,000,17.67
+2003-10-21,17.16,17.20,16.19,16.55,000,16.55
+2003-10-20,17.84,18.07,17.04,17.04,000,17.04
+2003-10-17,16.97,17.85,16.97,17.62,000,17.62
+2003-10-16,17.58,18.05,16.86,17.19,1600,17.19
+2003-10-15,17.73,17.96,17.10,17.69,000,17.69
+2003-10-14,17.40,17.79,17.20,17.37,000,17.37
+2003-10-13,17.67,17.91,17.42,17.55,000,17.55
+2003-10-10,18.92,18.92,18.42,18.45,000,18.45
+2003-10-09,18.53,19.28,18.26,18.82,000,18.82
+2003-10-08,19.31,19.61,19.08,19.18,000,19.18
+2003-10-07,20.11,20.14,19.40,19.41,000,19.41
+2003-10-06,20.69,20.69,19.45,19.51,000,19.51
+2003-10-03,19.94,20.09,18.95,19.50,000,19.50
+2003-10-02,21.23,21.44,20.71,20.80,000,20.80
+2003-10-01,22.81,22.82,20.99,21.07,000,21.07
+2003-09-30,22.04,23.26,22.03,22.72,000,22.72
+2003-09-29,22.85,22.85,21.64,21.67,000,21.67
+2003-09-26,22.28,22.73,21.85,22.23,000,22.23
+2003-09-25,21.11,22.27,21.04,22.26,000,22.26
+2003-09-24,19.53,21.26,19.44,21.22,000,21.22
+2003-09-23,19.91,19.97,19.31,19.47,000,19.47
+2003-09-22,19.08,20.03,19.03,19.65,000,19.65
+2003-09-19,17.54,17.54,17.54,17.54,000,17.54
+2003-09-18,17.57,17.57,17.57,17.57,000,17.57
+2003-09-17,18.15,18.15,18.15,18.15,000,18.15
+2003-09-16,18.03,18.03,18.03,18.03,000,18.03
+2003-09-15,19.28,19.28,19.28,19.28,000,19.28
+2003-09-12,18.68,18.68,18.68,18.68,000,18.68
+2003-09-11,19.25,19.25,19.25,19.25,000,19.25
+2003-09-10,20.01,20.01,20.01,20.01,000,20.01
+2003-09-09,18.85,18.85,18.85,18.85,000,18.85
+2003-09-08,18.26,18.26,18.26,18.26,000,18.26
+2003-09-05,18.17,18.17,18.17,18.17,000,18.17
+2003-09-04,18.71,18.71,18.71,18.71,000,18.71
+2003-09-03,19.44,19.44,19.44,19.44,000,19.44
+2003-09-02,19.02,19.02,19.02,19.02,000,19.02
+2003-08-29,18.63,18.63,18.63,18.63,000,18.63
+2003-08-28,18.48,18.48,18.48,18.48,000,18.48
+2003-08-27,19.13,19.13,19.13,19.13,000,19.13
+2003-08-26,19.49,19.49,19.49,19.49,000,19.49
+2003-08-25,19.53,19.53,19.53,19.53,000,19.53
+2003-08-22,18.55,18.55,18.55,18.55,000,18.55
+2003-08-21,17.84,17.84,17.84,17.84,000,17.84
+2003-08-20,17.82,17.82,17.82,17.82,000,17.82
+2003-08-19,17.86,17.86,17.86,17.86,000,17.86
+2003-08-18,18.18,18.18,18.18,18.18,000,18.18
+2003-08-15,18.27,18.27,18.27,18.27,000,18.27
+2003-08-14,18.47,18.47,18.47,18.47,000,18.47
+2003-08-13,18.77,18.77,18.77,18.77,000,18.77
+2003-08-12,17.94,17.94,17.94,17.94,000,17.94
+2003-08-11,19.75,19.75,19.75,19.75,000,19.75
+2003-08-08,19.59,19.59,19.59,19.59,000,19.59
+2003-08-07,20.26,20.26,20.26,20.26,000,20.26
+2003-08-06,21.50,21.50,21.50,21.50,000,21.50
+2003-08-05,22.68,22.68,22.68,22.68,000,22.68
+2003-08-04,21.27,21.27,21.27,21.27,000,21.27
+2003-08-01,20.75,20.75,20.75,20.75,000,20.75
+2003-07-31,19.49,19.49,19.49,19.49,000,19.49
+2003-07-30,18.85,18.85,18.85,18.85,000,18.85
+2003-07-29,18.67,18.67,18.67,18.67,000,18.67
+2003-07-28,18.36,18.36,18.36,18.36,000,18.36
+2003-07-25,17.75,17.75,17.75,17.75,000,17.75
+2003-07-24,18.60,18.60,18.60,18.60,000,18.60
+2003-07-23,18.64,18.64,18.64,18.64,000,18.64
+2003-07-22,19.17,19.17,19.17,19.17,000,19.17
+2003-07-21,19.78,19.78,19.78,19.78,000,19.78
+2003-07-18,19.11,19.11,19.11,19.11,000,19.11
+2003-07-17,20.22,20.22,20.22,20.22,000,20.22
+2003-07-16,19.76,19.76,19.76,19.76,000,19.76
+2003-07-15,19.55,19.55,19.55,19.55,000,19.55
+2003-07-14,19.59,19.59,19.59,19.59,000,19.59
+2003-07-11,18.47,18.47,18.47,18.47,000,18.47
+2003-07-10,19.19,19.19,19.19,19.19,000,19.19
+2003-07-09,18.93,18.93,18.93,18.93,000,18.93
+2003-07-08,19.48,19.48,19.48,19.48,000,19.48
+2003-07-07,20.06,20.06,20.06,20.06,000,20.06
+2003-07-03,19.39,19.39,19.39,19.39,000,19.39
+2003-07-02,19.03,19.03,19.03,19.03,000,19.03
+2003-07-01,19.46,19.46,19.46,19.46,000,19.46
+2003-06-30,19.52,19.52,19.52,19.52,000,19.52
+2003-06-27,19.16,19.16,19.16,19.16,000,19.16
+2003-06-26,19.40,19.40,19.40,19.40,000,19.40
+2003-06-25,20.81,20.81,20.81,20.81,000,20.81
+2003-06-24,20.75,20.75,20.75,20.75,000,20.75
+2003-06-23,20.58,20.58,20.58,20.58,000,20.58
+2003-06-20,19.14,19.14,19.14,19.14,000,19.14
+2003-06-19,19.80,19.80,19.80,19.80,000,19.80
+2003-06-18,19.76,19.76,19.76,19.76,000,19.76
+2003-06-17,20.01,20.01,20.01,20.01,000,20.01
+2003-06-16,20.22,20.22,20.22,20.22,000,20.22
+2003-06-13,20.66,20.66,20.66,20.66,000,20.66
+2003-06-12,20.41,20.41,20.41,20.41,000,20.41
+2003-06-11,20.21,20.21,20.21,20.21,000,20.21
+2003-06-10,20.64,20.64,20.64,20.64,000,20.64
+2003-06-09,22.15,22.15,22.15,22.15,000,22.15
+2003-06-06,21.25,21.25,21.25,21.25,000,21.25
+2003-06-05,20.83,20.83,20.83,20.83,000,20.83
+2003-06-04,20.62,20.62,20.62,20.62,000,20.62
+2003-06-03,20.84,20.84,20.84,20.84,000,20.84
+2003-06-02,20.85,20.85,20.85,20.85,000,20.85
+2003-05-30,19.47,19.47,19.47,19.47,000,19.47
+2003-05-29,20.43,20.43,20.43,20.43,000,20.43
+2003-05-28,20.03,20.03,20.03,20.03,000,20.03
+2003-05-27,19.99,19.99,19.99,19.99,000,19.99
+2003-05-23,19.17,19.17,19.17,19.17,000,19.17
+2003-05-22,19.78,19.78,19.78,19.78,000,19.78
+2003-05-21,21.21,21.21,21.21,21.21,000,21.21
+2003-05-20,21.29,21.29,21.29,21.29,000,21.29
+2003-05-19,20.51,20.51,20.51,20.51,000,20.51
+2003-05-16,18.40,18.40,18.40,18.40,000,18.40
+2003-05-15,19.24,19.24,19.24,19.24,000,19.24
+2003-05-14,20.00,20.00,20.00,20.00,000,20.00
+2003-05-13,19.91,19.91,19.91,19.91,000,19.91
+2003-05-12,19.52,19.52,19.52,19.52,000,19.52
+2003-05-09,19.69,19.69,19.69,19.69,000,19.69
+2003-05-08,21.24,21.24,21.24,21.24,000,21.24
+2003-05-07,21.00,21.00,21.00,21.00,000,21.00
+2003-05-06,20.80,20.80,20.80,20.80,000,20.80
+2003-05-05,21.13,21.13,21.13,21.13,000,21.13
+2003-05-02,20.63,20.63,20.63,20.63,000,20.63
+2003-05-01,21.59,21.59,21.59,21.59,000,21.59
+2003-04-30,21.21,21.21,21.21,21.21,000,21.21
+2003-04-29,20.76,20.76,20.76,20.76,000,20.76
+2003-04-28,20.84,20.84,20.84,20.84,000,20.84
+2003-04-25,20.80,20.80,20.80,20.80,000,20.80
+2003-04-24,20.33,20.33,20.33,20.33,000,20.33
+2003-04-23,20.80,20.80,20.80,20.80,000,20.80
+2003-04-22,20.70,20.70,20.70,20.70,000,20.70
+2003-04-21,21.95,21.95,21.95,21.95,000,21.95
+2003-04-17,21.50,21.50,21.50,21.50,000,21.50
+2003-04-16,22.52,22.52,22.52,22.52,000,22.52
+2003-04-15,22.56,22.56,22.56,22.56,000,22.56
+2003-04-14,23.41,23.41,23.41,23.41,000,23.41
+2003-04-11,24.44,24.44,24.44,24.44,000,24.44
+2003-04-10,25.60,25.60,25.60,25.60,000,25.60
+2003-04-09,27.11,27.11,27.11,27.11,000,27.11
+2003-04-08,27.13,27.13,27.13,27.13,000,27.13
+2003-04-07,28.45,28.45,28.45,28.45,000,28.45
+2003-04-04,29.13,29.13,29.13,29.13,000,29.13
+2003-04-03,28.21,28.21,28.21,28.21,000,28.21
+2003-04-02,28.02,28.02,28.02,28.02,000,28.02
+2003-04-01,28.36,28.36,28.36,28.36,000,28.36
+2003-03-31,29.15,29.15,29.15,29.15,000,29.15
+2003-03-28,27.75,27.75,27.75,27.75,000,27.75
+2003-03-27,27.96,27.96,27.96,27.96,000,27.96
+2003-03-26,28.23,28.23,28.23,28.23,000,28.23
+2003-03-25,28.75,28.75,28.75,28.75,000,28.75
+2003-03-24,30.39,30.39,30.39,30.39,000,30.39
+2003-03-21,28.67,28.67,28.67,28.67,000,28.67
+2003-03-20,30.44,30.44,30.44,30.44,000,30.44
+2003-03-19,31.54,31.54,31.54,31.54,000,31.54
+2003-03-18,30.43,30.43,30.43,30.43,000,30.43
+2003-03-17,31.75,31.75,31.75,31.75,000,31.75
+2003-03-14,30.98,30.98,30.98,30.98,000,30.98
+2003-03-13,31.76,31.76,31.76,31.76,000,31.76
+2003-03-12,33.51,33.51,33.51,33.51,000,33.51
+2003-03-11,33.61,33.61,33.61,33.61,000,33.61
+2003-03-10,33.31,33.31,33.31,33.31,000,33.31
+2003-03-07,31.08,31.08,31.08,31.08,000,31.08
+2003-03-06,31.37,31.37,31.37,31.37,000,31.37
+2003-03-05,30.38,30.38,30.38,30.38,000,30.38
+2003-03-04,31.83,31.83,31.83,31.83,000,31.83
+2003-03-03,30.43,30.43,30.43,30.43,000,30.43
+2003-02-28,29.63,29.63,29.63,29.63,000,29.63
+2003-02-27,30.53,30.53,30.53,30.53,000,30.53
+2003-02-26,31.94,31.94,31.94,31.94,000,31.94
+2003-02-25,31.74,31.74,31.74,31.74,000,31.74
+2003-02-24,31.98,31.98,31.98,31.98,000,31.98
+2003-02-21,30.25,30.25,30.25,30.25,000,30.25
+2003-02-20,31.16,31.16,31.16,31.16,000,31.16
+2003-02-19,31.31,31.31,31.31,31.31,000,31.31
+2003-02-18,31.11,31.11,31.11,31.11,000,31.11
+2003-02-14,32.62,32.62,32.62,32.62,000,32.62
+2003-02-13,33.70,33.70,33.70,33.70,000,33.70
+2003-02-12,34.33,34.33,34.33,34.33,000,34.33
+2003-02-11,33.68,33.68,33.68,33.68,000,33.68
+2003-02-10,33.99,33.99,33.99,33.99,000,33.99
+2003-02-07,34.01,34.01,34.01,34.01,000,34.01
+2003-02-06,33.35,33.35,33.35,33.35,000,33.35
+2003-02-05,33.04,33.04,33.04,33.04,000,33.04
+2003-02-04,32.76,32.76,32.76,32.76,000,32.76
+2003-02-03,31.02,31.02,31.02,31.02,000,31.02
+2003-01-31,31.17,31.17,31.17,31.17,000,31.17
+2003-01-30,31.32,31.32,31.32,31.32,000,31.32
+2003-01-29,31.26,31.26,31.26,31.26,000,31.26
+2003-01-28,31.93,31.93,31.93,31.93,000,31.93
+2003-01-27,34.69,34.69,34.69,34.69,000,34.69
+2003-01-24,31.51,31.51,31.51,31.51,000,31.51
+2003-01-23,27.53,27.53,27.53,27.53,000,27.53
+2003-01-22,29.01,29.01,29.01,29.01,000,29.01
+2003-01-21,27.59,27.59,27.59,27.59,000,27.59
+2003-01-17,25.70,25.70,25.70,25.70,000,25.70
+2003-01-16,25.01,25.01,25.01,25.01,000,25.01
+2003-01-15,25.51,25.51,25.51,25.51,000,25.51
+2003-01-14,24.57,24.57,24.57,24.57,000,24.57
+2003-01-13,24.90,24.90,24.90,24.90,000,24.90
+2003-01-10,24.32,24.32,24.32,24.32,000,24.32
+2003-01-09,24.25,24.25,24.25,24.25,000,24.25
+2003-01-08,25.53,25.53,25.53,25.53,000,25.53
+2003-01-07,25.13,25.13,25.13,25.13,000,25.13
+2003-01-06,24.91,24.91,24.91,24.91,000,24.91
+2003-01-03,24.68,24.68,24.68,24.68,000,24.68
+2003-01-02,25.39,25.39,25.39,25.39,000,25.39
+2002-12-31,28.62,28.62,28.62,28.62,000,28.62
+2002-12-30,29.62,29.62,29.62,29.62,000,29.62
+2002-12-27,29.55,29.55,29.55,29.55,000,29.55
+2002-12-26,27.37,27.37,27.37,27.37,000,27.37
+2002-12-24,26.49,26.49,26.49,26.49,000,26.49
+2002-12-23,26.20,26.20,26.20,26.20,000,26.20
+2002-12-20,26.71,26.71,26.71,26.71,000,26.71
+2002-12-19,30.21,30.21,30.21,30.21,000,30.21
+2002-12-18,28.29,28.29,28.29,28.29,000,28.29
+2002-12-17,26.66,26.66,26.66,26.66,000,26.66
+2002-12-16,26.24,26.24,26.24,26.24,000,26.24
+2002-12-13,28.18,28.18,28.18,28.18,000,28.18
+2002-12-12,27.29,27.29,27.29,27.29,000,27.29
+2002-12-11,27.76,27.76,27.76,27.76,000,27.76
+2002-12-10,28.76,28.76,28.76,28.76,000,28.76
+2002-12-09,30.78,30.78,30.78,30.78,000,30.78
+2002-12-06,28.88,28.88,28.88,28.88,000,28.88
+2002-12-05,30.10,30.10,30.10,30.10,000,30.10
+2002-12-04,28.92,28.92,28.92,28.92,000,28.92
+2002-12-03,28.33,28.33,28.33,28.33,000,28.33
+2002-12-02,27.46,27.46,27.46,27.46,000,27.46
+2002-11-29,27.50,27.50,27.50,27.50,000,27.50
+2002-11-27,27.25,27.25,27.25,27.25,000,27.25
+2002-11-26,25.97,25.97,25.97,25.97,000,25.97
+2002-11-25,24.07,24.07,24.07,24.07,000,24.07
+2002-11-22,23.16,23.16,23.16,23.16,000,23.16
+2002-11-21,23.81,23.81,23.81,23.81,000,23.81
+2002-11-20,25.32,25.32,25.32,25.32,000,25.32
+2002-11-19,27.41,27.41,27.41,27.41,000,27.41
+2002-11-18,27.66,27.66,27.66,27.66,000,27.66
+2002-11-15,26.65,26.65,26.65,26.65,000,26.65
+2002-11-14,28.67,28.67,28.67,28.67,000,28.67
+2002-11-13,31.24,31.24,31.24,31.24,000,31.24
+2002-11-12,30.58,30.58,30.58,30.58,000,30.58
+2002-11-11,31.30,31.30,31.30,31.30,000,31.30
+2002-11-08,29.41,29.41,29.41,29.41,000,29.41
+2002-11-07,30.26,30.26,30.26,30.26,000,30.26
+2002-11-06,30.31,30.31,30.31,30.31,000,30.31
+2002-11-05,31.23,31.23,31.23,31.23,000,31.23
+2002-11-04,30.82,30.82,30.82,30.82,000,30.82
+2002-11-01,29.30,29.30,29.30,29.30,000,29.30
+2002-10-31,31.14,31.14,31.14,31.14,000,31.14
+2002-10-30,31.23,31.23,31.23,31.23,000,31.23
+2002-10-29,32.27,32.27,32.27,32.27,000,32.27
+2002-10-28,31.07,31.07,31.07,31.07,000,31.07
+2002-10-25,30.00,30.00,30.00,30.00,000,30.00
+2002-10-24,34.03,34.03,34.03,34.03,000,34.03
+2002-10-23,33.20,33.20,33.20,33.20,000,33.20
+2002-10-22,34.09,34.09,34.09,34.09,000,34.09
+2002-10-21,33.11,33.11,33.11,33.11,000,33.11
+2002-10-18,33.53,33.53,33.53,33.53,000,33.53
+2002-10-17,34.10,34.10,34.10,34.10,000,34.10
+2002-10-16,36.00,36.00,36.00,36.00,000,36.00
+2002-10-15,34.02,34.02,34.02,34.02,000,34.02
+2002-10-14,36.04,36.04,36.04,36.04,000,36.04
+2002-10-11,35.70,35.70,35.70,35.70,000,35.70
+2002-10-10,37.55,37.55,37.55,37.55,000,37.55
+2002-10-09,42.13,42.13,42.13,42.13,000,42.13
+2002-10-08,41.02,41.02,41.02,41.02,000,41.02
+2002-10-07,42.64,42.64,42.64,42.64,000,42.64
+2002-10-04,39.46,39.46,39.46,39.46,000,39.46
+2002-10-03,37.31,37.31,37.31,37.31,000,37.31
+2002-10-02,36.83,36.83,36.83,36.83,000,36.83
+2002-10-01,34.12,34.12,34.12,34.12,000,34.12
+2002-09-30,39.69,39.69,39.69,39.69,000,39.69
+2002-09-27,36.97,36.97,36.97,36.97,000,36.97
+2002-09-26,34.60,34.60,34.60,34.60,000,34.60
+2002-09-25,37.33,37.33,37.33,37.33,000,37.33
+2002-09-24,40.52,40.52,40.52,40.52,000,40.52
+2002-09-23,39.68,39.68,39.68,39.68,000,39.68
+2002-09-20,38.98,38.98,38.98,38.98,000,38.98
+2002-09-19,40.65,40.65,40.65,40.65,000,40.65
+2002-09-18,37.52,37.52,37.52,37.52,000,37.52
+2002-09-17,38.01,38.01,38.01,38.01,000,38.01
+2002-09-16,36.74,36.74,36.74,36.74,000,36.74
+2002-09-13,35.82,35.82,35.82,35.82,000,35.82
+2002-09-12,37.50,37.50,37.50,37.50,000,37.50
+2002-09-11,34.81,34.81,34.81,34.81,000,34.81
+2002-09-10,35.08,35.08,35.08,35.08,000,35.08
+2002-09-09,36.45,36.45,36.45,36.45,000,36.45
+2002-09-06,36.33,36.33,36.33,36.33,000,36.33
+2002-09-05,38.86,38.86,38.86,38.86,000,38.86
+2002-09-04,37.44,37.44,37.44,37.44,000,37.44
+2002-09-03,39.97,39.97,39.97,39.97,000,39.97
+2002-08-30,32.64,32.64,32.64,32.64,000,32.64
+2002-08-29,33.67,33.67,33.67,33.67,000,33.67
+2002-08-28,33.32,33.32,33.32,33.32,000,33.32
+2002-08-27,30.11,30.11,30.11,30.11,000,30.11
+2002-08-26,29.89,29.89,29.89,29.89,000,29.89
+2002-08-23,29.32,29.32,29.32,29.32,000,29.32
+2002-08-22,27.75,27.75,27.75,27.75,000,27.75
+2002-08-21,28.23,28.23,28.23,28.23,000,28.23
+2002-08-20,29.59,29.59,29.59,29.59,000,29.59
+2002-08-19,28.61,28.61,28.61,28.61,000,28.61
+2002-08-16,28.81,28.81,28.81,28.81,000,28.81
+2002-08-15,29.43,29.43,29.43,29.43,000,29.43
+2002-08-14,32.36,32.36,32.36,32.36,000,32.36
+2002-08-13,35.82,35.82,35.82,35.82,000,35.82
+2002-08-12,37.05,37.05,37.05,37.05,000,37.05
+2002-08-09,35.33,35.33,35.33,35.33,000,35.33
+2002-08-08,36.33,36.33,36.33,36.33,000,36.33
+2002-08-07,38.73,38.73,38.73,38.73,000,38.73
+2002-08-06,42.03,42.03,42.03,42.03,000,42.03
+2002-08-05,45.08,45.08,45.08,45.08,000,45.08
+2002-08-02,41.29,41.29,41.29,41.29,000,41.29
+2002-08-01,36.95,36.95,36.95,36.95,000,36.95
+2002-07-31,32.03,32.03,32.03,32.03,000,32.03
+2002-07-30,31.92,31.92,31.92,31.92,000,31.92
+2002-07-29,31.33,31.33,31.33,31.33,000,31.33
+2002-07-26,35.51,35.51,35.51,35.51,000,35.51
+2002-07-25,39.27,39.27,39.27,39.27,000,39.27
+2002-07-24,39.86,39.86,39.86,39.86,000,39.86
+2002-07-23,44.92,44.92,44.92,44.92,000,44.92
+2002-07-22,41.87,41.87,41.87,41.87,000,41.87
+2002-07-19,38.17,38.17,38.17,38.17,000,38.17
+2002-07-18,35.12,35.12,35.12,35.12,000,35.12
+2002-07-17,35.45,35.45,35.45,35.45,000,35.45
+2002-07-16,36.65,36.65,36.65,36.65,000,36.65
+2002-07-15,35.03,35.03,35.03,35.03,000,35.03
+2002-07-12,32.94,32.94,32.94,32.94,000,32.94
+2002-07-11,33.85,33.85,33.85,33.85,000,33.85
+2002-07-10,34.10,34.10,34.10,34.10,000,34.10
+2002-07-09,30.22,30.22,30.22,30.22,000,30.22
+2002-07-08,28.25,28.25,28.25,28.25,000,28.25
+2002-07-05,27.11,27.11,27.11,27.11,000,27.11
+2002-07-03,29.42,29.42,29.42,29.42,000,29.42
+2002-07-02,28.96,28.96,28.96,28.96,000,28.96
+2002-07-01,27.11,27.11,27.11,27.11,000,27.11
+2002-06-28,25.40,25.40,25.40,25.40,000,25.40
+2002-06-27,26.29,26.29,26.29,26.29,000,26.29
+2002-06-26,28.42,28.42,28.42,28.42,000,28.42
+2002-06-25,27.84,27.84,27.84,27.84,000,27.84
+2002-06-24,26.98,26.98,26.98,26.98,000,26.98
+2002-06-21,27.23,27.23,27.23,27.23,000,27.23
+2002-06-20,27.48,27.48,27.48,27.48,000,27.48
+2002-06-19,26.06,26.06,26.06,26.06,000,26.06
+2002-06-18,24.24,24.24,24.24,24.24,000,24.24
+2002-06-17,24.64,24.64,24.64,24.64,000,24.64
+2002-06-14,25.96,25.96,25.96,25.96,000,25.96
+2002-06-13,25.02,25.02,25.02,25.02,000,25.02
+2002-06-12,24.15,24.15,24.15,24.15,000,24.15
+2002-06-11,24.45,24.45,24.45,24.45,000,24.45
+2002-06-10,23.72,23.72,23.72,23.72,000,23.72
+2002-06-07,23.51,23.51,23.51,23.51,000,23.51
+2002-06-06,24.16,24.16,24.16,24.16,000,24.16
+2002-06-05,22.61,22.61,22.61,22.61,000,22.61
+2002-06-04,23.89,23.89,23.89,23.89,000,23.89
+2002-06-03,23.37,23.37,23.37,23.37,000,23.37
+2002-05-31,19.98,19.98,19.98,19.98,000,19.98
+2002-05-30,20.61,20.61,20.61,20.61,000,20.61
+2002-05-29,20.39,20.39,20.39,20.39,000,20.39
+2002-05-28,20.31,20.31,20.31,20.31,000,20.31
+2002-05-24,18.90,18.90,18.90,18.90,000,18.90
+2002-05-23,18.23,18.23,18.23,18.23,000,18.23
+2002-05-22,19.58,19.58,19.58,19.58,000,19.58
+2002-05-21,20.05,20.05,20.05,20.05,000,20.05
+2002-05-20,19.24,19.24,19.24,19.24,000,19.24
+2002-05-17,17.70,17.70,17.70,17.70,000,17.70
+2002-05-16,18.50,18.50,18.50,18.50,000,18.50
+2002-05-15,19.19,19.19,19.19,19.19,000,19.19
+2002-05-14,19.35,19.35,19.35,19.35,000,19.35
+2002-05-13,20.72,20.72,20.72,20.72,000,20.72
+2002-05-10,22.41,22.41,22.41,22.41,000,22.41
+2002-05-09,21.56,21.56,21.56,21.56,000,21.56
+2002-05-08,20.39,20.39,20.39,20.39,000,20.39
+2002-05-07,21.94,21.94,21.94,21.94,000,21.94
+2002-05-06,22.56,22.56,22.56,22.56,000,22.56
+2002-05-03,20.19,20.19,20.19,20.19,000,20.19
+2002-05-02,20.07,20.07,20.07,20.07,000,20.07
+2002-05-01,20.06,20.06,20.06,20.06,000,20.06
+2002-04-30,21.91,21.91,21.91,21.91,000,21.91
+2002-04-29,24.05,24.05,24.05,24.05,000,24.05
+2002-04-26,22.14,22.14,22.14,22.14,000,22.14
+2002-04-25,20.95,20.95,20.95,20.95,000,20.95
+2002-04-24,20.77,20.77,20.77,20.77,000,20.77
+2002-04-23,20.28,20.28,20.28,20.28,000,20.28
+2002-04-22,19.77,19.77,19.77,19.77,000,19.77
+2002-04-19,18.30,18.30,18.30,18.30,000,18.30
+2002-04-18,19.29,19.29,19.29,19.29,000,19.29
+2002-04-17,18.43,18.43,18.43,18.43,000,18.43
+2002-04-16,18.11,18.11,18.11,18.11,000,18.11
+2002-04-15,19.82,19.82,19.82,19.82,000,19.82
+2002-04-12,19.42,19.42,19.42,19.42,000,19.42
+2002-04-11,20.30,20.30,20.30,20.30,000,20.30
+2002-04-10,18.19,18.19,18.19,18.19,000,18.19
+2002-04-09,19.47,19.47,19.47,19.47,000,19.47
+2002-04-08,19.61,19.61,19.61,19.61,000,19.61
+2002-04-05,19.13,19.13,19.13,19.13,000,19.13
+2002-04-04,19.78,19.78,19.78,19.78,000,19.78
+2002-04-03,20.20,20.20,20.20,20.20,000,20.20
+2002-04-02,19.16,19.16,19.16,19.16,000,19.16
+2002-04-01,18.73,18.73,18.73,18.73,000,18.73
+2002-03-28,17.40,17.40,17.40,17.40,000,17.40
+2002-03-27,17.70,17.70,17.70,17.70,000,17.70
+2002-03-26,18.13,18.13,18.13,18.13,000,18.13
+2002-03-25,18.48,18.48,18.48,18.48,000,18.48
+2002-03-22,17.77,17.77,17.77,17.77,000,17.77
+2002-03-21,18.15,18.15,18.15,18.15,000,18.15
+2002-03-20,18.46,18.46,18.46,18.46,000,18.46
+2002-03-19,18.16,18.16,18.16,18.16,000,18.16
+2002-03-18,18.93,18.93,18.93,18.93,000,18.93
+2002-03-15,18.42,18.42,18.42,18.42,000,18.42
+2002-03-14,19.20,19.20,19.20,19.20,000,19.20
+2002-03-13,19.46,19.46,19.46,19.46,000,19.46
+2002-03-12,19.59,19.59,19.59,19.59,000,19.59
+2002-03-11,19.84,19.84,19.84,19.84,000,19.84
+2002-03-08,19.27,19.27,19.27,19.27,000,19.27
+2002-03-07,20.04,20.04,20.04,20.04,000,20.04
+2002-03-06,19.94,19.94,19.94,19.94,000,19.94
+2002-03-05,20.30,20.30,20.30,20.30,000,20.30
+2002-03-04,20.50,20.50,20.50,20.50,000,20.50
+2002-03-01,19.96,19.96,19.96,19.96,000,19.96
+2002-02-28,21.59,21.59,21.59,21.59,000,21.59
+2002-02-27,21.49,21.49,21.49,21.49,000,21.49
+2002-02-26,21.68,21.68,21.68,21.68,000,21.68
+2002-02-25,21.84,21.84,21.84,21.84,000,21.84
+2002-02-22,22.86,22.86,22.86,22.86,000,22.86
+2002-02-21,23.80,23.80,23.80,23.80,000,23.80
+2002-02-20,22.66,22.66,22.66,22.66,000,22.66
+2002-02-19,24.43,24.43,24.43,24.43,000,24.43
+2002-02-15,22.37,22.37,22.37,22.37,000,22.37
+2002-02-14,21.77,21.77,21.77,21.77,000,21.77
+2002-02-13,20.85,20.85,20.85,20.85,000,20.85
+2002-02-12,21.62,21.62,21.62,21.62,000,21.62
+2002-02-11,21.78,21.78,21.78,21.78,000,21.78
+2002-02-08,23.26,23.26,23.26,23.26,000,23.26
+2002-02-07,25.11,25.11,25.11,25.11,000,25.11
+2002-02-06,26.09,26.09,26.09,26.09,000,26.09
+2002-02-05,25.45,25.45,25.45,25.45,000,25.45
+2002-02-04,24.87,24.87,24.87,24.87,000,24.87
+2002-02-01,21.12,21.12,21.12,21.12,000,21.12
+2002-01-31,21.09,21.09,21.09,21.09,000,21.09
+2002-01-30,23.22,23.22,23.22,23.22,000,23.22
+2002-01-29,24.35,24.35,24.35,24.35,000,24.35
+2002-01-28,21.14,21.14,21.14,21.14,000,21.14
+2002-01-25,21.01,21.01,21.01,21.01,000,21.01
+2002-01-24,21.15,21.15,21.15,21.15,000,21.15
+2002-01-23,21.88,21.88,21.88,21.88,000,21.88
+2002-01-22,23.61,23.61,23.61,23.61,000,23.61
+2002-01-18,22.52,22.52,22.52,22.52,000,22.52
+2002-01-17,22.25,22.25,22.25,22.25,000,22.25
+2002-01-16,23.45,23.45,23.45,23.45,000,23.45
+2002-01-15,22.70,22.70,22.70,22.70,000,22.70
+2002-01-14,23.58,23.58,23.58,23.58,000,23.58
+2002-01-11,22.60,22.60,22.60,22.60,000,22.60
+2002-01-10,22.03,22.03,22.03,22.03,000,22.03
+2002-01-09,22.13,22.13,22.13,22.13,000,22.13
+2002-01-08,21.83,21.83,21.83,21.83,000,21.83
+2002-01-07,21.67,21.67,21.67,21.67,000,21.67
+2002-01-04,20.45,20.45,20.45,20.45,000,20.45
+2002-01-03,21.34,21.34,21.34,21.34,000,21.34
+2002-01-02,22.71,22.71,22.71,22.71,000,22.71
+2001-12-31,23.80,23.80,23.80,23.80,000,23.80
+2001-12-28,21.40,21.40,21.40,21.40,000,21.40
+2001-12-27,21.59,21.59,21.59,21.59,000,21.59
+2001-12-26,22.29,22.29,22.29,22.29,000,22.29
+2001-12-24,22.62,22.62,22.62,22.62,000,22.62
+2001-12-21,22.50,22.50,22.50,22.50,000,22.50
+2001-12-20,23.67,23.67,23.67,23.67,000,23.67
+2001-12-19,22.58,22.58,22.58,22.58,000,22.58
+2001-12-18,23.29,23.29,23.29,23.29,000,23.29
+2001-12-17,24.26,24.26,24.26,24.26,000,24.26
+2001-12-14,24.63,24.63,24.63,24.63,000,24.63
+2001-12-13,25.91,25.91,25.91,25.91,000,25.91
+2001-12-12,24.87,24.87,24.87,24.87,000,24.87
+2001-12-11,25.30,25.30,25.30,25.30,000,25.30
+2001-12-10,25.62,25.62,25.62,25.62,000,25.62
+2001-12-07,23.49,23.49,23.49,23.49,000,23.49
+2001-12-06,23.71,23.71,23.71,23.71,000,23.71
+2001-12-05,23.02,23.02,23.02,23.02,000,23.02
+2001-12-04,24.08,24.08,24.08,24.08,000,24.08
+2001-12-03,25.77,25.77,25.77,25.77,000,25.77
+2001-11-30,24.92,24.92,24.92,24.92,000,24.92
+2001-11-29,25.18,25.18,25.18,25.18,000,25.18
+2001-11-28,25.90,25.90,25.90,25.90,000,25.90
+2001-11-27,24.00,24.00,24.00,24.00,000,24.00
+2001-11-26,23.79,23.79,23.79,23.79,000,23.79
+2001-11-23,23.25,23.25,23.25,23.25,000,23.25
+2001-11-21,24.19,24.19,24.19,24.19,000,24.19
+2001-11-20,24.12,24.12,24.12,24.12,000,24.12
+2001-11-19,24.46,24.46,24.46,24.46,000,24.46
+2001-11-16,25.07,25.07,25.07,25.07,000,25.07
+2001-11-15,25.56,25.56,25.56,25.56,000,25.56
+2001-11-14,26.56,26.56,26.56,26.56,000,26.56
+2001-11-13,26.47,26.47,26.47,26.47,000,26.47
+2001-11-12,29.35,29.35,29.35,29.35,000,29.35
+2001-11-09,27.44,27.44,27.44,27.44,000,27.44
+2001-11-08,28.62,28.62,28.62,28.62,000,28.62
+2001-11-07,29.13,29.13,29.13,29.13,000,29.13
+2001-11-06,28.80,28.80,28.80,28.80,000,28.80
+2001-11-05,30.50,30.50,30.50,30.50,000,30.50
+2001-11-02,30.71,30.71,30.71,30.71,000,30.71
+2001-11-01,32.31,32.31,32.31,32.31,000,32.31
+2001-10-31,33.56,33.56,33.56,33.56,000,33.56
+2001-10-30,33.46,33.46,33.46,33.46,000,33.46
+2001-10-29,31.64,31.64,31.64,31.64,000,31.64
+2001-10-26,28.42,28.42,28.42,28.42,000,28.42
+2001-10-25,29.46,29.46,29.46,29.46,000,29.46
+2001-10-24,30.95,30.95,30.95,30.95,000,30.95
+2001-10-23,32.00,32.00,32.00,32.00,000,32.00
+2001-10-22,32.25,32.25,32.25,32.25,000,32.25
+2001-10-19,34.11,34.11,34.11,34.11,000,34.11
+2001-10-18,34.95,34.95,34.95,34.95,000,34.95
+2001-10-17,35.08,35.08,35.08,35.08,000,35.08
+2001-10-16,32.88,32.88,32.88,32.88,000,32.88
+2001-10-15,35.31,35.31,35.31,35.31,000,35.31
+2001-10-12,35.27,35.27,35.27,35.27,000,35.27
+2001-10-11,31.50,31.50,31.50,31.50,000,31.50
+2001-10-10,31.60,31.60,31.60,31.60,000,31.60
+2001-10-09,34.83,34.83,34.83,34.83,000,34.83
+2001-10-08,35.12,35.12,35.12,35.12,000,35.12
+2001-10-05,33.39,33.39,33.39,33.39,000,33.39
+2001-10-04,31.97,31.97,31.97,31.97,000,31.97
+2001-10-03,31.34,31.34,31.34,31.34,000,31.34
+2001-10-02,31.18,31.18,31.18,31.18,000,31.18
+2001-10-01,32.32,32.32,32.32,32.32,000,32.32
+2001-09-28,31.93,31.93,31.93,31.93,000,31.93
+2001-09-27,34.00,34.00,34.00,34.00,000,34.00
+2001-09-26,35.26,35.26,35.26,35.26,000,35.26
+2001-09-25,35.81,35.81,35.81,35.81,000,35.81
+2001-09-24,37.75,37.75,37.75,37.75,000,37.75
+2001-09-21,42.66,42.66,42.66,42.66,000,42.66
+2001-09-20,43.74,43.74,43.74,43.74,000,43.74
+2001-09-19,40.56,40.56,40.56,40.56,000,40.56
+2001-09-18,38.87,38.87,38.87,38.87,000,38.87
+2001-09-17,41.76,41.76,41.76,41.76,000,41.76
+2001-09-10,31.84,31.84,31.84,31.84,000,31.84
+2001-09-07,30.99,30.99,30.99,30.99,000,30.99
+2001-09-06,28.61,28.61,28.61,28.61,000,28.61
+2001-09-05,26.35,26.35,26.35,26.35,000,26.35
+2001-09-04,25.85,25.85,25.85,25.85,000,25.85
+2001-08-31,24.92,24.92,24.92,24.92,000,24.92
+2001-08-30,25.41,25.41,25.41,25.41,000,25.41
+2001-08-29,23.03,23.03,23.03,23.03,000,23.03
+2001-08-28,22.00,22.00,22.00,22.00,000,22.00
+2001-08-27,20.56,20.56,20.56,20.56,000,20.56
+2001-08-24,19.71,19.71,19.71,19.71,000,19.71
+2001-08-23,22.23,22.23,22.23,22.23,000,22.23
+2001-08-22,22.44,22.44,22.44,22.44,000,22.44
+2001-08-21,24.40,24.40,24.40,24.40,000,24.40
+2001-08-20,22.87,22.87,22.87,22.87,000,22.87
+2001-08-17,23.84,23.84,23.84,23.84,000,23.84
+2001-08-16,21.54,21.54,21.54,21.54,000,21.54
+2001-08-15,20.91,20.91,20.91,20.91,000,20.91
+2001-08-14,20.48,20.48,20.48,20.48,000,20.48
+2001-08-13,20.42,20.42,20.42,20.42,000,20.42
+2001-08-10,20.55,20.55,20.55,20.55,000,20.55
+2001-08-09,21.02,21.02,21.02,21.02,000,21.02
+2001-08-08,22.32,22.32,22.32,22.32,000,22.32
+2001-08-07,21.01,21.01,21.01,21.01,000,21.01
+2001-08-06,21.89,21.89,21.89,21.89,000,21.89
+2001-08-03,19.89,19.89,19.89,19.89,000,19.89
+2001-08-02,20.09,20.09,20.09,20.09,000,20.09
+2001-08-01,20.56,20.56,20.56,20.56,000,20.56
+2001-07-31,21.62,21.62,21.62,21.62,000,21.62
+2001-07-30,22.69,22.69,22.69,22.69,000,22.69
+2001-07-27,22.00,22.00,22.00,22.00,000,22.00
+2001-07-26,23.01,23.01,23.01,23.01,000,23.01
+2001-07-25,24.00,24.00,24.00,24.00,000,24.00
+2001-07-24,25.24,25.24,25.24,25.24,000,25.24
+2001-07-23,23.74,23.74,23.74,23.74,000,23.74
+2001-07-20,22.34,22.34,22.34,22.34,000,22.34
+2001-07-19,22.51,22.51,22.51,22.51,000,22.51
+2001-07-18,23.60,23.60,23.60,23.60,000,23.60
+2001-07-17,22.61,22.61,22.61,22.61,000,22.61
+2001-07-16,22.91,22.91,22.91,22.91,000,22.91
+2001-07-13,21.14,21.14,21.14,21.14,000,21.14
+2001-07-12,22.09,22.09,22.09,22.09,000,22.09
+2001-07-11,24.01,24.01,24.01,24.01,000,24.01
+2001-07-10,23.25,23.25,23.25,23.25,000,23.25
+2001-07-09,22.48,22.48,22.48,22.48,000,22.48
+2001-07-06,21.63,21.63,21.63,21.63,000,21.63
+2001-07-05,20.09,20.09,20.09,20.09,000,20.09
+2001-07-03,18.92,18.92,18.92,18.92,000,18.92
+2001-07-02,18.76,18.76,18.76,18.76,000,18.76
+2001-06-29,19.06,19.06,19.06,19.06,000,19.06
+2001-06-28,20.01,20.01,20.01,20.01,000,20.01
+2001-06-27,20.88,20.88,20.88,20.88,000,20.88
+2001-06-26,21.20,21.20,21.20,21.20,000,21.20
+2001-06-25,20.67,20.67,20.67,20.67,000,20.67
+2001-06-22,20.02,20.02,20.02,20.02,000,20.02
+2001-06-21,19.38,19.38,19.38,19.38,000,19.38
+2001-06-20,21.71,21.71,21.71,21.71,000,21.71
+2001-06-19,22.34,22.34,22.34,22.34,000,22.34
+2001-06-18,23.17,23.17,23.17,23.17,000,23.17
+2001-06-15,22.81,22.81,22.81,22.81,000,22.81
+2001-06-14,23.12,23.12,23.12,23.12,000,23.12
+2001-06-13,21.45,21.45,21.45,21.45,000,21.45
+2001-06-12,20.70,20.70,20.70,20.70,000,20.70
+2001-06-11,20.70,20.70,20.70,20.70,000,20.70
+2001-06-08,19.92,19.92,19.92,19.92,000,19.92
+2001-06-07,19.67,19.67,19.67,19.67,000,19.67
+2001-06-06,20.39,20.39,20.39,20.39,000,20.39
+2001-06-05,19.58,19.58,19.58,19.58,000,19.58
+2001-06-04,21.38,21.38,21.38,21.38,000,21.38
+2001-06-01,21.59,21.59,21.59,21.59,000,21.59
+2001-05-31,22.64,22.64,22.64,22.64,000,22.64
+2001-05-30,22.76,22.76,22.76,22.76,000,22.76
+2001-05-29,22.14,22.14,22.14,22.14,000,22.14
+2001-05-25,20.60,20.60,20.60,20.60,000,20.60
+2001-05-24,20.57,20.57,20.57,20.57,000,20.57
+2001-05-23,22.08,22.08,22.08,22.08,000,22.08
+2001-05-22,21.35,21.35,21.35,21.35,000,21.35
+2001-05-21,20.76,20.76,20.76,20.76,000,20.76
+2001-05-18,21.23,21.23,21.23,21.23,000,21.23
+2001-05-17,21.47,21.47,21.47,21.47,000,21.47
+2001-05-16,21.89,21.89,21.89,21.89,000,21.89
+2001-05-15,23.71,23.71,23.71,23.71,000,23.71
+2001-05-14,24.26,24.26,24.26,24.26,000,24.26
+2001-05-11,23.54,23.54,23.54,23.54,000,23.54
+2001-05-10,24.00,24.00,24.00,24.00,000,24.00
+2001-05-09,24.35,24.35,24.35,24.35,000,24.35
+2001-05-08,24.44,24.44,24.44,24.44,000,24.44
+2001-05-07,24.86,24.86,24.86,24.86,000,24.86
+2001-05-04,23.91,23.91,23.91,23.91,000,23.91
+2001-05-03,25.78,25.78,25.78,25.78,000,25.78
+2001-05-02,24.23,24.23,24.23,24.23,000,24.23
+2001-05-01,24.20,24.20,24.20,24.20,000,24.20
+2001-04-30,25.48,25.48,25.48,25.48,000,25.48
+2001-04-27,26.61,26.61,26.61,26.61,000,26.61
+2001-04-26,27.49,27.49,27.49,27.49,000,27.49
+2001-04-25,27.40,27.40,27.40,27.40,000,27.40
+2001-04-24,28.49,28.49,28.49,28.49,000,28.49
+2001-04-23,28.16,28.16,28.16,28.16,000,28.16
+2001-04-20,25.38,25.38,25.38,25.38,000,25.38
+2001-04-19,24.16,24.16,24.16,24.16,000,24.16
+2001-04-18,24.13,24.13,24.13,24.13,000,24.13
+2001-04-17,25.61,25.61,25.61,25.61,000,25.61
+2001-04-16,26.33,26.33,26.33,26.33,000,26.33
+2001-04-12,26.12,26.12,26.12,26.12,000,26.12
+2001-04-11,28.46,28.46,28.46,28.46,000,28.46
+2001-04-10,29.44,29.44,29.44,29.44,000,29.44
+2001-04-09,31.91,31.91,31.91,31.91,000,31.91
+2001-04-06,31.69,31.69,31.69,31.69,000,31.69
+2001-04-05,29.94,29.94,29.94,29.94,000,29.94
+2001-04-04,34.07,34.07,34.07,34.07,000,34.07
+2001-04-03,34.72,34.72,34.72,34.72,000,34.72
+2001-04-02,31.21,31.21,31.21,31.21,000,31.21
+2001-03-30,28.64,28.64,28.64,28.64,000,28.64
+2001-03-29,29.17,29.17,29.17,29.17,000,29.17
+2001-03-28,28.58,28.58,28.58,28.58,000,28.58
+2001-03-27,27.04,27.04,27.04,27.04,000,27.04
+2001-03-26,29.04,29.04,29.04,29.04,000,29.04
+2001-03-23,30.45,30.45,30.45,30.45,000,30.45
+2001-03-22,32.84,32.84,32.84,32.84,000,32.84
+2001-03-21,31.93,31.93,31.93,31.93,000,31.93
+2001-03-20,30.96,30.96,30.96,30.96,000,30.96
+2001-03-19,29.78,29.78,29.78,29.78,000,29.78
+2001-03-16,29.91,29.91,29.91,29.91,000,29.91
+2001-03-15,28.56,28.56,28.56,28.56,000,28.56
+2001-03-14,29.61,29.61,29.61,29.61,000,29.61
+2001-03-13,27.55,27.55,27.55,27.55,000,27.55
+2001-03-12,30.32,30.32,30.32,30.32,000,30.32
+2001-03-09,25.62,25.62,25.62,25.62,000,25.62
+2001-03-08,24.29,24.29,24.29,24.29,000,24.29
+2001-03-07,24.12,24.12,24.12,24.12,000,24.12
+2001-03-06,25.89,25.89,25.89,25.89,000,25.89
+2001-03-05,27.12,27.12,27.12,27.12,000,27.12
+2001-03-02,27.43,27.43,27.43,27.43,000,27.43
+2001-03-01,28.08,28.08,28.08,28.08,000,28.08
+2001-02-28,28.35,28.35,28.35,28.35,000,28.35
+2001-02-27,26.49,26.49,26.49,26.49,000,26.49
+2001-02-26,25.43,25.43,25.43,25.43,000,25.43
+2001-02-23,27.21,27.21,27.21,27.21,000,27.21
+2001-02-22,26.76,26.76,26.76,26.76,000,26.76
+2001-02-21,25.75,25.75,25.75,25.75,000,25.75
+2001-02-20,24.69,24.69,24.69,24.69,000,24.69
+2001-02-16,22.12,22.12,22.12,22.12,000,22.12
+2001-02-15,20.27,20.27,20.27,20.27,000,20.27
+2001-02-14,21.52,21.52,21.52,21.52,000,21.52
+2001-02-13,21.37,21.37,21.37,21.37,000,21.37
+2001-02-12,21.92,21.92,21.92,21.92,000,21.92
+2001-02-09,22.03,22.03,22.03,22.03,000,22.03
+2001-02-08,21.46,21.46,21.46,21.46,000,21.46
+2001-02-07,21.67,21.67,21.67,21.67,000,21.67
+2001-02-06,21.98,21.98,21.98,21.98,000,21.98
+2001-02-05,22.19,22.19,22.19,22.19,000,22.19
+2001-02-02,23.19,23.19,23.19,23.19,000,23.19
+2001-02-01,21.66,21.66,21.66,21.66,000,21.66
+2001-01-31,22.02,22.02,22.02,22.02,000,22.02
+2001-01-30,22.57,22.57,22.57,22.57,000,22.57
+2001-01-29,22.61,22.61,22.61,22.61,000,22.61
+2001-01-26,22.57,22.57,22.57,22.57,000,22.57
+2001-01-25,22.64,22.64,22.64,22.64,000,22.64
+2001-01-24,22.03,22.03,22.03,22.03,000,22.03
+2001-01-23,21.57,21.57,21.57,21.57,000,21.57
+2001-01-22,23.25,23.25,23.25,23.25,000,23.25
+2001-01-19,23.24,23.24,23.24,23.24,000,23.24
+2001-01-18,23.37,23.37,23.37,23.37,000,23.37
+2001-01-17,24.93,24.93,24.93,24.93,000,24.93
+2001-01-16,25.28,25.28,25.28,25.28,000,25.28
+2001-01-12,24.56,24.56,24.56,24.56,000,24.56
+2001-01-11,25.79,25.79,25.79,25.79,000,25.79
+2001-01-10,26.80,26.80,26.80,26.80,000,26.80
+2001-01-09,27.99,27.99,27.99,27.99,000,27.99
+2001-01-08,29.84,29.84,29.84,29.84,000,29.84
+2001-01-05,28.67,28.67,28.67,28.67,000,28.67
+2001-01-04,26.97,26.97,26.97,26.97,000,26.97
+2001-01-03,26.60,26.60,26.60,26.60,000,26.60
+2001-01-02,29.99,29.99,29.99,29.99,000,29.99
+2000-12-29,26.85,26.85,26.85,26.85,000,26.85
+2000-12-28,26.57,26.57,26.57,26.57,000,26.57
+2000-12-27,28.14,28.14,28.14,28.14,000,28.14
+2000-12-26,28.73,28.73,28.73,28.73,000,28.73
+2000-12-22,27.55,27.55,27.55,27.55,000,27.55
+2000-12-21,29.66,29.66,29.66,29.66,000,29.66
+2000-12-20,31.74,31.74,31.74,31.74,000,31.74
+2000-12-19,27.17,27.17,27.17,27.17,000,27.17
+2000-12-18,27.70,27.70,27.70,27.70,000,27.70
+2000-12-15,26.55,26.55,26.55,26.55,000,26.55
+2000-12-14,24.86,24.86,24.86,24.86,000,24.86
+2000-12-13,23.63,23.63,23.63,23.63,000,23.63
+2000-12-12,24.88,24.88,24.88,24.88,000,24.88
+2000-12-11,23.51,23.51,23.51,23.51,000,23.51
+2000-12-08,22.41,22.41,22.41,22.41,000,22.41
+2000-12-07,25.34,25.34,25.34,25.34,000,25.34
+2000-12-06,25.07,25.07,25.07,25.07,000,25.07
+2000-12-05,24.99,24.99,24.99,24.99,000,24.99
+2000-12-04,27.78,27.78,27.78,27.78,000,27.78
+2000-12-01,27.48,27.48,27.48,27.48,000,27.48
+2000-11-30,29.65,29.65,29.65,29.65,000,29.65
+2000-11-29,27.49,27.49,27.49,27.49,000,27.49
+2000-11-28,27.64,27.64,27.64,27.64,000,27.64
+2000-11-27,26.93,26.93,26.93,26.93,000,26.93
+2000-11-24,26.00,26.00,26.00,26.00,000,26.00
+2000-11-22,27.71,27.71,27.71,27.71,000,27.71
+2000-11-21,26.62,26.62,26.62,26.62,000,26.62
+2000-11-20,27.43,27.43,27.43,27.43,000,27.43
+2000-11-17,24.81,24.81,24.81,24.81,000,24.81
+2000-11-16,25.05,25.05,25.05,25.05,000,25.05
+2000-11-15,26.15,26.15,26.15,26.15,000,26.15
+2000-11-14,26.81,26.81,26.81,26.81,000,26.81
+2000-11-13,29.06,29.06,29.06,29.06,000,29.06
+2000-11-10,28.53,28.53,28.53,28.53,000,28.53
+2000-11-09,27.20,27.20,27.20,27.20,000,27.20
+2000-11-08,25.66,25.66,25.66,25.66,000,25.66
+2000-11-07,24.91,24.91,24.91,24.91,000,24.91
+2000-11-06,24.52,24.52,24.52,24.52,000,24.52
+2000-11-03,23.67,23.67,23.67,23.67,000,23.67
+2000-11-02,23.92,23.92,23.92,23.92,000,23.92
+2000-11-01,24.28,24.28,24.28,24.28,000,24.28
+2000-10-31,23.63,23.63,23.63,23.63,000,23.63
+2000-10-30,25.46,25.46,25.46,25.46,000,25.46
+2000-10-27,26.47,26.47,26.47,26.47,000,26.47
+2000-10-26,28.62,28.62,28.62,28.62,000,28.62
+2000-10-25,26.65,26.65,26.65,26.65,000,26.65
+2000-10-24,24.28,24.28,24.28,24.28,000,24.28
+2000-10-23,24.69,24.69,24.69,24.69,000,24.69
+2000-10-20,24.24,24.24,24.24,24.24,000,24.24
+2000-10-19,25.09,25.09,25.09,25.09,000,25.09
+2000-10-18,28.72,28.72,28.72,28.72,000,28.72
+2000-10-17,27.84,27.84,27.84,27.84,000,27.84
+2000-10-16,26.79,26.79,26.79,26.79,000,26.79
+2000-10-13,27.60,27.60,27.60,27.60,000,27.60
+2000-10-12,29.47,29.47,29.47,29.47,000,29.47
+2000-10-11,26.57,26.57,26.57,26.57,000,26.57
+2000-10-10,24.86,24.86,24.86,24.86,000,24.86
+2000-10-09,24.02,24.02,24.02,24.02,000,24.02
+2000-10-06,22.71,22.71,22.71,22.71,000,22.71
+2000-10-05,21.03,21.03,21.03,21.03,000,21.03
+2000-10-04,21.54,21.54,21.54,21.54,000,21.54
+2000-10-03,21.85,21.85,21.85,21.85,000,21.85
+2000-10-02,21.23,21.23,21.23,21.23,000,21.23
+2000-09-29,20.57,20.57,20.57,20.57,000,20.57
+2000-09-28,19.47,19.47,19.47,19.47,000,19.47
+2000-09-27,21.67,21.67,21.67,21.67,000,21.67
+2000-09-26,21.88,21.88,21.88,21.88,000,21.88
+2000-09-25,21.41,21.41,21.41,21.41,000,21.41
+2000-09-22,20.74,20.74,20.74,20.74,000,20.74
+2000-09-21,20.18,20.18,20.18,20.18,000,20.18
+2000-09-20,19.93,19.93,19.93,19.93,000,19.93
+2000-09-19,19.54,19.54,19.54,19.54,000,19.54
+2000-09-18,20.25,20.25,20.25,20.25,000,20.25
+2000-09-15,18.52,18.52,18.52,18.52,000,18.52
+2000-09-14,18.26,18.26,18.26,18.26,000,18.26
+2000-09-13,18.32,18.32,18.32,18.32,000,18.32
+2000-09-12,18.59,18.59,18.59,18.59,000,18.59
+2000-09-11,18.40,18.40,18.40,18.40,000,18.40
+2000-09-08,18.46,18.46,18.46,18.46,000,18.46
+2000-09-07,19.42,19.42,19.42,19.42,000,19.42
+2000-09-06,20.79,20.79,20.79,20.79,000,20.79
+2000-09-05,19.82,19.82,19.82,19.82,000,19.82
+2000-09-01,17.53,17.53,17.53,17.53,000,17.53
+2000-08-31,16.84,16.84,16.84,16.84,000,16.84
+2000-08-30,17.69,17.69,17.69,17.69,000,17.69
+2000-08-29,16.89,16.89,16.89,16.89,000,16.89
+2000-08-28,16.54,16.54,16.54,16.54,000,16.54
+2000-08-25,16.53,16.53,16.53,16.53,000,16.53
+2000-08-24,17.04,17.04,17.04,17.04,000,17.04
+2000-08-23,17.38,17.38,17.38,17.38,000,17.38
+2000-08-22,17.47,17.47,17.47,17.47,000,17.47
+2000-08-21,17.35,17.35,17.35,17.35,000,17.35
+2000-08-18,17.05,17.05,17.05,17.05,000,17.05
+2000-08-17,17.48,17.48,17.48,17.48,000,17.48
+2000-08-16,18.02,18.02,18.02,18.02,000,18.02
+2000-08-15,17.98,17.98,17.98,17.98,000,17.98
+2000-08-14,17.88,17.88,17.88,17.88,000,17.88
+2000-08-11,18.55,18.55,18.55,18.55,000,18.55
+2000-08-10,19.19,19.19,19.19,19.19,000,19.19
+2000-08-09,19.18,19.18,19.18,19.18,000,19.18
+2000-08-08,18.79,18.79,18.79,18.79,000,18.79
+2000-08-07,19.03,19.03,19.03,19.03,000,19.03
+2000-08-04,18.62,18.62,18.62,18.62,000,18.62
+2000-08-03,19.99,19.99,19.99,19.99,000,19.99
+2000-08-02,20.00,20.00,20.00,20.00,000,20.00
+2000-08-01,20.55,20.55,20.55,20.55,000,20.55
+2000-07-31,20.74,20.74,20.74,20.74,000,20.74
+2000-07-28,20.84,20.84,20.84,20.84,000,20.84
+2000-07-27,19.60,19.60,19.60,19.60,000,19.60
+2000-07-26,19.67,19.67,19.67,19.67,000,19.67
+2000-07-25,19.39,19.39,19.39,19.39,000,19.39
+2000-07-24,19.92,19.92,19.92,19.92,000,19.92
+2000-07-21,18.94,18.94,18.94,18.94,000,18.94
+2000-07-20,18.94,18.94,18.94,18.94,000,18.94
+2000-07-19,19.65,19.65,19.65,19.65,000,19.65
+2000-07-18,19.75,19.75,19.75,19.75,000,19.75
+2000-07-17,19.45,19.45,19.45,19.45,000,19.45
+2000-07-14,19.32,19.32,19.32,19.32,000,19.32
+2000-07-13,20.03,20.03,20.03,20.03,000,20.03
+2000-07-12,20.03,20.03,20.03,20.03,000,20.03
+2000-07-11,20.11,20.11,20.11,20.11,000,20.11
+2000-07-10,20.33,20.33,20.33,20.33,000,20.33
+2000-07-07,19.22,19.22,19.22,19.22,000,19.22
+2000-07-06,20.94,20.94,20.94,20.94,000,20.94
+2000-07-05,21.16,21.16,21.16,21.16,000,21.16
+2000-07-03,19.83,19.83,19.83,19.83,000,19.83
+2000-06-30,19.54,19.54,19.54,19.54,000,19.54
+2000-06-29,19.70,19.70,19.70,19.70,000,19.70
+2000-06-28,20.29,20.29,20.29,20.29,000,20.29
+2000-06-27,21.80,21.80,21.80,21.80,000,21.80
+2000-06-26,22.45,22.45,22.45,22.45,000,22.45
+2000-06-23,22.34,22.34,22.34,22.34,000,22.34
+2000-06-22,22.00,22.00,22.00,22.00,000,22.00
+2000-06-21,20.61,20.61,20.61,20.61,000,20.61
+2000-06-20,20.88,20.88,20.88,20.88,000,20.88
+2000-06-19,20.63,20.63,20.63,20.63,000,20.63
+2000-06-16,20.50,20.50,20.50,20.50,000,20.50
+2000-06-15,20.68,20.68,20.68,20.68,000,20.68
+2000-06-14,21.48,21.48,21.48,21.48,000,21.48
+2000-06-13,21.67,21.67,21.67,21.67,000,21.67
+2000-06-12,22.32,22.32,22.32,22.32,000,22.32
+2000-06-09,22.14,22.14,22.14,22.14,000,22.14
+2000-06-08,22.04,22.04,22.04,22.04,000,22.04
+2000-06-07,22.48,22.48,22.48,22.48,000,22.48
+2000-06-06,23.05,23.05,23.05,23.05,000,23.05
+2000-06-05,22.71,22.71,22.71,22.71,000,22.71
+2000-06-02,21.48,21.48,21.48,21.48,000,21.48
+2000-06-01,22.36,22.36,22.36,22.36,000,22.36
+2000-05-31,23.65,23.65,23.65,23.65,000,23.65
+2000-05-30,23.62,23.62,23.62,23.62,000,23.62
+2000-05-26,24.47,24.47,24.47,24.47,000,24.47
+2000-05-25,24.58,24.58,24.58,24.58,000,24.58
+2000-05-24,24.32,24.32,24.32,24.32,000,24.32
+2000-05-23,25.87,25.87,25.87,25.87,000,25.87
+2000-05-22,26.00,26.00,26.00,26.00,000,26.00
+2000-05-19,25.44,25.44,25.44,25.44,000,25.44
+2000-05-18,23.96,23.96,23.96,23.96,000,23.96
+2000-05-17,23.98,23.98,23.98,23.98,000,23.98
+2000-05-16,24.34,24.34,24.34,24.34,000,24.34
+2000-05-15,24.86,24.86,24.86,24.86,000,24.86
+2000-05-12,26.05,26.05,26.05,26.05,000,26.05
+2000-05-11,27.76,27.76,27.76,27.76,000,27.76
+2000-05-10,29.87,29.87,29.87,29.87,000,29.87
+2000-05-09,28.93,28.93,28.93,28.93,000,28.93
+2000-05-08,28.20,28.20,28.20,28.20,000,28.20
+2000-05-05,27.53,27.53,27.53,27.53,000,27.53
+2000-05-04,30.77,30.77,30.77,30.77,000,30.77
+2000-05-03,31.63,31.63,31.63,31.63,000,31.63
+2000-05-02,28.50,28.50,28.50,28.50,000,28.50
+2000-05-01,25.88,25.88,25.88,25.88,000,25.88
+2000-04-28,26.20,26.20,26.20,26.20,000,26.20
+2000-04-27,26.19,26.19,26.19,26.19,000,26.19
+2000-04-26,26.97,26.97,26.97,26.97,000,26.97
+2000-04-25,25.24,25.24,25.24,25.24,000,25.24
+2000-04-24,27.37,27.37,27.37,27.37,000,27.37
+2000-04-20,25.85,25.85,25.85,25.85,000,25.85
+2000-04-19,27.02,27.02,27.02,27.02,000,27.02
+2000-04-18,26.12,26.12,26.12,26.12,000,26.12
+2000-04-17,28.95,28.95,28.95,28.95,000,28.95
+2000-04-14,33.49,33.49,33.49,33.49,000,33.49
+2000-04-13,29.40,29.40,29.40,29.40,000,29.40
+2000-04-12,27.85,27.85,27.85,27.85,000,27.85
+2000-04-11,27.25,27.25,27.25,27.25,000,27.25
+2000-04-10,25.99,25.99,25.99,25.99,000,25.99
+2000-04-07,24.39,24.39,24.39,24.39,000,24.39
+2000-04-06,27.15,27.15,27.15,27.15,000,27.15
+2000-04-05,28.41,28.41,28.41,28.41,000,28.41
+2000-04-04,27.12,27.12,27.12,27.12,000,27.12
+2000-04-03,24.03,24.03,24.03,24.03,000,24.03
+2000-03-31,23.67,23.67,23.67,23.67,000,23.67
+2000-03-30,24.42,24.42,24.42,24.42,000,24.42
+2000-03-29,24.10,24.10,24.10,24.10,000,24.10
+2000-03-28,24.86,24.86,24.86,24.86,000,24.86
+2000-03-27,24.53,24.53,24.53,24.53,000,24.53
+2000-03-24,23.31,23.31,23.31,23.31,000,23.31
+2000-03-23,22.26,22.26,22.26,22.26,000,22.26
+2000-03-22,21.49,21.49,21.49,21.49,000,21.49
+2000-03-21,21.70,21.70,21.70,21.70,000,21.70
+2000-03-20,22.96,22.96,22.96,22.96,000,22.96
+2000-03-17,22.37,22.37,22.37,22.37,000,22.37
+2000-03-16,20.77,20.77,20.77,20.77,000,20.77
+2000-03-15,22.34,22.34,22.34,22.34,000,22.34
+2000-03-14,24.41,24.41,24.41,24.41,000,24.41
+2000-03-13,22.85,22.85,22.85,22.85,000,22.85
+2000-03-10,21.24,21.24,21.24,21.24,000,21.24
+2000-03-09,22.21,22.21,22.21,22.21,000,22.21
+2000-03-08,23.82,23.82,23.82,23.82,000,23.82
+2000-03-07,24.31,24.31,24.31,24.31,000,24.31
+2000-03-06,21.50,21.50,21.50,21.50,000,21.50
+2000-03-03,19.21,19.21,19.21,19.21,000,19.21
+2000-03-02,21.06,21.06,21.06,21.06,000,21.06
+2000-03-01,21.64,21.64,21.64,21.64,000,21.64
+2000-02-29,23.37,23.37,23.37,23.37,000,23.37
+2000-02-28,24.68,24.68,24.68,24.68,000,24.68
+2000-02-25,25.20,25.20,25.20,25.20,000,25.20
+2000-02-24,24.38,24.38,24.38,24.38,000,24.38
+2000-02-23,23.89,23.89,23.89,23.89,000,23.89
+2000-02-22,25.86,25.86,25.86,25.86,000,25.86
+2000-02-18,26.00,26.00,26.00,26.00,000,26.00
+2000-02-17,23.17,23.17,23.17,23.17,000,23.17
+2000-02-16,23.51,23.51,23.51,23.51,000,23.51
+2000-02-15,22.92,22.92,22.92,22.92,000,22.92
+2000-02-14,24.38,24.38,24.38,24.38,000,24.38
+2000-02-11,24.42,24.42,24.42,24.42,000,24.42
+2000-02-10,23.07,23.07,23.07,23.07,000,23.07
+2000-02-09,22.90,22.90,22.90,22.90,000,22.90
+2000-02-08,21.25,21.25,21.25,21.25,000,21.25
+2000-02-07,22.79,22.79,22.79,22.79,000,22.79
+2000-02-04,21.54,21.54,21.54,21.54,000,21.54
+2000-02-03,22.01,22.01,22.01,22.01,000,22.01
+2000-02-02,23.12,23.12,23.12,23.12,000,23.12
+2000-02-01,23.45,23.45,23.45,23.45,000,23.45
+2000-01-31,24.95,24.95,24.95,24.95,000,24.95
+2000-01-28,26.14,26.14,26.14,26.14,000,26.14
+2000-01-27,23.54,23.54,23.54,23.54,000,23.54
+2000-01-26,23.03,23.03,23.03,23.03,000,23.03
+2000-01-25,23.02,23.02,23.02,23.02,000,23.02
+2000-01-24,24.07,24.07,24.07,24.07,000,24.07
+2000-01-21,20.82,20.82,20.82,20.82,000,20.82
+2000-01-20,21.75,21.75,21.75,21.75,000,21.75
+2000-01-19,21.72,21.72,21.72,21.72,000,21.72
+2000-01-18,21.50,21.50,21.50,21.50,000,21.50
+2000-01-14,19.66,19.66,19.66,19.66,000,19.66
+2000-01-13,21.71,21.71,21.71,21.71,000,21.71
+2000-01-12,22.84,22.84,22.84,22.84,000,22.84
+2000-01-11,22.50,22.50,22.50,22.50,000,22.50
+2000-01-10,21.71,21.71,21.71,21.71,000,21.71
+2000-01-07,21.72,21.72,21.72,21.72,000,21.72
+2000-01-06,25.73,25.73,25.73,25.73,000,25.73
+2000-01-05,26.41,26.41,26.41,26.41,000,26.41
+2000-01-04,27.01,27.01,27.01,27.01,000,27.01
+2000-01-03,24.21,24.21,24.21,24.21,000,24.21
+1999-12-31,23.40,23.40,23.40,23.40,000,23.40
+1999-12-30,23.91,23.91,23.91,23.91,000,23.91
+1999-12-29,23.09,23.09,23.09,23.09,000,23.09
+1999-12-28,22.97,22.97,22.97,22.97,000,22.97
+1999-12-27,23.07,23.07,23.07,23.07,000,23.07
+1999-12-23,21.12,21.12,21.12,21.12,000,21.12
+1999-12-22,22.43,22.43,22.43,22.43,000,22.43
+1999-12-21,22.66,22.66,22.66,22.66,000,22.66
+1999-12-20,23.78,23.78,23.78,23.78,000,23.78
+1999-12-17,21.35,21.35,21.35,21.35,000,21.35
+1999-12-16,21.91,21.91,21.91,21.91,000,21.91
+1999-12-15,22.03,22.03,22.03,22.03,000,22.03
+1999-12-14,23.06,23.06,23.06,23.06,000,23.06
+1999-12-13,21.72,21.72,21.72,21.72,000,21.72
+1999-12-10,21.48,21.48,21.48,21.48,000,21.48
+1999-12-09,21.19,21.19,21.19,21.19,000,21.19
+1999-12-08,21.25,21.25,21.25,21.25,000,21.25
+1999-12-07,21.09,21.09,21.09,21.09,000,21.09
+1999-12-06,20.58,20.58,20.58,20.58,000,20.58
+1999-12-03,19.32,19.32,19.32,19.32,000,19.32
+1999-12-02,21.77,21.77,21.77,21.77,000,21.77
+1999-12-01,22.23,22.23,22.23,22.23,000,22.23
+1999-11-30,24.18,24.18,24.18,24.18,000,24.18
+1999-11-29,23.57,23.57,23.57,23.57,000,23.57
+1999-11-26,22.33,22.33,22.33,22.33,000,22.33
+1999-11-24,20.26,20.26,20.26,20.26,000,20.26
+1999-11-23,21.00,21.00,21.00,21.00,000,21.00
+1999-11-22,19.98,19.98,19.98,19.98,000,19.98
+1999-11-19,19.11,19.11,19.11,19.11,000,19.11
+1999-11-18,19.76,19.76,19.76,19.76,000,19.76
+1999-11-17,20.96,20.96,20.96,20.96,000,20.96
+1999-11-16,20.73,20.73,20.73,20.73,000,20.73
+1999-11-15,22.74,22.74,22.74,22.74,000,22.74
+1999-11-12,21.65,21.65,21.65,21.65,000,21.65
+1999-11-11,22.07,22.07,22.07,22.07,000,22.07
+1999-11-10,22.26,22.26,22.26,22.26,000,22.26
+1999-11-09,22.70,22.70,22.70,22.70,000,22.70
+1999-11-08,21.87,21.87,21.87,21.87,000,21.87
+1999-11-05,21.66,21.66,21.66,21.66,000,21.66
+1999-11-04,23.00,23.00,23.00,23.00,000,23.00
+1999-11-03,23.16,23.16,23.16,23.16,000,23.16
+1999-11-02,23.10,23.10,23.10,23.10,000,23.10
+1999-11-01,22.09,22.09,22.09,22.09,000,22.09
+1999-10-29,22.20,22.20,22.20,22.20,000,22.20
+1999-10-28,21.34,21.34,21.34,21.34,000,21.34
+1999-10-27,24.20,24.20,24.20,24.20,000,24.20
+1999-10-26,24.26,24.26,24.26,24.26,000,24.26
+1999-10-25,23.60,23.60,23.60,23.60,000,23.60
+1999-10-22,21.64,21.64,21.64,21.64,000,21.64
+1999-10-21,24.02,24.02,24.02,24.02,000,24.02
+1999-10-20,23.90,23.90,23.90,23.90,000,23.90
+1999-10-19,26.56,26.56,26.56,26.56,000,26.56
+1999-10-18,28.19,28.19,28.19,28.19,000,28.19
+1999-10-15,28.75,28.75,28.75,28.75,000,28.75
+1999-10-14,26.05,26.05,26.05,26.05,000,26.05
+1999-10-13,25.96,25.96,25.96,25.96,000,25.96
+1999-10-12,22.84,22.84,22.84,22.84,000,22.84
+1999-10-11,20.63,20.63,20.63,20.63,000,20.63
+1999-10-08,20.49,20.49,20.49,20.49,000,20.49
+1999-10-07,23.58,23.58,23.58,23.58,000,23.58
+1999-10-06,22.06,22.06,22.06,22.06,000,22.06
+1999-10-05,24.79,24.79,24.79,24.79,000,24.79
+1999-10-04,24.46,24.46,24.46,24.46,000,24.46
+1999-10-01,24.93,24.93,24.93,24.93,000,24.93
+1999-09-30,25.41,25.41,25.41,25.41,000,25.41
+1999-09-29,26.49,26.49,26.49,26.49,000,26.49
+1999-09-28,26.06,26.06,26.06,26.06,000,26.06
+1999-09-27,26.40,26.40,26.40,26.40,000,26.40
+1999-09-24,27.79,27.79,27.79,27.79,000,27.79
+1999-09-23,27.84,27.84,27.84,27.84,000,27.84
+1999-09-22,25.19,25.19,25.19,25.19,000,25.19
+1999-09-21,25.65,25.65,25.65,25.65,000,25.65
+1999-09-20,24.03,24.03,24.03,24.03,000,24.03
+1999-09-17,23.30,23.30,23.30,23.30,000,23.30
+1999-09-16,25.25,25.25,25.25,25.25,000,25.25
+1999-09-15,24.56,24.56,24.56,24.56,000,24.56
+1999-09-14,23.77,23.77,23.77,23.77,000,23.77
+1999-09-13,22.89,22.89,22.89,22.89,000,22.89
+1999-09-10,22.03,22.03,22.03,22.03,000,22.03
+1999-09-09,23.01,23.01,23.01,23.01,000,23.01
+1999-09-08,23.82,23.82,23.82,23.82,000,23.82
+1999-09-07,23.44,23.44,23.44,23.44,000,23.44
+1999-09-03,20.98,20.98,20.98,20.98,000,20.98
+1999-09-02,24.53,24.53,24.53,24.53,000,24.53
+1999-09-01,22.93,22.93,22.93,22.93,000,22.93
+1999-08-31,24.45,24.45,24.45,24.45,000,24.45
+1999-08-30,24.63,24.63,24.63,24.63,000,24.63
+1999-08-27,21.83,21.83,21.83,21.83,000,21.83
+1999-08-26,21.21,21.21,21.21,21.21,000,21.21
+1999-08-25,20.96,20.96,20.96,20.96,000,20.96
+1999-08-24,22.40,22.40,22.40,22.40,000,22.40
+1999-08-23,22.55,22.55,22.55,22.55,000,22.55
+1999-08-20,22.95,22.95,22.95,22.95,000,22.95
+1999-08-19,24.39,24.39,24.39,24.39,000,24.39
+1999-08-18,23.30,23.30,23.30,23.30,000,23.30
+1999-08-17,21.67,21.67,21.67,21.67,000,21.67
+1999-08-16,23.07,23.07,23.07,23.07,000,23.07
+1999-08-13,22.31,22.31,22.31,22.31,000,22.31
+1999-08-12,25.03,25.03,25.03,25.03,000,25.03
+1999-08-11,25.39,25.39,25.39,25.39,000,25.39
+1999-08-10,28.45,28.45,28.45,28.45,000,28.45
+1999-08-09,27.66,27.66,27.66,27.66,000,27.66
+1999-08-06,26.60,26.60,26.60,26.60,000,26.60
+1999-08-05,27.01,27.01,27.01,27.01,000,27.01
+1999-08-04,27.40,27.40,27.40,27.40,000,27.40
+1999-08-03,26.27,26.27,26.27,26.27,000,26.27
+1999-08-02,25.59,25.59,25.59,25.59,000,25.59
+1999-07-30,24.64,24.64,24.64,24.64,000,24.64
+1999-07-29,24.52,24.52,24.52,24.52,000,24.52
+1999-07-28,22.85,22.85,22.85,22.85,000,22.85
+1999-07-27,23.23,23.23,23.23,23.23,000,23.23
+1999-07-26,24.98,24.98,24.98,24.98,000,24.98
+1999-07-23,23.32,23.32,23.32,23.32,000,23.32
+1999-07-22,23.05,23.05,23.05,23.05,000,23.05
+1999-07-21,21.46,21.46,21.46,21.46,000,21.46
+1999-07-20,21.79,21.79,21.79,21.79,000,21.79
+1999-07-19,19.07,19.07,19.07,19.07,000,19.07
+1999-07-16,17.42,17.42,17.42,17.42,000,17.42
+1999-07-15,18.68,18.68,18.68,18.68,000,18.68
+1999-07-14,19.71,19.71,19.71,19.71,000,19.71
+1999-07-13,19.95,19.95,19.95,19.95,000,19.95
+1999-07-12,19.73,19.73,19.73,19.73,000,19.73
+1999-07-09,17.96,17.96,17.96,17.96,000,17.96
+1999-07-08,19.47,19.47,19.47,19.47,000,19.47
+1999-07-07,20.35,20.35,20.35,20.35,000,20.35
+1999-07-06,20.73,20.73,20.73,20.73,000,20.73
+1999-07-02,18.66,18.66,18.66,18.66,000,18.66
+1999-07-01,19.69,19.69,19.69,19.69,000,19.69
+1999-06-30,21.09,21.09,21.09,21.09,000,21.09
+1999-06-29,22.51,22.51,22.51,22.51,000,22.51
+1999-06-28,22.63,22.63,22.63,22.63,000,22.63
+1999-06-25,21.76,21.76,21.76,21.76,000,21.76
+1999-06-24,23.06,23.06,23.06,23.06,000,23.06
+1999-06-23,21.32,21.32,21.32,21.32,000,21.32
+1999-06-22,21.70,21.70,21.70,21.70,000,21.70
+1999-06-21,21.81,21.81,21.81,21.81,000,21.81
+1999-06-18,21.75,21.75,21.75,21.75,000,21.75
+1999-06-17,21.95,21.95,21.95,21.95,000,21.95
+1999-06-16,22.40,22.40,22.40,22.40,000,22.40
+1999-06-15,25.91,25.91,25.91,25.91,000,25.91
+1999-06-14,26.51,26.51,26.51,26.51,000,26.51
+1999-06-11,25.90,25.90,25.90,25.90,000,25.90
+1999-06-10,25.32,25.32,25.32,25.32,000,25.32
+1999-06-09,23.90,23.90,23.90,23.90,000,23.90
+1999-06-08,24.02,24.02,24.02,24.02,000,24.02
+1999-06-07,23.78,23.78,23.78,23.78,000,23.78
+1999-06-04,23.43,23.43,23.43,23.43,000,23.43
+1999-06-03,26.20,26.20,26.20,26.20,000,26.20
+1999-06-02,26.21,26.21,26.21,26.21,000,26.21
+1999-06-01,26.62,26.62,26.62,26.62,000,26.62
+1999-05-28,25.39,25.39,25.39,25.39,000,25.39
+1999-05-27,28.12,28.12,28.12,28.12,000,28.12
+1999-05-26,27.57,27.57,27.57,27.57,000,27.57
+1999-05-25,28.90,28.90,28.90,28.90,000,28.90
+1999-05-24,27.62,27.62,27.62,27.62,000,27.62
+1999-05-21,24.40,24.40,24.40,24.40,000,24.40
+1999-05-20,24.46,24.46,24.46,24.46,000,24.46
+1999-05-19,25.08,25.08,25.08,25.08,000,25.08
+1999-05-18,27.26,27.26,27.26,27.26,000,27.26
+1999-05-17,27.28,27.28,27.28,27.28,000,27.28
+1999-05-14,26.86,26.86,26.86,26.86,000,26.86
+1999-05-13,25.02,25.02,25.02,25.02,000,25.02
+1999-05-12,26.13,26.13,26.13,26.13,000,26.13
+1999-05-11,25.62,25.62,25.62,25.62,000,25.62
+1999-05-10,26.62,26.62,26.62,26.62,000,26.62
+1999-05-07,25.36,25.36,25.36,25.36,000,25.36
+1999-05-06,27.44,27.44,27.44,27.44,000,27.44
+1999-05-05,25.19,25.19,25.19,25.19,000,25.19
+1999-05-04,25.62,25.62,25.62,25.62,000,25.62
+1999-05-03,24.15,24.15,24.15,24.15,000,24.15
+1999-04-30,25.07,25.07,25.07,25.07,000,25.07
+1999-04-29,25.06,25.06,25.06,25.06,000,25.06
+1999-04-28,24.40,24.40,24.40,24.40,000,24.40
+1999-04-27,23.36,23.36,23.36,23.36,000,23.36
+1999-04-26,23.53,23.53,23.53,23.53,000,23.53
+1999-04-23,22.76,22.76,22.76,22.76,000,22.76
+1999-04-22,22.62,22.62,22.62,22.62,000,22.62
+1999-04-21,23.31,23.31,23.31,23.31,000,23.31
+1999-04-20,25.02,25.02,25.02,25.02,000,25.02
+1999-04-19,26.42,26.42,26.42,26.42,000,26.42
+1999-04-16,23.90,23.90,23.90,23.90,000,23.90
+1999-04-15,23.93,23.93,23.93,23.93,000,23.93
+1999-04-14,24.94,24.94,24.94,24.94,000,24.94
+1999-04-13,22.73,22.73,22.73,22.73,000,22.73
+1999-04-12,21.93,21.93,21.93,21.93,000,21.93
+1999-04-09,21.77,21.77,21.77,21.77,000,21.77
+1999-04-08,22.59,22.59,22.59,22.59,000,22.59
+1999-04-07,22.81,22.81,22.81,22.81,000,22.81
+1999-04-06,22.65,22.65,22.65,22.65,000,22.65
+1999-04-05,22.19,22.19,22.19,22.19,000,22.19
+1999-04-01,22.06,22.06,22.06,22.06,000,22.06
+1999-03-31,23.26,23.26,23.26,23.26,000,23.26
+1999-03-30,22.73,22.73,22.73,22.73,000,22.73
+1999-03-29,23.54,23.54,23.54,23.54,000,23.54
+1999-03-26,24.04,24.04,24.04,24.04,000,24.04
+1999-03-25,24.33,24.33,24.33,24.33,000,24.33
+1999-03-24,26.60,26.60,26.60,26.60,000,26.60
+1999-03-23,27.27,27.27,27.27,27.27,000,27.27
+1999-03-22,25.00,25.00,25.00,25.00,000,25.00
+1999-03-19,24.32,24.32,24.32,24.32,000,24.32
+1999-03-18,24.13,24.13,24.13,24.13,000,24.13
+1999-03-17,25.57,25.57,25.57,25.57,000,25.57
+1999-03-16,25.15,25.15,25.15,25.15,000,25.15
+1999-03-15,25.24,25.24,25.24,25.24,000,25.24
+1999-03-12,24.84,24.84,24.84,24.84,000,24.84
+1999-03-11,24.37,24.37,24.37,24.37,000,24.37
+1999-03-10,24.79,24.79,24.79,24.79,000,24.79
+1999-03-09,25.02,25.02,25.02,25.02,000,25.02
+1999-03-08,24.54,24.54,24.54,24.54,000,24.54
+1999-03-05,24.08,24.08,24.08,24.08,000,24.08
+1999-03-04,26.67,26.67,26.67,26.67,000,26.67
+1999-03-03,29.04,29.04,29.04,29.04,000,29.04
+1999-03-02,29.22,29.22,29.22,29.22,000,29.22
+1999-03-01,28.37,28.37,28.37,28.37,000,28.37
+1999-02-26,27.88,27.88,27.88,27.88,000,27.88
+1999-02-25,28.01,28.01,28.01,28.01,000,28.01
+1999-02-24,27.21,27.21,27.21,27.21,000,27.21
+1999-02-23,26.49,26.49,26.49,26.49,000,26.49
+1999-02-22,25.87,25.87,25.87,25.87,000,25.87
+1999-02-19,29.30,29.30,29.30,29.30,000,29.30
+1999-02-18,30.45,30.45,30.45,30.45,000,30.45
+1999-02-17,30.65,30.65,30.65,30.65,000,30.65
+1999-02-16,29.65,29.65,29.65,29.65,000,29.65
+1999-02-12,29.76,29.76,29.76,29.76,000,29.76
+1999-02-11,27.42,27.42,27.42,27.42,000,27.42
+1999-02-10,30.45,30.45,30.45,30.45,000,30.45
+1999-02-09,31.36,31.36,31.36,31.36,000,31.36
+1999-02-08,30.27,30.27,30.27,30.27,000,30.27
+1999-02-05,29.67,29.67,29.67,29.67,000,29.67
+1999-02-04,29.48,29.48,29.48,29.48,000,29.48
+1999-02-03,27.88,27.88,27.88,27.88,000,27.88
+1999-02-02,28.16,28.16,28.16,28.16,000,28.16
+1999-02-01,27.67,27.67,27.67,27.67,000,27.67
+1999-01-29,26.25,26.25,26.25,26.25,000,26.25
+1999-01-28,28.11,28.11,28.11,28.11,000,28.11
+1999-01-27,29.73,29.73,29.73,29.73,000,29.73
+1999-01-26,29.23,29.23,29.23,29.23,000,29.23
+1999-01-25,31.13,31.13,31.13,31.13,000,31.13
+1999-01-22,31.95,31.95,31.95,31.95,000,31.95
+1999-01-21,30.92,30.92,30.92,30.92,000,30.92
+1999-01-20,28.60,28.60,28.60,28.60,000,28.60
+1999-01-19,29.24,29.24,29.24,29.24,000,29.24
+1999-01-15,29.24,29.24,29.24,29.24,000,29.24
+1999-01-14,32.98,32.98,32.98,32.98,000,32.98
+1999-01-13,30.11,30.11,30.11,30.11,000,30.11
+1999-01-12,28.10,28.10,28.10,28.10,000,28.10
+1999-01-11,25.46,25.46,25.46,25.46,000,25.46
+1999-01-08,23.28,23.28,23.28,23.28,000,23.28
+1999-01-07,24.37,24.37,24.37,24.37,000,24.37
+1999-01-06,23.34,23.34,23.34,23.34,000,23.34
+1999-01-05,24.46,24.46,24.46,24.46,000,24.46
+1999-01-04,26.17,26.17,26.17,26.17,000,26.17
+1998-12-31,24.42,24.42,24.42,24.42,000,24.42
+1998-12-30,23.34,23.34,23.34,23.34,000,23.34
+1998-12-29,22.18,22.18,22.18,22.18,000,22.18
+1998-12-28,23.50,23.50,23.50,23.50,000,23.50
+1998-12-24,21.48,21.48,21.48,21.48,000,21.48
+1998-12-23,20.21,20.21,20.21,20.21,000,20.21
+1998-12-22,22.78,22.78,22.78,22.78,000,22.78
+1998-12-21,23.86,23.86,23.86,23.86,000,23.86
+1998-12-18,25.04,25.04,25.04,25.04,000,25.04
+1998-12-17,27.96,27.96,27.96,27.96,000,27.96
+1998-12-16,29.96,29.96,29.96,29.96,000,29.96
+1998-12-15,29.42,29.42,29.42,29.42,000,29.42
+1998-12-14,31.31,31.31,31.31,31.31,000,31.31
+1998-12-11,27.72,27.72,27.72,27.72,000,27.72
+1998-12-10,26.81,26.81,26.81,26.81,000,26.81
+1998-12-09,25.66,25.66,25.66,25.66,000,25.66
+1998-12-08,25.58,25.58,25.58,25.58,000,25.58
+1998-12-07,24.90,24.90,24.90,24.90,000,24.90
+1998-12-04,25.31,25.31,25.31,25.31,000,25.31
+1998-12-03,28.70,28.70,28.70,28.70,000,28.70
+1998-12-02,25.43,25.43,25.43,25.43,000,25.43
+1998-12-01,24.97,24.97,24.97,24.97,000,24.97
+1998-11-30,26.01,26.01,26.01,26.01,000,26.01
+1998-11-27,22.09,22.09,22.09,22.09,000,22.09
+1998-11-25,22.15,22.15,22.15,22.15,000,22.15
+1998-11-24,23.28,23.28,23.28,23.28,000,23.28
+1998-11-23,21.84,21.84,21.84,21.84,000,21.84
+1998-11-20,22.47,22.47,22.47,22.47,000,22.47
+1998-11-19,25.50,25.50,25.50,25.50,000,25.50
+1998-11-18,27.13,27.13,27.13,27.13,000,27.13
+1998-11-17,27.95,27.95,27.95,27.95,000,27.95
+1998-11-16,28.90,28.90,28.90,28.90,000,28.90
+1998-11-13,29.03,29.03,29.03,29.03,000,29.03
+1998-11-12,29.28,29.28,29.28,29.28,000,29.28
+1998-11-11,28.47,28.47,28.47,28.47,000,28.47
+1998-11-10,28.17,28.17,28.17,28.17,000,28.17
+1998-11-09,28.09,28.09,28.09,28.09,000,28.09
+1998-11-06,25.70,25.70,25.70,25.70,000,25.70
+1998-11-05,26.01,26.01,26.01,26.01,000,26.01
+1998-11-04,27.37,27.37,27.37,27.37,000,27.37
+1998-11-03,27.76,27.76,27.76,27.76,000,27.76
+1998-11-02,27.26,27.26,27.26,27.26,000,27.26
+1998-10-30,28.05,28.05,28.05,28.05,000,28.05
+1998-10-29,29.50,29.50,29.50,29.50,000,29.50
+1998-10-28,32.42,32.42,32.42,32.42,000,32.42
+1998-10-27,32.95,32.95,32.95,32.95,000,32.95
+1998-10-26,32.38,32.38,32.38,32.38,000,32.38
+1998-10-23,32.27,32.27,32.27,32.27,000,32.27
+1998-10-22,31.53,31.53,31.53,31.53,000,31.53
+1998-10-21,33.21,33.21,33.21,33.21,000,33.21
+1998-10-20,33.11,33.11,33.11,33.11,000,33.11
+1998-10-19,33.13,33.13,33.13,33.13,000,33.13
+1998-10-16,34.82,34.82,34.82,34.82,000,34.82
+1998-10-15,33.34,33.34,33.34,33.34,000,33.34
+1998-10-14,38.96,38.96,38.96,38.96,000,38.96
+1998-10-13,40.23,40.23,40.23,40.23,000,40.23
+1998-10-12,40.07,40.07,40.07,40.07,000,40.07
+1998-10-09,41.78,41.78,41.78,41.78,000,41.78
+1998-10-08,45.74,45.74,45.74,45.74,000,45.74
+1998-10-07,43.51,43.51,43.51,43.51,000,43.51
+1998-10-06,41.20,41.20,41.20,41.20,000,41.20
+1998-10-05,42.81,42.81,42.81,42.81,000,42.81
+1998-10-02,40.47,40.47,40.47,40.47,000,40.47
+1998-10-01,43.48,43.48,43.48,43.48,000,43.48
+1998-09-30,40.95,40.95,40.95,40.95,000,40.95
+1998-09-29,36.08,36.08,36.08,36.08,000,36.08
+1998-09-28,34.87,34.87,34.87,34.87,000,34.87
+1998-09-25,34.55,34.55,34.55,34.55,000,34.55
+1998-09-24,34.66,34.66,34.66,34.66,000,34.66
+1998-09-23,32.47,32.47,32.47,32.47,000,32.47
+1998-09-22,36.62,36.62,36.62,36.62,000,36.62
+1998-09-21,38.58,38.58,38.58,38.58,000,38.58
+1998-09-18,38.63,38.63,38.63,38.63,000,38.63
+1998-09-17,39.23,39.23,39.23,39.23,000,39.23
+1998-09-16,35.94,35.94,35.94,35.94,000,35.94
+1998-09-15,36.58,36.58,36.58,36.58,000,36.58
+1998-09-14,38.57,38.57,38.57,38.57,000,38.57
+1998-09-11,43.74,43.74,43.74,43.74,000,43.74
+1998-09-10,45.29,45.29,45.29,45.29,000,45.29
+1998-09-09,39.66,39.66,39.66,39.66,000,39.66
+1998-09-08,37.90,37.90,37.90,37.90,000,37.90
+1998-09-04,43.31,43.31,43.31,43.31,000,43.31
+1998-09-03,41.43,41.43,41.43,41.43,000,41.43
+1998-09-02,36.76,36.76,36.76,36.76,000,36.76
+1998-09-01,36.48,36.48,36.48,36.48,000,36.48
+1998-08-31,44.28,44.28,44.28,44.28,000,44.28
+1998-08-28,39.60,39.60,39.60,39.60,000,39.60
+1998-08-27,38.55,38.55,38.55,38.55,000,38.55
+1998-08-26,31.14,31.14,31.14,31.14,000,31.14
+1998-08-25,30.33,30.33,30.33,30.33,000,30.33
+1998-08-24,31.80,31.80,31.80,31.80,000,31.80
+1998-08-21,33.14,33.14,33.14,33.14,000,33.14
+1998-08-20,30.00,30.00,30.00,30.00,000,30.00
+1998-08-19,28.69,28.69,28.69,28.69,000,28.69
+1998-08-18,28.40,28.40,28.40,28.40,000,28.40
+1998-08-17,31.86,31.86,31.86,31.86,000,31.86
+1998-08-14,34.75,34.75,34.75,34.75,000,34.75
+1998-08-13,29.92,29.92,29.92,29.92,000,29.92
+1998-08-12,28.55,28.55,28.55,28.55,000,28.55
+1998-08-11,31.91,31.91,31.91,31.91,000,31.91
+1998-08-10,28.75,28.75,28.75,28.75,000,28.75
+1998-08-07,27.02,27.02,27.02,27.02,000,27.02
+1998-08-06,28.20,28.20,28.20,28.20,000,28.20
+1998-08-05,29.83,29.83,29.83,29.83,000,29.83
+1998-08-04,31.06,31.06,31.06,31.06,000,31.06
+1998-08-03,25.98,25.98,25.98,25.98,000,25.98
+1998-07-31,24.80,24.80,24.80,24.80,000,24.80
+1998-07-30,22.66,22.66,22.66,22.66,000,22.66
+1998-07-29,24.79,24.79,24.79,24.79,000,24.79
+1998-07-28,25.25,25.25,25.25,25.25,000,25.25
+1998-07-27,23.13,23.13,23.13,23.13,000,23.13
+1998-07-24,23.01,23.01,23.01,23.01,000,23.01
+1998-07-23,23.01,23.01,23.01,23.01,000,23.01
+1998-07-22,20.32,20.32,20.32,20.32,000,20.32
+1998-07-21,20.10,20.10,20.10,20.10,000,20.10
+1998-07-20,17.34,17.34,17.34,17.34,000,17.34
+1998-07-17,16.23,16.23,16.23,16.23,000,16.23
+1998-07-16,16.97,16.97,16.97,16.97,000,16.97
+1998-07-15,17.89,17.89,17.89,17.89,000,17.89
+1998-07-14,17.88,17.88,17.88,17.88,000,17.88
+1998-07-13,18.26,18.26,18.26,18.26,000,18.26
+1998-07-10,17.92,17.92,17.92,17.92,000,17.92
+1998-07-09,18.16,18.16,18.16,18.16,000,18.16
+1998-07-08,17.82,17.82,17.82,17.82,000,17.82
+1998-07-07,18.62,18.62,18.62,18.62,000,18.62
+1998-07-06,18.63,18.63,18.63,18.63,000,18.63
+1998-07-02,17.67,17.67,17.67,17.67,000,17.67
+1998-07-01,18.00,18.00,18.00,18.00,000,18.00
+1998-06-30,19.71,19.71,19.71,19.71,000,19.71
+1998-06-29,19.57,19.57,19.57,19.57,000,19.57
+1998-06-26,19.36,19.36,19.36,19.36,000,19.36
+1998-06-25,20.25,20.25,20.25,20.25,000,20.25
+1998-06-24,20.02,20.02,20.02,20.02,000,20.02
+1998-06-23,20.17,20.17,20.17,20.17,000,20.17
+1998-06-22,21.94,21.94,21.94,21.94,000,21.94
+1998-06-19,21.61,21.61,21.61,21.61,000,21.61
+1998-06-18,22.09,22.09,22.09,22.09,000,22.09
+1998-06-17,22.59,22.59,22.59,22.59,000,22.59
+1998-06-16,24.80,24.80,24.80,24.80,000,24.80
+1998-06-15,26.20,26.20,26.20,26.20,000,26.20
+1998-06-12,22.78,22.78,22.78,22.78,000,22.78
+1998-06-11,23.57,23.57,23.57,23.57,000,23.57
+1998-06-10,21.48,21.48,21.48,21.48,000,21.48
+1998-06-09,20.52,20.52,20.52,20.52,000,20.52
+1998-06-08,20.58,20.58,20.58,20.58,000,20.58
+1998-06-05,19.78,19.78,19.78,19.78,000,19.78
+1998-06-04,21.22,21.22,21.22,21.22,000,21.22
+1998-06-03,22.85,22.85,22.85,22.85,000,22.85
+1998-06-02,22.00,22.00,22.00,22.00,000,22.00
+1998-06-01,22.83,22.83,22.83,22.83,000,22.83
+1998-05-29,21.32,21.32,21.32,21.32,000,21.32
+1998-05-28,20.74,20.74,20.74,20.74,000,20.74
+1998-05-27,22.59,22.59,22.59,22.59,000,22.59
+1998-05-26,22.07,22.07,22.07,22.07,000,22.07
+1998-05-22,18.99,18.99,18.99,18.99,000,18.99
+1998-05-21,19.38,19.38,19.38,19.38,000,19.38
+1998-05-20,19.89,19.89,19.89,19.89,000,19.89
+1998-05-19,20.39,20.39,20.39,20.39,000,20.39
+1998-05-18,21.69,21.69,21.69,21.69,000,21.69
+1998-05-15,20.44,20.44,20.44,20.44,000,20.44
+1998-05-14,19.64,19.64,19.64,19.64,000,19.64
+1998-05-13,20.44,20.44,20.44,20.44,000,20.44
+1998-05-12,20.98,20.98,20.98,20.98,000,20.98
+1998-05-11,21.05,21.05,21.05,21.05,000,21.05
+1998-05-08,20.57,20.57,20.57,20.57,000,20.57
+1998-05-07,23.39,23.39,23.39,23.39,000,23.39
+1998-05-06,22.79,22.79,22.79,22.79,000,22.79
+1998-05-05,21.46,21.46,21.46,21.46,000,21.46
+1998-05-04,20.32,20.32,20.32,20.32,000,20.32
+1998-05-01,19.34,19.34,19.34,19.34,000,19.34
+1998-04-30,21.18,21.18,21.18,21.18,000,21.18
+1998-04-29,22.78,22.78,22.78,22.78,000,22.78
+1998-04-28,24.17,24.17,24.17,24.17,000,24.17
+1998-04-27,26.09,26.09,26.09,26.09,000,26.09
+1998-04-24,21.97,21.97,21.97,21.97,000,21.97
+1998-04-23,20.60,20.60,20.60,20.60,000,20.60
+1998-04-22,19.87,19.87,19.87,19.87,000,19.87
+1998-04-21,19.91,19.91,19.91,19.91,000,19.91
+1998-04-20,20.39,20.39,20.39,20.39,000,20.39
+1998-04-17,20.76,20.76,20.76,20.76,000,20.76
+1998-04-16,22.06,22.06,22.06,22.06,000,22.06
+1998-04-15,20.89,20.89,20.89,20.89,000,20.89
+1998-04-14,21.61,21.61,21.61,21.61,000,21.61
+1998-04-13,22.77,22.77,22.77,22.77,000,22.77
+1998-04-09,21.51,21.51,21.51,21.51,000,21.51
+1998-04-08,23.17,23.17,23.17,23.17,000,23.17
+1998-04-07,23.66,23.66,23.66,23.66,000,23.66
+1998-04-06,22.47,22.47,22.47,22.47,000,22.47
+1998-04-03,21.82,21.82,21.82,21.82,000,21.82
+1998-04-02,21.98,21.98,21.98,21.98,000,21.98
+1998-04-01,23.37,23.37,23.37,23.37,000,23.37
+1998-03-31,24.22,24.22,24.22,24.22,000,24.22
+1998-03-30,24.66,24.66,24.66,24.66,000,24.66
+1998-03-27,23.47,23.47,23.47,23.47,000,23.47
+1998-03-26,22.81,22.81,22.81,22.81,000,22.81
+1998-03-25,22.54,22.54,22.54,22.54,000,22.54
+1998-03-24,20.51,20.51,20.51,20.51,000,20.51
+1998-03-23,19.98,19.98,19.98,19.98,000,19.98
+1998-03-20,18.69,18.69,18.69,18.69,000,18.69
+1998-03-19,17.76,17.76,17.76,17.76,000,17.76
+1998-03-18,18.29,18.29,18.29,18.29,000,18.29
+1998-03-17,18.66,18.66,18.66,18.66,000,18.66
+1998-03-16,18.51,18.51,18.51,18.51,000,18.51
+1998-03-13,18.71,18.71,18.71,18.71,000,18.71
+1998-03-12,18.25,18.25,18.25,18.25,000,18.25
+1998-03-11,18.89,18.89,18.89,18.89,000,18.89
+1998-03-10,19.43,19.43,19.43,19.43,000,19.43
+1998-03-09,20.23,20.23,20.23,20.23,000,20.23
+1998-03-06,19.14,19.14,19.14,19.14,000,19.14
+1998-03-05,20.93,20.93,20.93,20.93,000,20.93
+1998-03-04,19.58,19.58,19.58,19.58,000,19.58
+1998-03-03,19.04,19.04,19.04,19.04,000,19.04
+1998-03-02,19.19,19.19,19.19,19.19,000,19.19
+1998-02-27,18.55,18.55,18.55,18.55,000,18.55
+1998-02-26,18.63,18.63,18.63,18.63,000,18.63
+1998-02-25,18.62,18.62,18.62,18.62,000,18.62
+1998-02-24,19.35,19.35,19.35,19.35,000,19.35
+1998-02-23,18.99,18.99,18.99,18.99,000,18.99
+1998-02-20,19.00,19.00,19.00,19.00,000,19.00
+1998-02-19,19.88,19.88,19.88,19.88,000,19.88
+1998-02-18,19.66,19.66,19.66,19.66,000,19.66
+1998-02-17,20.76,20.76,20.76,20.76,000,20.76
+1998-02-13,19.84,19.84,19.84,19.84,000,19.84
+1998-02-12,19.73,19.73,19.73,19.73,000,19.73
+1998-02-11,20.38,20.38,20.38,20.38,000,20.38
+1998-02-10,20.66,20.66,20.66,20.66,000,20.66
+1998-02-09,21.55,21.55,21.55,21.55,000,21.55
+1998-02-06,20.51,20.51,20.51,20.51,000,20.51
+1998-02-05,21.29,21.29,21.29,21.29,000,21.29
+1998-02-04,20.55,20.55,20.55,20.55,000,20.55
+1998-02-03,20.67,20.67,20.67,20.67,000,20.67
+1998-02-02,21.36,21.36,21.36,21.36,000,21.36
+1998-01-30,21.47,21.47,21.47,21.47,000,21.47
+1998-01-29,21.65,21.65,21.65,21.65,000,21.65
+1998-01-28,22.06,22.06,22.06,22.06,000,22.06
+1998-01-27,22.27,22.27,22.27,22.27,000,22.27
+1998-01-26,23.97,23.97,23.97,23.97,000,23.97
+1998-01-23,23.32,23.32,23.32,23.32,000,23.32
+1998-01-22,23.16,23.16,23.16,23.16,000,23.16
+1998-01-21,22.53,22.53,22.53,22.53,000,22.53
+1998-01-20,21.65,21.65,21.65,21.65,000,21.65
+1998-01-16,21.65,21.65,21.65,21.65,000,21.65
+1998-01-15,23.45,23.45,23.45,23.45,000,23.45
+1998-01-14,23.75,23.75,23.75,23.75,000,23.75
+1998-01-13,25.17,25.17,25.17,25.17,000,25.17
+1998-01-12,28.02,28.02,28.02,28.02,000,28.02
+1998-01-09,28.69,28.69,28.69,28.69,000,28.69
+1998-01-08,26.01,26.01,26.01,26.01,000,26.01
+1998-01-07,25.07,25.07,25.07,25.07,000,25.07
+1998-01-06,25.66,25.66,25.66,25.66,000,25.66
+1998-01-05,24.36,24.36,24.36,24.36,000,24.36
+1998-01-02,23.42,23.42,23.42,23.42,000,23.42
+1997-12-31,24.01,24.01,24.01,24.01,000,24.01
+1997-12-30,24.38,24.38,24.38,24.38,000,24.38
+1997-12-29,26.79,26.79,26.79,26.79,000,26.79
+1997-12-26,29.27,29.27,29.27,29.27,000,29.27
+1997-12-24,30.27,30.27,30.27,30.27,000,30.27
+1997-12-23,29.86,29.86,29.86,29.86,000,29.86
+1997-12-22,28.56,28.56,28.56,28.56,000,28.56
+1997-12-19,29.18,29.18,29.18,29.18,000,29.18
+1997-12-18,27.19,27.19,27.19,27.19,000,27.19
+1997-12-17,26.33,26.33,26.33,26.33,000,26.33
+1997-12-16,26.11,26.11,26.11,26.11,000,26.11
+1997-12-15,27.37,27.37,27.37,27.37,000,27.37
+1997-12-12,27.92,27.92,27.92,27.92,000,27.92
+1997-12-11,27.63,27.63,27.63,27.63,000,27.63
+1997-12-10,24.55,24.55,24.55,24.55,000,24.55
+1997-12-09,23.36,23.36,23.36,23.36,000,23.36
+1997-12-08,23.22,23.22,23.22,23.22,000,23.22
+1997-12-05,22.65,22.65,22.65,22.65,000,22.65
+1997-12-04,23.84,23.84,23.84,23.84,000,23.84
+1997-12-03,23.92,23.92,23.92,23.92,000,23.92
+1997-12-02,25.66,25.66,25.66,25.66,000,25.66
+1997-12-01,26.01,26.01,26.01,26.01,000,26.01
+1997-11-28,27.43,27.43,27.43,27.43,000,27.43
+1997-11-25,28.95,28.95,28.95,28.95,000,28.95
+1997-11-24,29.80,29.80,29.80,29.80,000,29.80
+1997-11-21,26.65,26.65,26.65,26.65,000,26.65
+1997-11-20,27.32,27.32,27.32,27.32,000,27.32
+1997-11-19,29.93,29.93,29.93,29.93,000,29.93
+1997-11-18,31.55,31.55,31.55,31.55,000,31.55
+1997-11-17,31.58,31.58,31.58,31.58,000,31.58
+1997-11-14,33.66,33.66,33.66,33.66,000,33.66
+1997-11-13,36.64,36.64,36.64,36.64,000,36.64
+1997-11-12,37.57,37.57,37.57,37.57,000,37.57
+1997-11-11,36.38,36.38,36.38,36.38,000,36.38
+1997-11-10,36.63,36.63,36.63,36.63,000,36.63
+1997-11-07,36.27,36.27,36.27,36.27,000,36.27
+1997-11-06,32.57,32.57,32.57,32.57,000,32.57
+1997-11-05,32.18,32.18,32.18,32.18,000,32.18
+1997-11-04,32.24,32.24,32.24,32.24,000,32.24
+1997-11-03,32.09,32.09,32.09,32.09,000,32.09
+1997-10-31,35.09,35.09,35.09,35.09,000,35.09
+1997-10-30,38.20,38.20,38.20,38.20,000,38.20
+1997-10-29,33.75,33.75,33.75,33.75,000,33.75
+1997-10-28,31.22,31.22,31.22,31.22,000,31.22
+1997-10-27,31.12,31.12,31.12,31.12,000,31.12
+1997-10-24,23.17,23.17,23.17,23.17,000,23.17
+1997-10-23,22.99,22.99,22.99,22.99,000,22.99
+1997-10-22,19.86,19.86,19.86,19.86,000,19.86
+1997-10-21,19.53,19.53,19.53,19.53,000,19.53
+1997-10-20,20.72,20.72,20.72,20.72,000,20.72
+1997-10-17,21.69,21.69,21.69,21.69,000,21.69
+1997-10-16,20.53,20.53,20.53,20.53,000,20.53
+1997-10-15,20.05,20.05,20.05,20.05,000,20.05
+1997-10-14,19.99,19.99,19.99,19.99,000,19.99
+1997-10-13,20.26,20.26,20.26,20.26,000,20.26
+1997-10-10,19.75,19.75,19.75,19.75,000,19.75
+1997-10-09,22.31,22.31,22.31,22.31,000,22.31
+1997-10-08,21.04,21.04,21.04,21.04,000,21.04
+1997-10-07,20.29,20.29,20.29,20.29,000,20.29
+1997-10-06,21.61,21.61,21.61,21.61,000,21.61
+1997-10-03,21.54,21.54,21.54,21.54,000,21.54
+1997-10-02,22.27,22.27,22.27,22.27,000,22.27
+1997-10-01,22.32,22.32,22.32,22.32,000,22.32
+1997-09-30,22.91,22.91,22.91,22.91,000,22.91
+1997-09-29,22.23,22.23,22.23,22.23,000,22.23
+1997-09-26,22.26,22.26,22.26,22.26,000,22.26
+1997-09-25,22.96,22.96,22.96,22.96,000,22.96
+1997-09-24,22.64,22.64,22.64,22.64,000,22.64
+1997-09-23,22.00,22.00,22.00,22.00,000,22.00
+1997-09-22,22.08,22.08,22.08,22.08,000,22.08
+1997-09-19,22.74,22.74,22.74,22.74,000,22.74
+1997-09-18,23.48,23.48,23.48,23.48,000,23.48
+1997-09-17,24.10,24.10,24.10,24.10,000,24.10
+1997-09-16,23.77,23.77,23.77,23.77,000,23.77
+1997-09-15,25.74,25.74,25.74,25.74,000,25.74
+1997-09-12,25.17,25.17,25.17,25.17,000,25.17
+1997-09-11,25.99,25.99,25.99,25.99,000,25.99
+1997-09-10,24.64,24.64,24.64,24.64,000,24.64
+1997-09-09,23.89,23.89,23.89,23.89,000,23.89
+1997-09-08,24.40,24.40,24.40,24.40,000,24.40
+1997-09-05,24.31,24.31,24.31,24.31,000,24.31
+1997-09-04,25.27,25.27,25.27,25.27,000,25.27
+1997-09-03,24.95,24.95,24.95,24.95,000,24.95
+1997-09-02,24.53,24.53,24.53,24.53,000,24.53
+1997-08-29,24.76,24.76,24.76,24.76,000,24.76
+1997-08-28,24.51,24.51,24.51,24.51,000,24.51
+1997-08-27,24.26,24.26,24.26,24.26,000,24.26
+1997-08-26,24.73,24.73,24.73,24.73,000,24.73
+1997-08-25,24.10,24.10,24.10,24.10,000,24.10
+1997-08-22,24.74,24.74,24.74,24.74,000,24.74
+1997-08-21,23.83,23.83,23.83,23.83,000,23.83
+1997-08-20,21.09,21.09,21.09,21.09,000,21.09
+1997-08-19,22.64,22.64,22.64,22.64,000,22.64
+1997-08-18,24.37,24.37,24.37,24.37,000,24.37
+1997-08-15,24.45,24.45,24.45,24.45,000,24.45
+1997-08-14,23.11,23.11,23.11,23.11,000,23.11
+1997-08-13,24.52,24.52,24.52,24.52,000,24.52
+1997-08-12,23.75,23.75,23.75,23.75,000,23.75
+1997-08-11,22.77,22.77,22.77,22.77,000,22.77
+1997-08-08,22.46,22.46,22.46,22.46,000,22.46
+1997-08-07,19.77,19.77,19.77,19.77,000,19.77
+1997-08-06,20.05,20.05,20.05,20.05,000,20.05
+1997-08-05,20.64,20.64,20.64,20.64,000,20.64
+1997-08-04,21.94,21.94,21.94,21.94,000,21.94
+1997-08-01,22.29,22.29,22.29,22.29,000,22.29
+1997-07-31,21.48,21.48,21.48,21.48,000,21.48
+1997-07-30,21.39,21.39,21.39,21.39,000,21.39
+1997-07-29,22.02,22.02,22.02,22.02,000,22.02
+1997-07-28,21.84,21.84,21.84,21.84,000,21.84
+1997-07-25,20.82,20.82,20.82,20.82,000,20.82
+1997-07-24,20.96,20.96,20.96,20.96,000,20.96
+1997-07-23,21.30,21.30,21.30,21.30,000,21.30
+1997-07-22,21.77,21.77,21.77,21.77,000,21.77
+1997-07-21,23.51,23.51,23.51,23.51,000,23.51
+1997-07-18,22.28,22.28,22.28,22.28,000,22.28
+1997-07-17,20.54,20.54,20.54,20.54,000,20.54
+1997-07-16,19.36,19.36,19.36,19.36,000,19.36
+1997-07-15,19.00,19.00,19.00,19.00,000,19.00
+1997-07-14,19.58,19.58,19.58,19.58,000,19.58
+1997-07-11,19.06,19.06,19.06,19.06,000,19.06
+1997-07-10,19.92,19.92,19.92,19.92,000,19.92
+1997-07-09,20.40,20.40,20.40,20.40,000,20.40
+1997-07-08,18.76,18.76,18.76,18.76,000,18.76
+1997-07-07,19.13,19.13,19.13,19.13,000,19.13
+1997-07-03,17.82,17.82,17.82,17.82,000,17.82
+1997-07-02,19.70,19.70,19.70,19.70,000,19.70
+1997-07-01,21.00,21.00,21.00,21.00,000,21.00
+1997-06-30,21.53,21.53,21.53,21.53,000,21.53
+1997-06-27,21.22,21.22,21.22,21.22,000,21.22
+1997-06-26,21.82,21.82,21.82,21.82,000,21.82
+1997-06-25,21.50,21.50,21.50,21.50,000,21.50
+1997-06-24,20.74,20.74,20.74,20.74,000,20.74
+1997-06-23,21.19,21.19,21.19,21.19,000,21.19
+1997-06-20,20.20,20.20,20.20,20.20,000,20.20
+1997-06-19,20.10,20.10,20.10,20.10,000,20.10
+1997-06-18,20.45,20.45,20.45,20.45,000,20.45
+1997-06-17,20.17,20.17,20.17,20.17,000,20.17
+1997-06-16,19.77,19.77,19.77,19.77,000,19.77
+1997-06-13,19.27,19.27,19.27,19.27,000,19.27
+1997-06-12,18.51,18.51,18.51,18.51,000,18.51
+1997-06-11,18.85,18.85,18.85,18.85,000,18.85
+1997-06-10,19.04,19.04,19.04,19.04,000,19.04
+1997-06-09,19.46,19.46,19.46,19.46,000,19.46
+1997-06-06,18.94,18.94,18.94,18.94,000,18.94
+1997-06-05,20.36,20.36,20.36,20.36,000,20.36
+1997-06-04,20.10,20.10,20.10,20.10,000,20.10
+1997-06-03,20.01,20.01,20.01,20.01,000,20.01
+1997-06-02,20.85,20.85,20.85,20.85,000,20.85
+1997-05-30,19.19,19.19,19.19,19.19,000,19.19
+1997-05-29,19.02,19.02,19.02,19.02,000,19.02
+1997-05-28,19.28,19.28,19.28,19.28,000,19.28
+1997-05-27,19.36,19.36,19.36,19.36,000,19.36
+1997-05-23,18.08,18.08,18.08,18.08,000,18.08
+1997-05-22,18.77,18.77,18.77,18.77,000,18.77
+1997-05-21,19.28,19.28,19.28,19.28,000,19.28
+1997-05-20,19.26,19.26,19.26,19.26,000,19.26
+1997-05-19,21.48,21.48,21.48,21.48,000,21.48
+1997-05-16,21.57,21.57,21.57,21.57,000,21.57
+1997-05-15,19.91,19.91,19.91,19.91,000,19.91
+1997-05-14,21.09,21.09,21.09,21.09,000,21.09
+1997-05-13,20.81,20.81,20.81,20.81,000,20.81
+1997-05-12,20.25,20.25,20.25,20.25,000,20.25
+1997-05-09,20.11,20.11,20.11,20.11,000,20.11
+1997-05-08,21.26,21.26,21.26,21.26,000,21.26
+1997-05-07,21.34,21.34,21.34,21.34,000,21.34
+1997-05-06,20.85,20.85,20.85,20.85,000,20.85
+1997-05-05,20.13,20.13,20.13,20.13,000,20.13
+1997-05-02,17.51,17.51,17.51,17.51,000,17.51
+1997-05-01,19.87,19.87,19.87,19.87,000,19.87
+1997-04-30,20.06,20.06,20.06,20.06,000,20.06
+1997-04-29,19.81,19.81,19.81,19.81,000,19.81
+1997-04-28,21.34,21.34,21.34,21.34,000,21.34
+1997-04-25,21.15,21.15,21.15,21.15,000,21.15
+1997-04-24,20.83,20.83,20.83,20.83,000,20.83
+1997-04-23,20.48,20.48,20.48,20.48,000,20.48
+1997-04-22,19.52,19.52,19.52,19.52,000,19.52
+1997-04-21,20.10,20.10,20.10,20.10,000,20.10
+1997-04-18,18.75,18.75,18.75,18.75,000,18.75
+1997-04-17,18.71,18.71,18.71,18.71,000,18.71
+1997-04-16,17.64,17.64,17.64,17.64,000,17.64
+1997-04-15,18.25,18.25,18.25,18.25,000,18.25
+1997-04-14,19.09,19.09,19.09,19.09,000,19.09
+1997-04-11,19.76,19.76,19.76,19.76,000,19.76
+1997-04-10,19.01,19.01,19.01,19.01,000,19.01
+1997-04-09,18.56,18.56,18.56,18.56,000,18.56
+1997-04-08,18.44,18.44,18.44,18.44,000,18.44
+1997-04-07,18.51,18.51,18.51,18.51,000,18.51
+1997-04-04,19.23,19.23,19.23,19.23,000,19.23
+1997-04-03,21.19,21.19,21.19,21.19,000,21.19
+1997-04-02,21.30,21.30,21.30,21.30,000,21.30
+1997-04-01,20.84,20.84,20.84,20.84,000,20.84
+1997-03-31,22.14,22.14,22.14,22.14,000,22.14
+1997-03-27,20.50,20.50,20.50,20.50,000,20.50
+1997-03-26,18.32,18.32,18.32,18.32,000,18.32
+1997-03-25,19.26,19.26,19.26,19.26,000,19.26
+1997-03-24,20.06,20.06,20.06,20.06,000,20.06
+1997-03-21,19.69,19.69,19.69,19.69,000,19.69
+1997-03-20,21.22,21.22,21.22,21.22,000,21.22
+1997-03-19,21.74,21.74,21.74,21.74,000,21.74
+1997-03-18,21.26,21.26,21.26,21.26,000,21.26
+1997-03-17,20.95,20.95,20.95,20.95,000,20.95
+1997-03-14,19.81,19.81,19.81,19.81,000,19.81
+1997-03-13,19.79,19.79,19.79,19.79,000,19.79
+1997-03-12,19.61,19.61,19.61,19.61,000,19.61
+1997-03-11,19.25,19.25,19.25,19.25,000,19.25
+1997-03-10,19.00,19.00,19.00,19.00,000,19.00
+1997-03-07,19.32,19.32,19.32,19.32,000,19.32
+1997-03-06,20.48,20.48,20.48,20.48,000,20.48
+1997-03-05,19.49,19.49,19.49,19.49,000,19.49
+1997-03-04,20.62,20.62,20.62,20.62,000,20.62
+1997-03-03,20.89,20.89,20.89,20.89,000,20.89
+1997-02-28,21.10,21.10,21.10,21.10,000,21.10
+1997-02-27,21.08,21.08,21.08,21.08,000,21.08
+1997-02-26,20.74,20.74,20.74,20.74,000,20.74
+1997-02-25,20.49,20.49,20.49,20.49,000,20.49
+1997-02-24,19.84,19.84,19.84,19.84,000,19.84
+1997-02-21,20.55,20.55,20.55,20.55,000,20.55
+1997-02-20,21.41,21.41,21.41,21.41,000,21.41
+1997-02-19,20.61,20.61,20.61,20.61,000,20.61
+1997-02-18,19.70,19.70,19.70,19.70,000,19.70
+1997-02-14,19.18,19.18,19.18,19.18,000,19.18
+1997-02-13,19.23,19.23,19.23,19.23,000,19.23
+1997-02-12,19.48,19.48,19.48,19.48,000,19.48
+1997-02-11,19.97,19.97,19.97,19.97,000,19.97
+1997-02-10,20.65,20.65,20.65,20.65,000,20.65
+1997-02-07,18.90,18.90,18.90,18.90,000,18.90
+1997-02-06,20.16,20.16,20.16,20.16,000,20.16
+1997-02-05,21.06,21.06,21.06,21.06,000,21.06
+1997-02-04,19.43,19.43,19.43,19.43,000,19.43
+1997-02-03,19.58,19.58,19.58,19.58,000,19.58
+1997-01-30,19.47,19.47,19.47,19.47,000,19.47
+1997-01-29,20.23,20.23,20.23,20.23,000,20.23
+1997-01-28,20.74,20.74,20.74,20.74,000,20.74
+1997-01-27,20.16,20.16,20.16,20.16,000,20.16
+1997-01-24,19.33,19.33,19.33,19.33,000,19.33
+1997-01-23,18.47,18.47,18.47,18.47,000,18.47
+1997-01-22,17.09,17.09,17.09,17.09,000,17.09
+1997-01-21,17.81,17.81,17.81,17.81,000,17.81
+1997-01-20,18.60,18.60,18.60,18.60,000,18.60
+1997-01-17,18.63,18.63,18.63,18.63,000,18.63
+1997-01-16,19.61,19.61,19.61,19.61,000,19.61
+1997-01-15,19.40,19.40,19.40,19.40,000,19.40
+1997-01-14,19.27,19.27,19.27,19.27,000,19.27
+1997-01-13,19.84,19.84,19.84,19.84,000,19.84
+1997-01-10,19.63,19.63,19.63,19.63,000,19.63
+1997-01-09,20.91,20.91,20.91,20.91,000,20.91
+1997-01-08,20.24,20.24,20.24,20.24,000,20.24
+1997-01-07,19.35,19.35,19.35,19.35,000,19.35
+1997-01-06,19.89,19.89,19.89,19.89,000,19.89
+1997-01-03,19.13,19.13,19.13,19.13,000,19.13
+1997-01-02,21.14,21.14,21.14,21.14,000,21.14
+1996-12-31,20.92,20.92,20.92,20.92,000,20.92
+1996-12-30,19.51,19.51,19.51,19.51,000,19.51
+1996-12-27,19.13,19.13,19.13,19.13,000,19.13
+1996-12-26,18.59,18.59,18.59,18.59,000,18.59
+1996-12-24,18.68,18.68,18.68,18.68,000,18.68
+1996-12-23,19.50,19.50,19.50,19.50,000,19.50
+1996-12-20,18.85,18.85,18.85,18.85,000,18.85
+1996-12-19,18.77,18.77,18.77,18.77,000,18.77
+1996-12-18,19.42,19.42,19.42,19.42,000,19.42
+1996-12-17,20.77,20.77,20.77,20.77,000,20.77
+1996-12-16,21.99,21.99,21.99,21.99,000,21.99
+1996-12-13,21.09,21.09,21.09,21.09,000,21.09
+1996-12-12,20.45,20.45,20.45,20.45,000,20.45
+1996-12-11,19.68,19.68,19.68,19.68,000,19.68
+1996-12-10,17.88,17.88,17.88,17.88,000,17.88
+1996-12-09,17.75,17.75,17.75,17.75,000,17.75
+1996-12-06,18.82,18.82,18.82,18.82,000,18.82
+1996-12-05,18.14,18.14,18.14,18.14,000,18.14
+1996-12-04,17.93,17.93,17.93,17.93,000,17.93
+1996-12-03,18.68,18.68,18.68,18.68,000,18.68
+1996-12-02,17.93,17.93,17.93,17.93,000,17.93
+1996-11-29,17.14,17.14,17.14,17.14,000,17.14
+1996-11-27,16.96,16.96,16.96,16.96,000,16.96
+1996-11-26,16.97,16.97,16.97,16.97,000,16.97
+1996-11-25,15.91,15.91,15.91,15.91,000,15.91
+1996-11-22,14.92,14.92,14.92,14.92,000,14.92
+1996-11-21,15.77,15.77,15.77,15.77,000,15.77
+1996-11-20,15.94,15.94,15.94,15.94,000,15.94
+1996-11-19,15.23,15.23,15.23,15.23,000,15.23
+1996-11-18,15.12,15.12,15.12,15.12,000,15.12
+1996-11-15,14.36,14.36,14.36,14.36,000,14.36
+1996-11-14,13.79,13.79,13.79,13.79,000,13.79
+1996-11-13,14.89,14.89,14.89,14.89,000,14.89
+1996-11-12,15.36,15.36,15.36,15.36,000,15.36
+1996-11-11,15.01,15.01,15.01,15.01,000,15.01
+1996-11-08,15.78,15.78,15.78,15.78,000,15.78
+1996-11-07,17.21,17.21,17.21,17.21,000,17.21
+1996-11-06,16.97,16.97,16.97,16.97,000,16.97
+1996-11-05,17.65,17.65,17.65,17.65,000,17.65
+1996-11-04,18.04,18.04,18.04,18.04,000,18.04
+1996-11-01,17.89,17.89,17.89,17.89,000,17.89
+1996-10-31,18.11,18.11,18.11,18.11,000,18.11
+1996-10-30,18.48,18.48,18.48,18.48,000,18.48
+1996-10-29,18.28,18.28,18.28,18.28,000,18.28
+1996-10-28,18.34,18.34,18.34,18.34,000,18.34
+1996-10-25,17.29,17.29,17.29,17.29,000,17.29
+1996-10-24,16.89,16.89,16.89,16.89,000,16.89
+1996-10-23,16.45,16.45,16.45,16.45,000,16.45
+1996-10-22,16.40,16.40,16.40,16.40,000,16.40
+1996-10-21,15.98,15.98,15.98,15.98,000,15.98
+1996-10-18,15.08,15.08,15.08,15.08,000,15.08
+1996-10-17,15.41,15.41,15.41,15.41,000,15.41
+1996-10-16,15.60,15.60,15.60,15.60,000,15.60
+1996-10-15,15.83,15.83,15.83,15.83,000,15.83
+1996-10-14,15.13,15.13,15.13,15.13,000,15.13
+1996-10-11,15.07,15.07,15.07,15.07,000,15.07
+1996-10-10,16.26,16.26,16.26,16.26,000,16.26
+1996-10-09,16.09,16.09,16.09,16.09,000,16.09
+1996-10-08,15.58,15.58,15.58,15.58,000,15.58
+1996-10-07,15.11,15.11,15.11,15.11,000,15.11
+1996-10-04,14.80,14.80,14.80,14.80,000,14.80
+1996-10-03,16.77,16.77,16.77,16.77,000,16.77
+1996-10-02,16.78,16.78,16.78,16.78,000,16.78
+1996-10-01,17.05,17.05,17.05,17.05,000,17.05
+1996-09-30,16.95,16.95,16.95,16.95,000,16.95
+1996-09-27,16.10,16.10,16.10,16.10,000,16.10
+1996-09-26,16.11,16.11,16.11,16.11,000,16.11
+1996-09-25,16.22,16.22,16.22,16.22,000,16.22
+1996-09-24,16.45,16.45,16.45,16.45,000,16.45
+1996-09-23,16.46,16.46,16.46,16.46,000,16.46
+1996-09-20,15.65,15.65,15.65,15.65,000,15.65
+1996-09-19,16.03,16.03,16.03,16.03,000,16.03
+1996-09-18,15.86,15.86,15.86,15.86,000,15.86
+1996-09-17,15.74,15.74,15.74,15.74,000,15.74
+1996-09-16,15.43,15.43,15.43,15.43,000,15.43
+1996-09-13,15.20,15.20,15.20,15.20,000,15.20
+1996-09-12,15.97,15.97,15.97,15.97,000,15.97
+1996-09-11,16.06,16.06,16.06,16.06,000,16.06
+1996-09-10,16.25,16.25,16.25,16.25,000,16.25
+1996-09-09,16.36,16.36,16.36,16.36,000,16.36
+1996-09-06,17.10,17.10,17.10,17.10,000,17.10
+1996-09-05,20.51,20.51,20.51,20.51,000,20.51
+1996-09-04,18.64,18.64,18.64,18.64,000,18.64
+1996-09-03,18.47,18.47,18.47,18.47,000,18.47
+1996-08-30,17.01,17.01,17.01,17.01,000,17.01
+1996-08-29,16.22,16.22,16.22,16.22,000,16.22
+1996-08-28,15.10,15.10,15.10,15.10,000,15.10
+1996-08-27,15.11,15.11,15.11,15.11,000,15.11
+1996-08-26,15.38,15.38,15.38,15.38,000,15.38
+1996-08-23,14.18,14.18,14.18,14.18,000,14.18
+1996-08-22,13.71,13.71,13.71,13.71,000,13.71
+1996-08-21,14.52,14.52,14.52,14.52,000,14.52
+1996-08-20,14.73,14.73,14.73,14.73,000,14.73
+1996-08-19,15.27,15.27,15.27,15.27,000,15.27
+1996-08-16,14.81,14.81,14.81,14.81,000,14.81
+1996-08-15,15.46,15.46,15.46,15.46,000,15.46
+1996-08-14,15.96,15.96,15.96,15.96,000,15.96
+1996-08-13,16.41,16.41,16.41,16.41,000,16.41
+1996-08-12,15.57,15.57,15.57,15.57,000,15.57
+1996-08-09,15.77,15.77,15.77,15.77,000,15.77
+1996-08-08,16.04,16.04,16.04,16.04,000,16.04
+1996-08-07,16.24,16.24,16.24,16.24,000,16.24
+1996-08-06,16.93,16.93,16.93,16.93,000,16.93
+1996-08-05,17.36,17.36,17.36,17.36,000,17.36
+1996-08-02,16.19,16.19,16.19,16.19,000,16.19
+1996-08-01,18.76,18.76,18.76,18.76,000,18.76
+1996-07-31,19.46,19.46,19.46,19.46,000,19.46
+1996-07-30,20.53,20.53,20.53,20.53,000,20.53
+1996-07-29,20.09,20.09,20.09,20.09,000,20.09
+1996-07-26,17.45,17.45,17.45,17.45,000,17.45
+1996-07-25,19.39,19.39,19.39,19.39,000,19.39
+1996-07-24,21.44,21.44,21.44,21.44,000,21.44
+1996-07-23,21.55,21.55,21.55,21.55,000,21.55
+1996-07-22,20.41,20.41,20.41,20.41,000,20.41
+1996-07-19,17.26,17.26,17.26,17.26,000,17.26
+1996-07-18,17.93,17.93,17.93,17.93,000,17.93
+1996-07-17,19.22,19.22,19.22,19.22,000,19.22
+1996-07-16,20.10,20.10,20.10,20.10,000,20.10
+1996-07-15,20.11,20.11,20.11,20.11,000,20.11
+1996-07-12,17.09,17.09,17.09,17.09,000,17.09
+1996-07-11,17.81,17.81,17.81,17.81,000,17.81
+1996-07-10,15.51,15.51,15.51,15.51,000,15.51
+1996-07-09,15.49,15.49,15.49,15.49,000,15.49
+1996-07-08,16.42,16.42,16.42,16.42,000,16.42
+1996-07-05,16.09,16.09,16.09,16.09,000,16.09
+1996-07-03,14.21,14.21,14.21,14.21,000,14.21
+1996-07-02,14.19,14.19,14.19,14.19,000,14.19
+1996-07-01,13.78,13.78,13.78,13.78,000,13.78
+1996-06-28,13.68,13.68,13.68,13.68,000,13.68
+1996-06-27,14.19,14.19,14.19,14.19,000,14.19
+1996-06-26,15.23,15.23,15.23,15.23,000,15.23
+1996-06-25,15.43,15.43,15.43,15.43,000,15.43
+1996-06-24,15.91,15.91,15.91,15.91,000,15.91
+1996-06-21,15.80,15.80,15.80,15.80,000,15.80
+1996-06-20,16.97,16.97,16.97,16.97,000,16.97
+1996-06-19,17.54,17.54,17.54,17.54,000,17.54
+1996-06-18,17.45,17.45,17.45,17.45,000,17.45
+1996-06-17,17.46,17.46,17.46,17.46,000,17.46
+1996-06-14,18.64,18.64,18.64,18.64,000,18.64
+1996-06-13,17.12,17.12,17.12,17.12,000,17.12
+1996-06-12,17.00,17.00,17.00,17.00,000,17.00
+1996-06-11,16.68,16.68,16.68,16.68,000,16.68
+1996-06-10,16.78,16.78,16.78,16.78,000,16.78
+1996-06-07,16.10,16.10,16.10,16.10,000,16.10
+1996-06-06,16.84,16.84,16.84,16.84,000,16.84
+1996-06-05,16.04,16.04,16.04,16.04,000,16.04
+1996-06-04,16.18,16.18,16.18,16.18,000,16.18
+1996-06-03,16.86,16.86,16.86,16.86,000,16.86
+1996-05-31,16.07,16.07,16.07,16.07,000,16.07
+1996-05-30,16.02,16.02,16.02,16.02,000,16.02
+1996-05-29,17.15,17.15,17.15,17.15,000,17.15
+1996-05-28,16.92,16.92,16.92,16.92,000,16.92
+1996-05-24,15.54,15.54,15.54,15.54,000,15.54
+1996-05-23,16.17,16.17,16.17,16.17,000,16.17
+1996-05-22,15.50,15.50,15.50,15.50,000,15.50
+1996-05-21,16.00,16.00,16.00,16.00,000,16.00
+1996-05-20,15.80,15.80,15.80,15.80,000,15.80
+1996-05-17,15.13,15.13,15.13,15.13,000,15.13
+1996-05-16,15.71,15.71,15.71,15.71,000,15.71
+1996-05-15,15.59,15.59,15.59,15.59,000,15.59
+1996-05-14,14.90,14.90,14.90,14.90,000,14.90
+1996-05-13,15.16,15.16,15.16,15.16,000,15.16
+1996-05-10,15.61,15.61,15.61,15.61,000,15.61
+1996-05-09,16.99,16.99,16.99,16.99,000,16.99
+1996-05-08,15.78,15.78,15.78,15.78,000,15.78
+1996-05-07,16.87,16.87,16.87,16.87,000,16.87
+1996-05-06,16.92,16.92,16.92,16.92,000,16.92
+1996-05-03,16.70,16.70,16.70,16.70,000,16.70
+1996-05-02,18.62,18.62,18.62,18.62,000,18.62
+1996-05-01,16.07,16.07,16.07,16.07,000,16.07
+1996-04-30,15.83,15.83,15.83,15.83,000,15.83
+1996-04-29,15.45,15.45,15.45,15.45,000,15.45
+1996-04-26,14.75,14.75,14.75,14.75,000,14.75
+1996-04-25,14.72,14.72,14.72,14.72,000,14.72
+1996-04-24,14.91,14.91,14.91,14.91,000,14.91
+1996-04-23,15.01,15.01,15.01,15.01,000,15.01
+1996-04-22,15.38,15.38,15.38,15.38,000,15.38
+1996-04-19,15.12,15.12,15.12,15.12,000,15.12
+1996-04-18,16.41,16.41,16.41,16.41,000,16.41
+1996-04-17,17.07,17.07,17.07,17.07,000,17.07
+1996-04-16,16.45,16.45,16.45,16.45,000,16.45
+1996-04-15,16.83,16.83,16.83,16.83,000,16.83
+1996-04-12,17.38,17.38,17.38,17.38,000,17.38
+1996-04-11,19.65,19.65,19.65,19.65,000,19.65
+1996-04-10,20.22,20.22,20.22,20.22,000,20.22
+1996-04-09,17.32,17.32,17.32,17.32,000,17.32
+1996-04-08,18.72,18.72,18.72,18.72,000,18.72
+1996-04-04,16.18,16.18,16.18,16.18,000,16.18
+1996-04-03,16.33,16.33,16.33,16.33,000,16.33
+1996-04-02,16.45,16.45,16.45,16.45,000,16.45
+1996-04-01,17.90,17.90,17.90,17.90,000,17.90
+1996-03-29,18.88,18.88,18.88,18.88,000,18.88
+1996-03-28,18.16,18.16,18.16,18.16,000,18.16
+1996-03-27,17.89,17.89,17.89,17.89,000,17.89
+1996-03-26,17.80,17.80,17.80,17.80,000,17.80
+1996-03-25,17.84,17.84,17.84,17.84,000,17.84
+1996-03-22,17.05,17.05,17.05,17.05,000,17.05
+1996-03-21,17.74,17.74,17.74,17.74,000,17.74
+1996-03-20,18.66,18.66,18.66,18.66,000,18.66
+1996-03-19,18.35,18.35,18.35,18.35,000,18.35
+1996-03-18,17.31,17.31,17.31,17.31,000,17.31
+1996-03-15,16.54,16.54,16.54,16.54,000,16.54
+1996-03-14,16.93,16.93,16.93,16.93,000,16.93
+1996-03-13,18.13,18.13,18.13,18.13,000,18.13
+1996-03-12,19.09,19.09,19.09,19.09,000,19.09
+1996-03-11,20.33,20.33,20.33,20.33,000,20.33
+1996-03-08,20.70,20.70,20.70,20.70,000,20.70
+1996-03-07,16.49,16.49,16.49,16.49,000,16.49
+1996-03-06,16.56,16.56,16.56,16.56,000,16.56
+1996-03-05,16.10,16.10,16.10,16.10,000,16.10
+1996-03-04,16.67,16.67,16.67,16.67,000,16.67
+1996-03-01,16.72,16.72,16.72,16.72,000,16.72
+1996-02-29,17.04,17.04,17.04,17.04,000,17.04
+1996-02-28,16.72,16.72,16.72,16.72,000,16.72
+1996-02-27,16.63,16.63,16.63,16.63,000,16.63
+1996-02-26,16.38,16.38,16.38,16.38,000,16.38
+1996-02-23,14.78,14.78,14.78,14.78,000,14.78
+1996-02-22,14.56,14.56,14.56,14.56,000,14.56
+1996-02-21,14.47,14.47,14.47,14.47,000,14.47
+1996-02-20,16.80,16.80,16.80,16.80,000,16.80
+1996-02-16,15.37,15.37,15.37,15.37,000,15.37
+1996-02-15,16.13,16.13,16.13,16.13,000,16.13
+1996-02-14,15.59,15.59,15.59,15.59,000,15.59
+1996-02-13,17.12,17.12,17.12,17.12,000,17.12
+1996-02-12,14.69,14.69,14.69,14.69,000,14.69
+1996-02-09,14.63,14.63,14.63,14.63,000,14.63
+1996-02-08,13.89,13.89,13.89,13.89,000,13.89
+1996-02-07,14.11,14.11,14.11,14.11,000,14.11
+1996-02-06,14.59,14.59,14.59,14.59,000,14.59
+1996-02-05,13.46,13.46,13.46,13.46,000,13.46
+1996-02-02,13.23,13.23,13.23,13.23,000,13.23
+1996-02-01,12.65,12.65,12.65,12.65,000,12.65
+1996-01-31,12.53,12.53,12.53,12.53,000,12.53
+1996-01-30,12.42,12.42,12.42,12.42,000,12.42
+1996-01-29,12.19,12.19,12.19,12.19,000,12.19
+1996-01-26,12.00,12.00,12.00,12.00,000,12.00
+1996-01-25,12.94,12.94,12.94,12.94,000,12.94
+1996-01-24,12.54,12.54,12.54,12.54,000,12.54
+1996-01-23,13.56,13.56,13.56,13.56,000,13.56
+1996-01-22,13.34,13.34,13.34,13.34,000,13.34
+1996-01-19,12.70,12.70,12.70,12.70,000,12.70
+1996-01-18,13.58,13.58,13.58,13.58,000,13.58
+1996-01-17,14.25,14.25,14.25,14.25,000,14.25
+1996-01-16,14.09,14.09,14.09,14.09,000,14.09
+1996-01-15,14.99,14.99,14.99,14.99,000,14.99
+1996-01-12,15.30,15.30,15.30,15.30,000,15.30
+1996-01-11,15.42,15.42,15.42,15.42,000,15.42
+1996-01-10,16.88,16.88,16.88,16.88,000,16.88
+1996-01-09,15.21,15.21,15.21,15.21,000,15.21
+1996-01-08,13.11,13.11,13.11,13.11,000,13.11
+1996-01-05,13.58,13.58,13.58,13.58,000,13.58
+1996-01-04,13.78,13.78,13.78,13.78,000,13.78
+1996-01-03,12.10,12.10,12.10,12.10,000,12.10
+1996-01-02,12.19,12.19,12.19,12.19,000,12.19
+1995-12-29,12.52,12.52,12.52,12.52,000,12.52
+1995-12-28,12.25,12.25,12.25,12.25,000,12.25
+1995-12-27,11.98,11.98,11.98,11.98,000,11.98
+1995-12-26,11.49,11.49,11.49,11.49,000,11.49
+1995-12-22,11.51,11.51,11.51,11.51,000,11.51
+1995-12-21,10.77,10.77,10.77,10.77,000,10.77
+1995-12-20,12.20,12.20,12.20,12.20,000,12.20
+1995-12-19,13.16,13.16,13.16,13.16,000,13.16
+1995-12-18,14.55,14.55,14.55,14.55,000,14.55
+1995-12-15,11.44,11.44,11.44,11.44,000,11.44
+1995-12-14,11.07,11.07,11.07,11.07,000,11.07
+1995-12-13,10.36,10.36,10.36,10.36,000,10.36
+1995-12-12,10.63,10.63,10.63,10.63,000,10.63
+1995-12-11,11.06,11.06,11.06,11.06,000,11.06
+1995-12-08,11.12,11.12,11.12,11.12,000,11.12
+1995-12-07,12.74,12.74,12.74,12.74,000,12.74
+1995-12-06,12.70,12.70,12.70,12.70,000,12.70
+1995-12-05,11.65,11.65,11.65,11.65,000,11.65
+1995-12-04,10.66,10.66,10.66,10.66,000,10.66
+1995-12-01,11.11,11.11,11.11,11.11,000,11.11
+1995-11-30,11.58,11.58,11.58,11.58,000,11.58
+1995-11-29,11.65,11.65,11.65,11.65,000,11.65
+1995-11-28,11.57,11.57,11.57,11.57,000,11.57
+1995-11-27,12.43,12.43,12.43,12.43,000,12.43
+1995-11-24,11.87,11.87,11.87,11.87,000,11.87
+1995-11-22,11.81,11.81,11.81,11.81,000,11.81
+1995-11-21,11.74,11.74,11.74,11.74,000,11.74
+1995-11-20,12.37,12.37,12.37,12.37,000,12.37
+1995-11-17,12.49,12.49,12.49,12.49,000,12.49
+1995-11-16,12.57,12.57,12.57,12.57,000,12.57
+1995-11-15,12.95,12.95,12.95,12.95,000,12.95
+1995-11-14,13.38,13.38,13.38,13.38,000,13.38
+1995-11-13,13.20,13.20,13.20,13.20,000,13.20
+1995-11-10,12.97,12.97,12.97,12.97,000,12.97
+1995-11-09,12.46,12.46,12.46,12.46,000,12.46
+1995-11-08,12.16,12.16,12.16,12.16,000,12.16
+1995-11-07,13.05,13.05,13.05,13.05,000,13.05
+1995-11-06,12.74,12.74,12.74,12.74,000,12.74
+1995-11-03,12.26,12.26,12.26,12.26,000,12.26
+1995-11-02,13.19,13.19,13.19,13.19,000,13.19
+1995-11-01,13.41,13.41,13.41,13.41,000,13.41
+1995-10-31,13.83,13.83,13.83,13.83,000,13.83
+1995-10-30,14.26,14.26,14.26,14.26,000,14.26
+1995-10-27,14.63,14.63,14.63,14.63,000,14.63
+1995-10-26,15.59,15.59,15.59,15.59,000,15.59
+1995-10-25,14.49,14.49,14.49,14.49,000,14.49
+1995-10-24,13.85,13.85,13.85,13.85,000,13.85
+1995-10-23,14.17,14.17,14.17,14.17,000,14.17
+1995-10-20,13.46,13.46,13.46,13.46,000,13.46
+1995-10-19,13.55,13.55,13.55,13.55,000,13.55
+1995-10-18,14.05,14.05,14.05,14.05,000,14.05
+1995-10-17,14.03,14.03,14.03,14.03,000,14.03
+1995-10-16,14.62,14.62,14.62,14.62,000,14.62
+1995-10-13,13.67,13.67,13.67,13.67,000,13.67
+1995-10-12,14.24,14.24,14.24,14.24,000,14.24
+1995-10-11,14.57,14.57,14.57,14.57,000,14.57
+1995-10-10,14.97,14.97,14.97,14.97,000,14.97
+1995-10-09,14.85,14.85,14.85,14.85,000,14.85
+1995-10-06,13.98,13.98,13.98,13.98,000,13.98
+1995-10-05,15.74,15.74,15.74,15.74,000,15.74
+1995-10-04,14.86,14.86,14.86,14.86,000,14.86
+1995-10-03,14.50,14.50,14.50,14.50,000,14.50
+1995-10-02,13.95,13.95,13.95,13.95,000,13.95
+1995-09-29,12.74,12.74,12.74,12.74,000,12.74
+1995-09-28,12.46,12.46,12.46,12.46,000,12.46
+1995-09-27,12.90,12.90,12.90,12.90,000,12.90
+1995-09-26,12.90,12.90,12.90,12.90,000,12.90
+1995-09-25,13.22,13.22,13.22,13.22,000,13.22
+1995-09-22,12.46,12.46,12.46,12.46,000,12.46
+1995-09-21,12.50,12.50,12.50,12.50,000,12.50
+1995-09-20,12.35,12.35,12.35,12.35,000,12.35
+1995-09-19,12.67,12.67,12.67,12.67,000,12.67
+1995-09-18,12.34,12.34,12.34,12.34,000,12.34
+1995-09-15,11.58,11.58,11.58,11.58,000,11.58
+1995-09-14,11.10,11.10,11.10,11.10,000,11.10
+1995-09-13,11.35,11.35,11.35,11.35,000,11.35
+1995-09-12,11.46,11.46,11.46,11.46,000,11.46
+1995-09-11,11.51,11.51,11.51,11.51,000,11.51
+1995-09-08,11.16,11.16,11.16,11.16,000,11.16
+1995-09-07,11.85,11.85,11.85,11.85,000,11.85
+1995-09-06,11.65,11.65,11.65,11.65,000,11.65
+1995-09-05,11.65,11.65,11.65,11.65,000,11.65
+1995-09-01,11.29,11.29,11.29,11.29,000,11.29
+1995-08-31,11.52,11.52,11.52,11.52,000,11.52
+1995-08-30,12.03,12.03,12.03,12.03,000,12.03
+1995-08-29,12.65,12.65,12.65,12.65,000,12.65
+1995-08-28,12.48,12.48,12.48,12.48,000,12.48
+1995-08-25,12.33,12.33,12.33,12.33,000,12.33
+1995-08-24,12.94,12.94,12.94,12.94,000,12.94
+1995-08-23,13.17,13.17,13.17,13.17,000,13.17
+1995-08-22,12.60,12.60,12.60,12.60,000,12.60
+1995-08-21,13.42,13.42,13.42,13.42,000,13.42
+1995-08-18,12.03,12.03,12.03,12.03,000,12.03
+1995-08-17,12.13,12.13,12.13,12.13,000,12.13
+1995-08-16,12.45,12.45,12.45,12.45,000,12.45
+1995-08-15,12.35,12.35,12.35,12.35,000,12.35
+1995-08-14,13.24,13.24,13.24,13.24,000,13.24
+1995-08-11,12.90,12.90,12.90,12.90,000,12.90
+1995-08-10,13.00,13.00,13.00,13.00,000,13.00
+1995-08-09,12.75,12.75,12.75,12.75,000,12.75
+1995-08-08,13.06,13.06,13.06,13.06,000,13.06
+1995-08-07,13.10,13.10,13.10,13.10,000,13.10
+1995-08-04,13.21,13.21,13.21,13.21,000,13.21
+1995-08-03,13.78,13.78,13.78,13.78,000,13.78
+1995-08-02,13.66,13.66,13.66,13.66,000,13.66
+1995-08-01,13.56,13.56,13.56,13.56,000,13.56
+1995-07-31,13.49,13.49,13.49,13.49,000,13.49
+1995-07-28,13.18,13.18,13.18,13.18,000,13.18
+1995-07-27,13.18,13.18,13.18,13.18,000,13.18
+1995-07-26,13.18,13.18,13.18,13.18,000,13.18
+1995-07-25,12.77,12.77,12.77,12.77,000,12.77
+1995-07-24,12.55,12.55,12.55,12.55,000,12.55
+1995-07-21,12.37,12.37,12.37,12.37,000,12.37
+1995-07-20,13.86,13.86,13.86,13.86,000,13.86
+1995-07-19,13.49,13.49,13.49,13.49,000,13.49
+1995-07-18,12.68,12.68,12.68,12.68,000,12.68
+1995-07-17,12.26,12.26,12.26,12.26,000,12.26
+1995-07-14,12.08,12.08,12.08,12.08,000,12.08
+1995-07-13,12.56,12.56,12.56,12.56,000,12.56
+1995-07-12,12.31,12.31,12.31,12.31,000,12.31
+1995-07-11,12.25,12.25,12.25,12.25,000,12.25
+1995-07-10,12.19,12.19,12.19,12.19,000,12.19
+1995-07-07,11.77,11.77,11.77,11.77,000,11.77
+1995-07-06,11.52,11.52,11.52,11.52,000,11.52
+1995-07-05,12.10,12.10,12.10,12.10,000,12.10
+1995-07-03,11.57,11.57,11.57,11.57,000,11.57
+1995-06-30,11.38,11.38,11.38,11.38,000,11.38
+1995-06-29,11.59,11.59,11.59,11.59,000,11.59
+1995-06-28,11.74,11.74,11.74,11.74,000,11.74
+1995-06-27,12.37,12.37,12.37,12.37,000,12.37
+1995-06-26,11.80,11.80,11.80,11.80,000,11.80
+1995-06-23,11.12,11.12,11.12,11.12,000,11.12
+1995-06-22,11.44,11.44,11.44,11.44,000,11.44
+1995-06-21,11.32,11.32,11.32,11.32,000,11.32
+1995-06-20,11.16,11.16,11.16,11.16,000,11.16
+1995-06-19,11.21,11.21,11.21,11.21,000,11.21
+1995-06-16,10.75,10.75,10.75,10.75,000,10.75
+1995-06-15,11.23,11.23,11.23,11.23,000,11.23
+1995-06-14,11.29,11.29,11.29,11.29,000,11.29
+1995-06-13,11.29,11.29,11.29,11.29,000,11.29
+1995-06-12,11.91,11.91,11.91,11.91,000,11.91
+1995-06-09,12.76,12.76,12.76,12.76,000,12.76
+1995-06-08,14.12,14.12,14.12,14.12,000,14.12
+1995-06-07,12.84,12.84,12.84,12.84,000,12.84
+1995-06-06,13.00,13.00,13.00,13.00,000,13.00
+1995-06-05,13.45,13.45,13.45,13.45,000,13.45
+1995-06-02,12.98,12.98,12.98,12.98,000,12.98
+1995-06-01,12.21,12.21,12.21,12.21,000,12.21
+1995-05-31,13.77,13.77,13.77,13.77,000,13.77
+1995-05-30,12.52,12.52,12.52,12.52,000,12.52
+1995-05-26,12.20,12.20,12.20,12.20,000,12.20
+1995-05-25,11.63,11.63,11.63,11.63,000,11.63
+1995-05-24,11.26,11.26,11.26,11.26,000,11.26
+1995-05-23,11.55,11.55,11.55,11.55,000,11.55
+1995-05-22,11.68,11.68,11.68,11.68,000,11.68
+1995-05-19,12.81,12.81,12.81,12.81,000,12.81
+1995-05-18,13.13,13.13,13.13,13.13,000,13.13
+1995-05-17,12.36,12.36,12.36,12.36,000,12.36
+1995-05-16,12.20,12.20,12.20,12.20,000,12.20
+1995-05-15,12.38,12.38,12.38,12.38,000,12.38
+1995-05-12,11.84,11.84,11.84,11.84,000,11.84
+1995-05-11,12.98,12.98,12.98,12.98,000,12.98
+1995-05-10,13.08,13.08,13.08,13.08,000,13.08
+1995-05-09,12.75,12.75,12.75,12.75,000,12.75
+1995-05-08,12.22,12.22,12.22,12.22,000,12.22
+1995-05-05,12.06,12.06,12.06,12.06,000,12.06
+1995-05-04,12.64,12.64,12.64,12.64,000,12.64
+1995-05-03,11.69,11.69,11.69,11.69,000,11.69
+1995-05-02,11.88,11.88,11.88,11.88,000,11.88
+1995-05-01,12.14,12.14,12.14,12.14,000,12.14
+1995-04-28,11.75,11.75,11.75,11.75,000,11.75
+1995-04-27,11.93,11.93,11.93,11.93,000,11.93
+1995-04-26,12.28,12.28,12.28,12.28,000,12.28
+1995-04-25,12.41,12.41,12.41,12.41,000,12.41
+1995-04-24,11.92,11.92,11.92,11.92,000,11.92
+1995-04-21,11.86,11.86,11.86,11.86,000,11.86
+1995-04-20,12.10,12.10,12.10,12.10,000,12.10
+1995-04-19,13.09,13.09,13.09,13.09,000,13.09
+1995-04-18,12.96,12.96,12.96,12.96,000,12.96
+1995-04-17,12.33,12.33,12.33,12.33,000,12.33
+1995-04-13,11.48,11.48,11.48,11.48,000,11.48
+1995-04-12,12.04,12.04,12.04,12.04,000,12.04
+1995-04-11,12.73,12.73,12.73,12.73,000,12.73
+1995-04-10,12.79,12.79,12.79,12.79,000,12.79
+1995-04-07,12.85,12.85,12.85,12.85,000,12.85
+1995-04-06,12.81,12.81,12.81,12.81,000,12.81
+1995-04-05,12.96,12.96,12.96,12.96,000,12.96
+1995-04-04,12.62,12.62,12.62,12.62,000,12.62
+1995-04-03,13.50,13.50,13.50,13.50,000,13.50
+1995-03-31,13.37,13.37,13.37,13.37,000,13.37
+1995-03-30,12.62,12.62,12.62,12.62,000,12.62
+1995-03-29,12.51,12.51,12.51,12.51,000,12.51
+1995-03-28,11.33,11.33,11.33,11.33,000,11.33
+1995-03-27,11.83,11.83,11.83,11.83,000,11.83
+1995-03-24,11.19,11.19,11.19,11.19,000,11.19
+1995-03-23,11.43,11.43,11.43,11.43,000,11.43
+1995-03-22,11.29,11.29,11.29,11.29,000,11.29
+1995-03-21,11.53,11.53,11.53,11.53,000,11.53
+1995-03-20,11.34,11.34,11.34,11.34,000,11.34
+1995-03-17,11.80,11.80,11.80,11.80,000,11.80
+1995-03-16,11.95,11.95,11.95,11.95,000,11.95
+1995-03-15,12.42,12.42,12.42,12.42,000,12.42
+1995-03-14,12.10,12.10,12.10,12.10,000,12.10
+1995-03-13,12.15,12.15,12.15,12.15,000,12.15
+1995-03-10,12.38,12.38,12.38,12.38,000,12.38
+1995-03-09,13.77,13.77,13.77,13.77,000,13.77
+1995-03-08,14.11,14.11,14.11,14.11,000,14.11
+1995-03-07,14.22,14.22,14.22,14.22,000,14.22
+1995-03-06,12.17,12.17,12.17,12.17,000,12.17
+1995-03-03,11.45,11.45,11.45,11.45,000,11.45
+1995-03-02,12.30,12.30,12.30,12.30,000,12.30
+1995-03-01,12.29,12.29,12.29,12.29,000,12.29
+1995-02-28,11.75,11.75,11.75,11.75,000,11.75
+1995-02-27,12.51,12.51,12.51,12.51,000,12.51
+1995-02-24,10.84,10.84,10.84,10.84,000,10.84
+1995-02-23,11.15,11.15,11.15,11.15,000,11.15
+1995-02-22,11.72,11.72,11.72,11.72,000,11.72
+1995-02-21,12.05,12.05,12.05,12.05,000,12.05
+1995-02-17,12.42,12.42,12.42,12.42,000,12.42
+1995-02-16,11.61,11.61,11.61,11.61,000,11.61
+1995-02-15,11.90,11.90,11.90,11.90,000,11.90
+1995-02-14,11.43,11.43,11.43,11.43,000,11.43
+1995-02-13,11.41,11.41,11.41,11.41,000,11.41
+1995-02-10,11.57,11.57,11.57,11.57,000,11.57
+1995-02-09,11.63,11.63,11.63,11.63,000,11.63
+1995-02-08,11.42,11.42,11.42,11.42,000,11.42
+1995-02-07,11.17,11.17,11.17,11.17,000,11.17
+1995-02-06,11.22,11.22,11.22,11.22,000,11.22
+1995-02-03,10.98,10.98,10.98,10.98,000,10.98
+1995-02-02,11.13,11.13,11.13,11.13,000,11.13
+1995-02-01,11.73,11.73,11.73,11.73,000,11.73
+1995-01-31,11.96,11.96,11.96,11.96,000,11.96
+1995-01-30,12.26,12.26,12.26,12.26,000,12.26
+1995-01-27,11.25,11.25,11.25,11.25,000,11.25
+1995-01-26,11.25,11.25,11.25,11.25,000,11.25
+1995-01-25,11.46,11.46,11.46,11.46,000,11.46
+1995-01-24,11.94,11.94,11.94,11.94,000,11.94
+1995-01-23,12.79,12.79,12.79,12.79,000,12.79
+1995-01-20,12.15,12.15,12.15,12.15,000,12.15
+1995-01-19,11.86,11.86,11.86,11.86,000,11.86
+1995-01-18,11.57,11.57,11.57,11.57,000,11.57
+1995-01-17,11.79,11.79,11.79,11.79,000,11.79
+1995-01-16,11.14,11.14,11.14,11.14,000,11.14
+1995-01-13,11.10,11.10,11.10,11.10,000,11.10
+1995-01-12,12.83,12.83,12.83,12.83,000,12.83
+1995-01-11,12.15,12.15,12.15,12.15,000,12.15
+1995-01-10,12.52,12.52,12.52,12.52,000,12.52
+1995-01-09,13.33,13.33,13.33,13.33,000,13.33
+1995-01-06,13.13,13.13,13.13,13.13,000,13.13
+1995-01-05,13.50,13.50,13.50,13.50,000,13.50
+1995-01-04,13.53,13.53,13.53,13.53,000,13.53
+1995-01-03,14.25,14.25,14.25,14.25,000,14.25
+1994-12-30,13.20,13.20,13.20,13.20,000,13.20
+1994-12-29,12.86,12.86,12.86,12.86,000,12.86
+1994-12-28,12.81,12.81,12.81,12.81,000,12.81
+1994-12-27,12.07,12.07,12.07,12.07,000,12.07
+1994-12-23,11.82,11.82,11.82,11.82,000,11.82
+1994-12-22,12.42,12.42,12.42,12.42,000,12.42
+1994-12-21,12.05,12.05,12.05,12.05,000,12.05
+1994-12-20,12.98,12.98,12.98,12.98,000,12.98
+1994-12-19,13.02,13.02,13.02,13.02,000,13.02
+1994-12-16,12.79,12.79,12.79,12.79,000,12.79
+1994-12-15,12.87,12.87,12.87,12.87,000,12.87
+1994-12-14,13.03,13.03,13.03,13.03,000,13.03
+1994-12-13,14.94,14.94,14.94,14.94,000,14.94
+1994-12-12,15.46,15.46,15.46,15.46,000,15.46
+1994-12-09,15.76,15.76,15.76,15.76,000,15.76
+1994-12-08,17.23,17.23,17.23,17.23,000,17.23
+1994-12-07,16.28,16.28,16.28,16.28,000,16.28
+1994-12-06,16.05,16.05,16.05,16.05,000,16.05
+1994-12-05,16.10,16.10,16.10,16.10,000,16.10
+1994-12-02,16.55,16.55,16.55,16.55,000,16.55
+1994-12-01,16.69,16.69,16.69,16.69,000,16.69
+1994-11-30,15.95,15.95,15.95,15.95,000,15.95
+1994-11-29,16.15,16.15,16.15,16.15,000,16.15
+1994-11-28,16.83,16.83,16.83,16.83,000,16.83
+1994-11-25,17.44,17.44,17.44,17.44,000,17.44
+1994-11-23,18.41,18.41,18.41,18.41,000,18.41
+1994-11-22,17.24,17.24,17.24,17.24,000,17.24
+1994-11-21,16.13,16.13,16.13,16.13,000,16.13
+1994-11-18,16.00,16.00,16.00,16.00,000,16.00
+1994-11-17,15.38,15.38,15.38,15.38,000,15.38
+1994-11-16,15.56,15.56,15.56,15.56,000,15.56
+1994-11-15,16.66,16.66,16.66,16.66,000,16.66
+1994-11-14,16.68,16.68,16.68,16.68,000,16.68
+1994-11-11,16.50,16.50,16.50,16.50,000,16.50
+1994-11-10,16.00,16.00,16.00,16.00,000,16.00
+1994-11-09,16.42,16.42,16.42,16.42,000,16.42
+1994-11-08,16.30,16.30,16.30,16.30,000,16.30
+1994-11-07,17.37,17.37,17.37,17.37,000,17.37
+1994-11-04,16.75,16.75,16.75,16.75,000,16.75
+1994-11-03,15.58,15.58,15.58,15.58,000,15.58
+1994-11-02,15.34,15.34,15.34,15.34,000,15.34
+1994-11-01,14.84,14.84,14.84,14.84,000,14.84
+1994-10-31,14.56,14.56,14.56,14.56,000,14.56
+1994-10-28,14.56,14.56,14.56,14.56,000,14.56
+1994-10-27,15.67,15.67,15.67,15.67,000,15.67
+1994-10-26,15.70,15.70,15.70,15.70,000,15.70
+1994-10-25,16.13,16.13,16.13,16.13,000,16.13
+1994-10-24,16.97,16.97,16.97,16.97,000,16.97
+1994-10-21,15.91,15.91,15.91,15.91,000,15.91
+1994-10-20,15.99,15.99,15.99,15.99,000,15.99
+1994-10-19,15.13,15.13,15.13,15.13,000,15.13
+1994-10-18,14.59,14.59,14.59,14.59,000,14.59
+1994-10-17,14.76,14.76,14.76,14.76,000,14.76
+1994-10-14,13.71,13.71,13.71,13.71,000,13.71
+1994-10-13,14.90,14.90,14.90,14.90,000,14.90
+1994-10-12,14.51,14.51,14.51,14.51,000,14.51
+1994-10-11,13.55,13.55,13.55,13.55,000,13.55
+1994-10-10,14.72,14.72,14.72,14.72,000,14.72
+1994-10-07,14.92,14.92,14.92,14.92,000,14.92
+1994-10-06,16.24,16.24,16.24,16.24,000,16.24
+1994-10-05,15.92,15.92,15.92,15.92,000,15.92
+1994-10-04,16.66,16.66,16.66,16.66,000,16.66
+1994-10-03,15.44,15.44,15.44,15.44,000,15.44
+1994-09-30,14.28,14.28,14.28,14.28,000,14.28
+1994-09-29,13.97,13.97,13.97,13.97,000,13.97
+1994-09-28,13.25,13.25,13.25,13.25,000,13.25
+1994-09-27,14.13,14.13,14.13,14.13,000,14.13
+1994-09-26,14.56,14.56,14.56,14.56,000,14.56
+1994-09-23,14.53,14.53,14.53,14.53,000,14.53
+1994-09-22,13.89,13.89,13.89,13.89,000,13.89
+1994-09-21,14.49,14.49,14.49,14.49,000,14.49
+1994-09-20,14.45,14.45,14.45,14.45,000,14.45
+1994-09-19,13.06,13.06,13.06,13.06,000,13.06
+1994-09-16,13.54,13.54,13.54,13.54,000,13.54
+1994-09-15,12.42,12.42,12.42,12.42,000,12.42
+1994-09-14,12.84,12.84,12.84,12.84,000,12.84
+1994-09-13,13.77,13.77,13.77,13.77,000,13.77
+1994-09-12,14.49,14.49,14.49,14.49,000,14.49
+1994-09-09,13.60,13.60,13.60,13.60,000,13.60
+1994-09-08,11.86,11.86,11.86,11.86,000,11.86
+1994-09-07,11.81,11.81,11.81,11.81,000,11.81
+1994-09-06,11.69,11.69,11.69,11.69,000,11.69
+1994-09-02,11.40,11.40,11.40,11.40,000,11.40
+1994-09-01,11.86,11.86,11.86,11.86,000,11.86
+1994-08-31,11.97,11.97,11.97,11.97,000,11.97
+1994-08-30,11.86,11.86,11.86,11.86,000,11.86
+1994-08-29,11.82,11.82,11.82,11.82,000,11.82
+1994-08-26,12.69,12.69,12.69,12.69,000,12.69
+1994-08-25,12.02,12.02,12.02,12.02,000,12.02
+1994-08-24,11.57,11.57,11.57,11.57,000,11.57
+1994-08-23,11.75,11.75,11.75,11.75,000,11.75
+1994-08-22,12.62,12.62,12.62,12.62,000,12.62
+1994-08-19,12.83,12.83,12.83,12.83,000,12.83
+1994-08-18,12.07,12.07,12.07,12.07,000,12.07
+1994-08-17,11.54,11.54,11.54,11.54,000,11.54
+1994-08-16,11.39,11.39,11.39,11.39,000,11.39
+1994-08-15,12.06,12.06,12.06,12.06,000,12.06
+1994-08-12,11.09,11.09,11.09,11.09,000,11.09
+1994-08-11,12.13,12.13,12.13,12.13,000,12.13
+1994-08-10,11.91,11.91,11.91,11.91,000,11.91
+1994-08-09,12.54,12.54,12.54,12.54,000,12.54
+1994-08-08,12.41,12.41,12.41,12.41,000,12.41
+1994-08-05,12.34,12.34,12.34,12.34,000,12.34
+1994-08-04,12.18,12.18,12.18,12.18,000,12.18
+1994-08-03,11.35,11.35,11.35,11.35,000,11.35
+1994-08-02,11.27,11.27,11.27,11.27,000,11.27
+1994-08-01,11.17,11.17,11.17,11.17,000,11.17
+1994-07-29,11.13,11.13,11.13,11.13,000,11.13
+1994-07-28,12.03,12.03,12.03,12.03,000,12.03
+1994-07-27,11.93,11.93,11.93,11.93,000,11.93
+1994-07-26,11.66,11.66,11.66,11.66,000,11.66
+1994-07-25,11.46,11.46,11.46,11.46,000,11.46
+1994-07-22,11.22,11.22,11.22,11.22,000,11.22
+1994-07-21,11.65,11.65,11.65,11.65,000,11.65
+1994-07-20,11.70,11.70,11.70,11.70,000,11.70
+1994-07-19,11.65,11.65,11.65,11.65,000,11.65
+1994-07-18,11.44,11.44,11.44,11.44,000,11.44
+1994-07-15,11.28,11.28,11.28,11.28,000,11.28
+1994-07-14,11.64,11.64,11.64,11.64,000,11.64
+1994-07-13,12.42,12.42,12.42,12.42,000,12.42
+1994-07-12,13.40,13.40,13.40,13.40,000,13.40
+1994-07-11,13.83,13.83,13.83,13.83,000,13.83
+1994-07-08,13.26,13.26,13.26,13.26,000,13.26
+1994-07-07,14.01,14.01,14.01,14.01,000,14.01
+1994-07-06,14.70,14.70,14.70,14.70,000,14.70
+1994-07-05,14.92,14.92,14.92,14.92,000,14.92
+1994-07-01,14.36,14.36,14.36,14.36,000,14.36
+1994-06-30,14.97,14.97,14.97,14.97,000,14.97
+1994-06-29,14.42,14.42,14.42,14.42,000,14.42
+1994-06-28,15.04,15.04,15.04,15.04,000,15.04
+1994-06-27,15.53,15.53,15.53,15.53,000,15.53
+1994-06-24,16.72,16.72,16.72,16.72,000,16.72
+1994-06-23,14.12,14.12,14.12,14.12,000,14.12
+1994-06-22,14.02,14.02,14.02,14.02,000,14.02
+1994-06-21,14.70,14.70,14.70,14.70,000,14.70
+1994-06-20,13.96,13.96,13.96,13.96,000,13.96
+1994-06-17,12.31,12.31,12.31,12.31,000,12.31
+1994-06-16,11.22,11.22,11.22,11.22,000,11.22
+1994-06-15,11.52,11.52,11.52,11.52,000,11.52
+1994-06-14,11.60,11.60,11.60,11.60,000,11.60
+1994-06-13,11.92,11.92,11.92,11.92,000,11.92
+1994-06-10,12.69,12.69,12.69,12.69,000,12.69
+1994-06-09,13.21,13.21,13.21,13.21,000,13.21
+1994-06-08,13.32,13.32,13.32,13.32,000,13.32
+1994-06-07,13.05,13.05,13.05,13.05,000,13.05
+1994-06-06,13.03,13.03,13.03,13.03,000,13.03
+1994-06-03,12.44,12.44,12.44,12.44,000,12.44
+1994-06-02,12.73,12.73,12.73,12.73,000,12.73
+1994-06-01,12.72,12.72,12.72,12.72,000,12.72
+1994-05-31,13.03,13.03,13.03,13.03,000,13.03
+1994-05-27,12.49,12.49,12.49,12.49,000,12.49
+1994-05-26,12.50,12.50,12.50,12.50,000,12.50
+1994-05-25,12.43,12.43,12.43,12.43,000,12.43
+1994-05-24,12.73,12.73,12.73,12.73,000,12.73
+1994-05-23,13.49,13.49,13.49,13.49,000,13.49
+1994-05-20,13.05,13.05,13.05,13.05,000,13.05
+1994-05-19,11.94,11.94,11.94,11.94,000,11.94
+1994-05-18,12.55,12.55,12.55,12.55,000,12.55
+1994-05-17,14.08,14.08,14.08,14.08,000,14.08
+1994-05-16,14.67,14.67,14.67,14.67,000,14.67
+1994-05-13,14.54,14.54,14.54,14.54,000,14.54
+1994-05-12,15.46,15.46,15.46,15.46,000,15.46
+1994-05-11,15.55,15.55,15.55,15.55,000,15.55
+1994-05-10,15.52,15.52,15.52,15.52,000,15.52
+1994-05-09,16.16,16.16,16.16,16.16,000,16.16
+1994-05-06,15.08,15.08,15.08,15.08,000,15.08
+1994-05-05,14.56,14.56,14.56,14.56,000,14.56
+1994-05-04,14.29,14.29,14.29,14.29,000,14.29
+1994-05-03,13.81,13.81,13.81,13.81,000,13.81
+1994-05-02,14.11,14.11,14.11,14.11,000,14.11
+1994-04-29,13.77,13.77,13.77,13.77,000,13.77
+1994-04-28,14.51,14.51,14.51,14.51,000,14.51
+1994-04-26,13.80,13.80,13.80,13.80,000,13.80
+1994-04-25,14.26,14.26,14.26,14.26,000,14.26
+1994-04-22,14.94,14.94,14.94,14.94,000,14.94
+1994-04-21,14.93,14.93,14.93,14.93,000,14.93
+1994-04-20,17.01,17.01,17.01,17.01,000,17.01
+1994-04-19,16.93,16.93,16.93,16.93,000,16.93
+1994-04-18,17.22,17.22,17.22,17.22,000,17.22
+1994-04-15,15.98,15.98,15.98,15.98,000,15.98
+1994-04-14,16.27,16.27,16.27,16.27,000,16.27
+1994-04-13,17.02,17.02,17.02,17.02,000,17.02
+1994-04-12,16.42,16.42,16.42,16.42,000,16.42
+1994-04-11,16.61,16.61,16.61,16.61,000,16.61
+1994-04-08,16.92,16.92,16.92,16.92,000,16.92
+1994-04-07,16.98,16.98,16.98,16.98,000,16.98
+1994-04-06,17.38,17.38,17.38,17.38,000,17.38
+1994-04-05,18.13,18.13,18.13,18.13,000,18.13
+1994-04-04,23.87,23.87,23.87,23.87,000,23.87
+1994-03-31,20.45,20.45,20.45,20.45,000,20.45
+1994-03-30,18.59,18.59,18.59,18.59,000,18.59
+1994-03-29,16.49,16.49,16.49,16.49,000,16.49
+1994-03-28,14.90,14.90,14.90,14.90,000,14.90
+1994-03-25,13.67,13.67,13.67,13.67,000,13.67
+1994-03-24,13.43,13.43,13.43,13.43,000,13.43
+1994-03-23,12.31,12.31,12.31,12.31,000,12.31
+1994-03-22,13.39,13.39,13.39,13.39,000,13.39
+1994-03-21,14.34,14.34,14.34,14.34,000,14.34
+1994-03-18,13.32,13.32,13.32,13.32,000,13.32
+1994-03-17,12.76,12.76,12.76,12.76,000,12.76
+1994-03-16,14.16,14.16,14.16,14.16,000,14.16
+1994-03-15,14.78,14.78,14.78,14.78,000,14.78
+1994-03-14,16.61,16.61,16.61,16.61,000,16.61
+1994-03-11,14.87,14.87,14.87,14.87,000,14.87
+1994-03-10,16.55,16.55,16.55,16.55,000,16.55
+1994-03-09,14.41,14.41,14.41,14.41,000,14.41
+1994-03-08,16.23,16.23,16.23,16.23,000,16.23
+1994-03-07,14.26,14.26,14.26,14.26,000,14.26
+1994-03-04,16.00,16.00,16.00,16.00,000,16.00
+1994-03-03,16.36,16.36,16.36,16.36,000,16.36
+1994-03-02,16.08,16.08,16.08,16.08,000,16.08
+1994-03-01,15.83,15.83,15.83,15.83,000,15.83
+1994-02-28,14.87,14.87,14.87,14.87,000,14.87
+1994-02-25,15.28,15.28,15.28,15.28,000,15.28
+1994-02-24,16.34,16.34,16.34,16.34,000,16.34
+1994-02-23,13.91,13.91,13.91,13.91,000,13.91
+1994-02-22,13.52,13.52,13.52,13.52,000,13.52
+1994-02-18,14.70,14.70,14.70,14.70,000,14.70
+1994-02-17,13.79,13.79,13.79,13.79,000,13.79
+1994-02-16,13.42,13.42,13.42,13.42,000,13.42
+1994-02-15,13.14,13.14,13.14,13.14,000,13.14
+1994-02-14,14.64,14.64,14.64,14.64,000,14.64
+1994-02-11,14.46,14.46,14.46,14.46,000,14.46
+1994-02-10,14.24,14.24,14.24,14.24,000,14.24
+1994-02-09,12.41,12.41,12.41,12.41,000,12.41
+1994-02-08,13.66,13.66,13.66,13.66,000,13.66
+1994-02-07,13.96,13.96,13.96,13.96,000,13.96
+1994-02-04,15.25,15.25,15.25,15.25,000,15.25
+1994-02-03,10.75,10.75,10.75,10.75,000,10.75
+1994-02-02,10.61,10.61,10.61,10.61,000,10.61
+1994-02-01,10.65,10.65,10.65,10.65,000,10.65
+1994-01-31,10.63,10.63,10.63,10.63,000,10.63
+1994-01-28,9.94,9.94,9.94,9.94,000,9.94
+1994-01-27,10.30,10.30,10.30,10.30,000,10.30
+1994-01-26,11.17,11.17,11.17,11.17,000,11.17
+1994-01-25,11.38,11.38,11.38,11.38,000,11.38
+1994-01-24,11.60,11.60,11.60,11.60,000,11.60
+1994-01-21,11.49,11.49,11.49,11.49,000,11.49
+1994-01-20,11.16,11.16,11.16,11.16,000,11.16
+1994-01-19,11.32,11.32,11.32,11.32,000,11.32
+1994-01-18,11.63,11.63,11.63,11.63,000,11.63
+1994-01-17,11.35,11.35,11.35,11.35,000,11.35
+1994-01-14,11.42,11.42,11.42,11.42,000,11.42
+1994-01-13,12.08,12.08,12.08,12.08,000,12.08
+1994-01-12,11.65,11.65,11.65,11.65,000,11.65
+1994-01-11,11.29,11.29,11.29,11.29,000,11.29
+1994-01-10,10.74,10.74,10.74,10.74,000,10.74
+1994-01-07,10.96,10.96,10.96,10.96,000,10.96
+1994-01-06,11.27,11.27,11.27,11.27,000,11.27
+1994-01-05,10.94,10.94,10.94,10.94,000,10.94
+1994-01-04,11.91,11.91,11.91,11.91,000,11.91
+1994-01-03,12.57,12.57,12.57,12.57,000,12.57
+1993-12-31,11.66,11.66,11.66,11.66,000,11.66
+1993-12-30,10.69,10.69,10.69,10.69,000,10.69
+1993-12-29,10.46,10.46,10.46,10.46,000,10.46
+1993-12-28,9.82,9.82,9.82,9.82,000,9.82
+1993-12-27,9.70,9.70,9.70,9.70,000,9.70
+1993-12-23,9.48,9.48,9.48,9.48,000,9.48
+1993-12-22,9.31,9.31,9.31,9.31,000,9.31
+1993-12-21,10.08,10.08,10.08,10.08,000,10.08
+1993-12-20,10.75,10.75,10.75,10.75,000,10.75
+1993-12-17,11.08,11.08,11.08,11.08,000,11.08
+1993-12-16,10.90,10.90,10.90,10.90,000,10.90
+1993-12-15,11.03,11.03,11.03,11.03,000,11.03
+1993-12-14,11.13,11.13,11.13,11.13,000,11.13
+1993-12-13,10.98,10.98,10.98,10.98,000,10.98
+1993-12-10,12.60,12.60,12.60,12.60,000,12.60
+1993-12-09,12.43,12.43,12.43,12.43,000,12.43
+1993-12-08,12.46,12.46,12.46,12.46,000,12.46
+1993-12-07,12.41,12.41,12.41,12.41,000,12.41
+1993-12-06,12.84,12.84,12.84,12.84,000,12.84
+1993-12-03,12.69,12.69,12.69,12.69,000,12.69
+1993-12-02,13.51,13.51,13.51,13.51,000,13.51
+1993-12-01,13.83,13.83,13.83,13.83,000,13.83
+1993-11-30,13.76,13.76,13.76,13.76,000,13.76
+1993-11-29,14.12,14.12,14.12,14.12,000,14.12
+1993-11-26,13.77,13.77,13.77,13.77,000,13.77
+1993-11-24,13.51,13.51,13.51,13.51,000,13.51
+1993-11-23,14.27,14.27,14.27,14.27,000,14.27
+1993-11-22,15.90,15.90,15.90,15.90,000,15.90
+1993-11-19,15.03,15.03,15.03,15.03,000,15.03
+1993-11-18,14.65,14.65,14.65,14.65,000,14.65
+1993-11-17,15.57,15.57,15.57,15.57,000,15.57
+1993-11-16,15.11,15.11,15.11,15.11,000,15.11
+1993-11-15,14.46,14.46,14.46,14.46,000,14.46
+1993-11-12,13.33,13.33,13.33,13.33,000,13.33
+1993-11-11,13.88,13.88,13.88,13.88,000,13.88
+1993-11-10,13.72,13.72,13.72,13.72,000,13.72
+1993-11-09,13.94,13.94,13.94,13.94,000,13.94
+1993-11-08,14.31,14.31,14.31,14.31,000,14.31
+1993-11-05,14.97,14.97,14.97,14.97,000,14.97
+1993-11-04,14.68,14.68,14.68,14.68,000,14.68
+1993-11-03,13.26,13.26,13.26,13.26,000,13.26
+1993-11-02,11.74,11.74,11.74,11.74,000,11.74
+1993-11-01,11.78,11.78,11.78,11.78,000,11.78
+1993-10-29,11.46,11.46,11.46,11.46,000,11.46
+1993-10-28,11.88,11.88,11.88,11.88,000,11.88
+1993-10-27,12.01,12.01,12.01,12.01,000,12.01
+1993-10-26,11.83,11.83,11.83,11.83,000,11.83
+1993-10-25,11.83,11.83,11.83,11.83,000,11.83
+1993-10-22,11.48,11.48,11.48,11.48,000,11.48
+1993-10-21,11.20,11.20,11.20,11.20,000,11.20
+1993-10-20,11.32,11.32,11.32,11.32,000,11.32
+1993-10-19,11.61,11.61,11.61,11.61,000,11.61
+1993-10-18,11.33,11.33,11.33,11.33,000,11.33
+1993-10-15,10.87,10.87,10.87,10.87,000,10.87
+1993-10-14,11.00,11.00,11.00,11.00,000,11.00
+1993-10-13,11.38,11.38,11.38,11.38,000,11.38
+1993-10-12,12.41,12.41,12.41,12.41,000,12.41
+1993-10-11,12.26,12.26,12.26,12.26,000,12.26
+1993-10-08,12.04,12.04,12.04,12.04,000,12.04
+1993-10-07,13.14,13.14,13.14,13.14,000,13.14
+1993-10-06,12.68,12.68,12.68,12.68,000,12.68
+1993-10-05,12.97,12.97,12.97,12.97,000,12.97
+1993-10-04,12.85,12.85,12.85,12.85,000,12.85
+1993-10-01,11.83,11.83,11.83,11.83,000,11.83
+1993-09-30,12.99,12.99,12.99,12.99,000,12.99
+1993-09-29,12.63,12.63,12.63,12.63,000,12.63
+1993-09-28,12.19,12.19,12.19,12.19,000,12.19
+1993-09-27,12.49,12.49,12.49,12.49,000,12.49
+1993-09-24,12.47,12.47,12.47,12.47,000,12.47
+1993-09-23,13.36,13.36,13.36,13.36,000,13.36
+1993-09-22,13.75,13.75,13.75,13.75,000,13.75
+1993-09-21,17.30,17.30,17.30,17.30,000,17.30
+1993-09-20,14.60,14.60,14.60,14.60,000,14.60
+1993-09-17,13.39,13.39,13.39,13.39,000,13.39
+1993-09-16,13.36,13.36,13.36,13.36,000,13.36
+1993-09-15,12.70,12.70,12.70,12.70,000,12.70
+1993-09-14,13.15,13.15,13.15,13.15,000,13.15
+1993-09-13,12.16,12.16,12.16,12.16,000,12.16
+1993-09-10,11.70,11.70,11.70,11.70,000,11.70
+1993-09-09,12.67,12.67,12.67,12.67,000,12.67
+1993-09-08,13.24,13.24,13.24,13.24,000,13.24
+1993-09-07,12.90,12.90,12.90,12.90,000,12.90
+1993-09-03,11.16,11.16,11.16,11.16,000,11.16
+1993-09-02,11.87,11.87,11.87,11.87,000,11.87
+1993-09-01,11.48,11.48,11.48,11.48,000,11.48
+1993-08-31,11.85,11.85,11.85,11.85,000,11.85
+1993-08-30,11.74,11.74,11.74,11.74,000,11.74
+1993-08-27,11.91,11.91,11.91,11.91,000,11.91
+1993-08-26,12.14,12.14,12.14,12.14,000,12.14
+1993-08-25,12.10,12.10,12.10,12.10,000,12.10
+1993-08-24,11.80,11.80,11.80,11.80,000,11.80
+1993-08-23,12.15,12.15,12.15,12.15,000,12.15
+1993-08-20,11.62,11.62,11.62,11.62,000,11.62
+1993-08-19,11.63,11.63,11.63,11.63,000,11.63
+1993-08-18,11.52,11.52,11.52,11.52,000,11.52
+1993-08-17,11.59,11.59,11.59,11.59,000,11.59
+1993-08-16,11.69,11.69,11.69,11.69,000,11.69
+1993-08-13,12.19,12.19,12.19,12.19,000,12.19
+1993-08-12,12.38,12.38,12.38,12.38,000,12.38
+1993-08-11,12.07,12.07,12.07,12.07,000,12.07
+1993-08-10,12.31,12.31,12.31,12.31,000,12.31
+1993-08-09,12.39,12.39,12.39,12.39,000,12.39
+1993-08-06,12.33,12.33,12.33,12.33,000,12.33
+1993-08-05,12.03,12.03,12.03,12.03,000,12.03
+1993-08-04,11.71,11.71,11.71,11.71,000,11.71
+1993-08-03,11.49,11.49,11.49,11.49,000,11.49
+1993-08-02,11.47,11.47,11.47,11.47,000,11.47
+1993-07-30,11.73,11.73,11.73,11.73,000,11.73
+1993-07-29,11.25,11.25,11.25,11.25,000,11.25
+1993-07-28,11.37,11.37,11.37,11.37,000,11.37
+1993-07-27,11.34,11.34,11.34,11.34,000,11.34
+1993-07-26,11.32,11.32,11.32,11.32,000,11.32
+1993-07-23,11.32,11.32,11.32,11.32,000,11.32
+1993-07-22,11.69,11.69,11.69,11.69,000,11.69
+1993-07-21,11.97,11.97,11.97,11.97,000,11.97
+1993-07-20,11.05,11.05,11.05,11.05,000,11.05
+1993-07-19,11.46,11.46,11.46,11.46,000,11.46
+1993-07-16,10.96,10.96,10.96,10.96,000,10.96
+1993-07-15,10.60,10.60,10.60,10.60,000,10.60
+1993-07-14,10.78,10.78,10.78,10.78,000,10.78
+1993-07-13,11.02,11.02,11.02,11.02,000,11.02
+1993-07-12,10.85,10.85,10.85,10.85,000,10.85
+1993-07-09,10.80,10.80,10.80,10.80,000,10.80
+1993-07-08,12.24,12.24,12.24,12.24,000,12.24
+1993-07-07,13.05,13.05,13.05,13.05,000,13.05
+1993-07-06,13.87,13.87,13.87,13.87,000,13.87
+1993-07-02,11.33,11.33,11.33,11.33,000,11.33
+1993-07-01,11.51,11.51,11.51,11.51,000,11.51
+1993-06-30,11.26,11.26,11.26,11.26,000,11.26
+1993-06-29,11.29,11.29,11.29,11.29,000,11.29
+1993-06-28,11.11,11.11,11.11,11.11,000,11.11
+1993-06-25,11.25,11.25,11.25,11.25,000,11.25
+1993-06-24,12.25,12.25,12.25,12.25,000,12.25
+1993-06-23,12.04,12.04,12.04,12.04,000,12.04
+1993-06-22,11.65,11.65,11.65,11.65,000,11.65
+1993-06-21,12.25,12.25,12.25,12.25,000,12.25
+1993-06-18,12.24,12.24,12.24,12.24,000,12.24
+1993-06-17,11.66,11.66,11.66,11.66,000,11.66
+1993-06-16,11.87,11.87,11.87,11.87,000,11.87
+1993-06-15,11.99,11.99,11.99,11.99,000,11.99
+1993-06-14,12.33,12.33,12.33,12.33,000,12.33
+1993-06-11,12.71,12.71,12.71,12.71,000,12.71
+1993-06-10,13.31,13.31,13.31,13.31,000,13.31
+1993-06-09,13.96,13.96,13.96,13.96,000,13.96
+1993-06-08,14.74,14.74,14.74,14.74,000,14.74
+1993-06-07,14.07,14.07,14.07,14.07,000,14.07
+1993-06-04,12.86,12.86,12.86,12.86,000,12.86
+1993-06-03,13.54,13.54,13.54,13.54,000,13.54
+1993-06-02,13.48,13.48,13.48,13.48,000,13.48
+1993-06-01,13.67,13.67,13.67,13.67,000,13.67
+1993-05-28,13.47,13.47,13.47,13.47,000,13.47
+1993-05-27,13.10,13.10,13.10,13.10,000,13.10
+1993-05-26,12.88,12.88,12.88,12.88,000,12.88
+1993-05-25,14.04,14.04,14.04,14.04,000,14.04
+1993-05-24,14.10,14.10,14.10,14.10,000,14.10
+1993-05-21,14.51,14.51,14.51,14.51,000,14.51
+1993-05-20,13.98,13.98,13.98,13.98,000,13.98
+1993-05-19,14.29,14.29,14.29,14.29,000,14.29
+1993-05-18,14.19,14.19,14.19,14.19,000,14.19
+1993-05-17,14.13,14.13,14.13,14.13,000,14.13
+1993-05-14,14.39,14.39,14.39,14.39,000,14.39
+1993-05-13,14.76,14.76,14.76,14.76,000,14.76
+1993-05-12,13.56,13.56,13.56,13.56,000,13.56
+1993-05-11,13.35,13.35,13.35,13.35,000,13.35
+1993-05-10,13.72,13.72,13.72,13.72,000,13.72
+1993-05-07,13.01,13.01,13.01,13.01,000,13.01
+1993-05-06,13.22,13.22,13.22,13.22,000,13.22
+1993-05-05,12.38,12.38,12.38,12.38,000,12.38
+1993-05-04,12.14,12.14,12.14,12.14,000,12.14
+1993-05-03,12.90,12.90,12.90,12.90,000,12.90
+1993-04-30,12.42,12.42,12.42,12.42,000,12.42
+1993-04-29,12.80,12.80,12.80,12.80,000,12.80
+1993-04-28,13.12,13.12,13.12,13.12,000,13.12
+1993-04-27,13.93,13.93,13.93,13.93,000,13.93
+1993-04-26,15.25,15.25,15.25,15.25,000,15.25
+1993-04-23,13.36,13.36,13.36,13.36,000,13.36
+1993-04-22,12.68,12.68,12.68,12.68,000,12.68
+1993-04-21,12.11,12.11,12.11,12.11,000,12.11
+1993-04-20,11.94,11.94,11.94,11.94,000,11.94
+1993-04-19,12.06,12.06,12.06,12.06,000,12.06
+1993-04-16,11.29,11.29,11.29,11.29,000,11.29
+1993-04-15,10.96,10.96,10.96,10.96,000,10.96
+1993-04-14,11.76,11.76,11.76,11.76,000,11.76
+1993-04-13,11.70,11.70,11.70,11.70,000,11.70
+1993-04-12,11.93,11.93,11.93,11.93,000,11.93
+1993-04-08,12.83,12.83,12.83,12.83,000,12.83
+1993-04-07,13.64,13.64,13.64,13.64,000,13.64
+1993-04-06,14.24,14.24,14.24,14.24,000,14.24
+1993-04-05,14.12,14.12,14.12,14.12,000,14.12
+1993-04-02,14.50,14.50,14.50,14.50,000,14.50
+1993-04-01,13.02,13.02,13.02,13.02,000,13.02
+1993-03-31,12.53,12.53,12.53,12.53,000,12.53
+1993-03-30,12.23,12.23,12.23,12.23,000,12.23
+1993-03-29,12.63,12.63,12.63,12.63,000,12.63
+1993-03-26,12.21,12.21,12.21,12.21,000,12.21
+1993-03-25,12.08,12.08,12.08,12.08,000,12.08
+1993-03-24,12.44,12.44,12.44,12.44,000,12.44
+1993-03-23,13.02,13.02,13.02,13.02,000,13.02
+1993-03-22,13.66,13.66,13.66,13.66,000,13.66
+1993-03-19,13.23,13.23,13.23,13.23,000,13.23
+1993-03-18,14.17,14.17,14.17,14.17,000,14.17
+1993-03-17,14.53,14.53,14.53,14.53,000,14.53
+1993-03-16,14.51,14.51,14.51,14.51,000,14.51
+1993-03-15,14.74,14.74,14.74,14.74,000,14.74
+1993-03-12,15.66,15.66,15.66,15.66,000,15.66
+1993-03-11,14.26,14.26,14.26,14.26,000,14.26
+1993-03-10,13.91,13.91,13.91,13.91,000,13.91
+1993-03-09,14.17,14.17,14.17,14.17,000,14.17
+1993-03-08,16.22,16.22,16.22,16.22,000,16.22
+1993-03-05,14.08,14.08,14.08,14.08,000,14.08
+1993-03-04,13.44,13.44,13.44,13.44,000,13.44
+1993-03-03,13.13,13.13,13.13,13.13,000,13.13
+1993-03-02,12.49,12.49,12.49,12.49,000,12.49
+1993-03-01,13.60,13.60,13.60,13.60,000,13.60
+1993-02-26,13.16,13.16,13.16,13.16,000,13.16
+1993-02-25,13.76,13.76,13.76,13.76,000,13.76
+1993-02-24,14.72,14.72,14.72,14.72,000,14.72
+1993-02-23,15.04,15.04,15.04,15.04,000,15.04
+1993-02-22,14.70,14.70,14.70,14.70,000,14.70
+1993-02-19,15.02,15.02,15.02,15.02,000,15.02
+1993-02-18,15.56,15.56,15.56,15.56,000,15.56
+1993-02-17,15.90,15.90,15.90,15.90,000,15.90
+1993-02-16,15.76,15.76,15.76,15.76,000,15.76
+1993-02-12,12.38,12.38,12.38,12.38,000,12.38
+1993-02-11,12.69,12.69,12.69,12.69,000,12.69
+1993-02-10,13.43,13.43,13.43,13.43,000,13.43
+1993-02-09,13.48,13.48,13.48,13.48,000,13.48
+1993-02-08,13.22,13.22,13.22,13.22,000,13.22
+1993-02-05,12.90,12.90,12.90,12.90,000,12.90
+1993-02-04,12.29,12.29,12.29,12.29,000,12.29
+1993-02-03,12.12,12.12,12.12,12.12,000,12.12
+1993-02-02,12.25,12.25,12.25,12.25,000,12.25
+1993-02-01,12.33,12.33,12.33,12.33,000,12.33
+1993-01-29,12.42,12.42,12.42,12.42,000,12.42
+1993-01-28,12.04,12.04,12.04,12.04,000,12.04
+1993-01-27,12.01,12.01,12.01,12.01,000,12.01
+1993-01-26,11.45,11.45,11.45,11.45,000,11.45
+1993-01-25,11.38,11.38,11.38,11.38,000,11.38
+1993-01-22,11.30,11.30,11.30,11.30,000,11.30
+1993-01-21,11.69,11.69,11.69,11.69,000,11.69
+1993-01-20,12.15,12.15,12.15,12.15,000,12.15
+1993-01-19,12.06,12.06,12.06,12.06,000,12.06
+1993-01-18,11.49,11.49,11.49,11.49,000,11.49
+1993-01-15,11.57,11.57,11.57,11.57,000,11.57
+1993-01-14,11.99,11.99,11.99,11.99,000,11.99
+1993-01-13,12.42,12.42,12.42,12.42,000,12.42
+1993-01-12,12.78,12.78,12.78,12.78,000,12.78
+1993-01-11,12.86,12.86,12.86,12.86,000,12.86
+1993-01-08,13.77,13.77,13.77,13.77,000,13.77
+1993-01-07,14.72,14.72,14.72,14.72,000,14.72
+1993-01-06,13.37,13.37,13.37,13.37,000,13.37
+1993-01-05,13.35,13.35,13.35,13.35,000,13.35
+1993-01-04,13.36,13.36,13.36,13.36,000,13.36
+1992-12-31,12.57,12.57,12.57,12.57,000,12.57
+1992-12-30,12.60,12.60,12.60,12.60,000,12.60
+1992-12-29,12.29,12.29,12.29,12.29,000,12.29
+1992-12-28,12.22,12.22,12.22,12.22,000,12.22
+1992-12-24,11.57,11.57,11.57,11.57,000,11.57
+1992-12-23,11.51,11.51,11.51,11.51,000,11.51
+1992-12-22,11.75,11.75,11.75,11.75,000,11.75
+1992-12-21,11.65,11.65,11.65,11.65,000,11.65
+1992-12-18,11.66,11.66,11.66,11.66,000,11.66
+1992-12-17,12.14,12.14,12.14,12.14,000,12.14
+1992-12-16,12.58,12.58,12.58,12.58,000,12.58
+1992-12-15,12.41,12.41,12.41,12.41,000,12.41
+1992-12-14,12.66,12.66,12.66,12.66,000,12.66
+1992-12-11,12.34,12.34,12.34,12.34,000,12.34
+1992-12-10,12.75,12.75,12.75,12.75,000,12.75
+1992-12-09,12.58,12.58,12.58,12.58,000,12.58
+1992-12-08,11.73,11.73,11.73,11.73,000,11.73
+1992-12-07,12.00,12.00,12.00,12.00,000,12.00
+1992-12-04,11.81,11.81,11.81,11.81,000,11.81
+1992-12-03,12.03,12.03,12.03,12.03,000,12.03
+1992-12-02,12.56,12.56,12.56,12.56,000,12.56
+1992-12-01,12.80,12.80,12.80,12.80,000,12.80
+1992-11-30,13.01,13.01,13.01,13.01,000,13.01
+1992-11-27,12.58,12.58,12.58,12.58,000,12.58
+1992-11-25,12.50,12.50,12.50,12.50,000,12.50
+1992-11-24,12.66,12.66,12.66,12.66,000,12.66
+1992-11-23,13.40,13.40,13.40,13.40,000,13.40
+1992-11-20,13.67,13.67,13.67,13.67,000,13.67
+1992-11-19,14.33,14.33,14.33,14.33,000,14.33
+1992-11-18,14.55,14.55,14.55,14.55,000,14.55
+1992-11-17,15.01,15.01,15.01,15.01,000,15.01
+1992-11-16,14.86,14.86,14.86,14.86,000,14.86
+1992-11-13,14.61,14.61,14.61,14.61,000,14.61
+1992-11-12,14.37,14.37,14.37,14.37,000,14.37
+1992-11-11,13.99,13.99,13.99,13.99,000,13.99
+1992-11-10,14.37,14.37,14.37,14.37,000,14.37
+1992-11-09,14.23,14.23,14.23,14.23,000,14.23
+1992-11-06,14.69,14.69,14.69,14.69,000,14.69
+1992-11-05,15.38,15.38,15.38,15.38,000,15.38
+1992-11-04,16.28,16.28,16.28,16.28,000,16.28
+1992-11-03,17.33,17.33,17.33,17.33,000,17.33
+1992-11-02,16.67,16.67,16.67,16.67,000,16.67
+1992-10-30,16.15,16.15,16.15,16.15,000,16.15
+1992-10-29,15.47,15.47,15.47,15.47,000,15.47
+1992-10-28,15.95,15.95,15.95,15.95,000,15.95
+1992-10-27,16.24,16.24,16.24,16.24,000,16.24
+1992-10-26,16.32,16.32,16.32,16.32,000,16.32
+1992-10-23,16.46,16.46,16.46,16.46,000,16.46
+1992-10-22,15.84,15.84,15.84,15.84,000,15.84
+1992-10-21,16.62,16.62,16.62,16.62,000,16.62
+1992-10-20,16.87,16.87,16.87,16.87,000,16.87
+1992-10-19,17.31,17.31,17.31,17.31,000,17.31
+1992-10-16,17.01,17.01,17.01,17.01,000,17.01
+1992-10-15,17.11,17.11,17.11,17.11,000,17.11
+1992-10-14,18.42,18.42,18.42,18.42,000,18.42
+1992-10-13,17.90,17.90,17.90,17.90,000,17.90
+1992-10-12,19.49,19.49,19.49,19.49,000,19.49
+1992-10-09,20.51,20.51,20.51,20.51,000,20.51
+1992-10-08,19.26,19.26,19.26,19.26,000,19.26
+1992-10-07,20.23,20.23,20.23,20.23,000,20.23
+1992-10-06,19.42,19.42,19.42,19.42,000,19.42
+1992-10-05,20.01,20.01,20.01,20.01,000,20.01
+1992-10-02,17.79,17.79,17.79,17.79,000,17.79
+1992-10-01,16.31,16.31,16.31,16.31,000,16.31
+1992-09-30,14.28,14.28,14.28,14.28,000,14.28
+1992-09-29,14.97,14.97,14.97,14.97,000,14.97
+1992-09-28,15.19,15.19,15.19,15.19,000,15.19
+1992-09-25,14.80,14.80,14.80,14.80,000,14.80
+1992-09-24,13.44,13.44,13.44,13.44,000,13.44
+1992-09-23,13.83,13.83,13.83,13.83,000,13.83
+1992-09-22,13.88,13.88,13.88,13.88,000,13.88
+1992-09-21,13.45,13.45,13.45,13.45,000,13.45
+1992-09-18,13.74,13.74,13.74,13.74,000,13.74
+1992-09-17,14.31,14.31,14.31,14.31,000,14.31
+1992-09-16,14.72,14.72,14.72,14.72,000,14.72
+1992-09-15,13.63,13.63,13.63,13.63,000,13.63
+1992-09-14,13.00,13.00,13.00,13.00,000,13.00
+1992-09-11,12.47,12.47,12.47,12.47,000,12.47
+1992-09-10,12.92,12.92,12.92,12.92,000,12.92
+1992-09-09,13.36,13.36,13.36,13.36,000,13.36
+1992-09-08,13.65,13.65,13.65,13.65,000,13.65
+1992-09-04,12.98,12.98,12.98,12.98,000,12.98
+1992-09-03,12.88,12.88,12.88,12.88,000,12.88
+1992-09-02,12.73,12.73,12.73,12.73,000,12.73
+1992-09-01,13.40,13.40,13.40,13.40,000,13.40
+1992-08-31,13.58,13.58,13.58,13.58,000,13.58
+1992-08-28,13.14,13.14,13.14,13.14,000,13.14
+1992-08-27,13.66,13.66,13.66,13.66,000,13.66
+1992-08-26,14.50,14.50,14.50,14.50,000,14.50
+1992-08-25,15.88,15.88,15.88,15.88,000,15.88
+1992-08-24,15.31,15.31,15.31,15.31,000,15.31
+1992-08-21,15.01,15.01,15.01,15.01,000,15.01
+1992-08-20,14.48,14.48,14.48,14.48,000,14.48
+1992-08-19,14.35,14.35,14.35,14.35,000,14.35
+1992-08-18,13.84,13.84,13.84,13.84,000,13.84
+1992-08-17,14.61,14.61,14.61,14.61,000,14.61
+1992-08-14,14.66,14.66,14.66,14.66,000,14.66
+1992-08-13,15.34,15.34,15.34,15.34,000,15.34
+1992-08-12,14.88,14.88,14.88,14.88,000,14.88
+1992-08-11,15.09,15.09,15.09,15.09,000,15.09
+1992-08-10,14.51,14.51,14.51,14.51,000,14.51
+1992-08-07,13.94,13.94,13.94,13.94,000,13.94
+1992-08-06,14.23,14.23,14.23,14.23,000,14.23
+1992-08-05,13.82,13.82,13.82,13.82,000,13.82
+1992-08-04,13.58,13.58,13.58,13.58,000,13.58
+1992-08-03,13.83,13.83,13.83,13.83,000,13.83
+1992-07-31,13.17,13.17,13.17,13.17,000,13.17
+1992-07-30,13.50,13.50,13.50,13.50,000,13.50
+1992-07-29,13.44,13.44,13.44,13.44,000,13.44
+1992-07-28,13.05,13.05,13.05,13.05,000,13.05
+1992-07-27,13.90,13.90,13.90,13.90,000,13.90
+1992-07-24,13.37,13.37,13.37,13.37,000,13.37
+1992-07-23,13.33,13.33,13.33,13.33,000,13.33
+1992-07-22,13.57,13.57,13.57,13.57,000,13.57
+1992-07-21,12.60,12.60,12.60,12.60,000,12.60
+1992-07-20,12.66,12.66,12.66,12.66,000,12.66
+1992-07-17,12.60,12.60,12.60,12.60,000,12.60
+1992-07-16,12.27,12.27,12.27,12.27,000,12.27
+1992-07-15,12.52,12.52,12.52,12.52,000,12.52
+1992-07-14,12.85,12.85,12.85,12.85,000,12.85
+1992-07-13,14.01,14.01,14.01,14.01,000,14.01
+1992-07-10,13.70,13.70,13.70,13.70,000,13.70
+1992-07-09,14.60,14.60,14.60,14.60,000,14.60
+1992-07-08,15.53,15.53,15.53,15.53,000,15.53
+1992-07-07,15.83,15.83,15.83,15.83,000,15.83
+1992-07-06,14.87,14.87,14.87,14.87,000,14.87
+1992-07-02,13.88,13.88,13.88,13.88,000,13.88
+1992-07-01,13.34,13.34,13.34,13.34,000,13.34
+1992-06-30,13.35,13.35,13.35,13.35,000,13.35
+1992-06-29,13.21,13.21,13.21,13.21,000,13.21
+1992-06-26,14.67,14.67,14.67,14.67,000,14.67
+1992-06-25,14.40,14.40,14.40,14.40,000,14.40
+1992-06-24,14.40,14.40,14.40,14.40,000,14.40
+1992-06-23,14.53,14.53,14.53,14.53,000,14.53
+1992-06-22,16.66,16.66,16.66,16.66,000,16.66
+1992-06-19,16.31,16.31,16.31,16.31,000,16.31
+1992-06-18,18.20,18.20,18.20,18.20,000,18.20
+1992-06-17,18.08,18.08,18.08,18.08,000,18.08
+1992-06-16,15.22,15.22,15.22,15.22,000,15.22
+1992-06-15,14.76,14.76,14.76,14.76,000,14.76
+1992-06-12,14.95,14.95,14.95,14.95,000,14.95
+1992-06-11,16.29,16.29,16.29,16.29,000,16.29
+1992-06-10,16.62,16.62,16.62,16.62,000,16.62
+1992-06-09,15.97,15.97,15.97,15.97,000,15.97
+1992-06-08,15.45,15.45,15.45,15.45,000,15.45
+1992-06-05,14.65,14.65,14.65,14.65,000,14.65
+1992-06-04,13.66,13.66,13.66,13.66,000,13.66
+1992-06-03,14.35,14.35,14.35,14.35,000,14.35
+1992-06-02,14.57,14.57,14.57,14.57,000,14.57
+1992-06-01,14.43,14.43,14.43,14.43,000,14.43
+1992-05-29,13.86,13.86,13.86,13.86,000,13.86
+1992-05-28,13.77,13.77,13.77,13.77,000,13.77
+1992-05-27,13.99,13.99,13.99,13.99,000,13.99
+1992-05-26,14.92,14.92,14.92,14.92,000,14.92
+1992-05-22,13.73,13.73,13.73,13.73,000,13.73
+1992-05-21,13.92,13.92,13.92,13.92,000,13.92
+1992-05-20,13.62,13.62,13.62,13.62,000,13.62
+1992-05-19,13.57,13.57,13.57,13.57,000,13.57
+1992-05-18,14.62,14.62,14.62,14.62,000,14.62
+1992-05-15,14.82,14.82,14.82,14.82,000,14.82
+1992-05-14,15.49,15.49,15.49,15.49,000,15.49
+1992-05-13,15.19,15.19,15.19,15.19,000,15.19
+1992-05-12,15.68,15.68,15.68,15.68,000,15.68
+1992-05-11,15.17,15.17,15.17,15.17,000,15.17
+1992-05-08,15.65,15.65,15.65,15.65,000,15.65
+1992-05-07,16.54,16.54,16.54,16.54,000,16.54
+1992-05-06,16.81,16.81,16.81,16.81,000,16.81
+1992-05-05,16.66,16.66,16.66,16.66,000,16.66
+1992-05-04,16.92,16.92,16.92,16.92,000,16.92
+1992-05-01,16.61,16.61,16.61,16.61,000,16.61
+1992-04-30,15.53,15.53,15.53,15.53,000,15.53
+1992-04-29,15.95,15.95,15.95,15.95,000,15.95
+1992-04-28,16.24,16.24,16.24,16.24,000,16.24
+1992-04-27,16.49,16.49,16.49,16.49,000,16.49
+1992-04-24,16.31,16.31,16.31,16.31,000,16.31
+1992-04-23,15.83,15.83,15.83,15.83,000,15.83
+1992-04-22,15.96,15.96,15.96,15.96,000,15.96
+1992-04-21,16.53,16.53,16.53,16.53,000,16.53
+1992-04-20,15.93,15.93,15.93,15.93,000,15.93
+1992-04-16,14.85,14.85,14.85,14.85,000,14.85
+1992-04-15,16.03,16.03,16.03,16.03,000,16.03
+1992-04-14,15.98,15.98,15.98,15.98,000,15.98
+1992-04-13,15.65,15.65,15.65,15.65,000,15.65
+1992-04-10,16.85,16.85,16.85,16.85,000,16.85
+1992-04-09,17.89,17.89,17.89,17.89,000,17.89
+1992-04-08,20.15,20.15,20.15,20.15,000,20.15
+1992-04-07,18.81,18.81,18.81,18.81,000,18.81
+1992-04-06,16.72,16.72,16.72,16.72,000,16.72
+1992-04-03,17.46,17.46,17.46,17.46,000,17.46
+1992-04-02,17.06,17.06,17.06,17.06,000,17.06
+1992-04-01,16.48,16.48,16.48,16.48,000,16.48
+1992-03-31,16.18,16.18,16.18,16.18,000,16.18
+1992-03-30,15.97,15.97,15.97,15.97,000,15.97
+1992-03-27,16.02,16.02,16.02,16.02,000,16.02
+1992-03-26,15.69,15.69,15.69,15.69,000,15.69
+1992-03-25,16.19,16.19,16.19,16.19,000,16.19
+1992-03-24,16.32,16.32,16.32,16.32,000,16.32
+1992-03-23,16.73,16.73,16.73,16.73,000,16.73
+1992-03-20,16.31,16.31,16.31,16.31,000,16.31
+1992-03-19,14.57,14.57,14.57,14.57,000,14.57
+1992-03-18,16.69,16.69,16.69,16.69,000,16.69
+1992-03-17,16.79,16.79,16.79,16.79,000,16.79
+1992-03-16,18.46,18.46,18.46,18.46,000,18.46
+1992-03-13,18.35,18.35,18.35,18.35,000,18.35
+1992-03-12,19.72,19.72,19.72,19.72,000,19.72
+1992-03-11,19.79,19.79,19.79,19.79,000,19.79
+1992-03-10,18.68,18.68,18.68,18.68,000,18.68
+1992-03-09,19.68,19.68,19.68,19.68,000,19.68
+1992-03-06,19.75,19.75,19.75,19.75,000,19.75
+1992-03-05,18.47,18.47,18.47,18.47,000,18.47
+1992-03-04,17.55,17.55,17.55,17.55,000,17.55
+1992-03-03,17.26,17.26,17.26,17.26,000,17.26
+1992-03-02,16.88,16.88,16.88,16.88,000,16.88
+1992-02-28,16.68,16.68,16.68,16.68,000,16.68
+1992-02-27,16.51,16.51,16.51,16.51,000,16.51
+1992-02-26,16.64,16.64,16.64,16.64,000,16.64
+1992-02-25,16.35,16.35,16.35,16.35,000,16.35
+1992-02-24,17.13,17.13,17.13,17.13,000,17.13
+1992-02-21,16.87,16.87,16.87,16.87,000,16.87
+1992-02-20,16.72,16.72,16.72,16.72,000,16.72
+1992-02-19,17.16,17.16,17.16,17.16,000,17.16
+1992-02-18,18.22,18.22,18.22,18.22,000,18.22
+1992-02-14,17.03,17.03,17.03,17.03,000,17.03
+1992-02-13,17.45,17.45,17.45,17.45,000,17.45
+1992-02-12,17.37,17.37,17.37,17.37,000,17.37
+1992-02-11,17.70,17.70,17.70,17.70,000,17.70
+1992-02-10,18.56,18.56,18.56,18.56,000,18.56
+1992-02-07,18.51,18.51,18.51,18.51,000,18.51
+1992-02-06,18.79,18.79,18.79,18.79,000,18.79
+1992-02-05,18.22,18.22,18.22,18.22,000,18.22
+1992-02-04,17.96,17.96,17.96,17.96,000,17.96
+1992-02-03,18.20,18.20,18.20,18.20,000,18.20
+1992-01-31,17.40,17.40,17.40,17.40,000,17.40
+1992-01-30,17.49,17.49,17.49,17.49,000,17.49
+1992-01-29,17.62,17.62,17.62,17.62,000,17.62
+1992-01-28,17.67,17.67,17.67,17.67,000,17.67
+1992-01-27,16.67,16.67,16.67,16.67,000,16.67
+1992-01-24,16.24,16.24,16.24,16.24,000,16.24
+1992-01-23,16.46,16.46,16.46,16.46,000,16.46
+1992-01-22,16.75,16.75,16.75,16.75,000,16.75
+1992-01-21,17.92,17.92,17.92,17.92,000,17.92
+1992-01-20,16.42,16.42,16.42,16.42,000,16.42
+1992-01-17,16.32,16.32,16.32,16.32,000,16.32
+1992-01-16,17.64,17.64,17.64,17.64,000,17.64
+1992-01-15,17.39,17.39,17.39,17.39,000,17.39
+1992-01-14,17.01,17.01,17.01,17.01,000,17.01
+1992-01-13,16.80,16.80,16.80,16.80,000,16.80
+1992-01-10,18.45,18.45,18.45,18.45,000,18.45
+1992-01-09,18.96,18.96,18.96,18.96,000,18.96
+1992-01-08,18.72,18.72,18.72,18.72,000,18.72
+1992-01-07,19.23,19.23,19.23,19.23,000,19.23
+1992-01-06,18.96,18.96,18.96,18.96,000,18.96
+1992-01-03,18.75,18.75,18.75,18.75,000,18.75
+1992-01-02,18.95,18.95,18.95,18.95,000,18.95
+1991-12-31,19.31,19.31,19.31,19.31,000,19.31
+1991-12-30,17.63,17.63,17.63,17.63,000,17.63
+1991-12-27,15.70,15.70,15.70,15.70,000,15.70
+1991-12-26,15.44,15.44,15.44,15.44,000,15.44
+1991-12-24,15.67,15.67,15.67,15.67,000,15.67
+1991-12-23,16.61,16.61,16.61,16.61,000,16.61
+1991-12-20,17.65,17.65,17.65,17.65,000,17.65
+1991-12-19,17.96,17.96,17.96,17.96,000,17.96
+1991-12-18,17.78,17.78,17.78,17.78,000,17.78
+1991-12-17,18.12,18.12,18.12,18.12,000,18.12
+1991-12-16,17.62,17.62,17.62,17.62,000,17.62
+1991-12-13,17.88,17.88,17.88,17.88,000,17.88
+1991-12-12,19.08,19.08,19.08,19.08,000,19.08
+1991-12-11,20.57,20.57,20.57,20.57,000,20.57
+1991-12-10,19.89,19.89,19.89,19.89,000,19.89
+1991-12-09,19.74,19.74,19.74,19.74,000,19.74
+1991-12-06,19.04,19.04,19.04,19.04,000,19.04
+1991-12-05,20.19,20.19,20.19,20.19,000,20.19
+1991-12-04,19.54,19.54,19.54,19.54,000,19.54
+1991-12-03,19.70,19.70,19.70,19.70,000,19.70
+1991-12-02,20.18,20.18,20.18,20.18,000,20.18
+1991-11-29,20.26,20.26,20.26,20.26,000,20.26
+1991-11-27,19.84,19.84,19.84,19.84,000,19.84
+1991-11-26,19.80,19.80,19.80,19.80,000,19.80
+1991-11-25,21.92,21.92,21.92,21.92,000,21.92
+1991-11-22,21.20,21.20,21.20,21.20,000,21.20
+1991-11-21,19.11,19.11,19.11,19.11,000,19.11
+1991-11-20,20.40,20.40,20.40,20.40,000,20.40
+1991-11-19,20.34,20.34,20.34,20.34,000,20.34
+1991-11-18,18.28,18.28,18.28,18.28,000,18.28
+1991-11-15,21.18,21.18,21.18,21.18,000,21.18
+1991-11-14,13.96,13.96,13.96,13.96,000,13.96
+1991-11-13,13.95,13.95,13.95,13.95,000,13.95
+1991-11-12,14.04,14.04,14.04,14.04,000,14.04
+1991-11-11,14.89,14.89,14.89,14.89,000,14.89
+1991-11-08,15.43,15.43,15.43,15.43,000,15.43
+1991-11-07,15.97,15.97,15.97,15.97,000,15.97
+1991-11-06,16.47,16.47,16.47,16.47,000,16.47
+1991-11-05,16.48,16.48,16.48,16.48,000,16.48
+1991-11-04,16.35,16.35,16.35,16.35,000,16.35
+1991-11-01,15.60,15.60,15.60,15.60,000,15.60
+1991-10-31,15.48,15.48,15.48,15.48,000,15.48
+1991-10-30,15.46,15.46,15.46,15.46,000,15.46
+1991-10-29,15.55,15.55,15.55,15.55,000,15.55
+1991-10-28,15.45,15.45,15.45,15.45,000,15.45
+1991-10-25,15.75,15.75,15.75,15.75,000,15.75
+1991-10-24,15.62,15.62,15.62,15.62,000,15.62
+1991-10-23,16.26,16.26,16.26,16.26,000,16.26
+1991-10-22,16.55,16.55,16.55,16.55,000,16.55
+1991-10-21,16.66,16.66,16.66,16.66,000,16.66
+1991-10-18,15.87,15.87,15.87,15.87,000,15.87
+1991-10-17,16.32,16.32,16.32,16.32,000,16.32
+1991-10-16,14.85,14.85,14.85,14.85,000,14.85
+1991-10-15,16.22,16.22,16.22,16.22,000,16.22
+1991-10-14,16.71,16.71,16.71,16.71,000,16.71
+1991-10-11,17.60,17.60,17.60,17.60,000,17.60
+1991-10-10,17.80,17.80,17.80,17.80,000,17.80
+1991-10-09,18.54,18.54,18.54,18.54,000,18.54
+1991-10-08,17.81,17.81,17.81,17.81,000,17.81
+1991-10-07,18.58,18.58,18.58,18.58,000,18.58
+1991-10-04,15.63,15.63,15.63,15.63,000,15.63
+1991-10-03,17.04,17.04,17.04,17.04,000,17.04
+1991-10-02,15.81,15.81,15.81,15.81,000,15.81
+1991-10-01,14.81,14.81,14.81,14.81,000,14.81
+1991-09-30,15.85,15.85,15.85,15.85,000,15.85
+1991-09-27,16.31,16.31,16.31,16.31,000,16.31
+1991-09-26,15.35,15.35,15.35,15.35,000,15.35
+1991-09-25,15.68,15.68,15.68,15.68,000,15.68
+1991-09-24,16.04,16.04,16.04,16.04,000,16.04
+1991-09-23,16.38,16.38,16.38,16.38,000,16.38
+1991-09-20,17.08,17.08,17.08,17.08,000,17.08
+1991-09-19,17.56,17.56,17.56,17.56,000,17.56
+1991-09-18,17.56,17.56,17.56,17.56,000,17.56
+1991-09-17,17.68,17.68,17.68,17.68,000,17.68
+1991-09-16,17.82,17.82,17.82,17.82,000,17.82
+1991-09-13,17.88,17.88,17.88,17.88,000,17.88
+1991-09-12,16.21,16.21,16.21,16.21,000,16.21
+1991-09-11,17.96,17.96,17.96,17.96,000,17.96
+1991-09-10,18.22,18.22,18.22,18.22,000,18.22
+1991-09-09,17.73,17.73,17.73,17.73,000,17.73
+1991-09-06,16.76,16.76,16.76,16.76,000,16.76
+1991-09-05,17.31,17.31,17.31,17.31,000,17.31
+1991-09-04,17.18,17.18,17.18,17.18,000,17.18
+1991-09-03,16.57,16.57,16.57,16.57,000,16.57
+1991-08-30,14.46,14.46,14.46,14.46,000,14.46
+1991-08-29,14.82,14.82,14.82,14.82,000,14.82
+1991-08-28,15.31,15.31,15.31,15.31,000,15.31
+1991-08-27,15.46,15.46,15.46,15.46,000,15.46
+1991-08-26,14.81,14.81,14.81,14.81,000,14.81
+1991-08-23,14.41,14.41,14.41,14.41,000,14.41
+1991-08-22,14.59,14.59,14.59,14.59,000,14.59
+1991-08-21,15.62,15.62,15.62,15.62,000,15.62
+1991-08-20,18.86,18.86,18.86,18.86,000,18.86
+1991-08-19,21.19,21.19,21.19,21.19,000,21.19
+1991-08-16,16.01,16.01,16.01,16.01,000,16.01
+1991-08-15,15.19,15.19,15.19,15.19,000,15.19
+1991-08-14,15.09,15.09,15.09,15.09,000,15.09
+1991-08-13,14.73,14.73,14.73,14.73,000,14.73
+1991-08-12,15.26,15.26,15.26,15.26,000,15.26
+1991-08-09,15.45,15.45,15.45,15.45,000,15.45
+1991-08-08,15.98,15.98,15.98,15.98,000,15.98
+1991-08-07,15.56,15.56,15.56,15.56,000,15.56
+1991-08-06,15.54,15.54,15.54,15.54,000,15.54
+1991-08-05,15.92,15.92,15.92,15.92,000,15.92
+1991-08-02,15.26,15.26,15.26,15.26,000,15.26
+1991-08-01,15.47,15.47,15.47,15.47,000,15.47
+1991-07-31,15.18,15.18,15.18,15.18,000,15.18
+1991-07-30,15.47,15.47,15.47,15.47,000,15.47
+1991-07-29,15.67,15.67,15.67,15.67,000,15.67
+1991-07-26,15.45,15.45,15.45,15.45,000,15.45
+1991-07-25,15.74,15.74,15.74,15.74,000,15.74
+1991-07-24,16.41,16.41,16.41,16.41,000,16.41
+1991-07-23,16.58,16.58,16.58,16.58,000,16.58
+1991-07-22,16.90,16.90,16.90,16.90,000,16.90
+1991-07-19,15.50,15.50,15.50,15.50,000,15.50
+1991-07-18,15.77,15.77,15.77,15.77,000,15.77
+1991-07-17,17.52,17.52,17.52,17.52,000,17.52
+1991-07-16,17.49,17.49,17.49,17.49,000,17.49
+1991-07-15,17.78,17.78,17.78,17.78,000,17.78
+1991-07-12,18.29,18.29,18.29,18.29,000,18.29
+1991-07-11,17.39,17.39,17.39,17.39,000,17.39
+1991-07-10,19.19,19.19,19.19,19.19,000,19.19
+1991-07-09,19.76,19.76,19.76,19.76,000,19.76
+1991-07-08,20.29,20.29,20.29,20.29,000,20.29
+1991-07-05,18.35,18.35,18.35,18.35,000,18.35
+1991-07-03,19.47,19.47,19.47,19.47,000,19.47
+1991-07-02,17.63,17.63,17.63,17.63,000,17.63
+1991-07-01,18.64,18.64,18.64,18.64,000,18.64
+1991-06-28,19.55,19.55,19.55,19.55,000,19.55
+1991-06-27,17.87,17.87,17.87,17.87,000,17.87
+1991-06-26,17.98,17.98,17.98,17.98,000,17.98
+1991-06-25,17.85,17.85,17.85,17.85,000,17.85
+1991-06-24,18.28,18.28,18.28,18.28,000,18.28
+1991-06-21,16.51,16.51,16.51,16.51,000,16.51
+1991-06-20,16.75,16.75,16.75,16.75,000,16.75
+1991-06-19,17.44,17.44,17.44,17.44,000,17.44
+1991-06-18,16.14,16.14,16.14,16.14,000,16.14
+1991-06-17,15.50,15.50,15.50,15.50,000,15.50
+1991-06-14,15.98,15.98,15.98,15.98,000,15.98
+1991-06-13,16.99,16.99,16.99,16.99,000,16.99
+1991-06-12,17.72,17.72,17.72,17.72,000,17.72
+1991-06-11,17.32,17.32,17.32,17.32,000,17.32
+1991-06-10,17.47,17.47,17.47,17.47,000,17.47
+1991-06-07,16.98,16.98,16.98,16.98,000,16.98
+1991-06-06,16.93,16.93,16.93,16.93,000,16.93
+1991-06-05,16.40,16.40,16.40,16.40,000,16.40
+1991-06-04,16.17,16.17,16.17,16.17,000,16.17
+1991-06-03,16.87,16.87,16.87,16.87,000,16.87
+1991-05-31,15.93,15.93,15.93,15.93,000,15.93
+1991-05-30,16.02,16.02,16.02,16.02,000,16.02
+1991-05-29,15.90,15.90,15.90,15.90,000,15.90
+1991-05-28,15.67,15.67,15.67,15.67,000,15.67
+1991-05-24,15.23,15.23,15.23,15.23,000,15.23
+1991-05-23,16.11,16.11,16.11,16.11,000,16.11
+1991-05-22,16.16,16.16,16.16,16.16,000,16.16
+1991-05-21,16.07,16.07,16.07,16.07,000,16.07
+1991-05-20,17.10,17.10,17.10,17.10,000,17.10
+1991-05-17,16.64,16.64,16.64,16.64,000,16.64
+1991-05-16,17.24,17.24,17.24,17.24,000,17.24
+1991-05-15,18.38,18.38,18.38,18.38,000,18.38
+1991-05-14,18.00,18.00,18.00,18.00,000,18.00
+1991-05-13,17.66,17.66,17.66,17.66,000,17.66
+1991-05-10,17.54,17.54,17.54,17.54,000,17.54
+1991-05-09,17.17,17.17,17.17,17.17,000,17.17
+1991-05-08,17.78,17.78,17.78,17.78,000,17.78
+1991-05-07,17.46,17.46,17.46,17.46,000,17.46
+1991-05-06,17.92,17.92,17.92,17.92,000,17.92
+1991-05-03,17.24,17.24,17.24,17.24,000,17.24
+1991-05-02,17.52,17.52,17.52,17.52,000,17.52
+1991-05-01,17.77,17.77,17.77,17.77,000,17.77
+1991-04-30,18.24,18.24,18.24,18.24,000,18.24
+1991-04-29,18.27,18.27,18.27,18.27,000,18.27
+1991-04-26,17.27,17.27,17.27,17.27,000,17.27
+1991-04-25,17.15,17.15,17.15,17.15,000,17.15
+1991-04-24,16.72,16.72,16.72,16.72,000,16.72
+1991-04-23,17.02,17.02,17.02,17.02,000,17.02
+1991-04-22,16.78,16.78,16.78,16.78,000,16.78
+1991-04-19,15.68,15.68,15.68,15.68,000,15.68
+1991-04-18,16.26,16.26,16.26,16.26,000,16.26
+1991-04-17,15.47,15.47,15.47,15.47,000,15.47
+1991-04-16,15.82,15.82,15.82,15.82,000,15.82
+1991-04-15,16.50,16.50,16.50,16.50,000,16.50
+1991-04-12,18.45,18.45,18.45,18.45,000,18.45
+1991-04-11,17.24,17.24,17.24,17.24,000,17.24
+1991-04-10,19.73,19.73,19.73,19.73,000,19.73
+1991-04-09,20.12,20.12,20.12,20.12,000,20.12
+1991-04-08,17.41,17.41,17.41,17.41,000,17.41
+1991-04-05,17.63,17.63,17.63,17.63,000,17.63
+1991-04-04,18.01,18.01,18.01,18.01,000,18.01
+1991-04-03,17.61,17.61,17.61,17.61,000,17.61
+1991-04-02,17.40,17.40,17.40,17.40,000,17.40
+1991-04-01,17.42,17.42,17.42,17.42,000,17.42
+1991-03-28,16.88,16.88,16.88,16.88,000,16.88
+1991-03-27,16.55,16.55,16.55,16.55,000,16.55
+1991-03-26,16.31,16.31,16.31,16.31,000,16.31
+1991-03-25,16.76,16.76,16.76,16.76,000,16.76
+1991-03-22,16.49,16.49,16.49,16.49,000,16.49
+1991-03-21,16.86,16.86,16.86,16.86,000,16.86
+1991-03-20,16.04,16.04,16.04,16.04,000,16.04
+1991-03-19,16.11,16.11,16.11,16.11,000,16.11
+1991-03-18,15.79,15.79,15.79,15.79,000,15.79
+1991-03-15,14.90,14.90,14.90,14.90,000,14.90
+1991-03-14,14.94,14.94,14.94,14.94,000,14.94
+1991-03-13,16.09,16.09,16.09,16.09,000,16.09
+1991-03-12,18.82,18.82,18.82,18.82,000,18.82
+1991-03-11,20.88,20.88,20.88,20.88,000,20.88
+1991-03-08,20.81,20.81,20.81,20.81,000,20.81
+1991-03-07,21.05,21.05,21.05,21.05,000,21.05
+1991-03-06,20.55,20.55,20.55,20.55,000,20.55
+1991-03-05,20.45,20.45,20.45,20.45,000,20.45
+1991-03-04,20.86,20.86,20.86,20.86,000,20.86
+1991-02-28,21.23,21.23,21.23,21.23,000,21.23
+1991-02-27,21.26,21.26,21.26,21.26,000,21.26
+1991-02-26,20.38,20.38,20.38,20.38,000,20.38
+1991-02-25,22.86,22.86,22.86,22.86,000,22.86
+1991-02-22,21.01,21.01,21.01,21.01,000,21.01
+1991-02-21,20.78,20.78,20.78,20.78,000,20.78
+1991-02-20,22.26,22.26,22.26,22.26,000,22.26
+1991-02-19,19.84,19.84,19.84,19.84,000,19.84
+1991-02-15,19.57,19.57,19.57,19.57,000,19.57
+1991-02-14,21.48,21.48,21.48,21.48,000,21.48
+1991-02-13,20.86,20.86,20.86,20.86,000,20.86
+1991-02-12,22.26,22.26,22.26,22.26,000,22.26
+1991-02-11,22.56,22.56,22.56,22.56,000,22.56
+1991-02-08,23.38,23.38,23.38,23.38,000,23.38
+1991-02-07,23.60,23.60,23.60,23.60,000,23.60
+1991-02-06,22.68,22.68,22.68,22.68,000,22.68
+1991-02-05,21.46,21.46,21.46,21.46,000,21.46
+1991-02-04,21.86,21.86,21.86,21.86,000,21.86
+1991-02-01,21.04,21.04,21.04,21.04,000,21.04
+1991-01-31,20.91,20.91,20.91,20.91,000,20.91
+1991-01-30,21.37,21.37,21.37,21.37,000,21.37
+1991-01-29,23.17,23.17,23.17,23.17,000,23.17
+1991-01-28,23.05,23.05,23.05,23.05,000,23.05
+1991-01-25,22.20,22.20,22.20,22.20,000,22.20
+1991-01-24,22.86,22.86,22.86,22.86,000,22.86
+1991-01-23,23.92,23.92,23.92,23.92,000,23.92
+1991-01-22,24.90,24.90,24.90,24.90,000,24.90
+1991-01-21,24.33,24.33,24.33,24.33,000,24.33
+1991-01-18,25.39,25.39,25.39,25.39,000,25.39
+1991-01-17,27.45,27.45,27.45,27.45,000,27.45
+1991-01-16,33.20,33.20,33.20,33.20,000,33.20
+1991-01-15,36.16,36.16,36.16,36.16,000,36.16
+1991-01-14,36.20,36.20,36.20,36.20,000,36.20
+1991-01-11,32.63,32.63,32.63,32.63,000,32.63
+1991-01-10,31.33,31.33,31.33,31.33,000,31.33
+1991-01-09,33.30,33.30,33.30,33.30,000,33.30
+1991-01-08,30.38,30.38,30.38,30.38,000,30.38
+1991-01-07,28.95,28.95,28.95,28.95,000,28.95
+1991-01-04,27.19,27.19,27.19,27.19,000,27.19
+1991-01-03,27.93,27.93,27.93,27.93,000,27.93
+1991-01-02,26.62,26.62,26.62,26.62,000,26.62
+1990-12-31,26.38,26.38,26.38,26.38,000,26.38
+1990-12-28,25.05,25.05,25.05,25.05,000,25.05
+1990-12-27,24.81,24.81,24.81,24.81,000,24.81
+1990-12-26,24.18,24.18,24.18,24.18,000,24.18
+1990-12-24,24.03,24.03,24.03,24.03,000,24.03
+1990-12-21,22.66,22.66,22.66,22.66,000,22.66
+1990-12-20,23.13,23.13,23.13,23.13,000,23.13
+1990-12-19,23.08,23.08,23.08,23.08,000,23.08
+1990-12-18,23.11,23.11,23.11,23.11,000,23.11
+1990-12-17,24.85,24.85,24.85,24.85,000,24.85
+1990-12-14,23.85,23.85,23.85,23.85,000,23.85
+1990-12-13,23.05,23.05,23.05,23.05,000,23.05
+1990-12-12,21.28,21.28,21.28,21.28,000,21.28
+1990-12-11,23.75,23.75,23.75,23.75,000,23.75
+1990-12-10,23.58,23.58,23.58,23.58,000,23.58
+1990-12-07,22.59,22.59,22.59,22.59,000,22.59
+1990-12-06,22.62,22.62,22.62,22.62,000,22.62
+1990-12-05,20.94,20.94,20.94,20.94,000,20.94
+1990-12-04,22.03,22.03,22.03,22.03,000,22.03
+1990-12-03,22.29,22.29,22.29,22.29,000,22.29
+1990-11-30,22.16,22.16,22.16,22.16,000,22.16
+1990-11-29,23.91,23.91,23.91,23.91,000,23.91
+1990-11-28,22.96,22.96,22.96,22.96,000,22.96
+1990-11-27,22.86,22.86,22.86,22.86,000,22.86
+1990-11-26,22.76,22.76,22.76,22.76,000,22.76
+1990-11-23,20.98,20.98,20.98,20.98,000,20.98
+1990-11-21,21.09,21.09,21.09,21.09,000,21.09
+1990-11-20,20.09,20.09,20.09,20.09,000,20.09
+1990-11-19,20.95,20.95,20.95,20.95,000,20.95
+1990-11-16,21.34,21.34,21.34,21.34,000,21.34
+1990-11-15,22.57,22.57,22.57,22.57,000,22.57
+1990-11-14,22.89,22.89,22.89,22.89,000,22.89
+1990-11-13,24.58,24.58,24.58,24.58,000,24.58
+1990-11-12,25.60,25.60,25.60,25.60,000,25.60
+1990-11-09,26.96,26.96,26.96,26.96,000,26.96
+1990-11-08,30.79,30.79,30.79,30.79,000,30.79
+1990-11-07,30.87,30.87,30.87,30.87,000,30.87
+1990-11-06,29.11,29.11,29.11,29.11,000,29.11
+1990-11-05,29.85,29.85,29.85,29.85,000,29.85
+1990-11-02,30.03,30.03,30.03,30.03,000,30.03
+1990-11-01,30.25,30.25,30.25,30.25,000,30.25
+1990-10-31,30.04,30.04,30.04,30.04,000,30.04
+1990-10-30,30.52,30.52,30.52,30.52,000,30.52
+1990-10-29,31.54,31.54,31.54,31.54,000,31.54
+1990-10-26,30.75,30.75,30.75,30.75,000,30.75
+1990-10-25,29.04,29.04,29.04,29.04,000,29.04
+1990-10-24,28.28,28.28,28.28,28.28,000,28.28
+1990-10-23,27.57,27.57,27.57,27.57,000,27.57
+1990-10-22,27.27,27.27,27.27,27.27,000,27.27
+1990-10-19,27.86,27.86,27.86,27.86,000,27.86
+1990-10-18,29.60,29.60,29.60,29.60,000,29.60
+1990-10-17,31.37,31.37,31.37,31.37,000,31.37
+1990-10-16,31.45,31.45,31.45,31.45,000,31.45
+1990-10-15,31.64,31.64,31.64,31.64,000,31.64
+1990-10-12,31.94,31.94,31.94,31.94,000,31.94
+1990-10-11,33.98,33.98,33.98,33.98,000,33.98
+1990-10-10,31.19,31.19,31.19,31.19,000,31.19
+1990-10-09,30.71,30.71,30.71,30.71,000,30.71
+1990-10-08,28.04,28.04,28.04,28.04,000,28.04
+1990-10-05,27.85,27.85,27.85,27.85,000,27.85
+1990-10-04,27.51,27.51,27.51,27.51,000,27.51
+1990-10-03,27.90,27.90,27.90,27.90,000,27.90
+1990-10-02,27.28,27.28,27.28,27.28,000,27.28
+1990-10-01,28.06,28.06,28.06,28.06,000,28.06
+1990-09-28,29.11,29.11,29.11,29.11,000,29.11
+1990-09-27,28.67,28.67,28.67,28.67,000,28.67
+1990-09-26,28.19,28.19,28.19,28.19,000,28.19
+1990-09-25,28.81,28.81,28.81,28.81,000,28.81
+1990-09-24,30.56,30.56,30.56,30.56,000,30.56
+1990-09-21,30.04,30.04,30.04,30.04,000,30.04
+1990-09-20,28.66,28.66,28.66,28.66,000,28.66
+1990-09-19,27.88,27.88,27.88,27.88,000,27.88
+1990-09-18,28.82,28.82,28.82,28.82,000,28.82
+1990-09-17,29.55,29.55,29.55,29.55,000,29.55
+1990-09-14,30.56,30.56,30.56,30.56,000,30.56
+1990-09-13,29.33,29.33,29.33,29.33,000,29.33
+1990-09-12,28.12,28.12,28.12,28.12,000,28.12
+1990-09-11,28.38,28.38,28.38,28.38,000,28.38
+1990-09-10,29.34,29.34,29.34,29.34,000,29.34
+1990-09-07,28.73,28.73,28.73,28.73,000,28.73
+1990-09-06,30.19,30.19,30.19,30.19,000,30.19
+1990-09-05,28.52,28.52,28.52,28.52,000,28.52
+1990-09-04,29.58,29.58,29.58,29.58,000,29.58
+1990-08-31,29.90,29.90,29.90,29.90,000,29.90
+1990-08-30,29.89,29.89,29.89,29.89,000,29.89
+1990-08-29,27.38,27.38,27.38,27.38,000,27.38
+1990-08-28,29.12,29.12,29.12,29.12,000,29.12
+1990-08-27,29.63,29.63,29.63,29.63,000,29.63
+1990-08-24,33.93,33.93,33.93,33.93,000,33.93
+1990-08-23,36.47,36.47,36.47,36.47,000,36.47
+1990-08-22,30.55,30.55,30.55,30.55,000,30.55
+1990-08-21,28.90,28.90,28.90,28.90,000,28.90
+1990-08-20,26.46,26.46,26.46,26.46,000,26.46
+1990-08-17,27.53,27.53,27.53,27.53,000,27.53
+1990-08-16,27.16,27.16,27.16,27.16,000,27.16
+1990-08-15,23.31,23.31,23.31,23.31,000,23.31
+1990-08-14,24.18,24.18,24.18,24.18,000,24.18
+1990-08-13,25.74,25.74,25.74,25.74,000,25.74
+1990-08-10,25.75,25.75,25.75,25.75,000,25.75
+1990-08-09,24.39,24.39,24.39,24.39,000,24.39
+1990-08-08,28.27,28.27,28.27,28.27,000,28.27
+1990-08-07,32.75,32.75,32.75,32.75,000,32.75
+1990-08-06,35.91,35.91,35.91,35.91,000,35.91
+1990-08-03,28.74,28.74,28.74,28.74,000,28.74
+1990-08-02,20.43,20.43,20.43,20.43,000,20.43
+1990-08-01,21.64,21.64,21.64,21.64,000,21.64
+1990-07-31,21.11,21.11,21.11,21.11,000,21.11
+1990-07-30,21.16,21.16,21.16,21.16,000,21.16
+1990-07-27,21.12,21.12,21.12,21.12,000,21.12
+1990-07-26,20.26,20.26,20.26,20.26,000,20.26
+1990-07-25,20.19,20.19,20.19,20.19,000,20.19
+1990-07-24,21.79,21.79,21.79,21.79,000,21.79
+1990-07-23,23.68,23.68,23.68,23.68,000,23.68
+1990-07-20,15.63,15.63,15.63,15.63,000,15.63
+1990-07-19,18.56,18.56,18.56,18.56,000,18.56
+1990-07-18,18.90,18.90,18.90,18.90,000,18.90
+1990-07-17,16.66,16.66,16.66,16.66,000,16.66
+1990-07-16,16.75,16.75,16.75,16.75,000,16.75
+1990-07-13,17.09,17.09,17.09,17.09,000,17.09
+1990-07-12,17.06,17.06,17.06,17.06,000,17.06
+1990-07-11,16.68,16.68,16.68,16.68,000,16.68
+1990-07-10,16.92,16.92,16.92,16.92,000,16.92
+1990-07-09,16.66,16.66,16.66,16.66,000,16.66
+1990-07-06,16.41,16.41,16.41,16.41,000,16.41
+1990-07-05,17.25,17.25,17.25,17.25,000,17.25
+1990-07-03,16.11,16.11,16.11,16.11,000,16.11
+1990-07-02,16.26,16.26,16.26,16.26,000,16.26
+1990-06-29,15.50,15.50,15.50,15.50,000,15.50
+1990-06-28,16.18,16.18,16.18,16.18,000,16.18
+1990-06-27,16.00,16.00,16.00,16.00,000,16.00
+1990-06-26,16.29,16.29,16.29,16.29,000,16.29
+1990-06-25,17.06,17.06,17.06,17.06,000,17.06
+1990-06-22,19.36,19.36,19.36,19.36,000,19.36
+1990-06-21,14.72,14.72,14.72,14.72,000,14.72
+1990-06-20,15.27,15.27,15.27,15.27,000,15.27
+1990-06-19,15.23,15.23,15.23,15.23,000,15.23
+1990-06-18,17.71,17.71,17.71,17.71,000,17.71
+1990-06-15,15.90,15.90,15.90,15.90,000,15.90
+1990-06-14,17.40,17.40,17.40,17.40,000,17.40
+1990-06-13,17.38,17.38,17.38,17.38,000,17.38
+1990-06-12,16.60,16.60,16.60,16.60,000,16.60
+1990-06-11,16.34,16.34,16.34,16.34,000,16.34
+1990-06-08,17.58,17.58,17.58,17.58,000,17.58
+1990-06-07,16.88,16.88,16.88,16.88,000,16.88
+1990-06-06,17.42,17.42,17.42,17.42,000,17.42
+1990-06-05,18.97,18.97,18.97,18.97,000,18.97
+1990-06-04,18.39,18.39,18.39,18.39,000,18.39
+1990-06-01,17.09,17.09,17.09,17.09,000,17.09
+1990-05-31,17.37,17.37,17.37,17.37,000,17.37
+1990-05-30,17.44,17.44,17.44,17.44,000,17.44
+1990-05-29,18.75,18.75,18.75,18.75,000,18.75
+1990-05-25,17.32,17.32,17.32,17.32,000,17.32
+1990-05-24,17.70,17.70,17.70,17.70,000,17.70
+1990-05-23,17.18,17.18,17.18,17.18,000,17.18
+1990-05-22,17.84,17.84,17.84,17.84,000,17.84
+1990-05-21,16.72,16.72,16.72,16.72,000,16.72
+1990-05-18,17.20,17.20,17.20,17.20,000,17.20
+1990-05-17,17.27,17.27,17.27,17.27,000,17.27
+1990-05-16,17.71,17.71,17.71,17.71,000,17.71
+1990-05-15,19.49,19.49,19.49,19.49,000,19.49
+1990-05-14,20.14,20.14,20.14,20.14,000,20.14
+1990-05-11,19.81,19.81,19.81,19.81,000,19.81
+1990-05-10,18.59,18.59,18.59,18.59,000,18.59
+1990-05-09,18.64,18.64,18.64,18.64,000,18.64
+1990-05-08,18.49,18.49,18.49,18.49,000,18.49
+1990-05-07,17.65,17.65,17.65,17.65,000,17.65
+1990-05-04,17.28,17.28,17.28,17.28,000,17.28
+1990-05-03,17.81,17.81,17.81,17.81,000,17.81
+1990-05-02,19.32,19.32,19.32,19.32,000,19.32
+1990-05-01,18.43,18.43,18.43,18.43,000,18.43
+1990-04-30,19.52,19.52,19.52,19.52,000,19.52
+1990-04-27,22.19,22.19,22.19,22.19,000,22.19
+1990-04-26,20.25,20.25,20.25,20.25,000,20.25
+1990-04-25,20.86,20.86,20.86,20.86,000,20.86
+1990-04-24,21.70,21.70,21.70,21.70,000,21.70
+1990-04-23,24.16,24.16,24.16,24.16,000,24.16
+1990-04-20,23.33,23.33,23.33,23.33,000,23.33
+1990-04-19,22.46,22.46,22.46,22.46,000,22.46
+1990-04-18,22.67,22.67,22.67,22.67,000,22.67
+1990-04-17,20.38,20.38,20.38,20.38,000,20.38
+1990-04-16,20.75,20.75,20.75,20.75,000,20.75
+1990-04-12,19.80,19.80,19.80,19.80,000,19.80
+1990-04-11,17.73,17.73,17.73,17.73,000,17.73
+1990-04-10,21.69,21.69,21.69,21.69,000,21.69
+1990-04-09,22.30,22.30,22.30,22.30,000,22.30
+1990-04-06,21.76,21.76,21.76,21.76,000,21.76
+1990-04-05,21.21,21.21,21.21,21.21,000,21.21
+1990-04-04,22.03,22.03,22.03,22.03,000,22.03
+1990-04-03,20.44,20.44,20.44,20.44,000,20.44
+1990-04-02,22.84,22.84,22.84,22.84,000,22.84
+1990-03-30,19.73,19.73,19.73,19.73,000,19.73
+1990-03-29,18.46,18.46,18.46,18.46,000,18.46
+1990-03-28,19.77,19.77,19.77,19.77,000,19.77
+1990-03-27,21.01,21.01,21.01,21.01,000,21.01
+1990-03-26,19.59,19.59,19.59,19.59,000,19.59
+1990-03-23,20.46,20.46,20.46,20.46,000,20.46
+1990-03-22,22.74,22.74,22.74,22.74,000,22.74
+1990-03-21,20.10,20.10,20.10,20.10,000,20.10
+1990-03-20,19.06,19.06,19.06,19.06,000,19.06
+1990-03-19,18.29,18.29,18.29,18.29,000,18.29
+1990-03-16,17.62,17.62,17.62,17.62,000,17.62
+1990-03-15,18.81,18.81,18.81,18.81,000,18.81
+1990-03-14,19.65,19.65,19.65,19.65,000,19.65
+1990-03-13,21.05,21.05,21.05,21.05,000,21.05
+1990-03-12,20.07,20.07,20.07,20.07,000,20.07
+1990-03-09,20.30,20.30,20.30,20.30,000,20.30
+1990-03-08,19.74,19.74,19.74,19.74,000,19.74
+1990-03-07,19.10,19.10,19.10,19.10,000,19.10
+1990-03-06,20.55,20.55,20.55,20.55,000,20.55
+1990-03-05,22.03,22.03,22.03,22.03,000,22.03
+1990-03-02,21.34,21.34,21.34,21.34,000,21.34
+1990-03-01,21.90,21.90,21.90,21.90,000,21.90
+1990-02-28,21.99,21.99,21.99,21.99,000,21.99
+1990-02-27,22.69,22.69,22.69,22.69,000,22.69
+1990-02-26,23.56,23.56,23.56,23.56,000,23.56
+1990-02-23,23.69,23.69,23.69,23.69,000,23.69
+1990-02-22,22.54,22.54,22.54,22.54,000,22.54
+1990-02-21,23.89,23.89,23.89,23.89,000,23.89
+1990-02-20,22.78,22.78,22.78,22.78,000,22.78
+1990-02-16,20.78,20.78,20.78,20.78,000,20.78
+1990-02-15,19.71,19.71,19.71,19.71,000,19.71
+1990-02-14,22.05,22.05,22.05,22.05,000,22.05
+1990-02-13,23.76,23.76,23.76,23.76,000,23.76
+1990-02-12,24.38,24.38,24.38,24.38,000,24.38
+1990-02-09,23.69,23.69,23.69,23.69,000,23.69
+1990-02-08,23.77,23.77,23.77,23.77,000,23.77
+1990-02-07,24.29,24.29,24.29,24.29,000,24.29
+1990-02-06,24.69,24.69,24.69,24.69,000,24.69
+1990-02-05,24.54,24.54,24.54,24.54,000,24.54
+1990-02-02,24.32,24.32,24.32,24.32,000,24.32
+1990-02-01,24.87,24.87,24.87,24.87,000,24.87
+1990-01-31,25.36,25.36,25.36,25.36,000,25.36
+1990-01-30,27.25,27.25,27.25,27.25,000,27.25
+1990-01-29,26.44,26.44,26.44,26.44,000,26.44
+1990-01-26,26.28,26.28,26.28,26.28,000,26.28
+1990-01-25,25.63,25.63,25.63,25.63,000,25.63
+1990-01-24,25.39,25.39,25.39,25.39,000,25.39
+1990-01-23,24.72,24.72,24.72,24.72,000,24.72
+1990-01-22,26.70,26.70,26.70,26.70,000,26.70
+1990-01-19,22.50,22.50,22.50,22.50,000,22.50
+1990-01-18,24.34,24.34,24.34,24.34,000,24.34
+1990-01-17,24.16,24.16,24.16,24.16,000,24.16
+1990-01-16,24.18,24.18,24.18,24.18,000,24.18
+1990-01-15,26.34,26.34,26.34,26.34,000,26.34
+1990-01-12,24.64,24.64,24.64,24.64,000,24.64
+1990-01-11,20.05,20.05,20.05,20.05,000,20.05
+1990-01-10,22.44,22.44,22.44,22.44,000,22.44
+1990-01-09,22.20,22.20,22.20,22.20,000,22.20
+1990-01-08,20.26,20.26,20.26,20.26,000,20.26
+1990-01-05,20.11,20.11,20.11,20.11,000,20.11
+1990-01-04,19.22,19.22,19.22,19.22,000,19.22
+1990-01-03,18.19,18.19,18.19,18.19,000,18.19
+1990-01-02,17.24,17.24,17.24,17.24,000,17.24
diff --git a/static/vendor/d3-2.8.1/examples/calendar/vix.html b/static/vendor/d3-2.8.1/examples/calendar/vix.html
new file mode 100755 (executable)
index 0000000..57f2311
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>VIX</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="../../lib/colorbrewer/colorbrewer.css"/>
+    <link type="text/css" rel="stylesheet" href="calendar.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="vix.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/calendar/vix.js b/static/vendor/d3-2.8.1/examples/calendar/vix.js
new file mode 100755 (executable)
index 0000000..3d7cf18
--- /dev/null
@@ -0,0 +1,69 @@
+var m = [19, 20, 20, 19], // top right bottom left margin
+    w = 960 - m[1] - m[3], // width
+    h = 136 - m[0] - m[2], // height
+    z = 17; // cell size
+
+var day = d3.time.format("%w"),
+    week = d3.time.format("%U"),
+    format = d3.time.format("%Y-%m-%d");
+
+var color = d3.scale.quantile()
+    .range(d3.range(9).reverse());
+
+var svg = d3.select("#chart").selectAll("svg")
+    .data(d3.range(1993, 2011))
+  .enter().append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+    .attr("class", "RdYlGn")
+  .append("g")
+    .attr("transform", "translate(" + (m[3] + (w - z * 53) / 2) + "," + (m[0] + (h - z * 7) / 2) + ")");
+
+svg.append("text")
+    .attr("transform", "translate(-6," + z * 3.5 + ")rotate(-90)")
+    .attr("text-anchor", "middle")
+    .text(String);
+
+var rect = svg.selectAll("rect.day")
+    .data(function(d) { return d3.time.days(new Date(d, 0, 1), new Date(d + 1, 0, 1)); })
+  .enter().append("rect")
+    .attr("class", "day")
+    .attr("width", z)
+    .attr("height", z)
+    .attr("x", function(d) { return week(d) * z; })
+    .attr("y", function(d) { return day(d) * z; })
+    .datum(format);
+
+rect.append("title")
+    .text(function(d) { return d; });
+
+svg.selectAll("path.month")
+    .data(function(d) { return d3.time.months(new Date(d, 0, 1), new Date(d + 1, 0, 1)); })
+  .enter().append("path")
+    .attr("class", "month")
+    .attr("d", monthPath);
+
+d3.csv("vix.csv", function(csv) {
+  var data = d3.nest()
+      .key(function(d) { return d.Date; })
+      .rollup(function(d) { return d[0].Open; })
+      .map(csv);
+
+  color.domain(d3.values(data));
+
+  rect.filter(function(d) { return d in data; })
+      .attr("class", function(d) { return "day q" + color(data[d]) + "-9"; })
+    .select("title")
+      .text(function(d) { return d + ": " + data[d]; });
+});
+
+function monthPath(t0) {
+  var t1 = new Date(t0.getFullYear(), t0.getMonth() + 1, 0),
+      d0 = +day(t0), w0 = +week(t0),
+      d1 = +day(t1), w1 = +week(t1);
+  return "M" + (w0 + 1) * z + "," + d0 * z
+      + "H" + w0 * z + "V" + 7 * z
+      + "H" + w1 * z + "V" + (d1 + 1) * z
+      + "H" + (w1 + 1) * z + "V" + 0
+      + "H" + (w0 + 1) * z + "Z";
+}
diff --git a/static/vendor/d3-2.8.1/examples/cartogram/cartogram.css b/static/vendor/d3-2.8.1/examples/cartogram/cartogram.css
new file mode 100755 (executable)
index 0000000..045142a
--- /dev/null
@@ -0,0 +1,20 @@
+#chart {
+  width: 960px;
+  height: 500px;
+}
+
+.black path {
+  fill: none;
+  stroke: #ccc;
+  stroke-width: 3px;
+}
+
+.white path {
+  fill: #fff;
+  stroke: #fff;
+}
+
+.grey path {
+  fill: #ccc;
+  stroke: #666;
+}
diff --git a/static/vendor/d3-2.8.1/examples/cartogram/cartogram.html b/static/vendor/d3-2.8.1/examples/cartogram/cartogram.html
new file mode 100755 (executable)
index 0000000..529d9ec
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Non-Contiguous Cartogram</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="cartogram.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="cartogram.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/cartogram/cartogram.js b/static/vendor/d3-2.8.1/examples/cartogram/cartogram.js
new file mode 100755 (executable)
index 0000000..e0c9f38
--- /dev/null
@@ -0,0 +1,51 @@
+// Ratio of Obese (BMI >= 30) in U.S. Adults, CDC 2008
+var data = [
+  , .187, .198, , .133, .175, .151, , .1, .125, .171, , .172, .133, , .108,
+  .142, .167, .201, .175, .159, .169, .177, .141, .163, .117, .182, .153, .195,
+  .189, .134, .163, .133, .151, .145, .13, .139, .169, .164, .175, .135, .152,
+  .169, , .132, .167, .139, .184, .159, .14, .146, .157, , .139, .183, .16, .143
+];
+
+var svg = d3.select("#chart").append("svg")
+    .attr("width", 960)
+    .attr("height", 500);
+
+d3.json("../data/us-states.json", function(json) {
+  var path = d3.geo.path();
+
+  // A thick black stroke for the exterior.
+  svg.append("g")
+      .attr("class", "black")
+    .selectAll("path")
+      .data(json.features)
+    .enter().append("path")
+      .attr("d", path);
+
+  // A white overlay to hide interior black strokes.
+  svg.append("g")
+      .attr("class", "white")
+    .selectAll("path")
+      .data(json.features)
+    .enter().append("path")
+      .attr("d", path);
+
+  // The polygons, scaled!
+  svg.append("g")
+      .attr("class", "grey")
+    .selectAll("path")
+      .data(json.features)
+    .enter().append("path")
+      .attr("d", path)
+      .attr("transform", function(d) {
+        var centroid = path.centroid(d),
+            x = centroid[0],
+            y = centroid[1];
+        return "translate(" + x + "," + y + ")"
+            + "scale(" + Math.sqrt(data[+d.id] * 5 || 0) + ")"
+            + "translate(" + -x + "," + -y + ")";
+      })
+      .style("stroke-width", function(d) {
+        return 1 / Math.sqrt(data[+d.id] * 5 || 1);
+      });
+
+});
diff --git a/static/vendor/d3-2.8.1/examples/cartogram/demers.css b/static/vendor/d3-2.8.1/examples/cartogram/demers.css
new file mode 100755 (executable)
index 0000000..20ff386
--- /dev/null
@@ -0,0 +1,9 @@
+#chart {
+  width: 960px;
+  height: 500px;
+}
+
+rect {
+  stroke: #000;
+  stroke-width: .5px;
+}
diff --git a/static/vendor/d3-2.8.1/examples/cartogram/demers.html b/static/vendor/d3-2.8.1/examples/cartogram/demers.html
new file mode 100755 (executable)
index 0000000..476c451
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Demers Cartogram</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="demers.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="demers.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/cartogram/demers.js b/static/vendor/d3-2.8.1/examples/cartogram/demers.js
new file mode 100755 (executable)
index 0000000..4b1c365
--- /dev/null
@@ -0,0 +1,79 @@
+// Ratio of Obese (BMI >= 30) in U.S. Adults, CDC 2008
+var data = [
+  , .187, .198, , .133, .175, .151, , .1, .125, .171, , .172, .133, , .108,
+  .142, .167, .201, .175, .159, .169, .177, .141, .163, .117, .182, .153, .195,
+  .189, .134, .163, .133, .151, .145, .13, .139, .169, .164, .175, .135, .152,
+  .169, , .132, .167, .139, .184, .159, .14, .146, .157, , .139, .183, .16, .143
+];
+
+var color = d3.scale.linear()
+    .domain([d3.min(data), d3.max(data)])
+    .range(["#aad", "#556"]); 
+
+var force = d3.layout.force()
+    .charge(0)
+    .gravity(0)
+    .size([960, 500]);
+
+var svg = d3.select("#chart").append("svg");
+
+d3.json("../data/us-state-centroids.json", function(states) {
+  var project = d3.geo.albersUsa(),
+      idToNode = {},
+      links = [],
+      nodes = states.features.map(function(d) {
+    var xy = project(d.geometry.coordinates);
+    return idToNode[d.id] = {
+      x: xy[0],
+      y: xy[1],
+      gravity: {x: xy[0], y: xy[1]},
+      r: Math.sqrt(data[+d.id] * 2500),
+      value: data[+d.id]
+    };
+  });
+
+  force
+      .nodes(nodes)
+      .links(links)
+      .start()
+      .on("tick", function(e) {
+    var k = e.alpha * .5,
+        kg = k * .1;
+    nodes.forEach(function(a, i) {
+      // Apply gravity forces.
+      a.x += (a.gravity.x - a.x) * kg;
+      a.y += (a.gravity.y - a.y) * kg;
+      nodes.slice(i + 1).forEach(function(b) {
+        // Check for collision
+        var dx = a.x - b.x,
+            dy = a.y - b.y,
+            d = a.r + b.r,
+            lx = Math.abs(dx),
+            ly = Math.abs(dy);
+        if (lx < d && ly < d) {
+          lx = (lx - d) / lx * k;
+          ly = (ly - d) / ly * k;
+          dx *= lx;
+          dy *= ly;
+          a.x -= dx;
+          a.y -= dy;
+          b.x += dx;
+          b.y += dy;
+        }
+      });
+    });
+
+    svg.selectAll("rect")
+        .attr("x", function(d) { return d.x - d.r; })
+        .attr("y", function(d) { return d.y - d.r; });
+  });
+
+  svg.selectAll("rect")
+      .data(nodes)
+    .enter().append("rect")
+      .style("fill", function(d) { return color(d.value); })
+      .attr("x", function(d) { return d.x - d.r; })
+      .attr("y", function(d) { return d.y - d.r; })
+      .attr("width", function(d) { return d.r * 2; })
+      .attr("height", function(d) { return d.r * 2; });
+});
diff --git a/static/vendor/d3-2.8.1/examples/cartogram/dorling.css b/static/vendor/d3-2.8.1/examples/cartogram/dorling.css
new file mode 100755 (executable)
index 0000000..fa81290
--- /dev/null
@@ -0,0 +1,9 @@
+#chart {
+  width: 960px;
+  height: 500px;
+}
+
+circle {
+  stroke: #000;
+  stroke-width: .5px;
+}
diff --git a/static/vendor/d3-2.8.1/examples/cartogram/dorling.html b/static/vendor/d3-2.8.1/examples/cartogram/dorling.html
new file mode 100755 (executable)
index 0000000..ab19792
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Dorling Cartogram</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="dorling.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="dorling.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/cartogram/dorling.js b/static/vendor/d3-2.8.1/examples/cartogram/dorling.js
new file mode 100755 (executable)
index 0000000..241d95b
--- /dev/null
@@ -0,0 +1,80 @@
+// Ratio of Obese (BMI >= 30) in U.S. Adults, CDC 2008
+var data = [
+  , .187, .198, , .133, .175, .151, , .1, .125, .171, , .172, .133, , .108,
+  .142, .167, .201, .175, .159, .169, .177, .141, .163, .117, .182, .153, .195,
+  .189, .134, .163, .133, .151, .145, .13, .139, .169, .164, .175, .135, .152,
+  .169, , .132, .167, .139, .184, .159, .14, .146, .157, , .139, .183, .16, .143
+];
+
+var color = d3.scale.linear()
+    .domain([d3.min(data), d3.max(data)])
+    .range(["#aad", "#556"]); 
+
+var force = d3.layout.force()
+    .charge(0)
+    .gravity(0)
+    .size([960, 500]);
+
+var svg = d3.select("#chart").append("svg")
+    .attr("width", 960 + 100)
+    .attr("height", 500 + 100)
+  .append("g")
+    .attr("transform", "translate(50,50)");
+
+d3.json("../data/us-state-centroids.json", function(states) {
+  var project = d3.geo.albersUsa(),
+      idToNode = {},
+      links = [],
+      nodes = states.features.map(function(d) {
+    var xy = project(d.geometry.coordinates);
+    return idToNode[d.id] = {
+      x: xy[0],
+      y: xy[1],
+      gravity: {x: xy[0], y: xy[1]},
+      r: Math.sqrt(data[+d.id] * 5000),
+      value: data[+d.id]
+    };
+  });
+
+  force
+      .nodes(nodes)
+      .links(links)
+      .start()
+      .on("tick", function(e) {
+    var k = e.alpha,
+        kg = k * .02;
+    nodes.forEach(function(a, i) {
+      // Apply gravity forces.
+      a.x += (a.gravity.x - a.x) * kg;
+      a.y += (a.gravity.y - a.y) * kg;
+      nodes.slice(i + 1).forEach(function(b) {
+        // Check for collisions.
+        var dx = a.x - b.x,
+            dy = a.y - b.y,
+            l = Math.sqrt(dx * dx + dy * dy),
+            d = a.r + b.r;
+        if (l < d) {
+          l = (l - d) / l * k;
+          dx *= l;
+          dy *= l;
+          a.x -= dx;
+          a.y -= dy;
+          b.x += dx;
+          b.y += dy;
+        }
+      });
+    });
+
+    svg.selectAll("circle")
+        .attr("cx", function(d) { return d.x; })
+        .attr("cy", function(d) { return d.y; });
+  });
+
+  svg.selectAll("circle")
+      .data(nodes)
+    .enter().append("circle")
+      .style("fill", function(d) { return color(d.value); })
+      .attr("cx", function(d) { return d.x; })
+      .attr("cy", function(d) { return d.y; })
+      .attr("r", function(d, i) { return d.r; });
+});
diff --git a/static/vendor/d3-2.8.1/examples/chord/chord-flare.html b/static/vendor/d3-2.8.1/examples/chord/chord-flare.html
new file mode 100755 (executable)
index 0000000..cfbd956
--- /dev/null
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <title>Chord Diagram</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+path.chord {
+  fill-opacity: .67;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var r1 = 960 / 2,
+    r0 = r1 - 120;
+
+var fill = d3.scale.category20c();
+
+var chord = d3.layout.chord()
+    .padding(.04)
+    .sortSubgroups(d3.descending)
+    .sortChords(d3.descending);
+
+var arc = d3.svg.arc()
+    .innerRadius(r0)
+    .outerRadius(r0 + 20);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", r1 * 2)
+    .attr("height", r1 * 2)
+  .append("g")
+    .attr("transform", "translate(" + r1 + "," + r1 + ")");
+
+d3.json("../data/flare-imports.json", function(imports) {
+  var indexByName = {},
+      nameByIndex = {},
+      matrix = [],
+      n = 0;
+
+  // Returns the Flare package name for the given class name.
+  function name(name) {
+    return name.substring(0, name.lastIndexOf(".")).substring(6);
+  }
+
+  // Compute a unique index for each package name.
+  imports.forEach(function(d) {
+    d = name(d.name);
+    if (!(d in indexByName)) {
+      nameByIndex[n] = d;
+      indexByName[d] = n++;
+    }
+  });
+
+  // Construct a square matrix counting package imports.
+  imports.forEach(function(d) {
+    var source = indexByName[name(d.name)],
+        row = matrix[source];
+    if (!row) {
+     row = matrix[source] = [];
+     for (var i = -1; ++i < n;) row[i] = 0;
+    }
+    d.imports.forEach(function(d) { row[indexByName[name(d)]]++; });
+  });
+
+  chord.matrix(matrix);
+
+  var g = svg.selectAll("g.group")
+      .data(chord.groups)
+    .enter().append("g")
+      .attr("class", "group");
+
+  g.append("path")
+      .style("fill", function(d) { return fill(d.index); })
+      .style("stroke", function(d) { return fill(d.index); })
+      .attr("d", arc);
+
+  g.append("text")
+      .each(function(d) { d.angle = (d.startAngle + d.endAngle) / 2; })
+      .attr("dy", ".35em")
+      .attr("text-anchor", function(d) { return d.angle > Math.PI ? "end" : null; })
+      .attr("transform", function(d) {
+        return "rotate(" + (d.angle * 180 / Math.PI - 90) + ")"
+            + "translate(" + (r0 + 26) + ")"
+            + (d.angle > Math.PI ? "rotate(180)" : "");
+      })
+      .text(function(d) { return nameByIndex[d.index]; });
+
+  svg.selectAll("path.chord")
+      .data(chord.chords)
+    .enter().append("path")
+      .attr("class", "chord")
+      .style("stroke", function(d) { return d3.rgb(fill(d.source.index)).darker(); })
+      .style("fill", function(d) { return fill(d.source.index); })
+      .attr("d", d3.svg.chord().radius(r0));
+
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/chord/chord.css b/static/vendor/d3-2.8.1/examples/chord/chord.css
new file mode 100755 (executable)
index 0000000..b528802
--- /dev/null
@@ -0,0 +1,9 @@
+#chart {
+  font: 10px sans-serif;
+}
+
+.chord path {
+  fill-opacity: .67;
+  stroke: #000;
+  stroke-width: .5px;
+}
diff --git a/static/vendor/d3-2.8.1/examples/chord/chord.html b/static/vendor/d3-2.8.1/examples/chord/chord.html
new file mode 100755 (executable)
index 0000000..b6cbaf5
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <title>Chord Diagram</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="chord.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="chord.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/chord/chord.js b/static/vendor/d3-2.8.1/examples/chord/chord.js
new file mode 100755 (executable)
index 0000000..ec2ad34
--- /dev/null
@@ -0,0 +1,98 @@
+// From http://mkweb.bcgsc.ca/circos/guide/tables/
+var chord = d3.layout.chord()
+  .padding(.05)
+  .sortSubgroups(d3.descending)
+  .matrix([
+    [11975,  5871, 8916, 2868],
+    [ 1951, 10048, 2060, 6171],
+    [ 8010, 16145, 8090, 8045],
+    [ 1013,   990,  940, 6907]
+  ]);
+
+var w = 600,
+    h = 600,
+    r0 = Math.min(w, h) * .41,
+    r1 = r0 * 1.1;
+
+var fill = d3.scale.ordinal()
+    .domain(d3.range(4))
+    .range(["#000000", "#FFDD89", "#957244", "#F26223"]);
+
+var svg = d3.select("#chart")
+  .append("svg")
+    .attr("width", w)
+    .attr("height", h)
+  .append("g")
+    .attr("transform", "translate(" + w / 2 + "," + h / 2 + ")");
+
+svg.append("g")
+  .selectAll("path")
+    .data(chord.groups)
+  .enter().append("path")
+    .style("fill", function(d) { return fill(d.index); })
+    .style("stroke", function(d) { return fill(d.index); })
+    .attr("d", d3.svg.arc().innerRadius(r0).outerRadius(r1))
+    .on("mouseover", fade(.1))
+    .on("mouseout", fade(1));
+
+var ticks = svg.append("g")
+  .selectAll("g")
+    .data(chord.groups)
+  .enter().append("g")
+  .selectAll("g")
+    .data(groupTicks)
+  .enter().append("g")
+    .attr("transform", function(d) {
+      return "rotate(" + (d.angle * 180 / Math.PI - 90) + ")"
+          + "translate(" + r1 + ",0)";
+    });
+
+ticks.append("line")
+    .attr("x1", 1)
+    .attr("y1", 0)
+    .attr("x2", 5)
+    .attr("y2", 0)
+    .style("stroke", "#000");
+
+ticks.append("text")
+    .attr("x", 8)
+    .attr("dy", ".35em")
+    .attr("text-anchor", function(d) {
+      return d.angle > Math.PI ? "end" : null;
+    })
+    .attr("transform", function(d) {
+      return d.angle > Math.PI ? "rotate(180)translate(-16)" : null;
+    })
+    .text(function(d) { return d.label; });
+
+svg.append("g")
+    .attr("class", "chord")
+  .selectAll("path")
+    .data(chord.chords)
+  .enter().append("path")
+    .style("fill", function(d) { return fill(d.target.index); })
+    .attr("d", d3.svg.chord().radius(r0))
+    .style("opacity", 1);
+
+/** Returns an array of tick angles and labels, given a group. */
+function groupTicks(d) {
+  var k = (d.endAngle - d.startAngle) / d.value;
+  return d3.range(0, d.value, 1000).map(function(v, i) {
+    return {
+      angle: v * k + d.startAngle,
+      label: i % 5 ? null : v / 1000 + "k"
+    };
+  });
+}
+
+/** Returns an event handler for fading a given chord group. */
+function fade(opacity) {
+  return function(g, i) {
+    svg.selectAll("g.chord path")
+        .filter(function(d) {
+          return d.source.index != i && d.target.index != i;
+        })
+      .transition()
+        .style("opacity", opacity);
+  };
+}
diff --git a/static/vendor/d3-2.8.1/examples/choropleth/choropleth-area.html b/static/vendor/d3-2.8.1/examples/choropleth/choropleth-area.html
new file mode 100755 (executable)
index 0000000..af37fcb
--- /dev/null
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  background: #eee;
+  width: 960px;
+  height: 500px;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var svg = d3.select("body")
+  .append("svg")
+    .call(d3.behavior.zoom()
+    .on("zoom", redraw))
+  .append("g");
+
+var counties = svg.append("g")
+    .attr("id", "counties");
+
+var path = d3.geo.path();
+
+var fill = d3.scale.log()
+    .domain([10, 500])
+    .range(["brown", "steelblue"]);
+
+// d3.json("../data/us-counties.json", function(json
+d3.json("../data/world-countries.json", function(json  
+  ) {
+  counties.selectAll("path")
+      .data(json.features)
+    .enter().append("path")
+      .attr("d", path)
+      // .attr("fill", function(d) { return fill(path.area(d)); });
+});
+
+function redraw() {
+  svg.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/choropleth/choropleth-bounds.html b/static/vendor/d3-2.8.1/examples/choropleth/choropleth-bounds.html
new file mode 100755 (executable)
index 0000000..ac01fd8
--- /dev/null
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  background: #eee;
+  width: 960px;
+  height: 500px;
+}
+
+#counties path {
+  stroke: steelblue;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+// var svg = d3.select("body")
+//   .append("svg");
+var svg = d3.select("body")
+  .append("svg")
+    .call(d3.behavior.zoom()
+    .on("zoom", redraw))
+  .append("g");
+
+var counties = svg.append("g")
+    .attr("id", "counties");
+
+var path = d3.geo.path();
+
+d3.json("../data/us-counties.json", function(json) {
+  counties.selectAll("path")
+      .data(json.features)
+    .enter().append("path")
+      .attr("d", function(d) {
+        return path({
+          type: "LineString",
+          coordinates: d3.geo.bounds(d)
+        });
+      });
+});
+function redraw() {
+  svg.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
+}
+
+
+
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/choropleth/choropleth.css b/static/vendor/d3-2.8.1/examples/choropleth/choropleth.css
new file mode 100755 (executable)
index 0000000..e1d4b0b
--- /dev/null
@@ -0,0 +1,16 @@
+svg {
+  background: #eee;
+  width: 960px;
+  height: 500px;
+}
+
+#counties path {
+  stroke: #fff;
+  stroke-width: .25px;
+}
+
+#states path {
+  fill: none;
+  stroke: #fff;
+  stroke-width: 1.5px;
+}
diff --git a/static/vendor/d3-2.8.1/examples/choropleth/choropleth.html b/static/vendor/d3-2.8.1/examples/choropleth/choropleth.html
new file mode 100755 (executable)
index 0000000..4037217
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>U.S. Unemployment by County</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="choropleth.css"/>
+    <link type="text/css" rel="stylesheet" href="../../lib/colorbrewer/colorbrewer.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="choropleth.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/choropleth/choropleth.js b/static/vendor/d3-2.8.1/examples/choropleth/choropleth.js
new file mode 100755 (executable)
index 0000000..6e154fb
--- /dev/null
@@ -0,0 +1,38 @@
+var data; // loaded asynchronously
+
+var path = d3.geo.path();
+
+var svg = d3.select("#chart")
+  .append("svg");
+
+var counties = svg.append("g")
+    .attr("id", "counties")
+    .attr("class", "Blues");
+
+var states = svg.append("g")
+    .attr("id", "states");
+
+d3.json("../data/us-counties.json", function(json) {
+  counties.selectAll("path")
+      .data(json.features)
+    .enter().append("path")
+      .attr("class", data ? quantize : null)
+      .attr("d", path);
+});
+
+d3.json("../data/us-states.json", function(json) {
+  states.selectAll("path")
+      .data(json.features)
+    .enter().append("path")
+      .attr("d", path);
+});
+
+d3.json("unemployment.json", function(json) {
+  data = json;
+  counties.selectAll("path")
+      .attr("class", quantize);
+});
+
+function quantize(d) {
+  return "q" + Math.min(8, ~~(data[d.id] * 9 / 12)) + "-9";
+}
diff --git a/static/vendor/d3-2.8.1/examples/choropleth/unemployment.json b/static/vendor/d3-2.8.1/examples/choropleth/unemployment.json
new file mode 100755 (executable)
index 0000000..7fde2ce
--- /dev/null
@@ -0,0 +1 @@
+{"01001":9.7,"01003":9.1,"01005":13.4,"01007":12.1,"01009":9.9,"01011":16.4,"01013":16.7,"01015":10.8,"01017":18.6,"01019":11.8,"01021":9.9,"01023":12.7,"01025":17.0,"01027":15.9,"01029":10.4,"01031":8.5,"01033":11.4,"01035":19.5,"01037":14.0,"01039":10.1,"01041":9.7,"01043":9.6,"01045":9.3,"01047":21.1,"01049":14.3,"01051":9.0,"01053":12.9,"01055":10.7,"01057":12.8,"01059":12.3,"01061":10.0,"01063":14.7,"01065":12.7,"01067":9.9,"01069":8.9,"01071":11.8,"01073":10.7,"01075":14.8,"01077":10.5,"01079":13.6,"01081":8.6,"01083":9.3,"01085":18.5,"01087":11.4,"01089":7.5,"01091":14.8,"01093":15.2,"01095":9.2,"01097":11.1,"01099":18.7,"01101":10.2,"01103":10.4,"01105":19.8,"01107":13.0,"01109":8.7,"01111":15.1,"01113":12.6,"01115":10.7,"01117":7.6,"01119":13.9,"01121":13.6,"01123":13.7,"01125":9.0,"01127":11.9,"01129":15.1,"01131":25.6,"01133":17.5,"02013":10.1,"02016":8.4,"02020":7.0,"02050":14.8,"02060":3.6,"02068":3.4,"02070":8.4,"02090":6.9,"02100":6.2,"02110":5.7,"02122":9.7,"02130":6.1,"02150":6.6,"02164":5.9,"02170":8.8,"02180":12.1,"02185":5.7,"02188":13.2,"02201":13.6,"02220":5.9,"02232":7.3,"02240":8.1,"02261":6.4,"02270":20.4,"02280":9.8,"02282":6.3,"02290":13.6,"04001":14.8,"04003":7.4,"04005":7.7,"04007":10.9,"04009":14.4,"04011":21.5,"04012":8.9,"04013":8.5,"04015":10.2,"04017":14.2,"04019":8.4,"04021":11.8,"04023":17.2,"04025":9.5,"04027":24.2,"05001":14.3,"05003":9.1,"05005":8.2,"05007":5.3,"05009":6.4,"05011":7.8,"05013":6.2,"05015":4.3,"05017":9.6,"05019":6.3,"05021":10.4,"05023":5.9,"05025":6.0,"05027":8.1,"05029":6.5,"05031":5.9,"05033":6.6,"05035":9.9,"05037":7.1,"05039":7.6,"05041":9.9,"05043":9.1,"05045":6.0,"05047":5.9,"05049":6.1,"05051":6.6,"05053":5.7,"05055":8.2,"05057":8.6,"05059":7.3,"05061":7.2,"05063":7.8,"05065":7.7,"05067":9.2,"05069":9.2,"05071":6.1,"05073":8.6,"05075":7.9,"05077":8.2,"05079":8.2,"05081":5.6,"05083":7.7,"05085":5.2,"05087":5.3,"05089":11.2,"05091":4.5,"05093":11.3,"05095":7.4,"05097":5.8,"05099":8.7,"05101":6.2,"05103":7.1,"05105":5.6,"05107":8.8,"05109":6.3,"05111":7.5,"05113":6.4,"05115":6.2,"05117":6.7,"05119":6.0,"05121":7.3,"05123":9.4,"05125":5.8,"05127":6.3,"05129":5.9,"05131":6.2,"05133":5.1,"05135":7.8,"05137":6.6,"05139":9.5,"05141":9.1,"05143":5.0,"05145":6.7,"05147":9.1,"05149":6.4,"06001":11.3,"06003":15.2,"06005":12.1,"06007":12.2,"06009":14.3,"06011":14.5,"06013":11.2,"06015":11.9,"06017":11.2,"06019":14.1,"06021":13.8,"06023":10.3,"06025":30.1,"06027":9.5,"06029":13.9,"06031":13.9,"06033":14.7,"06035":11.8,"06037":12.7,"06039":12.3,"06041":8.0,"06043":8.8,"06045":10.1,"06047":15.7,"06049":11.1,"06051":10.3,"06053":10.0,"06055":8.7,"06057":10.9,"06059":9.4,"06061":11.3,"06063":13.9,"06065":14.7,"06067":12.2,"06069":12.5,"06071":13.6,"06073":10.2,"06075":9.7,"06077":15.5,"06079":9.0,"06081":9.0,"06083":8.5,"06085":11.8,"06087":10.2,"06089":14.7,"06091":13.7,"06093":13.5,"06095":11.5,"06097":9.9,"06099":15.3,"06101":15.1,"06103":13.7,"06105":15.9,"06107":14.9,"06109":12.7,"06111":11.0,"06113":10.9,"06115":17.8,"08001":8.1,"08003":5.5,"08005":6.9,"08007":6.2,"08009":3.4,"08011":5.0,"08013":5.5,"08014":6.6,"08015":5.1,"08017":2.0,"08019":7.0,"08021":5.1,"08023":8.4,"08025":7.6,"08027":5.2,"08029":6.6,"08031":7.7,"08033":13.2,"08035":5.9,"08037":6.2,"08039":6.0,"08041":7.2,"08043":7.7,"08045":5.8,"08047":6.0,"08049":5.8,"08051":4.4,"08053":2.2,"08055":7.2,"08057":3.3,"08059":6.7,"08061":2.8,"08063":2.9,"08065":7.1,"08067":4.7,"08069":5.6,"08071":7.0,"08073":3.7,"08075":4.6,"08077":8.2,"08079":5.3,"08081":5.6,"08083":6.3,"08085":6.9,"08087":4.9,"08089":5.8,"08091":4.1,"08093":6.1,"08095":2.6,"08097":5.0,"08099":5.0,"08101":7.5,"08103":3.9,"08105":4.8,"08107":6.0,"08109":7.8,"08111":5.3,"08113":4.2,"08115":3.3,"08117":5.8,"08119":6.7,"08121":3.2,"08123":7.5,"08125":2.6,"09001":7.8,"09003":8.8,"09005":7.9,"09007":6.7,"09009":8.9,"09011":7.6,"09013":6.7,"09015":9.0,"10001":7.9,"10003":8.6,"10005":7.3,"11001":11.7,"12001":7.1,"12003":11.4,"12005":8.9,"12007":8.3,"12009":11.1,"12011":9.8,"12013":8.2,"12015":12.7,"12017":12.1,"12019":9.8,"12021":13.1,"12023":9.0,"12027":11.7,"12029":12.3,"12031":11.2,"12033":9.8,"12035":16.2,"12037":7.1,"12039":9.6,"12041":10.0,"12043":10.0,"12045":9.8,"12047":11.3,"12049":12.6,"12051":16.8,"12053":13.8,"12055":11.6,"12057":11.5,"12059":7.2,"12061":15.2,"12063":7.2,"12065":8.5,"12067":7.2,"12069":12.3,"12071":13.9,"12073":7.2,"12075":12.1,"12077":5.3,"12079":11.7,"12081":12.7,"12083":13.3,"12085":11.9,"12086":11.3,"12087":7.0,"12089":10.7,"12091":7.2,"12093":13.3,"12095":11.4,"12097":12.8,"12099":11.7,"12101":12.5,"12103":11.2,"12105":12.7,"12107":12.2,"12109":9.0,"12111":15.3,"12113":9.4,"12115":12.3,"12117":10.6,"12119":9.0,"12121":9.8,"12123":10.4,"12125":8.4,"12127":11.7,"12129":7.2,"12131":6.8,"12133":9.6,"13001":9.7,"13003":12.6,"13005":8.5,"13007":9.1,"13009":11.6,"13011":6.7,"13013":11.1,"13015":13.3,"13017":15.3,"13019":12.4,"13021":10.0,"13023":9.7,"13025":11.6,"13027":8.7,"13029":8.1,"13031":9.0,"13033":12.2,"13035":12.7,"13037":11.1,"13039":9.1,"13043":9.3,"13045":10.8,"13047":8.0,"13049":10.6,"13051":8.5,"13053":14.6,"13055":11.4,"13057":9.5,"13059":7.0,"13061":8.2,"13063":12.3,"13065":11.0,"13067":9.6,"13069":16.8,"13071":9.0,"13073":7.0,"13075":11.9,"13077":10.0,"13079":9.5,"13081":12.1,"13083":9.0,"13085":10.1,"13087":12.7,"13089":10.7,"13091":11.2,"13093":10.1,"13095":11.1,"13097":11.4,"13099":10.5,"13101":6.7,"13103":7.9,"13105":12.2,"13107":10.3,"13109":8.9,"13111":10.0,"13113":8.4,"13115":11.1,"13117":8.6,"13119":11.8,"13121":10.7,"13123":9.8,"13125":11.1,"13127":8.2,"13129":13.1,"13131":9.8,"13133":11.1,"13135":9.4,"13137":9.4,"13139":9.1,"13141":17.7,"13143":11.3,"13145":7.2,"13147":13.8,"13149":12.4,"13151":10.4,"13153":7.3,"13155":14.5,"13157":10.9,"13159":12.7,"13161":13.5,"13163":14.9,"13165":19.6,"13167":11.9,"13169":8.6,"13171":15.3,"13173":8.4,"13175":10.8,"13177":7.9,"13179":8.5,"13181":10.3,"13183":5.9,"13185":8.2,"13187":11.1,"13189":12.1,"13191":9.6,"13193":13.0,"13195":8.3,"13197":9.9,"13199":13.2,"13201":8.7,"13205":10.4,"13207":10.2,"13209":8.5,"13211":9.8,"13213":12.3,"13215":9.2,"13217":12.6,"13219":6.2,"13221":8.2,"13223":10.7,"13225":10.2,"13227":10.8,"13229":9.3,"13231":11.8,"13233":10.8,"13235":7.1,"13237":10.4,"13239":11.8,"13241":10.4,"13243":13.0,"13245":10.3,"13247":12.0,"13249":13.8,"13251":13.7,"13253":10.7,"13255":15.4,"13257":10.7,"13259":10.7,"13261":12.9,"13263":9.8,"13265":12.4,"13267":8.7,"13269":13.0,"13271":16.2,"13273":11.6,"13275":9.3,"13277":10.6,"13279":9.8,"13281":7.8,"13283":11.9,"13285":12.9,"13287":13.0,"13289":11.4,"13291":9.0,"13293":13.3,"13295":9.6,"13297":11.0,"13299":10.7,"13301":18.8,"13303":14.0,"13305":11.7,"13307":9.1,"13309":9.1,"13311":9.5,"13313":12.5,"13315":11.6,"13317":11.7,"13319":10.7,"13321":10.8,"15001":10.8,"15003":6.3,"15007":9.6,"15009":9.7,"16001":9.1,"16003":12.1,"16005":8.4,"16007":5.2,"16009":12.1,"16011":5.9,"16013":7.7,"16015":7.1,"16017":9.5,"16019":5.9,"16021":12.0,"16023":4.5,"16025":11.0,"16027":10.6,"16029":6.0,"16031":5.9,"16033":4.1,"16035":11.8,"16037":3.9,"16039":7.7,"16041":4.0,"16043":6.6,"16045":10.4,"16047":5.5,"16049":8.3,"16051":6.8,"16053":5.9,"16055":8.7,"16057":5.9,"16059":6.5,"16061":5.2,"16063":9.7,"16065":5.5,"16067":6.0,"16069":5.5,"16071":5.0,"16073":4.1,"16075":7.7,"16077":6.7,"16079":11.9,"16081":5.1,"16083":6.8,"16085":11.4,"16087":8.4,"17001":7.9,"17003":11.2,"17005":9.3,"17007":13.8,"17009":4.5,"17011":10.9,"17013":9.5,"17015":10.5,"17017":7.3,"17019":8.2,"17021":9.9,"17023":13.1,"17025":11.4,"17027":7.9,"17029":9.1,"17031":10.6,"17033":10.5,"17035":9.7,"17037":9.2,"17039":9.2,"17041":9.1,"17043":8.6,"17045":10.7,"17047":9.1,"17049":7.9,"17051":11.6,"17053":10.4,"17055":14.6,"17057":12.5,"17059":11.0,"17061":9.2,"17063":11.4,"17065":9.3,"17067":11.3,"17069":12.8,"17071":9.4,"17073":8.6,"17075":10.0,"17077":7.3,"17079":9.5,"17081":10.0,"17083":8.8,"17085":8.1,"17087":10.4,"17089":9.9,"17091":12.8,"17093":10.4,"17095":10.3,"17097":10.0,"17099":12.4,"17101":10.3,"17103":10.9,"17105":10.7,"17107":9.5,"17109":7.7,"17111":9.3,"17113":7.4,"17115":12.4,"17117":10.5,"17119":9.7,"17121":11.9,"17123":10.6,"17125":14.3,"17127":8.0,"17129":7.8,"17131":8.9,"17133":7.8,"17135":12.2,"17137":8.4,"17139":9.0,"17141":11.9,"17143":11.6,"17145":11.9,"17147":8.2,"17149":8.1,"17151":10.6,"17153":11.9,"17155":15.0,"17157":9.4,"17159":10.5,"17161":9.5,"17163":10.8,"17165":11.2,"17167":7.9,"17169":6.6,"17171":7.5,"17173":10.0,"17175":9.8,"17177":11.6,"17179":11.3,"17181":10.8,"17183":12.0,"17185":10.3,"17187":8.0,"17189":8.0,"17191":9.7,"17193":8.6,"17195":10.6,"17197":9.9,"17199":9.6,"17201":15.5,"17203":8.6,"18001":13.4,"18003":9.3,"18005":8.8,"18007":9.0,"18009":13.3,"18011":6.8,"18013":7.8,"18015":9.9,"18017":10.5,"18019":8.2,"18021":9.6,"18023":9.2,"18025":10.5,"18027":4.9,"18029":8.9,"18031":11.0,"18033":12.4,"18035":9.5,"18037":8.0,"18039":15.0,"18041":13.4,"18043":7.4,"18045":11.6,"18047":8.9,"18049":11.2,"18051":6.7,"18053":11.1,"18055":7.1,"18057":6.1,"18059":7.8,"18061":7.8,"18063":6.8,"18065":12.0,"18067":11.9,"18069":11.1,"18071":10.1,"18073":8.7,"18075":10.4,"18077":9.5,"18079":12.2,"18081":7.4,"18083":6.6,"18085":11.0,"18087":14.0,"18089":9.4,"18091":10.7,"18093":11.1,"18095":9.7,"18097":8.4,"18099":11.4,"18101":6.3,"18103":12.3,"18105":5.6,"18107":9.7,"18109":7.5,"18111":8.9,"18113":14.5,"18115":10.5,"18117":9.2,"18119":8.1,"18121":8.3,"18123":8.8,"18125":8.7,"18127":8.2,"18129":7.0,"18131":9.5,"18133":8.2,"18135":10.2,"18137":9.1,"18139":9.5,"18141":10.4,"18143":12.1,"18145":8.8,"18147":8.1,"18149":12.6,"18151":12.9,"18153":9.3,"18155":7.0,"18157":8.5,"18159":10.3,"18161":8.6,"18163":7.4,"18165":10.8,"18167":9.2,"18169":12.0,"18171":10.1,"18173":6.9,"18175":11.2,"18177":10.9,"18179":9.1,"18181":9.4,"18183":11.6,"19001":5.1,"19003":6.0,"19005":9.3,"19007":9.4,"19009":5.1,"19011":5.8,"19013":5.8,"19015":5.9,"19017":5.0,"19019":5.9,"19021":5.5,"19023":6.0,"19025":5.4,"19027":4.2,"19029":5.8,"19031":5.7,"19033":6.7,"19035":4.4,"19037":8.4,"19039":7.4,"19041":6.2,"19043":7.9,"19045":7.7,"19047":4.7,"19049":5.1,"19051":10.1,"19053":6.6,"19055":6.8,"19057":8.2,"19059":5.8,"19061":6.0,"19063":8.6,"19065":8.5,"19067":8.7,"19069":7.0,"19071":7.0,"19073":6.3,"19075":4.9,"19077":5.6,"19079":8.1,"19081":9.0,"19083":6.0,"19085":4.4,"19087":8.8,"19089":8.6,"19091":6.2,"19093":5.8,"19095":5.8,"19097":7.7,"19099":8.1,"19101":8.7,"19103":4.4,"19105":6.3,"19107":7.1,"19109":5.6,"19111":11.4,"19113":6.5,"19115":8.0,"19117":6.0,"19119":4.3,"19121":5.8,"19123":7.7,"19125":5.7,"19127":7.0,"19129":4.3,"19131":5.4,"19133":7.1,"19135":7.5,"19137":8.7,"19139":8.9,"19141":5.3,"19143":5.4,"19145":8.7,"19147":7.0,"19149":4.7,"19151":5.2,"19153":6.2,"19155":4.8,"19157":6.6,"19159":5.3,"19161":4.7,"19163":7.3,"19165":3.9,"19167":4.1,"19169":4.5,"19171":6.6,"19173":6.7,"19175":6.0,"19177":8.0,"19179":9.4,"19181":5.8,"19183":4.9,"19185":6.4,"19187":8.3,"19189":9.1,"19191":5.8,"19193":5.7,"19195":6.3,"19197":8.4,"20001":7.8,"20003":7.9,"20005":8.1,"20007":5.1,"20009":6.1,"20011":6.5,"20013":5.6,"20015":7.2,"20017":5.4,"20019":8.4,"20021":8.5,"20023":3.7,"20025":3.7,"20027":4.2,"20029":4.5,"20031":5.7,"20033":3.8,"20035":7.6,"20037":8.1,"20039":3.3,"20041":5.1,"20043":8.8,"20045":5.4,"20047":4.4,"20049":11.0,"20051":3.6,"20053":4.1,"20055":4.3,"20057":3.8,"20059":7.1,"20061":6.9,"20063":3.5,"20065":4.3,"20067":4.2,"20069":3.4,"20071":4.5,"20073":7.2,"20075":4.2,"20077":5.6,"20079":7.4,"20081":3.7,"20083":4.2,"20085":6.0,"20087":6.7,"20089":4.9,"20091":6.8,"20093":4.5,"20095":6.3,"20097":4.9,"20099":7.8,"20101":3.4,"20103":7.3,"20105":6.3,"20107":8.4,"20109":4.0,"20111":5.7,"20113":5.1,"20115":6.3,"20117":4.9,"20119":4.2,"20121":6.8,"20123":5.8,"20125":9.4,"20127":6.8,"20129":4.7,"20131":4.3,"20133":7.0,"20135":4.0,"20137":4.7,"20139":7.0,"20141":4.4,"20143":6.5,"20145":3.7,"20147":6.0,"20149":4.1,"20151":5.3,"20153":3.5,"20155":6.3,"20157":4.1,"20159":5.1,"20161":3.2,"20163":7.3,"20165":5.9,"20167":4.6,"20169":5.7,"20171":3.2,"20173":8.8,"20175":5.1,"20177":6.4,"20179":3.2,"20181":3.9,"20183":4.3,"20185":6.1,"20187":3.4,"20189":5.3,"20191":9.0,"20193":3.6,"20195":3.6,"20197":6.6,"20199":5.9,"20201":4.5,"20203":3.5,"20205":10.2,"20207":8.9,"20209":10.4,"21001":10.1,"21003":14.3,"21005":10.9,"21007":10.2,"21009":11.6,"21011":13.3,"21013":12.5,"21015":9.2,"21017":9.1,"21019":8.3,"21021":11.0,"21023":10.2,"21025":10.0,"21027":12.1,"21029":10.8,"21031":13.7,"21033":10.9,"21035":8.0,"21037":10.7,"21039":9.1,"21041":12.4,"21043":13.5,"21045":10.2,"21047":12.9,"21049":11.4,"21051":13.5,"21053":9.0,"21055":10.8,"21057":13.0,"21059":9.1,"21061":12.8,"21063":12.6,"21065":12.9,"21067":7.7,"21069":12.2,"21071":12.4,"21073":9.1,"21075":14.4,"21077":11.1,"21079":11.9,"21081":10.1,"21083":10.3,"21085":16.4,"21087":12.4,"21089":9.8,"21091":13.6,"21093":10.0,"21095":12.5,"21097":11.1,"21099":10.6,"21101":9.8,"21103":10.7,"21105":9.2,"21107":9.1,"21109":17.5,"21111":10.5,"21113":8.8,"21115":11.1,"21117":10.0,"21119":12.0,"21121":11.5,"21123":10.7,"21125":10.1,"21127":13.1,"21129":12.3,"21131":13.7,"21133":12.0,"21135":15.1,"21137":12.1,"21139":9.8,"21141":10.4,"21143":12.2,"21145":9.1,"21147":13.3,"21149":10.6,"21151":8.7,"21153":21.4,"21155":12.9,"21157":10.7,"21159":12.4,"21161":11.1,"21163":12.4,"21165":14.7,"21167":10.8,"21169":15.8,"21171":14.0,"21173":12.6,"21175":14.5,"21177":10.7,"21179":11.5,"21181":12.5,"21183":9.4,"21185":8.6,"21187":10.1,"21189":11.2,"21191":11.7,"21193":12.5,"21195":10.7,"21197":16.7,"21199":10.0,"21201":9.6,"21203":12.8,"21205":8.6,"21207":10.8,"21209":9.1,"21211":9.6,"21213":11.8,"21215":10.2,"21217":10.2,"21219":12.6,"21221":16.0,"21223":10.7,"21225":10.8,"21227":9.2,"21229":12.7,"21231":13.6,"21233":8.8,"21235":11.4,"21237":13.9,"21239":8.3,"22001":7.1,"22003":10.1,"22005":6.7,"22007":8.8,"22009":8.1,"22011":8.0,"22013":10.5,"22015":6.4,"22017":7.9,"22019":7.2,"22021":10.7,"22023":5.6,"22025":10.3,"22027":10.3,"22029":11.3,"22031":9.0,"22033":6.8,"22035":14.2,"22037":8.0,"22039":8.6,"22041":11.3,"22043":8.2,"22045":7.6,"22047":10.4,"22049":7.8,"22051":6.5,"22053":6.4,"22055":5.9,"22057":4.9,"22059":7.3,"22061":7.8,"22063":7.0,"22065":9.3,"22067":15.1,"22069":8.4,"22071":10.7,"22073":7.6,"22075":6.2,"22077":7.9,"22079":6.9,"22081":9.6,"22083":10.7,"22085":8.1,"22087":10.5,"22089":6.5,"22091":11.8,"22093":10.0,"22095":8.4,"22097":8.3,"22099":7.5,"22101":8.6,"22103":5.2,"22105":8.1,"22107":13.5,"22109":5.2,"22111":12.2,"22113":7.2,"22115":6.7,"22117":9.6,"22119":9.1,"22121":7.4,"22123":17.0,"22125":8.2,"22127":9.1,"23001":8.4,"23003":9.3,"23005":6.5,"23007":11.2,"23009":6.8,"23011":7.3,"23013":7.0,"23015":6.3,"23017":10.9,"23019":8.0,"23021":11.6,"23023":6.7,"23025":10.7,"23027":7.8,"23029":10.4,"23031":7.4,"24001":7.5,"24003":6.5,"24005":7.7,"24009":5.9,"24011":8.8,"24013":6.0,"24015":8.6,"24017":5.9,"24019":10.9,"24021":5.9,"24023":6.9,"24025":7.1,"24027":5.4,"24029":7.1,"24031":5.3,"24033":7.3,"24035":6.6,"24037":5.6,"24039":9.5,"24041":6.8,"24043":9.4,"24045":7.7,"24047":7.5,"24510":10.6,"25001":8.0,"25003":8.4,"25005":11.8,"25007":5.0,"25009":10.1,"25011":8.7,"25013":10.5,"25015":7.3,"25017":8.1,"25019":5.0,"25021":8.5,"25023":9.7,"25025":9.3,"25027":10.1,"26001":16.7,"26003":12.0,"26005":13.2,"26007":13.9,"26009":14.7,"26011":15.8,"26013":24.3,"26015":10.5,"26017":12.3,"26019":12.0,"26021":13.5,"26023":14.0,"26025":12.4,"26027":11.4,"26029":13.9,"26031":8.6,"26033":11.6,"26035":16.8,"26037":9.4,"26039":13.7,"26041":11.5,"26043":12.0,"26045":10.3,"26047":12.2,"26049":15.8,"26051":16.5,"26053":13.3,"26055":12.0,"26057":13.7,"26059":17.2,"26061":10.2,"26063":14.8,"26065":11.6,"26067":13.4,"26069":16.4,"26071":11.7,"26073":8.5,"26075":14.9,"26077":11.2,"26079":14.3,"26081":11.7,"26083":11.9,"26085":17.5,"26087":18.1,"26089":9.0,"26091":16.1,"26093":13.6,"26095":13.2,"26097":6.1,"26099":18.1,"26101":12.6,"26103":10.1,"26105":12.9,"26107":13.0,"26109":12.5,"26111":10.2,"26113":15.0,"26115":14.2,"26117":17.6,"26119":18.9,"26121":16.0,"26123":13.8,"26125":15.6,"26127":15.2,"26129":12.7,"26131":13.8,"26133":15.3,"26135":19.1,"26137":14.7,"26139":12.8,"26141":16.0,"26143":14.6,"26145":12.9,"26147":19.0,"26149":13.9,"26151":17.8,"26153":12.7,"26155":15.2,"26157":16.3,"26159":13.2,"26161":9.3,"26163":18.3,"26165":18.3,"27001":8.1,"27003":7.9,"27005":6.4,"27007":7.2,"27009":7.0,"27011":4.5,"27013":6.3,"27015":5.5,"27017":7.3,"27019":7.0,"27021":7.9,"27023":6.1,"27025":8.4,"27027":3.6,"27029":9.1,"27031":4.7,"27033":5.2,"27035":7.4,"27037":6.9,"27039":6.1,"27041":5.6,"27043":7.6,"27045":7.0,"27047":7.6,"27049":6.7,"27051":6.8,"27053":7.3,"27055":7.1,"27057":7.3,"27059":8.3,"27061":9.2,"27063":4.7,"27065":10.3,"27067":5.5,"27069":5.2,"27071":7.3,"27073":5.4,"27075":7.5,"27077":6.9,"27079":8.6,"27081":4.5,"27083":4.9,"27085":8.0,"27087":6.0,"27089":6.2,"27091":6.9,"27093":7.8,"27095":10.5,"27097":9.0,"27099":5.5,"27101":3.9,"27103":6.1,"27105":4.5,"27107":5.1,"27109":5.5,"27111":6.3,"27113":5.6,"27115":9.1,"27117":5.3,"27119":4.4,"27121":6.4,"27123":7.4,"27125":6.7,"27127":6.1,"27129":6.4,"27131":7.5,"27133":5.1,"27135":5.0,"27137":8.2,"27139":6.8,"27141":8.1,"27143":6.5,"27145":6.8,"27147":7.7,"27149":4.3,"27151":6.6,"27153":7.5,"27155":6.2,"27157":7.1,"27159":8.8,"27161":7.0,"27163":6.8,"27165":7.5,"27167":4.7,"27169":7.0,"27171":8.2,"27173":5.1,"28001":8.0,"28003":11.3,"28005":8.6,"28007":11.8,"28009":12.6,"28011":9.0,"28013":9.7,"28015":9.8,"28017":13.2,"28019":11.3,"28021":15.0,"28023":10.0,"28025":17.8,"28027":11.1,"28029":9.9,"28031":7.7,"28033":7.2,"28035":7.7,"28037":9.0,"28039":10.0,"28041":9.9,"28043":11.0,"28045":7.5,"28047":7.2,"28049":7.9,"28051":16.6,"28053":10.2,"28055":9.2,"28057":9.6,"28059":8.0,"28061":10.2,"28063":15.5,"28065":10.6,"28067":7.1,"28069":10.3,"28071":6.9,"28073":6.6,"28075":8.7,"28077":10.2,"28079":8.7,"28081":9.8,"28083":11.6,"28085":8.8,"28087":10.2,"28089":6.3,"28091":10.1,"28093":11.2,"28095":13.7,"28097":12.7,"28099":8.4,"28101":7.9,"28103":17.6,"28105":8.0,"28107":11.9,"28109":8.3,"28111":10.4,"28113":9.8,"28115":8.7,"28117":11.5,"28119":11.1,"28121":5.6,"28123":5.9,"28125":9.0,"28127":8.2,"28129":8.2,"28131":7.2,"28133":11.8,"28135":9.9,"28137":10.3,"28139":12.5,"28141":10.1,"28143":13.0,"28145":8.8,"28147":10.3,"28149":9.1,"28151":11.3,"28153":9.4,"28155":13.5,"28157":10.1,"28159":15.1,"28161":12.9,"28163":10.5,"29001":6.5,"29003":7.6,"29005":7.9,"29007":9.2,"29009":8.1,"29011":11.7,"29013":10.8,"29015":9.3,"29017":8.8,"29019":6.2,"29021":8.7,"29023":8.0,"29025":8.6,"29027":8.0,"29029":7.9,"29031":6.9,"29033":9.8,"29035":8.7,"29037":9.7,"29039":8.6,"29041":10.5,"29043":8.0,"29045":11.3,"29047":8.6,"29049":8.7,"29051":6.7,"29053":8.4,"29055":10.7,"29057":10.1,"29059":9.4,"29061":8.7,"29063":9.3,"29065":9.4,"29067":9.8,"29069":11.1,"29071":11.5,"29073":10.8,"29075":6.8,"29077":8.3,"29079":6.9,"29081":7.8,"29083":9.6,"29085":12.3,"29087":7.1,"29089":8.3,"29091":9.2,"29093":8.7,"29095":10.9,"29097":8.4,"29099":10.6,"29101":8.0,"29103":5.9,"29105":11.0,"29107":9.0,"29109":7.8,"29111":8.3,"29113":11.3,"29115":10.3,"29117":7.8,"29119":7.0,"29121":7.9,"29123":9.8,"29125":8.7,"29127":8.9,"29129":7.9,"29131":10.6,"29133":9.7,"29135":7.8,"29137":11.0,"29139":10.3,"29141":11.3,"29143":8.9,"29145":7.9,"29147":5.9,"29149":9.0,"29151":9.9,"29153":7.6,"29155":12.1,"29157":7.2,"29159":8.1,"29161":7.1,"29163":8.3,"29165":8.0,"29167":8.9,"29169":6.8,"29171":7.4,"29173":8.0,"29175":9.4,"29177":8.3,"29179":12.7,"29181":9.5,"29183":8.7,"29185":10.3,"29186":9.3,"29187":10.9,"29189":9.6,"29195":7.9,"29197":7.8,"29199":12.2,"29201":9.2,"29203":9.6,"29205":8.1,"29207":9.0,"29209":9.0,"29211":6.4,"29213":8.6,"29215":8.8,"29217":7.9,"29219":11.2,"29221":13.7,"29223":9.5,"29225":9.0,"29227":8.4,"29229":9.6,"29510":11.1,"30001":4.4,"30003":10.2,"30005":5.0,"30007":6.2,"30009":4.8,"30011":3.9,"30013":5.2,"30015":4.2,"30017":4.6,"30019":4.2,"30021":4.8,"30023":6.5,"30025":3.7,"30027":4.7,"30029":8.8,"30031":5.5,"30033":3.4,"30035":7.2,"30037":4.7,"30039":8.2,"30041":5.1,"30043":5.8,"30045":4.6,"30047":8.3,"30049":4.3,"30051":4.7,"30053":11.1,"30055":3.2,"30057":4.8,"30059":7.8,"30061":8.6,"30063":5.6,"30065":7.5,"30067":6.1,"30069":4.5,"30071":4.8,"30073":6.0,"30075":4.0,"30077":7.3,"30079":3.1,"30081":7.5,"30083":4.6,"30085":7.5,"30087":7.3,"30089":11.2,"30091":4.3,"30093":5.5,"30095":5.2,"30097":3.1,"30099":4.0,"30101":4.1,"30103":5.1,"30105":4.6,"30107":4.3,"30109":4.1,"30111":4.7,"31001":5.6,"31003":3.6,"31005":4.4,"31007":3.5,"31009":5.2,"31011":3.9,"31013":7.1,"31015":3.6,"31017":3.1,"31019":3.5,"31021":5.7,"31023":3.9,"31025":4.6,"31027":3.2,"31029":3.0,"31031":2.5,"31033":4.1,"31035":4.3,"31037":4.0,"31039":3.5,"31041":3.1,"31043":5.5,"31045":4.4,"31047":4.8,"31049":3.8,"31051":3.7,"31053":4.9,"31055":5.0,"31057":4.0,"31059":4.4,"31061":3.7,"31063":3.0,"31065":4.1,"31067":5.9,"31069":4.4,"31071":2.5,"31073":3.8,"31075":3.1,"31077":3.3,"31079":4.4,"31081":3.4,"31083":3.6,"31085":4.2,"31087":6.6,"31089":3.2,"31091":4.0,"31093":3.8,"31095":4.6,"31097":3.9,"31099":3.8,"31101":3.9,"31103":4.4,"31105":4.3,"31107":3.6,"31109":4.2,"31111":4.0,"31113":4.3,"31115":3.2,"31117":4.0,"31119":4.2,"31121":4.0,"31123":4.1,"31125":3.6,"31127":5.4,"31129":4.7,"31131":5.0,"31133":4.1,"31135":3.1,"31137":3.8,"31139":3.6,"31141":4.4,"31143":4.2,"31145":4.2,"31147":5.7,"31149":3.1,"31151":4.0,"31153":4.7,"31155":4.5,"31157":4.8,"31159":3.7,"31161":3.5,"31163":3.0,"31165":3.8,"31167":3.6,"31169":4.3,"31171":3.8,"31173":13.8,"31175":2.9,"31177":4.1,"31179":3.8,"31181":4.2,"31183":3.2,"31185":5.7,"32001":9.9,"32003":13.9,"32005":12.6,"32007":6.8,"32009":8.3,"32011":9.3,"32013":8.6,"32015":7.2,"32017":9.4,"32019":16.3,"32021":10.5,"32023":16.1,"32027":10.6,"32029":14.8,"32031":13.1,"32033":8.4,"32510":12.8,"33001":7.0,"33003":5.4,"33005":6.5,"33007":7.8,"33009":5.6,"33011":7.5,"33013":6.3,"33015":7.5,"33017":6.6,"33019":6.5,"34001":12.2,"34003":8.4,"34005":9.1,"34007":10.9,"34009":8.5,"34011":12.6,"34013":11.1,"34015":10.0,"34017":11.6,"34019":6.9,"34021":8.1,"34023":9.2,"34025":8.7,"34027":7.6,"34029":9.6,"34031":11.7,"34033":10.1,"34035":7.9,"34037":8.5,"34039":9.8,"34041":8.8,"35001":7.5,"35003":8.1,"35005":6.8,"35006":6.3,"35007":8.0,"35009":4.4,"35011":4.3,"35013":6.9,"35015":6.0,"35017":12.3,"35019":7.5,"35021":4.5,"35023":7.6,"35025":8.3,"35027":5.1,"35028":2.9,"35029":13.4,"35031":8.6,"35033":13.1,"35035":6.8,"35037":5.9,"35039":7.2,"35041":4.4,"35043":9.0,"35045":8.3,"35047":7.8,"35049":6.5,"35051":4.8,"35053":5.0,"35055":8.7,"35057":8.8,"35059":5.5,"35061":8.5,"36001":7.1,"36003":7.9,"36005":13.3,"36007":8.5,"36009":8.5,"36011":8.0,"36013":7.8,"36015":8.9,"36017":8.7,"36019":9.0,"36021":7.7,"36023":8.5,"36025":8.4,"36027":8.2,"36029":8.3,"36031":7.8,"36033":7.8,"36035":9.1,"36037":7.2,"36039":8.4,"36041":5.6,"36043":7.6,"36045":7.8,"36047":11.0,"36049":7.6,"36051":7.5,"36053":7.4,"36055":8.3,"36057":8.8,"36059":7.2,"36061":9.2,"36063":8.8,"36065":7.3,"36067":7.9,"36069":6.7,"36071":8.2,"36073":8.2,"36075":9.3,"36077":6.8,"36079":7.0,"36081":9.1,"36083":7.7,"36085":8.9,"36087":7.4,"36089":8.9,"36091":6.4,"36093":7.8,"36095":7.6,"36097":7.4,"36099":7.3,"36101":9.5,"36103":7.5,"36105":8.6,"36107":7.9,"36109":5.6,"36111":8.1,"36113":7.2,"36115":7.4,"36117":7.8,"36119":7.4,"36121":7.8,"36123":6.0,"37001":11.8,"37003":13.6,"37005":10.9,"37007":14.8,"37009":10.0,"37011":7.9,"37013":11.2,"37015":10.5,"37017":12.0,"37019":10.5,"37021":8.2,"37023":14.1,"37025":11.4,"37027":15.2,"37029":7.1,"37031":7.6,"37033":12.4,"37035":13.6,"37037":8.0,"37039":14.2,"37041":11.9,"37043":10.8,"37045":14.3,"37047":12.5,"37049":10.0,"37051":9.1,"37053":5.0,"37055":6.8,"37057":12.5,"37059":12.1,"37061":8.7,"37063":8.0,"37065":16.3,"37067":9.5,"37069":9.7,"37071":13.3,"37073":7.1,"37075":13.4,"37077":10.2,"37079":10.2,"37081":11.0,"37083":13.1,"37085":10.9,"37087":8.5,"37089":8.6,"37091":9.4,"37093":8.3,"37095":5.9,"37097":12.1,"37099":7.8,"37101":9.5,"37103":10.9,"37105":13.5,"37107":11.4,"37109":13.2,"37111":14.1,"37113":9.2,"37115":9.3,"37117":10.6,"37119":11.0,"37121":11.0,"37123":13.3,"37125":9.5,"37127":11.9,"37129":9.1,"37131":10.7,"37133":8.3,"37135":6.3,"37137":10.1,"37139":9.1,"37141":10.8,"37143":10.3,"37145":10.8,"37147":10.0,"37149":8.2,"37151":11.0,"37153":13.2,"37155":11.5,"37157":11.7,"37159":12.8,"37161":14.3,"37163":8.3,"37165":16.5,"37167":11.9,"37169":10.1,"37171":11.8,"37173":9.1,"37175":8.5,"37177":8.8,"37179":10.0,"37181":13.0,"37183":8.3,"37185":12.7,"37187":11.7,"37189":6.9,"37191":8.8,"37193":12.9,"37195":11.9,"37197":9.3,"37199":10.9,"38001":2.7,"38003":3.4,"38005":5.3,"38007":1.3,"38009":2.9,"38011":2.7,"38013":2.2,"38015":2.8,"38017":3.7,"38019":2.5,"38021":4.1,"38023":3.4,"38025":3.6,"38027":3.8,"38029":5.1,"38031":2.8,"38033":2.5,"38035":3.5,"38037":3.2,"38039":3.6,"38041":2.7,"38043":3.4,"38045":4.3,"38047":2.7,"38049":2.9,"38051":3.1,"38053":2.2,"38055":3.4,"38057":3.3,"38059":3.0,"38061":4.4,"38063":2.9,"38065":3.1,"38067":5.1,"38069":4.0,"38071":3.2,"38073":6.0,"38075":3.3,"38077":4.3,"38079":9.7,"38081":6.5,"38083":3.7,"38085":4.3,"38087":1.2,"38089":2.8,"38091":2.1,"38093":3.2,"38095":2.6,"38097":3.5,"38099":4.5,"38101":2.8,"38103":3.8,"38105":2.0,"39001":13.8,"39003":10.2,"39005":11.4,"39007":12.6,"39009":8.6,"39011":10.1,"39013":9.2,"39015":11.9,"39017":9.1,"39019":13.2,"39021":11.4,"39023":9.9,"39025":9.4,"39027":13.9,"39029":12.5,"39031":12.3,"39033":13.2,"39035":8.5,"39037":9.9,"39039":11.7,"39041":6.7,"39043":9.5,"39045":8.2,"39047":11.7,"39049":8.2,"39051":12.1,"39053":9.5,"39055":6.5,"39057":9.4,"39059":10.8,"39061":8.9,"39063":9.1,"39065":11.2,"39067":10.6,"39069":10.9,"39071":15.3,"39073":10.4,"39075":6.3,"39077":12.8,"39079":10.5,"39081":12.7,"39083":8.7,"39085":7.9,"39087":8.4,"39089":8.9,"39091":11.2,"39093":9.1,"39095":11.3,"39097":8.5,"39099":11.8,"39101":10.2,"39103":7.5,"39105":15.2,"39107":7.8,"39109":11.0,"39111":11.5,"39113":11.0,"39115":14.6,"39117":10.0,"39119":11.9,"39121":14.0,"39123":10.7,"39125":11.5,"39127":12.8,"39129":10.3,"39131":14.7,"39133":9.2,"39135":11.1,"39137":9.0,"39139":11.8,"39141":11.5,"39143":10.8,"39145":12.1,"39147":12.0,"39149":11.9,"39151":11.0,"39153":9.6,"39155":13.5,"39157":10.2,"39159":8.0,"39161":13.2,"39163":11.3,"39165":8.5,"39167":9.4,"39169":8.9,"39171":14.1,"39173":10.0,"39175":11.2,"40001":7.6,"40003":5.5,"40005":8.4,"40007":3.3,"40009":5.9,"40011":5.7,"40013":5.2,"40015":6.1,"40017":5.5,"40019":5.7,"40021":5.6,"40023":7.6,"40025":3.5,"40027":5.2,"40029":8.8,"40031":5.1,"40033":4.0,"40035":5.5,"40037":8.1,"40039":4.9,"40041":6.0,"40043":4.6,"40045":4.5,"40047":4.5,"40049":5.9,"40051":7.4,"40053":4.2,"40055":7.9,"40057":6.9,"40059":4.3,"40061":8.4,"40063":10.7,"40065":4.8,"40067":8.6,"40069":7.0,"40071":8.1,"40073":4.3,"40075":6.2,"40077":10.4,"40079":8.7,"40081":6.7,"40083":5.6,"40085":5.4,"40087":5.6,"40089":11.6,"40091":8.2,"40093":4.5,"40095":7.5,"40097":8.1,"40099":4.7,"40101":8.1,"40103":7.7,"40105":9.3,"40107":8.9,"40109":6.1,"40111":8.5,"40113":7.4,"40115":6.2,"40117":8.2,"40119":6.3,"40121":6.5,"40123":5.1,"40125":6.5,"40127":8.9,"40129":4.5,"40131":7.2,"40133":9.2,"40135":8.7,"40137":8.4,"40139":3.8,"40141":5.6,"40143":6.8,"40145":6.6,"40147":5.9,"40149":6.3,"40151":4.2,"40153":6.5,"41001":8.5,"41003":7.5,"41005":10.4,"41007":8.2,"41009":12.6,"41011":11.7,"41013":16.1,"41015":11.2,"41017":13.5,"41019":14.0,"41021":5.6,"41023":9.9,"41025":15.0,"41027":6.6,"41029":11.5,"41031":12.9,"41033":13.3,"41035":12.0,"41037":10.1,"41039":11.5,"41041":9.4,"41043":13.6,"41045":9.3,"41047":10.3,"41049":7.4,"41051":10.9,"41053":9.3,"41055":7.6,"41057":8.2,"41059":7.8,"41061":10.2,"41063":8.7,"41065":8.0,"41067":9.6,"41069":6.7,"41071":11.0,"42001":7.4,"42003":7.2,"42005":8.0,"42007":8.4,"42009":10.9,"42011":9.1,"42013":7.4,"42015":7.6,"42017":7.3,"42019":7.1,"42021":8.8,"42023":16.7,"42025":10.0,"42027":5.6,"42029":6.3,"42031":8.3,"42033":9.8,"42035":8.2,"42037":8.2,"42039":10.1,"42041":6.8,"42043":8.1,"42045":7.9,"42047":12.9,"42049":9.2,"42051":9.1,"42053":10.2,"42055":8.6,"42057":14.3,"42059":7.8,"42061":10.2,"42063":7.8,"42065":9.5,"42067":7.6,"42069":8.3,"42071":7.5,"42073":8.9,"42075":7.0,"42077":9.3,"42079":9.2,"42081":9.3,"42083":10.0,"42085":11.3,"42087":10.4,"42089":9.0,"42091":7.0,"42093":5.9,"42095":8.8,"42097":9.4,"42099":8.1,"42101":11.0,"42103":8.6,"42105":10.3,"42107":10.1,"42109":8.6,"42111":8.5,"42113":7.9,"42115":7.8,"42117":7.8,"42119":8.8,"42121":8.7,"42123":7.3,"42125":7.9,"42127":6.6,"42129":7.8,"42131":6.9,"42133":8.4,"44001":11.1,"44003":11.9,"44005":10.0,"44007":13.5,"44009":9.2,"45001":14.8,"45003":9.4,"45005":22.5,"45007":12.5,"45009":18.1,"45011":19.0,"45013":8.7,"45015":10.7,"45017":14.4,"45019":9.0,"45021":16.2,"45023":21.1,"45025":16.8,"45027":16.1,"45029":14.2,"45031":13.0,"45033":17.2,"45035":10.3,"45037":10.7,"45039":12.9,"45041":11.7,"45043":12.5,"45045":10.2,"45047":13.7,"45049":16.1,"45051":10.9,"45053":10.7,"45055":10.4,"45057":17.9,"45059":11.7,"45061":15.7,"45063":8.3,"45065":15.7,"45067":21.0,"45069":20.2,"45071":11.7,"45073":14.2,"45075":18.7,"45077":10.6,"45079":9.5,"45081":9.4,"45083":12.2,"45085":13.9,"45087":20.6,"45089":15.4,"45091":14.1,"46003":4.0,"46005":3.0,"46007":6.0,"46009":4.9,"46011":3.2,"46013":3.1,"46015":2.7,"46017":17.2,"46019":3.9,"46021":4.5,"46023":4.8,"46025":4.7,"46027":3.7,"46029":5.8,"46031":5.6,"46033":3.0,"46035":4.3,"46037":5.3,"46039":4.8,"46041":10.4,"46043":3.1,"46045":2.7,"46047":4.9,"46049":3.1,"46051":3.5,"46053":3.1,"46055":3.6,"46057":5.1,"46059":2.8,"46061":3.0,"46063":2.3,"46065":2.7,"46067":3.9,"46069":3.6,"46071":6.2,"46073":2.6,"46075":2.4,"46077":5.1,"46079":5.8,"46081":3.8,"46083":3.9,"46085":5.7,"46087":4.5,"46089":5.0,"46091":4.7,"46093":4.0,"46095":6.8,"46097":5.7,"46099":4.7,"46101":6.1,"46103":4.4,"46105":3.9,"46107":3.2,"46109":4.8,"46111":3.8,"46113":12.6,"46115":3.4,"46117":2.1,"46119":2.4,"46121":8.4,"46123":2.9,"46125":4.4,"46127":5.3,"46129":4.0,"46135":5.3,"46137":7.8,"47001":9.7,"47003":12.1,"47005":12.8,"47007":13.7,"47009":9.3,"47011":9.3,"47013":13.1,"47015":10.8,"47017":16.4,"47019":9.8,"47021":9.4,"47023":11.5,"47025":11.1,"47027":12.6,"47029":12.2,"47031":10.2,"47033":13.4,"47035":10.8,"47037":9.2,"47039":14.2,"47041":10.2,"47043":9.8,"47045":14.0,"47047":10.8,"47049":13.0,"47051":10.4,"47053":15.7,"47055":14.0,"47057":13.5,"47059":14.3,"47061":13.0,"47063":12.5,"47065":8.7,"47067":18.3,"47069":12.7,"47071":11.1,"47073":10.3,"47075":18.0,"47077":18.1,"47079":13.1,"47081":12.4,"47083":11.6,"47085":11.9,"47087":12.7,"47089":11.8,"47091":12.2,"47093":8.1,"47095":10.7,"47097":18.9,"47099":14.6,"47101":14.9,"47103":6.9,"47105":9.5,"47107":13.0,"47109":12.7,"47111":11.2,"47113":11.0,"47115":12.1,"47117":16.3,"47119":11.9,"47121":13.6,"47123":16.1,"47125":9.0,"47127":9.7,"47129":11.6,"47131":10.4,"47133":12.0,"47135":17.6,"47137":13.4,"47139":11.4,"47141":9.7,"47143":12.7,"47145":8.9,"47147":10.1,"47149":9.5,"47151":18.4,"47153":12.8,"47155":9.2,"47157":10.2,"47159":12.8,"47161":11.1,"47163":8.8,"47165":9.7,"47167":11.6,"47169":12.0,"47171":10.3,"47173":10.7,"47175":14.2,"47177":12.5,"47179":8.6,"47181":12.9,"47183":13.0,"47185":13.5,"47187":7.5,"47189":9.0,"48001":9.4,"48003":7.6,"48005":8.9,"48007":7.3,"48009":6.5,"48011":5.1,"48013":7.9,"48015":8.4,"48017":5.2,"48019":6.8,"48021":8.0,"48023":5.1,"48025":10.3,"48027":7.1,"48029":7.2,"48031":5.8,"48033":6.2,"48035":8.6,"48037":7.8,"48039":8.9,"48041":6.2,"48043":5.1,"48045":5.9,"48047":9.9,"48049":7.2,"48051":7.4,"48053":6.3,"48055":8.2,"48057":9.5,"48059":6.3,"48061":10.8,"48063":9.6,"48065":6.7,"48067":12.5,"48069":5.3,"48071":10.7,"48073":9.7,"48075":6.4,"48077":7.4,"48079":7.2,"48081":8.6,"48083":6.9,"48085":7.8,"48087":5.9,"48089":6.6,"48091":6.6,"48093":6.1,"48095":8.2,"48097":6.5,"48099":8.7,"48101":5.6,"48103":9.5,"48105":9.7,"48107":7.0,"48109":4.5,"48111":4.4,"48113":8.7,"48115":8.7,"48117":5.8,"48119":8.4,"48121":7.7,"48123":8.3,"48125":6.0,"48127":11.0,"48129":7.0,"48131":12.5,"48133":8.4,"48135":9.2,"48137":6.7,"48139":8.6,"48141":9.8,"48143":7.1,"48145":9.5,"48147":9.0,"48149":5.7,"48151":6.4,"48153":6.9,"48155":5.7,"48157":8.3,"48159":7.3,"48161":6.7,"48163":8.4,"48165":6.8,"48167":8.5,"48169":5.7,"48171":4.9,"48173":5.2,"48175":7.9,"48177":6.1,"48179":8.9,"48181":8.7,"48183":8.0,"48185":10.0,"48187":6.7,"48189":6.4,"48191":8.9,"48193":6.0,"48195":5.5,"48197":7.2,"48199":10.1,"48201":8.5,"48203":8.7,"48205":4.3,"48207":5.2,"48209":6.8,"48211":3.0,"48213":8.5,"48215":11.6,"48217":8.5,"48219":7.0,"48221":7.6,"48223":6.5,"48225":10.3,"48227":7.5,"48229":6.5,"48231":8.5,"48233":8.0,"48235":5.4,"48237":6.4,"48239":7.6,"48241":11.9,"48243":5.6,"48245":10.8,"48247":10.0,"48249":10.0,"48251":9.1,"48253":8.2,"48255":10.5,"48257":8.8,"48259":6.0,"48261":6.1,"48263":6.2,"48265":6.0,"48267":5.4,"48269":5.4,"48271":8.9,"48273":7.7,"48275":6.4,"48277":7.8,"48279":6.6,"48281":6.1,"48283":9.9,"48285":6.4,"48287":6.9,"48289":7.9,"48291":11.2,"48293":7.2,"48295":6.1,"48297":7.6,"48299":7.3,"48301":11.5,"48303":5.7,"48305":6.8,"48307":9.1,"48309":7.1,"48311":7.8,"48313":8.7,"48315":11.8,"48317":5.0,"48319":5.4,"48321":11.2,"48323":13.6,"48325":7.1,"48327":9.0,"48329":6.2,"48331":10.2,"48333":6.0,"48335":8.7,"48337":7.8,"48339":7.9,"48341":5.3,"48343":15.6,"48345":5.3,"48347":7.0,"48349":8.4,"48351":12.4,"48353":6.4,"48355":7.7,"48357":6.3,"48359":5.5,"48361":11.1,"48363":9.1,"48365":7.5,"48367":8.4,"48369":4.8,"48371":11.7,"48373":10.3,"48375":6.6,"48377":17.8,"48379":8.5,"48381":5.1,"48383":5.8,"48385":6.1,"48387":10.5,"48389":14.0,"48391":7.0,"48393":6.2,"48395":8.7,"48397":7.8,"48399":10.1,"48401":9.1,"48403":15.9,"48405":10.8,"48407":10.0,"48409":9.8,"48411":7.8,"48413":11.1,"48415":7.2,"48417":4.3,"48419":8.1,"48421":4.9,"48423":8.3,"48425":7.3,"48427":17.8,"48429":6.9,"48431":4.6,"48433":4.8,"48435":7.8,"48437":6.7,"48439":8.2,"48441":6.1,"48443":7.8,"48445":7.7,"48447":5.6,"48449":7.7,"48451":7.0,"48453":7.0,"48455":8.8,"48457":10.5,"48459":8.1,"48461":5.6,"48463":8.9,"48465":9.6,"48467":7.4,"48469":7.9,"48471":7.8,"48473":9.0,"48475":8.5,"48477":6.9,"48479":9.1,"48481":7.9,"48483":5.6,"48485":8.1,"48487":5.5,"48489":13.9,"48491":7.8,"48493":6.9,"48495":9.0,"48497":9.6,"48499":8.4,"48501":7.1,"48503":6.4,"48505":12.6,"48507":16.3,"49001":4.2,"49003":5.6,"49005":4.2,"49007":6.5,"49009":2.7,"49011":5.6,"49013":6.9,"49015":6.2,"49017":4.9,"49019":5.2,"49021":6.3,"49023":6.8,"49025":4.4,"49027":4.0,"49029":5.3,"49031":3.8,"49033":2.8,"49035":6.0,"49037":8.6,"49039":5.6,"49041":5.7,"49043":5.8,"49045":6.4,"49047":6.6,"49049":5.4,"49051":6.0,"49053":7.8,"49055":4.2,"49057":7.0,"50001":5.8,"50003":6.8,"50005":7.0,"50007":5.7,"50009":7.8,"50011":6.2,"50013":7.0,"50015":6.6,"50017":5.5,"50019":8.3,"50021":8.7,"50023":6.1,"50025":6.3,"50027":5.8,"51001":6.1,"51003":5.0,"51005":8.7,"51007":7.0,"51009":7.0,"51011":6.7,"51013":4.2,"51015":5.8,"51017":5.4,"51019":6.2,"51021":7.5,"51023":6.2,"51025":11.4,"51027":8.8,"51029":7.8,"51031":6.6,"51033":8.2,"51035":11.3,"51036":8.7,"51037":9.1,"51041":6.8,"51043":6.1,"51045":7.2,"51047":7.5,"51049":7.0,"51051":8.3,"51053":8.3,"51057":7.7,"51059":4.7,"51061":5.0,"51063":7.1,"51065":5.8,"51067":7.8,"51069":7.3,"51071":8.5,"51073":5.5,"51075":6.7,"51077":10.4,"51079":5.8,"51081":9.1,"51083":11.5,"51085":6.6,"51087":7.2,"51089":13.4,"51091":5.9,"51093":6.3,"51095":4.6,"51097":7.5,"51099":7.5,"51101":6.4,"51103":7.3,"51105":7.1,"51107":4.7,"51109":8.1,"51111":9.1,"51113":6.0,"51115":4.8,"51117":10.5,"51119":6.4,"51121":6.3,"51125":6.2,"51127":6.9,"51131":6.6,"51133":6.5,"51135":7.9,"51137":7.6,"51139":9.8,"51141":9.9,"51143":10.3,"51145":6.0,"51147":8.4,"51149":7.3,"51153":5.3,"51155":10.8,"51157":5.6,"51159":7.2,"51161":5.9,"51163":5.6,"51165":5.3,"51167":9.6,"51169":9.9,"51171":7.6,"51173":10.2,"51175":7.7,"51177":5.1,"51179":5.1,"51181":7.3,"51183":9.5,"51185":7.9,"51187":6.6,"51191":8.2,"51193":7.1,"51195":6.7,"51197":9.7,"51199":5.0,"51510":4.8,"51515":8.9,"51520":9.9,"51530":8.7,"51540":6.2,"51550":6.4,"51570":8.2,"51580":9.1,"51590":13.0,"51595":11.8,"51600":5.4,"51610":7.3,"51620":10.7,"51630":9.1,"51640":10.3,"51650":7.7,"51660":6.4,"51670":10.4,"51678":9.2,"51680":7.7,"51683":6.8,"51685":5.4,"51690":20.0,"51700":7.3,"51710":8.4,"51720":5.5,"51730":13.8,"51735":5.0,"51740":8.4,"51750":8.5,"51760":10.0,"51770":8.6,"51775":6.3,"51790":7.3,"51800":6.6,"51810":5.9,"51820":8.2,"51830":13.5,"51840":7.9,"53001":6.5,"53003":8.1,"53005":5.8,"53007":6.5,"53009":8.5,"53011":12.7,"53013":8.4,"53015":12.8,"53017":6.6,"53019":11.3,"53021":6.2,"53023":5.3,"53025":7.3,"53027":11.7,"53029":8.1,"53031":7.4,"53033":8.8,"53035":7.1,"53037":7.3,"53039":8.1,"53041":12.0,"53043":7.4,"53045":9.4,"53047":7.4,"53049":10.7,"53051":12.1,"53053":8.8,"53055":4.7,"53057":9.1,"53059":9.4,"53061":10.1,"53063":8.3,"53065":10.5,"53067":7.1,"53069":11.4,"53071":5.5,"53073":7.8,"53075":4.7,"53077":6.8,"54001":9.2,"54003":8.5,"54005":9.4,"54007":8.0,"54009":11.1,"54011":6.6,"54013":12.1,"54015":11.9,"54017":7.4,"54019":8.6,"54021":6.5,"54023":11.2,"54025":8.3,"54027":7.8,"54029":11.8,"54031":9.7,"54033":7.1,"54035":12.9,"54037":6.6,"54039":7.1,"54041":7.5,"54043":10.6,"54045":9.8,"54047":12.7,"54049":6.5,"54051":8.7,"54053":12.1,"54055":6.9,"54057":7.9,"54059":10.7,"54061":4.6,"54063":6.5,"54065":9.1,"54067":9.1,"54069":7.8,"54071":7.5,"54073":10.2,"54075":11.3,"54077":7.0,"54079":6.3,"54081":8.0,"54083":8.5,"54085":8.8,"54087":13.0,"54089":7.8,"54091":7.9,"54093":10.9,"54095":10.8,"54097":8.9,"54099":7.7,"54101":10.4,"54103":12.3,"54105":11.4,"54107":8.8,"54109":11.5,"55001":8.3,"55003":8.3,"55005":7.1,"55007":6.2,"55009":7.1,"55011":5.7,"55013":9.1,"55015":6.7,"55017":6.6,"55019":7.6,"55021":7.1,"55023":8.1,"55025":5.4,"55027":8.4,"55029":6.6,"55031":6.5,"55033":5.8,"55035":6.0,"55037":8.1,"55039":7.8,"55041":8.1,"55043":6.1,"55045":7.8,"55047":7.5,"55049":6.2,"55051":9.4,"55053":7.2,"55055":8.0,"55057":8.5,"55059":9.8,"55061":7.3,"55063":5.9,"55065":6.0,"55067":8.5,"55069":9.6,"55071":8.5,"55073":7.7,"55075":10.2,"55077":8.3,"55078":12.7,"55079":9.3,"55081":6.4,"55083":9.1,"55085":7.4,"55087":7.5,"55089":7.2,"55091":5.4,"55093":6.1,"55095":8.4,"55097":5.8,"55099":9.4,"55101":9.3,"55103":7.5,"55105":11.1,"55107":10.1,"55109":6.8,"55111":7.0,"55113":7.1,"55115":8.2,"55117":8.3,"55119":9.6,"55121":6.4,"55123":6.6,"55125":7.1,"55127":7.7,"55129":7.8,"55131":8.1,"55133":7.2,"55135":8.2,"55137":8.2,"55139":7.0,"55141":7.4,"56001":3.6,"56003":8.2,"56005":5.7,"56007":6.8,"56009":5.9,"56011":4.9,"56013":7.4,"56015":5.3,"56017":5.8,"56019":6.7,"56021":6.3,"56023":6.5,"56025":7.3,"56027":4.5,"56029":5.1,"56031":6.2,"56033":6.6,"56035":4.5,"56037":7.4,"56039":5.2,"56041":7.2,"56043":5.9,"56045":5.9,"72001":21.7,"72003":17.9,"72005":17.8,"72007":18.2,"72009":19.2,"72011":18.3,"72013":16.7,"72015":22.7,"72017":20.1,"72019":19.6,"72021":13.6,"72023":13.5,"72025":15.8,"72027":15.6,"72029":21.2,"72031":13.3,"72033":18.3,"72035":18.1,"72037":17.6,"72039":23.6,"72041":17.3,"72043":23.1,"72045":23.4,"72047":17.7,"72049":11.6,"72051":15.2,"72053":17.8,"72054":21.5,"72055":19.9,"72057":22.0,"72059":22.6,"72061":10.6,"72063":16.3,"72065":16.5,"72067":16.4,"72069":20.8,"72071":19.1,"72073":21.9,"72075":18.6,"72077":19.1,"72079":18.6,"72081":17.5,"72083":18.1,"72085":19.2,"72087":20.4,"72089":20.2,"72091":19.2,"72093":19.9,"72095":25.9,"72097":17.9,"72099":18.0,"72101":21.6,"72103":23.2,"72105":18.9,"72107":22.8,"72109":23.6,"72111":20.2,"72113":15.9,"72115":16.8,"72117":17.9,"72119":17.1,"72121":18.9,"72123":25.2,"72125":17.8,"72127":11.9,"72129":18.5,"72131":18.2,"72133":25.7,"72135":12.9,"72137":13.4,"72139":11.1,"72141":25.8,"72143":16.3,"72145":17.6,"72147":27.7,"72149":19.8,"72151":24.1,"72153":16.0}
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/examples/clock/clock.css b/static/vendor/d3-2.8.1/examples/clock/clock.css
new file mode 100755 (executable)
index 0000000..7c7abdd
--- /dev/null
@@ -0,0 +1,23 @@
+#clock {
+  position: relative;
+  background: #222;
+  width: 960px;
+  height: 700px;
+}
+
+#clock div {
+  position: absolute;
+  right: 4px;
+  bottom: 4px;
+  color: #ddd;
+  font: 10px sans-serif;
+}
+
+#clock a {
+  color: #fff;
+  font-weight: bold;
+}
+
+text {
+  font: bold 13px sans-serif;
+}
diff --git a/static/vendor/d3-2.8.1/examples/clock/clock.html b/static/vendor/d3-2.8.1/examples/clock/clock.html
new file mode 100755 (executable)
index 0000000..22e61af
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Polar Clock</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="clock.css"/>
+  </head>
+  <body>
+    <div id="clock">
+      <div>
+        Inspired by <a href="http://blog.pixelbreaker.com/polarclock/">pixelbreaker</a>.
+      </div>
+    </div>
+    <script type="text/javascript" src="clock.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/clock/clock.js b/static/vendor/d3-2.8.1/examples/clock/clock.js
new file mode 100755 (executable)
index 0000000..b3384ed
--- /dev/null
@@ -0,0 +1,87 @@
+// Based on http://vis.stanford.edu/protovis/ex/clock.html
+// Based on http://blog.pixelbreaker.com/polarclock
+
+var w = 960,
+    h = 700,
+    r = Math.min(w, h) / 1.8,
+    s = .09,
+    fsec = d3.time.format("%S s"),
+    fmin = d3.time.format("%M m"),
+    fhou = d3.time.format("%H h"),
+    fwee = d3.time.format("%a"),
+    fdat = d3.time.format("%d d"),
+    fmon = d3.time.format("%b");
+
+var fill = d3.scale.linear()
+    .range(["hsl(-180, 50%, 50%)", "hsl(180, 50%, 50%)"])
+    .interpolate(d3.interpolateHsl);
+
+var arc = d3.svg.arc()
+    .startAngle(0)
+    .endAngle(function(d) { return d.value * 2 * Math.PI; })
+    .innerRadius(function(d) { return d.index * r; })
+    .outerRadius(function(d) { return (d.index + s) * r; });
+
+var vis = d3.select("#clock").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+  .append("g")
+    .attr("transform", "translate(" + w / 2 + "," + h / 2 + ")");
+
+var g = vis.selectAll("g")
+    .data(fields)
+  .enter().append("g");
+
+g.append("path")
+    .style("fill", function(d) { return fill(d.value); })
+    .attr("d", arc);
+
+g.append("text")
+    .attr("text-anchor", "middle")
+    .attr("dy", "1em")
+    .text(function(d) { return d.text; });
+
+
+// Update arcs.
+d3.timer(function() {
+  var g = vis.selectAll("g")
+      .data(fields);
+
+  g.select("path")
+      .style("fill", function(d) { return fill(d.value); })
+      .attr("d", arc);
+
+  g.select("text")
+      .attr("dy", function(d) { return d.value < .5 ? "-.5em" : "1em"; })
+      .attr("transform", function(d) {
+        return "rotate(" + 360 * d.value + ")"
+            + "translate(0," + -(d.index + s / 2) * r + ")"
+            + "rotate(" + (d.value < .5 ? -90 : 90) + ")"
+      })
+      .text(function(d) { return d.text; });
+});
+
+// Generate the fields for the current date/time.
+function fields() {
+  var d = new Date;
+
+  function days() {
+    return 32 - new Date(d.getYear(), d.getMonth(), 32).getDate();
+  }
+
+  var second = (d.getSeconds() + d.getMilliseconds() / 1000) / 60,
+      minute = (d.getMinutes() + second) / 60,
+      hour = (d.getHours() + minute) / 24,
+      weekday = (d.getDay() + hour) / 7,
+      date = (d.getDate() - 1 + hour) / days(),
+      month = (d.getMonth() + date) / 12;
+
+  return [
+    {value: second,  index: .7, text: fsec(d)},
+    {value: minute,  index: .6, text: fmin(d)},
+    {value: hour,    index: .5, text: fhou(d)},
+    {value: weekday, index: .3, text: fwee(d)},
+    {value: date,    index: .2, text: fdat(d)},
+    {value: month,   index: .1, text: fmon(d)},
+  ];
+}
diff --git a/static/vendor/d3-2.8.1/examples/cluster/cluster-radial.html b/static/vendor/d3-2.8.1/examples/cluster/cluster-radial.html
new file mode 100755 (executable)
index 0000000..025c3f6
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Flare Dendrogram</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="cluster.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="cluster-radial.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/cluster/cluster-radial.js b/static/vendor/d3-2.8.1/examples/cluster/cluster-radial.js
new file mode 100755 (executable)
index 0000000..f29da68
--- /dev/null
@@ -0,0 +1,39 @@
+var r = 960 / 2;
+
+var cluster = d3.layout.cluster()
+    .size([360, r - 120]);
+
+var diagonal = d3.svg.diagonal.radial()
+    .projection(function(d) { return [d.y, d.x / 180 * Math.PI]; });
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", r * 2)
+    .attr("height", r * 2)
+  .append("g")
+    .attr("transform", "translate(" + r + "," + r + ")");
+
+d3.json("../data/flare.json", function(json) {
+  var nodes = cluster.nodes(json);
+
+  var link = vis.selectAll("path.link")
+      .data(cluster.links(nodes))
+    .enter().append("path")
+      .attr("class", "link")
+      .attr("d", diagonal);
+
+  var node = vis.selectAll("g.node")
+      .data(nodes)
+    .enter().append("g")
+      .attr("class", "node")
+      .attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")"; })
+
+  node.append("circle")
+      .attr("r", 4.5);
+
+  node.append("text")
+      .attr("dx", function(d) { return d.x < 180 ? 8 : -8; })
+      .attr("dy", ".31em")
+      .attr("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; })
+      .attr("transform", function(d) { return d.x < 180 ? null : "rotate(180)"; })
+      .text(function(d) { return d.name; });
+});
diff --git a/static/vendor/d3-2.8.1/examples/cluster/cluster.css b/static/vendor/d3-2.8.1/examples/cluster/cluster.css
new file mode 100755 (executable)
index 0000000..5e8c974
--- /dev/null
@@ -0,0 +1,15 @@
+.node circle {
+  fill: #fff;
+  stroke: steelblue;
+  stroke-width: 1.5px;
+}
+
+.node {
+  font: 10px sans-serif;
+}
+
+.link {
+  fill: none;
+  stroke: #ccc;
+  stroke-width: 1.5px;
+}
diff --git a/static/vendor/d3-2.8.1/examples/cluster/cluster.html b/static/vendor/d3-2.8.1/examples/cluster/cluster.html
new file mode 100755 (executable)
index 0000000..090237f
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Flare Dendrogram</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="cluster.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="cluster.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/cluster/cluster.js b/static/vendor/d3-2.8.1/examples/cluster/cluster.js
new file mode 100755 (executable)
index 0000000..f537bef
--- /dev/null
@@ -0,0 +1,39 @@
+var w = 960,
+    h = 2200;
+
+var cluster = d3.layout.cluster()
+    .size([h, w - 160]);
+
+var diagonal = d3.svg.diagonal()
+    .projection(function(d) { return [d.y, d.x]; });
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+  .append("g")
+    .attr("transform", "translate(40, 0)");
+
+d3.json("../data/flare.json", function(json) {
+  var nodes = cluster.nodes(json);
+
+  var link = vis.selectAll("path.link")
+      .data(cluster.links(nodes))
+    .enter().append("path")
+      .attr("class", "link")
+      .attr("d", diagonal);
+
+  var node = vis.selectAll("g.node")
+      .data(nodes)
+    .enter().append("g")
+      .attr("class", "node")
+      .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })
+
+  node.append("circle")
+      .attr("r", 4.5);
+
+  node.append("text")
+      .attr("dx", function(d) { return d.children ? -8 : 8; })
+      .attr("dy", 3)
+      .attr("text-anchor", function(d) { return d.children ? "end" : "start"; })
+      .text(function(d) { return d.name; });
+});
diff --git a/static/vendor/d3-2.8.1/examples/contour/contour.html b/static/vendor/d3-2.8.1/examples/contour/contour.html
new file mode 100755 (executable)
index 0000000..5c8f94a
--- /dev/null
@@ -0,0 +1,107 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Contour</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+svg {
+  border: solid 1px #aaa;
+}
+path {
+  stroke: red;
+  stroke-width: 2px;
+  fill: none;
+}
+rect {
+  fill: lightsteelblue;
+  stroke: #eee;
+  stroke-width: 2px;
+}
+rect.d1 {
+  fill: steelblue;
+}
+rect.d2 {
+  fill: darkblue;
+}
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+function grid0(x,y) {
+  if (x < 0 || y < 0 || x >= dw || y >= dh) return 0;
+  return data[y][x];
+}
+function grid1(x,y) {
+  if (x < 0 || y < 0 || x >= dw || y >= dh) return 0;
+  return data[y][x]==1;
+}
+function grid2(x,y) {
+  if (x < 0 || y < 0 || x >= dw || y >= dh) return 0;
+  return data[y][x]==2;
+}
+
+var data = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+            [0, 0, 0, 2, 2, 2, 0, 0, 0, 0],
+            [0, 0, 0, 2, 2, 2, 2, 0, 0, 0],
+            [0, 0, 2, 2, 2, 2, 2, 2, 0, 0],
+            [0, 0, 2, 2, 2, 2, 2, 2, 2, 0],
+            [0, 0, 2, 1, 0, 0, 2, 2, 2, 0],
+            [0, 0, 1, 1, 0, 0, 2, 2, 2, 0],
+            [0, 0, 0, 0, 1, 1, 2, 2, 0, 0],
+            [0, 0, 0, 0, 1, 2, 2, 2, 0, 0],
+            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]],
+    fn = [grid0, grid1, grid2],
+    dw = data[0].length,
+    dh = data.length;
+    sz = 30,
+    grid = grid0;
+
+function translateY(d, i) { return "translate(0,"+(i*sz)+")"; }
+function translateX(d, i) { return "translate("+(i*sz)+",0)"; }
+function scale(p) { return [p[0]*sz, p[1]*sz]; }
+
+var svg = d3.select("body")
+ .append("svg")
+  .attr("width", dw*sz)
+  .attr("height", dh*sz);
+
+var g = svg.selectAll("g")
+  .data(data)
+ .enter().append("g")
+  .attr("transform", translateY);
+
+g.selectAll("rect")
+  .data(function(d) { return d; })
+ .enter().append("rect")
+  .attr("transform", translateX)
+  .attr("width", sz)
+  .attr("height", sz)
+  .attr("class", function(d) { return "d"+d; })
+  .on("mouseover", mouseover);
+
+contour(grid);
+
+function contour(grid, start) {
+  svg.selectAll("path")
+    .data([d3.geom.contour(grid, start).map(scale)])
+    .attr("d", function(d) { return "M" + d.join("L") + "Z"; })
+   .enter().append("path")
+    .attr("d", function(d) { return "M" + d.join("L") + "Z"; });
+}
+
+function mouseover(d,i) {
+  var s = undefined;
+  grid = fn[d];
+  if (d > 0) {
+       // map mouse to grid coords, then find left edge
+    var p = d3.mouse(svg[0][0]);
+    s = [Math.floor(p[0]/sz), Math.floor(p[1]/sz)];
+    while (grid(s[0]-1,s[1])) s[0]--;
+  }
+  contour(grid, s);
+}
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/crimea/crimea-stacked-area.html b/static/vendor/d3-2.8.1/examples/crimea/crimea-stacked-area.html
new file mode 100755 (executable)
index 0000000..436b044
--- /dev/null
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Crimean War</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  width: 960px;
+  height: 500px;
+  font: 10px sans-serif;
+}
+
+.rule {
+  shape-rendering: crispEdges;
+}
+
+path.line {
+  fill: none;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var p = [20, 50, 30, 20],
+    w = 960 - p[1] - p[3],
+    h = 500 - p[0] - p[2],
+    x = d3.time.scale().range([0, w]),
+    y = d3.scale.linear().range([h, 0]),
+    z = d3.scale.ordinal().range(["lightpink", "darkgray", "lightblue"]),
+    parse = d3.time.format("%m/%Y").parse,
+    format = d3.time.format("%b");
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+  .append("g")
+    .attr("transform", "translate(" + p[3] + "," + p[0] + ")");
+
+d3.csv("crimea.csv", function(crimea) {
+
+  // Transpose the data into layers by cause.
+  var causes = d3.layout.stack()(["wounds", "other", "disease"].map(function(cause) {
+    return crimea.map(function(d) {
+      return {x: parse(d.date), y: +d[cause]};
+    });
+  }));
+
+  // Compute the x-domain (by date) and y-domain (by top).
+  x.domain([causes[0][0].x, causes[0][causes[0].length - 1].x]);
+  y.domain([0, d3.max(causes[causes.length - 1], function(d) { return d.y0 + d.y; })]);
+
+  // Add an area for each cause.
+  svg.selectAll("path.area")
+      .data(causes)
+    .enter().append("path")
+      .attr("class", "area")
+      .style("fill", function(d, i) { return z(i); })
+      .attr("d", d3.svg.area()
+      .x(function(d) { return x(d.x); })
+      .y0(function(d) { return y(d.y0); })
+      .y1(function(d) { return y(d.y0 + d.y); }));
+
+  // Add a line for each cause.
+  svg.selectAll("path.line")
+      .data(causes)
+    .enter().append("path")
+      .attr("class", "line")
+      .style("stroke", function(d, i) { return d3.rgb(z(i)).darker(); })
+      .attr("d", d3.svg.line()
+      .x(function(d) { return x(d.x); })
+      .y(function(d) { return y(d.y0 + d.y); }));
+
+  // Add a label per date.
+  svg.selectAll("text")
+      .data(x.ticks(12))
+    .enter().append("text")
+      .attr("x", x)
+      .attr("y", h + 6)
+      .attr("text-anchor", "middle")
+      .attr("dy", ".71em")
+      .text(x.tickFormat(12));
+
+  // Add y-axis rules.
+  var rule = svg.selectAll("g.rule")
+      .data(y.ticks(5))
+    .enter().append("g")
+      .attr("class", "rule")
+      .attr("transform", function(d) { return "translate(0," + y(d) + ")"; });
+
+  rule.append("line")
+      .attr("x2", w)
+      .style("stroke", function(d) { return d ? "#fff" : "#000"; })
+      .style("stroke-opacity", function(d) { return d ? .7 : null; });
+
+  rule.append("text")
+      .attr("x", w + 6)
+      .attr("dy", ".35em")
+      .text(d3.format(",d"));
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/crimea/crimea-stacked-bar.html b/static/vendor/d3-2.8.1/examples/crimea/crimea-stacked-bar.html
new file mode 100755 (executable)
index 0000000..f9bb7c7
--- /dev/null
@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Crimean War</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  width: 960px;
+  height: 500px;
+  font: 10px sans-serif;
+  shape-rendering: crispEdges;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var p = [20, 50, 30, 20],
+    w = 960 - p[1] - p[3],
+    h = 500 - p[0] - p[2],
+    x = d3.scale.ordinal().rangeRoundBands([0, w]),
+    y = d3.scale.linear().range([0, h]),
+    z = d3.scale.ordinal().range(["lightpink", "darkgray", "lightblue"]),
+    parse = d3.time.format("%m/%Y").parse,
+    format = d3.time.format("%b");
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+  .append("g")
+    .attr("transform", "translate(" + p[3] + "," + (h + p[0]) + ")");
+
+d3.csv("crimea.csv", function(crimea) {
+
+  // Transpose the data into layers by cause.
+  var causes = d3.layout.stack()(["wounds", "other", "disease"].map(function(cause) {
+    return crimea.map(function(d) {
+      return {x: parse(d.date), y: +d[cause]};
+    });
+  }));
+
+  // Compute the x-domain (by date) and y-domain (by top).
+  x.domain(causes[0].map(function(d) { return d.x; }));
+  y.domain([0, d3.max(causes[causes.length - 1], function(d) { return d.y0 + d.y; })]);
+
+  // Add a group for each cause.
+  var cause = svg.selectAll("g.cause")
+      .data(causes)
+    .enter().append("g")
+      .attr("class", "cause")
+      .style("fill", function(d, i) { return z(i); })
+      .style("stroke", function(d, i) { return d3.rgb(z(i)).darker(); });
+
+  // Add a rect for each date.
+  var rect = cause.selectAll("rect")
+      .data(Object)
+    .enter().append("rect")
+      .attr("x", function(d) { return x(d.x); })
+      .attr("y", function(d) { return -y(d.y0) - y(d.y); })
+      .attr("height", function(d) { return y(d.y); })
+      .attr("width", x.rangeBand());
+
+  // Add a label per date.
+  var label = svg.selectAll("text")
+      .data(x.domain())
+    .enter().append("text")
+      .attr("x", function(d) { return x(d) + x.rangeBand() / 2; })
+      .attr("y", 6)
+      .attr("text-anchor", "middle")
+      .attr("dy", ".71em")
+      .text(format);
+
+  // Add y-axis rules.
+  var rule = svg.selectAll("g.rule")
+      .data(y.ticks(5))
+    .enter().append("g")
+      .attr("class", "rule")
+      .attr("transform", function(d) { return "translate(0," + -y(d) + ")"; });
+
+  rule.append("line")
+      .attr("x2", w)
+      .style("stroke", function(d) { return d ? "#fff" : "#000"; })
+      .style("stroke-opacity", function(d) { return d ? .7 : null; });
+
+  rule.append("text")
+      .attr("x", w + 6)
+      .attr("dy", ".35em")
+      .text(d3.format(",d"));
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/crimea/crimea.csv b/static/vendor/d3-2.8.1/examples/crimea/crimea.csv
new file mode 100755 (executable)
index 0000000..5cbc53d
--- /dev/null
@@ -0,0 +1,24 @@
+date,wounds,other,disease
+5/1854,0,95,105
+6/1854,0,40,95
+7/1854,0,140,520
+8/1854,20,150,800
+9/1854,220,230,740
+10/1854,305,310,600
+11/1854,480,290,820
+12/1854,295,310,1100
+1/1855,230,460,1440
+2/1855,180,520,1270
+3/1855,155,350,935
+4/1855,195,195,560
+5/1855,180,155,550
+6/1855,330,130,650
+7/1855,260,130,430
+8/1855,290,110,490
+9/1855,355,100,290
+10/1855,135,95,245
+11/1855,100,140,325
+12/1855,40,120,215
+1/1856,0,160,160
+2/1856,0,100,100
+3/1856,0,125,90
diff --git a/static/vendor/d3-2.8.1/examples/custom/custom.html b/static/vendor/d3-2.8.1/examples/custom/custom.html
new file mode 100755 (executable)
index 0000000..d08dcdc
--- /dev/null
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Custom Elements</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  margin: 0;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+// Register the "custom" namespace prefix for our custom elements.
+d3.ns.prefix.custom = "http://github.com/mbostock/d3/examples/dom";
+
+var w = 960,
+    h = 500;
+
+// Add our "custom" sketch element to the body.
+var sketch = d3.select("body").append("custom:sketch")
+    .attr("width", w)
+    .attr("height", h)
+    .call(custom);
+
+// On each mouse move, create a circle that increases in size and fades away.
+d3.select(window).on("mousemove", function() {
+  sketch.append("custom:circle")
+      .attr("x", d3.event.clientX)
+      .attr("y", d3.event.clientY)
+      .attr("radius", 0)
+      .attr("strokeStyle", "red")
+    .transition()
+      .duration(2000)
+      .ease(Math.sqrt)
+      .attr("radius", 200)
+      .attr("strokeStyle", "white")
+      .remove();
+});
+
+function custom(selection) {
+  selection.each(function() {
+    var root = this,
+        canvas = root.parentNode.appendChild(document.createElement("canvas")),
+        context = canvas.getContext("2d");
+
+    canvas.style.position = "absolute";
+    canvas.style.top = root.offsetTop + "px";
+    canvas.style.left = root.offsetLeft + "px";
+
+    // It'd be nice to use DOM Mutation Events here instead.
+    // However, they appear to arrive irregularly, causing choppy animation.
+    d3.timer(redraw);
+
+    // Clear the canvas and then iterate over child elements.
+    function redraw() {
+      canvas.width = root.getAttribute("width");
+      canvas.height = root.getAttribute("height");
+      for (var child = root.firstChild; child; child = child.nextSibling) draw(child);
+    }
+
+    // For now we only support circles with strokeStyle.
+    // But you should imagine extending this to arbitrary shapes and groups!
+    function draw(element) {
+      switch (element.tagName) {
+        case "circle": {
+          context.strokeStyle = element.getAttribute("strokeStyle");
+          context.beginPath();
+          context.arc(element.getAttribute("x"), element.getAttribute("y"), element.getAttribute("radius"), 0, 2 * Math.PI);
+          context.stroke();
+          break;
+        }
+      }
+    }
+  });
+};
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/data/README.md b/static/vendor/d3-2.8.1/examples/data/README.md
new file mode 100755 (executable)
index 0000000..751376e
--- /dev/null
@@ -0,0 +1,13 @@
+## World Boundaries
+
+These are derived from the public domain [Natural Earth](http://www.naturalearthdata.com/downloads/) cultural vector files, 110m resolution. Then, ogr2ogr was used to convert to GeoJSON. Lastly, the data was cleaned up slightly, removing extra properties and a degenerate edge from Antarctica.
+
+ collection.features.forEach(function(d, i) {
+   d.id = d.properties.ISO_A3;
+   d.properties = {name: d.properties.SOVEREIGNT};
+ });
+
+## United States Boundaries
+
+These are derived from the cartographic boundary files from the 2000 [U.S. Census](http://www.census.gov/geo/www/cob/bdy_files.html
+). Then, MapShaper was used to simplify the geometry, and ogr2ogr to convert the shapefiles to GeoJSON. Some additional work was done to preserve the FIPS codes, which are dropped from the shapefiles by MapShaper.
diff --git a/static/vendor/d3-2.8.1/examples/data/faithful.json b/static/vendor/d3-2.8.1/examples/data/faithful.json
new file mode 100755 (executable)
index 0000000..f801c91
--- /dev/null
@@ -0,0 +1,8 @@
+[
+  79, 54, 74, 62, 85, 55, 88, 85, 51, 85, 54, 84, 78, 47, 83, 52, 62, 84, 52, 79, 51, 47, 78, 69, 74, 83, 55, 76, 78, 79, 73, 77, 66, 80, 74, 52, 48, 80, 59, 90, 80, 58, 84, 58, 73, 83, 64, 53,
+  82, 59, 75, 90, 54, 80, 54, 83, 71, 64, 77, 81, 59, 84, 48, 82, 60, 92, 78, 78, 65, 73, 82, 56, 79, 71, 62, 76, 60, 78, 76, 83, 75, 82, 70, 65, 73, 88, 76, 80, 48, 86, 60, 90, 50, 78, 63, 72,
+  84, 75, 51, 82, 62, 88, 49, 83, 81, 47, 84, 52, 86, 81, 75, 59, 89, 79, 59, 81, 50, 85, 59, 87, 53, 69, 77, 56, 88, 81, 45, 82, 55, 90, 45, 83, 56, 89, 46, 82, 51, 86, 53, 79, 81, 60, 82, 77,
+  76, 59, 80, 49, 96, 53, 77, 77, 65, 81, 71, 70, 81, 93, 53, 89, 45, 86, 58, 78, 66, 76, 63, 88, 52, 93, 49, 57, 77, 68, 81, 81, 73, 50, 85, 74, 55, 77, 83, 83, 51, 78, 84, 46, 83, 55, 81, 57,
+  76, 84, 77, 81, 87, 77, 51, 78, 60, 82, 91, 53, 78, 46, 77, 84, 49, 83, 71, 80, 49, 75, 64, 76, 53, 94, 55, 76, 50, 82, 54, 75, 78, 79, 78, 78, 70, 79, 70, 54, 86, 50, 90, 54, 54, 77, 79, 64,
+  75, 47, 86, 63, 85, 82, 57, 82, 67, 74, 54, 83, 73, 73, 88, 80, 71, 83, 56, 79, 78, 84, 58, 83, 43, 60, 75, 81, 46, 90, 46, 74
+]
diff --git a/static/vendor/d3-2.8.1/examples/data/flare-imports.json b/static/vendor/d3-2.8.1/examples/data/flare-imports.json
new file mode 100755 (executable)
index 0000000..7b3997f
--- /dev/null
@@ -0,0 +1,222 @@
+[
+{"name":"flare.analytics.cluster.AgglomerativeCluster","size":3938,"imports":["flare.animate.Transitioner","flare.vis.data.DataList","flare.util.math.IMatrix","flare.analytics.cluster.MergeEdge","flare.analytics.cluster.HierarchicalCluster","flare.vis.data.Data"]},
+{"name":"flare.analytics.cluster.CommunityStructure","size":3812,"imports":["flare.analytics.cluster.HierarchicalCluster","flare.animate.Transitioner","flare.vis.data.DataList","flare.analytics.cluster.MergeEdge","flare.util.math.IMatrix"]},
+{"name":"flare.analytics.cluster.HierarchicalCluster","size":6714,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.vis.data.Tree","flare.util.Arrays","flare.analytics.cluster.MergeEdge","flare.util.Sort","flare.vis.operator.Operator","flare.util.Property","flare.vis.data.Data"]},
+{"name":"flare.analytics.cluster.MergeEdge","size":743,"imports":[]},
+{"name":"flare.analytics.graph.BetweennessCentrality","size":3534,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.util.Arrays","flare.vis.data.Data","flare.util.Property","flare.vis.operator.Operator"]},
+{"name":"flare.analytics.graph.LinkDistance","size":5731,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.EdgeSprite","flare.analytics.graph.ShortestPaths","flare.vis.data.Data","flare.util.Property","flare.vis.operator.Operator"]},
+{"name":"flare.analytics.graph.MaxFlowMinCut","size":7840,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.EdgeSprite","flare.vis.data.Data","flare.util.Property","flare.vis.operator.Operator"]},
+{"name":"flare.analytics.graph.ShortestPaths","size":5914,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.animate.Transitioner","flare.vis.operator.Operator","flare.util.heap.HeapNode","flare.util.heap.FibonacciHeap","flare.util.Property","flare.vis.data.Data"]},
+{"name":"flare.analytics.graph.SpanningTree","size":3416,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.operator.IOperator","flare.vis.Visualization","flare.vis.data.TreeBuilder","flare.vis.operator.Operator"]},
+{"name":"flare.analytics.optimization.AspectRatioBanker","size":7074,"imports":["flare.animate.Transitioner","flare.util.Arrays","flare.vis.data.DataSprite","flare.scale.Scale","flare.vis.axis.CartesianAxes","flare.vis.Visualization","flare.util.Property","flare.vis.operator.Operator"]},
+{"name":"flare.animate.Easing","size":17010,"imports":["flare.animate.Transition"]},
+{"name":"flare.animate.FunctionSequence","size":5842,"imports":["flare.util.Maths","flare.animate.Transition","flare.util.Arrays","flare.animate.Sequence","flare.animate.Transitioner"]},
+{"name":"flare.animate.interpolate.ArrayInterpolator","size":1983,"imports":["flare.util.Arrays","flare.animate.interpolate.Interpolator"]},
+{"name":"flare.animate.interpolate.ColorInterpolator","size":2047,"imports":["flare.animate.interpolate.Interpolator"]},
+{"name":"flare.animate.interpolate.DateInterpolator","size":1375,"imports":["flare.animate.interpolate.Interpolator"]},
+{"name":"flare.animate.interpolate.Interpolator","size":8746,"imports":["flare.animate.interpolate.NumberInterpolator","flare.animate.interpolate.ColorInterpolator","flare.animate.interpolate.PointInterpolator","flare.animate.interpolate.ObjectInterpolator","flare.animate.interpolate.MatrixInterpolator","flare.animate.interpolate.RectangleInterpolator","flare.animate.interpolate.DateInterpolator","flare.util.Property","flare.animate.interpolate.ArrayInterpolator"]},
+{"name":"flare.animate.interpolate.MatrixInterpolator","size":2202,"imports":["flare.animate.interpolate.Interpolator"]},
+{"name":"flare.animate.interpolate.NumberInterpolator","size":1382,"imports":["flare.animate.interpolate.Interpolator"]},
+{"name":"flare.animate.interpolate.ObjectInterpolator","size":1629,"imports":["flare.animate.interpolate.Interpolator"]},
+{"name":"flare.animate.interpolate.PointInterpolator","size":1675,"imports":["flare.animate.interpolate.Interpolator"]},
+{"name":"flare.animate.interpolate.RectangleInterpolator","size":2042,"imports":["flare.animate.interpolate.Interpolator"]},
+{"name":"flare.animate.ISchedulable","size":1041,"imports":["flare.animate.Scheduler"]},
+{"name":"flare.animate.Parallel","size":5176,"imports":["flare.animate.Easing","flare.animate.Transition","flare.util.Arrays"]},
+{"name":"flare.animate.Pause","size":449,"imports":["flare.animate.Transition"]},
+{"name":"flare.animate.Scheduler","size":5593,"imports":["flare.animate.ISchedulable","flare.animate.Pause","flare.animate.Transition"]},
+{"name":"flare.animate.Sequence","size":5534,"imports":["flare.animate.Easing","flare.util.Maths","flare.animate.Transition","flare.util.Arrays"]},
+{"name":"flare.animate.Transition","size":9201,"imports":["flare.animate.Transitioner","flare.animate.TransitionEvent","flare.animate.Scheduler","flare.animate.Pause","flare.animate.Parallel","flare.animate.Easing","flare.animate.Sequence","flare.animate.ISchedulable","flare.util.Maths","flare.animate.Tween"]},
+{"name":"flare.animate.Transitioner","size":19975,"imports":["flare.util.IValueProxy","flare.animate.Parallel","flare.animate.Easing","flare.animate.Sequence","flare.animate.Transition","flare.animate.Tween","flare.util.Property"]},
+{"name":"flare.animate.TransitionEvent","size":1116,"imports":["flare.animate.Transition"]},
+{"name":"flare.animate.Tween","size":6006,"imports":["flare.animate.Transitioner","flare.animate.Transition","flare.animate.interpolate.Interpolator","flare.util.Property"]},
+{"name":"flare.data.converters.Converters","size":721,"imports":["flare.data.converters.IDataConverter","flare.data.converters.GraphMLConverter","flare.data.converters.JSONConverter","flare.data.converters.DelimitedTextConverter"]},
+{"name":"flare.data.converters.DelimitedTextConverter","size":4294,"imports":["flare.data.DataSet","flare.data.DataUtil","flare.data.DataTable","flare.data.converters.IDataConverter","flare.data.DataSchema","flare.data.DataField"]},
+{"name":"flare.data.converters.GraphMLConverter","size":9800,"imports":["flare.data.DataSet","flare.data.DataUtil","flare.data.DataTable","flare.data.converters.IDataConverter","flare.data.DataSchema","flare.data.DataField"]},
+{"name":"flare.data.converters.IDataConverter","size":1314,"imports":["flare.data.DataSet","flare.data.DataSchema"]},
+{"name":"flare.data.converters.JSONConverter","size":2220,"imports":["flare.data.DataSet","flare.data.DataUtil","flare.data.DataTable","flare.data.converters.IDataConverter","flare.data.DataSchema","flare.data.DataField","flare.util.Property"]},
+{"name":"flare.data.DataField","size":1759,"imports":["flare.data.DataUtil"]},
+{"name":"flare.data.DataSchema","size":2165,"imports":["flare.data.DataField","flare.util.Arrays"]},
+{"name":"flare.data.DataSet","size":586,"imports":["flare.data.DataTable"]},
+{"name":"flare.data.DataSource","size":3331,"imports":["flare.data.converters.IDataConverter","flare.data.converters.Converters","flare.data.DataSchema"]},
+{"name":"flare.data.DataTable","size":772,"imports":["flare.data.DataSchema"]},
+{"name":"flare.data.DataUtil","size":3322,"imports":["flare.data.DataField","flare.data.DataSchema"]},
+{"name":"flare.display.DirtySprite","size":8833,"imports":[]},
+{"name":"flare.display.LineSprite","size":1732,"imports":["flare.display.DirtySprite"]},
+{"name":"flare.display.RectSprite","size":3623,"imports":["flare.util.Colors","flare.display.DirtySprite"]},
+{"name":"flare.display.TextSprite","size":10066,"imports":["flare.display.DirtySprite"]},
+{"name":"flare.flex.FlareVis","size":4116,"imports":["flare.display.DirtySprite","flare.data.DataSet","flare.vis.Visualization","flare.vis.axis.CartesianAxes","flare.vis.axis.Axes","flare.vis.data.Data"]},
+{"name":"flare.physics.DragForce","size":1082,"imports":["flare.physics.Simulation","flare.physics.Particle","flare.physics.IForce"]},
+{"name":"flare.physics.GravityForce","size":1336,"imports":["flare.physics.Simulation","flare.physics.Particle","flare.physics.IForce"]},
+{"name":"flare.physics.IForce","size":319,"imports":["flare.physics.Simulation"]},
+{"name":"flare.physics.NBodyForce","size":10498,"imports":["flare.physics.Simulation","flare.physics.Particle","flare.physics.IForce"]},
+{"name":"flare.physics.Particle","size":2822,"imports":[]},
+{"name":"flare.physics.Simulation","size":9983,"imports":["flare.physics.Particle","flare.physics.NBodyForce","flare.physics.DragForce","flare.physics.GravityForce","flare.physics.Spring","flare.physics.SpringForce","flare.physics.IForce"]},
+{"name":"flare.physics.Spring","size":2213,"imports":["flare.physics.Particle"]},
+{"name":"flare.physics.SpringForce","size":1681,"imports":["flare.physics.Simulation","flare.physics.Particle","flare.physics.Spring","flare.physics.IForce"]},
+{"name":"flare.query.AggregateExpression","size":1616,"imports":["flare.query.Expression"]},
+{"name":"flare.query.And","size":1027,"imports":["flare.query.CompositeExpression","flare.query.Expression"]},
+{"name":"flare.query.Arithmetic","size":3891,"imports":["flare.query.BinaryExpression","flare.query.Expression"]},
+{"name":"flare.query.Average","size":891,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
+{"name":"flare.query.BinaryExpression","size":2893,"imports":["flare.query.Expression"]},
+{"name":"flare.query.Comparison","size":5103,"imports":["flare.query.Not","flare.query.BinaryExpression","flare.query.Expression","flare.query.Or"]},
+{"name":"flare.query.CompositeExpression","size":3677,"imports":["flare.query.Expression","flare.query.If"]},
+{"name":"flare.query.Count","size":781,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
+{"name":"flare.query.DateUtil","size":4141,"imports":["flare.query.Fn"]},
+{"name":"flare.query.Distinct","size":933,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
+{"name":"flare.query.Expression","size":5130,"imports":["flare.query.Variable","flare.query.IsA","flare.query.ExpressionIterator","flare.util.IPredicate","flare.query.Literal","flare.util.IEvaluable","flare.query.If"]},
+{"name":"flare.query.ExpressionIterator","size":3617,"imports":["flare.query.Expression"]},
+{"name":"flare.query.Fn","size":3240,"imports":["flare.query.DateUtil","flare.query.CompositeExpression","flare.query.Expression","flare.query.StringUtil"]},
+{"name":"flare.query.If","size":2732,"imports":["flare.query.Expression"]},
+{"name":"flare.query.IsA","size":2039,"imports":["flare.query.Expression","flare.query.If"]},
+{"name":"flare.query.Literal","size":1214,"imports":["flare.query.Expression"]},
+{"name":"flare.query.Match","size":3748,"imports":["flare.query.BinaryExpression","flare.query.Expression","flare.query.StringUtil"]},
+{"name":"flare.query.Maximum","size":843,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
+{"name":"flare.query.methods.add","size":593,"imports":["flare.query.methods.or","flare.query.Arithmetic"]},
+{"name":"flare.query.methods.and","size":330,"imports":["flare.query.And","flare.query.methods.or"]},
+{"name":"flare.query.methods.average","size":287,"imports":["flare.query.Average","flare.query.methods.or"]},
+{"name":"flare.query.methods.count","size":277,"imports":["flare.query.Count","flare.query.methods.or"]},
+{"name":"flare.query.methods.distinct","size":292,"imports":["flare.query.Distinct","flare.query.methods.or"]},
+{"name":"flare.query.methods.div","size":595,"imports":["flare.query.methods.or","flare.query.Arithmetic"]},
+{"name":"flare.query.methods.eq","size":594,"imports":["flare.query.Comparison","flare.query.methods.or"]},
+{"name":"flare.query.methods.fn","size":460,"imports":["flare.query.methods.or","flare.query.Fn"]},
+{"name":"flare.query.methods.gt","size":603,"imports":["flare.query.Comparison","flare.query.methods.or"]},
+{"name":"flare.query.methods.gte","size":625,"imports":["flare.query.Comparison","flare.query.methods.gt","flare.query.methods.eq","flare.query.methods.or"]},
+{"name":"flare.query.methods.iff","size":748,"imports":["flare.query.methods.or","flare.query.If"]},
+{"name":"flare.query.methods.isa","size":461,"imports":["flare.query.IsA","flare.query.methods.or"]},
+{"name":"flare.query.methods.lt","size":597,"imports":["flare.query.Comparison","flare.query.methods.or"]},
+{"name":"flare.query.methods.lte","size":619,"imports":["flare.query.Comparison","flare.query.methods.lt","flare.query.methods.eq","flare.query.methods.or"]},
+{"name":"flare.query.methods.max","size":283,"imports":["flare.query.Maximum","flare.query.methods.or"]},
+{"name":"flare.query.methods.min","size":283,"imports":["flare.query.Minimum","flare.query.methods.or"]},
+{"name":"flare.query.methods.mod","size":591,"imports":["flare.query.methods.or","flare.query.Arithmetic"]},
+{"name":"flare.query.methods.mul","size":603,"imports":["flare.query.methods.lt","flare.query.methods.or","flare.query.Arithmetic"]},
+{"name":"flare.query.methods.neq","size":599,"imports":["flare.query.Comparison","flare.query.methods.eq","flare.query.methods.or"]},
+{"name":"flare.query.methods.not","size":386,"imports":["flare.query.Not","flare.query.methods.or"]},
+{"name":"flare.query.methods.or","size":323,"imports":["flare.query.Or"]},
+{"name":"flare.query.methods.orderby","size":307,"imports":["flare.query.Query","flare.query.methods.or"]},
+{"name":"flare.query.methods.range","size":772,"imports":["flare.query.methods.max","flare.query.Range","flare.query.methods.or","flare.query.methods.min"]},
+{"name":"flare.query.methods.select","size":296,"imports":["flare.query.Query"]},
+{"name":"flare.query.methods.stddev","size":363,"imports":["flare.query.methods.and","flare.query.Variance","flare.query.methods.or"]},
+{"name":"flare.query.methods.sub","size":600,"imports":["flare.query.methods.or","flare.query.Arithmetic"]},
+{"name":"flare.query.methods.sum","size":280,"imports":["flare.query.Sum","flare.query.methods.or"]},
+{"name":"flare.query.methods.update","size":307,"imports":["flare.query.Query"]},
+{"name":"flare.query.methods.variance","size":335,"imports":["flare.query.Variance","flare.query.methods.or"]},
+{"name":"flare.query.methods.where","size":299,"imports":["flare.query.Query","flare.query.methods.lt","flare.query.methods.lte"]},
+{"name":"flare.query.methods.xor","size":354,"imports":["flare.query.Xor","flare.query.methods.or"]},
+{"name":"flare.query.methods._","size":264,"imports":["flare.query.Literal","flare.query.methods.or"]},
+{"name":"flare.query.Minimum","size":843,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
+{"name":"flare.query.Not","size":1554,"imports":["flare.query.Expression"]},
+{"name":"flare.query.Or","size":970,"imports":["flare.query.CompositeExpression","flare.query.Expression"]},
+{"name":"flare.query.Query","size":13896,"imports":["flare.query.Variable","flare.query.Sum","flare.query.Expression","flare.util.Sort","flare.query.Not","flare.query.AggregateExpression","flare.query.Literal","flare.util.Filter","flare.util.Property","flare.query.If"]},
+{"name":"flare.query.Range","size":1594,"imports":["flare.query.And","flare.query.Comparison","flare.query.Expression"]},
+{"name":"flare.query.StringUtil","size":4130,"imports":["flare.query.Fn"]},
+{"name":"flare.query.Sum","size":791,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
+{"name":"flare.query.Variable","size":1124,"imports":["flare.query.Expression","flare.util.Property"]},
+{"name":"flare.query.Variance","size":1876,"imports":["flare.query.Expression","flare.query.AggregateExpression"]},
+{"name":"flare.query.Xor","size":1101,"imports":["flare.query.CompositeExpression","flare.query.Expression"]},
+{"name":"flare.scale.IScaleMap","size":2105,"imports":["flare.scale.Scale"]},
+{"name":"flare.scale.LinearScale","size":1316,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale","flare.scale.QuantitativeScale","flare.scale.ScaleType"]},
+{"name":"flare.scale.LogScale","size":3151,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale","flare.scale.QuantitativeScale","flare.scale.ScaleType"]},
+{"name":"flare.scale.OrdinalScale","size":3770,"imports":["flare.scale.ScaleType","flare.util.Arrays","flare.scale.Scale"]},
+{"name":"flare.scale.QuantileScale","size":2435,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale","flare.scale.ScaleType"]},
+{"name":"flare.scale.QuantitativeScale","size":4839,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale"]},
+{"name":"flare.scale.RootScale","size":1756,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale","flare.scale.QuantitativeScale","flare.scale.ScaleType"]},
+{"name":"flare.scale.Scale","size":4268,"imports":["flare.scale.ScaleType","flare.util.Strings"]},
+{"name":"flare.scale.ScaleType","size":1821,"imports":["flare.scale.Scale"]},
+{"name":"flare.scale.TimeScale","size":5833,"imports":["flare.util.Maths","flare.util.Dates","flare.scale.Scale","flare.scale.ScaleType"]},
+{"name":"flare.util.Arrays","size":8258,"imports":["flare.util.IValueProxy","flare.util.Property","flare.util.IEvaluable"]},
+{"name":"flare.util.Colors","size":10001,"imports":["flare.util.Filter"]},
+{"name":"flare.util.Dates","size":8217,"imports":["flare.util.Maths"]},
+{"name":"flare.util.Displays","size":12555,"imports":["flare.util.IValueProxy","flare.util.Filter","flare.util.Property","flare.util.IEvaluable","flare.util.Sort"]},
+{"name":"flare.util.Filter","size":2324,"imports":["flare.util.IPredicate","flare.util.Property"]},
+{"name":"flare.util.Geometry","size":10993,"imports":[]},
+{"name":"flare.util.heap.FibonacciHeap","size":9354,"imports":["flare.util.heap.HeapNode"]},
+{"name":"flare.util.heap.HeapNode","size":1233,"imports":["flare.util.heap.FibonacciHeap"]},
+{"name":"flare.util.IEvaluable","size":335,"imports":[]},
+{"name":"flare.util.IPredicate","size":383,"imports":[]},
+{"name":"flare.util.IValueProxy","size":874,"imports":[]},
+{"name":"flare.util.math.DenseMatrix","size":3165,"imports":["flare.util.math.IMatrix"]},
+{"name":"flare.util.math.IMatrix","size":2815,"imports":[]},
+{"name":"flare.util.math.SparseMatrix","size":3366,"imports":["flare.util.math.IMatrix"]},
+{"name":"flare.util.Maths","size":17705,"imports":["flare.util.Arrays"]},
+{"name":"flare.util.Orientation","size":1486,"imports":[]},
+{"name":"flare.util.palette.ColorPalette","size":6367,"imports":["flare.util.palette.Palette","flare.util.Colors"]},
+{"name":"flare.util.palette.Palette","size":1229,"imports":[]},
+{"name":"flare.util.palette.ShapePalette","size":2059,"imports":["flare.util.palette.Palette","flare.util.Shapes"]},
+{"name":"flare.util.palette.SizePalette","size":2291,"imports":["flare.util.palette.Palette"]},
+{"name":"flare.util.Property","size":5559,"imports":["flare.util.IPredicate","flare.util.IValueProxy","flare.util.IEvaluable"]},
+{"name":"flare.util.Shapes","size":19118,"imports":["flare.util.Arrays"]},
+{"name":"flare.util.Sort","size":6887,"imports":["flare.util.Arrays","flare.util.Property"]},
+{"name":"flare.util.Stats","size":6557,"imports":["flare.util.Arrays","flare.util.Property"]},
+{"name":"flare.util.Strings","size":22026,"imports":["flare.util.Dates","flare.util.Property"]},
+{"name":"flare.vis.axis.Axes","size":1302,"imports":["flare.animate.Transitioner","flare.vis.Visualization"]},
+{"name":"flare.vis.axis.Axis","size":24593,"imports":["flare.animate.Transitioner","flare.scale.LinearScale","flare.util.Arrays","flare.scale.ScaleType","flare.util.Strings","flare.display.TextSprite","flare.scale.Scale","flare.util.Stats","flare.scale.IScaleMap","flare.vis.axis.AxisLabel","flare.vis.axis.AxisGridLine"]},
+{"name":"flare.vis.axis.AxisGridLine","size":652,"imports":["flare.vis.axis.Axis","flare.display.LineSprite"]},
+{"name":"flare.vis.axis.AxisLabel","size":636,"imports":["flare.vis.axis.Axis","flare.display.TextSprite"]},
+{"name":"flare.vis.axis.CartesianAxes","size":6703,"imports":["flare.animate.Transitioner","flare.display.RectSprite","flare.vis.axis.Axis","flare.display.TextSprite","flare.vis.axis.Axes","flare.vis.Visualization","flare.vis.axis.AxisGridLine"]},
+{"name":"flare.vis.controls.AnchorControl","size":2138,"imports":["flare.vis.controls.Control","flare.vis.Visualization","flare.vis.operator.layout.Layout"]},
+{"name":"flare.vis.controls.ClickControl","size":3824,"imports":["flare.vis.events.SelectionEvent","flare.vis.controls.Control"]},
+{"name":"flare.vis.controls.Control","size":1353,"imports":["flare.vis.controls.IControl","flare.util.Filter"]},
+{"name":"flare.vis.controls.ControlList","size":4665,"imports":["flare.vis.controls.IControl","flare.util.Arrays","flare.vis.Visualization","flare.vis.controls.Control"]},
+{"name":"flare.vis.controls.DragControl","size":2649,"imports":["flare.vis.controls.Control","flare.vis.data.DataSprite"]},
+{"name":"flare.vis.controls.ExpandControl","size":2832,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.controls.Control","flare.vis.Visualization"]},
+{"name":"flare.vis.controls.HoverControl","size":4896,"imports":["flare.vis.events.SelectionEvent","flare.vis.controls.Control"]},
+{"name":"flare.vis.controls.IControl","size":763,"imports":["flare.vis.controls.Control"]},
+{"name":"flare.vis.controls.PanZoomControl","size":5222,"imports":["flare.util.Displays","flare.vis.controls.Control"]},
+{"name":"flare.vis.controls.SelectionControl","size":7862,"imports":["flare.vis.events.SelectionEvent","flare.vis.controls.Control"]},
+{"name":"flare.vis.controls.TooltipControl","size":8435,"imports":["flare.animate.Tween","flare.display.TextSprite","flare.vis.controls.Control","flare.vis.events.TooltipEvent"]},
+{"name":"flare.vis.data.Data","size":20544,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.util.Arrays","flare.vis.data.DataSprite","flare.vis.data.Tree","flare.vis.events.DataEvent","flare.data.DataSet","flare.vis.data.TreeBuilder","flare.vis.data.DataList","flare.data.DataSchema","flare.util.Sort","flare.data.DataField","flare.util.Property"]},
+{"name":"flare.vis.data.DataList","size":19788,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.util.Arrays","flare.util.math.DenseMatrix","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.vis.events.DataEvent","flare.util.Stats","flare.util.math.IMatrix","flare.util.Sort","flare.util.Filter","flare.util.Property","flare.util.IEvaluable","flare.vis.data.Data"]},
+{"name":"flare.vis.data.DataSprite","size":10349,"imports":["flare.util.Colors","flare.vis.data.Data","flare.display.DirtySprite","flare.vis.data.render.IRenderer","flare.vis.data.render.ShapeRenderer"]},
+{"name":"flare.vis.data.EdgeSprite","size":3301,"imports":["flare.vis.data.render.EdgeRenderer","flare.vis.data.DataSprite","flare.vis.data.NodeSprite","flare.vis.data.render.ArrowType","flare.vis.data.Data"]},
+{"name":"flare.vis.data.NodeSprite","size":19382,"imports":["flare.animate.Transitioner","flare.util.Arrays","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.vis.data.Tree","flare.util.Sort","flare.util.Filter","flare.util.IEvaluable","flare.vis.data.Data"]},
+{"name":"flare.vis.data.render.ArrowType","size":698,"imports":[]},
+{"name":"flare.vis.data.render.EdgeRenderer","size":5569,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.vis.data.DataSprite","flare.vis.data.render.IRenderer","flare.util.Shapes","flare.util.Geometry","flare.vis.data.render.ArrowType"]},
+{"name":"flare.vis.data.render.IRenderer","size":353,"imports":["flare.vis.data.DataSprite"]},
+{"name":"flare.vis.data.render.ShapeRenderer","size":2247,"imports":["flare.util.Shapes","flare.vis.data.render.IRenderer","flare.vis.data.DataSprite"]},
+{"name":"flare.vis.data.ScaleBinding","size":11275,"imports":["flare.scale.TimeScale","flare.scale.ScaleType","flare.scale.LinearScale","flare.scale.LogScale","flare.scale.OrdinalScale","flare.scale.RootScale","flare.scale.Scale","flare.scale.QuantileScale","flare.util.Stats","flare.scale.QuantitativeScale","flare.vis.events.DataEvent","flare.vis.data.Data"]},
+{"name":"flare.vis.data.Tree","size":7147,"imports":["flare.vis.data.EdgeSprite","flare.vis.events.DataEvent","flare.vis.data.NodeSprite","flare.vis.data.Data"]},
+{"name":"flare.vis.data.TreeBuilder","size":9930,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.vis.data.Tree","flare.util.heap.HeapNode","flare.util.heap.FibonacciHeap","flare.util.Property","flare.util.IEvaluable","flare.vis.data.Data"]},
+{"name":"flare.vis.events.DataEvent","size":2313,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.vis.data.DataSprite"]},
+{"name":"flare.vis.events.SelectionEvent","size":1880,"imports":["flare.vis.events.DataEvent"]},
+{"name":"flare.vis.events.TooltipEvent","size":1701,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite"]},
+{"name":"flare.vis.events.VisualizationEvent","size":1117,"imports":["flare.animate.Transitioner"]},
+{"name":"flare.vis.legend.Legend","size":20859,"imports":["flare.animate.Transitioner","flare.vis.data.ScaleBinding","flare.util.palette.SizePalette","flare.scale.ScaleType","flare.vis.legend.LegendItem","flare.display.RectSprite","flare.display.TextSprite","flare.scale.Scale","flare.vis.legend.LegendRange","flare.util.Displays","flare.util.Orientation","flare.util.palette.ShapePalette","flare.util.palette.Palette","flare.util.palette.ColorPalette"]},
+{"name":"flare.vis.legend.LegendItem","size":4614,"imports":["flare.util.Shapes","flare.display.TextSprite","flare.vis.legend.Legend","flare.display.RectSprite"]},
+{"name":"flare.vis.legend.LegendRange","size":10530,"imports":["flare.util.Colors","flare.vis.legend.Legend","flare.display.RectSprite","flare.display.TextSprite","flare.scale.Scale","flare.util.Stats","flare.scale.IScaleMap","flare.util.Orientation","flare.util.palette.ColorPalette"]},
+{"name":"flare.vis.operator.distortion.BifocalDistortion","size":4461,"imports":["flare.vis.operator.distortion.Distortion"]},
+{"name":"flare.vis.operator.distortion.Distortion","size":6314,"imports":["flare.animate.Transitioner","flare.vis.data.DataSprite","flare.vis.events.VisualizationEvent","flare.vis.axis.Axis","flare.vis.axis.CartesianAxes","flare.vis.operator.layout.Layout","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.distortion.FisheyeDistortion","size":3444,"imports":["flare.vis.operator.distortion.Distortion"]},
+{"name":"flare.vis.operator.encoder.ColorEncoder","size":3179,"imports":["flare.animate.Transitioner","flare.scale.ScaleType","flare.vis.operator.encoder.Encoder","flare.util.palette.Palette","flare.util.palette.ColorPalette","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.encoder.Encoder","size":4060,"imports":["flare.animate.Transitioner","flare.vis.data.DataSprite","flare.vis.operator.Operator","flare.vis.data.ScaleBinding","flare.util.palette.Palette","flare.util.Filter","flare.util.Property","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.encoder.PropertyEncoder","size":4138,"imports":["flare.animate.Transitioner","flare.vis.data.DataList","flare.vis.data.Data","flare.vis.operator.encoder.Encoder","flare.util.Filter","flare.vis.operator.Operator"]},
+{"name":"flare.vis.operator.encoder.ShapeEncoder","size":1690,"imports":["flare.util.palette.Palette","flare.scale.ScaleType","flare.util.palette.ShapePalette","flare.vis.operator.encoder.Encoder","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.encoder.SizeEncoder","size":1830,"imports":["flare.util.palette.Palette","flare.scale.ScaleType","flare.vis.operator.encoder.Encoder","flare.util.palette.SizePalette","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.filter.FisheyeTreeFilter","size":5219,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.vis.data.Tree","flare.vis.operator.Operator","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.filter.GraphDistanceFilter","size":3165,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.operator.Operator","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite"]},
+{"name":"flare.vis.operator.filter.VisibilityFilter","size":3509,"imports":["flare.vis.operator.Operator","flare.animate.Transitioner","flare.util.Filter","flare.vis.data.DataSprite","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.IOperator","size":1286,"imports":["flare.animate.Transitioner","flare.vis.Visualization","flare.vis.operator.Operator"]},
+{"name":"flare.vis.operator.label.Labeler","size":9956,"imports":["flare.animate.Transitioner","flare.vis.data.DataSprite","flare.display.TextSprite","flare.vis.operator.Operator","flare.util.Shapes","flare.util.Filter","flare.util.Property","flare.util.IEvaluable","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.label.RadialLabeler","size":3899,"imports":["flare.vis.operator.label.Labeler","flare.util.Shapes","flare.display.TextSprite","flare.vis.data.DataSprite","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.label.StackedAreaLabeler","size":3202,"imports":["flare.vis.operator.label.Labeler","flare.display.TextSprite","flare.vis.data.DataSprite","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.layout.AxisLayout","size":6725,"imports":["flare.scale.ScaleType","flare.vis.data.DataSprite","flare.vis.axis.CartesianAxes","flare.vis.data.ScaleBinding","flare.util.Property","flare.vis.operator.layout.Layout","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.layout.BundledEdgeRouter","size":3727,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.util.Arrays","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.util.Shapes","flare.vis.operator.layout.Layout","flare.vis.operator.Operator"]},
+{"name":"flare.vis.operator.layout.CircleLayout","size":9317,"imports":["flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.vis.data.ScaleBinding","flare.util.Property","flare.vis.operator.layout.Layout","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.layout.CirclePackingLayout","size":12003,"imports":["flare.vis.data.NodeSprite","flare.vis.data.render.ShapeRenderer","flare.util.Shapes","flare.util.Sort","flare.vis.operator.layout.Layout","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.layout.DendrogramLayout","size":4853,"imports":["flare.util.Property","flare.vis.data.NodeSprite","flare.util.Orientation","flare.vis.operator.layout.Layout","flare.vis.data.EdgeSprite"]},
+{"name":"flare.vis.operator.layout.ForceDirectedLayout","size":8411,"imports":["flare.physics.Simulation","flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.DataSprite","flare.physics.Particle","flare.physics.Spring","flare.vis.operator.layout.Layout","flare.vis.data.EdgeSprite","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.layout.IcicleTreeLayout","size":4864,"imports":["flare.vis.data.NodeSprite","flare.util.Orientation","flare.vis.operator.layout.Layout"]},
+{"name":"flare.vis.operator.layout.IndentedTreeLayout","size":3174,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.util.Arrays","flare.vis.operator.layout.Layout","flare.vis.data.EdgeSprite"]},
+{"name":"flare.vis.operator.layout.Layout","size":7881,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.vis.Visualization","flare.vis.axis.CartesianAxes","flare.vis.axis.Axes","flare.animate.TransitionEvent","flare.vis.operator.Operator"]},
+{"name":"flare.vis.operator.layout.NodeLinkTreeLayout","size":12870,"imports":["flare.vis.data.NodeSprite","flare.util.Arrays","flare.util.Orientation","flare.vis.operator.layout.Layout"]},
+{"name":"flare.vis.operator.layout.PieLayout","size":2728,"imports":["flare.vis.data.DataList","flare.vis.data.DataSprite","flare.util.Shapes","flare.util.Property","flare.vis.operator.layout.Layout","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.layout.RadialTreeLayout","size":12348,"imports":["flare.vis.data.NodeSprite","flare.util.Arrays","flare.vis.operator.layout.Layout"]},
+{"name":"flare.vis.operator.layout.RandomLayout","size":870,"imports":["flare.vis.operator.layout.Layout","flare.vis.data.DataSprite","flare.vis.data.Data"]},
+{"name":"flare.vis.operator.layout.StackedAreaLayout","size":9121,"imports":["flare.scale.TimeScale","flare.scale.LinearScale","flare.util.Arrays","flare.scale.OrdinalScale","flare.vis.data.NodeSprite","flare.scale.Scale","flare.vis.axis.CartesianAxes","flare.util.Stats","flare.util.Orientation","flare.scale.QuantitativeScale","flare.util.Maths","flare.vis.operator.layout.Layout"]},
+{"name":"flare.vis.operator.layout.TreeMapLayout","size":9191,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.util.Property","flare.vis.operator.layout.Layout"]},
+{"name":"flare.vis.operator.Operator","size":2490,"imports":["flare.animate.Transitioner","flare.vis.operator.IOperator","flare.util.Property","flare.util.IEvaluable","flare.vis.Visualization"]},
+{"name":"flare.vis.operator.OperatorList","size":5248,"imports":["flare.animate.Transitioner","flare.util.Arrays","flare.vis.operator.IOperator","flare.vis.Visualization","flare.vis.operator.Operator"]},
+{"name":"flare.vis.operator.OperatorSequence","size":4190,"imports":["flare.animate.Transitioner","flare.util.Arrays","flare.vis.operator.IOperator","flare.vis.operator.OperatorList","flare.animate.FunctionSequence","flare.vis.operator.Operator"]},
+{"name":"flare.vis.operator.OperatorSwitch","size":2581,"imports":["flare.animate.Transitioner","flare.vis.operator.OperatorList","flare.vis.operator.IOperator","flare.vis.operator.Operator"]},
+{"name":"flare.vis.operator.SortOperator","size":2023,"imports":["flare.vis.operator.Operator","flare.animate.Transitioner","flare.util.Arrays","flare.vis.data.Data"]},
+{"name":"flare.vis.Visualization","size":16540,"imports":["flare.animate.Transitioner","flare.vis.operator.IOperator","flare.animate.Scheduler","flare.vis.events.VisualizationEvent","flare.vis.data.Tree","flare.vis.events.DataEvent","flare.vis.axis.Axes","flare.vis.axis.CartesianAxes","flare.util.Displays","flare.vis.operator.OperatorList","flare.vis.controls.ControlList","flare.animate.ISchedulable","flare.vis.data.Data"]}
+]
diff --git a/static/vendor/d3-2.8.1/examples/data/flare.json b/static/vendor/d3-2.8.1/examples/data/flare.json
new file mode 100755 (executable)
index 0000000..a05a948
--- /dev/null
@@ -0,0 +1,380 @@
+{
+ "name": "flare",
+ "children": [
+  {
+   "name": "analytics",
+   "children": [
+    {
+     "name": "cluster",
+     "children": [
+      {"name": "AgglomerativeCluster", "size": 3938},
+      {"name": "CommunityStructure", "size": 3812},
+      {"name": "HierarchicalCluster", "size": 6714},
+      {"name": "MergeEdge", "size": 743}
+     ]
+    },
+    {
+     "name": "graph",
+     "children": [
+      {"name": "BetweennessCentrality", "size": 3534},
+      {"name": "LinkDistance", "size": 5731},
+      {"name": "MaxFlowMinCut", "size": 7840},
+      {"name": "ShortestPaths", "size": 5914},
+      {"name": "SpanningTree", "size": 3416}
+     ]
+    },
+    {
+     "name": "optimization",
+     "children": [
+      {"name": "AspectRatioBanker", "size": 7074}
+     ]
+    }
+   ]
+  },
+  {
+   "name": "animate",
+   "children": [
+    {"name": "Easing", "size": 17010},
+    {"name": "FunctionSequence", "size": 5842},
+    {
+     "name": "interpolate",
+     "children": [
+      {"name": "ArrayInterpolator", "size": 1983},
+      {"name": "ColorInterpolator", "size": 2047},
+      {"name": "DateInterpolator", "size": 1375},
+      {"name": "Interpolator", "size": 8746},
+      {"name": "MatrixInterpolator", "size": 2202},
+      {"name": "NumberInterpolator", "size": 1382},
+      {"name": "ObjectInterpolator", "size": 1629},
+      {"name": "PointInterpolator", "size": 1675},
+      {"name": "RectangleInterpolator", "size": 2042}
+     ]
+    },
+    {"name": "ISchedulable", "size": 1041},
+    {"name": "Parallel", "size": 5176},
+    {"name": "Pause", "size": 449},
+    {"name": "Scheduler", "size": 5593},
+    {"name": "Sequence", "size": 5534},
+    {"name": "Transition", "size": 9201},
+    {"name": "Transitioner", "size": 19975},
+    {"name": "TransitionEvent", "size": 1116},
+    {"name": "Tween", "size": 6006}
+   ]
+  },
+  {
+   "name": "data",
+   "children": [
+    {
+     "name": "converters",
+     "children": [
+      {"name": "Converters", "size": 721},
+      {"name": "DelimitedTextConverter", "size": 4294},
+      {"name": "GraphMLConverter", "size": 9800},
+      {"name": "IDataConverter", "size": 1314},
+      {"name": "JSONConverter", "size": 2220}
+     ]
+    },
+    {"name": "DataField", "size": 1759},
+    {"name": "DataSchema", "size": 2165},
+    {"name": "DataSet", "size": 586},
+    {"name": "DataSource", "size": 3331},
+    {"name": "DataTable", "size": 772},
+    {"name": "DataUtil", "size": 3322}
+   ]
+  },
+  {
+   "name": "display",
+   "children": [
+    {"name": "DirtySprite", "size": 8833},
+    {"name": "LineSprite", "size": 1732},
+    {"name": "RectSprite", "size": 3623},
+    {"name": "TextSprite", "size": 10066}
+   ]
+  },
+  {
+   "name": "flex",
+   "children": [
+    {"name": "FlareVis", "size": 4116}
+   ]
+  },
+  {
+   "name": "physics",
+   "children": [
+    {"name": "DragForce", "size": 1082},
+    {"name": "GravityForce", "size": 1336},
+    {"name": "IForce", "size": 319},
+    {"name": "NBodyForce", "size": 10498},
+    {"name": "Particle", "size": 2822},
+    {"name": "Simulation", "size": 9983},
+    {"name": "Spring", "size": 2213},
+    {"name": "SpringForce", "size": 1681}
+   ]
+  },
+  {
+   "name": "query",
+   "children": [
+    {"name": "AggregateExpression", "size": 1616},
+    {"name": "And", "size": 1027},
+    {"name": "Arithmetic", "size": 3891},
+    {"name": "Average", "size": 891},
+    {"name": "BinaryExpression", "size": 2893},
+    {"name": "Comparison", "size": 5103},
+    {"name": "CompositeExpression", "size": 3677},
+    {"name": "Count", "size": 781},
+    {"name": "DateUtil", "size": 4141},
+    {"name": "Distinct", "size": 933},
+    {"name": "Expression", "size": 5130},
+    {"name": "ExpressionIterator", "size": 3617},
+    {"name": "Fn", "size": 3240},
+    {"name": "If", "size": 2732},
+    {"name": "IsA", "size": 2039},
+    {"name": "Literal", "size": 1214},
+    {"name": "Match", "size": 3748},
+    {"name": "Maximum", "size": 843},
+    {
+     "name": "methods",
+     "children": [
+      {"name": "add", "size": 593},
+      {"name": "and", "size": 330},
+      {"name": "average", "size": 287},
+      {"name": "count", "size": 277},
+      {"name": "distinct", "size": 292},
+      {"name": "div", "size": 595},
+      {"name": "eq", "size": 594},
+      {"name": "fn", "size": 460},
+      {"name": "gt", "size": 603},
+      {"name": "gte", "size": 625},
+      {"name": "iff", "size": 748},
+      {"name": "isa", "size": 461},
+      {"name": "lt", "size": 597},
+      {"name": "lte", "size": 619},
+      {"name": "max", "size": 283},
+      {"name": "min", "size": 283},
+      {"name": "mod", "size": 591},
+      {"name": "mul", "size": 603},
+      {"name": "neq", "size": 599},
+      {"name": "not", "size": 386},
+      {"name": "or", "size": 323},
+      {"name": "orderby", "size": 307},
+      {"name": "range", "size": 772},
+      {"name": "select", "size": 296},
+      {"name": "stddev", "size": 363},
+      {"name": "sub", "size": 600},
+      {"name": "sum", "size": 280},
+      {"name": "update", "size": 307},
+      {"name": "variance", "size": 335},
+      {"name": "where", "size": 299},
+      {"name": "xor", "size": 354},
+      {"name": "_", "size": 264}
+     ]
+    },
+    {"name": "Minimum", "size": 843},
+    {"name": "Not", "size": 1554},
+    {"name": "Or", "size": 970},
+    {"name": "Query", "size": 13896},
+    {"name": "Range", "size": 1594},
+    {"name": "StringUtil", "size": 4130},
+    {"name": "Sum", "size": 791},
+    {"name": "Variable", "size": 1124},
+    {"name": "Variance", "size": 1876},
+    {"name": "Xor", "size": 1101}
+   ]
+  },
+  {
+   "name": "scale",
+   "children": [
+    {"name": "IScaleMap", "size": 2105},
+    {"name": "LinearScale", "size": 1316},
+    {"name": "LogScale", "size": 3151},
+    {"name": "OrdinalScale", "size": 3770},
+    {"name": "QuantileScale", "size": 2435},
+    {"name": "QuantitativeScale", "size": 4839},
+    {"name": "RootScale", "size": 1756},
+    {"name": "Scale", "size": 4268},
+    {"name": "ScaleType", "size": 1821},
+    {"name": "TimeScale", "size": 5833}
+   ]
+  },
+  {
+   "name": "util",
+   "children": [
+    {"name": "Arrays", "size": 8258},
+    {"name": "Colors", "size": 10001},
+    {"name": "Dates", "size": 8217},
+    {"name": "Displays", "size": 12555},
+    {"name": "Filter", "size": 2324},
+    {"name": "Geometry", "size": 10993},
+    {
+     "name": "heap",
+     "children": [
+      {"name": "FibonacciHeap", "size": 9354},
+      {"name": "HeapNode", "size": 1233}
+     ]
+    },
+    {"name": "IEvaluable", "size": 335},
+    {"name": "IPredicate", "size": 383},
+    {"name": "IValueProxy", "size": 874},
+    {
+     "name": "math",
+     "children": [
+      {"name": "DenseMatrix", "size": 3165},
+      {"name": "IMatrix", "size": 2815},
+      {"name": "SparseMatrix", "size": 3366}
+     ]
+    },
+    {"name": "Maths", "size": 17705},
+    {"name": "Orientation", "size": 1486},
+    {
+     "name": "palette",
+     "children": [
+      {"name": "ColorPalette", "size": 6367},
+      {"name": "Palette", "size": 1229},
+      {"name": "ShapePalette", "size": 2059},
+      {"name": "SizePalette", "size": 2291}
+     ]
+    },
+    {"name": "Property", "size": 5559},
+    {"name": "Shapes", "size": 19118},
+    {"name": "Sort", "size": 6887},
+    {"name": "Stats", "size": 6557},
+    {"name": "Strings", "size": 22026}
+   ]
+  },
+  {
+   "name": "vis",
+   "children": [
+    {
+     "name": "axis",
+     "children": [
+      {"name": "Axes", "size": 1302},
+      {"name": "Axis", "size": 24593},
+      {"name": "AxisGridLine", "size": 652},
+      {"name": "AxisLabel", "size": 636},
+      {"name": "CartesianAxes", "size": 6703}
+     ]
+    },
+    {
+     "name": "controls",
+     "children": [
+      {"name": "AnchorControl", "size": 2138},
+      {"name": "ClickControl", "size": 3824},
+      {"name": "Control", "size": 1353},
+      {"name": "ControlList", "size": 4665},
+      {"name": "DragControl", "size": 2649},
+      {"name": "ExpandControl", "size": 2832},
+      {"name": "HoverControl", "size": 4896},
+      {"name": "IControl", "size": 763},
+      {"name": "PanZoomControl", "size": 5222},
+      {"name": "SelectionControl", "size": 7862},
+      {"name": "TooltipControl", "size": 8435}
+     ]
+    },
+    {
+     "name": "data",
+     "children": [
+      {"name": "Data", "size": 20544},
+      {"name": "DataList", "size": 19788},
+      {"name": "DataSprite", "size": 10349},
+      {"name": "EdgeSprite", "size": 3301},
+      {"name": "NodeSprite", "size": 19382},
+      {
+       "name": "render",
+       "children": [
+        {"name": "ArrowType", "size": 698},
+        {"name": "EdgeRenderer", "size": 5569},
+        {"name": "IRenderer", "size": 353},
+        {"name": "ShapeRenderer", "size": 2247}
+       ]
+      },
+      {"name": "ScaleBinding", "size": 11275},
+      {"name": "Tree", "size": 7147},
+      {"name": "TreeBuilder", "size": 9930}
+     ]
+    },
+    {
+     "name": "events",
+     "children": [
+      {"name": "DataEvent", "size": 2313},
+      {"name": "SelectionEvent", "size": 1880},
+      {"name": "TooltipEvent", "size": 1701},
+      {"name": "VisualizationEvent", "size": 1117}
+     ]
+    },
+    {
+     "name": "legend",
+     "children": [
+      {"name": "Legend", "size": 20859},
+      {"name": "LegendItem", "size": 4614},
+      {"name": "LegendRange", "size": 10530}
+     ]
+    },
+    {
+     "name": "operator",
+     "children": [
+      {
+       "name": "distortion",
+       "children": [
+        {"name": "BifocalDistortion", "size": 4461},
+        {"name": "Distortion", "size": 6314},
+        {"name": "FisheyeDistortion", "size": 3444}
+       ]
+      },
+      {
+       "name": "encoder",
+       "children": [
+        {"name": "ColorEncoder", "size": 3179},
+        {"name": "Encoder", "size": 4060},
+        {"name": "PropertyEncoder", "size": 4138},
+        {"name": "ShapeEncoder", "size": 1690},
+        {"name": "SizeEncoder", "size": 1830}
+       ]
+      },
+      {
+       "name": "filter",
+       "children": [
+        {"name": "FisheyeTreeFilter", "size": 5219},
+        {"name": "GraphDistanceFilter", "size": 3165},
+        {"name": "VisibilityFilter", "size": 3509}
+       ]
+      },
+      {"name": "IOperator", "size": 1286},
+      {
+       "name": "label",
+       "children": [
+        {"name": "Labeler", "size": 9956},
+        {"name": "RadialLabeler", "size": 3899},
+        {"name": "StackedAreaLabeler", "size": 3202}
+       ]
+      },
+      {
+       "name": "layout",
+       "children": [
+        {"name": "AxisLayout", "size": 6725},
+        {"name": "BundledEdgeRouter", "size": 3727},
+        {"name": "CircleLayout", "size": 9317},
+        {"name": "CirclePackingLayout", "size": 12003},
+        {"name": "DendrogramLayout", "size": 4853},
+        {"name": "ForceDirectedLayout", "size": 8411},
+        {"name": "IcicleTreeLayout", "size": 4864},
+        {"name": "IndentedTreeLayout", "size": 3174},
+        {"name": "Layout", "size": 7881},
+        {"name": "NodeLinkTreeLayout", "size": 12870},
+        {"name": "PieLayout", "size": 2728},
+        {"name": "RadialTreeLayout", "size": 12348},
+        {"name": "RandomLayout", "size": 870},
+        {"name": "StackedAreaLayout", "size": 9121},
+        {"name": "TreeMapLayout", "size": 9191}
+       ]
+      },
+      {"name": "Operator", "size": 2490},
+      {"name": "OperatorList", "size": 5248},
+      {"name": "OperatorSequence", "size": 4190},
+      {"name": "OperatorSwitch", "size": 2581},
+      {"name": "SortOperator", "size": 2023}
+     ]
+    },
+    {"name": "Visualization", "size": 16540}
+   ]
+  }
+ ]
+}
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/examples/data/morley.csv b/static/vendor/d3-2.8.1/examples/data/morley.csv
new file mode 100755 (executable)
index 0000000..7f2acab
--- /dev/null
@@ -0,0 +1,101 @@
+Expt,Run,Speed
+1,1,850
+1,2,740
+1,3,900
+1,4,1070
+1,5,930
+1,6,850
+1,7,950
+1,8,980
+1,9,980
+1,10,880
+1,11,1000
+1,12,980
+1,13,930
+1,14,650
+1,15,760
+1,16,810
+1,17,1000
+1,18,1000
+1,19,960
+1,20,960
+2,1,960
+2,2,940
+2,3,960
+2,4,940
+2,5,880
+2,6,800
+2,7,850
+2,8,880
+2,9,900
+2,10,840
+2,11,830
+2,12,790
+2,13,810
+2,14,880
+2,15,880
+2,16,830
+2,17,800
+2,18,790
+2,19,760
+2,20,800
+3,1,880
+3,2,880
+3,3,880
+3,4,860
+3,5,720
+3,6,720
+3,7,620
+3,8,860
+3,9,970
+3,10,950
+3,11,880
+3,12,910
+3,13,850
+3,14,870
+3,15,840
+3,16,840
+3,17,850
+3,18,840
+3,19,840
+3,20,840
+4,1,890
+4,2,810
+4,3,810
+4,4,820
+4,5,800
+4,6,770
+4,7,760
+4,8,740
+4,9,750
+4,10,760
+4,11,910
+4,12,920
+4,13,890
+4,14,860
+4,15,880
+4,16,720
+4,17,840
+4,18,850
+4,19,850
+4,20,780
+5,1,890
+5,2,840
+5,3,780
+5,4,810
+5,5,760
+5,6,810
+5,7,790
+5,8,810
+5,9,820
+5,10,850
+5,11,870
+5,12,870
+5,13,810
+5,14,740
+5,15,810
+5,16,940
+5,17,950
+5,18,800
+5,19,810
+5,20,870
diff --git a/static/vendor/d3-2.8.1/examples/data/sample.csv b/static/vendor/d3-2.8.1/examples/data/sample.csv
new file mode 100755 (executable)
index 0000000..89d73a0
--- /dev/null
@@ -0,0 +1,2 @@
+Hello,World
+42,"""fish"""
diff --git a/static/vendor/d3-2.8.1/examples/data/sample.html b/static/vendor/d3-2.8.1/examples/data/sample.html
new file mode 100755 (executable)
index 0000000..2029283
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<html>
+  <body>
+    <h1>Hello &amp; world!</h1>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/data/sample.json b/static/vendor/d3-2.8.1/examples/data/sample.json
new file mode 100755 (executable)
index 0000000..c07f3c4
--- /dev/null
@@ -0,0 +1 @@
+[{"Hello":42,"World":"\"fish\""}]
diff --git a/static/vendor/d3-2.8.1/examples/data/sample.txt b/static/vendor/d3-2.8.1/examples/data/sample.txt
new file mode 100755 (executable)
index 0000000..af5626b
--- /dev/null
@@ -0,0 +1 @@
+Hello, world!
diff --git a/static/vendor/d3-2.8.1/examples/data/sample.xml b/static/vendor/d3-2.8.1/examples/data/sample.xml
new file mode 100755 (executable)
index 0000000..a2447a5
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<hello>
+  <world name="Earth"/>
+</hello>
diff --git a/static/vendor/d3-2.8.1/examples/data/stocks.csv b/static/vendor/d3-2.8.1/examples/data/stocks.csv
new file mode 100755 (executable)
index 0000000..aae08f3
--- /dev/null
@@ -0,0 +1,807 @@
+symbol,date,price
+S&P 500,Jan 2000,1394.46
+S&P 500,Feb 2000,1366.42
+S&P 500,Mar 2000,1498.58
+S&P 500,Apr 2000,1452.43
+S&P 500,May 2000,1420.6
+S&P 500,Jun 2000,1454.6
+S&P 500,Jul 2000,1430.83
+S&P 500,Aug 2000,1517.68
+S&P 500,Sep 2000,1436.51
+S&P 500,Oct 2000,1429.4
+S&P 500,Nov 2000,1314.95
+S&P 500,Dec 2000,1320.28
+S&P 500,Jan 2001,1366.01
+S&P 500,Feb 2001,1239.94
+S&P 500,Mar 2001,1160.33
+S&P 500,Apr 2001,1249.46
+S&P 500,May 2001,1255.82
+S&P 500,Jun 2001,1224.38
+S&P 500,Jul 2001,1211.23
+S&P 500,Aug 2001,1133.58
+S&P 500,Sep 2001,1040.94
+S&P 500,Oct 2001,1059.78
+S&P 500,Nov 2001,1139.45
+S&P 500,Dec 2001,1148.08
+S&P 500,Jan 2002,1130.2
+S&P 500,Feb 2002,1106.73
+S&P 500,Mar 2002,1147.39
+S&P 500,Apr 2002,1076.92
+S&P 500,May 2002,1067.14
+S&P 500,Jun 2002,989.82
+S&P 500,Jul 2002,911.62
+S&P 500,Aug 2002,916.07
+S&P 500,Sep 2002,815.28
+S&P 500,Oct 2002,885.76
+S&P 500,Nov 2002,936.31
+S&P 500,Dec 2002,879.82
+S&P 500,Jan 2003,855.7
+S&P 500,Feb 2003,841.15
+S&P 500,Mar 2003,848.18
+S&P 500,Apr 2003,916.92
+S&P 500,May 2003,963.59
+S&P 500,Jun 2003,974.5
+S&P 500,Jul 2003,990.31
+S&P 500,Aug 2003,1008.01
+S&P 500,Sep 2003,995.97
+S&P 500,Oct 2003,1050.71
+S&P 500,Nov 2003,1058.2
+S&P 500,Dec 2003,1111.92
+S&P 500,Jan 2004,1131.13
+S&P 500,Feb 2004,1144.94
+S&P 500,Mar 2004,1126.21
+S&P 500,Apr 2004,1107.3
+S&P 500,May 2004,1120.68
+S&P 500,Jun 2004,1140.84
+S&P 500,Jul 2004,1101.72
+S&P 500,Aug 2004,1104.24
+S&P 500,Sep 2004,1114.58
+S&P 500,Oct 2004,1130.2
+S&P 500,Nov 2004,1173.82
+S&P 500,Dec 2004,1211.92
+S&P 500,Jan 2005,1181.27
+S&P 500,Feb 2005,1203.6
+S&P 500,Mar 2005,1180.59
+S&P 500,Apr 2005,1156.85
+S&P 500,May 2005,1191.5
+S&P 500,Jun 2005,1191.33
+S&P 500,Jul 2005,1234.18
+S&P 500,Aug 2005,1220.33
+S&P 500,Sep 2005,1228.81
+S&P 500,Oct 2005,1207.01
+S&P 500,Nov 2005,1249.48
+S&P 500,Dec 2005,1248.29
+S&P 500,Jan 2006,1280.08
+S&P 500,Feb 2006,1280.66
+S&P 500,Mar 2006,1294.87
+S&P 500,Apr 2006,1310.61
+S&P 500,May 2006,1270.09
+S&P 500,Jun 2006,1270.2
+S&P 500,Jul 2006,1276.66
+S&P 500,Aug 2006,1303.82
+S&P 500,Sep 2006,1335.85
+S&P 500,Oct 2006,1377.94
+S&P 500,Nov 2006,1400.63
+S&P 500,Dec 2006,1418.3
+S&P 500,Jan 2007,1438.24
+S&P 500,Feb 2007,1406.82
+S&P 500,Mar 2007,1420.86
+S&P 500,Apr 2007,1482.37
+S&P 500,May 2007,1530.62
+S&P 500,Jun 2007,1503.35
+S&P 500,Jul 2007,1455.27
+S&P 500,Aug 2007,1473.99
+S&P 500,Sep 2007,1526.75
+S&P 500,Oct 2007,1549.38
+S&P 500,Nov 2007,1481.14
+S&P 500,Dec 2007,1468.36
+S&P 500,Jan 2008,1378.55
+S&P 500,Feb 2008,1330.63
+S&P 500,Mar 2008,1322.7
+S&P 500,Apr 2008,1385.59
+S&P 500,May 2008,1400.38
+S&P 500,Jun 2008,1280
+S&P 500,Jul 2008,1267.38
+S&P 500,Aug 2008,1282.83
+S&P 500,Sep 2008,1166.36
+S&P 500,Oct 2008,968.75
+S&P 500,Nov 2008,896.24
+S&P 500,Dec 2008,903.25
+S&P 500,Jan 2009,825.88
+S&P 500,Feb 2009,735.09
+S&P 500,Mar 2009,797.87
+S&P 500,Apr 2009,872.81
+S&P 500,May 2009,919.14
+S&P 500,Jun 2009,919.32
+S&P 500,Jul 2009,987.48
+S&P 500,Aug 2009,1020.62
+S&P 500,Sep 2009,1057.08
+S&P 500,Oct 2009,1036.19
+S&P 500,Nov 2009,1095.63
+S&P 500,Dec 2009,1115.1
+S&P 500,Jan 2010,1073.87
+S&P 500,Feb 2010,1104.49
+S&P 500,Mar 2010,1140.45
+MSFT,Jan 2000,39.81
+MSFT,Feb 2000,36.35
+MSFT,Mar 2000,43.22
+MSFT,Apr 2000,28.37
+MSFT,May 2000,25.45
+MSFT,Jun 2000,32.54
+MSFT,Jul 2000,28.4
+MSFT,Aug 2000,28.4
+MSFT,Sep 2000,24.53
+MSFT,Oct 2000,28.02
+MSFT,Nov 2000,23.34
+MSFT,Dec 2000,17.65
+MSFT,Jan 2001,24.84
+MSFT,Feb 2001,24
+MSFT,Mar 2001,22.25
+MSFT,Apr 2001,27.56
+MSFT,May 2001,28.14
+MSFT,Jun 2001,29.7
+MSFT,Jul 2001,26.93
+MSFT,Aug 2001,23.21
+MSFT,Sep 2001,20.82
+MSFT,Oct 2001,23.65
+MSFT,Nov 2001,26.12
+MSFT,Dec 2001,26.95
+MSFT,Jan 2002,25.92
+MSFT,Feb 2002,23.73
+MSFT,Mar 2002,24.53
+MSFT,Apr 2002,21.26
+MSFT,May 2002,20.71
+MSFT,Jun 2002,22.25
+MSFT,Jul 2002,19.52
+MSFT,Aug 2002,19.97
+MSFT,Sep 2002,17.79
+MSFT,Oct 2002,21.75
+MSFT,Nov 2002,23.46
+MSFT,Dec 2002,21.03
+MSFT,Jan 2003,19.31
+MSFT,Feb 2003,19.34
+MSFT,Mar 2003,19.76
+MSFT,Apr 2003,20.87
+MSFT,May 2003,20.09
+MSFT,Jun 2003,20.93
+MSFT,Jul 2003,21.56
+MSFT,Aug 2003,21.65
+MSFT,Sep 2003,22.69
+MSFT,Oct 2003,21.45
+MSFT,Nov 2003,21.1
+MSFT,Dec 2003,22.46
+MSFT,Jan 2004,22.69
+MSFT,Feb 2004,21.77
+MSFT,Mar 2004,20.46
+MSFT,Apr 2004,21.45
+MSFT,May 2004,21.53
+MSFT,Jun 2004,23.44
+MSFT,Jul 2004,23.38
+MSFT,Aug 2004,22.47
+MSFT,Sep 2004,22.76
+MSFT,Oct 2004,23.02
+MSFT,Nov 2004,24.6
+MSFT,Dec 2004,24.52
+MSFT,Jan 2005,24.11
+MSFT,Feb 2005,23.15
+MSFT,Mar 2005,22.24
+MSFT,Apr 2005,23.28
+MSFT,May 2005,23.82
+MSFT,Jun 2005,22.93
+MSFT,Jul 2005,23.64
+MSFT,Aug 2005,25.35
+MSFT,Sep 2005,23.83
+MSFT,Oct 2005,23.8
+MSFT,Nov 2005,25.71
+MSFT,Dec 2005,24.29
+MSFT,Jan 2006,26.14
+MSFT,Feb 2006,25.04
+MSFT,Mar 2006,25.36
+MSFT,Apr 2006,22.5
+MSFT,May 2006,21.19
+MSFT,Jun 2006,21.8
+MSFT,Jul 2006,22.51
+MSFT,Aug 2006,24.13
+MSFT,Sep 2006,25.68
+MSFT,Oct 2006,26.96
+MSFT,Nov 2006,27.66
+MSFT,Dec 2006,28.13
+MSFT,Jan 2007,29.07
+MSFT,Feb 2007,26.63
+MSFT,Mar 2007,26.35
+MSFT,Apr 2007,28.3
+MSFT,May 2007,29.11
+MSFT,Jun 2007,27.95
+MSFT,Jul 2007,27.5
+MSFT,Aug 2007,27.34
+MSFT,Sep 2007,28.04
+MSFT,Oct 2007,35.03
+MSFT,Nov 2007,32.09
+MSFT,Dec 2007,34
+MSFT,Jan 2008,31.13
+MSFT,Feb 2008,26.07
+MSFT,Mar 2008,27.21
+MSFT,Apr 2008,27.34
+MSFT,May 2008,27.25
+MSFT,Jun 2008,26.47
+MSFT,Jul 2008,24.75
+MSFT,Aug 2008,26.36
+MSFT,Sep 2008,25.78
+MSFT,Oct 2008,21.57
+MSFT,Nov 2008,19.66
+MSFT,Dec 2008,18.91
+MSFT,Jan 2009,16.63
+MSFT,Feb 2009,15.81
+MSFT,Mar 2009,17.99
+MSFT,Apr 2009,19.84
+MSFT,May 2009,20.59
+MSFT,Jun 2009,23.42
+MSFT,Jul 2009,23.18
+MSFT,Aug 2009,24.43
+MSFT,Sep 2009,25.49
+MSFT,Oct 2009,27.48
+MSFT,Nov 2009,29.27
+MSFT,Dec 2009,30.34
+MSFT,Jan 2010,28.05
+MSFT,Feb 2010,28.67
+MSFT,Mar 2010,28.8
+AMZN,Jan 2000,64.56
+AMZN,Feb 2000,68.87
+AMZN,Mar 2000,67
+AMZN,Apr 2000,55.19
+AMZN,May 2000,48.31
+AMZN,Jun 2000,36.31
+AMZN,Jul 2000,30.12
+AMZN,Aug 2000,41.5
+AMZN,Sep 2000,38.44
+AMZN,Oct 2000,36.62
+AMZN,Nov 2000,24.69
+AMZN,Dec 2000,15.56
+AMZN,Jan 2001,17.31
+AMZN,Feb 2001,10.19
+AMZN,Mar 2001,10.23
+AMZN,Apr 2001,15.78
+AMZN,May 2001,16.69
+AMZN,Jun 2001,14.15
+AMZN,Jul 2001,12.49
+AMZN,Aug 2001,8.94
+AMZN,Sep 2001,5.97
+AMZN,Oct 2001,6.98
+AMZN,Nov 2001,11.32
+AMZN,Dec 2001,10.82
+AMZN,Jan 2002,14.19
+AMZN,Feb 2002,14.1
+AMZN,Mar 2002,14.3
+AMZN,Apr 2002,16.69
+AMZN,May 2002,18.23
+AMZN,Jun 2002,16.25
+AMZN,Jul 2002,14.45
+AMZN,Aug 2002,14.94
+AMZN,Sep 2002,15.93
+AMZN,Oct 2002,19.36
+AMZN,Nov 2002,23.35
+AMZN,Dec 2002,18.89
+AMZN,Jan 2003,21.85
+AMZN,Feb 2003,22.01
+AMZN,Mar 2003,26.03
+AMZN,Apr 2003,28.69
+AMZN,May 2003,35.89
+AMZN,Jun 2003,36.32
+AMZN,Jul 2003,41.64
+AMZN,Aug 2003,46.32
+AMZN,Sep 2003,48.43
+AMZN,Oct 2003,54.43
+AMZN,Nov 2003,53.97
+AMZN,Dec 2003,52.62
+AMZN,Jan 2004,50.4
+AMZN,Feb 2004,43.01
+AMZN,Mar 2004,43.28
+AMZN,Apr 2004,43.6
+AMZN,May 2004,48.5
+AMZN,Jun 2004,54.4
+AMZN,Jul 2004,38.92
+AMZN,Aug 2004,38.14
+AMZN,Sep 2004,40.86
+AMZN,Oct 2004,34.13
+AMZN,Nov 2004,39.68
+AMZN,Dec 2004,44.29
+AMZN,Jan 2005,43.22
+AMZN,Feb 2005,35.18
+AMZN,Mar 2005,34.27
+AMZN,Apr 2005,32.36
+AMZN,May 2005,35.51
+AMZN,Jun 2005,33.09
+AMZN,Jul 2005,45.15
+AMZN,Aug 2005,42.7
+AMZN,Sep 2005,45.3
+AMZN,Oct 2005,39.86
+AMZN,Nov 2005,48.46
+AMZN,Dec 2005,47.15
+AMZN,Jan 2006,44.82
+AMZN,Feb 2006,37.44
+AMZN,Mar 2006,36.53
+AMZN,Apr 2006,35.21
+AMZN,May 2006,34.61
+AMZN,Jun 2006,38.68
+AMZN,Jul 2006,26.89
+AMZN,Aug 2006,30.83
+AMZN,Sep 2006,32.12
+AMZN,Oct 2006,38.09
+AMZN,Nov 2006,40.34
+AMZN,Dec 2006,39.46
+AMZN,Jan 2007,37.67
+AMZN,Feb 2007,39.14
+AMZN,Mar 2007,39.79
+AMZN,Apr 2007,61.33
+AMZN,May 2007,69.14
+AMZN,Jun 2007,68.41
+AMZN,Jul 2007,78.54
+AMZN,Aug 2007,79.91
+AMZN,Sep 2007,93.15
+AMZN,Oct 2007,89.15
+AMZN,Nov 2007,90.56
+AMZN,Dec 2007,92.64
+AMZN,Jan 2008,77.7
+AMZN,Feb 2008,64.47
+AMZN,Mar 2008,71.3
+AMZN,Apr 2008,78.63
+AMZN,May 2008,81.62
+AMZN,Jun 2008,73.33
+AMZN,Jul 2008,76.34
+AMZN,Aug 2008,80.81
+AMZN,Sep 2008,72.76
+AMZN,Oct 2008,57.24
+AMZN,Nov 2008,42.7
+AMZN,Dec 2008,51.28
+AMZN,Jan 2009,58.82
+AMZN,Feb 2009,64.79
+AMZN,Mar 2009,73.44
+AMZN,Apr 2009,80.52
+AMZN,May 2009,77.99
+AMZN,Jun 2009,83.66
+AMZN,Jul 2009,85.76
+AMZN,Aug 2009,81.19
+AMZN,Sep 2009,93.36
+AMZN,Oct 2009,118.81
+AMZN,Nov 2009,135.91
+AMZN,Dec 2009,134.52
+AMZN,Jan 2010,125.41
+AMZN,Feb 2010,118.4
+AMZN,Mar 2010,128.82
+IBM,Jan 2000,100.52
+IBM,Feb 2000,92.11
+IBM,Mar 2000,106.11
+IBM,Apr 2000,99.95
+IBM,May 2000,96.31
+IBM,Jun 2000,98.33
+IBM,Jul 2000,100.74
+IBM,Aug 2000,118.62
+IBM,Sep 2000,101.19
+IBM,Oct 2000,88.5
+IBM,Nov 2000,84.12
+IBM,Dec 2000,76.47
+IBM,Jan 2001,100.76
+IBM,Feb 2001,89.98
+IBM,Mar 2001,86.63
+IBM,Apr 2001,103.7
+IBM,May 2001,100.82
+IBM,Jun 2001,102.35
+IBM,Jul 2001,94.87
+IBM,Aug 2001,90.25
+IBM,Sep 2001,82.82
+IBM,Oct 2001,97.58
+IBM,Nov 2001,104.5
+IBM,Dec 2001,109.36
+IBM,Jan 2002,97.54
+IBM,Feb 2002,88.82
+IBM,Mar 2002,94.15
+IBM,Apr 2002,75.82
+IBM,May 2002,72.97
+IBM,Jun 2002,65.31
+IBM,Jul 2002,63.86
+IBM,Aug 2002,68.52
+IBM,Sep 2002,53.01
+IBM,Oct 2002,71.76
+IBM,Nov 2002,79.16
+IBM,Dec 2002,70.58
+IBM,Jan 2003,71.22
+IBM,Feb 2003,71.13
+IBM,Mar 2003,71.57
+IBM,Apr 2003,77.47
+IBM,May 2003,80.48
+IBM,Jun 2003,75.42
+IBM,Jul 2003,74.28
+IBM,Aug 2003,75.12
+IBM,Sep 2003,80.91
+IBM,Oct 2003,81.96
+IBM,Nov 2003,83.08
+IBM,Dec 2003,85.05
+IBM,Jan 2004,91.06
+IBM,Feb 2004,88.7
+IBM,Mar 2004,84.41
+IBM,Apr 2004,81.04
+IBM,May 2004,81.59
+IBM,Jun 2004,81.19
+IBM,Jul 2004,80.19
+IBM,Aug 2004,78.17
+IBM,Sep 2004,79.13
+IBM,Oct 2004,82.84
+IBM,Nov 2004,87.15
+IBM,Dec 2004,91.16
+IBM,Jan 2005,86.39
+IBM,Feb 2005,85.78
+IBM,Mar 2005,84.66
+IBM,Apr 2005,70.77
+IBM,May 2005,70.18
+IBM,Jun 2005,68.93
+IBM,Jul 2005,77.53
+IBM,Aug 2005,75.07
+IBM,Sep 2005,74.7
+IBM,Oct 2005,76.25
+IBM,Nov 2005,82.98
+IBM,Dec 2005,76.73
+IBM,Jan 2006,75.89
+IBM,Feb 2006,75.09
+IBM,Mar 2006,77.17
+IBM,Apr 2006,77.05
+IBM,May 2006,75.04
+IBM,Jun 2006,72.15
+IBM,Jul 2006,72.7
+IBM,Aug 2006,76.35
+IBM,Sep 2006,77.26
+IBM,Oct 2006,87.06
+IBM,Nov 2006,86.95
+IBM,Dec 2006,91.9
+IBM,Jan 2007,93.79
+IBM,Feb 2007,88.18
+IBM,Mar 2007,89.44
+IBM,Apr 2007,96.98
+IBM,May 2007,101.54
+IBM,Jun 2007,100.25
+IBM,Jul 2007,105.4
+IBM,Aug 2007,111.54
+IBM,Sep 2007,112.6
+IBM,Oct 2007,111
+IBM,Nov 2007,100.9
+IBM,Dec 2007,103.7
+IBM,Jan 2008,102.75
+IBM,Feb 2008,109.64
+IBM,Mar 2008,110.87
+IBM,Apr 2008,116.23
+IBM,May 2008,125.14
+IBM,Jun 2008,114.6
+IBM,Jul 2008,123.74
+IBM,Aug 2008,118.16
+IBM,Sep 2008,113.53
+IBM,Oct 2008,90.24
+IBM,Nov 2008,79.65
+IBM,Dec 2008,82.15
+IBM,Jan 2009,89.46
+IBM,Feb 2009,90.32
+IBM,Mar 2009,95.09
+IBM,Apr 2009,101.29
+IBM,May 2009,104.85
+IBM,Jun 2009,103.01
+IBM,Jul 2009,116.34
+IBM,Aug 2009,117
+IBM,Sep 2009,118.55
+IBM,Oct 2009,119.54
+IBM,Nov 2009,125.79
+IBM,Dec 2009,130.32
+IBM,Jan 2010,121.85
+IBM,Feb 2010,127.16
+IBM,Mar 2010,125.55
+GOOG,Aug 2004,102.37
+GOOG,Sep 2004,129.6
+GOOG,Oct 2004,190.64
+GOOG,Nov 2004,181.98
+GOOG,Dec 2004,192.79
+GOOG,Jan 2005,195.62
+GOOG,Feb 2005,187.99
+GOOG,Mar 2005,180.51
+GOOG,Apr 2005,220
+GOOG,May 2005,277.27
+GOOG,Jun 2005,294.15
+GOOG,Jul 2005,287.76
+GOOG,Aug 2005,286
+GOOG,Sep 2005,316.46
+GOOG,Oct 2005,372.14
+GOOG,Nov 2005,404.91
+GOOG,Dec 2005,414.86
+GOOG,Jan 2006,432.66
+GOOG,Feb 2006,362.62
+GOOG,Mar 2006,390
+GOOG,Apr 2006,417.94
+GOOG,May 2006,371.82
+GOOG,Jun 2006,419.33
+GOOG,Jul 2006,386.6
+GOOG,Aug 2006,378.53
+GOOG,Sep 2006,401.9
+GOOG,Oct 2006,476.39
+GOOG,Nov 2006,484.81
+GOOG,Dec 2006,460.48
+GOOG,Jan 2007,501.5
+GOOG,Feb 2007,449.45
+GOOG,Mar 2007,458.16
+GOOG,Apr 2007,471.38
+GOOG,May 2007,497.91
+GOOG,Jun 2007,522.7
+GOOG,Jul 2007,510
+GOOG,Aug 2007,515.25
+GOOG,Sep 2007,567.27
+GOOG,Oct 2007,707
+GOOG,Nov 2007,693
+GOOG,Dec 2007,691.48
+GOOG,Jan 2008,564.3
+GOOG,Feb 2008,471.18
+GOOG,Mar 2008,440.47
+GOOG,Apr 2008,574.29
+GOOG,May 2008,585.8
+GOOG,Jun 2008,526.42
+GOOG,Jul 2008,473.75
+GOOG,Aug 2008,463.29
+GOOG,Sep 2008,400.52
+GOOG,Oct 2008,359.36
+GOOG,Nov 2008,292.96
+GOOG,Dec 2008,307.65
+GOOG,Jan 2009,338.53
+GOOG,Feb 2009,337.99
+GOOG,Mar 2009,348.06
+GOOG,Apr 2009,395.97
+GOOG,May 2009,417.23
+GOOG,Jun 2009,421.59
+GOOG,Jul 2009,443.05
+GOOG,Aug 2009,461.67
+GOOG,Sep 2009,495.85
+GOOG,Oct 2009,536.12
+GOOG,Nov 2009,583
+GOOG,Dec 2009,619.98
+GOOG,Jan 2010,529.94
+GOOG,Feb 2010,526.8
+GOOG,Mar 2010,560.19
+10 Year T-Note,Jan 2000,6.67
+10 Year T-Note,Feb 2000,6.41
+10 Year T-Note,Mar 2000,6.02
+10 Year T-Note,Apr 2000,6.21
+10 Year T-Note,May 2000,6.28
+10 Year T-Note,Jun 2000,6.02
+10 Year T-Note,Jul 2000,6.03
+10 Year T-Note,Aug 2000,5.73
+10 Year T-Note,Sep 2000,5.78
+10 Year T-Note,Oct 2000,5.76
+10 Year T-Note,Nov 2000,5.44
+10 Year T-Note,Dec 2000,5.11
+10 Year T-Note,Jan 2001,5.18
+10 Year T-Note,Feb 2001,4.91
+10 Year T-Note,Mar 2001,4.91
+10 Year T-Note,Apr 2001,5.34
+10 Year T-Note,May 2001,5.41
+10 Year T-Note,Jun 2001,5.39
+10 Year T-Note,Jul 2001,5.04
+10 Year T-Note,Aug 2001,4.82
+10 Year T-Note,Sep 2001,4.57
+10 Year T-Note,Oct 2001,4.26
+10 Year T-Note,Nov 2001,4.74
+10 Year T-Note,Dec 2001,5.03
+10 Year T-Note,Jan 2002,5.03
+10 Year T-Note,Feb 2002,4.86
+10 Year T-Note,Mar 2002,5.41
+10 Year T-Note,Apr 2002,5.09
+10 Year T-Note,May 2002,5.04
+10 Year T-Note,Jun 2002,4.82
+10 Year T-Note,Jul 2002,4.47
+10 Year T-Note,Aug 2002,4.14
+10 Year T-Note,Sep 2002,3.61
+10 Year T-Note,Oct 2002,3.91
+10 Year T-Note,Nov 2002,4.21
+10 Year T-Note,Dec 2002,3.82
+10 Year T-Note,Jan 2003,3.97
+10 Year T-Note,Feb 2003,3.7
+10 Year T-Note,Mar 2003,3.82
+10 Year T-Note,Apr 2003,3.86
+10 Year T-Note,May 2003,3.35
+10 Year T-Note,Jun 2003,3.53
+10 Year T-Note,Jul 2003,4.47
+10 Year T-Note,Aug 2003,4.45
+10 Year T-Note,Sep 2003,3.94
+10 Year T-Note,Oct 2003,4.3
+10 Year T-Note,Nov 2003,4.32
+10 Year T-Note,Dec 2003,4.26
+10 Year T-Note,Jan 2004,4.14
+10 Year T-Note,Feb 2004,3.98
+10 Year T-Note,Mar 2004,3.84
+10 Year T-Note,Apr 2004,4.5
+10 Year T-Note,May 2004,4.66
+10 Year T-Note,Jun 2004,4.62
+10 Year T-Note,Jul 2004,4.47
+10 Year T-Note,Aug 2004,4.13
+10 Year T-Note,Sep 2004,4.12
+10 Year T-Note,Oct 2004,4.03
+10 Year T-Note,Nov 2004,4.36
+10 Year T-Note,Dec 2004,4.22
+10 Year T-Note,Jan 2005,4.13
+10 Year T-Note,Feb 2005,4.36
+10 Year T-Note,Mar 2005,4.5
+10 Year T-Note,Apr 2005,4.2
+10 Year T-Note,May 2005,4.01
+10 Year T-Note,Jun 2005,3.94
+10 Year T-Note,Jul 2005,4.29
+10 Year T-Note,Aug 2005,4.02
+10 Year T-Note,Sep 2005,4.33
+10 Year T-Note,Oct 2005,4.56
+10 Year T-Note,Nov 2005,4.5
+10 Year T-Note,Dec 2005,4.39
+10 Year T-Note,Jan 2006,4.53
+10 Year T-Note,Feb 2006,4.55
+10 Year T-Note,Mar 2006,4.85
+10 Year T-Note,Apr 2006,5.07
+10 Year T-Note,May 2006,5.11
+10 Year T-Note,Jun 2006,5.14
+10 Year T-Note,Jul 2006,4.99
+10 Year T-Note,Aug 2006,4.73
+10 Year T-Note,Sep 2006,4.63
+10 Year T-Note,Oct 2006,4.61
+10 Year T-Note,Nov 2006,4.46
+10 Year T-Note,Dec 2006,4.71
+10 Year T-Note,Jan 2007,4.83
+10 Year T-Note,Feb 2007,4.55
+10 Year T-Note,Mar 2007,4.65
+10 Year T-Note,Apr 2007,4.63
+10 Year T-Note,May 2007,4.89
+10 Year T-Note,Jun 2007,5.03
+10 Year T-Note,Jul 2007,4.77
+10 Year T-Note,Aug 2007,4.54
+10 Year T-Note,Sep 2007,4.58
+10 Year T-Note,Oct 2007,4.47
+10 Year T-Note,Nov 2007,3.97
+10 Year T-Note,Dec 2007,4.03
+10 Year T-Note,Jan 2008,3.64
+10 Year T-Note,Feb 2008,3.53
+10 Year T-Note,Mar 2008,3.43
+10 Year T-Note,Apr 2008,3.76
+10 Year T-Note,May 2008,4.05
+10 Year T-Note,Jun 2008,3.98
+10 Year T-Note,Jul 2008,3.98
+10 Year T-Note,Aug 2008,3.81
+10 Year T-Note,Sep 2008,3.83
+10 Year T-Note,Oct 2008,3.97
+10 Year T-Note,Nov 2008,2.96
+10 Year T-Note,Dec 2008,2.24
+10 Year T-Note,Jan 2009,2.84
+10 Year T-Note,Feb 2009,3.04
+10 Year T-Note,Mar 2009,2.68
+10 Year T-Note,Apr 2009,3.12
+10 Year T-Note,May 2009,3.46
+10 Year T-Note,Jun 2009,3.52
+10 Year T-Note,Jul 2009,3.5
+10 Year T-Note,Aug 2009,3.4
+10 Year T-Note,Sep 2009,3.31
+10 Year T-Note,Oct 2009,3.39
+10 Year T-Note,Nov 2009,3.2
+10 Year T-Note,Dec 2009,3.84
+10 Year T-Note,Jan 2010,3.61
+10 Year T-Note,Feb 2010,3.6
+10 Year T-Note,Mar 2010,3.7
+AAPL,Jan 2000,25.94
+AAPL,Feb 2000,28.66
+AAPL,Mar 2000,33.95
+AAPL,Apr 2000,31.01
+AAPL,May 2000,21
+AAPL,Jun 2000,26.19
+AAPL,Jul 2000,25.41
+AAPL,Aug 2000,30.47
+AAPL,Sep 2000,12.88
+AAPL,Oct 2000,9.78
+AAPL,Nov 2000,8.25
+AAPL,Dec 2000,7.44
+AAPL,Jan 2001,10.81
+AAPL,Feb 2001,9.12
+AAPL,Mar 2001,11.03
+AAPL,Apr 2001,12.74
+AAPL,May 2001,9.98
+AAPL,Jun 2001,11.62
+AAPL,Jul 2001,9.4
+AAPL,Aug 2001,9.27
+AAPL,Sep 2001,7.76
+AAPL,Oct 2001,8.78
+AAPL,Nov 2001,10.65
+AAPL,Dec 2001,10.95
+AAPL,Jan 2002,12.36
+AAPL,Feb 2002,10.85
+AAPL,Mar 2002,11.84
+AAPL,Apr 2002,12.14
+AAPL,May 2002,11.65
+AAPL,Jun 2002,8.86
+AAPL,Jul 2002,7.63
+AAPL,Aug 2002,7.38
+AAPL,Sep 2002,7.25
+AAPL,Oct 2002,8.03
+AAPL,Nov 2002,7.75
+AAPL,Dec 2002,7.16
+AAPL,Jan 2003,7.18
+AAPL,Feb 2003,7.51
+AAPL,Mar 2003,7.07
+AAPL,Apr 2003,7.11
+AAPL,May 2003,8.98
+AAPL,Jun 2003,9.53
+AAPL,Jul 2003,10.54
+AAPL,Aug 2003,11.31
+AAPL,Sep 2003,10.36
+AAPL,Oct 2003,11.44
+AAPL,Nov 2003,10.45
+AAPL,Dec 2003,10.69
+AAPL,Jan 2004,11.28
+AAPL,Feb 2004,11.96
+AAPL,Mar 2004,13.52
+AAPL,Apr 2004,12.89
+AAPL,May 2004,14.03
+AAPL,Jun 2004,16.27
+AAPL,Jul 2004,16.17
+AAPL,Aug 2004,17.25
+AAPL,Sep 2004,19.38
+AAPL,Oct 2004,26.2
+AAPL,Nov 2004,33.53
+AAPL,Dec 2004,32.2
+AAPL,Jan 2005,38.45
+AAPL,Feb 2005,44.86
+AAPL,Mar 2005,41.67
+AAPL,Apr 2005,36.06
+AAPL,May 2005,39.76
+AAPL,Jun 2005,36.81
+AAPL,Jul 2005,42.65
+AAPL,Aug 2005,46.89
+AAPL,Sep 2005,53.61
+AAPL,Oct 2005,57.59
+AAPL,Nov 2005,67.82
+AAPL,Dec 2005,71.89
+AAPL,Jan 2006,75.51
+AAPL,Feb 2006,68.49
+AAPL,Mar 2006,62.72
+AAPL,Apr 2006,70.39
+AAPL,May 2006,59.77
+AAPL,Jun 2006,57.27
+AAPL,Jul 2006,67.96
+AAPL,Aug 2006,67.85
+AAPL,Sep 2006,76.98
+AAPL,Oct 2006,81.08
+AAPL,Nov 2006,91.66
+AAPL,Dec 2006,84.84
+AAPL,Jan 2007,85.73
+AAPL,Feb 2007,84.61
+AAPL,Mar 2007,92.91
+AAPL,Apr 2007,99.8
+AAPL,May 2007,121.19
+AAPL,Jun 2007,122.04
+AAPL,Jul 2007,131.76
+AAPL,Aug 2007,138.48
+AAPL,Sep 2007,153.47
+AAPL,Oct 2007,189.95
+AAPL,Nov 2007,182.22
+AAPL,Dec 2007,198.08
+AAPL,Jan 2008,135.36
+AAPL,Feb 2008,125.02
+AAPL,Mar 2008,143.5
+AAPL,Apr 2008,173.95
+AAPL,May 2008,188.75
+AAPL,Jun 2008,167.44
+AAPL,Jul 2008,158.95
+AAPL,Aug 2008,169.53
+AAPL,Sep 2008,113.66
+AAPL,Oct 2008,107.59
+AAPL,Nov 2008,92.67
+AAPL,Dec 2008,85.35
+AAPL,Jan 2009,90.13
+AAPL,Feb 2009,89.31
+AAPL,Mar 2009,105.12
+AAPL,Apr 2009,125.83
+AAPL,May 2009,135.81
+AAPL,Jun 2009,142.43
+AAPL,Jul 2009,163.39
+AAPL,Aug 2009,168.21
+AAPL,Sep 2009,185.35
+AAPL,Oct 2009,188.5
+AAPL,Nov 2009,199.91
+AAPL,Dec 2009,210.73
+AAPL,Jan 2010,192.06
+AAPL,Feb 2010,204.62
+AAPL,Mar 2010,223.02
diff --git a/static/vendor/d3-2.8.1/examples/data/unemployment.csv b/static/vendor/d3-2.8.1/examples/data/unemployment.csv
new file mode 100755 (executable)
index 0000000..58fcb90
--- /dev/null
@@ -0,0 +1,1709 @@
+series,count,rate,date
+35181,680,6.5,2010-02-01
+35181,730,7.2,2010-01-01
+35181,609,5.9,2009-12-01
+35181,592,5.7,2009-11-01
+35181,610,5.9,2009-10-01
+35181,636,5.9,2009-09-01
+35181,569,5.3,2009-08-01
+35181,552,5.2,2009-07-01
+35181,472,4.4,2009-06-01
+35181,530,5,2009-05-01
+35181,488,4.6,2009-04-01
+35181,625,5.9,2009-03-01
+35181,586,5.7,2009-02-01
+35181,659,6.5,2009-01-01
+35181,559,5.5,2008-12-01
+35181,411,4.1,2008-11-01
+35181,396,3.9,2008-10-01
+35181,414,3.9,2008-09-01
+35181,378,3.5,2008-08-01
+35181,345,3.1,2008-07-01
+35181,364,3.3,2008-06-01
+35181,366,3.4,2008-05-01
+35181,338,3.2,2008-04-01
+35181,346,3.3,2008-03-01
+35181,340,3.2,2008-02-01
+35181,338,3.3,2008-01-01
+35181,326,3.2,2007-12-01
+35181,336,3.2,2007-11-01
+35181,338,3.1,2007-10-01
+35181,304,2.8,2007-09-01
+35181,315,2.9,2007-08-01
+35181,324,2.9,2007-07-01
+35181,258,2.3,2007-06-01
+35181,276,2.5,2007-05-01
+35181,240,2.2,2007-04-01
+35181,311,2.8,2007-03-01
+35181,300,2.8,2007-02-01
+35181,376,3.5,2007-01-01
+35181,287,2.6,2006-12-01
+35181,257,2.3,2006-11-01
+35181,275,2.5,2006-10-01
+35181,299,2.7,2006-09-01
+35181,306,2.7,2006-08-01
+35181,291,2.6,2006-07-01
+35181,245,2.2,2006-06-01
+35181,251,2.3,2006-05-01
+35181,334,3.1,2006-04-01
+35181,300,2.8,2006-03-01
+35181,332,3.1,2006-02-01
+35181,341,3.2,2006-01-01
+35181,327,3.1,2005-12-01
+35181,319,3,2005-11-01
+35181,255,2.3,2005-10-01
+35181,282,2.6,2005-09-01
+35181,249,2.3,2005-08-01
+35181,282,2.5,2005-07-01
+35181,268,2.4,2005-06-01
+35181,299,2.7,2005-05-01
+35181,273,2.4,2005-04-01
+35181,312,2.9,2005-03-01
+35181,363,3.4,2005-02-01
+35181,346,3.2,2005-01-01
+35181,341,3.2,2004-12-01
+35181,353,3.2,2004-11-01
+35181,301,2.7,2004-10-01
+35181,362,3.3,2004-09-01
+35181,324,2.9,2004-08-01
+35181,291,2.6,2004-07-01
+35181,306,2.8,2004-06-01
+35181,287,2.7,2004-05-01
+35181,242,2.3,2004-04-01
+35181,260,2.5,2004-03-01
+35181,260,2.5,2004-02-01
+35181,302,2.8,2004-01-01
+35181,299,2.8,2003-12-01
+35181,308,2.8,2003-11-01
+35181,338,3.1,2003-10-01
+35181,287,2.6,2003-09-01
+35181,302,2.7,2003-08-01
+35181,270,2.5,2003-07-01
+35181,295,2.7,2003-06-01
+35181,271,2.6,2003-05-01
+35181,248,2.4,2003-04-01
+35181,279,2.7,2003-03-01
+35181,304,3,2003-02-01
+35181,324,3,2003-01-01
+35181,327,3.1,2002-12-01
+35181,297,2.8,2002-11-01
+35181,275,2.6,2002-10-01
+35181,266,2.5,2002-09-01
+35181,271,2.6,2002-08-01
+35181,249,2.4,2002-07-01
+35181,246,2.4,2002-06-01
+35181,264,2.6,2002-05-01
+35181,255,2.5,2002-04-01
+35181,217,2.2,2002-03-01
+35181,250,2.6,2002-02-01
+35181,263,2.7,2002-01-01
+35181,249,2.5,2001-12-01
+35181,234,2.3,2001-11-01
+35181,247,2.3,2001-10-01
+35181,256,2.4,2001-09-01
+35181,243,2.3,2001-08-01
+35181,191,1.8,2001-07-01
+35181,187,1.7,2001-06-01
+35181,206,2,2001-05-01
+35181,216,2.1,2001-04-01
+35181,181,1.7,2001-03-01
+35181,209,2,2001-02-01
+35181,194,1.9,2001-01-01
+35181,178,1.8,2000-12-01
+35181,273,2.7,2000-11-01
+35181,226,2.2,2000-10-01
+35181,213,2,2000-09-01
+35181,186,1.7,2000-08-01
+35181,222,2.1,2000-07-01
+35181,188,1.8,2000-06-01
+35181,206,1.9,2000-05-01
+35181,218,2,2000-04-01
+35181,213,2,2000-03-01
+35181,262,2.5,2000-02-01
+35181,239,2.3,2000-01-01
+35109,285,18.8,2010-02-01
+35109,318,21.3,2010-01-01
+35109,292,19.7,2009-12-01
+35109,180,12.6,2009-11-01
+35109,166,11.8,2009-10-01
+35109,150,11.1,2009-09-01
+35109,195,13.1,2009-08-01
+35109,180,12.1,2009-07-01
+35109,182,12.3,2009-06-01
+35109,136,10,2009-05-01
+35109,176,13.5,2009-04-01
+35109,241,19,2009-03-01
+35109,251,18.8,2009-02-01
+35109,245,18.7,2009-01-01
+35109,229,17,2008-12-01
+35109,119,9.5,2008-11-01
+35109,97,7.1,2008-10-01
+35109,84,5.8,2008-09-01
+35109,111,7.6,2008-08-01
+35109,125,8.5,2008-07-01
+35109,86,6.1,2008-06-01
+35109,94,7.4,2008-05-01
+35109,108,8.6,2008-04-01
+35109,175,13.2,2008-03-01
+35109,135,10.9,2008-02-01
+35109,113,9.5,2008-01-01
+35109,96,7.5,2007-12-01
+35109,80,6.6,2007-11-01
+35109,47,4,2007-10-01
+35109,53,4.3,2007-09-01
+35109,54,4.7,2007-08-01
+35109,40,3.1,2007-07-01
+35109,59,4.5,2007-06-01
+35109,64,5.1,2007-05-01
+35109,67,5.7,2007-04-01
+35109,123,9.7,2007-03-01
+35109,127,9.6,2007-02-01
+35109,128,10,2007-01-01
+35109,139,10.4,2006-12-01
+35109,125,9.6,2006-11-01
+35109,77,5.8,2006-10-01
+35109,78,5.9,2006-09-01
+35109,76,5.3,2006-08-01
+35109,55,3.6,2006-07-01
+35109,35,2.4,2006-06-01
+35109,79,6,2006-05-01
+35109,81,6.2,2006-04-01
+35109,117,9.8,2006-03-01
+35109,139,11.8,2006-02-01
+35109,140,11.5,2006-01-01
+35109,127,11.1,2005-12-01
+35109,118,9.6,2005-11-01
+35109,85,6.7,2005-10-01
+35109,127,9.5,2005-09-01
+35109,100,7.1,2005-08-01
+35109,69,4.7,2005-07-01
+35109,76,5.2,2005-06-01
+35109,66,5.3,2005-05-01
+35109,84,6.9,2005-04-01
+35109,139,11.8,2005-03-01
+35109,107,9.9,2005-02-01
+35109,153,13.2,2005-01-01
+35109,165,14,2004-12-01
+35109,131,10.5,2004-11-01
+35109,102,7.7,2004-10-01
+35109,88,6.4,2004-09-01
+35109,103,7,2004-08-01
+35109,140,10,2004-07-01
+35109,106,7.6,2004-06-01
+35109,99,7.4,2004-05-01
+35109,107,8.3,2004-04-01
+35109,153,12.7,2004-03-01
+35109,168,14.2,2004-02-01
+35109,184,15.1,2004-01-01
+35109,137,10.9,2003-12-01
+35109,148,10.3,2003-11-01
+35109,136,8.5,2003-10-01
+35109,98,6.2,2003-09-01
+35109,173,10.7,2003-08-01
+35109,113,8.2,2003-07-01
+35109,94,6.9,2003-06-01
+35109,133,10.2,2003-05-01
+35109,154,12,2003-04-01
+35109,161,12.9,2003-03-01
+35109,172,14.7,2003-02-01
+35109,159,13.2,2003-01-01
+35109,120,9.8,2002-12-01
+35109,137,11.1,2002-11-01
+35109,97,6.6,2002-10-01
+35109,92,6.3,2002-09-01
+35109,125,9,2002-08-01
+35109,114,7.3,2002-07-01
+35109,89,6.3,2002-06-01
+35109,89,6.8,2002-05-01
+35109,151,10.8,2002-04-01
+35109,269,19.6,2002-03-01
+35109,187,14.8,2002-02-01
+35109,195,14.8,2002-01-01
+35109,192,15.1,2001-12-01
+35109,145,11.6,2001-11-01
+35109,118,8.7,2001-10-01
+35109,101,7.2,2001-09-01
+35109,141,9.3,2001-08-01
+35109,113,7.6,2001-07-01
+35109,130,9.7,2001-06-01
+35109,109,7.7,2001-05-01
+35109,140,10.4,2001-04-01
+35109,267,19.2,2001-03-01
+35109,193,15.1,2001-02-01
+35109,188,13.8,2001-01-01
+35109,196,13.9,2000-12-01
+35109,192,13.3,2000-11-01
+35109,113,8,2000-10-01
+35109,124,8.2,2000-09-01
+35109,110,7,2000-08-01
+35109,77,5,2000-07-01
+35109,109,6.7,2000-06-01
+35109,73,5.1,2000-05-01
+35109,135,8.9,2000-04-01
+35109,152,10.4,2000-03-01
+35109,173,11.5,2000-02-01
+35109,154,10.3,2000-01-01
+32242,603,9.9,2010-02-01
+32242,609,10,2010-01-01
+32242,513,8.2,2009-12-01
+32242,491,8,2009-11-01
+32242,541,8.5,2009-10-01
+32242,462,7.1,2009-09-01
+32242,528,8.2,2009-08-01
+32242,490,7.4,2009-07-01
+32242,557,8.4,2009-06-01
+32242,476,7.5,2009-05-01
+32242,403,6.4,2009-04-01
+32242,377,6,2009-03-01
+32242,453,7.3,2009-02-01
+32242,431,7.1,2009-01-01
+32242,367,6.1,2008-12-01
+32242,434,7,2008-11-01
+32242,334,5.3,2008-10-01
+32242,374,5.8,2008-09-01
+32242,412,6.3,2008-08-01
+32242,352,5.2,2008-07-01
+32242,322,5,2008-06-01
+32242,275,4.4,2008-05-01
+32242,251,4,2008-04-01
+32242,283,4.6,2008-03-01
+32242,313,5.1,2008-02-01
+32242,264,4.4,2008-01-01
+32242,235,3.9,2007-12-01
+32242,255,4.1,2007-11-01
+32242,182,3,2007-10-01
+32242,257,4.2,2007-09-01
+32242,239,3.8,2007-08-01
+32242,243,3.8,2007-07-01
+32242,256,4,2007-06-01
+32242,242,3.9,2007-05-01
+32242,224,3.6,2007-04-01
+32242,222,3.7,2007-03-01
+32242,257,4.3,2007-02-01
+32242,275,4.7,2007-01-01
+32242,306,5.2,2006-12-01
+32242,306,5,2006-11-01
+32242,268,4.4,2006-10-01
+32242,310,5,2006-09-01
+32242,341,5.3,2006-08-01
+32242,305,4.7,2006-07-01
+32242,265,4.3,2006-06-01
+32242,265,4.2,2006-05-01
+32242,266,4.1,2006-04-01
+32242,292,4.6,2006-03-01
+32242,281,4.4,2006-02-01
+32242,308,4.9,2006-01-01
+32242,269,4.3,2005-12-01
+32242,300,4.9,2005-11-01
+32242,319,5,2005-10-01
+32242,307,4.9,2005-09-01
+32242,306,4.8,2005-08-01
+32242,274,4.2,2005-07-01
+32242,291,4.6,2005-06-01
+32242,314,5,2005-05-01
+32242,306,4.9,2005-04-01
+32242,308,5,2005-03-01
+32242,325,5.3,2005-02-01
+32242,290,4.7,2005-01-01
+32242,276,4.3,2004-12-01
+32242,294,4.8,2004-11-01
+32242,300,4.8,2004-10-01
+32242,301,4.9,2004-09-01
+32242,341,5.6,2004-08-01
+32242,346,5.6,2004-07-01
+32242,326,5.4,2004-06-01
+32242,310,5.1,2004-05-01
+32242,347,5.6,2004-04-01
+32242,366,5.9,2004-03-01
+32242,366,5.9,2004-02-01
+32242,322,5.3,2004-01-01
+32242,278,4.5,2003-12-01
+32242,357,5.8,2003-11-01
+32242,378,6.1,2003-10-01
+32242,338,5.5,2003-09-01
+32242,373,6.1,2003-08-01
+32242,405,6.6,2003-07-01
+32242,359,5.9,2003-06-01
+32242,339,5.7,2003-05-01
+32242,331,5.5,2003-04-01
+32242,370,6.1,2003-03-01
+32242,331,5.7,2003-02-01
+32242,304,5.3,2003-01-01
+32242,241,4.2,2002-12-01
+32242,284,4.9,2002-11-01
+32242,272,4.6,2002-10-01
+32242,281,4.8,2002-09-01
+32242,353,6,2002-08-01
+32242,356,5.8,2002-07-01
+32242,335,5.5,2002-06-01
+32242,264,4.6,2002-05-01
+32242,268,4.6,2002-04-01
+32242,314,5.5,2002-03-01
+32242,339,5.6,2002-02-01
+32242,304,5.1,2002-01-01
+32242,277,4.5,2001-12-01
+32242,256,4.2,2001-11-01
+32242,239,4.1,2001-10-01
+32242,225,4,2001-09-01
+32242,241,4.5,2001-08-01
+32242,228,4.1,2001-07-01
+32242,246,4.6,2001-06-01
+32242,172,3.2,2001-05-01
+32242,220,3.8,2001-04-01
+32242,200,3.4,2001-03-01
+32242,243,4.2,2001-02-01
+32242,197,3.4,2001-01-01
+32242,167,2.9,2000-12-01
+32242,217,3.8,2000-11-01
+32242,161,2.9,2000-10-01
+32242,220,4,2000-09-01
+32242,187,3.5,2000-08-01
+32242,202,3.7,2000-07-01
+32242,225,3.9,2000-06-01
+32242,254,4.5,2000-05-01
+32242,240,4.2,2000-04-01
+32242,247,4.3,2000-03-01
+32242,232,4.1,2000-02-01
+32242,274,4.9,2000-01-01
+32241,1597,12.7,2010-02-01
+32241,1804,14.2,2010-01-01
+32241,1624,12.6,2009-12-01
+32241,1524,11.9,2009-11-01
+32241,1604,12.4,2009-10-01
+32241,1469,11.4,2009-09-01
+32241,1636,12,2009-08-01
+32241,1600,11.2,2009-07-01
+32241,1688,12.1,2009-06-01
+32241,1599,11.9,2009-05-01
+32241,1322,10.2,2009-04-01
+32241,1484,11.6,2009-03-01
+32241,1477,11.4,2009-02-01
+32241,1487,11.5,2009-01-01
+32241,1210,9.5,2008-12-01
+32241,1283,9.9,2008-11-01
+32241,1126,8.9,2008-10-01
+32241,1029,8.2,2008-09-01
+32241,1122,8.7,2008-08-01
+32241,1172,8.8,2008-07-01
+32241,1154,8.9,2008-06-01
+32241,1074,8.4,2008-05-01
+32241,874,6.9,2008-04-01
+32241,944,7.6,2008-03-01
+32241,1056,8.5,2008-02-01
+32241,1176,9.4,2008-01-01
+32241,961,7.9,2007-12-01
+32241,986,8.1,2007-11-01
+32241,911,7.5,2007-10-01
+32241,892,7.4,2007-09-01
+32241,877,7.1,2007-08-01
+32241,920,7.3,2007-07-01
+32241,917,7.2,2007-06-01
+32241,831,6.8,2007-05-01
+32241,822,6.9,2007-04-01
+32241,845,7,2007-03-01
+32241,879,7.4,2007-02-01
+32241,911,7.8,2007-01-01
+32241,701,5.9,2006-12-01
+32241,836,7.1,2006-11-01
+32241,795,6.6,2006-10-01
+32241,810,6.9,2006-09-01
+32241,855,6.9,2006-08-01
+32241,867,6.8,2006-07-01
+32241,942,7.4,2006-06-01
+32241,830,7,2006-05-01
+32241,882,7.6,2006-04-01
+32241,917,8,2006-03-01
+32241,1040,9.1,2006-02-01
+32241,910,8.1,2006-01-01
+32241,930,7.9,2005-12-01
+32241,966,8.1,2005-11-01
+32241,796,6.8,2005-10-01
+32241,842,7.3,2005-09-01
+32241,844,6.8,2005-08-01
+32241,929,7.4,2005-07-01
+32241,950,7.6,2005-06-01
+32241,944,7.7,2005-05-01
+32241,882,7.7,2005-04-01
+32241,967,8.3,2005-03-01
+32241,1008,8.8,2005-02-01
+32241,993,8.7,2005-01-01
+32241,850,7.4,2004-12-01
+32241,916,7.9,2004-11-01
+32241,853,7.3,2004-10-01
+32241,854,7.5,2004-09-01
+32241,1010,8.4,2004-08-01
+32241,965,7.8,2004-07-01
+32241,1189,9.6,2004-06-01
+32241,977,8.1,2004-05-01
+32241,925,7.9,2004-04-01
+32241,1039,9,2004-03-01
+32241,987,8.9,2004-02-01
+32241,1097,10,2004-01-01
+32241,885,8.2,2003-12-01
+32241,990,9,2003-11-01
+32241,933,8.3,2003-10-01
+32241,978,8.8,2003-09-01
+32241,1050,9,2003-08-01
+32241,1020,8.4,2003-07-01
+32241,1048,8.6,2003-06-01
+32241,955,7.9,2003-05-01
+32241,986,8.5,2003-04-01
+32241,1035,8.9,2003-03-01
+32241,1145,10,2003-02-01
+32241,1049,9.3,2003-01-01
+32241,922,8.2,2002-12-01
+32241,978,8.9,2002-11-01
+32241,956,8.5,2002-10-01
+32241,885,7.9,2002-09-01
+32241,884,7.5,2002-08-01
+32241,999,8.2,2002-07-01
+32241,1034,8.5,2002-06-01
+32241,1022,8.6,2002-05-01
+32241,953,8.4,2002-04-01
+32241,976,8.5,2002-03-01
+32241,973,8.7,2002-02-01
+32241,947,8.6,2002-01-01
+32241,938,8.5,2001-12-01
+32241,935,8.5,2001-11-01
+32241,903,8.3,2001-10-01
+32241,900,8,2001-09-01
+32241,767,6.8,2001-08-01
+32241,813,6.8,2001-07-01
+32241,821,7,2001-06-01
+32241,731,6.7,2001-05-01
+32241,744,6.8,2001-04-01
+32241,817,7.4,2001-03-01
+32241,821,7.5,2001-02-01
+32241,806,7.7,2001-01-01
+32241,639,5.9,2000-12-01
+32241,694,6.5,2000-11-01
+32241,691,6.5,2000-10-01
+32241,636,5.9,2000-09-01
+32241,675,6,2000-08-01
+32241,786,6.8,2000-07-01
+32241,833,7.3,2000-06-01
+32241,675,6.2,2000-05-01
+32241,658,6.1,2000-04-01
+32241,789,7.4,2000-03-01
+32241,779,7.5,2000-02-01
+32241,782,7.5,2000-01-01
+32240,1200,5.6,2010-02-01
+32240,1175,5.5,2010-01-01
+32240,1183,5.6,2009-12-01
+32240,1168,5.5,2009-11-01
+32240,1280,6,2009-10-01
+32240,1257,6,2009-09-01
+32240,1239,6,2009-08-01
+32240,1269,6.1,2009-07-01
+32240,1267,6.1,2009-06-01
+32240,1005,4.9,2009-05-01
+32240,964,4.6,2009-04-01
+32240,931,4.5,2009-03-01
+32240,847,4.1,2009-02-01
+32240,792,3.8,2009-01-01
+32240,791,3.8,2008-12-01
+32240,748,3.6,2008-11-01
+32240,797,3.9,2008-10-01
+32240,835,4.1,2008-09-01
+32240,844,4.3,2008-08-01
+32240,776,3.9,2008-07-01
+32240,669,3.4,2008-06-01
+32240,619,3.2,2008-05-01
+32240,551,2.8,2008-04-01
+32240,609,3.1,2008-03-01
+32240,562,2.9,2008-02-01
+32240,576,2.9,2008-01-01
+32240,521,2.6,2007-12-01
+32240,526,2.7,2007-11-01
+32240,534,2.7,2007-10-01
+32240,630,3.2,2007-09-01
+32240,648,3.4,2007-08-01
+32240,665,3.5,2007-07-01
+32240,653,3.4,2007-06-01
+32240,622,3.3,2007-05-01
+32240,555,2.9,2007-04-01
+32240,495,2.5,2007-03-01
+32240,489,2.5,2007-02-01
+32240,563,2.9,2007-01-01
+32240,502,2.6,2006-12-01
+32240,536,2.8,2006-11-01
+32240,531,2.8,2006-10-01
+32240,576,3,2006-09-01
+32240,611,3.2,2006-08-01
+32240,659,3.5,2006-07-01
+32240,617,3.3,2006-06-01
+32240,543,2.9,2006-05-01
+32240,558,3,2006-04-01
+32240,563,3,2006-03-01
+32240,528,2.8,2006-02-01
+32240,593,3.2,2006-01-01
+32240,529,2.8,2005-12-01
+32240,677,3.6,2005-11-01
+32240,628,3.4,2005-10-01
+32240,658,3.5,2005-09-01
+32240,644,3.5,2005-08-01
+32240,635,3.5,2005-07-01
+32240,667,3.6,2005-06-01
+32240,648,3.6,2005-05-01
+32240,591,3.3,2005-04-01
+32240,614,3.4,2005-03-01
+32240,619,3.4,2005-02-01
+32240,613,3.4,2005-01-01
+32240,562,3.1,2004-12-01
+32240,570,3.2,2004-11-01
+32240,526,2.9,2004-10-01
+32240,593,3.3,2004-09-01
+32240,647,3.7,2004-08-01
+32240,725,4,2004-07-01
+32240,769,4.2,2004-06-01
+32240,570,3.2,2004-05-01
+32240,589,3.3,2004-04-01
+32240,584,3.2,2004-03-01
+32240,608,3.4,2004-02-01
+32240,662,3.7,2004-01-01
+32240,620,3.5,2003-12-01
+32240,662,3.8,2003-11-01
+32240,639,3.6,2003-10-01
+32240,649,3.7,2003-09-01
+32240,760,4.3,2003-08-01
+32240,697,4,2003-07-01
+32240,769,4.4,2003-06-01
+32240,618,3.5,2003-05-01
+32240,611,3.4,2003-04-01
+32240,518,2.9,2003-03-01
+32240,576,3.2,2003-02-01
+32240,559,3.2,2003-01-01
+32240,558,3.2,2002-12-01
+32240,493,2.8,2002-11-01
+32240,517,3,2002-10-01
+32240,562,3.2,2002-09-01
+32240,660,3.9,2002-08-01
+32240,671,4,2002-07-01
+32240,638,3.9,2002-06-01
+32240,533,3.2,2002-05-01
+32240,493,2.9,2002-04-01
+32240,540,3.2,2002-03-01
+32240,590,3.5,2002-02-01
+32240,586,3.5,2002-01-01
+32240,483,2.9,2001-12-01
+32240,516,3.1,2001-11-01
+32240,486,2.9,2001-10-01
+32240,455,2.8,2001-09-01
+32240,595,3.7,2001-08-01
+32240,513,3.1,2001-07-01
+32240,476,3,2001-06-01
+32240,390,2.4,2001-05-01
+32240,341,2.1,2001-04-01
+32240,456,2.8,2001-03-01
+32240,423,2.6,2001-02-01
+32240,428,2.6,2001-01-01
+32240,293,1.8,2000-12-01
+32240,351,2.2,2000-11-01
+32240,339,2.1,2000-10-01
+32240,398,2.6,2000-09-01
+32240,450,2.9,2000-08-01
+32240,478,3.1,2000-07-01
+32240,452,2.9,2000-06-01
+32240,423,2.7,2000-05-01
+32240,329,2.1,2000-04-01
+32240,381,2.5,2000-03-01
+32240,349,2.2,2000-02-01
+32240,353,2.3,2000-01-01
+32239,1740,12,2010-02-01
+32239,1614,11.1,2010-01-01
+32239,1486,10.3,2009-12-01
+32239,1514,10.6,2009-11-01
+32239,1488,10.3,2009-10-01
+32239,1596,11.3,2009-09-01
+32239,1560,11,2009-08-01
+32239,1531,10.9,2009-07-01
+32239,1580,11.3,2009-06-01
+32239,1514,10.9,2009-05-01
+32239,1448,10.4,2009-04-01
+32239,1597,11.4,2009-03-01
+32239,1512,10.8,2009-02-01
+32239,1445,10.4,2009-01-01
+32239,1147,8.1,2008-12-01
+32239,992,7,2008-11-01
+32239,1052,7.5,2008-10-01
+32239,951,6.9,2008-09-01
+32239,961,6.9,2008-08-01
+32239,866,6.1,2008-07-01
+32239,890,6.2,2008-06-01
+32239,829,5.9,2008-05-01
+32239,736,5.3,2008-04-01
+32239,876,6.2,2008-03-01
+32239,866,6.2,2008-02-01
+32239,893,6.4,2008-01-01
+32239,803,5.7,2007-12-01
+32239,679,4.8,2007-11-01
+32239,675,4.8,2007-10-01
+32239,655,4.7,2007-09-01
+32239,683,4.9,2007-08-01
+32239,743,5.2,2007-07-01
+32239,722,5.2,2007-06-01
+32239,743,5.4,2007-05-01
+32239,689,5,2007-04-01
+32239,775,5.7,2007-03-01
+32239,825,6,2007-02-01
+32239,885,6.5,2007-01-01
+32239,791,5.9,2006-12-01
+32239,658,4.9,2006-11-01
+32239,768,5.6,2006-10-01
+32239,736,5.6,2006-09-01
+32239,681,5.1,2006-08-01
+32239,735,5.5,2006-07-01
+32239,753,5.7,2006-06-01
+32239,695,5.3,2006-05-01
+32239,644,4.9,2006-04-01
+32239,824,6.3,2006-03-01
+32239,841,6.5,2006-02-01
+32239,825,6.5,2006-01-01
+32239,788,6.1,2005-12-01
+32239,711,5.5,2005-11-01
+32239,748,5.8,2005-10-01
+32239,862,6.7,2005-09-01
+32239,728,5.7,2005-08-01
+32239,804,6.3,2005-07-01
+32239,743,5.8,2005-06-01
+32239,730,5.9,2005-05-01
+32239,714,5.7,2005-04-01
+32239,807,6.5,2005-03-01
+32239,916,7.2,2005-02-01
+32239,958,7.6,2005-01-01
+32239,875,6.9,2004-12-01
+32239,872,6.8,2004-11-01
+32239,781,6.2,2004-10-01
+32239,750,5.9,2004-09-01
+32239,845,6.7,2004-08-01
+32239,790,6.2,2004-07-01
+32239,814,6.5,2004-06-01
+32239,819,6.5,2004-05-01
+32239,752,6,2004-04-01
+32239,999,7.9,2004-03-01
+32239,964,7.7,2004-02-01
+32239,1070,8.7,2004-01-01
+32239,948,7.6,2003-12-01
+32239,948,7.7,2003-11-01
+32239,1014,8.1,2003-10-01
+32239,975,8,2003-09-01
+32239,881,7.2,2003-08-01
+32239,1021,8.2,2003-07-01
+32239,1092,8.5,2003-06-01
+32239,1105,8.4,2003-05-01
+32239,1076,8.3,2003-04-01
+32239,1190,9.1,2003-03-01
+32239,1140,8.9,2003-02-01
+32239,1112,8.9,2003-01-01
+32239,1038,8.3,2002-12-01
+32239,1029,8.2,2002-11-01
+32239,962,7.5,2002-10-01
+32239,1007,7.8,2002-09-01
+32239,926,7.2,2002-08-01
+32239,1075,8.2,2002-07-01
+32239,1079,8.2,2002-06-01
+32239,983,7.7,2002-05-01
+32239,951,7.3,2002-04-01
+32239,964,7.5,2002-03-01
+32239,973,7.7,2002-02-01
+32239,1120,8.9,2002-01-01
+32239,921,7.4,2001-12-01
+32239,946,7.6,2001-11-01
+32239,910,7.2,2001-10-01
+32239,810,6.4,2001-09-01
+32239,790,6.2,2001-08-01
+32239,731,5.7,2001-07-01
+32239,694,5.4,2001-06-01
+32239,652,5.3,2001-05-01
+32239,655,5.3,2001-04-01
+32239,652,5.3,2001-03-01
+32239,724,5.9,2001-02-01
+32239,734,5.8,2001-01-01
+32239,564,4.5,2000-12-01
+32239,547,4.4,2000-11-01
+32239,504,4.1,2000-10-01
+32239,559,4.6,2000-09-01
+32239,584,4.8,2000-08-01
+32239,636,5.1,2000-07-01
+32239,545,4.4,2000-06-01
+32239,561,4.7,2000-05-01
+32239,517,4.5,2000-04-01
+32239,623,5.4,2000-03-01
+32239,587,5.2,2000-02-01
+32239,655,5.7,2000-01-01
+32238,708,7.5,2010-02-01
+32238,623,6.6,2010-01-01
+32238,665,7.2,2009-12-01
+32238,619,6.7,2009-11-01
+32238,646,7,2009-10-01
+32238,657,7.1,2009-09-01
+32238,566,6,2009-08-01
+32238,570,6.1,2009-07-01
+32238,513,5.5,2009-06-01
+32238,536,5.7,2009-05-01
+32238,561,6,2009-04-01
+32238,639,6.8,2009-03-01
+32238,637,6.7,2009-02-01
+32238,571,6,2009-01-01
+32238,540,5.6,2008-12-01
+32238,494,5.2,2008-11-01
+32238,434,4.5,2008-10-01
+32238,380,4,2008-09-01
+32238,409,4.2,2008-08-01
+32238,350,3.6,2008-07-01
+32238,337,3.4,2008-06-01
+32238,361,3.7,2008-05-01
+32238,324,3.4,2008-04-01
+32238,323,3.4,2008-03-01
+32238,323,3.4,2008-02-01
+32238,285,3,2008-01-01
+32238,315,3.2,2007-12-01
+32238,261,2.7,2007-11-01
+32238,307,3.2,2007-10-01
+32238,316,3.3,2007-09-01
+32238,371,3.7,2007-08-01
+32238,307,3.1,2007-07-01
+32238,303,3.1,2007-06-01
+32238,281,2.9,2007-05-01
+32238,231,2.4,2007-04-01
+32238,252,2.6,2007-03-01
+32238,295,3.1,2007-02-01
+32238,233,2.4,2007-01-01
+32238,227,2.3,2006-12-01
+32238,229,2.3,2006-11-01
+32238,211,2.1,2006-10-01
+32238,235,2.4,2006-09-01
+32238,263,2.7,2006-08-01
+32238,329,3.4,2006-07-01
+32238,299,3.1,2006-06-01
+32238,289,3,2006-05-01
+32238,293,3.1,2006-04-01
+32238,298,3.1,2006-03-01
+32238,268,2.8,2006-02-01
+32238,233,2.4,2006-01-01
+32238,204,2.1,2005-12-01
+32238,268,2.8,2005-11-01
+32238,255,2.7,2005-10-01
+32238,260,2.7,2005-09-01
+32238,300,3.2,2005-08-01
+32238,309,3.3,2005-07-01
+32238,307,3.3,2005-06-01
+32238,288,3.1,2005-05-01
+32238,255,2.7,2005-04-01
+32238,261,2.7,2005-03-01
+32238,301,3.2,2005-02-01
+32238,252,2.7,2005-01-01
+32238,290,3.1,2004-12-01
+32238,290,3.1,2004-11-01
+32238,358,3.8,2004-10-01
+32238,374,4,2004-09-01
+32238,312,3.4,2004-08-01
+32238,307,3.3,2004-07-01
+32238,335,3.6,2004-06-01
+32238,302,3.3,2004-05-01
+32238,312,3.4,2004-04-01
+32238,343,3.7,2004-03-01
+32238,363,3.8,2004-02-01
+32238,403,4.3,2004-01-01
+32238,283,3,2003-12-01
+32238,311,3.3,2003-11-01
+32238,303,3.3,2003-10-01
+32238,305,3.3,2003-09-01
+32238,342,3.7,2003-08-01
+32238,284,3.1,2003-07-01
+32238,358,4,2003-06-01
+32238,320,3.6,2003-05-01
+32238,323,3.6,2003-04-01
+32238,357,4,2003-03-01
+32238,310,3.4,2003-02-01
+32238,327,3.6,2003-01-01
+32238,322,3.6,2002-12-01
+32238,337,3.7,2002-11-01
+32238,312,3.5,2002-10-01
+32238,299,3.3,2002-09-01
+32238,343,3.8,2002-08-01
+32238,345,3.8,2002-07-01
+32238,373,4.1,2002-06-01
+32238,340,3.8,2002-05-01
+32238,292,3.3,2002-04-01
+32238,287,3.2,2002-03-01
+32238,318,3.5,2002-02-01
+32238,267,3,2002-01-01
+32238,258,3,2001-12-01
+32238,320,3.6,2001-11-01
+32238,281,3.3,2001-10-01
+32238,268,3.1,2001-09-01
+32238,256,2.9,2001-08-01
+32238,289,3.3,2001-07-01
+32238,249,2.8,2001-06-01
+32238,191,2.2,2001-05-01
+32238,232,2.6,2001-04-01
+32238,211,2.4,2001-03-01
+32238,235,2.6,2001-02-01
+32238,232,2.6,2001-01-01
+32238,200,2.3,2000-12-01
+32238,184,2.1,2000-11-01
+32238,224,2.6,2000-10-01
+32238,187,2.2,2000-09-01
+32238,213,2.5,2000-08-01
+32238,190,2.2,2000-07-01
+32238,216,2.5,2000-06-01
+32238,195,2.2,2000-05-01
+32238,197,2.3,2000-04-01
+32238,226,2.6,2000-03-01
+32238,240,2.8,2000-02-01
+32238,228,2.7,2000-01-01
+32237,300,10,2010-02-01
+32237,313,10,2010-01-01
+32237,256,8.5,2009-12-01
+32237,243,7.6,2009-11-01
+32237,261,8.2,2009-10-01
+32237,362,11.2,2009-09-01
+32237,358,10.7,2009-08-01
+32237,373,11.5,2009-07-01
+32237,347,11.1,2009-06-01
+32237,303,9.5,2009-05-01
+32237,320,10.1,2009-04-01
+32237,252,7.8,2009-03-01
+32237,224,7.1,2009-02-01
+32237,232,7.4,2009-01-01
+32237,219,6.9,2008-12-01
+32237,173,5.2,2008-11-01
+32237,168,5,2008-10-01
+32237,166,5,2008-09-01
+32237,144,4.2,2008-08-01
+32237,141,4.1,2008-07-01
+32237,157,4.7,2008-06-01
+32237,170,5,2008-05-01
+32237,143,4.4,2008-04-01
+32237,155,4.8,2008-03-01
+32237,193,5.8,2008-02-01
+32237,169,5.1,2008-01-01
+32237,125,3.7,2007-12-01
+32237,132,4,2007-11-01
+32237,120,3.7,2007-10-01
+32237,124,3.7,2007-09-01
+32237,140,4.1,2007-08-01
+32237,112,3.4,2007-07-01
+32237,114,3.4,2007-06-01
+32237,110,3.3,2007-05-01
+32237,77,2.4,2007-04-01
+32237,109,3.2,2007-03-01
+32237,139,4,2007-02-01
+32237,143,4,2007-01-01
+32237,108,2.9,2006-12-01
+32237,137,3.9,2006-11-01
+32237,116,3.4,2006-10-01
+32237,170,4.9,2006-09-01
+32237,132,3.9,2006-08-01
+32237,103,3,2006-07-01
+32237,114,3.4,2006-06-01
+32237,158,4.8,2006-05-01
+32237,132,4.2,2006-04-01
+32237,116,3.5,2006-03-01
+32237,119,3.7,2006-02-01
+32237,105,3.3,2006-01-01
+32237,128,3.7,2005-12-01
+32237,172,5.1,2005-11-01
+32237,162,4.8,2005-10-01
+32237,168,4.9,2005-09-01
+32237,156,4.6,2005-08-01
+32237,142,4.2,2005-07-01
+32237,160,5,2005-06-01
+32237,145,4.7,2005-05-01
+32237,178,5.9,2005-04-01
+32237,177,6,2005-03-01
+32237,204,6.5,2005-02-01
+32237,168,5.4,2005-01-01
+32237,173,5.7,2004-12-01
+32237,187,5.6,2004-11-01
+32237,185,5.6,2004-10-01
+32237,178,5.4,2004-09-01
+32237,191,5.7,2004-08-01
+32237,174,5.2,2004-07-01
+32237,172,5,2004-06-01
+32237,190,5.7,2004-05-01
+32237,168,5,2004-04-01
+32237,216,6.3,2004-03-01
+32237,194,5.8,2004-02-01
+32237,236,7,2004-01-01
+32237,224,6.5,2003-12-01
+32237,257,7.6,2003-11-01
+32237,182,5.4,2003-10-01
+32237,248,7,2003-09-01
+32237,224,6.1,2003-08-01
+32237,224,5.9,2003-07-01
+32237,239,6.4,2003-06-01
+32237,251,6.9,2003-05-01
+32237,268,7.3,2003-04-01
+32237,267,7.4,2003-03-01
+32237,321,8.6,2003-02-01
+32237,243,6.7,2003-01-01
+32237,255,7.2,2002-12-01
+32237,220,6.5,2002-11-01
+32237,211,6,2002-10-01
+32237,231,6.3,2002-09-01
+32237,270,7.1,2002-08-01
+32237,264,7.1,2002-07-01
+32237,255,6.9,2002-06-01
+32237,260,7.2,2002-05-01
+32237,257,6.9,2002-04-01
+32237,266,7.2,2002-03-01
+32237,279,7.6,2002-02-01
+32237,263,7.1,2002-01-01
+32237,275,7.4,2001-12-01
+32237,241,6.2,2001-11-01
+32237,233,6,2001-10-01
+32237,219,5.6,2001-09-01
+32237,210,5.4,2001-08-01
+32237,206,5.2,2001-07-01
+32237,163,4.1,2001-06-01
+32237,164,4.2,2001-05-01
+32237,148,3.7,2001-04-01
+32237,148,3.8,2001-03-01
+32237,109,2.9,2001-02-01
+32237,161,4.1,2001-01-01
+32237,151,4,2000-12-01
+32237,117,3,2000-11-01
+32237,96,2.4,2000-10-01
+32237,130,3.3,2000-09-01
+32237,143,3.7,2000-08-01
+32237,144,3.6,2000-07-01
+32237,102,2.6,2000-06-01
+32237,131,3.5,2000-05-01
+32237,95,2.4,2000-04-01
+32237,140,3.6,2000-03-01
+32237,112,2.9,2000-02-01
+32237,125,3.4,2000-01-01
+32236,591,10.5,2010-02-01
+32236,657,11.3,2010-01-01
+32236,539,9,2009-12-01
+32236,493,8.5,2009-11-01
+32236,480,8.6,2009-10-01
+32236,538,9.5,2009-09-01
+32236,547,9.8,2009-08-01
+32236,511,8.8,2009-07-01
+32236,499,8.4,2009-06-01
+32236,506,8.5,2009-05-01
+32236,541,9,2009-04-01
+32236,558,9,2009-03-01
+32236,563,9.1,2009-02-01
+32236,522,8.4,2009-01-01
+32236,421,6.7,2008-12-01
+32236,331,5.8,2008-11-01
+32236,316,5.7,2008-10-01
+32236,337,5.8,2008-09-01
+32236,309,5.2,2008-08-01
+32236,359,5.7,2008-07-01
+32236,329,5.1,2008-06-01
+32236,269,4.3,2008-05-01
+32236,245,4,2008-04-01
+32236,267,4.3,2008-03-01
+32236,289,4.6,2008-02-01
+32236,271,4.4,2008-01-01
+32236,210,3.4,2007-12-01
+32236,242,3.9,2007-11-01
+32236,218,3.6,2007-10-01
+32236,224,3.7,2007-09-01
+32236,205,3.4,2007-08-01
+32236,309,5.1,2007-07-01
+32236,242,4.1,2007-06-01
+32236,216,3.8,2007-05-01
+32236,188,3.3,2007-04-01
+32236,249,4.3,2007-03-01
+32236,251,4.2,2007-02-01
+32236,248,4.2,2007-01-01
+32236,190,3.2,2006-12-01
+32236,183,3.1,2006-11-01
+32236,206,3.6,2006-10-01
+32236,183,3.1,2006-09-01
+32236,217,3.7,2006-08-01
+32236,237,4.2,2006-07-01
+32236,225,3.9,2006-06-01
+32236,226,4,2006-05-01
+32236,272,4.8,2006-04-01
+32236,263,4.7,2006-03-01
+32236,260,4.6,2006-02-01
+32236,287,5,2006-01-01
+32236,202,3.6,2005-12-01
+32236,199,3.5,2005-11-01
+32236,251,4.4,2005-10-01
+32236,211,3.7,2005-09-01
+32236,187,3.3,2005-08-01
+32236,222,3.9,2005-07-01
+32236,247,4.5,2005-06-01
+32236,223,4.1,2005-05-01
+32236,257,4.7,2005-04-01
+32236,267,4.8,2005-03-01
+32236,245,4.4,2005-02-01
+32236,276,5,2005-01-01
+32236,204,3.8,2004-12-01
+32236,217,4,2004-11-01
+32236,219,4,2004-10-01
+32236,208,3.9,2004-09-01
+32236,236,4.4,2004-08-01
+32236,231,4.3,2004-07-01
+32236,227,4.3,2004-06-01
+32236,230,4.4,2004-05-01
+32236,239,4.5,2004-04-01
+32236,284,5.4,2004-03-01
+32236,291,5.5,2004-02-01
+32236,243,4.6,2004-01-01
+32236,267,5,2003-12-01
+32236,275,5.1,2003-11-01
+32236,260,4.8,2003-10-01
+32236,255,4.7,2003-09-01
+32236,255,4.8,2003-08-01
+32236,289,5.4,2003-07-01
+32236,300,5.5,2003-06-01
+32236,260,4.9,2003-05-01
+32236,274,5,2003-04-01
+32236,319,5.9,2003-03-01
+32236,316,5.8,2003-02-01
+32236,331,6.3,2003-01-01
+32236,243,4.6,2002-12-01
+32236,233,4.2,2002-11-01
+32236,262,4.7,2002-10-01
+32236,235,4.2,2002-09-01
+32236,221,3.9,2002-08-01
+32236,270,4.9,2002-07-01
+32236,274,4.9,2002-06-01
+32236,257,4.5,2002-05-01
+32236,280,5,2002-04-01
+32236,313,5.6,2002-03-01
+32236,331,5.7,2002-02-01
+32236,368,6.6,2002-01-01
+32236,310,5.6,2001-12-01
+32236,302,5.4,2001-11-01
+32236,321,5.8,2001-10-01
+32236,214,3.9,2001-09-01
+32236,226,3.9,2001-08-01
+32236,236,4.2,2001-07-01
+32236,242,4.3,2001-06-01
+32236,178,3.1,2001-05-01
+32236,232,4.2,2001-04-01
+32236,193,3.5,2001-03-01
+32236,189,3.4,2001-02-01
+32236,194,3.6,2001-01-01
+32236,168,3.1,2000-12-01
+32236,129,2.3,2000-11-01
+32236,153,2.8,2000-10-01
+32236,231,4,2000-09-01
+32236,198,3.4,2000-08-01
+32236,228,3.9,2000-07-01
+32236,183,3.2,2000-06-01
+32236,190,3.4,2000-05-01
+32236,191,3.4,2000-04-01
+32236,192,3.5,2000-03-01
+32236,223,4,2000-02-01
+32236,236,4.3,2000-01-01
+32235,2071,10,2010-02-01
+32235,2154,10.5,2010-01-01
+32235,1851,9.1,2009-12-01
+32235,1879,9.2,2009-11-01
+32235,1919,9.6,2009-10-01
+32235,1809,9,2009-09-01
+32235,1794,8.8,2009-08-01
+32235,1854,9,2009-07-01
+32235,1863,9.1,2009-06-01
+32235,1835,9,2009-05-01
+32235,1833,9,2009-04-01
+32235,1852,9,2009-03-01
+32235,1847,8.9,2009-02-01
+32235,1794,8.7,2009-01-01
+32235,1535,7.2,2008-12-01
+32235,1397,6.7,2008-11-01
+32235,1313,6.3,2008-10-01
+32235,1277,6.2,2008-09-01
+32235,1366,6.6,2008-08-01
+32235,1329,6.5,2008-07-01
+32235,1160,5.7,2008-06-01
+32235,1049,5.2,2008-05-01
+32235,919,4.5,2008-04-01
+32235,992,4.9,2008-03-01
+32235,1007,4.9,2008-02-01
+32235,1120,5.4,2008-01-01
+32235,1009,4.8,2007-12-01
+32235,893,4.3,2007-11-01
+32235,907,4.4,2007-10-01
+32235,1027,5.1,2007-09-01
+32235,1028,5.1,2007-08-01
+32235,1089,5.2,2007-07-01
+32235,979,4.6,2007-06-01
+32235,795,3.9,2007-05-01
+32235,872,4.2,2007-04-01
+32235,896,4.4,2007-03-01
+32235,1045,5.1,2007-02-01
+32235,1166,5.5,2007-01-01
+32235,965,4.5,2006-12-01
+32235,1018,4.8,2006-11-01
+32235,972,4.7,2006-10-01
+32235,1008,4.9,2006-09-01
+32235,977,4.7,2006-08-01
+32235,1083,5.1,2006-07-01
+32235,1085,5.1,2006-06-01
+32235,1025,4.8,2006-05-01
+32235,972,4.6,2006-04-01
+32235,1022,4.9,2006-03-01
+32235,1141,5.4,2006-02-01
+32235,1203,5.7,2006-01-01
+32235,968,4.5,2005-12-01
+32235,1013,4.7,2005-11-01
+32235,1050,4.9,2005-10-01
+32235,1038,4.9,2005-09-01
+32235,1130,5.3,2005-08-01
+32235,1194,5.6,2005-07-01
+32235,1197,5.7,2005-06-01
+32235,1145,5.4,2005-05-01
+32235,1131,5.4,2005-04-01
+32235,1173,5.6,2005-03-01
+32235,1301,6.2,2005-02-01
+32235,1302,6.3,2005-01-01
+32235,1058,5,2004-12-01
+32235,1045,5,2004-11-01
+32235,1138,5.4,2004-10-01
+32235,1127,5.5,2004-09-01
+32235,1079,5.1,2004-08-01
+32235,1163,5.5,2004-07-01
+32235,1182,5.8,2004-06-01
+32235,1183,5.8,2004-05-01
+32235,1248,6.1,2004-04-01
+32235,1386,6.8,2004-03-01
+32235,1369,6.5,2004-02-01
+32235,1389,6.5,2004-01-01
+32235,1081,5,2003-12-01
+32235,1156,5.4,2003-11-01
+32235,1189,5.7,2003-10-01
+32235,1229,5.9,2003-09-01
+32235,1161,5.6,2003-08-01
+32235,1387,6.6,2003-07-01
+32235,1434,6.9,2003-06-01
+32235,1247,6.2,2003-05-01
+32235,1201,6,2003-04-01
+32235,1179,5.9,2003-03-01
+32235,1238,6.1,2003-02-01
+32235,1342,6.7,2003-01-01
+32235,1150,5.7,2002-12-01
+32235,1242,6.2,2002-11-01
+32235,1212,6.1,2002-10-01
+32235,1171,5.9,2002-09-01
+32235,1170,5.8,2002-08-01
+32235,1132,5.6,2002-07-01
+32235,1240,6.2,2002-06-01
+32235,1138,5.8,2002-05-01
+32235,1222,6.4,2002-04-01
+32235,1269,6.6,2002-03-01
+32235,1264,6.6,2002-02-01
+32235,1212,6.3,2002-01-01
+32235,1074,5.4,2001-12-01
+32235,1046,5.3,2001-11-01
+32235,941,4.8,2001-10-01
+32235,936,4.8,2001-09-01
+32235,928,4.8,2001-08-01
+32235,833,4.3,2001-07-01
+32235,955,4.9,2001-06-01
+32235,875,4.5,2001-05-01
+32235,820,4.3,2001-04-01
+32235,1037,5.4,2001-03-01
+32235,990,5.2,2001-02-01
+32235,908,4.7,2001-01-01
+32235,715,3.7,2000-12-01
+32235,701,3.6,2000-11-01
+32235,739,3.7,2000-10-01
+32235,791,4.1,2000-09-01
+32235,853,4.3,2000-08-01
+32235,792,4.1,2000-07-01
+32235,837,4.4,2000-06-01
+32235,821,4.3,2000-05-01
+32235,793,4.1,2000-04-01
+32235,983,5.1,2000-03-01
+32235,1023,5.2,2000-02-01
+32235,1000,5,2000-01-01
+32232,1814,12.1,2010-02-01
+32232,1918,13,2010-01-01
+32232,1747,11.9,2009-12-01
+32232,1882,12.5,2009-11-01
+32232,1884,12.2,2009-10-01
+32232,1876,11.9,2009-09-01
+32232,1866,11.8,2009-08-01
+32232,1988,12.4,2009-07-01
+32232,2010,12.6,2009-06-01
+32232,2010,12.6,2009-05-01
+32232,1968,12.4,2009-04-01
+32232,1912,12.2,2009-03-01
+32232,1822,11.5,2009-02-01
+32232,1711,10.9,2009-01-01
+32232,1315,8.3,2008-12-01
+32232,1144,7,2008-11-01
+32232,1007,6.2,2008-10-01
+32232,984,6,2008-09-01
+32232,960,5.7,2008-08-01
+32232,908,5.5,2008-07-01
+32232,862,5.2,2008-06-01
+32232,879,5.3,2008-05-01
+32232,796,4.8,2008-04-01
+32232,831,5,2008-03-01
+32232,820,5,2008-02-01
+32232,837,5.1,2008-01-01
+32232,772,4.6,2007-12-01
+32232,762,4.5,2007-11-01
+32232,729,4.3,2007-10-01
+32232,673,4.1,2007-09-01
+32232,596,3.6,2007-08-01
+32232,621,3.7,2007-07-01
+32232,653,4,2007-06-01
+32232,651,3.9,2007-05-01
+32232,749,4.6,2007-04-01
+32232,742,4.5,2007-03-01
+32232,774,4.7,2007-02-01
+32232,752,4.6,2007-01-01
+32232,660,4,2006-12-01
+32232,702,4.3,2006-11-01
+32232,618,3.7,2006-10-01
+32232,632,3.8,2006-09-01
+32232,680,4.1,2006-08-01
+32232,736,4.4,2006-07-01
+32232,635,3.8,2006-06-01
+32232,680,4.1,2006-05-01
+32232,745,4.5,2006-04-01
+32232,701,4.1,2006-03-01
+32232,821,4.9,2006-02-01
+32232,778,4.6,2006-01-01
+32232,757,4.5,2005-12-01
+32232,823,4.9,2005-11-01
+32232,800,4.8,2005-10-01
+32232,775,4.7,2005-09-01
+32232,767,4.7,2005-08-01
+32232,883,5.3,2005-07-01
+32232,743,4.4,2005-06-01
+32232,743,4.5,2005-05-01
+32232,793,4.8,2005-04-01
+32232,879,5.3,2005-03-01
+32232,889,5.3,2005-02-01
+32232,889,5.3,2005-01-01
+32232,872,5.1,2004-12-01
+32232,905,5.4,2004-11-01
+32232,884,5.3,2004-10-01
+32232,852,5,2004-09-01
+32232,840,4.9,2004-08-01
+32232,1019,6,2004-07-01
+32232,957,5.6,2004-06-01
+32232,966,5.6,2004-05-01
+32232,1004,5.8,2004-04-01
+32232,1083,6.3,2004-03-01
+32232,1094,6.3,2004-02-01
+32232,1110,6.4,2004-01-01
+32232,1025,5.9,2003-12-01
+32232,1034,5.9,2003-11-01
+32232,1041,6,2003-10-01
+32232,1175,6.8,2003-09-01
+32232,1186,6.7,2003-08-01
+32232,1193,6.9,2003-07-01
+32232,1232,7,2003-06-01
+32232,1150,6.5,2003-05-01
+32232,1199,6.7,2003-04-01
+32232,1222,6.8,2003-03-01
+32232,1229,6.7,2003-02-01
+32232,1302,7.2,2003-01-01
+32232,1188,6.6,2002-12-01
+32232,1115,6.3,2002-11-01
+32232,1046,5.9,2002-10-01
+32232,1076,6.1,2002-09-01
+32232,1108,6.2,2002-08-01
+32232,1185,6.6,2002-07-01
+32232,1187,6.6,2002-06-01
+32232,1194,6.6,2002-05-01
+32232,1322,7.2,2002-04-01
+32232,1367,7.3,2002-03-01
+32232,1296,7,2002-02-01
+32232,1377,7.4,2002-01-01
+32232,1172,6.3,2001-12-01
+32232,1108,6,2001-11-01
+32232,1065,5.8,2001-10-01
+32232,996,5.4,2001-09-01
+32232,1023,5.5,2001-08-01
+32232,1054,5.6,2001-07-01
+32232,956,5,2001-06-01
+32232,903,4.7,2001-05-01
+32232,855,4.4,2001-04-01
+32232,954,4.9,2001-03-01
+32232,902,4.6,2001-02-01
+32232,911,4.6,2001-01-01
+32232,653,3.3,2000-12-01
+32232,672,3.4,2000-11-01
+32232,693,3.6,2000-10-01
+32232,667,3.4,2000-09-01
+32232,685,3.4,2000-08-01
+32232,708,3.6,2000-07-01
+32232,621,3.1,2000-06-01
+32232,685,3.4,2000-05-01
+32232,736,3.7,2000-04-01
+32232,739,3.6,2000-03-01
+32232,694,3.4,2000-02-01
+32232,734,3.6,2000-01-01
+32231,2440,27.1,2010-02-01
+32231,2194,24.7,2010-01-01
+32231,2044,22.7,2009-12-01
+32231,1780,19.4,2009-11-01
+32231,1744,18.7,2009-10-01
+32231,1594,17.1,2009-09-01
+32231,1542,16.5,2009-08-01
+32231,1687,18.2,2009-07-01
+32231,1601,17.4,2009-06-01
+32231,1768,19.2,2009-05-01
+32231,1737,18.7,2009-04-01
+32231,1979,21.1,2009-03-01
+32231,2025,21.4,2009-02-01
+32231,1744,18.2,2009-01-01
+32231,1438,15.3,2008-12-01
+32231,1237,12.7,2008-11-01
+32231,1078,10.8,2008-10-01
+32231,970,9.9,2008-09-01
+32231,814,8.2,2008-08-01
+32231,783,8,2008-07-01
+32231,785,8.2,2008-06-01
+32231,809,8.6,2008-05-01
+32231,1057,11.1,2008-04-01
+32231,1170,12,2008-03-01
+32231,1118,11.4,2008-02-01
+32231,1099,11,2008-01-01
+32231,968,9.4,2007-12-01
+32231,645,6.2,2007-11-01
+32231,641,6.1,2007-10-01
+32231,596,5.8,2007-09-01
+32231,558,5.3,2007-08-01
+32231,617,5.9,2007-07-01
+32231,600,5.9,2007-06-01
+32231,676,6.9,2007-05-01
+32231,853,8.6,2007-04-01
+32231,924,9,2007-03-01
+32231,1086,10.5,2007-02-01
+32231,922,8.9,2007-01-01
+32231,725,6.9,2006-12-01
+32231,618,6,2006-11-01
+32231,456,4.5,2006-10-01
+32231,586,5.6,2006-09-01
+32231,618,5.9,2006-08-01
+32231,633,6.1,2006-07-01
+32231,569,5.6,2006-06-01
+32231,647,6.6,2006-05-01
+32231,674,6.9,2006-04-01
+32231,820,8.5,2006-03-01
+32231,836,8.6,2006-02-01
+32231,868,9,2006-01-01
+32231,813,8.2,2005-12-01
+32231,564,5.7,2005-11-01
+32231,519,5.3,2005-10-01
+32231,572,5.7,2005-09-01
+32231,561,5.7,2005-08-01
+32231,509,5.2,2005-07-01
+32231,559,5.7,2005-06-01
+32231,567,6.1,2005-05-01
+32231,693,7.4,2005-04-01
+32231,961,10.3,2005-03-01
+32231,1150,12.3,2005-02-01
+32231,1079,11.8,2005-01-01
+32231,870,9.5,2004-12-01
+32231,695,7.4,2004-11-01
+32231,635,6.9,2004-10-01
+32231,629,6.8,2004-09-01
+32231,563,6,2004-08-01
+32231,610,6.4,2004-07-01
+32231,668,7,2004-06-01
+32231,665,7.4,2004-05-01
+32231,849,9.5,2004-04-01
+32231,1011,11.3,2004-03-01
+32231,1039,11.6,2004-02-01
+32231,994,11.3,2004-01-01
+32231,813,9.3,2003-12-01
+32231,690,7.8,2003-11-01
+32231,651,7.4,2003-10-01
+32231,681,7.6,2003-09-01
+32231,650,7.1,2003-08-01
+32231,677,7.5,2003-07-01
+32231,710,7.9,2003-06-01
+32231,715,8.4,2003-05-01
+32231,772,9.3,2003-04-01
+32231,987,11.8,2003-03-01
+32231,1173,14,2003-02-01
+32231,1196,14,2003-01-01
+32231,941,10.9,2002-12-01
+32231,758,8.5,2002-11-01
+32231,680,7.7,2002-10-01
+32231,615,7,2002-09-01
+32231,654,7.4,2002-08-01
+32231,594,6.9,2002-07-01
+32231,593,6.9,2002-06-01
+32231,626,7.4,2002-05-01
+32231,855,10.1,2002-04-01
+32231,1009,11.8,2002-03-01
+32231,1060,12.2,2002-02-01
+32231,1211,13.6,2002-01-01
+32231,785,9,2001-12-01
+32231,670,7.6,2001-11-01
+32231,535,6.1,2001-10-01
+32231,489,5.5,2001-09-01
+32231,522,5.8,2001-08-01
+32231,447,4.9,2001-07-01
+32231,443,5.1,2001-06-01
+32231,478,5.6,2001-05-01
+32231,596,7.1,2001-04-01
+32231,683,8.4,2001-03-01
+32231,826,9.9,2001-02-01
+32231,836,9.8,2001-01-01
+32231,580,6.8,2000-12-01
+32231,482,5.7,2000-11-01
+32231,417,4.9,2000-10-01
+32231,386,4.6,2000-09-01
+32231,446,5.1,2000-08-01
+32231,384,4.4,2000-07-01
+32231,389,4.6,2000-06-01
+32231,397,5,2000-05-01
+32231,447,5.8,2000-04-01
+32231,669,8.7,2000-03-01
+32231,812,10.6,2000-02-01
+32231,745,9.7,2000-01-01
+32230,79,10.7,2010-02-01
+32230,68,9.1,2010-01-01
+32230,89,11.8,2009-12-01
+32230,96,12,2009-11-01
+32230,84,10.8,2009-10-01
+32230,76,10.7,2009-09-01
+32230,93,11.8,2009-08-01
+32230,95,12.6,2009-07-01
+32230,100,13.6,2009-06-01
+32230,98,13.3,2009-05-01
+32230,125,16.1,2009-04-01
+32230,105,12.6,2009-03-01
+32230,63,7.6,2009-02-01
+32230,59,7,2009-01-01
+32230,46,5.2,2008-12-01
+32230,32,3.7,2008-11-01
+32230,15,1.7,2008-10-01
+32230,25,2.8,2008-09-01
+32230,17,1.9,2008-08-01
+32230,13,1.5,2008-07-01
+32230,28,3.3,2008-06-01
+32230,28,3.4,2008-05-01
+32230,28,3.6,2008-04-01
+32230,28,3.7,2008-03-01
+32230,16,2.2,2008-02-01
+32230,28,4,2008-01-01
+32230,24,3.4,2007-12-01
+32230,16,2.3,2007-11-01
+32230,9,1.3,2007-10-01
+32230,25,3.2,2007-09-01
+32230,33,4.6,2007-08-01
+32230,33,4.3,2007-07-01
+32230,33,4.3,2007-06-01
+32230,22,3,2007-05-01
+32230,17,2.3,2007-04-01
+32230,24,3.2,2007-03-01
+32230,33,4.5,2007-02-01
+32230,35,4.7,2007-01-01
+32230,25,3.4,2006-12-01
+32230,22,2.9,2006-11-01
+32230,15,2.2,2006-10-01
+32230,14,2.1,2006-09-01
+32230,32,4.3,2006-08-01
+32230,25,3.5,2006-07-01
+32230,31,4.3,2006-06-01
+32230,20,2.8,2006-05-01
+32230,17,2.5,2006-04-01
+32230,14,2.1,2006-03-01
+32230,25,3.8,2006-02-01
+32230,26,3.9,2006-01-01
+32230,23,3.5,2005-12-01
+32230,18,2.9,2005-11-01
+32230,2,0.3,2005-10-01
+32230,12,2,2005-09-01
+32230,12,2,2005-08-01
+32230,22,3.7,2005-07-01
+32230,25,4,2005-06-01
+32230,16,2.4,2005-05-01
+32230,19,2.9,2005-04-01
+32230,32,5.2,2005-03-01
+32230,25,4,2005-02-01
+32230,29,4.9,2005-01-01
+32230,16,2.5,2004-12-01
+32230,20,3.3,2004-11-01
+32230,15,2.6,2004-10-01
+32230,8,1.5,2004-09-01
+32230,10,1.9,2004-08-01
+32230,28,5.4,2004-07-01
+32230,27,5,2004-06-01
+32230,22,4.3,2004-05-01
+32230,34,6.4,2004-04-01
+32230,22,4.4,2004-03-01
+32230,24,5,2004-02-01
+32230,31,5.8,2004-01-01
+32230,32,5.6,2003-12-01
+32230,34,5.9,2003-11-01
+32230,31,5.6,2003-10-01
+32230,25,4.6,2003-09-01
+32230,20,3.8,2003-08-01
+32230,43,7.9,2003-07-01
+32230,36,6.8,2003-06-01
+32230,40,7.5,2003-05-01
+32230,41,7.7,2003-04-01
+32230,46,8.2,2003-03-01
+32230,41,7.1,2003-02-01
+32230,54,9,2003-01-01
+32230,45,7.8,2002-12-01
+32230,32,5.4,2002-11-01
+32230,36,6.4,2002-10-01
+32230,42,7.9,2002-09-01
+32230,32,6.3,2002-08-01
+32230,19,3.9,2002-07-01
+32230,35,7.1,2002-06-01
+32230,25,4.9,2002-05-01
+32230,33,6.1,2002-04-01
+32230,28,5.3,2002-03-01
+32230,35,7.5,2002-02-01
+32230,33,7,2002-01-01
+32230,27,5.3,2001-12-01
+32230,20,3.6,2001-11-01
+32230,32,5.4,2001-10-01
+32230,23,4.2,2001-09-01
+32230,18,3.3,2001-08-01
+32230,17,3.1,2001-07-01
+32230,26,4.7,2001-06-01
+32230,34,5.9,2001-05-01
+32230,24,4.7,2001-04-01
+32230,14,3,2001-03-01
+32230,27,5.3,2001-02-01
+32230,11,2.3,2001-01-01
+32230,20,3.8,2000-12-01
+32230,11,2,2000-11-01
+32230,39,7.8,2000-10-01
+32230,25,5.8,2000-09-01
+32230,23,5.1,2000-08-01
+32230,16,3.6,2000-07-01
+32230,13,2.6,2000-06-01
+32230,27,5.3,2000-05-01
+32230,20,4.1,2000-04-01
+32230,17,3.7,2000-03-01
+32230,25,5.5,2000-02-01
+32230,19,3.9,2000-01-01
+28615,880,4,2010-02-01
+28615,948,4.3,2010-01-01
+28615,797,3.6,2009-12-01
+28615,748,3.4,2009-11-01
+28615,785,3.5,2009-10-01
+28615,928,4.2,2009-09-01
+28615,1118,5.1,2009-08-01
+28615,1129,5.1,2009-07-01
+28615,991,4.4,2009-06-01
+28615,702,3.1,2009-05-01
+28615,575,2.6,2009-04-01
+28615,598,2.8,2009-03-01
+28615,563,2.6,2009-02-01
+28615,652,3,2009-01-01
+28615,511,2.3,2008-12-01
+28615,527,2.4,2008-11-01
+28615,552,2.5,2008-10-01
+28615,573,2.6,2008-09-01
+28615,721,3.3,2008-08-01
+28615,770,3.6,2008-07-01
+28615,654,3,2008-06-01
+28615,461,2.1,2008-05-01
+28615,373,1.7,2008-04-01
+28615,425,1.9,2008-03-01
+28615,372,1.7,2008-02-01
+28615,471,2.2,2008-01-01
+28615,451,2.1,2007-12-01
+28615,482,2.2,2007-11-01
+28615,492,2.3,2007-10-01
+28615,525,2.4,2007-09-01
+28615,695,3.2,2007-08-01
+28615,704,3.3,2007-07-01
+28615,572,2.7,2007-06-01
+28615,428,1.9,2007-05-01
+28615,408,1.9,2007-04-01
+28615,419,1.9,2007-03-01
+28615,405,1.9,2007-02-01
+28615,476,2.2,2007-01-01
+28615,395,1.9,2006-12-01
+28615,400,1.9,2006-11-01
+28615,424,2,2006-10-01
+28615,396,1.9,2006-09-01
+28615,595,2.9,2006-08-01
+28615,659,3.2,2006-07-01
+28615,578,2.8,2006-06-01
+28615,429,2.1,2006-05-01
+28615,414,2,2006-04-01
+28615,461,2.2,2006-03-01
+28615,472,2.3,2006-02-01
+28615,457,2.2,2006-01-01
+28615,393,1.9,2005-12-01
+28615,494,2.4,2005-11-01
+28615,502,2.4,2005-10-01
+28615,568,2.7,2005-09-01
+28615,664,3.2,2005-08-01
+28615,683,3.3,2005-07-01
+28615,681,3.2,2005-06-01
+28615,453,2.1,2005-05-01
+28615,478,2.3,2005-04-01
+28615,468,2.2,2005-03-01
+28615,472,2.3,2005-02-01
+28615,555,2.6,2005-01-01
+28615,499,2.4,2004-12-01
+28615,514,2.4,2004-11-01
+28615,561,2.7,2004-10-01
+28615,568,2.7,2004-09-01
+28615,676,3.3,2004-08-01
+28615,741,3.7,2004-07-01
+28615,580,2.8,2004-06-01
+28615,468,2.3,2004-05-01
+28615,433,2.1,2004-04-01
+28615,530,2.6,2004-03-01
+28615,490,2.4,2004-02-01
+28615,511,2.5,2004-01-01
+28615,516,2.5,2003-12-01
+28615,542,2.7,2003-11-01
+28615,500,2.4,2003-10-01
+28615,556,2.7,2003-09-01
+28615,745,3.7,2003-08-01
+28615,749,3.8,2003-07-01
+28615,704,3.5,2003-06-01
+28615,478,2.4,2003-05-01
+28615,440,2.2,2003-04-01
+28615,526,2.6,2003-03-01
+28615,483,2.4,2003-02-01
+28615,571,2.8,2003-01-01
+28615,446,2.2,2002-12-01
+28615,468,2.3,2002-11-01
+28615,499,2.5,2002-10-01
+28615,530,2.6,2002-09-01
+28615,596,3,2002-08-01
+28615,645,3.2,2002-07-01
+28615,561,2.8,2002-06-01
+28615,484,2.3,2002-05-01
+28615,447,2.2,2002-04-01
+28615,477,2.4,2002-03-01
+28615,508,2.5,2002-02-01
+28615,486,2.4,2002-01-01
+28615,419,2.1,2001-12-01
+28615,420,2.1,2001-11-01
+28615,429,2.2,2001-10-01
+28615,438,2.2,2001-09-01
+28615,540,2.8,2001-08-01
+28615,548,2.8,2001-07-01
+28615,525,2.7,2001-06-01
+28615,361,1.8,2001-05-01
+28615,369,1.9,2001-04-01
+28615,355,1.8,2001-03-01
+28615,298,1.5,2001-02-01
+28615,463,2.3,2001-01-01
+28615,365,1.8,2000-12-01
+28615,384,1.9,2000-11-01
+28615,391,2,2000-10-01
+28615,408,2.1,2000-09-01
+28615,583,3.1,2000-08-01
+28615,545,2.9,2000-07-01
+28615,603,3.1,2000-06-01
+28615,370,1.9,2000-05-01
+28615,269,1.3,2000-04-01
+28615,311,1.5,2000-03-01
+28615,409,2,2000-02-01
+28615,430,2.1,2000-01-01
diff --git a/static/vendor/d3-2.8.1/examples/data/us-borders.json b/static/vendor/d3-2.8.1/examples/data/us-borders.json
new file mode 100755 (executable)
index 0000000..ac79e55
--- /dev/null
@@ -0,0 +1 @@
+{"30":["38","46","56","16"],"51":["24","37","47","21","54"],"45":["37","13"],"50":["33","25","36"],"19":["27","55","17","29","31","46"],"26":["39","18","55"],"35":["08","40","48","04"],"41":["53","16","32","06"],"04":["35","49","32","06"],"02":[],"25":["33","44","09","36"],"23":["33"],"01":["28","13","12","47"],"06":["41","32","04"],"21":["39","54","51","47","29","17","18"],"22":["05","28","48"],"05":["28","22","48","40","29","47"],"46":["38","27","19","31","56","30"],"47":["21","51","37","13","01","28","05","29"],"08":["35","49","56","31","20","40"],"09":["25","44","36"],"42":["36","34","10","24","54","39"],"29":["19","17","21","47","05","40","20","31"],"40":["20","29","05","48","35","08"],"18":["26","39","21","17"],"27":["55","19","46","38"],"28":["47","01","22","05"],"24":["10","42","54","51","11"],"39":["42","54","21","18","26"],"38":["68","46","30"],"20":["31","29","40","08"],"11":["24","51"],"10":["34","42","24"],"13":["12","01","47","37","45"],"12":["13","01"],"15":[],"48":["27","40","05","22"],"17":["18","21","29","19","55"],"16":["30","56","49","32","41","53"],"55":["26","17","19","27"],"54":["42","24","51","21","39"],"31":["46","19","29","20","08","56"],"56":["30","46","31","08","49","16"],"37":["51","45","13","47"],"36":["50","25","09","34","42"],"53":["16","41"],"34":["36","10","42"],"33":["23","25","50"],"32":["16","49","04","06","41"],"49":["16","56","08","04","32"],"44":["25","09"]}
diff --git a/static/vendor/d3-2.8.1/examples/data/us-counties.json b/static/vendor/d3-2.8.1/examples/data/us-counties.json
new file mode 100755 (executable)
index 0000000..dfab6b2
--- /dev/null
@@ -0,0 +1,3216 @@
+{"type":"FeatureCollection","features":[
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-141.00045,68.498147],[-146.000897,68.487193],[-145.99542,67.999745],[-146.970315,67.999745],[-155.300742,67.999745],[-157.157424,68.207869],[-161.993563,68.2243],[-162.683657,68.300977],[-164.502001,68.229777],[-164.496525,68.021653],[-165.361881,68.02713],[-166.681824,68.339316],[-166.216284,68.881533],[-164.255539,68.930825],[-163.110859,69.374457],[-163.034181,69.724981],[-161.851162,70.311014],[-161.396576,70.239814],[-159.649432,70.792985],[-158.033735,70.831323],[-156.812377,71.285909],[-155.585543,71.170894],[-155.974405,70.809416],[-155.032372,71.148986],[-154.183446,70.7656],[-153.235935,70.924431],[-152.26104,70.842277],[-152.419871,70.606769],[-151.877654,70.431507],[-149.462323,70.519138],[-147.682318,70.201475],[-145.858496,70.168614],[-144.620708,69.971444],[-143.914183,70.130275],[-142.747594,70.042644],[-141.378359,69.63735],[-141.00045,69.648304],[-141.00045,68.498147]]]},"id":"02185"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-146.970315,67.999745],[-145.99542,67.999745],[-146.000897,68.487193],[-141.00045,68.498147],[-141.00045,65.841831],[-141.838422,65.463922],[-142.605194,65.392722],[-144.06206,64.680719],[-143.886798,65.09149],[-145.644896,65.031244],[-146.19259,65.452968],[-146.696468,65.321521],[-148.66269,65.211983],[-148.646259,64.604042],[-147.99998,64.341149],[-149.232292,64.35758],[-150.749404,64.363057],[-151.302575,64.012533],[-152.047439,64.001579],[-152.244609,63.656532],[-152.852549,63.651055],[-152.436302,63.169084],[-153.000427,62.725452],[-153.000427,62.292773],[-153.734337,62.02988],[-157.064316,62.02988],[-158.532136,62.117511],[-159.266046,61.947726],[-160.536697,61.947726],[-161.046052,62.205142],[-160.848882,63.010253],[-160.690051,63.536039],[-159.698725,63.793455],[-159.956141,64.050871],[-159.978049,64.746443],[-159.578232,64.921705],[-159.594663,65.524168],[-159.594663,65.956846],[-158.964815,66.121155],[-157.896811,66.126632],[-157.891334,66.477156],[-155.563635,66.307371],[-155.514342,66.570264],[-154.199877,66.718141],[-154.145107,67.161773],[-154.747571,67.254881],[-154.687324,67.599929],[-155.350034,67.775191],[-155.300742,67.999745],[-146.970315,67.999745]]]},"id":"02290"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-162.683657,68.300977],[-161.993563,68.2243],[-157.157424,68.207869],[-155.300742,67.999745],[-155.350034,67.775191],[-154.687324,67.599929],[-154.747571,67.254881],[-154.145107,67.161773],[-154.199877,66.718141],[-155.514342,66.570264],[-155.563635,66.307371],[-157.891334,66.477156],[-157.896811,66.126632],[-158.964815,66.121155],[-159.594663,65.956846],[-159.594663,65.524168],[-159.802787,65.436537],[-163.757138,65.436537],[-164.244585,65.781584],[-164.403417,66.581218],[-163.751661,66.553833],[-163.768091,66.060908],[-161.840208,66.02257],[-160.991283,66.23617],[-162.502918,66.740049],[-161.884024,66.718141],[-161.851162,67.052235],[-162.902735,67.008419],[-163.740707,67.128912],[-164.009077,67.534205],[-165.361881,68.02713],[-164.496525,68.021653],[-164.502001,68.229777],[-162.683657,68.300977]]]},"id":"02188"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-164.403417,66.581218],[-164.244585,65.781584],[-163.757138,65.436537],[-159.802787,65.436537],[-159.594663,65.524168],[-159.578232,64.921705],[-159.978049,64.746443],[-159.956141,64.050871],[-159.698725,63.793455],[-160.690051,63.536039],[-160.848882,63.010253],[-161.993563,63.010253],[-162.585072,63.273146],[-162.294794,63.541516],[-161.13916,63.503177],[-160.766728,63.771547],[-161.374669,64.532842],[-160.783159,64.719058],[-161.144637,64.921705],[-162.541257,64.532842],[-162.787719,64.324718],[-163.598306,64.565704],[-165.000403,64.434257],[-166.188899,64.576658],[-166.884471,65.140782],[-166.34773,65.277706],[-167.47598,65.414629],[-168.105828,65.682999],[-165.88219,66.312848],[-164.403417,66.581218]]]},"id":"02180"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-141.838422,65.463922],[-141.00045,65.841831],[-141.00045,61.903911],[-141.827468,61.898434],[-141.964392,62.511851],[-142.314916,62.681636],[-143.103595,62.615913],[-143.125503,63.114314],[-145.146494,63.136222],[-145.360095,63.223853],[-146.482868,63.174561],[-146.488345,63.481269],[-146.975792,63.481269],[-147.003177,64.258995],[-146.236405,64.308287],[-144.06206,64.680719],[-142.605194,65.392722],[-141.838422,65.463922]]]},"id":"02240"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-146.696468,65.321521],[-146.19259,65.452968],[-145.644896,65.031244],[-143.886798,65.09149],[-144.06206,64.680719],[-146.236405,64.308287],[-147.003177,64.258995],[-147.99998,64.341149],[-148.646259,64.604042],[-148.66269,65.211983],[-146.696468,65.321521]]]},"id":"02090"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-149.232292,64.35758],[-147.99998,64.341149],[-147.003177,64.258995],[-146.975792,63.481269],[-148.038319,63.333392],[-149.506139,63.333392],[-151.888608,62.796652],[-153.000427,62.725452],[-152.436302,63.169084],[-152.852549,63.651055],[-152.244609,63.656532],[-152.047439,64.001579],[-151.302575,64.012533],[-150.749404,64.363057],[-149.232292,64.35758]]]},"id":"02068"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-171.742517,63.716778],[-170.94836,63.5689],[-170.488297,63.69487],[-169.518879,63.366254],[-168.686384,63.295053],[-169.639372,62.939052],[-170.866206,63.415546],[-171.463193,63.306007],[-171.742517,63.716778]]]},"id":"02180"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-153.000427,62.725452],[-151.888608,62.796652],[-149.506139,63.333392],[-148.038319,63.333392],[-146.975792,63.481269],[-146.488345,63.481269],[-146.482868,63.174561],[-146.428098,62.248958],[-146.981269,62.248958],[-146.942931,61.476709],[-148.460043,61.427417],[-149.259676,61.482186],[-149.988109,61.230247],[-150.973959,61.191908],[-151.335437,61.42194],[-153.000427,61.427417],[-153.000427,62.292773],[-153.000427,62.725452]]]},"id":"02170"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-162.585072,63.273146],[-161.993563,63.010253],[-160.848882,63.010253],[-161.046052,62.205142],[-160.536697,61.947726],[-160.40525,61.810803],[-161.900455,61.482186],[-162.508395,61.558863],[-163.992646,61.372647],[-164.156954,61.022123],[-165.159234,60.918061],[-164.962064,61.022123],[-166.106745,61.49314],[-165.59739,61.860095],[-165.674067,62.139419],[-165.044219,62.539236],[-164.633448,63.097884],[-164.069323,63.262192],[-163.313505,63.037637],[-162.585072,63.273146]]]},"id":"02270"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-145.360095,63.223853],[-145.146494,63.136222],[-143.125503,63.114314],[-143.103595,62.615913],[-142.314916,62.681636],[-141.964392,62.511851],[-141.827468,61.898434],[-141.00045,61.903911],[-141.00045,60.392275],[-141.78913,60.518245],[-143.169319,60.518245],[-143.886798,59.997935],[-144.231845,60.140336],[-146.110436,60.468952],[-146.044712,60.742799],[-146.669084,60.693507],[-146.745761,60.9564],[-148.366935,60.764707],[-147.961642,60.140336],[-148.586013,59.959597],[-148.744844,60.731845],[-148.470997,60.852338],[-148.460043,61.427417],[-146.942931,61.476709],[-146.981269,62.248958],[-146.428098,62.248958],[-146.482868,63.174561],[-145.360095,63.223853]]]},"id":"02261"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-153.000427,62.292773],[-153.000427,61.427417],[-153.427628,61.427417],[-153.438582,60.907107],[-155.963451,60.907107],[-158.942907,60.901631],[-159.364631,60.644214],[-160.021864,59.784335],[-160.821498,59.264025],[-161.035098,58.842301],[-161.095345,58.820393],[-161.347284,58.732762],[-161.752577,58.552023],[-162.048332,59.253071],[-161.703285,59.48858],[-162.234548,60.091043],[-163.171105,59.844581],[-164.113139,59.839104],[-164.189816,60.02532],[-165.361881,60.507291],[-165.159234,60.918061],[-164.156954,61.022123],[-163.992646,61.372647],[-162.508395,61.558863],[-161.900455,61.482186],[-160.40525,61.810803],[-160.536697,61.947726],[-159.266046,61.947726],[-158.532136,62.117511],[-157.064316,62.02988],[-153.734337,62.02988],[-153.000427,62.292773]]]},"id":"02050"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-149.259676,61.482186],[-148.460043,61.427417],[-148.470997,60.852338],[-148.744844,60.731845],[-149.730693,60.994739],[-149.73617,60.994739],[-149.988109,61.230247],[-149.259676,61.482186]]]},"id":"02020"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-153.427628,61.427417],[-153.000427,61.427417],[-151.335437,61.42194],[-150.973959,61.191908],[-152.080301,60.693507],[-152.567748,60.069136],[-153.214027,59.636457],[-153.608367,59.620026],[-154.260123,59.143533],[-153.312612,58.847778],[-153.329043,58.853255],[-154.303938,58.645131],[-154.638032,58.645131],[-154.747571,59.253071],[-153.652183,59.784335],[-153.438582,60.907107],[-153.427628,61.427417]]]},"id":"02122"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-149.730693,60.994739],[-148.744844,60.731845],[-148.586013,59.959597],[-149.358261,60.101997],[-149.741647,59.729565],[-151.592853,59.159963],[-151.888608,59.422857],[-151.160175,59.592642],[-151.8667,59.778858],[-151.423068,60.211536],[-151.406637,60.720892],[-150.404357,61.038554],[-149.73617,60.994739],[-149.730693,60.994739]]]},"id":"02122"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-155.963451,60.907107],[-155.957974,59.674796],[-157.245055,59.247595],[-157.157424,58.858732],[-158.039212,58.634177],[-158.619768,58.913501],[-158.701922,58.480823],[-159.0634,58.420577],[-159.731586,58.929932],[-160.317619,59.072332],[-161.035098,58.842301],[-160.821498,59.264025],[-160.021864,59.784335],[-159.364631,60.644214],[-158.942907,60.901631],[-155.963451,60.907107]]]},"id":"02070"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-153.438582,60.907107],[-153.652183,59.784335],[-154.747571,59.253071],[-154.638032,58.645131],[-154.303938,58.645131],[-154.468247,58.36033],[-155.333603,58.190545],[-155.328126,57.878359],[-156.752131,57.16088],[-156.357791,57.16088],[-157.464133,56.62414],[-158.32949,56.48174],[-158.115889,56.2298],[-158.510229,55.977861],[-159.496078,55.857368],[-159.561801,55.632814],[-159.86851,55.89023],[-159.901372,56.492694],[-158.893615,56.793925],[-158.893615,56.804879],[-158.378782,57.264942],[-157.601057,57.609989],[-157.453179,58.508208],[-157.266963,58.612269],[-156.319453,58.612269],[-156.319453,58.89707],[-156.987639,58.886116],[-157.157424,58.858732],[-157.245055,59.247595],[-155.957974,59.674796],[-155.963451,60.907107],[-153.438582,60.907107]]]},"id":"02164"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-137.522593,58.908024],[-137.944318,58.803962],[-138.11958,59.02304],[-139.85577,59.537872],[-139.625738,59.88292],[-140.315833,59.696704],[-141.46599,59.970551],[-142.906426,60.091043],[-143.886798,59.997935],[-143.169319,60.518245],[-141.78913,60.518245],[-141.00045,60.392275],[-139.987216,60.184151],[-139.088998,60.359413],[-139.198537,60.091043],[-137.604747,59.242118],[-137.522593,58.908024]]]},"id":"02282"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-166.364161,60.359413],[-165.685021,60.277259],[-165.575482,59.904827],[-166.062929,59.745996],[-167.344534,60.074613],[-166.364161,60.359413]]]},"id":"02050"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-147.079854,60.200582],[-147.874011,59.784335],[-147.112716,60.381321],[-147.079854,60.200582]]]},"id":"02261"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-135.030585,59.346179],[-135.72068,59.729565],[-135.025108,59.565257],[-135.030585,59.346179]]]},"id":"02232"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-135.72068,59.729565],[-135.030585,59.346179],[-134.329537,58.962794],[-135.178463,58.973748],[-135.38111,59.033994],[-135.05797,58.190545],[-135.446833,58.398669],[-135.567326,58.946363],[-136.487451,59.258548],[-136.25742,59.625503],[-135.72068,59.729565]]]},"id":"02100"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-135.567326,58.946363],[-135.446833,58.398669],[-136.591513,58.21793],[-137.944318,58.803962],[-137.522593,58.908024],[-136.487451,59.258548],[-135.567326,58.946363]]]},"id":"02232"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-135.178463,58.973748],[-134.329537,58.962794],[-133.382026,58.426053],[-133.173903,58.152206],[-133.529904,57.911221],[-133.601104,57.861929],[-135.074401,58.502731],[-135.178463,58.973748]]]},"id":"02110"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-156.987639,58.886116],[-156.319453,58.89707],[-156.319453,58.612269],[-157.266963,58.612269],[-156.987639,58.886116]]]},"id":"02060"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-153.329043,58.853255],[-153.312612,58.847778],[-154.062953,58.4863],[-154.210831,58.135776],[-155.120003,57.955037],[-156.357791,57.16088],[-156.752131,57.16088],[-155.328126,57.878359],[-155.333603,58.190545],[-154.468247,58.36033],[-154.303938,58.645131],[-153.329043,58.853255]]]},"id":"02150"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-152.94018,58.026237],[-152.666333,58.562977],[-152.080301,58.152206],[-152.94018,58.026237]]]},"id":"02150"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-134.712923,58.223407],[-134.176183,58.157683],[-133.869474,57.363527],[-134.565045,57.023957],[-134.712923,58.223407]]]},"id":"02232"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-135.589233,57.89479],[-136.372436,57.829067],[-136.377913,58.267222],[-135.780926,58.28913],[-134.91557,57.976944],[-135.589233,57.89479]]]},"id":"02232"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-133.529904,57.911221],[-133.173903,58.152206],[-132.368792,57.347096],[-133.12461,57.188265],[-133.51895,57.177311],[-133.601104,57.861929],[-133.529904,57.911221]]]},"id":"02232"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-136.372436,57.829067],[-135.589233,57.89479],[-134.937477,57.763344],[-134.822462,57.500451],[-135.572802,57.675713],[-135.890465,57.407343],[-136.372436,57.829067]]]},"id":"02220"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-153.958891,57.538789],[-153.936983,57.812636],[-153.301658,57.993375],[-152.151501,57.620943],[-153.695998,56.859649],[-154.303938,56.848695],[-154.742094,57.314235],[-154.227261,57.659282],[-153.958891,57.538789]]]},"id":"02150"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-134.66363,56.28457],[-134.669107,56.169554],[-135.413971,56.810356],[-135.687818,57.369004],[-135.419448,57.566174],[-134.849846,57.407343],[-134.636246,56.28457],[-134.66363,56.28457]]]},"id":"02220"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-133.12461,57.188265],[-132.368792,57.347096],[-131.837529,56.602232],[-131.065281,56.405062],[-130.99408,56.262662],[-132.220915,55.736876],[-132.719317,56.218847],[-132.450946,56.673433],[-133.51895,57.177311],[-133.12461,57.188265]]]},"id":"02280"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-133.907813,56.930849],[-133.102702,57.007526],[-132.538577,56.585802],[-133.66135,56.448878],[-133.907813,56.930849]]]},"id":"02280"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-134.115936,56.48174],[-134.417168,56.848695],[-133.880428,56.722725],[-134.115936,56.48174]]]},"id":"02280"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-158.893615,56.793925],[-159.901372,56.492694],[-159.86851,55.89023],[-159.561801,55.632814],[-159.813741,55.857368],[-160.536697,55.473983],[-161.506115,55.364444],[-161.960701,55.107028],[-163.034181,54.942719],[-163.587352,54.614103],[-164.847049,54.416933],[-164.551294,54.88795],[-162.880827,55.183705],[-161.807347,55.89023],[-160.585989,55.988815],[-159.813741,56.547463],[-158.893615,56.804879],[-158.893615,56.793925]]]},"id":"02013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-130.99408,56.262662],[-131.065281,56.405062],[-130.101339,56.114785],[-129.980846,55.28229],[-130.336847,54.920812],[-130.917403,54.789365],[-131.092665,55.189182],[-130.900972,55.698537],[-131.240543,55.977861],[-131.706083,55.89023],[-131.974453,55.49589],[-132.220915,55.736876],[-130.99408,56.262662]]]},"id":"02201"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-133.595627,56.350293],[-133.162949,56.317431],[-131.97993,55.178228],[-132.029222,54.701734],[-132.544054,55.096074],[-132.867194,54.701734],[-133.157472,54.95915],[-133.102702,55.42469],[-133.694212,55.780691],[-133.32178,55.81903],[-133.595627,56.350293]]]},"id":"02201"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-134.66363,56.28457],[-134.636246,56.28457],[-134.669107,56.169554],[-134.66363,56.28457]]]},"id":"02280"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-131.706083,55.89023],[-131.240543,55.977861],[-131.032419,55.28229],[-131.843006,55.457552],[-131.706083,55.89023]]]},"id":"02130"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-166.375115,54.01164],[-166.117699,53.852808],[-166.878994,53.431084],[-167.032348,53.945916],[-166.375115,54.01164]]]},"id":"02016"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-168.790446,53.157237],[-168.007243,53.568007],[-167.842935,53.387268],[-168.971185,52.877913],[-168.790446,53.157237]]]},"id":"02016"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.430026,48.699007],[-94.430026,48.364914],[-95.344675,48.540176],[-95.322768,49.000239],[-94.824366,49.295994],[-94.430026,48.699007]]]},"id":"27077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.850787,49.000239],[-120.752202,48.655192],[-122.329561,48.644238],[-122.488392,48.644238],[-122.756762,49.000239],[-120.850787,49.000239]]]},"id":"53073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.070335,49.000239],[-113.347378,48.310145],[-113.018762,48.134883],[-112.9859,47.954144],[-113.144732,47.598142],[-113.467871,47.598142],[-113.632179,47.598142],[-114.010088,48.052728],[-114.601598,47.789835],[-115.012368,48.019867],[-114.727567,49.000239],[-114.070335,49.000239]]]},"id":"30029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.727567,49.000239],[-115.012368,48.019867],[-115.521724,47.910328],[-115.844863,48.21156],[-116.04751,48.217037],[-116.04751,48.501838],[-116.04751,49.000239],[-114.727567,49.000239]]]},"id":"30053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.04751,49.000239],[-116.04751,48.501838],[-116.786897,48.501838],[-116.836189,48.846885],[-117.033359,48.846885],[-117.033359,49.000239],[-116.04751,49.000239]]]},"id":"16021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-108.237393,49.000239],[-108.434563,47.976051],[-108.889149,47.735066],[-109.540905,47.740543],[-109.535428,48.134883],[-109.491612,49.000239],[-108.237393,49.000239]]]},"id":"30005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.427699,49.000239],[-117.438653,48.047251],[-117.537238,48.047251],[-117.822039,47.822697],[-118.342348,47.893897],[-118.139701,48.266329],[-118.194471,49.000239],[-117.427699,49.000239]]]},"id":"53065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.835273,49.000239],[-118.851704,47.95962],[-118.972196,47.94319],[-118.98315,47.95962],[-119.021489,48.069159],[-119.870414,47.95962],[-120.702909,48.529222],[-120.752202,48.655192],[-120.850787,49.000239],[-118.835273,49.000239]]]},"id":"53047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.228743,49.000239],[-97.16302,48.545653],[-97.16302,48.540176],[-97.929791,48.545653],[-97.951699,49.000239],[-97.228743,49.000239]]]},"id":"38067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.407202,49.000239],[-96.385294,48.545653],[-97.16302,48.545653],[-97.228743,49.000239],[-96.407202,49.000239]]]},"id":"27069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.491612,49.000239],[-109.535428,48.134883],[-110.389831,48.304668],[-110.756786,48.217037],[-110.745832,49.000239],[-109.491612,49.000239]]]},"id":"30041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.951699,49.000239],[-97.929791,48.545653],[-98.017422,48.545653],[-98.318654,48.545653],[-98.838963,48.545653],[-98.97041,48.545653],[-98.997795,49.000239],[-97.951699,49.000239]]]},"id":"38019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.194471,49.000239],[-118.139701,48.266329],[-118.342348,47.893897],[-118.851704,47.95962],[-118.835273,49.000239],[-118.194471,49.000239]]]},"id":"53019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.033359,49.000239],[-117.033359,48.846885],[-117.044313,48.047251],[-117.438653,48.047251],[-117.427699,49.000239],[-117.033359,49.000239]]]},"id":"53051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.180344,49.000239],[-107.415852,47.69125],[-107.908777,47.450265],[-108.105947,47.592665],[-108.31407,47.581712],[-108.889149,47.735066],[-108.434563,47.976051],[-108.237393,49.000239],[-107.180344,49.000239]]]},"id":"30071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.997795,49.000239],[-98.97041,48.545653],[-99.200441,48.370391],[-99.490719,48.370391],[-99.490719,48.545653],[-99.523581,49.000239],[-98.997795,49.000239]]]},"id":"38095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.322768,49.000239],[-95.344675,48.540176],[-95.602092,48.540176],[-96.259324,48.545653],[-96.385294,48.545653],[-96.407202,49.000239],[-95.322768,49.000239]]]},"id":"27135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.11234,49.000239],[-105.805632,48.562084],[-105.84397,48.008913],[-106.419049,47.95962],[-106.490249,47.95962],[-107.415852,47.69125],[-107.180344,49.000239],[-106.11234,49.000239]]]},"id":"30105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.047534,49.000239],[-104.047534,48.633284],[-104.047534,48.386822],[-104.973137,48.562084],[-105.055291,49.000239],[-104.047534,49.000239]]]},"id":"30091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.941192,49.000239],[-102.886422,48.633284],[-104.047534,48.633284],[-104.047534,49.000239],[-102.941192,49.000239]]]},"id":"38023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.055291,49.000239],[-104.973137,48.562084],[-105.756339,48.562084],[-105.805632,48.562084],[-106.11234,49.000239],[-105.055291,49.000239]]]},"id":"30019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.495279,49.000239],[-101.451464,48.545653],[-101.057124,48.545653],[-101.062601,48.458022],[-101.840327,48.458022],[-102.021066,48.808546],[-102.021066,49.000239],[-101.495279,49.000239]]]},"id":"38075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.180814,49.000239],[-100.147952,48.545653],[-100.279399,48.545653],[-100.668261,48.633284],[-101.057124,48.545653],[-101.451464,48.545653],[-101.495279,49.000239],[-100.180814,49.000239]]]},"id":"38009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.021066,49.000239],[-102.021066,48.808546],[-102.152512,48.808546],[-102.234666,48.545653],[-102.886422,48.545653],[-102.886422,48.633284],[-102.941192,49.000239],[-102.021066,49.000239]]]},"id":"38013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.523581,49.000239],[-99.490719,48.545653],[-99.616689,48.545653],[-100.147952,48.545653],[-100.180814,49.000239],[-99.523581,49.000239]]]},"id":"38079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.271618,48.994762],[-111.408542,48.217037],[-112.186267,48.47993],[-112.191744,49.000239],[-111.271618,48.994762]]]},"id":"30101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.191744,49.000239],[-112.186267,48.47993],[-112.57513,48.485407],[-113.347378,48.310145],[-114.070335,49.000239],[-112.191744,49.000239]]]},"id":"30035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.745832,49.000239],[-110.756786,48.217037],[-111.408542,48.129406],[-111.408542,48.217037],[-111.271618,48.994762],[-110.745832,49.000239]]]},"id":"30051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.836189,48.846885],[-116.786897,48.501838],[-116.04751,48.501838],[-116.04751,48.217037],[-116.04751,47.976051],[-116.310403,48.030821],[-116.321357,47.88842],[-116.567819,47.992482],[-117.044313,47.976051],[-117.044313,48.047251],[-117.033359,48.846885],[-116.836189,48.846885]]]},"id":"16017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.152512,48.808546],[-102.021066,48.808546],[-101.840327,48.458022],[-101.062601,48.458022],[-100.969493,47.850082],[-101.873188,47.850082],[-101.971773,48.545653],[-102.234666,48.545653],[-102.152512,48.808546]]]},"id":"38101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.088176,48.627807],[-93.088176,48.55113],[-93.082699,47.893897],[-93.597531,47.899374],[-94.419073,47.844605],[-94.430026,48.364914],[-94.430026,48.699007],[-93.794701,48.518268],[-93.088176,48.627807]]]},"id":"27071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.329561,48.644238],[-120.752202,48.655192],[-120.702909,48.529222],[-121.004141,48.293714],[-121.836636,48.299191],[-122.378853,48.299191],[-122.488392,48.644238],[-122.329561,48.644238]]]},"id":"53057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.047534,48.633284],[-102.886422,48.633284],[-102.886422,48.545653],[-102.826176,48.123929],[-103.171223,48.134883],[-104.042057,47.997959],[-104.047534,48.386822],[-104.047534,48.633284]]]},"id":"38105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.668261,48.633284],[-100.279399,48.545653],[-100.197245,47.850082],[-100.520384,47.850082],[-100.586107,47.850082],[-100.969493,47.850082],[-101.062601,48.458022],[-101.057124,48.545653],[-100.668261,48.633284]]]},"id":"38049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.088176,48.55113],[-93.088176,48.627807],[-92.370697,48.222514],[-91.795618,48.200606],[-91.801095,47.866512],[-91.795618,46.94091],[-92.014696,46.705401],[-92.29402,46.661586],[-92.49119,46.765647],[-93.060791,46.765647],[-93.055314,47.028541],[-93.082699,47.893897],[-93.088176,48.55113]]]},"id":"27137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.756339,48.562084],[-104.973137,48.562084],[-104.047534,48.386822],[-104.042057,47.997959],[-104.567843,48.118452],[-105.192214,48.063682],[-105.84397,48.008913],[-105.805632,48.562084],[-105.756339,48.562084]]]},"id":"30085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.702909,48.529222],[-119.870414,47.95962],[-120.319524,47.455742],[-120.094969,47.264049],[-121.11368,47.598142],[-121.119157,47.778881],[-121.004141,48.293714],[-120.702909,48.529222]]]},"id":"53007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.886422,48.545653],[-102.234666,48.545653],[-101.971773,48.545653],[-101.873188,47.850082],[-102.388021,47.756974],[-102.63996,47.822697],[-102.826176,48.123929],[-102.886422,48.545653]]]},"id":"38061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.616689,48.545653],[-99.490719,48.545653],[-99.490719,48.370391],[-99.819336,48.370391],[-99.813859,47.850082],[-100.000075,47.850082],[-100.071275,47.844605],[-100.197245,47.850082],[-100.279399,48.545653],[-100.147952,48.545653],[-99.616689,48.545653]]]},"id":"38069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.259324,48.545653],[-95.602092,48.540176],[-95.591138,48.173221],[-96.50031,48.173221],[-97.020619,48.173221],[-97.146589,48.173221],[-97.141112,48.195129],[-97.16302,48.540176],[-97.16302,48.545653],[-96.385294,48.545653],[-96.259324,48.545653]]]},"id":"27089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.838963,48.545653],[-98.318654,48.545653],[-98.291269,48.195129],[-98.526778,47.915805],[-98.992318,47.992482],[-99.200441,48.370391],[-98.97041,48.545653],[-98.838963,48.545653]]]},"id":"38071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.017422,48.545653],[-97.929791,48.545653],[-97.16302,48.540176],[-97.141112,48.195129],[-97.825729,48.195129],[-97.902407,48.195129],[-97.91336,48.195129],[-98.291269,48.195129],[-98.318654,48.545653],[-98.017422,48.545653]]]},"id":"38099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.344675,48.540176],[-94.430026,48.364914],[-94.419073,47.844605],[-94.413596,47.444788],[-94.671012,47.411926],[-95.185844,47.411926],[-95.22966,48.019867],[-95.580184,48.019867],[-95.591138,48.173221],[-95.602092,48.540176],[-95.344675,48.540176]]]},"id":"27007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.57513,48.485407],[-112.186267,48.47993],[-111.408542,48.217037],[-111.408542,48.129406],[-111.408542,47.987005],[-112.898269,48.134883],[-113.018762,48.134883],[-113.347378,48.310145],[-112.57513,48.485407]]]},"id":"30073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.926547,48.063682],[-122.948455,47.866512],[-124.613445,47.882943],[-124.597014,48.381345],[-123.983597,48.162267],[-122.926547,48.063682]]]},"id":"53009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.819336,48.370391],[-99.490719,48.370391],[-99.200441,48.370391],[-98.992318,47.992482],[-98.526778,47.915805],[-98.526778,47.844605],[-98.636317,47.850082],[-99.299026,47.844605],[-99.813859,47.850082],[-99.819336,48.370391]]]},"id":"38005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.389831,48.304668],[-109.535428,48.134883],[-109.540905,47.740543],[-110.214569,47.417403],[-110.504846,47.417403],[-110.64177,47.417403],[-111.408542,47.696727],[-111.408542,47.987005],[-111.408542,48.129406],[-110.756786,48.217037],[-110.389831,48.304668]]]},"id":"30015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.836636,48.299191],[-121.004141,48.293714],[-121.119157,47.778881],[-121.234173,47.778881],[-122.395284,47.778881],[-122.395284,48.227991],[-122.406238,48.249898],[-122.378853,48.299191],[-121.836636,48.299191]]]},"id":"53061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-115.844863,48.21156],[-115.521724,47.910328],[-115.012368,48.019867],[-114.601598,47.789835],[-114.18535,47.138079],[-114.798768,47.269526],[-115.499816,47.488604],[-115.658647,47.466696],[-116.04751,47.976051],[-116.04751,48.217037],[-115.844863,48.21156]]]},"id":"30089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.023369,47.466696],[-91.034323,48.189652],[-89.582934,47.997959],[-91.023369,47.466696]]]},"id":"27031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.801095,47.866512],[-91.795618,48.200606],[-91.034323,48.189652],[-91.023369,47.466696],[-91.795618,46.94091],[-91.801095,47.866512]]]},"id":"27075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.91336,48.195129],[-97.902407,48.195129],[-97.880499,47.67482],[-97.979084,47.67482],[-97.984561,47.67482],[-98.11053,47.67482],[-98.499393,47.67482],[-98.526778,47.844605],[-98.526778,47.915805],[-98.291269,48.195129],[-97.91336,48.195129]]]},"id":"38063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.825729,48.195129],[-97.141112,48.195129],[-97.146589,48.173221],[-96.889173,47.67482],[-97.475205,47.669343],[-97.880499,47.67482],[-97.902407,48.195129],[-97.825729,48.195129]]]},"id":"38035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.50031,48.173221],[-95.591138,48.173221],[-95.580184,48.019867],[-95.580184,47.932236],[-95.71163,47.937713],[-95.8376,47.965097],[-96.483879,47.965097],[-96.50031,48.173221]]]},"id":"27113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.020619,48.173221],[-96.50031,48.173221],[-96.483879,47.965097],[-96.352432,47.762451],[-95.71163,47.937713],[-95.580184,47.932236],[-95.552799,47.499557],[-96.067632,47.499557],[-96.23194,47.499557],[-96.850834,47.499557],[-96.889173,47.67482],[-97.146589,48.173221],[-97.020619,48.173221]]]},"id":"27119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.021489,48.069159],[-118.98315,47.95962],[-119.213182,47.861036],[-120.007338,47.220233],[-120.094969,47.264049],[-120.319524,47.455742],[-119.870414,47.95962],[-119.021489,48.069159]]]},"id":"53017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.567843,48.118452],[-104.042057,47.997959],[-104.047534,47.395496],[-104.419966,47.357157],[-105.022429,47.702204],[-105.23603,47.789835],[-105.192214,48.063682],[-104.567843,48.118452]]]},"id":"30083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.171223,48.134883],[-102.826176,48.123929],[-102.63996,47.822697],[-103.100023,47.67482],[-103.100023,47.329772],[-103.664148,47.329772],[-103.992764,47.329772],[-104.047534,47.329772],[-104.047534,47.395496],[-104.042057,47.997959],[-103.171223,48.134883]]]},"id":"38053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.751285,47.740543],[-122.948455,47.603619],[-123.507103,47.515988],[-124.323167,47.532419],[-124.356029,47.532419],[-124.613445,47.882943],[-122.948455,47.866512],[-122.926547,48.063682],[-122.751285,47.740543]]]},"id":"53031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.898269,48.134883],[-111.408542,47.987005],[-111.408542,47.696727],[-111.419495,47.696727],[-112.049344,47.515988],[-112.816115,47.609096],[-112.9859,47.954144],[-113.018762,48.134883],[-112.898269,48.134883]]]},"id":"30099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.192214,48.063682],[-105.23603,47.789835],[-105.405815,47.181895],[-105.789201,47.181895],[-106.084956,47.181895],[-106.419049,47.95962],[-105.84397,48.008913],[-105.192214,48.063682]]]},"id":"30055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.310403,48.030821],[-116.04751,47.976051],[-115.658647,47.466696],[-114.963076,46.935433],[-116.332311,46.935433],[-116.332311,47.023064],[-116.326834,47.411926],[-116.321357,47.88842],[-116.310403,48.030821]]]},"id":"16079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.010088,48.052728],[-113.632179,47.598142],[-113.91698,47.499557],[-114.18535,47.138079],[-114.601598,47.789835],[-114.010088,48.052728]]]},"id":"30047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.537238,48.047251],[-117.438653,48.047251],[-117.044313,48.047251],[-117.044313,47.976051],[-117.038836,47.368111],[-117.038836,47.258572],[-117.822039,47.258572],[-117.822039,47.822697],[-117.537238,48.047251]]]},"id":"53063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.580184,48.019867],[-95.22966,48.019867],[-95.185844,47.411926],[-95.169413,47.15451],[-95.552799,47.149033],[-95.552799,47.499557],[-95.580184,47.932236],[-95.580184,48.019867]]]},"id":"27029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.567819,47.992482],[-116.321357,47.88842],[-116.326834,47.411926],[-117.038836,47.368111],[-117.044313,47.976051],[-116.567819,47.992482]]]},"id":"16055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.490249,47.95962],[-106.419049,47.95962],[-106.084956,47.181895],[-106.084956,46.858755],[-106.084956,46.847802],[-107.459668,46.858755],[-107.892346,46.853278],[-107.908777,47.450265],[-107.415852,47.69125],[-106.490249,47.95962]]]},"id":"30033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.8376,47.965097],[-95.71163,47.937713],[-96.352432,47.762451],[-96.483879,47.965097],[-95.8376,47.965097]]]},"id":"27125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.213182,47.861036],[-118.98315,47.95962],[-118.972196,47.94319],[-118.977673,47.264049],[-119.372013,46.738263],[-119.454167,46.678016],[-119.875891,46.628724],[-119.875891,46.628724],[-119.974476,46.738263],[-120.007338,47.220233],[-119.213182,47.861036]]]},"id":"53025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.972196,47.94319],[-118.851704,47.95962],[-118.342348,47.893897],[-117.822039,47.822697],[-117.822039,47.258572],[-117.958962,47.258572],[-118.950288,47.264049],[-118.977673,47.264049],[-118.972196,47.94319]]]},"id":"53043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.9859,47.954144],[-112.816115,47.609096],[-112.049344,47.515988],[-111.660481,46.913525],[-111.496173,46.760171],[-111.638573,46.716355],[-111.78645,46.568478],[-111.967189,46.568478],[-112.312237,46.4206],[-112.794207,46.831371],[-113.144732,47.598142],[-112.9859,47.954144]]]},"id":"30049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.482915,47.510511],[-122.537684,47.400973],[-122.800578,47.406449],[-122.948455,47.603619],[-122.751285,47.740543],[-122.482915,47.510511]]]},"id":"53035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.597531,47.899374],[-93.082699,47.893897],[-93.055314,47.028541],[-93.712547,47.028541],[-93.772794,47.028541],[-94.052118,47.428357],[-94.413596,47.444788],[-94.419073,47.844605],[-93.597531,47.899374]]]},"id":"27061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.969493,47.850082],[-100.586107,47.850082],[-100.673738,47.329772],[-100.964016,47.15451],[-101.254294,47.264049],[-101.429556,47.559804],[-102.081312,47.576235],[-102.207282,47.576235],[-102.388021,47.756974],[-101.873188,47.850082],[-100.969493,47.850082]]]},"id":"38055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.000075,47.850082],[-99.813859,47.850082],[-99.299026,47.844605],[-99.266165,47.587189],[-99.266165,47.329772],[-99.479765,47.329772],[-99.863151,47.329772],[-100.032936,47.329772],[-100.071275,47.844605],[-100.000075,47.850082]]]},"id":"38103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.520384,47.850082],[-100.197245,47.850082],[-100.071275,47.844605],[-100.032936,47.329772],[-100.115091,47.329772],[-100.608015,47.329772],[-100.673738,47.329772],[-100.586107,47.850082],[-100.520384,47.850082]]]},"id":"38083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.636317,47.850082],[-98.526778,47.844605],[-98.499393,47.67482],[-98.499393,47.587189],[-99.200441,47.587189],[-99.266165,47.587189],[-99.299026,47.844605],[-98.636317,47.850082]]]},"id":"38027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.63996,47.822697],[-102.388021,47.756974],[-102.207282,47.576235],[-102.147035,47.01211],[-103.0343,46.979248],[-103.100023,47.329772],[-103.100023,47.67482],[-102.63996,47.822697]]]},"id":"38025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.214569,47.417403],[-109.540905,47.740543],[-108.889149,47.735066],[-108.31407,47.581712],[-108.719364,47.269526],[-108.631733,46.749217],[-109.009642,46.749217],[-109.387551,46.694447],[-109.743552,46.694447],[-109.754506,47.187372],[-110.214569,47.417403]]]},"id":"30027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.022429,47.702204],[-104.419966,47.357157],[-104.606182,46.858755],[-105.405815,47.181895],[-105.23603,47.789835],[-105.022429,47.702204]]]},"id":"30021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.234173,47.778881],[-121.119157,47.778881],[-121.11368,47.598142],[-121.11368,47.598142],[-121.38205,47.088787],[-122.417192,47.318818],[-122.395284,47.778881],[-121.234173,47.778881]]]},"id":"53033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.419495,47.696727],[-111.408542,47.696727],[-110.64177,47.417403],[-110.652724,46.825894],[-111.079925,47.088787],[-111.660481,46.913525],[-112.049344,47.515988],[-111.419495,47.696727]]]},"id":"30013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.11053,47.67482],[-97.984561,47.67482],[-97.962653,47.242141],[-98.088623,47.242141],[-98.466531,47.242141],[-98.499393,47.324295],[-98.499393,47.587189],[-98.499393,47.67482],[-98.11053,47.67482]]]},"id":"38039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.979084,47.67482],[-97.880499,47.67482],[-97.475205,47.669343],[-97.453297,47.236664],[-97.705237,47.242141],[-97.962653,47.242141],[-97.984561,47.67482],[-97.979084,47.67482]]]},"id":"38091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.475205,47.669343],[-96.889173,47.67482],[-96.850834,47.499557],[-96.834403,47.236664],[-97.453297,47.236664],[-97.475205,47.669343]]]},"id":"38097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.507103,47.515988],[-122.948455,47.603619],[-122.800578,47.406449],[-122.822485,47.192849],[-122.904639,47.15451],[-123.200394,47.08331],[-123.507103,47.515988]]]},"id":"53045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.91698,47.499557],[-113.632179,47.598142],[-113.467871,47.598142],[-113.303563,46.831371],[-113.829349,46.661586],[-113.851257,46.661586],[-114.333228,46.661586],[-114.596121,46.634201],[-114.672798,46.738263],[-114.798768,47.269526],[-114.18535,47.138079],[-113.91698,47.499557]]]},"id":"30063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.467871,47.598142],[-113.144732,47.598142],[-112.794207,46.831371],[-112.312237,46.4206],[-112.558699,46.267246],[-112.887315,46.267246],[-113.035193,46.267246],[-113.303563,46.831371],[-113.467871,47.598142]]]},"id":"30077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-108.105947,47.592665],[-107.908777,47.450265],[-107.892346,46.853278],[-107.826623,46.754694],[-107.837576,46.754694],[-108.631733,46.749217],[-108.719364,47.269526],[-108.31407,47.581712],[-108.105947,47.592665]]]},"id":"30069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.11368,47.598142],[-121.11368,47.598142],[-120.094969,47.264049],[-120.007338,47.220233],[-119.974476,46.738263],[-120.511216,46.738263],[-121.38205,47.088787],[-121.11368,47.598142]]]},"id":"53037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.200441,47.587189],[-98.499393,47.587189],[-98.499393,47.324295],[-99.266165,47.329772],[-99.266165,47.587189],[-99.200441,47.587189]]]},"id":"38031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.081312,47.576235],[-101.429556,47.559804],[-101.254294,47.264049],[-101.76365,46.979248],[-102.097743,46.979248],[-102.147035,47.01211],[-102.207282,47.576235],[-102.081312,47.576235]]]},"id":"38057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-124.323167,47.532419],[-123.507103,47.515988],[-123.200394,47.08331],[-123.162056,46.793032],[-123.183963,46.793032],[-123.370179,46.793032],[-124.098612,46.793032],[-124.356029,47.532419],[-124.323167,47.532419]]]},"id":"53027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.537684,47.357157],[-122.537684,47.400973],[-122.482915,47.510511],[-122.537684,47.357157]]]},"id":"53033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.552799,47.149033],[-96.067632,47.149033],[-96.067632,47.499557],[-95.552799,47.499557],[-95.552799,47.149033]]]},"id":"27087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.23194,47.499557],[-96.067632,47.499557],[-96.067632,47.149033],[-96.193601,47.149033],[-96.582464,47.149033],[-96.828926,47.149033],[-96.834403,47.236664],[-96.850834,47.499557],[-96.23194,47.499557]]]},"id":"27107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-115.499816,47.488604],[-114.798768,47.269526],[-114.672798,46.738263],[-114.963076,46.935433],[-115.658647,47.466696],[-115.499816,47.488604]]]},"id":"30061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.052118,47.428357],[-93.772794,47.028541],[-93.778271,46.803986],[-94.282149,46.803986],[-94.342395,46.2782],[-94.654581,46.3494],[-94.731258,46.371308],[-94.786028,46.803986],[-94.671012,47.411926],[-94.413596,47.444788],[-94.052118,47.428357]]]},"id":"27021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.23013,47.198326],[-88.383484,47.285957],[-88.514931,47.285957],[-88.23013,47.198326]]]},"id":"26083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.806619,45.681213],[-68.047605,45.637398],[-68.43099,45.577151],[-68.513145,46.382262],[-68.819853,46.393216],[-68.819853,46.573955],[-69.723548,46.573955],[-70.02478,46.573955],[-69.225147,47.461219],[-68.902007,47.176418],[-68.233821,47.357157],[-67.790188,47.066879],[-67.806619,45.681213]]]},"id":"23003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.504846,47.417403],[-110.214569,47.417403],[-109.754506,47.187372],[-109.743552,46.694447],[-110.148845,46.716355],[-110.274815,46.710878],[-110.652724,46.825894],[-110.64177,47.417403],[-110.504846,47.417403]]]},"id":"30045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.326834,47.411926],[-116.332311,47.023064],[-117.000498,47.132602],[-117.038836,47.127126],[-117.038836,47.258572],[-117.038836,47.368111],[-116.326834,47.411926]]]},"id":"16009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.185844,47.411926],[-94.671012,47.411926],[-94.786028,46.803986],[-95.037967,46.803986],[-95.163936,46.803986],[-95.169413,47.15451],[-95.185844,47.411926]]]},"id":"27057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.800578,47.406449],[-122.537684,47.400973],[-122.537684,47.357157],[-122.417192,47.318818],[-121.38205,47.088787],[-121.45325,46.782078],[-122.203591,46.760171],[-122.822485,47.192849],[-122.800578,47.406449]]]},"id":"53053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.047534,47.395496],[-104.047534,47.329772],[-104.047534,46.639678],[-104.606182,46.683493],[-104.606182,46.858755],[-104.419966,47.357157],[-104.047534,47.395496]]]},"id":"30109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.992764,47.329772],[-103.664148,47.329772],[-103.609378,46.628724],[-104.047534,46.541093],[-104.047534,46.639678],[-104.047534,47.329772],[-103.992764,47.329772]]]},"id":"38033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.664148,47.329772],[-103.100023,47.329772],[-103.0343,46.979248],[-103.23147,46.628724],[-103.609378,46.628724],[-103.664148,47.329772]]]},"id":"38007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.608015,47.329772],[-100.115091,47.329772],[-100.082229,46.634201],[-100.586107,46.634201],[-100.662785,46.634201],[-100.936632,46.984725],[-100.964016,47.15451],[-100.673738,47.329772],[-100.608015,47.329772]]]},"id":"38015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.863151,47.329772],[-99.479765,47.329772],[-99.452381,46.634201],[-99.917921,46.634201],[-100.082229,46.634201],[-100.115091,47.329772],[-100.032936,47.329772],[-99.863151,47.329772]]]},"id":"38043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.479765,47.329772],[-99.266165,47.329772],[-98.499393,47.324295],[-98.466531,47.242141],[-98.439147,46.628724],[-99.036133,46.628724],[-99.452381,46.634201],[-99.479765,47.329772]]]},"id":"38093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.254294,47.264049],[-100.964016,47.15451],[-100.936632,46.984725],[-101.76365,46.979248],[-101.254294,47.264049]]]},"id":"38065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.383484,47.285957],[-88.23013,47.198326],[-88.449208,46.94091],[-88.679239,46.4206],[-88.712101,46.4206],[-88.991425,46.4206],[-88.931178,47.034018],[-88.514931,47.285957],[-88.383484,47.285957]]]},"id":"26061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.950288,47.264049],[-117.958962,47.258572],[-118.210901,46.738263],[-119.213182,46.738263],[-119.372013,46.738263],[-118.977673,47.264049],[-118.950288,47.264049]]]},"id":"53001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.822039,47.258572],[-117.038836,47.258572],[-117.038836,47.127126],[-117.038836,46.541093],[-117.038836,46.426077],[-117.230529,46.464416],[-117.849423,46.623247],[-118.216378,46.590385],[-118.210901,46.738263],[-117.958962,47.258572],[-117.822039,47.258572]]]},"id":"53075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.088623,47.242141],[-97.962653,47.242141],[-97.705237,47.242141],[-97.683329,46.628724],[-97.957176,46.628724],[-98.033853,46.628724],[-98.439147,46.628724],[-98.466531,47.242141],[-98.088623,47.242141]]]},"id":"38003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.453297,47.236664],[-96.834403,47.236664],[-96.828926,47.149033],[-96.790588,46.628724],[-97.278035,46.628724],[-97.683329,46.628724],[-97.705237,47.242141],[-97.453297,47.236664]]]},"id":"38017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.904639,47.15451],[-122.822485,47.192849],[-122.203591,46.760171],[-123.162056,46.793032],[-123.200394,47.08331],[-122.904639,47.15451]]]},"id":"53067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.789201,47.181895],[-105.405815,47.181895],[-104.606182,46.858755],[-104.606182,46.683493],[-104.732151,46.612293],[-105.44963,46.568478],[-106.084956,46.858755],[-106.084956,47.181895],[-105.789201,47.181895]]]},"id":"30079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.169413,47.15451],[-95.163936,46.803986],[-95.163936,46.716355],[-96.17717,46.716355],[-96.193601,47.149033],[-96.067632,47.149033],[-95.552799,47.149033],[-95.169413,47.15451]]]},"id":"27005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.582464,47.149033],[-96.193601,47.149033],[-96.17717,46.716355],[-96.281232,46.628724],[-96.790588,46.628724],[-96.790588,46.628724],[-96.828926,47.149033],[-96.582464,47.149033]]]},"id":"27027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.000498,47.132602],[-116.332311,47.023064],[-116.332311,46.935433],[-116.458281,46.628724],[-116.644497,46.61777],[-117.038836,46.541093],[-117.038836,47.127126],[-117.000498,47.132602]]]},"id":"16057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.38205,47.088787],[-120.511216,46.738263],[-119.974476,46.738263],[-119.875891,46.628724],[-119.864937,46.042691],[-119.990907,46.042691],[-121.52445,46.042691],[-121.52445,46.387739],[-121.45325,46.782078],[-121.38205,47.088787]]]},"id":"53077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.079925,47.088787],[-110.652724,46.825894],[-110.274815,46.710878],[-110.280292,46.217953],[-110.280292,46.185092],[-110.78417,46.190569],[-111.063494,46.190569],[-111.496173,46.760171],[-111.660481,46.913525],[-111.079925,47.088787]]]},"id":"30059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.931178,47.034018],[-88.991425,46.4206],[-88.991425,46.332969],[-89.741765,46.502754],[-89.889643,46.765647],[-88.931178,47.034018]]]},"id":"26131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.712547,47.028541],[-93.055314,47.028541],[-93.060791,46.765647],[-93.055314,46.4206],[-93.055314,46.157707],[-93.307254,46.157707],[-93.433223,46.15223],[-93.553716,46.245338],[-93.794701,46.245338],[-93.778271,46.803986],[-93.772794,47.028541],[-93.712547,47.028541]]]},"id":"27001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.147035,47.01211],[-102.097743,46.979248],[-102.097743,46.716355],[-102.097743,46.628724],[-102.17442,46.628724],[-102.930238,46.628724],[-103.23147,46.628724],[-103.0343,46.979248],[-102.147035,47.01211]]]},"id":"38089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.936632,46.984725],[-100.662785,46.634201],[-100.591584,46.426077],[-101.024263,46.283677],[-101.29811,46.628724],[-102.097743,46.716355],[-102.097743,46.979248],[-101.76365,46.979248],[-100.936632,46.984725]]]},"id":"38059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.043914,46.913525],[-88.115114,46.4206],[-88.679239,46.4206],[-88.449208,46.94091],[-88.043914,46.913525]]]},"id":"26013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.924785,46.584908],[-90.924785,46.15223],[-91.302693,46.157707],[-91.549156,46.157707],[-91.549156,46.754694],[-90.870015,46.962817],[-90.924785,46.584908]]]},"id":"55007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.963076,46.935433],[-114.672798,46.738263],[-114.596121,46.634201],[-116.168003,46.371308],[-116.31588,46.426077],[-116.37065,46.464416],[-116.458281,46.628724],[-116.332311,46.935433],[-114.963076,46.935433]]]},"id":"16035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.118311,46.497277],[-87.118311,46.157707],[-87.37025,45.987922],[-87.616713,45.987922],[-87.802929,46.245338],[-88.115114,46.245338],[-88.115114,46.4206],[-88.043914,46.913525],[-87.118311,46.497277]]]},"id":"26103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.084956,46.858755],[-105.44963,46.568478],[-104.732151,46.612293],[-104.885506,46.135799],[-104.98409,45.785275],[-106.128771,45.790752],[-106.194494,45.790752],[-106.084956,46.847802],[-106.084956,46.858755]]]},"id":"30017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.459668,46.858755],[-106.084956,46.847802],[-106.194494,45.790752],[-106.282125,45.177335],[-106.769573,45.177335],[-106.939358,45.867429],[-107.026989,46.393216],[-107.738991,46.480847],[-107.782807,46.497277],[-107.826623,46.754694],[-107.892346,46.853278],[-107.459668,46.858755]]]},"id":"30087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.303563,46.831371],[-113.035193,46.267246],[-113.517164,45.938629],[-113.801964,46.037214],[-113.829349,46.661586],[-113.303563,46.831371]]]},"id":"30039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.037967,46.803986],[-94.786028,46.803986],[-94.731258,46.371308],[-95.152983,46.371308],[-95.163936,46.716355],[-95.163936,46.803986],[-95.037967,46.803986]]]},"id":"27159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.282149,46.803986],[-93.778271,46.803986],[-93.794701,46.245338],[-93.811132,46.157707],[-94.342395,46.2782],[-94.282149,46.803986]]]},"id":"27035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.183963,46.793032],[-123.162056,46.793032],[-122.203591,46.760171],[-121.45325,46.782078],[-121.52445,46.387739],[-122.24193,46.387739],[-123.216825,46.387739],[-123.359225,46.382262],[-123.370179,46.793032],[-123.183963,46.793032]]]},"id":"53041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-124.098612,46.793032],[-123.370179,46.793032],[-123.359225,46.382262],[-123.72618,46.289154],[-124.098612,46.793032]]]},"id":"53049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.638573,46.716355],[-111.496173,46.760171],[-111.063494,46.190569],[-111.660481,45.834568],[-111.78645,46.568478],[-111.638573,46.716355]]]},"id":"30007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.116948,45.976968],[-85.23972,46.245338],[-85.23972,46.754694],[-85.015166,46.480847],[-84.127902,46.530139],[-84.116948,45.976968]]]},"id":"26033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.49119,46.765647],[-92.29402,46.661586],[-92.29402,46.415123],[-92.962206,46.4206],[-93.055314,46.4206],[-93.060791,46.765647],[-92.49119,46.765647]]]},"id":"27017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.889643,46.765647],[-89.741765,46.502754],[-88.991425,46.332969],[-88.991425,46.097461],[-89.927981,46.300108],[-90.415429,46.568478],[-89.889643,46.765647]]]},"id":"26053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.549156,46.754694],[-91.549156,46.157707],[-92.020173,46.157707],[-92.047557,46.157707],[-92.29402,46.157707],[-92.29402,46.415123],[-92.29402,46.661586],[-92.014696,46.705401],[-91.549156,46.754694]]]},"id":"55031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.837576,46.754694],[-107.826623,46.754694],[-107.782807,46.497277],[-108.77961,46.130322],[-109.009642,46.749217],[-108.631733,46.749217],[-107.837576,46.754694]]]},"id":"30065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.23972,46.754694],[-85.23972,46.245338],[-85.36569,46.245338],[-85.864092,46.245338],[-85.864092,46.502754],[-85.864092,46.68897],[-85.23972,46.754694]]]},"id":"26095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.148845,46.716355],[-109.743552,46.694447],[-109.387551,46.694447],[-109.655921,46.217953],[-110.006445,46.217953],[-110.280292,46.217953],[-110.274815,46.710878],[-110.148845,46.716355]]]},"id":"30107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.387551,46.694447],[-109.009642,46.749217],[-108.77961,46.130322],[-108.922011,46.130322],[-109.17395,46.130322],[-109.414935,46.042691],[-109.655921,46.217953],[-109.387551,46.694447]]]},"id":"30037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.213182,46.738263],[-118.210901,46.738263],[-118.216378,46.590385],[-118.227332,46.595862],[-118.698349,46.371308],[-119.043396,46.190569],[-119.454167,46.678016],[-119.372013,46.738263],[-119.213182,46.738263]]]},"id":"53021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.875891,46.628724],[-119.454167,46.678016],[-119.043396,46.190569],[-118.988627,45.998876],[-119.432259,45.916722],[-119.870414,45.834568],[-119.864937,46.042691],[-119.875891,46.628724],[-119.875891,46.628724]]]},"id":"53005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.17717,46.716355],[-95.163936,46.716355],[-95.152983,46.371308],[-95.147506,46.108415],[-95.393968,46.108415],[-95.771877,46.108415],[-96.264801,46.108415],[-96.281232,46.628724],[-96.17717,46.716355]]]},"id":"27111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.097743,46.716355],[-101.29811,46.628724],[-101.024263,46.283677],[-101.999158,46.053645],[-101.999158,46.207],[-102.097743,46.628724],[-102.097743,46.716355]]]},"id":"38037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.849423,46.623247],[-117.230529,46.464416],[-117.482468,45.998876],[-117.602961,45.998876],[-117.849423,46.623247]]]},"id":"53023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.546876,46.584908],[-90.300413,45.982445],[-90.678322,45.982445],[-90.924785,46.15223],[-90.924785,46.584908],[-90.546876,46.584908]]]},"id":"55003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.864092,46.68897],[-85.864092,46.502754],[-86.001015,46.502754],[-86.614433,46.157707],[-87.118311,46.157707],[-87.118311,46.497277],[-86.696587,46.437031],[-85.864092,46.68897]]]},"id":"26003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.732151,46.612293],[-104.606182,46.683493],[-104.047534,46.639678],[-104.047534,46.541093],[-104.047534,46.2782],[-104.047534,45.944106],[-104.042057,45.88386],[-104.885506,46.135799],[-104.732151,46.612293]]]},"id":"30025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.333228,46.661586],[-114.557782,45.566198],[-114.694706,45.199243],[-115.828432,45.193766],[-116.146095,45.106135],[-116.688312,45.270443],[-116.463758,45.61549],[-116.792374,45.856475],[-116.699266,45.998876],[-116.168003,46.371308],[-114.596121,46.634201],[-114.333228,46.661586]]]},"id":"16049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.851257,46.661586],[-113.829349,46.661586],[-113.801964,46.037214],[-113.517164,45.938629],[-113.517164,45.938629],[-113.944365,45.68669],[-114.557782,45.566198],[-114.333228,46.661586],[-113.851257,46.661586]]]},"id":"30081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.586107,46.634201],[-100.082229,46.634201],[-99.917921,46.634201],[-99.879582,46.283677],[-99.879582,45.944106],[-100.432753,45.944106],[-100.498476,45.944106],[-100.50943,45.944106],[-100.591584,46.426077],[-100.662785,46.634201],[-100.586107,46.634201]]]},"id":"38029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.917921,46.634201],[-99.452381,46.634201],[-99.036133,46.628724],[-99.036133,46.283677],[-99.348319,46.283677],[-99.879582,46.283677],[-99.917921,46.634201]]]},"id":"38047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.790588,46.628724],[-96.790588,46.628724],[-96.576987,46.020784],[-96.560556,45.933153],[-96.735818,45.933153],[-97.228743,45.933153],[-97.278035,46.283677],[-97.278035,46.628724],[-96.790588,46.628724]]]},"id":"38077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.033853,46.628724],[-98.033853,46.283677],[-98.335085,46.283677],[-99.003272,46.283677],[-99.036133,46.283677],[-99.036133,46.628724],[-98.439147,46.628724],[-98.033853,46.628724]]]},"id":"38045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.17442,46.628724],[-102.097743,46.628724],[-101.999158,46.207],[-102.49756,46.283677],[-102.924761,46.283677],[-102.930238,46.628724],[-102.17442,46.628724]]]},"id":"38041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.281232,46.628724],[-96.264801,46.108415],[-96.264801,46.020784],[-96.390771,46.020784],[-96.576987,46.020784],[-96.790588,46.628724],[-96.281232,46.628724]]]},"id":"27167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.644497,46.61777],[-116.458281,46.628724],[-116.37065,46.464416],[-116.699266,45.998876],[-116.792374,45.856475],[-116.918344,45.993399],[-117.038836,46.426077],[-117.038836,46.541093],[-116.644497,46.61777]]]},"id":"16069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.957176,46.628724],[-97.683329,46.628724],[-97.278035,46.628724],[-97.278035,46.283677],[-98.006468,46.283677],[-98.033853,46.283677],[-98.033853,46.628724],[-97.957176,46.628724]]]},"id":"38073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.23147,46.628724],[-102.930238,46.628724],[-102.924761,46.283677],[-102.995961,46.2782],[-104.047534,46.2782],[-104.047534,46.541093],[-103.609378,46.628724],[-103.23147,46.628724]]]},"id":"38087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.227332,46.595862],[-118.216378,46.590385],[-117.849423,46.623247],[-117.602961,45.998876],[-117.975393,45.998876],[-117.997301,45.998876],[-118.227332,46.595862]]]},"id":"53013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.698349,46.371308],[-118.227332,46.595862],[-117.997301,45.998876],[-118.58881,45.998876],[-118.988627,45.998876],[-119.043396,46.190569],[-118.698349,46.371308]]]},"id":"53071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.415429,46.568478],[-89.927981,46.300108],[-90.042997,45.982445],[-90.300413,45.982445],[-90.546876,46.584908],[-90.415429,46.568478]]]},"id":"55051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-69.723548,46.573955],[-69.822133,45.74146],[-69.619487,45.013027],[-69.356593,45.073273],[-69.268962,44.722749],[-69.471609,44.695364],[-69.581148,44.706318],[-69.931672,44.61321],[-70.41912,45.144473],[-70.550566,45.670259],[-70.02478,46.573955],[-69.723548,46.573955]]]},"id":"23025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-68.819853,46.393216],[-68.776038,45.243058],[-69.356593,45.073273],[-69.619487,45.013027],[-69.822133,45.74146],[-69.723548,46.573955],[-68.819853,46.573955],[-68.819853,46.393216]]]},"id":"23021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.967189,46.568478],[-111.78645,46.568478],[-111.660481,45.834568],[-111.802881,45.796229],[-111.967189,45.850998],[-112.191744,45.746937],[-112.57513,46.179615],[-112.558699,46.267246],[-112.312237,46.4206],[-111.967189,46.568478]]]},"id":"30043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.001015,46.502754],[-85.864092,46.502754],[-85.864092,46.245338],[-85.864092,45.966014],[-86.461078,45.75789],[-86.614433,46.157707],[-86.001015,46.502754]]]},"id":"26153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.782807,46.497277],[-107.738991,46.480847],[-107.50896,46.042691],[-108.0457,45.900291],[-108.067608,45.516905],[-108.642687,45.462136],[-108.806995,45.626444],[-108.845333,45.610013],[-108.922011,46.130322],[-108.77961,46.130322],[-107.782807,46.497277]]]},"id":"30111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.738991,46.480847],[-107.026989,46.393216],[-106.939358,45.867429],[-107.426806,45.976968],[-107.50896,46.042691],[-107.738991,46.480847]]]},"id":"30103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.31588,46.426077],[-116.168003,46.371308],[-116.699266,45.998876],[-116.37065,46.464416],[-116.31588,46.426077]]]},"id":"16061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.038836,46.426077],[-116.918344,45.993399],[-117.482468,45.998876],[-117.230529,46.464416],[-117.038836,46.426077]]]},"id":"53003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.591584,46.426077],[-100.50943,45.944106],[-101.999158,45.944106],[-101.999158,46.053645],[-101.024263,46.283677],[-100.591584,46.426077]]]},"id":"38085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.712101,46.4206],[-88.679239,46.4206],[-88.115114,46.4206],[-88.115114,46.245338],[-88.115114,45.922199],[-88.493023,45.993399],[-88.684716,46.015307],[-88.931178,46.075553],[-88.991425,46.097461],[-88.991425,46.332969],[-88.991425,46.4206],[-88.712101,46.4206]]]},"id":"26071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.962206,46.4206],[-92.29402,46.415123],[-92.29402,46.157707],[-92.841714,45.730506],[-93.066268,45.730506],[-93.142945,45.730506],[-93.055314,46.157707],[-93.055314,46.4206],[-92.962206,46.4206]]]},"id":"27115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-68.513145,46.382262],[-68.43099,45.577151],[-68.047605,45.637398],[-68.058559,45.254012],[-68.814376,44.68441],[-69.268962,44.722749],[-69.356593,45.073273],[-68.776038,45.243058],[-68.819853,46.393216],[-68.513145,46.382262]]]},"id":"23019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.52445,46.387739],[-121.52445,46.042691],[-121.52445,45.725029],[-121.924267,45.648352],[-122.247407,45.549767],[-122.247407,46.053645],[-122.24193,46.387739],[-121.52445,46.387739]]]},"id":"53059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.216825,46.387739],[-122.24193,46.387739],[-122.247407,46.053645],[-122.433623,45.976968],[-122.784147,45.850998],[-123.211348,46.174138],[-123.216825,46.387739]]]},"id":"53015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.359225,46.382262],[-123.216825,46.387739],[-123.211348,46.174138],[-123.364702,46.146753],[-123.545441,46.261769],[-123.72618,46.289154],[-123.359225,46.382262]]]},"id":"53069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.152983,46.371308],[-94.731258,46.371308],[-94.654581,46.3494],[-94.643627,45.774321],[-95.142029,45.774321],[-95.147506,46.108415],[-95.152983,46.371308]]]},"id":"27153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.654581,46.3494],[-94.342395,46.2782],[-93.811132,46.157707],[-93.76184,45.823614],[-94.008302,45.823614],[-94.271195,45.774321],[-94.451934,45.774321],[-94.643627,45.774321],[-94.654581,46.3494]]]},"id":"27097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.927981,46.300108],[-88.991425,46.097461],[-88.931178,46.075553],[-89.046194,45.894814],[-89.298133,45.872906],[-90.042997,45.894814],[-90.042997,45.982445],[-89.927981,46.300108]]]},"id":"55125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.348319,46.283677],[-99.036133,46.283677],[-99.003272,46.283677],[-99.003272,45.938629],[-99.720751,45.938629],[-99.879582,45.944106],[-99.879582,46.283677],[-99.348319,46.283677]]]},"id":"38051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.335085,46.283677],[-98.033853,46.283677],[-98.006468,46.283677],[-98.006468,45.938629],[-98.723948,45.938629],[-99.003272,45.938629],[-99.003272,46.283677],[-98.335085,46.283677]]]},"id":"38021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.49756,46.283677],[-101.999158,46.207],[-101.999158,46.053645],[-101.999158,45.944106],[-101.999158,45.944106],[-102.623529,45.944106],[-102.941192,45.944106],[-102.995961,45.944106],[-102.995961,46.2782],[-102.924761,46.283677],[-102.49756,46.283677]]]},"id":"38001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.006468,46.283677],[-97.278035,46.283677],[-97.228743,45.933153],[-97.853114,45.933153],[-97.979084,45.938629],[-98.006468,45.938629],[-98.006468,46.283677]]]},"id":"38081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.995961,46.2782],[-102.995961,45.944106],[-104.047534,45.944106],[-104.047534,46.2782],[-102.995961,46.2782]]]},"id":"38011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.364702,46.146753],[-123.359225,45.779798],[-123.841196,45.785275],[-123.967166,45.785275],[-124.010981,46.22343],[-123.545441,46.261769],[-123.364702,46.146753]]]},"id":"41007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.887315,46.267246],[-112.558699,46.267246],[-112.57513,46.179615],[-113.084485,45.861952],[-113.517164,45.938629],[-113.517164,45.938629],[-113.035193,46.267246],[-112.887315,46.267246]]]},"id":"30023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.802929,46.245338],[-87.616713,45.987922],[-87.846744,45.725029],[-88.060345,45.779798],[-88.115114,45.922199],[-88.115114,46.245338],[-87.802929,46.245338]]]},"id":"26043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.553716,46.245338],[-93.433223,46.15223],[-93.515377,45.735983],[-93.5099,45.560721],[-93.652301,45.560721],[-93.76184,45.560721],[-93.76184,45.823614],[-93.811132,46.157707],[-93.794701,46.245338],[-93.553716,46.245338]]]},"id":"27095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.36569,46.245338],[-85.23972,46.245338],[-84.116948,45.976968],[-84.70298,45.850998],[-85.513567,46.097461],[-85.864092,45.966014],[-85.864092,46.245338],[-85.36569,46.245338]]]},"id":"26097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.006445,46.217953],[-109.655921,46.217953],[-109.414935,46.042691],[-109.562813,45.610013],[-110.061214,45.171858],[-110.230999,45.171858],[-110.280292,46.185092],[-110.280292,46.217953],[-110.006445,46.217953]]]},"id":"30097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.063494,46.190569],[-110.78417,46.190569],[-111.041587,45.002073],[-111.058017,44.667979],[-111.047063,44.476286],[-111.37568,44.750133],[-111.353772,45.642875],[-111.802881,45.796229],[-111.660481,45.834568],[-111.063494,46.190569]]]},"id":"30031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.78417,46.190569],[-110.280292,46.185092],[-110.230999,45.171858],[-110.061214,45.171858],[-109.798321,45.166381],[-109.798321,45.002073],[-111.041587,45.002073],[-110.78417,46.190569]]]},"id":"30067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.784147,45.850998],[-122.762239,45.730506],[-122.926547,45.725029],[-123.134671,45.779798],[-123.359225,45.779798],[-123.364702,46.146753],[-123.211348,46.174138],[-122.784147,45.850998]]]},"id":"41009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.57513,46.179615],[-112.191744,45.746937],[-112.684669,45.626444],[-113.084485,45.861952],[-112.57513,46.179615]]]},"id":"30093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.307254,46.157707],[-93.055314,46.157707],[-93.142945,45.730506],[-93.498947,45.735983],[-93.515377,45.735983],[-93.433223,46.15223],[-93.307254,46.157707]]]},"id":"27065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.118311,46.157707],[-86.614433,46.157707],[-86.461078,45.75789],[-86.784218,45.861952],[-87.266188,45.549767],[-87.37025,45.987922],[-87.118311,46.157707]]]},"id":"26041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.020173,46.157707],[-91.549156,46.157707],[-91.538202,45.637398],[-92.031127,45.637398],[-92.047557,46.157707],[-92.020173,46.157707]]]},"id":"55129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.302693,46.157707],[-90.924785,46.15223],[-90.678322,45.982445],[-90.678322,45.637398],[-91.538202,45.637398],[-91.549156,46.157707],[-91.302693,46.157707]]]},"id":"55113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.29402,46.157707],[-92.047557,46.157707],[-92.031127,45.637398],[-92.157096,45.637398],[-92.529528,45.730506],[-92.885529,45.642875],[-92.841714,45.730506],[-92.29402,46.157707]]]},"id":"55013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.885506,46.135799],[-104.042057,45.88386],[-104.042057,45.210196],[-104.058488,44.996596],[-105.03886,45.002073],[-104.98409,45.785275],[-104.885506,46.135799]]]},"id":"30011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.17395,46.130322],[-108.922011,46.130322],[-108.845333,45.610013],[-109.798321,45.166381],[-110.061214,45.171858],[-109.562813,45.610013],[-109.414935,46.042691],[-109.17395,46.130322]]]},"id":"30095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.264801,46.108415],[-95.771877,46.108415],[-95.760923,45.75789],[-96.253848,45.75789],[-96.264801,46.020784],[-96.264801,46.108415]]]},"id":"27051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.393968,46.108415],[-95.147506,46.108415],[-95.142029,45.774321],[-95.142029,45.75789],[-95.42683,45.75789],[-95.760923,45.75789],[-95.771877,46.108415],[-95.393968,46.108415]]]},"id":"27041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.931178,46.075553],[-88.684716,46.015307],[-88.4273,45.725029],[-88.4273,45.374505],[-88.679239,45.379982],[-89.046194,45.462136],[-89.046194,45.894814],[-88.931178,46.075553]]]},"id":"55041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.433623,45.976968],[-122.247407,46.053645],[-122.247407,45.549767],[-122.762239,45.730506],[-122.784147,45.850998],[-122.433623,45.976968]]]},"id":"53011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.990907,46.042691],[-119.864937,46.042691],[-119.870414,45.834568],[-120.001861,45.81266],[-120.653617,45.735983],[-120.834356,45.675736],[-120.91651,45.642875],[-121.442296,45.697644],[-121.52445,45.725029],[-121.52445,46.042691],[-119.990907,46.042691]]]},"id":"53039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.426806,45.976968],[-106.939358,45.867429],[-106.769573,45.177335],[-106.282125,45.177335],[-106.265695,44.991119],[-107.914254,45.002073],[-108.248347,45.002073],[-108.642687,45.462136],[-108.067608,45.516905],[-108.0457,45.900291],[-107.50896,46.042691],[-107.426806,45.976968]]]},"id":"30003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.390771,46.020784],[-96.264801,46.020784],[-96.253848,45.75789],[-96.253848,45.588105],[-96.828926,45.588105],[-96.834403,45.588105],[-96.560556,45.933153],[-96.576987,46.020784],[-96.390771,46.020784]]]},"id":"27155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.493023,45.993399],[-88.115114,45.922199],[-88.060345,45.779798],[-88.4273,45.725029],[-88.684716,46.015307],[-88.493023,45.993399]]]},"id":"55037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.58881,45.998876],[-117.997301,45.998876],[-117.975393,45.998876],[-117.975393,45.861952],[-118.117793,45.47309],[-118.698349,45.34712],[-118.51761,44.996596],[-118.676441,44.996596],[-119.163889,44.996596],[-119.147458,45.516905],[-119.432259,45.916722],[-118.988627,45.998876],[-118.58881,45.998876]]]},"id":"41059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.975393,45.998876],[-117.602961,45.998876],[-117.482468,45.998876],[-116.918344,45.993399],[-116.792374,45.856475],[-116.463758,45.61549],[-116.688312,45.270443],[-116.78142,45.07875],[-117.268868,45.07875],[-117.898716,45.861952],[-117.975393,45.861952],[-117.975393,45.998876]]]},"id":"41063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.616713,45.987922],[-87.37025,45.987922],[-87.266188,45.549767],[-87.589328,45.095181],[-87.846744,45.725029],[-87.616713,45.987922]]]},"id":"26109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.300413,45.982445],[-90.042997,45.982445],[-90.042997,45.894814],[-90.042997,45.555244],[-90.042997,45.379982],[-90.168967,45.379982],[-90.678322,45.379982],[-90.678322,45.637398],[-90.678322,45.982445],[-90.300413,45.982445]]]},"id":"55099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.623529,45.944106],[-101.999158,45.944106],[-101.999158,45.47309],[-101.999158,45.040411],[-102.042974,45.040411],[-102.957623,45.040411],[-102.957623,45.210196],[-102.941192,45.944106],[-102.623529,45.944106]]]},"id":"46105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.047534,45.944106],[-102.995961,45.944106],[-102.941192,45.944106],[-102.957623,45.210196],[-104.042057,45.210196],[-104.042057,45.88386],[-104.047534,45.944106]]]},"id":"46063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.999158,45.944106],[-100.50943,45.944106],[-100.498476,45.944106],[-100.432753,45.593582],[-100.339645,45.47309],[-100.772323,45.47309],[-101.467895,45.47309],[-101.714357,45.47309],[-101.999158,45.47309],[-101.999158,45.944106],[-101.999158,45.944106]]]},"id":"46031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.432753,45.944106],[-99.879582,45.944106],[-99.720751,45.938629],[-99.715274,45.593582],[-100.339645,45.593582],[-100.432753,45.593582],[-100.498476,45.944106],[-100.432753,45.944106]]]},"id":"46021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.517164,45.938629],[-113.084485,45.861952],[-112.684669,45.626444],[-112.169836,44.826811],[-111.479742,44.711795],[-111.616665,44.547487],[-112.816115,44.377701],[-113.456917,44.865149],[-113.944365,45.68669],[-113.517164,45.938629]]]},"id":"30001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.720751,45.938629],[-99.003272,45.938629],[-98.723948,45.938629],[-98.723948,45.593582],[-99.709797,45.593582],[-99.715274,45.593582],[-99.720751,45.938629]]]},"id":"46089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.723948,45.938629],[-98.006468,45.938629],[-97.979084,45.938629],[-97.979084,45.588105],[-97.979084,45.243058],[-98.532255,45.243058],[-98.718471,45.243058],[-98.723948,45.243058],[-98.723948,45.593582],[-98.723948,45.938629]]]},"id":"46013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.735818,45.933153],[-96.560556,45.933153],[-96.834403,45.588105],[-96.472925,45.325212],[-96.681049,45.325212],[-97.228743,45.297827],[-97.228743,45.560721],[-97.228743,45.933153],[-96.735818,45.933153]]]},"id":"46109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.853114,45.933153],[-97.228743,45.933153],[-97.228743,45.560721],[-97.979084,45.588105],[-97.979084,45.938629],[-97.853114,45.933153]]]},"id":"46091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.432259,45.916722],[-119.147458,45.516905],[-119.163889,44.996596],[-119.673245,44.996596],[-119.78826,45.067796],[-120.001861,45.81266],[-119.870414,45.834568],[-119.432259,45.916722]]]},"id":"41049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.298133,45.872906],[-89.046194,45.894814],[-89.046194,45.462136],[-89.237887,45.467613],[-89.424103,45.467613],[-90.042997,45.555244],[-90.042997,45.894814],[-89.298133,45.872906]]]},"id":"55085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.898716,45.861952],[-117.268868,45.07875],[-117.778223,44.991119],[-118.243763,44.958257],[-118.51761,44.996596],[-118.698349,45.34712],[-118.117793,45.47309],[-117.975393,45.861952],[-117.898716,45.861952]]]},"id":"41061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.967189,45.850998],[-111.802881,45.796229],[-111.353772,45.642875],[-111.37568,44.750133],[-111.479742,44.711795],[-112.169836,44.826811],[-112.684669,45.626444],[-112.191744,45.746937],[-111.967189,45.850998]]]},"id":"30057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.008302,45.823614],[-93.76184,45.823614],[-93.76184,45.560721],[-94.150702,45.560721],[-94.271195,45.774321],[-94.008302,45.823614]]]},"id":"27009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.653617,45.735983],[-120.001861,45.81266],[-119.78826,45.067796],[-119.870414,45.067796],[-120.494786,45.067796],[-120.505739,45.084227],[-120.653617,45.735983]]]},"id":"41021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.060345,45.779798],[-87.846744,45.725029],[-87.589328,45.095181],[-87.76459,44.963734],[-88.4273,45.374505],[-88.4273,45.725029],[-88.060345,45.779798]]]},"id":"55075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.730365,45.785275],[-84.730365,45.779798],[-84.730365,45.286874],[-85.09732,45.363551],[-85.09732,45.369028],[-84.730365,45.785275]]]},"id":"26047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.128771,45.790752],[-104.98409,45.785275],[-105.03886,45.002073],[-105.088152,45.002073],[-106.024709,44.991119],[-106.265695,44.991119],[-106.282125,45.177335],[-106.194494,45.790752],[-106.128771,45.790752]]]},"id":"30075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.730365,45.779798],[-84.730365,45.785275],[-84.204579,45.626444],[-84.248394,45.199243],[-84.368887,45.199243],[-84.735842,45.204719],[-84.730365,45.286874],[-84.730365,45.779798]]]},"id":"26031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.841196,45.785275],[-123.359225,45.779798],[-123.463287,45.434751],[-123.72618,45.07875],[-123.72618,45.045888],[-124.000027,45.045888],[-124.005504,45.045888],[-123.967166,45.785275],[-123.841196,45.785275]]]},"id":"41057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.134671,45.779798],[-122.926547,45.725029],[-122.745808,45.434751],[-122.866301,45.319735],[-123.063471,45.401889],[-123.463287,45.434751],[-123.359225,45.779798],[-123.134671,45.779798]]]},"id":"41067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.451934,45.774321],[-94.271195,45.774321],[-94.150702,45.560721],[-94.046641,45.423797],[-94.052118,45.423797],[-94.260241,45.281397],[-94.534088,45.325212],[-94.76412,45.325212],[-94.884612,45.412843],[-95.131075,45.412843],[-95.142029,45.75789],[-95.142029,45.774321],[-94.643627,45.774321],[-94.451934,45.774321]]]},"id":"27145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.253848,45.75789],[-95.760923,45.75789],[-95.749969,45.412843],[-95.974524,45.412843],[-96.116924,45.412843],[-96.253848,45.588105],[-96.253848,45.75789]]]},"id":"27149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.42683,45.75789],[-95.142029,45.75789],[-95.131075,45.412843],[-95.257044,45.412843],[-95.749969,45.412843],[-95.760923,45.75789],[-95.42683,45.75789]]]},"id":"27121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.834356,45.675736],[-120.653617,45.735983],[-120.505739,45.084227],[-121.026049,45.22115],[-120.91651,45.642875],[-120.834356,45.675736]]]},"id":"41055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.498947,45.735983],[-93.142945,45.730506],[-93.016976,45.412843],[-93.159376,45.412843],[-93.5099,45.412843],[-93.5099,45.560721],[-93.515377,45.735983],[-93.498947,45.735983]]]},"id":"27059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.066268,45.730506],[-92.841714,45.730506],[-92.885529,45.642875],[-92.743129,45.297827],[-93.016976,45.297827],[-93.016976,45.412843],[-93.142945,45.730506],[-93.066268,45.730506]]]},"id":"27025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.529528,45.730506],[-92.157096,45.637398],[-92.157096,45.210196],[-92.650021,45.210196],[-92.75956,45.210196],[-92.743129,45.297827],[-92.885529,45.642875],[-92.529528,45.730506]]]},"id":"55095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.926547,45.725029],[-122.762239,45.730506],[-122.247407,45.549767],[-121.924267,45.648352],[-121.820205,45.462136],[-122.356945,45.462136],[-122.745808,45.434751],[-122.926547,45.725029]]]},"id":"41051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.924267,45.648352],[-121.52445,45.725029],[-121.442296,45.697644],[-121.694236,45.259489],[-121.820205,45.462136],[-121.924267,45.648352]]]},"id":"41027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.442296,45.697644],[-120.91651,45.642875],[-121.026049,45.22115],[-120.505739,45.084227],[-120.494786,45.067796],[-120.374293,44.821334],[-120.998664,44.821334],[-121.759959,44.826811],[-121.732574,44.887057],[-121.694236,45.259489],[-121.442296,45.697644]]]},"id":"41065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.944365,45.68669],[-113.456917,44.865149],[-112.816115,44.377701],[-112.996854,44.235301],[-113.002331,44.235301],[-113.319994,44.235301],[-114.196304,44.859672],[-114.563259,44.574871],[-114.809722,44.81038],[-114.694706,45.199243],[-114.557782,45.566198],[-113.944365,45.68669]]]},"id":"16059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.954497,44.41604],[-68.058559,45.254012],[-68.047605,45.637398],[-67.806619,45.681213],[-66.979601,44.804903],[-67.954497,44.41604]]]},"id":"23029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-70.550566,45.670259],[-70.41912,45.144473],[-69.931672,44.61321],[-70.128842,44.48724],[-70.172658,44.481763],[-70.238381,44.459856],[-70.769644,44.733703],[-70.835367,45.27592],[-70.550566,45.670259]]]},"id":"23007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.157096,45.637398],[-92.031127,45.637398],[-91.538202,45.637398],[-91.543679,45.29235],[-91.664172,45.210196],[-92.157096,45.210196],[-92.157096,45.637398]]]},"id":"55005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.678322,45.637398],[-90.678322,45.379982],[-90.924785,45.29235],[-91.089093,45.29235],[-91.543679,45.29235],[-91.538202,45.637398],[-90.678322,45.637398]]]},"id":"55107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-108.806995,45.626444],[-108.642687,45.462136],[-108.248347,45.002073],[-108.620779,45.002073],[-109.798321,45.002073],[-109.798321,45.166381],[-108.845333,45.610013],[-108.806995,45.626444]]]},"id":"30009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.388515,45.204719],[-83.4871,45.204719],[-83.881439,45.204719],[-84.199102,45.199243],[-84.248394,45.199243],[-84.204579,45.626444],[-83.388515,45.204719]]]},"id":"26141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.339645,45.593582],[-99.715274,45.593582],[-99.709797,45.593582],[-99.709797,45.243058],[-100.257491,45.248535],[-100.339645,45.47309],[-100.432753,45.593582],[-100.339645,45.593582]]]},"id":"46129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.709797,45.593582],[-98.723948,45.593582],[-98.723948,45.243058],[-99.572873,45.243058],[-99.709797,45.243058],[-99.709797,45.593582]]]},"id":"46045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.979084,45.588105],[-97.228743,45.560721],[-97.228743,45.297827],[-97.228743,45.14995],[-97.23422,45.14995],[-97.491636,45.14995],[-97.924314,45.155427],[-97.979084,45.155427],[-97.979084,45.243058],[-97.979084,45.588105]]]},"id":"46037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.828926,45.588105],[-96.253848,45.588105],[-96.116924,45.412843],[-96.10597,45.177335],[-96.368863,45.259489],[-96.451017,45.270443],[-96.451017,45.297827],[-96.456494,45.303304],[-96.472925,45.325212],[-96.834403,45.588105],[-96.828926,45.588105]]]},"id":"27011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.652301,45.560721],[-93.5099,45.560721],[-93.5099,45.412843],[-93.5099,45.243058],[-93.520854,45.248535],[-94.046641,45.423797],[-94.150702,45.560721],[-93.76184,45.560721],[-93.652301,45.560721]]]},"id":"27141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.424103,45.467613],[-89.424103,45.117088],[-90.042997,45.122565],[-90.042997,45.379982],[-90.042997,45.555244],[-89.424103,45.467613]]]},"id":"55069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.772323,45.47309],[-100.339645,45.47309],[-100.257491,45.248535],[-100.405368,44.898011],[-100.717554,44.772041],[-101.139278,44.744656],[-101.500756,44.991119],[-101.467895,45.47309],[-100.772323,45.47309]]]},"id":"46041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.714357,45.47309],[-101.467895,45.47309],[-101.500756,44.991119],[-101.139278,44.744656],[-101.380264,44.657025],[-101.999158,44.509148],[-101.999158,45.040411],[-101.999158,45.47309],[-101.714357,45.47309]]]},"id":"46137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.237887,45.467613],[-89.046194,45.462136],[-88.679239,45.379982],[-88.6409,45.117088],[-88.974994,45.117088],[-88.980471,45.029457],[-88.991425,45.029457],[-89.221456,45.029457],[-89.424103,45.117088],[-89.424103,45.467613],[-89.237887,45.467613]]]},"id":"55067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.356945,45.462136],[-121.820205,45.462136],[-121.694236,45.259489],[-121.732574,44.887057],[-122.395284,44.887057],[-122.84987,45.259489],[-122.866301,45.319735],[-122.745808,45.434751],[-122.356945,45.462136]]]},"id":"41005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.063471,45.401889],[-122.866301,45.319735],[-122.84987,45.259489],[-122.964886,45.286874],[-123.068948,45.073273],[-123.622119,45.07875],[-123.72618,45.07875],[-123.463287,45.434751],[-123.063471,45.401889]]]},"id":"41071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.052118,45.423797],[-94.046641,45.423797],[-93.520854,45.248535],[-93.767317,44.980165],[-94.013779,44.980165],[-94.254764,44.980165],[-94.260241,45.281397],[-94.052118,45.423797]]]},"id":"27171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.159376,45.412843],[-93.016976,45.412843],[-93.016976,45.297827],[-93.022453,45.122565],[-93.230576,45.122565],[-93.2251,45.034934],[-93.5099,45.243058],[-93.5099,45.412843],[-93.159376,45.412843]]]},"id":"27003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.884612,45.412843],[-94.76412,45.325212],[-94.758643,44.892534],[-95.246091,44.892534],[-95.246091,45.14995],[-95.257044,45.412843],[-95.131075,45.412843],[-94.884612,45.412843]]]},"id":"27067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.974524,45.412843],[-95.749969,45.412843],[-95.257044,45.412843],[-95.246091,45.14995],[-95.574707,45.14995],[-96.03477,45.14995],[-96.10597,45.177335],[-96.116924,45.412843],[-95.974524,45.412843]]]},"id":"27151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.168967,45.379982],[-90.042997,45.379982],[-90.042997,45.122565],[-90.196352,45.122565],[-90.316844,45.034934],[-90.815246,45.029457],[-90.924785,45.029457],[-90.924785,45.29235],[-90.678322,45.379982],[-90.168967,45.379982]]]},"id":"55119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.4273,45.374505],[-87.76459,44.963734],[-87.989145,44.678933],[-88.235607,44.678933],[-88.241084,44.678933],[-88.487546,44.854195],[-88.6409,45.117088],[-88.679239,45.379982],[-88.4273,45.374505]]]},"id":"55083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.09732,45.363551],[-84.730365,45.286874],[-84.735842,45.204719],[-84.856335,45.117088],[-85.321875,45.204719],[-85.387598,45.210196],[-85.09732,45.369028],[-85.09732,45.363551]]]},"id":"26029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-70.835367,45.27592],[-70.769644,44.733703],[-70.238381,44.459856],[-70.479366,44.032654],[-70.676536,44.142193],[-70.780598,43.813577],[-70.988722,43.791669],[-71.010629,44.284593],[-71.08183,45.303304],[-70.835367,45.27592]]]},"id":"23017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.681049,45.325212],[-96.472925,45.325212],[-96.456494,45.303304],[-96.451017,45.297827],[-96.451017,45.270443],[-96.451017,44.980165],[-96.883696,44.974688],[-97.228743,45.14995],[-97.228743,45.297827],[-96.681049,45.325212]]]},"id":"46051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.534088,45.325212],[-94.260241,45.281397],[-94.254764,44.980165],[-94.501227,44.892534],[-94.758643,44.892534],[-94.76412,45.325212],[-94.534088,45.325212]]]},"id":"27093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.08183,45.303304],[-71.010629,44.284593],[-71.415923,44.213393],[-71.766447,44.405086],[-71.503554,45.013027],[-71.08183,45.303304]]]},"id":"33007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.375727,44.673456],[-87.737205,44.678933],[-86.981388,45.297827],[-87.375727,44.673456]]]},"id":"55029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.016976,45.297827],[-92.743129,45.297827],[-92.75956,45.210196],[-92.770513,44.859672],[-92.803375,44.744656],[-93.016976,44.892534],[-93.022453,45.122565],[-93.016976,45.297827]]]},"id":"27163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.089093,45.29235],[-90.924785,45.29235],[-90.924785,45.029457],[-90.924785,44.859672],[-91.499863,44.859672],[-91.653218,44.854195],[-91.664172,45.210196],[-91.543679,45.29235],[-91.089093,45.29235]]]},"id":"55017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.964886,45.286874],[-122.84987,45.259489],[-122.395284,44.887057],[-121.732574,44.887057],[-121.759959,44.826811],[-121.79282,44.68441],[-122.658177,44.777518],[-123.145625,44.750133],[-123.068948,45.073273],[-122.964886,45.286874]]]},"id":"41047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.368863,45.259489],[-96.10597,45.177335],[-96.03477,45.14995],[-95.739015,44.936349],[-96.451017,44.804903],[-96.451017,44.980165],[-96.451017,45.270443],[-96.368863,45.259489]]]},"id":"27073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.688312,45.270443],[-116.146095,45.106135],[-116.157049,44.498194],[-116.299449,44.443425],[-116.901913,44.843241],[-116.78142,45.07875],[-116.688312,45.270443]]]},"id":"16003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-68.058559,45.254012],[-67.954497,44.41604],[-68.797945,44.470809],[-68.814376,44.68441],[-68.058559,45.254012]]]},"id":"23009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.257491,45.248535],[-99.709797,45.243058],[-99.572873,45.243058],[-99.572873,44.898011],[-99.676935,44.898011],[-100.405368,44.898011],[-100.257491,45.248535]]]},"id":"46107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.520854,45.248535],[-93.5099,45.243058],[-93.2251,45.034934],[-93.175807,44.887057],[-93.329161,44.788472],[-93.433223,44.81038],[-93.520854,44.804903],[-93.767317,44.980165],[-93.520854,45.248535]]]},"id":"27053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.572873,45.243058],[-98.723948,45.243058],[-98.718471,45.243058],[-98.718471,44.898011],[-99.30998,44.898011],[-99.572873,44.898011],[-99.572873,45.243058]]]},"id":"46049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.532255,45.243058],[-97.979084,45.243058],[-97.979084,45.155427],[-97.979084,44.629641],[-98.088623,44.629641],[-98.707517,44.635118],[-98.718471,44.898011],[-98.718471,45.243058],[-98.532255,45.243058]]]},"id":"46115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-115.828432,45.193766],[-114.694706,45.199243],[-114.809722,44.81038],[-115.04523,44.750133],[-115.297169,44.339363],[-115.680555,44.235301],[-116.211818,44.153147],[-116.157049,44.498194],[-116.146095,45.106135],[-115.828432,45.193766]]]},"id":"16085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.042057,45.210196],[-102.957623,45.210196],[-102.957623,45.040411],[-102.963099,44.602256],[-103.565563,44.602256],[-103.812025,44.602256],[-104.058488,44.569394],[-104.058488,44.996596],[-104.042057,45.210196]]]},"id":"46019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.639537,44.777518],[-85.814799,44.772041],[-86.039354,44.777518],[-86.072215,44.777518],[-85.617629,45.188289],[-85.639537,44.777518]]]},"id":"26089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.650021,45.210196],[-92.157096,45.210196],[-92.135188,44.859672],[-92.600728,44.865149],[-92.770513,44.859672],[-92.75956,45.210196],[-92.650021,45.210196]]]},"id":"55109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.157096,45.210196],[-91.664172,45.210196],[-91.653218,44.854195],[-91.647741,44.68441],[-91.894203,44.68441],[-92.135188,44.68441],[-92.135188,44.859672],[-92.157096,45.210196]]]},"id":"55033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.321875,45.204719],[-84.856335,45.117088],[-84.845381,44.859672],[-85.250674,44.859672],[-85.332828,44.81038],[-85.42046,44.859672],[-85.442367,44.859672],[-85.387598,45.210196],[-85.321875,45.204719]]]},"id":"26009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.4871,45.204719],[-83.388515,45.204719],[-83.322791,44.859672],[-83.547346,44.859672],[-83.886916,44.854195],[-83.881439,45.204719],[-83.4871,45.204719]]]},"id":"26007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.199102,45.199243],[-83.881439,45.204719],[-83.886916,44.854195],[-83.952639,44.854195],[-84.374364,44.854195],[-84.368887,45.199243],[-84.248394,45.199243],[-84.199102,45.199243]]]},"id":"26119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.735842,45.204719],[-84.368887,45.199243],[-84.374364,44.854195],[-84.774181,44.859672],[-84.845381,44.859672],[-84.856335,45.117088],[-84.735842,45.204719]]]},"id":"26137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.924314,45.155427],[-97.491636,45.14995],[-97.491636,44.804903],[-97.491636,44.54201],[-97.732621,44.54201],[-97.853114,44.54201],[-97.979084,44.629641],[-97.979084,45.155427],[-97.924314,45.155427]]]},"id":"46025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.574707,45.14995],[-95.246091,45.14995],[-95.246091,44.892534],[-95.481599,44.75561],[-95.733538,44.930872],[-95.739015,44.936349],[-96.03477,45.14995],[-95.574707,45.14995]]]},"id":"27023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.23422,45.14995],[-97.228743,45.14995],[-96.883696,44.974688],[-96.883696,44.804903],[-97.491636,44.804903],[-97.491636,45.14995],[-97.23422,45.14995]]]},"id":"46029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.230576,45.122565],[-93.022453,45.122565],[-93.016976,44.892534],[-93.088176,44.919919],[-93.175807,44.887057],[-93.2251,45.034934],[-93.230576,45.122565]]]},"id":"27123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.196352,45.122565],[-90.042997,45.122565],[-89.424103,45.117088],[-89.221456,45.029457],[-89.221456,44.678933],[-89.347426,44.678933],[-89.845827,44.68441],[-90.207305,44.68441],[-90.316844,44.68441],[-90.316844,45.034934],[-90.196352,45.122565]]]},"id":"55073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.974994,45.117088],[-88.6409,45.117088],[-88.487546,44.854195],[-88.980471,45.029457],[-88.974994,45.117088]]]},"id":"55078"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.778223,44.991119],[-117.268868,45.07875],[-116.78142,45.07875],[-116.901913,44.843241],[-117.219575,44.301024],[-117.608438,44.443425],[-118.232809,44.257209],[-118.495702,44.257209],[-118.243763,44.958257],[-117.778223,44.991119]]]},"id":"41001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.622119,45.07875],[-123.068948,45.073273],[-123.145625,44.750133],[-123.151102,44.722749],[-123.561872,44.722749],[-123.600211,44.722749],[-123.72618,45.045888],[-123.72618,45.07875],[-123.622119,45.07875]]]},"id":"41053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.870414,45.067796],[-119.78826,45.067796],[-119.673245,44.996596],[-119.656814,44.306501],[-120.385247,44.563917],[-120.374293,44.821334],[-120.494786,45.067796],[-119.870414,45.067796]]]},"id":"41069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-124.000027,45.045888],[-123.72618,45.045888],[-123.600211,44.722749],[-123.775473,44.284593],[-124.010981,44.279117],[-124.115043,44.27364],[-124.005504,45.045888],[-124.000027,45.045888]]]},"id":"41041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.042974,45.040411],[-101.999158,45.040411],[-101.999158,44.509148],[-101.999158,44.509148],[-102.119651,44.437948],[-102.388021,44.142193],[-103.450547,44.142193],[-103.565563,44.602256],[-102.963099,44.602256],[-102.957623,45.040411],[-102.042974,45.040411]]]},"id":"46093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.815246,45.029457],[-90.316844,45.034934],[-90.316844,44.68441],[-90.316844,44.426994],[-90.924785,44.596779],[-90.924785,44.859672],[-90.924785,45.029457],[-90.815246,45.029457]]]},"id":"55019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.991425,45.029457],[-88.980471,45.029457],[-88.487546,44.854195],[-88.241084,44.678933],[-88.246561,44.585825],[-88.575177,44.591302],[-88.608039,44.591302],[-89.221456,44.678933],[-89.221456,45.029457],[-88.991425,45.029457]]]},"id":"55115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.555127,45.00755],[-72.577034,44.782995],[-72.675619,44.793949],[-72.922082,44.635118],[-73.22879,44.722749],[-73.190452,45.013027],[-72.555127,45.00755]]]},"id":"50011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.723995,44.996596],[-74.537779,44.098377],[-74.855442,44.070993],[-75.167627,44.098377],[-75.446951,44.21887],[-75.857722,44.405086],[-75.238827,44.865149],[-74.723995,44.996596]]]},"id":"36089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.503554,45.013027],[-71.766447,44.405086],[-71.837647,44.350317],[-71.941709,44.766564],[-71.897894,45.00755],[-71.503554,45.013027]]]},"id":"50009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.190452,45.013027],[-73.22879,44.722749],[-73.360237,44.563917],[-73.343806,45.013027],[-73.190452,45.013027]]]},"id":"50013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.343806,45.013027],[-73.360237,44.563917],[-73.338329,44.547487],[-73.907931,44.426994],[-74.028424,44.996596],[-73.343806,45.013027]]]},"id":"36019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.897894,45.00755],[-71.941709,44.766564],[-72.374388,44.585825],[-72.577034,44.782995],[-72.555127,45.00755],[-71.897894,45.00755]]]},"id":"50019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.798321,45.002073],[-108.620779,45.002073],[-108.549579,44.169578],[-108.549579,44.081947],[-109.310873,43.813577],[-110.055737,44.010746],[-110.3734,44.580348],[-111.058017,44.667979],[-111.041587,45.002073],[-109.798321,45.002073]]]},"id":"56029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.028424,44.996596],[-73.907931,44.426994],[-74.280363,44.120285],[-74.537779,44.098377],[-74.723995,44.996596],[-74.028424,44.996596]]]},"id":"36033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.914254,45.002073],[-107.372036,44.55844],[-107.147482,44.164101],[-108.549579,44.169578],[-108.620779,45.002073],[-108.248347,45.002073],[-107.914254,45.002073]]]},"id":"56003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.914254,45.002073],[-106.265695,44.991119],[-106.024709,44.991119],[-106.008278,44.563917],[-107.372036,44.55844],[-107.914254,45.002073]]]},"id":"56033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.024709,44.991119],[-105.088152,45.002073],[-105.077198,44.175055],[-105.077198,43.495914],[-106.019232,43.495914],[-106.008278,44.563917],[-106.024709,44.991119]]]},"id":"56005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.088152,45.002073],[-105.03886,45.002073],[-104.058488,44.996596],[-104.058488,44.569394],[-104.053011,44.180532],[-104.392581,44.180532],[-105.077198,44.175055],[-105.088152,45.002073]]]},"id":"56011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.676441,44.996596],[-118.51761,44.996596],[-118.243763,44.958257],[-118.495702,44.257209],[-118.232809,44.257209],[-118.227332,44.038131],[-118.468318,44.038131],[-119.656814,43.961454],[-119.656814,44.306501],[-119.673245,44.996596],[-119.163889,44.996596],[-118.676441,44.996596]]]},"id":"41023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.42046,44.859672],[-85.332828,44.81038],[-85.332828,44.514625],[-85.694307,44.514625],[-85.814799,44.514625],[-85.814799,44.772041],[-85.639537,44.777518],[-85.442367,44.859672],[-85.42046,44.859672]]]},"id":"26055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.254764,44.980165],[-94.013779,44.980165],[-94.008302,44.717272],[-94.134272,44.717272],[-94.49575,44.717272],[-94.49575,44.892534],[-94.501227,44.892534],[-94.254764,44.980165]]]},"id":"27085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.013779,44.980165],[-93.767317,44.980165],[-93.520854,44.804903],[-93.767317,44.640595],[-94.008302,44.717272],[-94.013779,44.980165]]]},"id":"27019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.451017,44.980165],[-96.451017,44.804903],[-96.451017,44.629641],[-96.451017,44.54201],[-96.883696,44.54201],[-96.883696,44.804903],[-96.883696,44.974688],[-96.451017,44.980165]]]},"id":"46039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.733538,44.930872],[-95.481599,44.75561],[-95.361106,44.700841],[-95.596615,44.54201],[-95.936185,44.629641],[-96.095016,44.629641],[-96.44554,44.629641],[-96.451017,44.629641],[-96.451017,44.804903],[-95.739015,44.936349],[-95.733538,44.930872]]]},"id":"27173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.088176,44.919919],[-93.016976,44.892534],[-92.803375,44.744656],[-92.732175,44.711795],[-93.038884,44.470809],[-93.279869,44.54201],[-93.329161,44.788472],[-93.175807,44.887057],[-93.088176,44.919919]]]},"id":"27037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.405368,44.898011],[-99.676935,44.898011],[-99.676935,44.547487],[-99.857674,44.547487],[-100.525861,44.547487],[-100.717554,44.772041],[-100.405368,44.898011]]]},"id":"46119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.572873,44.898011],[-99.30998,44.898011],[-99.299026,44.196962],[-99.57835,44.191485],[-99.665981,44.21887],[-99.676935,44.547487],[-99.676935,44.898011],[-99.572873,44.898011]]]},"id":"46069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.30998,44.898011],[-98.718471,44.898011],[-98.707517,44.635118],[-98.70204,44.196962],[-98.926594,44.196962],[-99.299026,44.196962],[-99.30998,44.898011]]]},"id":"46059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.49575,44.892534],[-94.49575,44.717272],[-94.621719,44.454379],[-94.780551,44.454379],[-94.851751,44.498194],[-94.868182,44.498194],[-95.295383,44.662502],[-95.361106,44.700841],[-95.481599,44.75561],[-95.246091,44.892534],[-94.758643,44.892534],[-94.501227,44.892534],[-94.49575,44.892534]]]},"id":"27129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-115.04523,44.750133],[-114.809722,44.81038],[-114.563259,44.574871],[-114.196304,44.859672],[-113.319994,44.235301],[-113.374763,43.8081],[-113.796488,43.567114],[-114.656367,43.917638],[-114.968553,43.939546],[-114.990461,43.9505],[-115.297169,44.339363],[-115.04523,44.750133]]]},"id":"16037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.600728,44.865149],[-92.135188,44.859672],[-92.135188,44.68441],[-92.315927,44.54201],[-92.732175,44.711795],[-92.803375,44.744656],[-92.770513,44.859672],[-92.600728,44.865149]]]},"id":"55093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.250674,44.859672],[-84.845381,44.859672],[-84.850858,44.509148],[-85.332828,44.514625],[-85.332828,44.81038],[-85.250674,44.859672]]]},"id":"26079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.547346,44.859672],[-83.322791,44.859672],[-83.317314,44.509148],[-83.886916,44.509148],[-83.886916,44.854195],[-83.547346,44.859672]]]},"id":"26001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.774181,44.859672],[-84.374364,44.854195],[-84.368887,44.509148],[-84.735842,44.509148],[-84.850858,44.509148],[-84.845381,44.859672],[-84.774181,44.859672]]]},"id":"26039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.499863,44.859672],[-90.924785,44.859672],[-90.924785,44.596779],[-91.16577,44.596779],[-91.286263,44.596779],[-91.527248,44.596779],[-91.647741,44.596779],[-91.647741,44.68441],[-91.653218,44.854195],[-91.499863,44.859672]]]},"id":"55035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.952639,44.854195],[-83.886916,44.854195],[-83.886916,44.509148],[-83.925255,44.509148],[-84.368887,44.509148],[-84.374364,44.854195],[-83.952639,44.854195]]]},"id":"26135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.901913,44.843241],[-116.299449,44.443425],[-116.452804,44.153147],[-116.896436,44.153147],[-117.219575,44.301024],[-116.901913,44.843241]]]},"id":"16087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.998664,44.821334],[-120.374293,44.821334],[-120.385247,44.563917],[-121.108203,44.388655],[-121.842113,44.394132],[-121.79282,44.68441],[-121.759959,44.826811],[-120.998664,44.821334]]]},"id":"41031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.433223,44.81038],[-93.329161,44.788472],[-93.279869,44.54201],[-93.301777,44.54201],[-93.526331,44.54201],[-93.701593,44.54201],[-93.909717,44.54201],[-93.767317,44.640595],[-93.520854,44.804903],[-93.433223,44.81038]]]},"id":"27139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.883696,44.804903],[-96.883696,44.54201],[-97.130158,44.54201],[-97.491636,44.54201],[-97.491636,44.804903],[-96.883696,44.804903]]]},"id":"46057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.675619,44.793949],[-72.577034,44.782995],[-72.374388,44.585825],[-72.434634,44.503671],[-72.807066,44.454379],[-72.922082,44.635118],[-72.675619,44.793949]]]},"id":"50015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.658177,44.777518],[-121.79282,44.68441],[-121.842113,44.394132],[-121.798297,44.257209],[-123.200394,44.284593],[-123.151102,44.722749],[-123.145625,44.750133],[-122.658177,44.777518]]]},"id":"41043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.717554,44.772041],[-100.525861,44.547487],[-99.939828,44.196962],[-100.224629,44.196962],[-100.36703,44.169578],[-101.013309,44.169578],[-101.04617,44.169578],[-101.139278,44.744656],[-100.717554,44.772041]]]},"id":"46117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.039354,44.777518],[-85.814799,44.772041],[-85.814799,44.514625],[-86.181754,44.520102],[-86.231047,44.520102],[-86.072215,44.777518],[-86.039354,44.777518]]]},"id":"26019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.941709,44.766564],[-71.837647,44.350317],[-72.040294,44.153147],[-72.368911,44.202439],[-72.42368,44.503671],[-72.434634,44.503671],[-72.374388,44.585825],[-71.941709,44.766564]]]},"id":"50005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.37568,44.750133],[-111.047063,44.476286],[-111.047063,43.983362],[-111.397588,43.923115],[-111.978143,43.928592],[-112.153405,44.060039],[-111.616665,44.547487],[-111.479742,44.711795],[-111.37568,44.750133]]]},"id":"16043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-69.471609,44.695364],[-69.268962,44.722749],[-68.814376,44.68441],[-68.797945,44.470809],[-69.027977,44.251732],[-69.411363,44.328409],[-69.504471,44.34484],[-69.471609,44.695364]]]},"id":"23027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.380264,44.657025],[-101.139278,44.744656],[-101.04617,44.169578],[-101.062601,43.994316],[-101.407648,43.994316],[-102.004635,43.994316],[-101.999158,44.509148],[-101.999158,44.509148],[-101.380264,44.657025]]]},"id":"46055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.22879,44.722749],[-72.922082,44.635118],[-72.807066,44.454379],[-72.954943,44.164101],[-73.22879,44.262686],[-73.310944,44.262686],[-73.338329,44.547487],[-73.360237,44.563917],[-73.22879,44.722749]]]},"id":"50007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.561872,44.722749],[-123.151102,44.722749],[-123.200394,44.284593],[-123.775473,44.284593],[-123.600211,44.722749],[-123.561872,44.722749]]]},"id":"41003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-69.581148,44.706318],[-69.471609,44.695364],[-69.504471,44.34484],[-69.75641,44.136716],[-70.002872,44.125762],[-70.128842,44.48724],[-69.931672,44.61321],[-69.581148,44.706318]]]},"id":"23011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.134272,44.717272],[-94.008302,44.717272],[-93.767317,44.640595],[-93.909717,44.54201],[-93.931625,44.454379],[-94.112364,44.454379],[-94.621719,44.454379],[-94.49575,44.717272],[-94.134272,44.717272]]]},"id":"27143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.732175,44.711795],[-92.315927,44.54201],[-92.244727,44.454379],[-92.430943,44.454379],[-92.551436,44.196962],[-92.666452,44.196962],[-92.677405,44.196962],[-92.918391,44.196962],[-93.038884,44.196962],[-93.038884,44.470809],[-92.732175,44.711795]]]},"id":"27049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.295383,44.662502],[-94.868182,44.498194],[-95.109167,44.196962],[-95.459691,44.196962],[-95.591138,44.196962],[-95.596615,44.54201],[-95.361106,44.700841],[-95.295383,44.662502]]]},"id":"27127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.347426,44.678933],[-89.221456,44.678933],[-89.226933,44.246255],[-89.599365,44.246255],[-89.725335,44.246255],[-89.845827,44.68441],[-89.347426,44.678933]]]},"id":"55097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.207305,44.68441],[-89.845827,44.68441],[-89.725335,44.246255],[-89.818443,44.251732],[-89.900597,44.251732],[-90.081336,44.246255],[-90.311367,44.246255],[-90.316844,44.426994],[-90.316844,44.68441],[-90.207305,44.68441]]]},"id":"55141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.894203,44.68441],[-91.647741,44.68441],[-91.647741,44.596779],[-92.085896,44.405086],[-92.244727,44.454379],[-92.315927,44.54201],[-92.135188,44.68441],[-91.894203,44.68441]]]},"id":"55091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.221456,44.678933],[-88.608039,44.591302],[-88.739485,44.240778],[-88.887363,44.240778],[-89.226933,44.246255],[-89.221456,44.678933]]]},"id":"55135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.235607,44.678933],[-87.989145,44.678933],[-87.76459,44.646072],[-87.76459,44.328409],[-87.885083,44.328409],[-88.043914,44.240778],[-88.191791,44.240778],[-88.246561,44.585825],[-88.241084,44.678933],[-88.235607,44.678933]]]},"id":"55009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.737205,44.678933],[-87.375727,44.673456],[-87.545512,44.328409],[-87.76459,44.328409],[-87.76459,44.646072],[-87.737205,44.678933]]]},"id":"55061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.058017,44.667979],[-110.3734,44.580348],[-110.055737,44.010746],[-110.05026,43.463052],[-110.576047,43.233021],[-111.047063,43.315175],[-111.047063,43.501391],[-111.047063,43.983362],[-111.047063,44.476286],[-111.058017,44.667979]]]},"id":"56039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.088623,44.629641],[-97.979084,44.629641],[-97.853114,44.54201],[-97.853114,44.196962],[-98.209115,44.196962],[-98.329608,44.196962],[-98.691086,44.196962],[-98.70204,44.196962],[-98.707517,44.635118],[-98.088623,44.629641]]]},"id":"46005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.44554,44.629641],[-96.095016,44.629641],[-96.078585,44.196962],[-96.242894,44.196962],[-96.451017,44.196962],[-96.451017,44.54201],[-96.451017,44.629641],[-96.44554,44.629641]]]},"id":"27081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.936185,44.629641],[-95.596615,44.54201],[-95.591138,44.196962],[-96.012862,44.196962],[-96.062155,44.196962],[-96.078585,44.196962],[-96.095016,44.629641],[-95.936185,44.629641]]]},"id":"27083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.812025,44.602256],[-103.565563,44.602256],[-103.450547,44.142193],[-104.053011,44.142193],[-104.053011,44.180532],[-104.058488,44.569394],[-103.812025,44.602256]]]},"id":"46081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.286263,44.596779],[-91.16577,44.596779],[-91.149339,44.081947],[-91.176724,44.087424],[-91.423186,43.983362],[-91.56011,44.027177],[-91.527248,44.596779],[-91.286263,44.596779]]]},"id":"55121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.16577,44.596779],[-90.924785,44.596779],[-90.316844,44.426994],[-90.311367,44.246255],[-90.311367,44.153147],[-90.492106,44.158624],[-90.974077,44.070993],[-91.149339,44.081947],[-91.16577,44.596779]]]},"id":"55053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.647741,44.596779],[-91.527248,44.596779],[-91.56011,44.027177],[-91.855864,44.191485],[-92.085896,44.405086],[-91.647741,44.596779]]]},"id":"55011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.575177,44.591302],[-88.246561,44.585825],[-88.191791,44.240778],[-88.405392,44.246255],[-88.471115,44.246255],[-88.739485,44.240778],[-88.608039,44.591302],[-88.575177,44.591302]]]},"id":"55087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.616665,44.547487],[-112.153405,44.060039],[-112.50393,44.060039],[-112.695623,43.972408],[-112.996854,44.235301],[-112.816115,44.377701],[-111.616665,44.547487]]]},"id":"16033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.008278,44.563917],[-106.019232,43.495914],[-106.079479,43.495914],[-107.109143,43.501391],[-107.147482,44.164101],[-107.372036,44.55844],[-106.008278,44.563917]]]},"id":"56019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.385247,44.563917],[-119.656814,44.306501],[-119.656814,43.961454],[-119.897799,43.698561],[-120.98771,43.961454],[-121.108203,44.388655],[-120.385247,44.563917]]]},"id":"41013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.857674,44.547487],[-99.676935,44.547487],[-99.665981,44.21887],[-99.939828,44.196962],[-100.525861,44.547487],[-99.857674,44.547487]]]},"id":"46065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.338329,44.547487],[-73.310944,44.262686],[-73.376668,43.8081],[-73.436914,43.802623],[-73.853161,43.764284],[-74.055808,43.742376],[-74.280363,44.120285],[-73.907931,44.426994],[-73.338329,44.547487]]]},"id":"36031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.732621,44.54201],[-97.491636,44.54201],[-97.130158,44.54201],[-97.130158,44.196962],[-97.217789,44.196962],[-97.371143,44.196962],[-97.727145,44.196962],[-97.847637,44.196962],[-97.853114,44.196962],[-97.853114,44.54201],[-97.732621,44.54201]]]},"id":"46077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.301777,44.54201],[-93.279869,44.54201],[-93.038884,44.470809],[-93.038884,44.196962],[-93.04436,44.196962],[-93.164853,44.196962],[-93.405839,44.196962],[-93.526331,44.196962],[-93.526331,44.54201],[-93.301777,44.54201]]]},"id":"27131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.451017,44.54201],[-96.451017,44.196962],[-96.648187,44.196962],[-96.889173,44.196962],[-97.130158,44.196962],[-97.130158,44.54201],[-96.883696,44.54201],[-96.451017,44.54201]]]},"id":"46011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.701593,44.54201],[-93.526331,44.54201],[-93.526331,44.196962],[-93.679686,44.196962],[-93.767317,44.196962],[-94.013779,44.240778],[-93.931625,44.454379],[-93.909717,44.54201],[-93.701593,44.54201]]]},"id":"27079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.181754,44.520102],[-85.814799,44.514625],[-85.820276,44.164101],[-86.044831,44.169578],[-86.384401,44.180532],[-86.231047,44.520102],[-86.181754,44.520102]]]},"id":"26101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.694307,44.514625],[-85.332828,44.514625],[-85.332828,44.164101],[-85.486183,44.164101],[-85.56286,44.164101],[-85.820276,44.164101],[-85.814799,44.514625],[-85.694307,44.514625]]]},"id":"26165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.332828,44.514625],[-84.850858,44.509148],[-84.850858,44.158624],[-85.086366,44.164101],[-85.332828,44.164101],[-85.332828,44.514625]]]},"id":"26113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.563777,44.164101],[-83.569254,44.164101],[-83.886916,44.164101],[-83.886916,44.509148],[-83.317314,44.509148],[-83.563777,44.164101]]]},"id":"26069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.735842,44.509148],[-84.368887,44.509148],[-84.368887,44.158624],[-84.609872,44.158624],[-84.850858,44.158624],[-84.850858,44.509148],[-84.735842,44.509148]]]},"id":"26143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.119651,44.437948],[-101.999158,44.509148],[-102.004635,43.994316],[-102.141558,43.698561],[-102.256574,43.687607],[-102.809745,43.687607],[-103.417686,43.857392],[-104.053011,43.851915],[-104.053011,44.142193],[-103.450547,44.142193],[-102.388021,44.142193],[-102.119651,44.437948]]]},"id":"46103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.925255,44.509148],[-83.886916,44.509148],[-83.886916,44.164101],[-84.16624,44.164101],[-84.248394,44.164101],[-84.368887,44.158624],[-84.368887,44.509148],[-83.925255,44.509148]]]},"id":"26129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.42368,44.503671],[-72.368911,44.202439],[-72.434634,44.153147],[-72.741343,44.027177],[-72.954943,44.164101],[-72.807066,44.454379],[-72.434634,44.503671],[-72.42368,44.503671]]]},"id":"50023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.157049,44.498194],[-116.211818,44.153147],[-116.283018,43.8081],[-116.51305,43.8081],[-116.71022,43.8081],[-116.452804,44.153147],[-116.299449,44.443425],[-116.157049,44.498194]]]},"id":"16045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.851751,44.498194],[-94.780551,44.454379],[-94.36978,44.262686],[-94.36978,44.109331],[-94.490273,44.109331],[-94.857228,44.109331],[-95.109167,44.196962],[-94.868182,44.498194],[-94.851751,44.498194]]]},"id":"27015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-70.172658,44.481763],[-70.128842,44.48724],[-70.002872,44.125762],[-70.035734,43.977885],[-70.479366,44.032654],[-70.238381,44.459856],[-70.172658,44.481763]]]},"id":"23001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.112364,44.454379],[-93.931625,44.454379],[-94.013779,44.240778],[-94.331441,44.251732],[-94.36978,44.262686],[-94.780551,44.454379],[-94.621719,44.454379],[-94.112364,44.454379]]]},"id":"27103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.430943,44.454379],[-92.244727,44.454379],[-92.085896,44.405086],[-91.855864,44.191485],[-92.069465,44.191485],[-92.080419,44.109331],[-92.551436,44.196962],[-92.430943,44.454379]]]},"id":"27157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.608438,44.443425],[-117.219575,44.301024],[-116.896436,44.153147],[-116.97859,43.8793],[-117.027882,43.68213],[-117.027882,42.000709],[-118.194471,41.995232],[-118.227332,44.038131],[-118.232809,44.257209],[-117.608438,44.443425]]]},"id":"41045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.837647,44.350317],[-71.766447,44.405086],[-71.415923,44.213393],[-71.530939,43.764284],[-71.728109,43.561637],[-71.81574,43.545207],[-71.936232,43.528776],[-72.330572,43.599976],[-72.204602,43.769761],[-72.040294,44.153147],[-71.837647,44.350317]]]},"id":"33009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.857722,44.405086],[-75.446951,44.21887],[-75.775568,43.687607],[-76.087753,43.671176],[-76.202769,43.68213],[-76.312308,44.196962],[-75.857722,44.405086]]]},"id":"36045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.108203,44.388655],[-120.98771,43.961454],[-119.897799,43.698561],[-119.897799,43.61093],[-121.130111,43.616407],[-121.332757,43.616407],[-121.486112,43.616407],[-122.000944,43.616407],[-121.798297,44.257209],[-121.842113,44.394132],[-121.108203,44.388655]]]},"id":"41017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-69.411363,44.328409],[-69.027977,44.251732],[-69.373024,43.966931],[-69.411363,44.328409]]]},"id":"23013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-115.680555,44.235301],[-115.297169,44.339363],[-114.990461,43.9505],[-115.1712,44.087424],[-115.97631,43.589022],[-116.283018,43.8081],[-116.211818,44.153147],[-115.680555,44.235301]]]},"id":"16015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-69.411363,44.328409],[-69.373024,43.966931],[-69.696164,43.82453],[-69.75641,44.136716],[-69.504471,44.34484],[-69.411363,44.328409]]]},"id":"23015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.885083,44.328409],[-87.76459,44.328409],[-87.545512,44.328409],[-87.731728,43.890254],[-87.770067,43.890254],[-88.043914,43.890254],[-88.043914,44.240778],[-87.885083,44.328409]]]},"id":"55071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.22879,44.262686],[-72.954943,44.164101],[-72.741343,44.027177],[-72.790635,43.961454],[-72.96042,43.82453],[-73.365714,43.75333],[-73.376668,43.8081],[-73.310944,44.262686],[-73.22879,44.262686]]]},"id":"50001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-124.010981,44.279117],[-123.775473,44.284593],[-123.200394,44.284593],[-121.798297,44.257209],[-122.000944,43.616407],[-122.132391,43.441145],[-123.107286,43.53973],[-123.140148,43.780715],[-123.824765,43.945023],[-124.158859,43.862869],[-124.115043,44.27364],[-124.010981,44.279117]]]},"id":"41039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.010629,44.284593],[-70.988722,43.791669],[-70.961337,43.53973],[-71.109214,43.506868],[-71.163984,43.53973],[-71.530939,43.764284],[-71.415923,44.213393],[-71.010629,44.284593]]]},"id":"33003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.331441,44.251732],[-94.013779,44.240778],[-93.767317,44.196962],[-93.767317,43.846438],[-93.893286,43.846438],[-94.249287,43.846438],[-94.36978,43.846438],[-94.36978,44.109331],[-94.36978,44.262686],[-94.331441,44.251732]]]},"id":"27013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.818443,44.251732],[-89.725335,44.246255],[-89.599365,44.246255],[-89.599365,43.983362],[-89.599365,43.643791],[-89.785581,43.638314],[-89.900597,44.251732],[-89.818443,44.251732]]]},"id":"55001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.081336,44.246255],[-89.900597,44.251732],[-89.785581,43.638314],[-90.294936,43.643791],[-90.311367,43.638314],[-90.311367,43.731422],[-90.311367,44.153147],[-90.311367,44.246255],[-90.081336,44.246255]]]},"id":"55057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.599365,44.246255],[-89.226933,44.246255],[-88.887363,44.240778],[-88.887363,43.983362],[-88.936655,43.983362],[-89.166687,43.983362],[-89.599365,43.983362],[-89.599365,44.246255]]]},"id":"55137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.471115,44.246255],[-88.405392,44.246255],[-88.405392,43.939546],[-88.887363,43.895731],[-88.887363,43.983362],[-88.887363,44.240778],[-88.739485,44.240778],[-88.471115,44.246255]]]},"id":"55139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.405392,44.246255],[-88.191791,44.240778],[-88.043914,44.240778],[-88.043914,43.890254],[-88.164407,43.890254],[-88.405392,43.939546],[-88.405392,44.246255]]]},"id":"55015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.002331,44.235301],[-112.996854,44.235301],[-112.695623,43.972408],[-112.695623,43.621884],[-113.007808,43.282313],[-113.796488,43.567114],[-113.374763,43.8081],[-113.319994,44.235301],[-113.002331,44.235301]]]},"id":"16023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.434634,44.153147],[-72.368911,44.202439],[-72.040294,44.153147],[-72.204602,43.769761],[-72.790635,43.961454],[-72.741343,44.027177],[-72.434634,44.153147]]]},"id":"50017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.446951,44.21887],[-75.167627,44.098377],[-75.112858,43.616407],[-75.75366,43.468529],[-75.775568,43.687607],[-75.446951,44.21887]]]},"id":"36049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.224629,44.196962],[-99.939828,44.196962],[-99.665981,44.21887],[-99.57835,44.191485],[-99.353796,43.934069],[-99.299026,43.501391],[-99.299026,43.501391],[-99.534535,43.501391],[-99.665981,43.75333],[-100.230106,43.714992],[-100.339645,43.714992],[-100.36703,44.169578],[-100.224629,44.196962]]]},"id":"46085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.242894,44.196962],[-96.078585,44.196962],[-96.062155,44.196962],[-96.062155,43.846438],[-96.451017,43.851915],[-96.451017,44.196962],[-96.242894,44.196962]]]},"id":"27117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.918391,44.196962],[-92.677405,44.196962],[-92.688359,43.846438],[-92.880052,43.846438],[-93.04436,43.846438],[-93.04436,44.196962],[-93.038884,44.196962],[-92.918391,44.196962]]]},"id":"27039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.648187,44.196962],[-96.451017,44.196962],[-96.451017,43.851915],[-96.489356,43.846438],[-96.889173,43.846438],[-96.889173,44.196962],[-96.648187,44.196962]]]},"id":"46101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.691086,44.196962],[-98.329608,44.196962],[-98.329608,43.939546],[-98.806102,43.934069],[-98.926594,43.934069],[-98.926594,44.196962],[-98.70204,44.196962],[-98.691086,44.196962]]]},"id":"46073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.209115,44.196962],[-97.853114,44.196962],[-97.847637,44.196962],[-97.853114,43.851915],[-97.96813,43.851915],[-98.203638,43.851915],[-98.324131,43.851915],[-98.329608,43.939546],[-98.329608,44.196962],[-98.209115,44.196962]]]},"id":"46111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.926594,44.196962],[-98.926594,43.934069],[-99.353796,43.934069],[-99.57835,44.191485],[-99.299026,44.196962],[-98.926594,44.196962]]]},"id":"46017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.012862,44.196962],[-95.591138,44.196962],[-95.459691,44.196962],[-95.465168,43.846438],[-96.051201,43.846438],[-96.062155,43.846438],[-96.062155,44.196962],[-96.012862,44.196962]]]},"id":"27101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.164853,44.196962],[-93.04436,44.196962],[-93.04436,43.846438],[-93.049837,43.846438],[-93.164853,43.846438],[-93.405839,43.846438],[-93.405839,44.196962],[-93.164853,44.196962]]]},"id":"27147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.679686,44.196962],[-93.526331,44.196962],[-93.405839,44.196962],[-93.405839,43.846438],[-93.646824,43.846438],[-93.767317,43.846438],[-93.767317,44.196962],[-93.679686,44.196962]]]},"id":"27161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.459691,44.196962],[-95.109167,44.196962],[-94.857228,44.109331],[-94.857228,43.846438],[-95.114644,43.846438],[-95.454214,43.846438],[-95.465168,43.846438],[-95.459691,44.196962]]]},"id":"27033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.217789,44.196962],[-97.130158,44.196962],[-96.889173,44.196962],[-96.889173,43.846438],[-97.130158,43.846438],[-97.371143,43.846438],[-97.371143,44.196962],[-97.217789,44.196962]]]},"id":"46079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.666452,44.196962],[-92.551436,44.196962],[-92.080419,44.109331],[-92.080419,43.846438],[-92.381651,43.846438],[-92.447374,43.835484],[-92.688359,43.846438],[-92.677405,44.196962],[-92.666452,44.196962]]]},"id":"27109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.727145,44.196962],[-97.371143,44.196962],[-97.371143,43.846438],[-97.491636,43.846438],[-97.606652,43.846438],[-97.853114,43.851915],[-97.847637,44.196962],[-97.727145,44.196962]]]},"id":"46097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.069465,44.191485],[-91.855864,44.191485],[-91.56011,44.027177],[-91.423186,43.983362],[-91.286263,43.846438],[-91.373894,43.846438],[-91.729895,43.846438],[-92.080419,43.846438],[-92.080419,44.109331],[-92.069465,44.191485]]]},"id":"27169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.392581,44.180532],[-104.053011,44.180532],[-104.053011,44.142193],[-104.053011,43.851915],[-104.053011,43.501391],[-104.901936,43.501391],[-105.077198,43.495914],[-105.077198,44.175055],[-104.392581,44.180532]]]},"id":"56045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.384401,44.180532],[-86.044831,44.169578],[-86.039354,43.813577],[-86.433693,43.819054],[-86.384401,44.180532]]]},"id":"26105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-70.676536,44.142193],[-70.479366,44.032654],[-70.035734,43.977885],[-69.887857,43.775238],[-70.353397,43.534253],[-70.780598,43.813577],[-70.676536,44.142193]]]},"id":"23005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.013309,44.169578],[-100.36703,44.169578],[-100.339645,43.714992],[-101.062601,43.840961],[-101.062601,43.994316],[-101.04617,44.169578],[-101.013309,44.169578]]]},"id":"46075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.147482,44.164101],[-107.109143,43.501391],[-107.536345,43.501391],[-107.596591,43.501391],[-108.527671,44.081947],[-108.549579,44.081947],[-108.549579,44.169578],[-107.147482,44.164101]]]},"id":"56043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.044831,44.169578],[-85.820276,44.164101],[-85.56286,44.164101],[-85.56286,43.813577],[-85.63406,43.813577],[-86.039354,43.813577],[-86.044831,44.169578]]]},"id":"26085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-69.75641,44.136716],[-69.696164,43.82453],[-69.887857,43.775238],[-70.035734,43.977885],[-70.002872,44.125762],[-69.75641,44.136716]]]},"id":"23023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.486183,44.164101],[-85.332828,44.164101],[-85.086366,44.164101],[-85.086366,43.813577],[-85.540952,43.813577],[-85.56286,43.813577],[-85.56286,44.164101],[-85.486183,44.164101]]]},"id":"26133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.086366,44.164101],[-84.850858,44.158624],[-84.609872,44.158624],[-84.604395,43.813577],[-84.752273,43.813577],[-85.086366,43.813577],[-85.086366,44.164101]]]},"id":"26035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.569254,44.164101],[-83.563777,44.164101],[-83.908824,43.912162],[-84.105994,43.999793],[-84.16624,43.994316],[-84.16624,44.164101],[-83.886916,44.164101],[-83.569254,44.164101]]]},"id":"26011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.248394,44.164101],[-84.16624,44.164101],[-84.16624,43.994316],[-84.16624,43.82453],[-84.368887,43.830007],[-84.604395,43.813577],[-84.609872,44.158624],[-84.368887,44.158624],[-84.248394,44.164101]]]},"id":"26051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.492106,44.158624],[-90.311367,44.153147],[-90.311367,43.731422],[-90.908354,43.725946],[-90.974077,44.070993],[-90.492106,44.158624]]]},"id":"55081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.452804,44.153147],[-116.71022,43.8081],[-116.97859,43.8793],[-116.896436,44.153147],[-116.452804,44.153147]]]},"id":"16075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.280363,44.120285],[-74.055808,43.742376],[-74.15987,43.369944],[-74.137962,43.254929],[-74.713041,43.28779],[-74.855442,44.070993],[-74.537779,44.098377],[-74.280363,44.120285]]]},"id":"36041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.490273,44.109331],[-94.36978,44.109331],[-94.36978,43.846438],[-94.616242,43.846438],[-94.851751,43.846438],[-94.857228,43.846438],[-94.857228,44.109331],[-94.490273,44.109331]]]},"id":"27165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.990461,43.9505],[-114.968553,43.939546],[-114.990461,43.857392],[-115.089045,43.200159],[-115.039753,42.909881],[-115.039753,42.767481],[-116.266588,43.112528],[-115.97631,43.589022],[-115.1712,44.087424],[-114.990461,43.9505]]]},"id":"16039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.167627,44.098377],[-74.855442,44.070993],[-74.713041,43.28779],[-74.762334,43.046805],[-74.762334,42.860589],[-75.096427,42.904404],[-75.211443,42.882497],[-75.112858,43.616407],[-75.167627,44.098377]]]},"id":"36043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.176724,44.087424],[-91.149339,44.081947],[-90.974077,44.070993],[-90.908354,43.725946],[-91.258878,43.725946],[-91.286263,43.846438],[-91.423186,43.983362],[-91.176724,44.087424]]]},"id":"55063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-108.527671,44.081947],[-107.596591,43.501391],[-108.335978,43.457575],[-109.310873,43.813577],[-108.549579,44.081947],[-108.527671,44.081947]]]},"id":"56017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.605312,43.693084],[-82.69842,43.687607],[-83.120145,43.676653],[-83.465192,43.725946],[-83.465192,43.731422],[-82.917498,44.070993],[-82.605312,43.693084]]]},"id":"26063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.50393,44.060039],[-112.153405,44.060039],[-111.978143,43.928592],[-111.627619,43.627361],[-111.775497,43.627361],[-112.52036,43.627361],[-112.695623,43.621884],[-112.695623,43.972408],[-112.50393,44.060039]]]},"id":"16051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.468318,44.038131],[-118.227332,44.038131],[-118.194471,41.995232],[-119.32272,41.995232],[-119.361059,41.995232],[-119.366536,42.75105],[-119.941615,42.745573],[-119.897799,43.61093],[-119.897799,43.698561],[-119.656814,43.961454],[-118.468318,44.038131]]]},"id":"41025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.055737,44.010746],[-109.310873,43.813577],[-108.335978,43.457575],[-107.596591,43.501391],[-107.536345,43.501391],[-107.525391,42.433388],[-107.525391,42.263602],[-109.042503,42.263602],[-109.075365,42.690804],[-110.05026,43.463052],[-110.055737,44.010746]]]},"id":"56013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.105994,43.999793],[-83.908824,43.912162],[-83.7007,43.594499],[-83.7007,43.479483],[-84.138855,43.567114],[-84.16624,43.567114],[-84.16624,43.82453],[-84.16624,43.994316],[-84.105994,43.999793]]]},"id":"26017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.407648,43.994316],[-101.062601,43.994316],[-101.062601,43.840961],[-101.226909,43.391852],[-101.900573,43.391852],[-102.108697,43.391852],[-102.141558,43.698561],[-102.004635,43.994316],[-101.407648,43.994316]]]},"id":"46071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.656367,43.917638],[-113.796488,43.567114],[-113.007808,43.282313],[-113.007808,43.112528],[-113.23784,42.625081],[-113.473348,42.668896],[-113.413102,43.200159],[-113.714333,43.200159],[-114.377043,43.200159],[-114.716614,43.813577],[-114.990461,43.857392],[-114.968553,43.939546],[-114.656367,43.917638]]]},"id":"16013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.047063,43.983362],[-111.047063,43.501391],[-111.397588,43.621884],[-111.397588,43.923115],[-111.047063,43.983362]]]},"id":"16081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.936655,43.983362],[-88.887363,43.983362],[-88.887363,43.895731],[-88.887363,43.632838],[-89.007855,43.632838],[-89.243364,43.643791],[-89.166687,43.983362],[-88.936655,43.983362]]]},"id":"55047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.166687,43.983362],[-89.243364,43.643791],[-89.599365,43.643791],[-89.599365,43.983362],[-89.166687,43.983362]]]},"id":"55077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.790635,43.961454],[-72.204602,43.769761],[-72.330572,43.599976],[-72.434634,43.233021],[-72.81802,43.254929],[-72.867312,43.298744],[-72.96042,43.82453],[-72.790635,43.961454]]]},"id":"50027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.824765,43.945023],[-123.140148,43.780715],[-123.107286,43.53973],[-122.132391,43.441145],[-122.280268,42.997512],[-123.227779,42.701758],[-123.715227,42.783912],[-123.813811,42.789389],[-123.874058,43.61093],[-124.147905,43.61093],[-124.219105,43.61093],[-124.158859,43.862869],[-123.824765,43.945023]]]},"id":"41019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.405392,43.939546],[-88.164407,43.890254],[-88.15893,43.545207],[-88.399915,43.545207],[-88.887363,43.632838],[-88.887363,43.895731],[-88.405392,43.939546]]]},"id":"55039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.329608,43.939546],[-98.324131,43.851915],[-98.318654,43.501391],[-98.685609,43.501391],[-98.707517,43.501391],[-98.795148,43.501391],[-98.806102,43.934069],[-98.329608,43.939546]]]},"id":"46003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.806102,43.934069],[-98.795148,43.501391],[-99.299026,43.501391],[-99.353796,43.934069],[-98.926594,43.934069],[-98.806102,43.934069]]]},"id":"46015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.978143,43.928592],[-111.397588,43.923115],[-111.397588,43.621884],[-111.627619,43.627361],[-111.978143,43.928592]]]},"id":"16065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.770067,43.890254],[-87.731728,43.890254],[-87.791975,43.545207],[-87.923421,43.545207],[-88.038437,43.53973],[-88.15893,43.545207],[-88.164407,43.890254],[-88.043914,43.890254],[-87.770067,43.890254]]]},"id":"55117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.97859,43.8793],[-116.71022,43.8081],[-116.51305,43.8081],[-116.51305,43.28779],[-116.989544,43.671176],[-117.027882,43.68213],[-116.97859,43.8793]]]},"id":"16027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.990461,43.857392],[-114.716614,43.813577],[-114.377043,43.200159],[-114.596121,43.200159],[-114.875445,43.200159],[-115.089045,43.200159],[-114.990461,43.857392]]]},"id":"16025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.365714,43.75333],[-72.96042,43.82453],[-72.867312,43.298744],[-73.256175,43.315175],[-73.365714,43.75333]]]},"id":"50021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.062601,43.840961],[-100.339645,43.714992],[-100.230106,43.714992],[-100.213675,43.391852],[-100.235583,43.391852],[-101.226909,43.391852],[-101.062601,43.840961]]]},"id":"46095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.417686,43.857392],[-102.809745,43.687607],[-103.001438,43.479483],[-103.937995,43.479483],[-104.053011,43.479483],[-104.053011,43.501391],[-104.053011,43.851915],[-103.417686,43.857392]]]},"id":"46033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.203638,43.851915],[-97.96813,43.851915],[-97.962653,43.501391],[-98.116007,43.495914],[-98.318654,43.501391],[-98.324131,43.851915],[-98.203638,43.851915]]]},"id":"46035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.853114,43.851915],[-97.606652,43.846438],[-97.606652,43.501391],[-97.962653,43.501391],[-97.96813,43.851915],[-97.853114,43.851915]]]},"id":"46061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.489356,43.846438],[-96.451017,43.851915],[-96.451017,43.501391],[-96.598895,43.501391],[-96.779634,43.501391],[-96.922034,43.501391],[-97.130158,43.501391],[-97.130158,43.846438],[-96.889173,43.846438],[-96.489356,43.846438]]]},"id":"46099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.451017,43.851915],[-96.062155,43.846438],[-96.051201,43.846438],[-96.051201,43.501391],[-96.451017,43.501391],[-96.451017,43.851915]]]},"id":"27133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.051201,43.846438],[-95.465168,43.846438],[-95.454214,43.846438],[-95.454214,43.501391],[-95.859508,43.501391],[-96.051201,43.501391],[-96.051201,43.846438]]]},"id":"27105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.491636,43.846438],[-97.371143,43.846438],[-97.130158,43.846438],[-97.130158,43.501391],[-97.404005,43.501391],[-97.606652,43.501391],[-97.606652,43.846438],[-97.491636,43.846438]]]},"id":"46087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.880052,43.846438],[-92.688359,43.846438],[-92.447374,43.835484],[-92.447374,43.501391],[-92.551436,43.501391],[-93.022453,43.501391],[-93.049837,43.501391],[-93.049837,43.846438],[-93.04436,43.846438],[-92.880052,43.846438]]]},"id":"27099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.164853,43.846438],[-93.049837,43.846438],[-93.049837,43.501391],[-93.498947,43.501391],[-93.646824,43.501391],[-93.646824,43.846438],[-93.405839,43.846438],[-93.164853,43.846438]]]},"id":"27047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.381651,43.846438],[-92.080419,43.846438],[-91.729895,43.846438],[-91.729895,43.501391],[-91.850387,43.501391],[-92.080419,43.501391],[-92.447374,43.501391],[-92.447374,43.835484],[-92.381651,43.846438]]]},"id":"27045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.893286,43.846438],[-93.767317,43.846438],[-93.646824,43.846438],[-93.646824,43.501391],[-93.969963,43.501391],[-94.249287,43.501391],[-94.249287,43.846438],[-93.893286,43.846438]]]},"id":"27043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.114644,43.846438],[-94.857228,43.846438],[-94.851751,43.846438],[-94.851751,43.501391],[-94.917474,43.501391],[-95.092736,43.501391],[-95.388491,43.501391],[-95.454214,43.501391],[-95.454214,43.846438],[-95.114644,43.846438]]]},"id":"27063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.616242,43.846438],[-94.36978,43.846438],[-94.249287,43.846438],[-94.249287,43.501391],[-94.44098,43.501391],[-94.676489,43.501391],[-94.851751,43.501391],[-94.851751,43.846438],[-94.616242,43.846438]]]},"id":"27091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.373894,43.846438],[-91.286263,43.846438],[-91.258878,43.725946],[-91.215062,43.501391],[-91.368417,43.501391],[-91.609402,43.501391],[-91.729895,43.501391],[-91.729895,43.846438],[-91.373894,43.846438]]]},"id":"27055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.368887,43.830007],[-84.16624,43.82453],[-84.16624,43.567114],[-84.368887,43.468529],[-84.609872,43.468529],[-84.604395,43.813577],[-84.368887,43.830007]]]},"id":"26111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.433693,43.819054],[-86.039354,43.813577],[-86.039354,43.468529],[-86.411786,43.474006],[-86.461078,43.474006],[-86.433693,43.819054]]]},"id":"26127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.63406,43.813577],[-85.56286,43.813577],[-85.56286,43.468529],[-85.56286,43.293267],[-85.792891,43.293267],[-86.039354,43.468529],[-86.039354,43.813577],[-85.63406,43.813577]]]},"id":"26123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.540952,43.813577],[-85.086366,43.813577],[-85.086366,43.468529],[-85.551906,43.468529],[-85.56286,43.468529],[-85.56286,43.813577],[-85.540952,43.813577]]]},"id":"26107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.752273,43.813577],[-84.604395,43.813577],[-84.609872,43.468529],[-84.774181,43.468529],[-84.845381,43.468529],[-85.086366,43.468529],[-85.086366,43.813577],[-84.752273,43.813577]]]},"id":"26073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-70.780598,43.813577],[-70.353397,43.534253],[-70.703921,43.057759],[-70.818936,43.123482],[-70.961337,43.53973],[-70.988722,43.791669],[-70.780598,43.813577]]]},"id":"23031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.376668,43.8081],[-73.365714,43.75333],[-73.256175,43.315175],[-73.272606,42.942743],[-73.387622,42.94822],[-73.634084,42.942743],[-73.595745,43.304221],[-73.436914,43.802623],[-73.376668,43.8081]]]},"id":"36115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.51305,43.8081],[-116.283018,43.8081],[-115.97631,43.589022],[-116.266588,43.112528],[-116.51305,43.28779],[-116.51305,43.8081]]]},"id":"16001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.853161,43.764284],[-73.436914,43.802623],[-73.595745,43.304221],[-73.886023,43.397329],[-74.15987,43.369944],[-74.055808,43.742376],[-73.853161,43.764284]]]},"id":"36113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.665981,43.75333],[-99.534535,43.501391],[-99.534535,42.997512],[-100.126044,42.997512],[-100.197245,42.997512],[-100.213675,43.391852],[-100.230106,43.714992],[-99.665981,43.75333]]]},"id":"46123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.530939,43.764284],[-71.163984,43.53973],[-71.235184,43.282313],[-71.728109,43.561637],[-71.530939,43.764284]]]},"id":"33001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.311367,43.731422],[-90.311367,43.638314],[-90.311367,43.55616],[-90.667368,43.424714],[-90.9686,43.424714],[-91.204109,43.424714],[-91.215062,43.501391],[-91.258878,43.725946],[-90.908354,43.725946],[-90.311367,43.731422]]]},"id":"55123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.465192,43.725946],[-83.120145,43.676653],[-83.120145,43.326129],[-83.191345,43.326129],[-83.459715,43.222067],[-83.465192,43.222067],[-83.695223,43.222067],[-83.7007,43.479483],[-83.7007,43.594499],[-83.465192,43.731422],[-83.465192,43.725946]]]},"id":"26157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.087753,43.671176],[-75.775568,43.687607],[-75.75366,43.468529],[-75.885106,43.156344],[-75.994645,43.183728],[-76.169907,43.249452],[-76.476616,43.227544],[-76.619016,43.419237],[-76.202769,43.68213],[-76.087753,43.671176]]]},"id":"36075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.256574,43.687607],[-102.141558,43.698561],[-102.108697,43.391852],[-102.081312,42.997512],[-102.081312,42.997512],[-102.793314,42.997512],[-103.001438,43.002989],[-103.001438,43.479483],[-102.809745,43.687607],[-102.256574,43.687607]]]},"id":"46113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.69842,43.687607],[-82.605312,43.693084],[-82.50125,43.167298],[-82.566974,43.167298],[-82.994175,43.156344],[-83.120145,43.326129],[-83.120145,43.676653],[-82.69842,43.687607]]]},"id":"26151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.989544,43.671176],[-116.51305,43.28779],[-116.266588,43.112528],[-115.039753,42.767481],[-115.039753,41.995232],[-117.016928,42.000709],[-117.027882,42.000709],[-117.027882,43.68213],[-116.989544,43.671176]]]},"id":"16073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.243364,43.643791],[-89.007855,43.632838],[-89.007855,43.282313],[-89.413149,43.293267],[-89.719858,43.293267],[-89.785581,43.638314],[-89.599365,43.643791],[-89.243364,43.643791]]]},"id":"55021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.294936,43.643791],[-89.785581,43.638314],[-89.719858,43.293267],[-89.84035,43.205636],[-90.196352,43.161821],[-90.190875,43.55616],[-90.311367,43.55616],[-90.311367,43.638314],[-90.294936,43.643791]]]},"id":"55111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.887363,43.632838],[-88.399915,43.545207],[-88.416346,43.194682],[-88.536839,43.194682],[-88.991425,43.200159],[-89.007855,43.200159],[-89.007855,43.282313],[-89.007855,43.632838],[-88.887363,43.632838]]]},"id":"55027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.775497,43.627361],[-111.627619,43.627361],[-111.397588,43.621884],[-111.047063,43.501391],[-111.047063,43.315175],[-111.041587,43.01942],[-111.589281,43.01942],[-111.589281,43.282313],[-112.52036,43.424714],[-112.52036,43.627361],[-111.775497,43.627361]]]},"id":"16019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.695623,43.621884],[-112.52036,43.627361],[-112.52036,43.424714],[-111.589281,43.282313],[-111.589281,43.01942],[-112.065774,43.024897],[-112.388914,43.01942],[-112.750392,42.953697],[-113.007808,43.112528],[-113.007808,43.282313],[-112.695623,43.621884]]]},"id":"16011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.130111,43.616407],[-119.897799,43.61093],[-119.941615,42.745573],[-119.366536,42.75105],[-119.361059,41.995232],[-120.001861,41.995232],[-120.878171,41.995232],[-120.883648,42.745573],[-121.349188,42.745573],[-121.332757,43.616407],[-121.130111,43.616407]]]},"id":"41037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.486112,43.616407],[-121.332757,43.616407],[-121.349188,42.745573],[-120.883648,42.745573],[-120.878171,41.995232],[-121.316327,41.995232],[-121.447773,41.995232],[-122.291222,42.006186],[-122.280268,42.992036],[-122.280268,42.997512],[-122.132391,43.441145],[-122.000944,43.616407],[-121.486112,43.616407]]]},"id":"41035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.112858,43.616407],[-75.211443,42.882497],[-75.249781,42.871543],[-75.885106,43.156344],[-75.75366,43.468529],[-75.112858,43.616407]]]},"id":"36065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.81574,43.545207],[-71.728109,43.561637],[-71.235184,43.282313],[-71.246138,43.276836],[-71.394015,43.008466],[-71.914325,43.205636],[-72.007433,43.189205],[-71.936232,43.528776],[-71.81574,43.545207]]]},"id":"33013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-124.147905,43.61093],[-123.874058,43.61093],[-123.813811,42.789389],[-124.295782,42.953697],[-124.481998,42.953697],[-124.219105,43.61093],[-124.147905,43.61093]]]},"id":"41011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.330572,43.599976],[-71.936232,43.528776],[-72.007433,43.189205],[-72.040294,43.128959],[-72.199125,43.178252],[-72.451065,43.161821],[-72.434634,43.233021],[-72.330572,43.599976]]]},"id":"33019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.109214,43.506868],[-70.961337,43.53973],[-70.818936,43.123482],[-71.246138,43.276836],[-71.235184,43.282313],[-71.163984,43.53973],[-71.109214,43.506868]]]},"id":"33017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.138855,43.567114],[-83.7007,43.479483],[-83.695223,43.222067],[-83.930732,43.134436],[-83.941686,43.134436],[-84.368887,43.128959],[-84.368887,43.468529],[-84.16624,43.567114],[-84.138855,43.567114]]]},"id":"26145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.190875,43.55616],[-90.196352,43.161821],[-90.294936,43.205636],[-90.43186,43.200159],[-90.552353,43.205636],[-90.667368,43.172775],[-90.667368,43.424714],[-90.311367,43.55616],[-90.190875,43.55616]]]},"id":"55103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.399915,43.545207],[-88.15893,43.545207],[-88.038437,43.53973],[-88.065822,43.194682],[-88.416346,43.194682],[-88.399915,43.545207]]]},"id":"55131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.923421,43.545207],[-87.791975,43.545207],[-87.89056,43.194682],[-87.972714,43.194682],[-88.065822,43.194682],[-88.038437,43.53973],[-87.923421,43.545207]]]},"id":"55089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.053011,43.501391],[-104.053011,43.479483],[-104.053011,43.002989],[-104.053011,42.614127],[-104.655474,42.60865],[-104.890983,42.60865],[-104.901936,43.501391],[-104.053011,43.501391]]]},"id":"56027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.536345,43.501391],[-107.109143,43.501391],[-106.079479,43.495914],[-106.074002,42.433388],[-107.037943,42.433388],[-107.525391,42.433388],[-107.536345,43.501391]]]},"id":"56025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.092736,43.501391],[-94.917474,43.501391],[-94.911997,43.254929],[-95.169413,43.254929],[-95.388491,43.254929],[-95.388491,43.501391],[-95.092736,43.501391]]]},"id":"19059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.368417,43.501391],[-91.215062,43.501391],[-91.204109,43.424714],[-91.176724,43.079667],[-91.565587,43.079667],[-91.603925,43.079667],[-91.609402,43.501391],[-91.368417,43.501391]]]},"id":"19005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.850387,43.501391],[-91.729895,43.501391],[-91.609402,43.501391],[-91.603925,43.079667],[-92.080419,43.085144],[-92.080419,43.211113],[-92.080419,43.501391],[-91.850387,43.501391]]]},"id":"19191"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.080419,43.501391],[-92.080419,43.211113],[-92.255681,43.211113],[-92.556913,43.211113],[-92.551436,43.501391],[-92.447374,43.501391],[-92.080419,43.501391]]]},"id":"19089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.454214,43.501391],[-95.388491,43.501391],[-95.388491,43.254929],[-95.574707,43.254929],[-95.859508,43.254929],[-95.859508,43.501391],[-95.454214,43.501391]]]},"id":"19143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.676489,43.501391],[-94.44098,43.501391],[-94.44098,43.254929],[-94.588858,43.254929],[-94.911997,43.254929],[-94.917474,43.501391],[-94.851751,43.501391],[-94.676489,43.501391]]]},"id":"19063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.249287,43.501391],[-93.969963,43.501391],[-93.969963,43.254929],[-93.969963,42.909881],[-94.090456,42.909881],[-94.44098,42.909881],[-94.44098,43.254929],[-94.44098,43.501391],[-94.249287,43.501391]]]},"id":"19109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.779634,43.501391],[-96.598895,43.501391],[-96.555079,43.260406],[-96.456494,43.085144],[-96.626279,43.085144],[-96.807019,43.085144],[-96.922034,43.085144],[-96.922034,43.501391],[-96.779634,43.501391]]]},"id":"46083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.451017,43.501391],[-96.051201,43.501391],[-95.859508,43.501391],[-95.859508,43.254929],[-96.555079,43.260406],[-96.598895,43.501391],[-96.451017,43.501391]]]},"id":"19119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.922034,43.501391],[-96.922034,43.085144],[-97.157543,43.085144],[-97.343759,43.167298],[-97.398528,43.167298],[-97.404005,43.501391],[-97.130158,43.501391],[-96.922034,43.501391]]]},"id":"46125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.551436,43.501391],[-92.556913,43.211113],[-92.797898,43.211113],[-93.022453,43.211113],[-93.022453,43.254929],[-93.022453,43.501391],[-92.551436,43.501391]]]},"id":"19131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.299026,43.501391],[-98.795148,43.501391],[-98.707517,43.501391],[-98.11053,43.194682],[-98.077669,43.167298],[-98.154346,42.838681],[-98.3077,42.882497],[-98.499393,42.997512],[-99.299026,43.501391],[-99.299026,43.501391]]]},"id":"46023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.606652,43.501391],[-97.404005,43.501391],[-97.398528,43.167298],[-97.639513,43.167298],[-97.754529,43.167298],[-98.077669,43.167298],[-98.11053,43.194682],[-98.116007,43.495914],[-97.962653,43.501391],[-97.606652,43.501391]]]},"id":"46067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.534535,43.501391],[-99.299026,43.501391],[-98.499393,42.997512],[-99.255211,42.997512],[-99.534535,42.997512],[-99.534535,43.501391]]]},"id":"46053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.901936,43.501391],[-104.890983,42.60865],[-105.285322,42.433388],[-106.074002,42.433388],[-106.074002,42.433388],[-106.079479,43.495914],[-106.019232,43.495914],[-105.077198,43.495914],[-104.901936,43.501391]]]},"id":"56009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.646824,43.501391],[-93.498947,43.501391],[-93.498947,43.254929],[-93.570147,43.254929],[-93.969963,43.254929],[-93.969963,43.501391],[-93.646824,43.501391]]]},"id":"19189"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.022453,43.501391],[-93.022453,43.254929],[-93.055314,43.254929],[-93.498947,43.254929],[-93.498947,43.501391],[-93.049837,43.501391],[-93.022453,43.501391]]]},"id":"19195"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.685609,43.501391],[-98.318654,43.501391],[-98.116007,43.495914],[-98.11053,43.194682],[-98.707517,43.501391],[-98.685609,43.501391]]]},"id":"46043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.937995,43.479483],[-103.001438,43.479483],[-103.001438,43.002989],[-103.324578,43.002989],[-103.505317,43.002989],[-104.053011,43.002989],[-104.053011,43.479483],[-103.937995,43.479483]]]},"id":"46047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.411786,43.474006],[-86.039354,43.468529],[-85.792891,43.293267],[-85.792891,43.205636],[-86.269385,43.118005],[-86.461078,43.474006],[-86.411786,43.474006]]]},"id":"26121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.551906,43.468529],[-85.086366,43.468529],[-84.845381,43.468529],[-84.834427,43.118005],[-85.075412,43.118005],[-85.310921,43.118005],[-85.524521,43.293267],[-85.56286,43.293267],[-85.56286,43.468529],[-85.551906,43.468529]]]},"id":"26117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.774181,43.468529],[-84.609872,43.468529],[-84.368887,43.468529],[-84.368887,43.128959],[-84.368887,43.118005],[-84.719411,43.118005],[-84.834427,43.118005],[-84.845381,43.468529],[-84.774181,43.468529]]]},"id":"26057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.05026,43.463052],[-109.075365,42.690804],[-109.042503,42.263602],[-110.055737,42.269079],[-110.543185,42.280033],[-110.576047,43.233021],[-110.05026,43.463052]]]},"id":"56035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.9686,43.424714],[-90.667368,43.424714],[-90.667368,43.172775],[-91.154816,42.986559],[-91.176724,43.079667],[-91.204109,43.424714],[-90.9686,43.424714]]]},"id":"55023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.619016,43.419237],[-76.476616,43.227544],[-76.273969,42.772958],[-76.263015,42.625081],[-76.460185,42.625081],[-76.668309,42.625081],[-76.712124,43.024897],[-76.723078,43.34256],[-76.619016,43.419237]]]},"id":"36011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.886023,43.397329],[-73.595745,43.304221],[-73.634084,42.942743],[-73.677899,42.783912],[-73.809346,42.778435],[-74.094147,42.953697],[-74.099624,42.981082],[-74.137962,43.254929],[-74.15987,43.369944],[-73.886023,43.397329]]]},"id":"36091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.235583,43.391852],[-100.213675,43.391852],[-100.197245,42.997512],[-101.226909,42.997512],[-101.226909,43.391852],[-100.235583,43.391852]]]},"id":"46121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.900573,43.391852],[-101.226909,43.391852],[-101.226909,42.997512],[-102.081312,42.997512],[-102.108697,43.391852],[-101.900573,43.391852]]]},"id":"46007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.993728,43.364467],[-77.999205,43.134436],[-78.464745,43.128959],[-78.464745,43.369944],[-77.993728,43.364467]]]},"id":"36073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.464745,43.369944],[-78.464745,43.128959],[-78.464745,43.09062],[-78.552376,43.096097],[-79.023393,43.068713],[-78.464745,43.369944]]]},"id":"36063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.374834,43.276836],[-77.369357,43.035851],[-77.582958,42.942743],[-77.823943,42.986559],[-77.911574,42.986559],[-77.906097,43.128959],[-77.999205,43.134436],[-77.993728,43.364467],[-77.374834,43.276836]]]},"id":"36055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.723078,43.34256],[-76.712124,43.024897],[-76.964064,43.013943],[-77.122895,43.013943],[-77.369357,43.035851],[-77.374834,43.276836],[-76.723078,43.34256]]]},"id":"36117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.191345,43.326129],[-83.120145,43.326129],[-82.994175,43.156344],[-82.983221,42.893451],[-83.098237,42.887974],[-83.454238,42.882497],[-83.459715,43.222067],[-83.191345,43.326129]]]},"id":"26087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.047063,43.315175],[-110.576047,43.233021],[-110.543185,42.280033],[-110.055737,42.269079],[-110.05026,41.578985],[-111.047063,41.578985],[-111.047063,42.000709],[-111.047063,42.515542],[-111.041587,43.01942],[-111.047063,43.315175]]]},"id":"56023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.256175,43.315175],[-72.867312,43.298744],[-72.81802,43.254929],[-72.927559,42.740096],[-73.020667,42.740096],[-73.267129,42.745573],[-73.272606,42.942743],[-73.256175,43.315175]]]},"id":"50003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.524521,43.293267],[-85.310921,43.118005],[-85.310921,42.767481],[-85.546429,42.767481],[-85.781938,42.767481],[-85.792891,43.205636],[-85.792891,43.293267],[-85.56286,43.293267],[-85.524521,43.293267]]]},"id":"26081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.413149,43.293267],[-89.007855,43.282313],[-89.007855,43.200159],[-89.013332,42.849635],[-89.051671,42.849635],[-89.369334,42.844158],[-89.84035,42.855112],[-89.84035,43.205636],[-89.719858,43.293267],[-89.413149,43.293267]]]},"id":"55025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.713041,43.28779],[-74.137962,43.254929],[-74.099624,42.981082],[-74.581595,42.997512],[-74.762334,43.046805],[-74.713041,43.28779]]]},"id":"36035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.246138,43.276836],[-70.818936,43.123482],[-70.703921,43.057759],[-70.818936,42.871543],[-70.917521,42.887974],[-71.246138,42.740096],[-71.394015,43.008466],[-71.246138,43.276836]]]},"id":"33015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.169907,43.249452],[-75.994645,43.183728],[-75.978214,43.167298],[-75.89606,42.789389],[-75.917968,42.789389],[-76.273969,42.772958],[-76.476616,43.227544],[-76.169907,43.249452]]]},"id":"36067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.81802,43.254929],[-72.434634,43.233021],[-72.451065,43.161821],[-72.456542,42.729142],[-72.927559,42.740096],[-72.81802,43.254929]]]},"id":"50025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.555079,43.260406],[-95.859508,43.254929],[-95.859508,42.909881],[-96.17717,42.909881],[-96.538648,42.909881],[-96.456494,43.085144],[-96.555079,43.260406]]]},"id":"19167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.574707,43.254929],[-95.388491,43.254929],[-95.388491,42.909881],[-95.415876,42.909881],[-95.859508,42.909881],[-95.859508,43.254929],[-95.574707,43.254929]]]},"id":"19141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.055314,43.254929],[-93.022453,43.254929],[-93.022453,43.211113],[-93.022453,42.909881],[-93.487993,42.909881],[-93.498947,42.909881],[-93.498947,43.254929],[-93.055314,43.254929]]]},"id":"19033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.570147,43.254929],[-93.498947,43.254929],[-93.498947,42.909881],[-93.526331,42.909881],[-93.969963,42.909881],[-93.969963,43.254929],[-93.570147,43.254929]]]},"id":"19081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.169413,43.254929],[-94.911997,43.254929],[-94.911997,42.909881],[-95.251567,42.909881],[-95.388491,42.909881],[-95.388491,43.254929],[-95.169413,43.254929]]]},"id":"19041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.588858,43.254929],[-94.44098,43.254929],[-94.44098,42.909881],[-94.911997,42.909881],[-94.911997,43.254929],[-94.588858,43.254929]]]},"id":"19147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.465192,43.222067],[-83.459715,43.222067],[-83.454238,42.882497],[-83.684269,42.783912],[-83.925255,42.778435],[-83.930732,43.134436],[-83.695223,43.222067],[-83.465192,43.222067]]]},"id":"26049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.255681,43.211113],[-92.080419,43.211113],[-92.080419,43.085144],[-92.080419,42.904404],[-92.387128,42.909881],[-92.556913,42.904404],[-92.556913,43.211113],[-92.255681,43.211113]]]},"id":"19037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.797898,43.211113],[-92.556913,43.211113],[-92.556913,42.904404],[-93.022453,42.909881],[-93.022453,43.211113],[-92.797898,43.211113]]]},"id":"19067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.552353,43.205636],[-90.43186,43.200159],[-90.426383,42.811297],[-90.426383,42.504588],[-90.639984,42.510065],[-90.8974,42.674373],[-91.154816,42.986559],[-90.667368,43.172775],[-90.552353,43.205636]]]},"id":"55043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.294936,43.205636],[-90.196352,43.161821],[-89.84035,43.205636],[-89.84035,42.855112],[-89.84035,42.811297],[-90.30589,42.816773],[-90.426383,42.811297],[-90.43186,43.200159],[-90.294936,43.205636]]]},"id":"55049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.914325,43.205636],[-71.394015,43.008466],[-71.246138,42.740096],[-71.257092,42.734619],[-71.897894,42.712712],[-71.930755,42.712712],[-72.040294,43.128959],[-72.007433,43.189205],[-71.914325,43.205636]]]},"id":"33011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.792891,43.205636],[-85.781938,42.767481],[-86.044831,42.767481],[-86.209139,42.767481],[-86.269385,43.118005],[-85.792891,43.205636]]]},"id":"26139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.377043,43.200159],[-113.714333,43.200159],[-113.933411,42.767481],[-114.596121,42.849635],[-114.596121,43.200159],[-114.377043,43.200159]]]},"id":"16063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.714333,43.200159],[-113.413102,43.200159],[-113.473348,42.668896],[-113.933411,42.537449],[-113.933411,42.767481],[-113.714333,43.200159]]]},"id":"16067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.875445,43.200159],[-114.596121,43.200159],[-114.596121,42.849635],[-114.618029,42.646988],[-115.039753,42.909881],[-115.089045,43.200159],[-114.875445,43.200159]]]},"id":"16047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.991425,43.200159],[-88.536839,43.194682],[-88.542316,42.844158],[-88.547792,42.844158],[-88.777824,42.844158],[-89.013332,42.849635],[-89.007855,43.200159],[-88.991425,43.200159]]]},"id":"55055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.536839,43.194682],[-88.416346,43.194682],[-88.065822,43.194682],[-88.071299,42.844158],[-88.306807,42.844158],[-88.542316,42.844158],[-88.536839,43.194682]]]},"id":"55133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.972714,43.194682],[-87.89056,43.194682],[-87.824836,42.844158],[-87.956283,42.844158],[-88.071299,42.844158],[-88.065822,43.194682],[-87.972714,43.194682]]]},"id":"55079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.978214,43.167298],[-75.994645,43.183728],[-75.885106,43.156344],[-75.249781,42.871543],[-75.293597,42.745573],[-75.310028,42.745573],[-75.890583,42.723665],[-75.89606,42.789389],[-75.978214,43.167298]]]},"id":"36053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.199125,43.178252],[-72.040294,43.128959],[-71.930755,42.712712],[-72.28128,42.723665],[-72.456542,42.729142],[-72.451065,43.161821],[-72.199125,43.178252]]]},"id":"33005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.343759,43.167298],[-97.157543,43.085144],[-97.16302,42.800343],[-97.486159,42.849635],[-97.634037,42.849635],[-97.639513,43.167298],[-97.398528,43.167298],[-97.343759,43.167298]]]},"id":"46135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.754529,43.167298],[-97.639513,43.167298],[-97.634037,42.849635],[-98.154346,42.838681],[-98.077669,43.167298],[-97.754529,43.167298]]]},"id":"46009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.566974,43.167298],[-82.50125,43.167298],[-82.703897,42.685327],[-82.742236,42.898928],[-82.983221,42.893451],[-82.994175,43.156344],[-82.566974,43.167298]]]},"id":"26147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.906097,43.128959],[-77.911574,42.986559],[-77.95539,42.860589],[-78.09779,42.871543],[-78.464745,42.866066],[-78.464745,43.09062],[-78.464745,43.128959],[-77.999205,43.134436],[-77.906097,43.128959]]]},"id":"36037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.941686,43.134436],[-83.930732,43.134436],[-83.925255,42.778435],[-84.160763,42.778435],[-84.270302,42.778435],[-84.36341,42.778435],[-84.368887,43.118005],[-84.368887,43.128959],[-83.941686,43.134436]]]},"id":"26155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.075412,43.118005],[-84.834427,43.118005],[-84.834427,42.772958],[-85.075412,42.772958],[-85.130182,42.772958],[-85.310921,42.767481],[-85.310921,43.118005],[-85.075412,43.118005]]]},"id":"26067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.719411,43.118005],[-84.368887,43.118005],[-84.36341,42.778435],[-84.604395,42.767481],[-84.834427,42.772958],[-84.834427,43.118005],[-84.719411,43.118005]]]},"id":"26037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.421776,42.504588],[-113.002331,42.329326],[-113.23784,42.625081],[-113.007808,43.112528],[-112.750392,42.953697],[-112.421776,42.504588]]]},"id":"16077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.552376,43.096097],[-78.464745,43.09062],[-78.464745,42.866066],[-78.464745,42.537449],[-79.001485,42.531973],[-79.061732,42.537449],[-79.138409,42.570311],[-79.138409,42.570311],[-79.023393,43.068713],[-78.552376,43.096097]]]},"id":"36029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.807019,43.085144],[-96.807019,42.701758],[-97.015142,42.762004],[-97.16302,42.800343],[-97.157543,43.085144],[-96.922034,43.085144],[-96.807019,43.085144]]]},"id":"46027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.626279,43.085144],[-96.456494,43.085144],[-96.538648,42.909881],[-96.50031,42.559357],[-96.44554,42.488157],[-96.631756,42.526496],[-96.807019,42.701758],[-96.807019,43.085144],[-96.626279,43.085144]]]},"id":"46127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.080419,43.085144],[-91.603925,43.079667],[-91.609402,42.641511],[-91.905157,42.641511],[-92.080419,42.641511],[-92.080419,42.904404],[-92.080419,43.085144]]]},"id":"19065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.565587,43.079667],[-91.176724,43.079667],[-91.154816,42.986559],[-90.8974,42.674373],[-90.8974,42.657942],[-91.132908,42.646988],[-91.204109,42.646988],[-91.609402,42.641511],[-91.603925,43.079667],[-91.565587,43.079667]]]},"id":"19043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.581595,42.997512],[-74.099624,42.981082],[-74.094147,42.953697],[-74.263932,42.794866],[-74.647318,42.827727],[-74.762334,42.860589],[-74.762334,43.046805],[-74.581595,42.997512]]]},"id":"36057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.122895,43.013943],[-76.964064,43.013943],[-76.975017,42.762004],[-77.36388,42.575788],[-77.48985,42.575788],[-77.582958,42.942743],[-77.369357,43.035851],[-77.122895,43.013943]]]},"id":"36069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.712124,43.024897],[-76.668309,42.625081],[-76.695693,42.548403],[-76.70117,42.548403],[-76.892863,42.542926],[-76.975017,42.762004],[-76.964064,43.013943],[-76.712124,43.024897]]]},"id":"36099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.065774,43.024897],[-111.589281,43.01942],[-111.041587,43.01942],[-111.047063,42.515542],[-111.468788,42.592219],[-111.600234,42.416957],[-111.835743,42.416957],[-111.874081,42.416957],[-112.065774,43.024897]]]},"id":"16029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.388914,43.01942],[-112.065774,43.024897],[-111.874081,42.416957],[-112.126021,42.28551],[-112.421776,42.504588],[-112.750392,42.953697],[-112.388914,43.01942]]]},"id":"16005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.505317,43.002989],[-103.44507,42.438865],[-103.401255,42.006186],[-103.456024,42.006186],[-104.053011,42.000709],[-104.053011,42.614127],[-104.053011,43.002989],[-103.505317,43.002989]]]},"id":"31165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.324578,43.002989],[-103.001438,43.002989],[-102.793314,42.997512],[-102.771407,42.438865],[-103.44507,42.438865],[-103.505317,43.002989],[-103.324578,43.002989]]]},"id":"31045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.081312,42.997512],[-102.004635,42.093817],[-102.064881,42.011663],[-102.240143,42.006186],[-102.678299,42.006186],[-102.700206,42.006186],[-102.771407,42.438865],[-102.793314,42.997512],[-102.081312,42.997512]]]},"id":"31161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.081312,42.997512],[-102.081312,42.997512],[-101.226909,42.997512],[-100.197245,42.997512],[-100.197245,42.844158],[-100.16986,42.08834],[-100.268445,42.08834],[-100.843524,42.08834],[-101.424079,42.093817],[-102.004635,42.093817],[-102.081312,42.997512]]]},"id":"31031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.126044,42.997512],[-99.534535,42.997512],[-99.255211,42.997512],[-99.255211,42.80582],[-99.676935,42.729142],[-100.175337,42.833204],[-100.197245,42.844158],[-100.197245,42.997512],[-100.126044,42.997512]]]},"id":"31103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.499393,42.997512],[-98.3077,42.882497],[-98.3077,42.762004],[-98.997795,42.887974],[-99.255211,42.80582],[-99.255211,42.997512],[-98.499393,42.997512]]]},"id":"31015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.280268,42.992036],[-122.291222,42.006186],[-123.233256,42.006186],[-123.227779,42.701758],[-122.280268,42.997512],[-122.280268,42.992036]]]},"id":"41029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.823943,42.986559],[-77.582958,42.942743],[-77.48985,42.575788],[-77.648681,42.581265],[-77.725358,42.471726],[-78.037544,42.521019],[-77.95539,42.860589],[-77.911574,42.986559],[-77.823943,42.986559]]]},"id":"36051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.387622,42.94822],[-73.272606,42.942743],[-73.267129,42.745573],[-73.35476,42.510065],[-73.398575,42.504588],[-73.781961,42.466249],[-73.677899,42.783912],[-73.634084,42.942743],[-73.387622,42.94822]]]},"id":"36083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.094147,42.953697],[-73.809346,42.778435],[-74.181778,42.729142],[-74.263932,42.794866],[-74.094147,42.953697]]]},"id":"36093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-124.295782,42.953697],[-123.813811,42.789389],[-123.715227,42.783912],[-124.027412,42.35671],[-123.819288,41.995232],[-124.213628,42.000709],[-124.481998,42.953697],[-124.295782,42.953697]]]},"id":"41015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-115.039753,42.909881],[-114.618029,42.646988],[-113.999134,42.526496],[-114.283935,41.995232],[-115.039753,41.995232],[-115.039753,42.767481],[-115.039753,42.909881]]]},"id":"16083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.415876,42.909881],[-95.388491,42.909881],[-95.388491,42.559357],[-95.465168,42.559357],[-95.739015,42.559357],[-95.859508,42.559357],[-95.859508,42.909881],[-95.415876,42.909881]]]},"id":"19035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.17717,42.909881],[-95.859508,42.909881],[-95.859508,42.559357],[-96.50031,42.559357],[-96.538648,42.909881],[-96.17717,42.909881]]]},"id":"19149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.251567,42.909881],[-94.911997,42.909881],[-94.911997,42.559357],[-95.388491,42.559357],[-95.388491,42.909881],[-95.251567,42.909881]]]},"id":"19021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.44098,42.909881],[-94.44098,42.646988],[-94.44098,42.559357],[-94.616242,42.559357],[-94.911997,42.559357],[-94.911997,42.909881],[-94.44098,42.909881]]]},"id":"19151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.526331,42.909881],[-93.498947,42.909881],[-93.498947,42.559357],[-93.893286,42.559357],[-93.969963,42.559357],[-93.969963,42.646988],[-93.969963,42.909881],[-93.526331,42.909881]]]},"id":"19197"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.487993,42.909881],[-93.022453,42.909881],[-93.02793,42.55388],[-93.263438,42.559357],[-93.498947,42.559357],[-93.498947,42.909881],[-93.487993,42.909881]]]},"id":"19069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.096427,42.904404],[-74.762334,42.860589],[-74.647318,42.827727],[-74.713041,42.515542],[-74.844488,42.510065],[-75.414089,42.312895],[-75.293597,42.745573],[-75.249781,42.871543],[-75.211443,42.882497],[-75.096427,42.904404]]]},"id":"36077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.090456,42.909881],[-93.969963,42.909881],[-93.969963,42.646988],[-94.44098,42.646988],[-94.44098,42.909881],[-94.090456,42.909881]]]},"id":"19091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.022453,42.909881],[-92.556913,42.904404],[-92.556913,42.641511],[-92.551436,42.55388],[-92.907437,42.55388],[-93.02793,42.55388],[-93.022453,42.909881]]]},"id":"19023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.387128,42.909881],[-92.080419,42.904404],[-92.080419,42.641511],[-92.469282,42.641511],[-92.556913,42.641511],[-92.556913,42.904404],[-92.387128,42.909881]]]},"id":"19017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.742236,42.898928],[-82.703897,42.685327],[-82.868205,42.449818],[-82.879159,42.449818],[-83.081806,42.449818],[-83.098237,42.887974],[-82.983221,42.893451],[-82.742236,42.898928]]]},"id":"26099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.997795,42.887974],[-98.3077,42.762004],[-98.302223,42.438865],[-98.302223,42.08834],[-98.762286,42.08834],[-99.222349,42.08834],[-99.233303,42.08834],[-99.255211,42.80582],[-98.997795,42.887974]]]},"id":"31089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.098237,42.887974],[-83.081806,42.449818],[-83.552823,42.433388],[-83.662362,42.433388],[-83.684269,42.783912],[-83.454238,42.882497],[-83.098237,42.887974]]]},"id":"26125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-70.917521,42.887974],[-70.818936,42.871543],[-70.961337,42.444341],[-71.02706,42.444341],[-71.257092,42.734619],[-71.246138,42.740096],[-70.917521,42.887974]]]},"id":"25009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.3077,42.882497],[-98.154346,42.838681],[-97.634037,42.849635],[-97.486159,42.849635],[-97.486159,42.438865],[-97.836683,42.438865],[-98.302223,42.438865],[-98.3077,42.762004],[-98.3077,42.882497]]]},"id":"31107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.09779,42.871543],[-77.95539,42.860589],[-78.037544,42.521019],[-78.22376,42.521019],[-78.311391,42.521019],[-78.464745,42.537449],[-78.464745,42.866066],[-78.09779,42.871543]]]},"id":"36121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.486159,42.849635],[-97.16302,42.800343],[-97.015142,42.762004],[-97.015142,42.351234],[-97.365666,42.351234],[-97.365666,42.438865],[-97.486159,42.438865],[-97.486159,42.849635]]]},"id":"31027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.84035,42.855112],[-89.369334,42.844158],[-89.363857,42.499111],[-89.402195,42.499111],[-89.84035,42.504588],[-89.84035,42.811297],[-89.84035,42.855112]]]},"id":"55045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.596121,42.849635],[-113.933411,42.767481],[-113.933411,42.537449],[-113.999134,42.526496],[-114.618029,42.646988],[-114.596121,42.849635]]]},"id":"16053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.051671,42.849635],[-89.013332,42.849635],[-88.777824,42.844158],[-88.777824,42.493634],[-88.942132,42.493634],[-89.363857,42.499111],[-89.369334,42.844158],[-89.051671,42.849635]]]},"id":"55105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.175337,42.833204],[-99.676935,42.729142],[-99.660504,42.08834],[-99.687889,42.08834],[-100.16986,42.08834],[-100.197245,42.844158],[-100.175337,42.833204]]]},"id":"31017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.956283,42.844158],[-87.824836,42.844158],[-87.808406,42.668896],[-88.027483,42.668896],[-88.306807,42.60865],[-88.306807,42.844158],[-88.071299,42.844158],[-87.956283,42.844158]]]},"id":"55101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.547792,42.844158],[-88.542316,42.844158],[-88.306807,42.844158],[-88.306807,42.60865],[-88.306807,42.493634],[-88.706624,42.493634],[-88.777824,42.493634],[-88.777824,42.844158],[-88.547792,42.844158]]]},"id":"55127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.647318,42.827727],[-74.263932,42.794866],[-74.181778,42.729142],[-74.252978,42.406003],[-74.444671,42.35671],[-74.713041,42.515542],[-74.647318,42.827727]]]},"id":"36095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.809346,42.778435],[-73.677899,42.783912],[-73.781961,42.466249],[-74.252978,42.406003],[-74.181778,42.729142],[-73.809346,42.778435]]]},"id":"36001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.30589,42.816773],[-89.84035,42.811297],[-89.84035,42.504588],[-89.927981,42.504588],[-90.426383,42.504588],[-90.426383,42.811297],[-90.30589,42.816773]]]},"id":"55065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.255211,42.80582],[-99.233303,42.08834],[-99.660504,42.08834],[-99.676935,42.729142],[-99.255211,42.80582]]]},"id":"31149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.917968,42.789389],[-75.89606,42.789389],[-75.890583,42.723665],[-75.863199,42.416957],[-76.131569,42.41148],[-76.252061,42.406003],[-76.263015,42.625081],[-76.273969,42.772958],[-75.917968,42.789389]]]},"id":"36023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.715227,42.783912],[-123.227779,42.701758],[-123.233256,42.006186],[-123.518057,42.000709],[-123.819288,41.995232],[-124.027412,42.35671],[-123.715227,42.783912]]]},"id":"41033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.684269,42.783912],[-83.662362,42.433388],[-84.133379,42.422434],[-84.138855,42.422434],[-84.160763,42.778435],[-83.925255,42.778435],[-83.684269,42.783912]]]},"id":"26093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.270302,42.778435],[-84.160763,42.778435],[-84.138855,42.422434],[-84.598918,42.422434],[-84.604395,42.767481],[-84.36341,42.778435],[-84.270302,42.778435]]]},"id":"26065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.130182,42.772958],[-85.075412,42.772958],[-85.069935,42.422434],[-85.299967,42.416957],[-85.540952,42.422434],[-85.546429,42.767481],[-85.310921,42.767481],[-85.130182,42.772958]]]},"id":"26015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.834427,42.772958],[-84.604395,42.767481],[-84.598918,42.422434],[-84.719411,42.422434],[-84.883719,42.422434],[-85.069935,42.422434],[-85.075412,42.772958],[-84.834427,42.772958]]]},"id":"26045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.044831,42.767481],[-85.781938,42.767481],[-85.546429,42.767481],[-85.540952,42.422434],[-85.765507,42.422434],[-85.776461,42.422434],[-86.274862,42.416957],[-86.209139,42.767481],[-86.044831,42.767481]]]},"id":"26005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.975017,42.762004],[-76.892863,42.542926],[-77.106464,42.48268],[-77.36388,42.575788],[-76.975017,42.762004]]]},"id":"36123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.015142,42.762004],[-96.807019,42.701758],[-96.631756,42.526496],[-96.724864,42.395049],[-96.724864,42.280033],[-96.823449,42.263602],[-97.015142,42.351234],[-97.015142,42.762004]]]},"id":"31051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.267129,42.745573],[-73.020667,42.740096],[-72.976851,42.55388],[-72.998759,42.312895],[-73.053528,42.039048],[-73.486206,42.050002],[-73.49716,42.050002],[-73.35476,42.510065],[-73.267129,42.745573]]]},"id":"25003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.310028,42.745573],[-75.293597,42.745573],[-75.414089,42.312895],[-75.419566,42.192402],[-75.863199,42.416957],[-75.890583,42.723665],[-75.310028,42.745573]]]},"id":"36017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.020667,42.740096],[-72.927559,42.740096],[-72.456542,42.729142],[-72.28128,42.723665],[-72.314141,42.345757],[-72.976851,42.55388],[-73.020667,42.740096]]]},"id":"25011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.257092,42.734619],[-71.02706,42.444341],[-71.158507,42.329326],[-71.163984,42.301941],[-71.191368,42.280033],[-71.262569,42.329326],[-71.476169,42.154064],[-71.897894,42.712712],[-71.257092,42.734619]]]},"id":"25017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.28128,42.723665],[-71.930755,42.712712],[-71.897894,42.712712],[-71.476169,42.154064],[-71.498077,42.01714],[-71.799309,42.006186],[-72.100541,42.028094],[-72.133402,42.028094],[-72.221033,42.247172],[-72.314141,42.345757],[-72.28128,42.723665]]]},"id":"25027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.473348,42.668896],[-113.23784,42.625081],[-113.002331,42.329326],[-113.002331,42.000709],[-114.04295,41.995232],[-114.283935,41.995232],[-113.999134,42.526496],[-113.933411,42.537449],[-113.473348,42.668896]]]},"id":"16031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.8974,42.657942],[-90.8974,42.674373],[-90.639984,42.510065],[-90.475675,42.384095],[-90.8974,42.296464],[-91.127431,42.296464],[-91.132908,42.646988],[-90.8974,42.657942]]]},"id":"19061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.027483,42.668896],[-87.808406,42.668896],[-87.802929,42.493634],[-88.202745,42.493634],[-88.219176,42.493634],[-88.306807,42.493634],[-88.306807,42.60865],[-88.027483,42.668896]]]},"id":"55059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.204109,42.646988],[-91.132908,42.646988],[-91.127431,42.296464],[-91.36294,42.296464],[-91.598448,42.296464],[-91.609402,42.641511],[-91.204109,42.646988]]]},"id":"19055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.44098,42.646988],[-93.969963,42.646988],[-93.969963,42.559357],[-93.931625,42.208833],[-94.167133,42.208833],[-94.397165,42.208833],[-94.44098,42.559357],[-94.44098,42.646988]]]},"id":"19187"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.905157,42.641511],[-91.609402,42.641511],[-91.598448,42.296464],[-91.713464,42.296464],[-91.82848,42.296464],[-91.888726,42.296464],[-92.063988,42.296464],[-92.080419,42.641511],[-91.905157,42.641511]]]},"id":"19019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.469282,42.641511],[-92.080419,42.641511],[-92.063988,42.296464],[-92.299497,42.296464],[-92.535005,42.296464],[-92.551436,42.55388],[-92.556913,42.641511],[-92.469282,42.641511]]]},"id":"19013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.460185,42.625081],[-76.263015,42.625081],[-76.252061,42.406003],[-76.536862,42.280033],[-76.619016,42.28551],[-76.695693,42.548403],[-76.668309,42.625081],[-76.460185,42.625081]]]},"id":"36109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.053011,42.614127],[-104.053011,42.000709],[-104.053011,41.699478],[-104.053011,41.562554],[-104.655474,41.655662],[-104.655474,42.60865],[-104.053011,42.614127]]]},"id":"56015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.655474,42.60865],[-104.655474,41.655662],[-105.279845,41.655662],[-105.285322,42.433388],[-104.890983,42.60865],[-104.655474,42.60865]]]},"id":"56031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.468788,42.592219],[-111.047063,42.515542],[-111.047063,42.000709],[-111.507126,42.000709],[-111.600234,42.416957],[-111.468788,42.592219]]]},"id":"16007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.648681,42.581265],[-77.48985,42.575788],[-77.36388,42.575788],[-77.106464,42.48268],[-76.964064,42.280033],[-76.964064,42.000709],[-77.610343,42.000709],[-77.747266,42.000709],[-77.725358,42.471726],[-77.648681,42.581265]]]},"id":"36101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.138409,42.570311],[-79.061732,42.537449],[-79.061732,42.000709],[-79.609426,42.000709],[-79.76278,42.252649],[-79.76278,42.269079],[-79.138409,42.570311],[-79.138409,42.570311]]]},"id":"36013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.50031,42.559357],[-95.859508,42.559357],[-95.739015,42.559357],[-95.673292,42.208833],[-96.133355,42.21431],[-96.357909,42.21431],[-96.357909,42.274556],[-96.44554,42.488157],[-96.50031,42.559357]]]},"id":"19193"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.465168,42.559357],[-95.388491,42.559357],[-95.322768,42.208833],[-95.64043,42.208833],[-95.673292,42.208833],[-95.739015,42.559357],[-95.465168,42.559357]]]},"id":"19093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.388491,42.559357],[-94.911997,42.559357],[-94.857228,42.208833],[-95.092736,42.208833],[-95.322768,42.208833],[-95.388491,42.559357]]]},"id":"19161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.616242,42.559357],[-94.44098,42.559357],[-94.397165,42.208833],[-94.627196,42.208833],[-94.857228,42.208833],[-94.911997,42.559357],[-94.616242,42.559357]]]},"id":"19025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.893286,42.559357],[-93.498947,42.559357],[-93.460608,42.208833],[-93.696116,42.208833],[-93.931625,42.208833],[-93.969963,42.559357],[-93.893286,42.559357]]]},"id":"19079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.263438,42.559357],[-93.02793,42.55388],[-93.000545,42.208833],[-93.230576,42.208833],[-93.362023,42.208833],[-93.460608,42.208833],[-93.498947,42.559357],[-93.263438,42.559357]]]},"id":"19083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.907437,42.55388],[-92.551436,42.55388],[-92.535005,42.296464],[-92.765037,42.208833],[-92.77599,42.208833],[-93.000545,42.208833],[-93.02793,42.55388],[-92.907437,42.55388]]]},"id":"19075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.976851,42.55388],[-72.314141,42.345757],[-72.221033,42.247172],[-72.998759,42.312895],[-72.998759,42.312895],[-72.976851,42.55388]]]},"id":"25015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.70117,42.548403],[-76.695693,42.548403],[-76.619016,42.28551],[-76.766894,42.296464],[-76.964064,42.280033],[-77.106464,42.48268],[-76.892863,42.542926],[-76.70117,42.548403]]]},"id":"36097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.001485,42.531973],[-78.464745,42.537449],[-78.311391,42.521019],[-78.305914,42.000709],[-78.919331,42.000709],[-79.061732,42.000709],[-79.061732,42.537449],[-79.001485,42.531973]]]},"id":"36009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.724864,42.395049],[-96.631756,42.526496],[-96.44554,42.488157],[-96.357909,42.274556],[-96.724864,42.280033],[-96.724864,42.395049]]]},"id":"31043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.22376,42.521019],[-78.037544,42.521019],[-77.725358,42.471726],[-77.747266,42.000709],[-78.207329,42.000709],[-78.305914,42.000709],[-78.311391,42.521019],[-78.22376,42.521019]]]},"id":"36003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.844488,42.510065],[-74.713041,42.515542],[-74.444671,42.35671],[-74.450148,42.170494],[-74.778764,42.01714],[-74.789718,42.011663],[-75.145719,41.852832],[-75.35932,42.000709],[-75.419566,42.192402],[-75.414089,42.312895],[-74.844488,42.510065]]]},"id":"36025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.398575,42.504588],[-73.35476,42.510065],[-73.49716,42.050002],[-73.929839,42.077386],[-73.913408,42.126679],[-73.781961,42.466249],[-73.398575,42.504588]]]},"id":"36021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.639984,42.510065],[-90.426383,42.504588],[-89.927981,42.504588],[-89.917028,42.197879],[-90.316844,42.192402],[-90.475675,42.384095],[-90.639984,42.510065]]]},"id":"17085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.927981,42.504588],[-89.84035,42.504588],[-89.402195,42.499111],[-89.396718,42.203356],[-89.686996,42.197879],[-89.917028,42.197879],[-89.927981,42.504588]]]},"id":"17177"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.421776,42.504588],[-112.126021,42.28551],[-112.10959,41.995232],[-112.164359,41.995232],[-113.002331,42.000709],[-113.002331,42.329326],[-112.421776,42.504588]]]},"id":"16071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.363857,42.499111],[-88.942132,42.493634],[-88.942132,42.154064],[-89.281702,42.203356],[-89.396718,42.203356],[-89.402195,42.499111],[-89.363857,42.499111]]]},"id":"17201"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.202745,42.493634],[-87.802929,42.493634],[-87.759113,42.154064],[-88.120591,42.154064],[-88.197268,42.154064],[-88.202745,42.493634]]]},"id":"17097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.219176,42.493634],[-88.202745,42.493634],[-88.197268,42.154064],[-88.235607,42.154064],[-88.454684,42.154064],[-88.586131,42.154064],[-88.706624,42.154064],[-88.706624,42.493634],[-88.306807,42.493634],[-88.219176,42.493634]]]},"id":"17111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.942132,42.493634],[-88.777824,42.493634],[-88.706624,42.493634],[-88.706624,42.154064],[-88.942132,42.154064],[-88.942132,42.493634]]]},"id":"17007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.781961,42.466249],[-73.913408,42.126679],[-74.01747,42.159541],[-74.450148,42.170494],[-74.444671,42.35671],[-74.252978,42.406003],[-73.781961,42.466249]]]},"id":"36039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.879159,42.449818],[-82.868205,42.449818],[-83.185868,42.033571],[-83.421376,42.093817],[-83.541869,42.082863],[-83.552823,42.433388],[-83.081806,42.449818],[-82.879159,42.449818]]]},"id":"26163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.02706,42.444341],[-70.961337,42.444341],[-71.005152,42.307418],[-71.191368,42.280033],[-71.163984,42.301941],[-71.109214,42.351234],[-71.158507,42.329326],[-71.02706,42.444341]]]},"id":"25025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.771407,42.438865],[-102.700206,42.006186],[-103.362916,42.000709],[-103.401255,42.006186],[-103.44507,42.438865],[-102.771407,42.438865]]]},"id":"31013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.365666,42.438865],[-97.365666,42.351234],[-97.365666,42.08834],[-97.425913,42.08834],[-97.836683,42.08834],[-97.836683,42.438865],[-97.486159,42.438865],[-97.365666,42.438865]]]},"id":"31139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.836683,42.438865],[-97.836683,42.08834],[-97.831206,41.918555],[-97.91336,41.918555],[-98.296746,41.913078],[-98.302223,42.08834],[-98.302223,42.438865],[-97.836683,42.438865]]]},"id":"31003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.552823,42.433388],[-83.541869,42.082863],[-83.7719,42.082863],[-84.133379,42.07191],[-84.133379,42.422434],[-83.662362,42.433388],[-83.552823,42.433388]]]},"id":"26161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.037943,42.433388],[-106.074002,42.433388],[-106.074002,42.433388],[-106.068525,41.392769],[-106.320464,40.998429],[-106.857204,41.003906],[-107.317267,41.003906],[-107.919731,41.003906],[-107.930684,41.661139],[-107.50896,41.655662],[-107.525391,42.263602],[-107.525391,42.433388],[-107.037943,42.433388]]]},"id":"56007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.074002,42.433388],[-105.285322,42.433388],[-105.279845,41.655662],[-105.279845,40.998429],[-106.189017,40.998429],[-106.320464,40.998429],[-106.068525,41.392769],[-106.074002,42.433388]]]},"id":"56001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.835743,42.416957],[-111.600234,42.416957],[-111.507126,42.000709],[-112.10959,41.995232],[-112.126021,42.28551],[-111.874081,42.416957],[-111.835743,42.416957]]]},"id":"16041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.598918,42.422434],[-84.138855,42.422434],[-84.133379,42.422434],[-84.133379,42.07191],[-84.36341,42.07191],[-84.708457,42.07191],[-84.719411,42.422434],[-84.598918,42.422434]]]},"id":"26075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.883719,42.422434],[-84.719411,42.422434],[-84.708457,42.07191],[-84.82895,42.07191],[-85.053504,42.07191],[-85.29449,42.07191],[-85.299967,42.416957],[-85.069935,42.422434],[-84.883719,42.422434]]]},"id":"26025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.540952,42.422434],[-85.299967,42.416957],[-85.29449,42.07191],[-85.299967,42.07191],[-85.765507,42.07191],[-85.765507,42.422434],[-85.540952,42.422434]]]},"id":"26077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.776461,42.422434],[-85.765507,42.422434],[-85.765507,42.07191],[-86.22557,42.07191],[-86.302247,42.241695],[-86.362493,42.241695],[-86.274862,42.416957],[-85.776461,42.422434]]]},"id":"26159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.863199,42.416957],[-75.419566,42.192402],[-75.35932,42.000709],[-75.479813,42.000709],[-75.48529,42.000709],[-75.890583,42.000709],[-76.104184,42.000709],[-76.131569,42.41148],[-75.863199,42.416957]]]},"id":"36007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.131569,42.41148],[-76.104184,42.000709],[-76.147999,42.000709],[-76.55877,42.000709],[-76.536862,42.280033],[-76.252061,42.406003],[-76.131569,42.41148]]]},"id":"36107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.475675,42.384095],[-90.316844,42.192402],[-90.152536,42.033571],[-90.366137,42.033571],[-90.8974,42.033571],[-90.8974,42.296464],[-90.475675,42.384095]]]},"id":"19097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.365666,42.351234],[-97.015142,42.351234],[-96.823449,42.263602],[-96.823449,42.08834],[-96.89465,42.08834],[-97.020619,42.08834],[-97.36019,42.08834],[-97.365666,42.08834],[-97.365666,42.351234]]]},"id":"31179"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.109214,42.351234],[-71.163984,42.301941],[-71.158507,42.329326],[-71.109214,42.351234]]]},"id":"25021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.998759,42.312895],[-72.221033,42.247172],[-72.133402,42.028094],[-72.511311,42.033571],[-73.009713,42.039048],[-73.053528,42.039048],[-72.998759,42.312895],[-72.998759,42.312895]]]},"id":"25013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.262569,42.329326],[-71.191368,42.280033],[-71.005152,42.307418],[-70.906568,42.269079],[-70.901091,42.269079],[-71.08183,42.093817],[-71.08183,42.093817],[-71.383061,41.984279],[-71.498077,42.01714],[-71.476169,42.154064],[-71.262569,42.329326]]]},"id":"25021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-70.901091,42.269079],[-70.906568,42.269079],[-70.824413,42.263602],[-70.780598,42.252649],[-70.539613,41.809016],[-70.643674,41.715908],[-70.840844,41.628277],[-71.08183,42.093817],[-70.901091,42.269079]]]},"id":"25023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.888726,42.296464],[-91.82848,42.296464],[-91.833957,41.863786],[-92.063988,41.863786],[-92.299497,41.863786],[-92.299497,42.296464],[-92.063988,42.296464],[-91.888726,42.296464]]]},"id":"19011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.713464,42.296464],[-91.598448,42.296464],[-91.36294,42.296464],[-91.368417,41.94594],[-91.368417,41.858309],[-91.664172,41.863786],[-91.833957,41.863786],[-91.82848,42.296464],[-91.713464,42.296464]]]},"id":"19113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.299497,42.296464],[-92.299497,41.863786],[-92.765037,41.863786],[-92.765037,42.208833],[-92.535005,42.296464],[-92.299497,42.296464]]]},"id":"19171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.36294,42.296464],[-91.127431,42.296464],[-90.8974,42.296464],[-90.8974,42.033571],[-90.8974,41.94594],[-91.012416,41.94594],[-91.368417,41.94594],[-91.36294,42.296464]]]},"id":"19105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.766894,42.296464],[-76.619016,42.28551],[-76.536862,42.280033],[-76.55877,42.000709],[-76.920248,42.000709],[-76.925725,42.000709],[-76.964064,42.000709],[-76.964064,42.280033],[-76.766894,42.296464]]]},"id":"36015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.724864,42.280033],[-96.357909,42.274556],[-96.357909,42.21431],[-96.270278,42.044525],[-96.555079,42.01714],[-96.823449,42.08834],[-96.823449,42.263602],[-96.724864,42.280033]]]},"id":"31173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.055737,42.269079],[-109.042503,42.263602],[-107.525391,42.263602],[-107.50896,41.655662],[-107.930684,41.661139],[-107.919731,41.003906],[-109.04798,40.998429],[-109.677828,40.998429],[-110.000968,40.998429],[-110.05026,40.998429],[-110.05026,41.578985],[-110.055737,42.269079]]]},"id":"56037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.76278,42.252649],[-79.609426,42.000709],[-79.609426,41.847355],[-79.708011,41.852832],[-80.518598,41.847355],[-80.518598,41.978802],[-80.518598,41.978802],[-79.76278,42.269079],[-79.76278,42.252649]]]},"id":"42049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.302247,42.241695],[-86.22557,42.07191],[-86.22557,41.759724],[-86.521325,41.759724],[-86.822556,41.759724],[-86.362493,42.241695],[-86.302247,42.241695]]]},"id":"26021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.133355,42.21431],[-95.673292,42.208833],[-95.673292,41.863786],[-96.122401,41.863786],[-96.138832,41.863786],[-96.270278,42.044525],[-96.357909,42.21431],[-96.133355,42.21431]]]},"id":"19133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.64043,42.208833],[-95.322768,42.208833],[-95.092736,42.208833],[-95.092736,41.863786],[-95.322768,41.863786],[-95.558276,41.863786],[-95.673292,41.863786],[-95.673292,42.208833],[-95.64043,42.208833]]]},"id":"19047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.092736,42.208833],[-94.857228,42.208833],[-94.627196,42.208833],[-94.627196,41.863786],[-94.742212,41.863786],[-95.092736,41.863786],[-95.092736,42.208833]]]},"id":"19027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.77599,42.208833],[-92.765037,42.208833],[-92.765037,41.863786],[-93.230576,41.863786],[-93.230576,42.208833],[-93.000545,42.208833],[-92.77599,42.208833]]]},"id":"19127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.931625,42.208833],[-93.696116,42.208833],[-93.696116,41.863786],[-93.772794,41.863786],[-93.816609,41.863786],[-94.161656,41.863786],[-94.167133,42.208833],[-93.931625,42.208833]]]},"id":"19015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.167133,42.208833],[-94.161656,41.863786],[-94.282149,41.863786],[-94.484796,41.863786],[-94.627196,41.863786],[-94.627196,42.208833],[-94.397165,42.208833],[-94.167133,42.208833]]]},"id":"19073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.362023,42.208833],[-93.230576,42.208833],[-93.230576,41.863786],[-93.268915,41.863786],[-93.345592,41.863786],[-93.696116,41.863786],[-93.696116,42.208833],[-93.460608,42.208833],[-93.362023,42.208833]]]},"id":"19169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.281702,42.203356],[-88.942132,42.154064],[-88.942132,41.891171],[-89.544596,41.902124],[-89.632227,41.902124],[-89.686996,41.929509],[-89.686996,42.197879],[-89.396718,42.203356],[-89.281702,42.203356]]]},"id":"17141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.686996,42.197879],[-89.686996,41.929509],[-89.889643,41.929509],[-90.152536,41.929509],[-90.152536,42.033571],[-90.316844,42.192402],[-89.917028,42.197879],[-89.686996,42.197879]]]},"id":"17015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.01747,42.159541],[-73.913408,42.126679],[-73.929839,42.077386],[-73.951746,41.589939],[-74.263932,41.633754],[-74.367994,41.589939],[-74.778764,42.01714],[-74.450148,42.170494],[-74.01747,42.159541]]]},"id":"36111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.454684,42.154064],[-88.235607,42.154064],[-88.262992,41.984279],[-88.262992,41.726862],[-88.602562,41.721385],[-88.586131,42.154064],[-88.454684,42.154064]]]},"id":"17089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.120591,42.154064],[-87.759113,42.154064],[-87.523605,41.710431],[-87.523605,41.469446],[-88.027483,41.683047],[-87.928898,41.995232],[-88.262992,41.984279],[-88.235607,42.154064],[-88.197268,42.154064],[-88.120591,42.154064]]]},"id":"17031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.586131,42.154064],[-88.602562,41.721385],[-88.602562,41.633754],[-88.618993,41.633754],[-88.936655,41.628277],[-88.942132,41.891171],[-88.942132,42.154064],[-88.706624,42.154064],[-88.586131,42.154064]]]},"id":"17037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.004635,42.093817],[-101.424079,42.093817],[-101.424079,41.743293],[-101.988204,41.743293],[-102.064881,42.011663],[-102.004635,42.093817]]]},"id":"31075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.08183,42.093817],[-71.08183,42.093817],[-70.840844,41.628277],[-71.120168,41.496831],[-71.196845,41.67757],[-71.22423,41.710431],[-71.317338,41.776155],[-71.383061,41.984279],[-71.08183,42.093817]]]},"id":"25005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.421376,42.093817],[-83.185868,42.033571],[-83.454238,41.732339],[-83.760947,41.721385],[-83.7719,42.082863],[-83.541869,42.082863],[-83.421376,42.093817]]]},"id":"26115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.424079,42.093817],[-100.843524,42.08834],[-100.843524,41.737816],[-101.407648,41.743293],[-101.424079,41.743293],[-101.424079,42.093817]]]},"id":"31091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.425913,42.08834],[-97.365666,42.08834],[-97.365666,41.743293],[-97.425913,41.743293],[-97.831206,41.743293],[-97.831206,41.918555],[-97.836683,42.08834],[-97.425913,42.08834]]]},"id":"31119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.36019,42.08834],[-97.020619,42.08834],[-97.020619,41.743293],[-97.250651,41.743293],[-97.250651,41.743293],[-97.365666,41.743293],[-97.365666,42.08834],[-97.36019,42.08834]]]},"id":"31167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.89465,42.08834],[-96.823449,42.08834],[-96.555079,42.01714],[-96.555079,41.743293],[-96.905603,41.743293],[-97.020619,41.743293],[-97.020619,42.08834],[-96.89465,42.08834]]]},"id":"31039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.302223,42.08834],[-98.296746,41.913078],[-98.296746,41.743293],[-98.521301,41.743293],[-98.751332,41.737816],[-98.756809,41.737816],[-98.762286,42.08834],[-98.302223,42.08834]]]},"id":"31183"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.762286,42.08834],[-98.756809,41.737816],[-99.074472,41.737816],[-99.211395,41.743293],[-99.222349,41.743293],[-99.222349,42.08834],[-98.762286,42.08834]]]},"id":"31071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.843524,42.08834],[-100.268445,42.08834],[-100.262968,41.737816],[-100.712077,41.737816],[-100.843524,41.737816],[-100.843524,42.08834]]]},"id":"31171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.222349,42.08834],[-99.222349,41.743293],[-99.687889,41.737816],[-99.687889,42.08834],[-99.660504,42.08834],[-99.233303,42.08834],[-99.222349,42.08834]]]},"id":"31115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.268445,42.08834],[-100.16986,42.08834],[-99.687889,42.08834],[-99.687889,41.737816],[-100.252014,41.737816],[-100.262968,41.737816],[-100.268445,42.08834]]]},"id":"31009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.7719,42.082863],[-83.760947,41.721385],[-83.881439,41.721385],[-83.89787,41.721385],[-84.357933,41.704955],[-84.36341,42.07191],[-84.133379,42.07191],[-83.7719,42.082863]]]},"id":"26091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-70.671059,41.513262],[-70.692967,41.524216],[-70.643674,41.715908],[-70.539613,41.809016],[-69.926195,41.694001],[-70.671059,41.513262]]]},"id":"25001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.929839,42.077386],[-73.49716,42.050002],[-73.486206,42.050002],[-73.519068,41.666616],[-73.530022,41.529692],[-73.979131,41.436584],[-73.951746,41.589939],[-73.929839,42.077386]]]},"id":"36027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.36341,42.07191],[-84.357933,41.704955],[-84.401749,41.704955],[-84.807042,41.694001],[-84.823473,41.759724],[-84.82895,42.07191],[-84.708457,42.07191],[-84.36341,42.07191]]]},"id":"26059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.053504,42.07191],[-84.82895,42.07191],[-84.823473,41.759724],[-85.195905,41.759724],[-85.29449,41.759724],[-85.29449,42.07191],[-85.053504,42.07191]]]},"id":"26023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.299967,42.07191],[-85.29449,42.07191],[-85.29449,41.759724],[-85.371167,41.759724],[-85.661445,41.759724],[-85.792891,41.759724],[-85.765507,42.07191],[-85.299967,42.07191]]]},"id":"26149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.22557,42.07191],[-85.765507,42.07191],[-85.792891,41.759724],[-85.990061,41.759724],[-86.061262,41.759724],[-86.22557,41.759724],[-86.22557,42.07191]]]},"id":"26027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.053528,42.039048],[-73.009713,42.039048],[-72.982328,41.639231],[-73.310944,41.469446],[-73.519068,41.666616],[-73.486206,42.050002],[-73.053528,42.039048]]]},"id":"09005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.270278,42.044525],[-96.138832,41.863786],[-96.122401,41.683047],[-96.407202,41.683047],[-96.44554,41.683047],[-96.555079,41.743293],[-96.555079,42.01714],[-96.270278,42.044525]]]},"id":"31021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.009713,42.039048],[-72.511311,42.033571],[-72.412726,41.600893],[-72.467496,41.584462],[-72.544173,41.644708],[-72.752296,41.578985],[-72.949466,41.644708],[-72.982328,41.639231],[-73.009713,42.039048]]]},"id":"09003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.133402,42.028094],[-72.100541,42.028094],[-72.237464,41.715908],[-72.412726,41.600893],[-72.511311,42.033571],[-72.133402,42.028094]]]},"id":"09013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.366137,42.033571],[-90.152536,42.033571],[-90.152536,41.929509],[-90.240167,41.781632],[-90.316844,41.726862],[-90.798815,41.770678],[-90.8974,41.770678],[-90.8974,41.94594],[-90.8974,42.033571],[-90.366137,42.033571]]]},"id":"19045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.799309,42.006186],[-71.788355,41.726862],[-71.788355,41.639231],[-72.237464,41.715908],[-72.100541,42.028094],[-71.799309,42.006186]]]},"id":"09015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.498077,42.01714],[-71.383061,41.984279],[-71.317338,41.776155],[-71.366631,41.737816],[-71.4214,41.765201],[-71.788355,41.726862],[-71.799309,42.006186],[-71.498077,42.01714]]]},"id":"44007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.789718,42.011663],[-74.778764,42.01714],[-74.367994,41.589939],[-74.756857,41.425631],[-75.069042,41.600893],[-75.145719,41.852832],[-74.789718,42.011663]]]},"id":"36105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.233256,42.006186],[-122.291222,42.006186],[-121.447773,41.995232],[-121.447773,41.184645],[-122.499346,41.184645],[-122.586977,41.35443],[-122.915593,40.992952],[-123.408518,41.179168],[-123.660457,41.381815],[-123.518057,42.000709],[-123.233256,42.006186]]]},"id":"06093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.240143,42.006186],[-102.064881,42.011663],[-101.988204,41.743293],[-101.982727,41.392769],[-102.053927,41.222984],[-102.119651,41.222984],[-102.612575,41.222984],[-102.634483,41.436584],[-102.678299,42.006186],[-102.240143,42.006186]]]},"id":"31069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.700206,42.006186],[-102.678299,42.006186],[-102.634483,41.436584],[-102.754976,41.436584],[-103.368393,41.436584],[-103.368393,41.699478],[-103.362916,42.000709],[-102.700206,42.006186]]]},"id":"31123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.456024,42.006186],[-103.401255,42.006186],[-103.362916,42.000709],[-103.368393,41.699478],[-104.053011,41.699478],[-104.053011,42.000709],[-103.456024,42.006186]]]},"id":"31157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-115.039753,41.995232],[-114.283935,41.995232],[-114.04295,41.995232],[-114.04295,40.998429],[-114.048427,40.116642],[-115.833909,40.127596],[-116.157049,40.998429],[-116.58425,40.998429],[-117.016928,40.998429],[-117.016928,42.000709],[-115.039753,41.995232]]]},"id":"32007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.920248,42.000709],[-76.55877,42.000709],[-76.147999,42.000709],[-76.115138,41.650185],[-76.2192,41.540646],[-76.816186,41.589939],[-76.876433,41.595416],[-76.925725,42.000709],[-76.920248,42.000709]]]},"id":"42015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.925725,42.000709],[-76.876433,41.595416],[-77.599389,41.540646],[-77.610343,42.000709],[-76.964064,42.000709],[-76.925725,42.000709]]]},"id":"42117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.047063,42.000709],[-111.047063,41.578985],[-111.047063,41.250368],[-111.266141,41.146307],[-111.419495,41.359907],[-111.512603,41.425631],[-111.507126,42.000709],[-111.047063,42.000709]]]},"id":"49033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.164359,41.995232],[-111.885035,41.425631],[-112.492976,41.075106],[-113.073531,40.998429],[-114.04295,40.998429],[-114.04295,41.995232],[-113.002331,42.000709],[-112.164359,41.995232]]]},"id":"49003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-124.213628,42.000709],[-123.819288,41.995232],[-123.518057,42.000709],[-123.660457,41.381815],[-124.054797,41.463969],[-124.065751,41.463969],[-124.213628,42.000709]]]},"id":"06015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.207329,42.000709],[-77.747266,42.000709],[-77.610343,42.000709],[-77.599389,41.540646],[-77.599389,41.4804],[-77.747266,41.474923],[-77.988251,41.474923],[-78.201852,41.617324],[-78.207329,42.000709]]]},"id":"42105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.027882,42.000709],[-117.016928,42.000709],[-117.016928,40.998429],[-117.301729,40.527412],[-118.013732,40.856029],[-119.311766,40.960091],[-119.32272,41.995232],[-118.194471,41.995232],[-117.027882,42.000709]]]},"id":"32013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.919331,42.000709],[-78.305914,42.000709],[-78.207329,42.000709],[-78.201852,41.617324],[-78.42093,41.600893],[-78.95767,41.6228],[-78.919331,42.000709]]]},"id":"42083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.507126,42.000709],[-111.512603,41.425631],[-111.655004,41.4092],[-111.885035,41.425631],[-112.164359,41.995232],[-112.10959,41.995232],[-111.507126,42.000709]]]},"id":"49005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.061732,42.000709],[-78.919331,42.000709],[-78.95767,41.6228],[-78.996008,41.6228],[-79.510841,41.6228],[-79.614903,41.6228],[-79.609426,41.847355],[-79.609426,42.000709],[-79.061732,42.000709]]]},"id":"42123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.479813,42.000709],[-75.35932,42.000709],[-75.145719,41.852832],[-75.069042,41.600893],[-75.35932,41.239415],[-75.507197,41.233938],[-75.463382,41.639231],[-75.48529,42.000709],[-75.479813,42.000709]]]},"id":"42127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.890583,42.000709],[-75.48529,42.000709],[-75.463382,41.639231],[-75.720798,41.644708],[-76.115138,41.650185],[-76.147999,42.000709],[-76.104184,42.000709],[-75.890583,42.000709]]]},"id":"42115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.361059,41.995232],[-119.32272,41.995232],[-119.311766,40.960091],[-119.224135,40.001626],[-119.191274,39.629194],[-119.196751,39.623717],[-119.284382,39.623717],[-119.689675,39.519655],[-119.711583,39.251285],[-120.001861,39.163654],[-120.007338,39.317009],[-120.001861,39.442978],[-120.001861,39.722302],[-120.001861,41.184645],[-120.001861,41.995232],[-119.361059,41.995232]]]},"id":"32031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.316327,41.995232],[-120.878171,41.995232],[-120.001861,41.995232],[-120.001861,41.184645],[-120.943895,41.184645],[-121.332757,41.184645],[-121.447773,41.184645],[-121.447773,41.995232],[-121.316327,41.995232]]]},"id":"06049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.928898,41.995232],[-88.027483,41.683047],[-88.03296,41.726862],[-88.262992,41.726862],[-88.262992,41.726862],[-88.262992,41.984279],[-87.928898,41.995232]]]},"id":"17043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.518598,41.978802],[-80.518598,41.847355],[-80.518598,41.502308],[-81.000569,41.502308],[-81.006046,41.715908],[-81.000569,41.852832],[-80.518598,41.978802],[-80.518598,41.978802]]]},"id":"39007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.012416,41.94594],[-90.8974,41.94594],[-90.8974,41.770678],[-90.8974,41.595416],[-91.30817,41.595416],[-91.368417,41.600893],[-91.368417,41.858309],[-91.368417,41.94594],[-91.012416,41.94594]]]},"id":"19031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.889643,41.929509],[-89.686996,41.929509],[-89.632227,41.902124],[-89.632227,41.584462],[-89.862258,41.584462],[-90.179921,41.584462],[-90.185398,41.584462],[-90.240167,41.781632],[-90.152536,41.929509],[-89.889643,41.929509]]]},"id":"17195"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.91336,41.918555],[-97.831206,41.918555],[-97.831206,41.743293],[-97.831206,41.524216],[-98.291269,41.4804],[-98.296746,41.743293],[-98.296746,41.913078],[-97.91336,41.918555]]]},"id":"31011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.544596,41.902124],[-88.942132,41.891171],[-88.936655,41.628277],[-89.166687,41.584462],[-89.254318,41.584462],[-89.632227,41.584462],[-89.632227,41.902124],[-89.544596,41.902124]]]},"id":"17103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.122401,41.863786],[-95.673292,41.863786],[-95.558276,41.863786],[-95.49803,41.507785],[-95.848554,41.507785],[-95.996431,41.507785],[-96.122401,41.683047],[-96.138832,41.863786],[-96.122401,41.863786]]]},"id":"19085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.322768,41.863786],[-95.092736,41.863786],[-95.043444,41.502308],[-95.152983,41.507785],[-95.49803,41.507785],[-95.558276,41.863786],[-95.322768,41.863786]]]},"id":"19165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.816609,41.863786],[-93.789224,41.513262],[-93.822086,41.507785],[-94.24381,41.502308],[-94.282149,41.863786],[-94.161656,41.863786],[-93.816609,41.863786]]]},"id":"19049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.772794,41.863786],[-93.696116,41.863786],[-93.345592,41.863786],[-93.329161,41.507785],[-93.329161,41.491354],[-93.70707,41.513262],[-93.789224,41.513262],[-93.816609,41.863786],[-93.772794,41.863786]]]},"id":"19153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.092736,41.863786],[-94.742212,41.863786],[-94.698396,41.502308],[-95.043444,41.502308],[-95.092736,41.863786]]]},"id":"19009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.484796,41.863786],[-94.282149,41.863786],[-94.24381,41.502308],[-94.660058,41.502308],[-94.698396,41.502308],[-94.742212,41.863786],[-94.627196,41.863786],[-94.484796,41.863786]]]},"id":"19077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.268915,41.863786],[-93.230576,41.863786],[-92.765037,41.863786],[-92.754083,41.507785],[-92.869098,41.507785],[-93.329161,41.507785],[-93.345592,41.863786],[-93.268915,41.863786]]]},"id":"19099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.063988,41.863786],[-91.833957,41.863786],[-91.82848,41.513262],[-91.943495,41.513262],[-92.299497,41.507785],[-92.299497,41.863786],[-92.063988,41.863786]]]},"id":"19095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.299497,41.863786],[-92.299497,41.507785],[-92.414512,41.507785],[-92.458328,41.507785],[-92.754083,41.507785],[-92.765037,41.863786],[-92.299497,41.863786]]]},"id":"19157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.664172,41.863786],[-91.368417,41.858309],[-91.368417,41.600893],[-91.368417,41.425631],[-91.483432,41.425631],[-91.790141,41.513262],[-91.82848,41.513262],[-91.833957,41.863786],[-91.664172,41.863786]]]},"id":"19103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.000569,41.852832],[-81.006046,41.715908],[-81.389431,41.568031],[-81.488016,41.633754],[-81.000569,41.852832]]]},"id":"39085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.708011,41.852832],[-79.609426,41.847355],[-79.614903,41.6228],[-79.998289,41.491354],[-80.003765,41.491354],[-80.518598,41.491354],[-80.518598,41.502308],[-80.518598,41.847355],[-79.708011,41.852832]]]},"id":"42039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.240167,41.781632],[-90.185398,41.584462],[-90.43186,41.327046],[-91.050754,41.332523],[-91.072662,41.332523],[-91.072662,41.332523],[-90.787861,41.453015],[-90.316844,41.726862],[-90.240167,41.781632]]]},"id":"17161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.798815,41.770678],[-90.316844,41.726862],[-90.787861,41.453015],[-90.8974,41.595416],[-90.8974,41.770678],[-90.798815,41.770678]]]},"id":"19163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.317338,41.776155],[-71.22423,41.710431],[-71.355677,41.726862],[-71.366631,41.737816],[-71.317338,41.776155]]]},"id":"44001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.4214,41.765201],[-71.366631,41.737816],[-71.355677,41.726862],[-71.410446,41.655662],[-71.470692,41.633754],[-71.788355,41.595416],[-71.788355,41.639231],[-71.788355,41.726862],[-71.4214,41.765201]]]},"id":"44003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.061262,41.759724],[-86.061262,41.4804],[-86.247477,41.4804],[-86.466555,41.431108],[-86.526801,41.431108],[-86.521325,41.759724],[-86.22557,41.759724],[-86.061262,41.759724]]]},"id":"18141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.990061,41.759724],[-85.792891,41.759724],[-85.661445,41.759724],[-85.655968,41.524216],[-85.655968,41.436584],[-86.061262,41.436584],[-86.061262,41.4804],[-86.061262,41.759724],[-85.990061,41.759724]]]},"id":"18039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.822556,41.759724],[-86.521325,41.759724],[-86.526801,41.431108],[-86.932095,41.239415],[-86.932095,41.710431],[-86.822556,41.759724]]]},"id":"18091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.823473,41.759724],[-84.807042,41.694001],[-84.807042,41.529692],[-84.916581,41.529692],[-85.195905,41.524216],[-85.195905,41.759724],[-84.823473,41.759724]]]},"id":"18151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.371167,41.759724],[-85.29449,41.759724],[-85.195905,41.759724],[-85.195905,41.524216],[-85.655968,41.524216],[-85.661445,41.759724],[-85.371167,41.759724]]]},"id":"18087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.407648,41.743293],[-100.843524,41.737816],[-100.712077,41.737816],[-100.712077,41.392769],[-101.270725,41.392769],[-101.363833,41.392769],[-101.407648,41.392769],[-101.407648,41.743293]]]},"id":"31117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.250651,41.743293],[-97.020619,41.743293],[-96.905603,41.743293],[-96.905603,41.453015],[-97.256128,41.376338],[-97.250651,41.743293],[-97.250651,41.743293]]]},"id":"31037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.424079,41.743293],[-101.407648,41.743293],[-101.407648,41.392769],[-101.982727,41.392769],[-101.988204,41.743293],[-101.424079,41.743293]]]},"id":"31005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.425913,41.743293],[-97.365666,41.743293],[-97.250651,41.743293],[-97.256128,41.376338],[-97.365666,41.392769],[-97.601175,41.332523],[-97.705237,41.392769],[-97.716191,41.524216],[-97.831206,41.524216],[-97.831206,41.743293],[-97.425913,41.743293]]]},"id":"31141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.905603,41.743293],[-96.555079,41.743293],[-96.44554,41.683047],[-96.330525,41.392769],[-96.461971,41.392769],[-96.472925,41.392769],[-96.905603,41.453015],[-96.905603,41.453015],[-96.905603,41.743293]]]},"id":"31053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.222349,41.743293],[-99.211395,41.743293],[-99.205918,41.392769],[-99.205918,41.047722],[-99.424996,41.047722],[-99.994598,41.047722],[-100.224629,41.047722],[-100.252014,41.392769],[-100.252014,41.737816],[-99.687889,41.737816],[-99.222349,41.743293]]]},"id":"31041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.521301,41.743293],[-98.296746,41.743293],[-98.291269,41.4804],[-98.291269,41.392769],[-98.521301,41.392769],[-98.745855,41.392769],[-98.751332,41.392769],[-98.751332,41.737816],[-98.521301,41.743293]]]},"id":"31077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.074472,41.737816],[-98.756809,41.737816],[-98.751332,41.737816],[-98.751332,41.392769],[-98.822533,41.392769],[-99.205918,41.392769],[-99.211395,41.743293],[-99.074472,41.737816]]]},"id":"31175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.712077,41.737816],[-100.262968,41.737816],[-100.252014,41.737816],[-100.252014,41.392769],[-100.712077,41.392769],[-100.712077,41.737816]]]},"id":"31113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.16396,41.6228],[-83.180391,41.6228],[-83.415899,41.617324],[-83.881439,41.414677],[-83.881439,41.485877],[-83.881439,41.721385],[-83.760947,41.721385],[-83.454238,41.732339],[-83.16396,41.6228]]]},"id":"39095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.03296,41.726862],[-88.027483,41.683047],[-87.523605,41.469446],[-87.529082,41.299661],[-87.786498,41.294184],[-88.246561,41.201076],[-88.252038,41.463969],[-88.262992,41.726862],[-88.03296,41.726862]]]},"id":"17197"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.262992,41.726862],[-88.262992,41.726862],[-88.252038,41.463969],[-88.279422,41.463969],[-88.597085,41.458492],[-88.602562,41.633754],[-88.602562,41.721385],[-88.262992,41.726862]]]},"id":"17093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.89787,41.721385],[-83.881439,41.721385],[-83.881439,41.485877],[-83.886916,41.485877],[-84.341502,41.485877],[-84.401749,41.704955],[-84.357933,41.704955],[-83.89787,41.721385]]]},"id":"39051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.006046,41.715908],[-81.000569,41.502308],[-81.000569,41.348953],[-81.389431,41.348953],[-81.389431,41.568031],[-81.006046,41.715908]]]},"id":"39055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.237464,41.715908],[-71.788355,41.639231],[-71.788355,41.595416],[-71.859555,41.321569],[-72.341526,41.277753],[-72.467496,41.584462],[-72.412726,41.600893],[-72.237464,41.715908]]]},"id":"09011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.932095,41.710431],[-86.932095,41.239415],[-87.036157,41.255845],[-87.216896,41.239415],[-87.222373,41.6228],[-86.932095,41.710431]]]},"id":"18127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.222373,41.6228],[-87.216896,41.239415],[-87.277142,41.217507],[-87.529082,41.168214],[-87.529082,41.299661],[-87.523605,41.469446],[-87.523605,41.710431],[-87.222373,41.6228]]]},"id":"18089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.401749,41.704955],[-84.341502,41.485877],[-84.341502,41.425631],[-84.801565,41.425631],[-84.807042,41.529692],[-84.807042,41.694001],[-84.401749,41.704955]]]},"id":"39171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.053011,41.699478],[-103.368393,41.699478],[-103.368393,41.436584],[-103.379347,41.392769],[-104.053011,41.392769],[-104.053011,41.562554],[-104.053011,41.699478]]]},"id":"31007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.407202,41.683047],[-96.122401,41.683047],[-95.996431,41.507785],[-95.936185,41.392769],[-96.330525,41.392769],[-96.44554,41.683047],[-96.407202,41.683047]]]},"id":"31177"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.519068,41.666616],[-73.310944,41.469446],[-73.108298,41.168214],[-73.655992,40.987475],[-73.546453,41.365384],[-73.530022,41.529692],[-73.519068,41.666616]]]},"id":"09001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.279845,41.655662],[-104.655474,41.655662],[-104.053011,41.562554],[-104.053011,41.392769],[-104.053011,41.003906],[-104.945752,40.998429],[-105.279845,40.998429],[-105.279845,41.655662]]]},"id":"56021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-71.470692,41.633754],[-71.410446,41.655662],[-71.859555,41.321569],[-71.788355,41.595416],[-71.470692,41.633754]]]},"id":"44009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.2192,41.540646],[-76.115138,41.650185],[-75.720798,41.644708],[-75.835814,41.425631],[-75.835814,41.425631],[-76.284923,41.376338],[-76.2192,41.540646]]]},"id":"42131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.544173,41.644708],[-72.467496,41.584462],[-72.341526,41.277753],[-72.538696,41.255845],[-72.752296,41.578985],[-72.544173,41.644708]]]},"id":"09007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-72.949466,41.644708],[-72.752296,41.578985],[-72.538696,41.255845],[-73.108298,41.168214],[-73.310944,41.469446],[-72.982328,41.639231],[-72.949466,41.644708]]]},"id":"09009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.720798,41.644708],[-75.463382,41.639231],[-75.507197,41.233938],[-75.600305,41.162737],[-75.835814,41.425631],[-75.720798,41.644708]]]},"id":"42069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.263932,41.633754],[-73.951746,41.589939],[-73.979131,41.436584],[-73.979131,41.327046],[-74.236547,41.14083],[-74.367994,41.201076],[-74.69661,41.359907],[-74.756857,41.425631],[-74.367994,41.589939],[-74.263932,41.633754]]]},"id":"36071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.618993,41.633754],[-88.602562,41.633754],[-88.597085,41.458492],[-88.586131,41.107968],[-88.931178,40.927229],[-89.046194,40.927229],[-89.16121,41.102491],[-89.16121,41.310615],[-89.166687,41.584462],[-88.936655,41.628277],[-88.618993,41.633754]]]},"id":"17099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.488016,41.633754],[-81.389431,41.568031],[-81.389431,41.348953],[-81.389431,41.348953],[-81.537309,41.348953],[-81.685186,41.277753],[-81.876879,41.277753],[-81.969987,41.507785],[-81.488016,41.633754]]]},"id":"39035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.95767,41.6228],[-78.42093,41.600893],[-78.234714,41.228461],[-78.711208,41.201076],[-78.95767,41.370861],[-79.094593,41.343476],[-78.95767,41.6228]]]},"id":"42047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.996008,41.6228],[-78.95767,41.6228],[-79.094593,41.343476],[-79.209609,41.332523],[-79.357487,41.431108],[-79.477979,41.387292],[-79.510841,41.6228],[-78.996008,41.6228]]]},"id":"42053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.510841,41.6228],[-79.477979,41.387292],[-79.697057,41.173691],[-79.998289,41.173691],[-79.998289,41.491354],[-79.614903,41.6228],[-79.510841,41.6228]]]},"id":"42121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.180391,41.6228],[-83.16396,41.6228],[-82.692943,41.491354],[-82.775097,41.4804],[-82.955836,41.458492],[-83.415899,41.502308],[-83.415899,41.617324],[-83.180391,41.6228]]]},"id":"39123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.415899,41.617324],[-83.415899,41.502308],[-83.421376,41.255845],[-83.421376,41.168214],[-83.881439,41.168214],[-83.881439,41.414677],[-83.415899,41.617324]]]},"id":"39173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.42093,41.600893],[-78.201852,41.617324],[-77.988251,41.474923],[-78.092313,41.217507],[-78.234714,41.228461],[-78.42093,41.600893]]]},"id":"42023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.069042,41.600893],[-74.756857,41.425631],[-74.69661,41.359907],[-74.992365,41.091537],[-75.271689,41.244892],[-75.35932,41.239415],[-75.069042,41.600893]]]},"id":"42103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.30817,41.595416],[-90.8974,41.595416],[-90.787861,41.453015],[-91.072662,41.332523],[-91.368417,41.425631],[-91.368417,41.600893],[-91.30817,41.595416]]]},"id":"19139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.876433,41.595416],[-76.816186,41.589939],[-76.449231,41.277753],[-76.640924,41.157261],[-76.734032,41.173691],[-76.799755,41.173691],[-76.89834,41.14083],[-77.144803,41.069629],[-77.599389,41.4804],[-77.599389,41.540646],[-76.876433,41.595416]]]},"id":"42081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.816186,41.589939],[-76.2192,41.540646],[-76.284923,41.376338],[-76.312308,41.310615],[-76.317785,41.310615],[-76.449231,41.277753],[-76.816186,41.589939]]]},"id":"42113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.254318,41.584462],[-89.166687,41.584462],[-89.16121,41.310615],[-89.467918,41.146307],[-89.522688,41.146307],[-89.637704,41.146307],[-89.856781,41.233938],[-89.862258,41.584462],[-89.632227,41.584462],[-89.254318,41.584462]]]},"id":"17011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.179921,41.584462],[-89.862258,41.584462],[-89.856781,41.233938],[-89.982751,41.151784],[-90.207305,41.151784],[-90.437337,41.151784],[-90.43186,41.327046],[-90.185398,41.584462],[-90.179921,41.584462]]]},"id":"17073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.047063,41.578985],[-110.05026,41.578985],[-110.05026,40.998429],[-111.047063,40.998429],[-111.047063,41.250368],[-111.047063,41.578985]]]},"id":"56041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.916581,41.529692],[-84.807042,41.529692],[-84.801565,41.425631],[-84.801565,41.272276],[-84.845381,41.272276],[-85.190428,41.266799],[-85.195905,41.524216],[-84.916581,41.529692]]]},"id":"18033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.530022,41.529692],[-73.546453,41.365384],[-73.661469,41.35443],[-73.984608,41.321569],[-73.979131,41.327046],[-73.979131,41.436584],[-73.530022,41.529692]]]},"id":"36079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.716191,41.524216],[-97.705237,41.392769],[-98.285792,41.392769],[-98.291269,41.392769],[-98.291269,41.4804],[-97.831206,41.524216],[-97.716191,41.524216]]]},"id":"31125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.195905,41.524216],[-85.190428,41.266799],[-85.305444,41.266799],[-85.650491,41.294184],[-85.655968,41.436584],[-85.655968,41.524216],[-85.195905,41.524216]]]},"id":"18113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.969987,41.507785],[-81.876879,41.277753],[-82.172634,41.064153],[-82.336942,41.064153],[-82.342419,41.28323],[-82.347896,41.431108],[-81.969987,41.507785]]]},"id":"39093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.70707,41.513262],[-93.329161,41.491354],[-93.329161,41.162737],[-93.559193,41.162737],[-93.674209,41.162737],[-93.789224,41.162737],[-93.789224,41.513262],[-93.70707,41.513262]]]},"id":"19181"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.822086,41.507785],[-93.789224,41.513262],[-93.789224,41.162737],[-94.013779,41.157261],[-94.24381,41.157261],[-94.24381,41.502308],[-93.822086,41.507785]]]},"id":"19121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.790141,41.513262],[-91.483432,41.425631],[-91.483432,41.162737],[-91.598448,41.162737],[-91.713464,41.162737],[-91.943495,41.162737],[-91.943495,41.513262],[-91.82848,41.513262],[-91.790141,41.513262]]]},"id":"19183"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.943495,41.513262],[-91.943495,41.162737],[-92.179004,41.162737],[-92.261158,41.162737],[-92.409035,41.162737],[-92.414512,41.507785],[-92.299497,41.507785],[-91.943495,41.513262]]]},"id":"19107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.458328,41.507785],[-92.414512,41.507785],[-92.409035,41.162737],[-92.639067,41.162737],[-92.655498,41.162737],[-92.869098,41.162737],[-92.869098,41.507785],[-92.754083,41.507785],[-92.458328,41.507785]]]},"id":"19123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.869098,41.507785],[-92.869098,41.162737],[-93.09913,41.162737],[-93.329161,41.162737],[-93.329161,41.491354],[-93.329161,41.507785],[-92.869098,41.507785]]]},"id":"19125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.848554,41.507785],[-95.49803,41.507785],[-95.152983,41.507785],[-95.158459,41.157261],[-95.267998,41.157261],[-95.383014,41.157261],[-95.673292,41.157261],[-95.881416,41.157261],[-95.925231,41.190122],[-95.936185,41.392769],[-95.996431,41.507785],[-95.848554,41.507785]]]},"id":"19155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.152983,41.507785],[-95.043444,41.502308],[-94.698396,41.502308],[-94.698396,41.157261],[-94.813412,41.157261],[-94.928428,41.157261],[-95.158459,41.157261],[-95.152983,41.507785]]]},"id":"19029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.660058,41.502308],[-94.24381,41.502308],[-94.24381,41.157261],[-94.468365,41.157261],[-94.698396,41.157261],[-94.698396,41.502308],[-94.660058,41.502308]]]},"id":"19001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.000569,41.502308],[-80.518598,41.502308],[-80.518598,41.491354],[-80.518598,41.135353],[-80.786968,41.135353],[-81.000569,41.135353],[-81.000569,41.348953],[-81.000569,41.502308]]]},"id":"39155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.415899,41.502308],[-82.955836,41.458492],[-82.840821,41.288707],[-82.840821,41.255845],[-83.070852,41.255845],[-83.421376,41.255845],[-83.415899,41.502308]]]},"id":"39143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.775097,41.4804],[-82.692943,41.491354],[-82.347896,41.431108],[-82.342419,41.28323],[-82.840821,41.288707],[-82.955836,41.458492],[-82.775097,41.4804]]]},"id":"39043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.003765,41.491354],[-79.998289,41.491354],[-79.998289,41.173691],[-80.096873,41.069629],[-80.518598,41.124399],[-80.518598,41.135353],[-80.518598,41.491354],[-80.003765,41.491354]]]},"id":"42085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.886916,41.485877],[-83.881439,41.485877],[-83.881439,41.414677],[-83.881439,41.168214],[-84.029317,41.168214],[-84.226487,41.168214],[-84.270302,41.425631],[-84.341502,41.425631],[-84.341502,41.485877],[-83.886916,41.485877]]]},"id":"39069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.247477,41.4804],[-86.061262,41.4804],[-86.061262,41.436584],[-86.077692,41.173691],[-86.242001,41.173691],[-86.466555,41.173691],[-86.466555,41.431108],[-86.247477,41.4804]]]},"id":"18099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.747266,41.474923],[-77.599389,41.4804],[-77.144803,41.069629],[-77.144803,41.042245],[-77.708927,41.113445],[-78.037544,41.151784],[-78.092313,41.217507],[-77.988251,41.474923],[-77.747266,41.474923]]]},"id":"42035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-124.054797,41.463969],[-123.660457,41.381815],[-123.408518,41.179168],[-123.545441,40.001626],[-124.021935,40.001626],[-124.410798,40.439781],[-124.065751,41.463969],[-124.054797,41.463969]]]},"id":"06023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.279422,41.463969],[-88.252038,41.463969],[-88.246561,41.201076],[-88.252038,41.113445],[-88.410869,41.107968],[-88.586131,41.107968],[-88.597085,41.458492],[-88.279422,41.463969]]]},"id":"17063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.905603,41.453015],[-96.905603,41.453015],[-96.91108,41.047722],[-96.91108,41.047722],[-97.349236,41.047722],[-97.365666,41.047722],[-97.365666,41.392769],[-97.256128,41.376338],[-96.905603,41.453015]]]},"id":"31023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.905603,41.453015],[-96.472925,41.392769],[-96.325048,41.190122],[-96.319571,41.047722],[-96.461971,41.01486],[-96.91108,41.047722],[-96.905603,41.453015]]]},"id":"31155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.754976,41.436584],[-102.634483,41.436584],[-102.612575,41.222984],[-102.623529,41.003906],[-102.650914,41.003906],[-103.384824,41.003906],[-103.379347,41.392769],[-103.368393,41.436584],[-102.754976,41.436584]]]},"id":"31033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.655968,41.436584],[-85.650491,41.294184],[-85.683353,41.047722],[-85.946246,41.042245],[-86.077692,41.173691],[-86.061262,41.436584],[-85.655968,41.436584]]]},"id":"18085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.357487,41.431108],[-79.209609,41.332523],[-79.215086,41.053199],[-79.603949,41.020337],[-79.69158,41.168214],[-79.697057,41.173691],[-79.477979,41.387292],[-79.357487,41.431108]]]},"id":"42031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.655004,41.4092],[-111.512603,41.425631],[-111.419495,41.359907],[-111.857651,41.14083],[-112.011005,41.151784],[-112.492976,41.075106],[-111.885035,41.425631],[-111.655004,41.4092]]]},"id":"49057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.466555,41.431108],[-86.466555,41.173691],[-86.669202,41.173691],[-86.932095,41.173691],[-86.932095,41.239415],[-86.526801,41.431108],[-86.466555,41.431108]]]},"id":"18149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.270302,41.425631],[-84.226487,41.168214],[-84.341502,41.162737],[-84.577011,41.250368],[-84.801565,41.250368],[-84.801565,41.272276],[-84.801565,41.425631],[-84.341502,41.425631],[-84.270302,41.425631]]]},"id":"39039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.835814,41.425631],[-75.835814,41.425631],[-75.600305,41.162737],[-75.649598,41.124399],[-75.687936,41.129876],[-75.994645,40.910798],[-76.208246,40.949137],[-76.312308,41.310615],[-76.284923,41.376338],[-75.835814,41.425631]]]},"id":"42079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.483432,41.425631],[-91.368417,41.425631],[-91.072662,41.332523],[-91.072662,41.332523],[-90.946692,41.075106],[-91.324601,41.075106],[-91.368417,41.075106],[-91.483432,41.162737],[-91.483432,41.425631]]]},"id":"19115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.365666,41.392769],[-97.365666,41.047722],[-97.825729,41.047722],[-97.825729,41.173691],[-97.601175,41.332523],[-97.365666,41.392769]]]},"id":"31143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.363833,41.392769],[-101.270725,41.392769],[-101.248817,41.003906],[-101.878665,41.003906],[-102.053927,41.003906],[-102.053927,41.222984],[-101.982727,41.392769],[-101.407648,41.392769],[-101.363833,41.392769]]]},"id":"31101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.705237,41.392769],[-97.601175,41.332523],[-97.825729,41.173691],[-98.280315,40.87246],[-98.285792,41.047722],[-98.285792,41.392769],[-97.705237,41.392769]]]},"id":"31121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.270725,41.392769],[-100.712077,41.392769],[-100.252014,41.392769],[-100.224629,41.047722],[-100.224629,40.702674],[-100.449184,40.702674],[-100.7778,40.702674],[-101.248817,40.697198],[-101.248817,41.003906],[-101.270725,41.392769]]]},"id":"31111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.379347,41.392769],[-103.384824,41.003906],[-103.576517,41.003906],[-104.053011,41.003906],[-104.053011,41.392769],[-103.379347,41.392769]]]},"id":"31105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.822533,41.392769],[-98.751332,41.392769],[-98.745855,41.392769],[-98.745855,41.047722],[-99.052564,41.047722],[-99.205918,41.047722],[-99.205918,41.392769],[-98.822533,41.392769]]]},"id":"31163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.521301,41.392769],[-98.291269,41.392769],[-98.285792,41.392769],[-98.285792,41.047722],[-98.70204,41.047722],[-98.723948,41.047722],[-98.745855,41.047722],[-98.745855,41.392769],[-98.521301,41.392769]]]},"id":"31093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.461971,41.392769],[-96.330525,41.392769],[-95.936185,41.392769],[-95.925231,41.190122],[-95.936185,41.190122],[-96.325048,41.190122],[-96.472925,41.392769],[-96.461971,41.392769]]]},"id":"31055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.95767,41.370861],[-78.711208,41.201076],[-78.804316,40.905321],[-79.215086,40.910798],[-79.215086,41.053199],[-79.209609,41.332523],[-79.094593,41.343476],[-78.95767,41.370861]]]},"id":"42065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.419495,41.359907],[-111.266141,41.146307],[-111.638573,40.801259],[-111.737158,40.861506],[-111.857651,41.14083],[-111.419495,41.359907]]]},"id":"49029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.586977,41.35443],[-122.499346,41.184645],[-122.691039,40.576705],[-123.063471,40.286427],[-122.932024,39.979718],[-123.545441,40.001626],[-123.408518,41.179168],[-122.915593,40.992952],[-122.586977,41.35443]]]},"id":"06105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.661469,41.35443],[-73.546453,41.365384],[-73.655992,40.987475],[-73.781961,40.883413],[-73.918885,40.916275],[-73.8915,40.998429],[-73.984608,41.321569],[-73.661469,41.35443]]]},"id":"36119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.367994,41.201076],[-74.504917,41.08606],[-74.76781,40.910798],[-74.96498,41.091537],[-74.96498,41.097014],[-74.992365,41.091537],[-74.69661,41.359907],[-74.367994,41.201076]]]},"id":"34037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.537309,41.348953],[-81.389431,41.348953],[-81.394908,40.987475],[-81.646848,40.916275],[-81.690663,40.987475],[-81.685186,41.277753],[-81.537309,41.348953]]]},"id":"39153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.389431,41.348953],[-81.000569,41.348953],[-81.000569,41.135353],[-81.0882,40.987475],[-81.394908,40.987475],[-81.389431,41.348953],[-81.389431,41.348953]]]},"id":"39133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.050754,41.332523],[-90.43186,41.327046],[-90.437337,41.151784],[-90.437337,41.064153],[-90.667368,41.069629],[-90.787861,41.069629],[-90.946692,41.069629],[-90.946692,41.075106],[-91.072662,41.332523],[-91.050754,41.332523]]]},"id":"17131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.984608,41.321569],[-73.8915,40.998429],[-74.21464,41.135353],[-74.236547,41.14083],[-73.979131,41.327046],[-73.984608,41.321569]]]},"id":"36087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.16121,41.310615],[-89.16121,41.102491],[-89.467918,41.146307],[-89.16121,41.310615]]]},"id":"17155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.317785,41.310615],[-76.312308,41.310615],[-76.208246,40.949137],[-76.378031,40.773875],[-76.525908,40.883413],[-76.640924,41.157261],[-76.449231,41.277753],[-76.317785,41.310615]]]},"id":"42037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.786498,41.294184],[-87.529082,41.299661],[-87.529082,41.168214],[-87.523605,41.009383],[-88.131545,40.998429],[-88.246561,40.992952],[-88.252038,41.113445],[-88.246561,41.201076],[-87.786498,41.294184]]]},"id":"17091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.650491,41.294184],[-85.305444,41.266799],[-85.332828,41.003906],[-85.376644,41.003906],[-85.645014,41.003906],[-85.683353,41.047722],[-85.650491,41.294184]]]},"id":"18183"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.840821,41.288707],[-82.342419,41.28323],[-82.336942,41.064153],[-82.375281,41.064153],[-82.435527,40.992952],[-82.687466,40.992952],[-82.725805,40.998429],[-82.829867,40.998429],[-82.840821,41.255845],[-82.840821,41.288707]]]},"id":"39077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.036157,41.255845],[-86.932095,41.239415],[-86.932095,41.173691],[-86.932095,40.910798],[-87.096403,40.735536],[-87.266188,40.735536],[-87.277142,41.21203],[-87.277142,41.217507],[-87.216896,41.239415],[-87.036157,41.255845]]]},"id":"18073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.685186,41.277753],[-81.690663,40.987475],[-82.079526,40.992952],[-82.128818,40.992952],[-82.172634,41.064153],[-81.876879,41.277753],[-81.685186,41.277753]]]},"id":"39103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.845381,41.272276],[-84.801565,41.272276],[-84.801565,41.250368],[-84.801565,40.987475],[-84.801565,40.921752],[-84.878242,40.921752],[-85.075412,40.916275],[-85.108274,40.916275],[-85.338305,40.916275],[-85.332828,41.003906],[-85.305444,41.266799],[-85.190428,41.266799],[-84.845381,41.272276]]]},"id":"18003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.070852,41.255845],[-82.840821,41.255845],[-82.829867,40.998429],[-83.114668,40.992952],[-83.421376,40.992952],[-83.421376,41.168214],[-83.421376,41.255845],[-83.070852,41.255845]]]},"id":"39147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.234714,41.228461],[-78.092313,41.217507],[-78.037544,41.151784],[-78.360683,40.735536],[-78.349729,40.724582],[-78.804316,40.724582],[-78.804316,40.905321],[-78.711208,41.201076],[-78.234714,41.228461]]]},"id":"42033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.577011,41.250368],[-84.341502,41.162737],[-84.401749,40.992952],[-84.456518,40.987475],[-84.801565,40.987475],[-84.801565,41.250368],[-84.577011,41.250368]]]},"id":"39125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.708927,41.113445],[-77.144803,41.042245],[-77.36388,40.845075],[-77.681543,40.730059],[-78.114221,40.741013],[-78.360683,40.735536],[-78.037544,41.151784],[-77.708927,41.113445]]]},"id":"42027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.271689,41.244892],[-74.992365,41.091537],[-74.96498,41.097014],[-75.118335,40.965568],[-75.474336,40.812213],[-75.649598,41.124399],[-75.600305,41.162737],[-75.507197,41.233938],[-75.35932,41.239415],[-75.271689,41.244892]]]},"id":"42089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.047063,41.250368],[-111.047063,40.998429],[-110.05026,40.998429],[-110.000968,40.998429],[-110.000968,40.812213],[-110.148845,40.812213],[-110.904663,40.680767],[-111.430449,40.686244],[-111.550942,40.609566],[-111.638573,40.801259],[-111.266141,41.146307],[-111.047063,41.250368]]]},"id":"49043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.856781,41.233938],[-89.637704,41.146307],[-89.637704,40.976521],[-89.96632,40.976521],[-89.988228,40.976521],[-89.982751,41.151784],[-89.856781,41.233938]]]},"id":"17175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.119651,41.222984],[-102.053927,41.222984],[-102.053927,41.003906],[-102.053927,41.003906],[-102.623529,41.003906],[-102.612575,41.222984],[-102.119651,41.222984]]]},"id":"31049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.277142,41.21203],[-87.266188,40.735536],[-87.326435,40.735536],[-87.523605,40.735536],[-87.523605,41.009383],[-87.529082,41.168214],[-87.277142,41.217507],[-87.277142,41.21203]]]},"id":"18111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.367994,41.201076],[-74.236547,41.14083],[-74.21464,41.135353],[-74.132485,40.81769],[-74.269409,40.899844],[-74.504917,41.08606],[-74.367994,41.201076]]]},"id":"34031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.936185,41.190122],[-95.925231,41.190122],[-95.881416,41.157261],[-95.881416,41.053199],[-96.040247,41.064153],[-96.319571,41.047722],[-96.325048,41.190122],[-95.936185,41.190122]]]},"id":"31153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.447773,41.184645],[-121.332757,41.184645],[-121.327281,40.445258],[-121.497066,40.445258],[-123.063471,40.286427],[-122.691039,40.576705],[-122.499346,41.184645],[-121.447773,41.184645]]]},"id":"06089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.943895,41.184645],[-120.001861,41.184645],[-120.001861,39.722302],[-120.149738,39.705871],[-120.209985,40.08378],[-121.119157,40.445258],[-121.327281,40.445258],[-121.332757,41.184645],[-120.943895,41.184645]]]},"id":"06035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.799755,41.173691],[-76.734032,41.173691],[-76.525908,40.883413],[-76.378031,40.773875],[-76.70117,40.658859],[-76.947633,40.625997],[-76.936679,40.636951],[-76.799755,40.883413],[-76.89834,41.14083],[-76.799755,41.173691]]]},"id":"42097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.825729,41.047722],[-97.825729,40.697198],[-98.280315,40.697198],[-98.280315,40.697198],[-98.280315,40.87246],[-97.825729,41.173691],[-97.825729,41.047722]]]},"id":"31081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.998289,41.173691],[-79.697057,41.173691],[-79.69158,41.168214],[-79.69158,40.669813],[-80.146166,40.67529],[-80.15712,40.856029],[-80.096873,41.069629],[-79.998289,41.173691]]]},"id":"42019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.242001,41.173691],[-86.077692,41.173691],[-85.946246,41.042245],[-85.946246,40.998429],[-86.1708,40.910798],[-86.466555,40.910798],[-86.466555,41.173691],[-86.242001,41.173691]]]},"id":"18049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.669202,41.173691],[-86.466555,41.173691],[-86.466555,40.910798],[-86.581571,40.910798],[-86.877326,40.910798],[-86.932095,40.910798],[-86.932095,41.173691],[-86.669202,41.173691]]]},"id":"18131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.734032,41.173691],[-76.640924,41.157261],[-76.525908,40.883413],[-76.734032,41.173691]]]},"id":"42093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.603949,41.020337],[-79.215086,41.053199],[-79.215086,40.910798],[-79.450595,40.527412],[-79.538226,40.54932],[-79.69158,40.669813],[-79.69158,40.669813],[-79.69158,41.168214],[-79.603949,41.020337]]]},"id":"42005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.881439,41.168214],[-83.421376,41.168214],[-83.421376,40.992952],[-83.514484,40.81769],[-83.574731,40.81769],[-83.881439,40.81769],[-83.881439,40.921752],[-83.881439,41.168214]]]},"id":"39063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.029317,41.168214],[-83.881439,41.168214],[-83.881439,40.921752],[-84.341502,40.861506],[-84.401749,40.992952],[-84.341502,41.162737],[-84.226487,41.168214],[-84.029317,41.168214]]]},"id":"39137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.943495,41.162737],[-91.713464,41.162737],[-91.718941,40.899844],[-92.118758,40.899844],[-92.179004,40.899844],[-92.179004,41.162737],[-91.943495,41.162737]]]},"id":"19101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.598448,41.162737],[-91.483432,41.162737],[-91.368417,41.075106],[-91.406755,40.812213],[-91.603925,40.812213],[-91.718941,40.812213],[-91.718941,40.899844],[-91.713464,41.162737],[-91.598448,41.162737]]]},"id":"19087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.261158,41.162737],[-92.179004,41.162737],[-92.179004,40.899844],[-92.639067,40.899844],[-92.639067,41.162737],[-92.409035,41.162737],[-92.261158,41.162737]]]},"id":"19179"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.674209,41.162737],[-93.559193,41.162737],[-93.559193,40.899844],[-93.663255,40.899844],[-94.013779,40.894367],[-94.013779,41.157261],[-93.789224,41.162737],[-93.674209,41.162737]]]},"id":"19039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.655498,41.162737],[-92.639067,41.162737],[-92.639067,40.899844],[-93.09913,40.899844],[-93.09913,41.162737],[-92.869098,41.162737],[-92.655498,41.162737]]]},"id":"19135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.09913,41.162737],[-93.09913,40.899844],[-93.559193,40.899844],[-93.559193,41.162737],[-93.329161,41.162737],[-93.09913,41.162737]]]},"id":"19117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.42596,40.609566],[-73.49716,40.921752],[-72.100541,40.992952],[-73.42596,40.609566]]]},"id":"36103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.673292,41.157261],[-95.383014,41.157261],[-95.383014,40.899844],[-95.519938,40.899844],[-95.815692,40.899844],[-95.881416,41.053199],[-95.881416,41.157261],[-95.673292,41.157261]]]},"id":"19129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.267998,41.157261],[-95.158459,41.157261],[-94.928428,41.157261],[-94.928428,40.899844],[-95.289906,40.899844],[-95.383014,40.899844],[-95.383014,41.157261],[-95.267998,41.157261]]]},"id":"19137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.813412,41.157261],[-94.698396,41.157261],[-94.468365,41.157261],[-94.468365,40.899844],[-94.857228,40.899844],[-94.928428,40.899844],[-94.928428,41.157261],[-94.813412,41.157261]]]},"id":"19003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.468365,41.157261],[-94.24381,41.157261],[-94.013779,41.157261],[-94.013779,40.894367],[-94.358826,40.899844],[-94.468365,40.899844],[-94.468365,41.157261]]]},"id":"19175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.011005,41.151784],[-111.857651,41.14083],[-111.737158,40.861506],[-111.98362,40.921752],[-112.262944,40.773875],[-112.492976,41.075106],[-112.011005,41.151784]]]},"id":"49011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.207305,41.151784],[-89.982751,41.151784],[-89.988228,40.976521],[-89.988228,40.713628],[-90.442814,40.713628],[-90.437337,41.064153],[-90.437337,41.151784],[-90.207305,41.151784]]]},"id":"17095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.144803,41.069629],[-76.89834,41.14083],[-76.799755,40.883413],[-76.854525,40.88889],[-77.358403,40.806736],[-77.36388,40.845075],[-77.144803,41.042245],[-77.144803,41.069629]]]},"id":"42119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.522688,41.146307],[-89.467918,41.146307],[-89.16121,41.102491],[-89.046194,40.927229],[-89.111917,40.927229],[-89.473395,40.921752],[-89.637704,40.976521],[-89.637704,41.146307],[-89.522688,41.146307]]]},"id":"17123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.786968,41.135353],[-80.518598,41.135353],[-80.518598,41.124399],[-80.518598,40.899844],[-80.858168,40.927229],[-81.0882,40.905321],[-81.0882,40.987475],[-81.000569,41.135353],[-80.786968,41.135353]]]},"id":"39099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.21464,41.135353],[-73.8915,40.998429],[-73.918885,40.916275],[-73.918885,40.910798],[-73.935316,40.883413],[-73.984608,40.795782],[-74.011993,40.823167],[-74.148916,40.784829],[-74.132485,40.81769],[-74.21464,41.135353]]]},"id":"34003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.687936,41.129876],[-75.649598,41.124399],[-75.474336,40.812213],[-75.611259,40.784829],[-75.759137,40.735536],[-75.994645,40.910798],[-75.687936,41.129876]]]},"id":"42025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.518598,41.124399],[-80.096873,41.069629],[-80.15712,40.856029],[-80.255705,40.856029],[-80.518598,40.850552],[-80.518598,40.899844],[-80.518598,41.124399]]]},"id":"42073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.410869,41.107968],[-88.252038,41.113445],[-88.246561,40.992952],[-88.460161,40.615043],[-88.712101,40.757444],[-88.931178,40.751967],[-88.931178,40.927229],[-88.586131,41.107968],[-88.410869,41.107968]]]},"id":"17105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.96498,41.091537],[-74.76781,40.910798],[-74.888303,40.790306],[-75.189535,40.593136],[-75.195012,40.609566],[-75.118335,40.965568],[-74.96498,41.097014],[-74.96498,41.091537]]]},"id":"34041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.504917,41.08606],[-74.269409,40.899844],[-74.28584,40.894367],[-74.373471,40.741013],[-74.461102,40.67529],[-74.718518,40.719105],[-74.723995,40.719105],[-74.888303,40.790306],[-74.76781,40.910798],[-74.504917,41.08606]]]},"id":"34027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.073531,40.998429],[-112.492976,41.075106],[-112.262944,40.773875],[-112.175313,40.467166],[-112.18079,40.01258],[-112.339621,39.903041],[-114.048427,39.908518],[-114.048427,40.116642],[-114.04295,40.998429],[-113.073531,40.998429]]]},"id":"49045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.324601,41.075106],[-90.946692,41.075106],[-90.946692,41.069629],[-91.111001,40.697198],[-91.406755,40.812213],[-91.368417,41.075106],[-91.324601,41.075106]]]},"id":"19057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.946692,41.069629],[-90.787861,41.069629],[-90.787861,40.636951],[-90.8974,40.636951],[-90.902877,40.636951],[-91.187678,40.636951],[-91.111001,40.697198],[-90.946692,41.069629]]]},"id":"17071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.667368,41.069629],[-90.437337,41.064153],[-90.442814,40.713628],[-90.442814,40.625997],[-90.787861,40.636951],[-90.787861,41.069629],[-90.667368,41.069629]]]},"id":"17187"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.040247,41.064153],[-95.881416,41.053199],[-95.815692,40.899844],[-95.832123,40.784829],[-95.892369,40.784829],[-96.461971,40.784829],[-96.461971,41.01486],[-96.319571,41.047722],[-96.040247,41.064153]]]},"id":"31025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.375281,41.064153],[-82.336942,41.064153],[-82.172634,41.064153],[-82.128818,40.992952],[-82.128818,40.669813],[-82.221926,40.565751],[-82.336942,40.554797],[-82.435527,40.992952],[-82.375281,41.064153]]]},"id":"39005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.994598,41.047722],[-99.424996,41.047722],[-99.419519,40.669813],[-99.644074,40.686244],[-99.983644,40.697198],[-100.224629,40.702674],[-100.224629,41.047722],[-99.994598,41.047722]]]},"id":"31047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.052564,41.047722],[-98.745855,41.047722],[-98.723948,41.047722],[-98.723948,40.697198],[-98.723948,40.691721],[-98.953979,40.653382],[-99.178534,40.658859],[-99.419519,40.669813],[-99.424996,41.047722],[-99.205918,41.047722],[-99.052564,41.047722]]]},"id":"31019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.365666,41.047722],[-97.365666,40.697198],[-97.798345,40.697198],[-97.825729,40.697198],[-97.825729,40.697198],[-97.825729,41.047722],[-97.365666,41.047722]]]},"id":"31185"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.349236,41.047722],[-96.91108,41.047722],[-96.91108,40.697198],[-97.365666,40.697198],[-97.365666,41.047722],[-97.349236,41.047722]]]},"id":"31159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.683353,41.047722],[-85.645014,41.003906],[-85.639537,40.653382],[-85.864092,40.653382],[-85.946246,40.998429],[-85.946246,41.042245],[-85.683353,41.047722]]]},"id":"18169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.70204,41.047722],[-98.285792,41.047722],[-98.280315,40.87246],[-98.280315,40.697198],[-98.723948,40.697198],[-98.723948,41.047722],[-98.70204,41.047722]]]},"id":"31079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.91108,41.047722],[-96.461971,41.01486],[-96.461971,40.784829],[-96.461971,40.521935],[-96.478402,40.521935],[-96.91108,40.521935],[-96.91108,40.697198],[-96.91108,41.047722],[-96.91108,41.047722]]]},"id":"31109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.523605,41.009383],[-87.523605,40.735536],[-87.529082,40.489074],[-87.841267,40.489074],[-87.934375,40.483597],[-88.131545,40.998429],[-88.131545,40.998429],[-87.523605,41.009383]]]},"id":"17075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.376644,41.003906],[-85.332828,41.003906],[-85.338305,40.916275],[-85.447844,40.653382],[-85.639537,40.653382],[-85.645014,41.003906],[-85.376644,41.003906]]]},"id":"18069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.878665,41.003906],[-101.248817,41.003906],[-101.248817,40.697198],[-101.347402,40.697198],[-101.571957,40.697198],[-102.053927,40.697198],[-102.053927,40.751967],[-102.053927,41.003906],[-102.053927,41.003906],[-101.878665,41.003906]]]},"id":"31135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.317267,41.003906],[-106.857204,41.003906],[-106.654557,40.445258],[-106.627173,39.924949],[-107.032466,39.919472],[-107.037943,40.089257],[-107.109143,40.226181],[-107.43776,40.220704],[-107.317267,41.003906]]]},"id":"08107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.919731,41.003906],[-107.317267,41.003906],[-107.43776,40.220704],[-109.053457,40.220704],[-109.04798,40.653382],[-109.04798,40.998429],[-107.919731,41.003906]]]},"id":"08081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.857204,41.003906],[-106.320464,40.998429],[-106.189017,40.998429],[-105.854924,40.483597],[-106.654557,40.445258],[-106.857204,41.003906]]]},"id":"08057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.623529,41.003906],[-102.053927,41.003906],[-102.053927,40.751967],[-102.327774,40.74649],[-102.650914,40.751967],[-102.650914,41.003906],[-102.623529,41.003906]]]},"id":"08115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.650914,41.003906],[-102.650914,40.751967],[-102.667345,40.439781],[-102.78236,40.439781],[-103.466978,40.434304],[-103.581994,40.521935],[-103.576517,41.003906],[-103.384824,41.003906],[-102.650914,41.003906]]]},"id":"08075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.677828,40.998429],[-109.04798,40.998429],[-109.04798,40.653382],[-109.283489,40.856029],[-109.97906,40.812213],[-110.000968,40.812213],[-110.000968,40.998429],[-109.677828,40.998429]]]},"id":"49009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.576517,41.003906],[-103.581994,40.521935],[-104.091349,40.521935],[-104.151596,40.001626],[-105.055291,40.001626],[-105.055291,40.264519],[-104.945752,40.998429],[-104.053011,41.003906],[-103.576517,41.003906]]]},"id":"08123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.016928,40.998429],[-116.58425,40.998429],[-116.600681,39.163654],[-117.772746,39.092454],[-117.493422,39.530609],[-117.542715,40.001626],[-117.301729,40.527412],[-117.016928,40.998429]]]},"id":"32015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.58425,40.998429],[-116.157049,40.998429],[-115.833909,40.127596],[-115.90511,39.163654],[-116.233726,39.163654],[-116.600681,39.163654],[-116.58425,40.998429]]]},"id":"32011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.946246,40.998429],[-85.864092,40.653382],[-85.864092,40.565751],[-85.875046,40.565751],[-86.165323,40.560274],[-86.1708,40.910798],[-85.946246,40.998429]]]},"id":"18103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.279845,40.998429],[-104.945752,40.998429],[-105.055291,40.264519],[-105.340092,40.259042],[-105.652277,40.259042],[-105.854924,40.483597],[-106.189017,40.998429],[-105.279845,40.998429]]]},"id":"08069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.131545,40.998429],[-87.934375,40.483597],[-87.934375,40.401443],[-88.109637,40.401443],[-88.460161,40.401443],[-88.460161,40.615043],[-88.246561,40.992952],[-88.131545,40.998429],[-88.131545,40.998429]]]},"id":"17053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.725805,40.998429],[-82.725805,40.713628],[-82.857251,40.713628],[-82.857251,40.702674],[-82.977744,40.702674],[-83.109191,40.702674],[-83.114668,40.992952],[-82.829867,40.998429],[-82.725805,40.998429]]]},"id":"39033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.687466,40.992952],[-82.435527,40.992952],[-82.336942,40.554797],[-82.621743,40.54932],[-82.725805,40.713628],[-82.725805,40.998429],[-82.687466,40.992952]]]},"id":"39139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.114668,40.992952],[-83.109191,40.702674],[-83.421376,40.686244],[-83.514484,40.81769],[-83.421376,40.992952],[-83.114668,40.992952]]]},"id":"39175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.079526,40.992952],[-81.690663,40.987475],[-81.646848,40.916275],[-81.652325,40.669813],[-81.657801,40.669813],[-82.128818,40.669813],[-82.128818,40.992952],[-82.079526,40.992952]]]},"id":"39169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.456518,40.987475],[-84.401749,40.992952],[-84.341502,40.861506],[-84.396272,40.686244],[-84.456518,40.686244],[-84.774181,40.730059],[-84.801565,40.730059],[-84.801565,40.921752],[-84.801565,40.987475],[-84.456518,40.987475]]]},"id":"39161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.394908,40.987475],[-81.0882,40.987475],[-81.0882,40.905321],[-81.0882,40.730059],[-81.121061,40.730059],[-81.318231,40.653382],[-81.42777,40.653382],[-81.652325,40.636951],[-81.652325,40.669813],[-81.646848,40.916275],[-81.394908,40.987475]]]},"id":"39151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.96632,40.976521],[-89.637704,40.976521],[-89.473395,40.921752],[-89.555549,40.74649],[-89.873212,40.510982],[-89.988228,40.713628],[-89.988228,40.976521],[-89.96632,40.976521]]]},"id":"17143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.118335,40.965568],[-75.195012,40.609566],[-75.331935,40.538366],[-75.611259,40.784829],[-75.474336,40.812213],[-75.118335,40.965568]]]},"id":"42095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.013732,40.856029],[-117.301729,40.527412],[-117.542715,40.001626],[-117.948008,40.001626],[-119.224135,40.001626],[-119.311766,40.960091],[-118.013732,40.856029]]]},"id":"32027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.208246,40.949137],[-75.994645,40.910798],[-75.759137,40.735536],[-75.890583,40.67529],[-76.438277,40.494551],[-76.536862,40.554797],[-76.70117,40.658859],[-76.378031,40.773875],[-76.208246,40.949137]]]},"id":"42107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.858168,40.927229],[-80.518598,40.899844],[-80.518598,40.850552],[-80.518598,40.636951],[-80.666475,40.582182],[-80.863645,40.598613],[-81.0882,40.730059],[-81.0882,40.905321],[-80.858168,40.927229]]]},"id":"39029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.111917,40.927229],[-89.046194,40.927229],[-88.931178,40.927229],[-88.931178,40.751967],[-89.270749,40.593136],[-89.50078,40.74649],[-89.555549,40.74649],[-89.473395,40.921752],[-89.111917,40.927229]]]},"id":"17203"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.49716,40.921752],[-73.42596,40.609566],[-73.754577,40.587659],[-73.76553,40.801259],[-73.49716,40.921752]]]},"id":"36059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.878242,40.921752],[-84.801565,40.921752],[-84.801565,40.730059],[-84.801565,40.571228],[-85.069935,40.565751],[-85.075412,40.916275],[-84.878242,40.921752]]]},"id":"18001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.98362,40.921752],[-111.737158,40.861506],[-111.638573,40.801259],[-111.550942,40.609566],[-111.594758,40.576705],[-111.594758,40.576705],[-112.175313,40.467166],[-112.262944,40.773875],[-111.98362,40.921752]]]},"id":"49035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.881439,40.921752],[-83.881439,40.81769],[-83.881439,40.642428],[-84.253871,40.686244],[-84.396272,40.686244],[-84.341502,40.861506],[-83.881439,40.921752]]]},"id":"39003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.108274,40.916275],[-85.075412,40.916275],[-85.069935,40.565751],[-85.201382,40.565751],[-85.22329,40.565751],[-85.447844,40.565751],[-85.447844,40.653382],[-85.338305,40.916275],[-85.108274,40.916275]]]},"id":"18179"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.918885,40.910798],[-73.918885,40.916275],[-73.781961,40.883413],[-73.787438,40.801259],[-73.814823,40.806736],[-73.913408,40.795782],[-73.924362,40.877937],[-73.935316,40.883413],[-73.918885,40.910798]]]},"id":"36005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.877326,40.910798],[-86.581571,40.910798],[-86.581571,40.735536],[-86.773264,40.560274],[-87.096403,40.560274],[-87.096403,40.735536],[-86.932095,40.910798],[-86.877326,40.910798]]]},"id":"18181"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.215086,40.910798],[-78.804316,40.905321],[-78.804316,40.724582],[-78.974101,40.395966],[-79.450595,40.527412],[-79.215086,40.910798]]]},"id":"42063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.581571,40.910798],[-86.466555,40.910798],[-86.1708,40.910798],[-86.165323,40.560274],[-86.373447,40.560274],[-86.581571,40.735536],[-86.581571,40.910798]]]},"id":"18017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.28584,40.894367],[-74.269409,40.899844],[-74.132485,40.81769],[-74.148916,40.784829],[-74.137962,40.67529],[-74.362517,40.735536],[-74.373471,40.741013],[-74.28584,40.894367]]]},"id":"34013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.519938,40.899844],[-95.383014,40.899844],[-95.37206,40.582182],[-95.7664,40.587659],[-95.832123,40.784829],[-95.815692,40.899844],[-95.519938,40.899844]]]},"id":"19071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.289906,40.899844],[-94.928428,40.899844],[-94.917474,40.576705],[-95.163936,40.576705],[-95.202275,40.576705],[-95.37206,40.582182],[-95.383014,40.899844],[-95.289906,40.899844]]]},"id":"19145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.118758,40.899844],[-91.718941,40.899844],[-91.718941,40.812213],[-91.718941,40.598613],[-91.833957,40.609566],[-91.943495,40.60409],[-92.179004,40.598613],[-92.179004,40.899844],[-92.118758,40.899844]]]},"id":"19177"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.857228,40.899844],[-94.468365,40.899844],[-94.473842,40.571228],[-94.632673,40.571228],[-94.917474,40.576705],[-94.928428,40.899844],[-94.857228,40.899844]]]},"id":"19173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.179004,40.899844],[-92.179004,40.598613],[-92.348789,40.598613],[-92.452851,40.593136],[-92.639067,40.593136],[-92.639067,40.899844],[-92.179004,40.899844]]]},"id":"19051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.358826,40.899844],[-94.013779,40.894367],[-94.013779,40.571228],[-94.232857,40.571228],[-94.287626,40.571228],[-94.473842,40.571228],[-94.468365,40.899844],[-94.358826,40.899844]]]},"id":"19159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.663255,40.899844],[-93.559193,40.899844],[-93.559193,40.582182],[-93.772794,40.576705],[-94.013779,40.571228],[-94.013779,40.894367],[-93.663255,40.899844]]]},"id":"19053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.639067,40.899844],[-92.639067,40.593136],[-92.715744,40.587659],[-92.748606,40.587659],[-93.09913,40.582182],[-93.09913,40.899844],[-92.639067,40.899844]]]},"id":"19007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.09913,40.899844],[-93.09913,40.582182],[-93.372977,40.582182],[-93.526331,40.582182],[-93.559193,40.582182],[-93.559193,40.899844],[-93.09913,40.899844]]]},"id":"19185"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.854525,40.88889],[-76.799755,40.883413],[-76.936679,40.636951],[-77.133849,40.686244],[-77.287203,40.691721],[-77.358403,40.806736],[-76.854525,40.88889]]]},"id":"42109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.924362,40.877937],[-73.913408,40.795782],[-73.9627,40.735536],[-74.022947,40.680767],[-74.022947,40.708151],[-73.984608,40.795782],[-73.935316,40.883413],[-73.924362,40.877937]]]},"id":"36061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.283489,40.856029],[-109.04798,40.653382],[-109.053457,40.220704],[-109.053457,39.662056],[-109.053457,39.497748],[-110.022876,39.459409],[-110.022876,39.470363],[-109.968106,39.804456],[-109.97906,40.812213],[-109.283489,40.856029]]]},"id":"49047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.255705,40.856029],[-80.15712,40.856029],[-80.146166,40.67529],[-80.359767,40.47812],[-80.398105,40.47812],[-80.518598,40.47812],[-80.518598,40.636951],[-80.518598,40.850552],[-80.255705,40.856029]]]},"id":"42007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.36388,40.845075],[-77.358403,40.806736],[-77.287203,40.691721],[-77.752743,40.379535],[-77.681543,40.730059],[-77.36388,40.845075]]]},"id":"42087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.148845,40.812213],[-110.000968,40.812213],[-109.97906,40.812213],[-109.968106,39.804456],[-110.855371,39.81541],[-110.893709,39.897564],[-110.904663,40.680767],[-110.148845,40.812213]]]},"id":"49013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.011993,40.823167],[-73.984608,40.795782],[-74.022947,40.708151],[-74.15987,40.642428],[-74.137962,40.67529],[-74.148916,40.784829],[-74.011993,40.823167]]]},"id":"34017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.574731,40.81769],[-83.514484,40.81769],[-83.421376,40.686244],[-83.415899,40.505505],[-83.519961,40.505505],[-83.881439,40.538366],[-83.881439,40.642428],[-83.881439,40.81769],[-83.574731,40.81769]]]},"id":"39065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.603925,40.812213],[-91.406755,40.812213],[-91.111001,40.697198],[-91.187678,40.636951],[-91.417709,40.379535],[-91.718941,40.598613],[-91.718941,40.812213],[-91.603925,40.812213]]]},"id":"19111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.814823,40.806736],[-73.787438,40.801259],[-73.76553,40.801259],[-73.754577,40.587659],[-73.940792,40.565751],[-73.951746,40.741013],[-73.9627,40.735536],[-73.913408,40.795782],[-73.814823,40.806736]]]},"id":"36081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.888303,40.790306],[-74.723995,40.719105],[-74.745903,40.423351],[-74.800672,40.417874],[-74.943073,40.341196],[-75.189535,40.593136],[-74.888303,40.790306]]]},"id":"34019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.611259,40.784829],[-75.331935,40.538366],[-75.48529,40.417874],[-75.490767,40.423351],[-75.529105,40.445258],[-75.890583,40.67529],[-75.759137,40.735536],[-75.611259,40.784829]]]},"id":"42077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.892369,40.784829],[-95.832123,40.784829],[-95.7664,40.587659],[-95.71163,40.521935],[-96.023816,40.521935],[-96.067632,40.521935],[-96.461971,40.521935],[-96.461971,40.784829],[-95.892369,40.784829]]]},"id":"31131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.718518,40.719105],[-74.461102,40.67529],[-74.461102,40.598613],[-74.619933,40.374058],[-74.745903,40.423351],[-74.723995,40.719105],[-74.718518,40.719105]]]},"id":"34035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.712101,40.757444],[-88.460161,40.615043],[-88.460161,40.401443],[-88.460161,40.28095],[-88.575177,40.28095],[-88.920224,40.28095],[-89.150256,40.28095],[-89.265272,40.324766],[-89.270749,40.593136],[-88.931178,40.751967],[-88.712101,40.757444]]]},"id":"17113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.327774,40.74649],[-102.053927,40.751967],[-102.053927,40.697198],[-102.053927,40.439781],[-102.426359,40.439781],[-102.667345,40.439781],[-102.650914,40.751967],[-102.327774,40.74649]]]},"id":"08095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.50078,40.74649],[-89.270749,40.593136],[-89.265272,40.324766],[-89.604842,40.319289],[-89.89512,40.434304],[-89.922504,40.434304],[-89.873212,40.510982],[-89.555549,40.74649],[-89.50078,40.74649]]]},"id":"17179"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.114221,40.741013],[-77.681543,40.730059],[-77.752743,40.379535],[-77.703451,40.264519],[-77.862282,40.061872],[-78.136129,40.165934],[-78.256622,40.297381],[-78.114221,40.741013]]]},"id":"42061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.360683,40.735536],[-78.114221,40.741013],[-78.256622,40.297381],[-78.6181,40.324766],[-78.349729,40.724582],[-78.360683,40.735536]]]},"id":"42013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.362517,40.735536],[-74.137962,40.67529],[-74.15987,40.642428],[-74.209163,40.593136],[-74.291317,40.593136],[-74.461102,40.598613],[-74.461102,40.67529],[-74.373471,40.741013],[-74.362517,40.735536]]]},"id":"34039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-73.951746,40.741013],[-73.940792,40.565751],[-74.022947,40.680767],[-73.9627,40.735536],[-73.951746,40.741013]]]},"id":"36047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.773264,40.560274],[-86.581571,40.735536],[-86.373447,40.560274],[-86.373447,40.434304],[-86.696587,40.434304],[-86.773264,40.560274]]]},"id":"18015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.326435,40.735536],[-87.266188,40.735536],[-87.096403,40.735536],[-87.096403,40.560274],[-87.096403,40.47812],[-87.452404,40.47812],[-87.529082,40.47812],[-87.529082,40.489074],[-87.523605,40.735536],[-87.326435,40.735536]]]},"id":"18007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.121061,40.730059],[-81.0882,40.730059],[-80.863645,40.598613],[-80.940322,40.423351],[-81.186785,40.434304],[-81.268939,40.434304],[-81.318231,40.653382],[-81.121061,40.730059]]]},"id":"39019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.774181,40.730059],[-84.456518,40.686244],[-84.43461,40.35215],[-84.43461,40.35215],[-84.456518,40.35215],[-84.801565,40.35215],[-84.801565,40.571228],[-84.801565,40.730059],[-84.774181,40.730059]]]},"id":"39107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.804316,40.724582],[-78.349729,40.724582],[-78.6181,40.324766],[-78.656438,40.242611],[-79.001485,40.286427],[-79.056255,40.286427],[-78.974101,40.395966],[-78.804316,40.724582]]]},"id":"42021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.442814,40.713628],[-89.988228,40.713628],[-89.873212,40.510982],[-89.922504,40.434304],[-90.201828,40.182365],[-90.448291,40.275473],[-90.442814,40.625997],[-90.442814,40.713628]]]},"id":"17057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.857251,40.713628],[-82.725805,40.713628],[-82.621743,40.54932],[-82.742236,40.346673],[-83.02156,40.434304],[-82.857251,40.702674],[-82.857251,40.713628]]]},"id":"39117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.977744,40.702674],[-82.857251,40.702674],[-83.02156,40.434304],[-83.246114,40.445258],[-83.273499,40.505505],[-83.415899,40.505505],[-83.421376,40.686244],[-83.109191,40.702674],[-82.977744,40.702674]]]},"id":"39101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.449184,40.702674],[-100.224629,40.702674],[-99.983644,40.697198],[-100.093183,40.35215],[-100.197245,40.35215],[-100.383461,40.35215],[-100.755893,40.35215],[-100.7778,40.35215],[-100.7778,40.702674],[-100.449184,40.702674]]]},"id":"31063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.7778,40.702674],[-100.7778,40.35215],[-101.111894,40.35215],[-101.325494,40.35215],[-101.325494,40.35215],[-101.341925,40.35215],[-101.347402,40.697198],[-101.248817,40.697198],[-100.7778,40.702674]]]},"id":"31085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.571957,40.697198],[-101.347402,40.697198],[-101.341925,40.35215],[-102.053927,40.346673],[-102.053927,40.439781],[-102.053927,40.697198],[-101.571957,40.697198]]]},"id":"31029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.983644,40.697198],[-99.644074,40.686244],[-99.644074,40.35215],[-99.989121,40.35215],[-100.093183,40.35215],[-99.983644,40.697198]]]},"id":"31073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.723948,40.697198],[-98.280315,40.697198],[-98.280315,40.697198],[-98.280315,40.35215],[-98.291269,40.35215],[-98.723948,40.35215],[-98.723948,40.691721],[-98.723948,40.697198]]]},"id":"31001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.798345,40.697198],[-97.365666,40.697198],[-97.365666,40.35215],[-97.50259,40.35215],[-97.820252,40.35215],[-97.825729,40.35215],[-97.825729,40.697198],[-97.798345,40.697198]]]},"id":"31059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.825729,40.697198],[-97.825729,40.35215],[-98.011945,40.35215],[-98.274839,40.35215],[-98.280315,40.35215],[-98.280315,40.697198],[-97.825729,40.697198],[-97.825729,40.697198]]]},"id":"31035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.365666,40.697198],[-96.91108,40.697198],[-96.91108,40.521935],[-96.916557,40.35215],[-97.365666,40.35215],[-97.365666,40.697198]]]},"id":"31151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.133849,40.686244],[-76.936679,40.636951],[-76.947633,40.625997],[-77.670589,40.291904],[-77.703451,40.264519],[-77.752743,40.379535],[-77.287203,40.691721],[-77.133849,40.686244]]]},"id":"42067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.430449,40.686244],[-110.904663,40.680767],[-110.893709,39.897564],[-111.594758,40.576705],[-111.550942,40.609566],[-111.430449,40.686244]]]},"id":"49051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.953979,40.653382],[-98.723948,40.691721],[-98.723948,40.35215],[-98.729425,40.35215],[-99.11281,40.35215],[-99.178534,40.35215],[-99.178534,40.658859],[-98.953979,40.653382]]]},"id":"31099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.644074,40.686244],[-99.419519,40.669813],[-99.178534,40.658859],[-99.178534,40.35215],[-99.63312,40.35215],[-99.644074,40.35215],[-99.644074,40.686244]]]},"id":"31137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.253871,40.686244],[-83.881439,40.642428],[-83.881439,40.538366],[-84.001932,40.483597],[-84.105994,40.483597],[-84.43461,40.35215],[-84.456518,40.686244],[-84.396272,40.686244],[-84.253871,40.686244]]]},"id":"39011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.538226,40.54932],[-79.450595,40.527412],[-78.974101,40.395966],[-79.056255,40.286427],[-79.291763,40.039965],[-79.499887,40.13855],[-79.877796,40.127596],[-79.872319,40.198796],[-79.69158,40.669813],[-79.538226,40.54932]]]},"id":"42129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.890583,40.67529],[-75.529105,40.445258],[-75.69889,40.242611],[-75.874152,40.13855],[-76.153476,40.313812],[-76.438277,40.494551],[-75.890583,40.67529]]]},"id":"42011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.146166,40.67529],[-79.69158,40.669813],[-79.69158,40.669813],[-79.872319,40.198796],[-80.359767,40.47812],[-80.146166,40.67529]]]},"id":"42003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.657801,40.669813],[-81.652325,40.669813],[-81.652325,40.636951],[-81.707094,40.445258],[-82.183588,40.456212],[-82.221926,40.565751],[-82.128818,40.669813],[-81.657801,40.669813]]]},"id":"39075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.42777,40.653382],[-81.318231,40.653382],[-81.268939,40.434304],[-81.340139,40.215227],[-81.62494,40.220704],[-81.707094,40.445258],[-81.652325,40.636951],[-81.42777,40.653382]]]},"id":"39157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.536862,40.554797],[-76.564247,40.198796],[-76.723078,40.122119],[-76.860002,40.226181],[-76.914771,40.330243],[-76.95311,40.60409],[-76.947633,40.625997],[-76.70117,40.658859],[-76.536862,40.554797]]]},"id":"42043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.447844,40.653382],[-85.447844,40.565751],[-85.442367,40.379535],[-85.513567,40.379535],[-85.579291,40.379535],[-85.672399,40.379535],[-85.864092,40.379535],[-85.864092,40.40692],[-85.864092,40.565751],[-85.864092,40.653382],[-85.639537,40.653382],[-85.447844,40.653382]]]},"id":"18053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.187678,40.636951],[-90.902877,40.636951],[-90.908354,40.286427],[-90.913831,40.193319],[-91.204109,40.198796],[-91.50534,40.198796],[-91.499863,40.248088],[-91.417709,40.379535],[-91.187678,40.636951]]]},"id":"17067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.8974,40.636951],[-90.787861,40.636951],[-90.442814,40.625997],[-90.448291,40.275473],[-90.908354,40.286427],[-90.902877,40.636951],[-90.8974,40.636951]]]},"id":"17109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.518598,40.636951],[-80.518598,40.47812],[-80.518598,40.401443],[-80.633614,40.395966],[-80.666475,40.582182],[-80.518598,40.636951]]]},"id":"54029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.95311,40.60409],[-76.914771,40.330243],[-77.122895,40.297381],[-77.615819,40.198796],[-77.670589,40.291904],[-76.947633,40.625997],[-76.95311,40.60409]]]},"id":"42099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.833957,40.609566],[-91.718941,40.598613],[-91.417709,40.379535],[-91.499863,40.248088],[-91.948972,40.259042],[-91.948972,40.302858],[-91.943495,40.60409],[-91.833957,40.609566]]]},"id":"29045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.291317,40.593136],[-74.209163,40.593136],[-74.225593,40.450735],[-74.48301,40.253565],[-74.619933,40.374058],[-74.461102,40.598613],[-74.291317,40.593136]]]},"id":"34023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.195012,40.609566],[-75.189535,40.593136],[-74.943073,40.341196],[-74.723995,40.149503],[-74.975934,40.050919],[-75.014273,40.13855],[-75.48529,40.417874],[-75.331935,40.538366],[-75.195012,40.609566]]]},"id":"42017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.943495,40.60409],[-91.948972,40.302858],[-92.140665,40.302858],[-92.348789,40.302858],[-92.348789,40.346673],[-92.348789,40.598613],[-92.179004,40.598613],[-91.943495,40.60409]]]},"id":"29199"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.863645,40.598613],[-80.666475,40.582182],[-80.633614,40.395966],[-80.682906,40.187842],[-80.704814,40.15498],[-80.885553,40.160457],[-80.940322,40.423351],[-80.863645,40.598613]]]},"id":"39081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.452851,40.593136],[-92.348789,40.598613],[-92.348789,40.346673],[-92.682882,40.341196],[-92.715744,40.587659],[-92.639067,40.593136],[-92.452851,40.593136]]]},"id":"29197"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.748606,40.587659],[-92.715744,40.587659],[-92.682882,40.341196],[-92.858145,40.341196],[-93.186761,40.385012],[-93.3675,40.385012],[-93.372977,40.582182],[-93.09913,40.582182],[-92.748606,40.587659]]]},"id":"29171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.7664,40.587659],[-95.37206,40.582182],[-95.202275,40.576705],[-95.180367,40.264519],[-95.503507,40.264519],[-95.552799,40.264519],[-95.71163,40.521935],[-95.7664,40.587659]]]},"id":"29005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.526331,40.582182],[-93.372977,40.582182],[-93.3675,40.385012],[-93.3675,40.264519],[-93.76184,40.264519],[-93.772794,40.576705],[-93.559193,40.582182],[-93.526331,40.582182]]]},"id":"29129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.163936,40.576705],[-94.917474,40.576705],[-94.632673,40.571228],[-94.599812,40.385012],[-94.605288,40.127596],[-95.043444,40.127596],[-95.180367,40.264519],[-95.202275,40.576705],[-95.163936,40.576705]]]},"id":"29147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.594758,40.576705],[-111.594758,40.576705],[-110.893709,39.897564],[-110.855371,39.81541],[-111.014202,39.81541],[-111.24971,39.81541],[-111.556419,39.81541],[-111.64405,39.81541],[-112.18079,40.01258],[-112.175313,40.467166],[-111.594758,40.576705]]]},"id":"49049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.772794,40.576705],[-93.76184,40.264519],[-93.76184,40.133073],[-94.216426,40.13855],[-94.216426,40.385012],[-94.232857,40.571228],[-94.013779,40.571228],[-93.772794,40.576705]]]},"id":"29081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.221926,40.565751],[-82.183588,40.456212],[-82.194542,40.237135],[-82.75319,40.275473],[-82.742236,40.346673],[-82.621743,40.54932],[-82.336942,40.554797],[-82.221926,40.565751]]]},"id":"39083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.801565,40.571228],[-84.801565,40.35215],[-84.801565,40.308335],[-84.807042,40.308335],[-85.217813,40.308335],[-85.217813,40.379535],[-85.201382,40.565751],[-85.069935,40.565751],[-84.801565,40.571228]]]},"id":"18075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.287626,40.571228],[-94.232857,40.571228],[-94.216426,40.385012],[-94.325965,40.385012],[-94.599812,40.385012],[-94.632673,40.571228],[-94.473842,40.571228],[-94.287626,40.571228]]]},"id":"29227"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.22329,40.565751],[-85.201382,40.565751],[-85.217813,40.379535],[-85.442367,40.379535],[-85.447844,40.565751],[-85.22329,40.565751]]]},"id":"18009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.875046,40.565751],[-85.864092,40.565751],[-85.864092,40.40692],[-86.242001,40.374058],[-86.357016,40.434304],[-86.373447,40.434304],[-86.373447,40.560274],[-86.165323,40.560274],[-85.875046,40.565751]]]},"id":"18067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.096403,40.560274],[-86.773264,40.560274],[-86.696587,40.434304],[-86.696587,40.215227],[-86.921141,40.215227],[-87.090926,40.215227],[-87.090926,40.368581],[-87.096403,40.47812],[-87.096403,40.560274]]]},"id":"18157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.023816,40.521935],[-95.71163,40.521935],[-95.552799,40.264519],[-95.552799,40.264519],[-95.673292,40.264519],[-96.012862,40.259042],[-96.067632,40.264519],[-96.067632,40.521935],[-96.023816,40.521935]]]},"id":"31127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.536862,40.554797],[-76.438277,40.494551],[-76.153476,40.313812],[-76.306831,40.253565],[-76.564247,40.198796],[-76.536862,40.554797]]]},"id":"42075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.881439,40.538366],[-83.519961,40.505505],[-83.552823,40.231658],[-83.881439,40.264519],[-84.012886,40.275473],[-84.001932,40.483597],[-83.881439,40.538366]]]},"id":"39091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.091349,40.521935],[-103.581994,40.521935],[-103.466978,40.434304],[-103.707963,40.001626],[-103.795594,40.001626],[-104.151596,40.001626],[-104.091349,40.521935]]]},"id":"08087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.478402,40.521935],[-96.461971,40.521935],[-96.461971,40.264519],[-96.461971,40.001626],[-96.692003,40.001626],[-96.807019,40.001626],[-96.916557,40.001626],[-96.916557,40.35215],[-96.91108,40.521935],[-96.478402,40.521935]]]},"id":"31067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.067632,40.521935],[-96.067632,40.264519],[-96.325048,40.264519],[-96.461971,40.264519],[-96.461971,40.521935],[-96.067632,40.521935]]]},"id":"31097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.273499,40.505505],[-83.246114,40.445258],[-83.169437,40.144027],[-83.207776,40.105688],[-83.50353,40.111165],[-83.552823,40.231658],[-83.519961,40.505505],[-83.415899,40.505505],[-83.273499,40.505505]]]},"id":"39159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.841267,40.489074],[-87.529082,40.489074],[-87.529082,40.47812],[-87.529082,40.149503],[-87.534558,39.881133],[-87.939852,39.881133],[-87.934375,40.401443],[-87.934375,40.483597],[-87.841267,40.489074]]]},"id":"17183"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.854924,40.483597],[-105.652277,40.259042],[-105.674185,39.930426],[-105.690616,39.853749],[-105.926124,39.700394],[-106.43548,39.924949],[-106.627173,39.924949],[-106.654557,40.445258],[-105.854924,40.483597]]]},"id":"08049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.105994,40.483597],[-84.001932,40.483597],[-84.012886,40.275473],[-84.02384,40.182365],[-84.22101,40.198796],[-84.43461,40.198796],[-84.43461,40.35215],[-84.43461,40.35215],[-84.105994,40.483597]]]},"id":"39149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.398105,40.47812],[-80.359767,40.47812],[-79.872319,40.198796],[-79.877796,40.127596],[-79.998289,39.985195],[-80.064012,40.007103],[-80.518598,39.963288],[-80.518598,40.018057],[-80.518598,40.160457],[-80.518598,40.401443],[-80.518598,40.47812],[-80.398105,40.47812]]]},"id":"42125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.452404,40.47812],[-87.096403,40.47812],[-87.090926,40.368581],[-87.255235,40.297381],[-87.408589,40.127596],[-87.529082,40.149503],[-87.529082,40.47812],[-87.452404,40.47812]]]},"id":"18171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.0339,40.100211],[-74.406332,40.171411],[-74.55421,40.078303],[-74.587071,40.13855],[-74.48301,40.253565],[-74.225593,40.450735],[-74.0339,40.100211]]]},"id":"34025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.183588,40.456212],[-81.707094,40.445258],[-81.62494,40.220704],[-81.652325,40.220704],[-81.718048,40.149503],[-82.189065,40.165934],[-82.194542,40.237135],[-82.183588,40.456212]]]},"id":"39031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.497066,40.445258],[-121.436819,40.149503],[-121.584697,40.100211],[-122.04476,39.798979],[-122.937501,39.798979],[-122.932024,39.979718],[-123.063471,40.286427],[-121.497066,40.445258]]]},"id":"06103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.119157,40.445258],[-120.209985,40.08378],[-120.149738,39.705871],[-121.009618,39.640148],[-121.075341,39.596333],[-121.436819,40.149503],[-121.497066,40.445258],[-121.327281,40.445258],[-121.119157,40.445258]]]},"id":"06063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.490767,40.423351],[-75.48529,40.417874],[-75.014273,40.13855],[-75.025227,40.133073],[-75.277166,39.974241],[-75.353843,40.056395],[-75.35932,40.067349],[-75.676983,40.242611],[-75.69889,40.242611],[-75.529105,40.445258],[-75.490767,40.423351]]]},"id":"42091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.246114,40.445258],[-83.02156,40.434304],[-82.742236,40.346673],[-82.75319,40.275473],[-82.764143,40.127596],[-83.03799,40.13855],[-83.169437,40.144027],[-83.246114,40.445258]]]},"id":"39041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.426359,40.439781],[-102.053927,40.439781],[-102.053927,40.346673],[-102.053927,40.001626],[-102.04845,39.574425],[-102.426359,39.568948],[-102.804268,39.568948],[-102.78236,40.439781],[-102.667345,40.439781],[-102.426359,40.439781]]]},"id":"08125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.78236,40.439781],[-102.804268,39.568948],[-103.154792,39.563471],[-103.707963,39.568948],[-103.707963,39.738733],[-103.707963,40.001626],[-103.466978,40.434304],[-102.78236,40.439781]]]},"id":"08121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.89512,40.434304],[-89.604842,40.319289],[-89.599365,40.122119],[-89.670565,40.160457],[-89.993705,40.105688],[-90.355183,40.122119],[-90.201828,40.182365],[-89.922504,40.434304],[-89.89512,40.434304]]]},"id":"17125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.186785,40.434304],[-80.940322,40.423351],[-80.885553,40.160457],[-81.219646,40.171411],[-81.225123,40.171411],[-81.340139,40.215227],[-81.268939,40.434304],[-81.186785,40.434304]]]},"id":"39067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.357016,40.434304],[-86.242001,40.374058],[-86.242001,40.215227],[-86.242001,40.182365],[-86.696587,40.176888],[-86.696587,40.215227],[-86.696587,40.434304],[-86.373447,40.434304],[-86.357016,40.434304]]]},"id":"18023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.800672,40.417874],[-74.745903,40.423351],[-74.619933,40.374058],[-74.48301,40.253565],[-74.587071,40.13855],[-74.702087,40.182365],[-74.723995,40.149503],[-74.943073,40.341196],[-74.800672,40.417874]]]},"id":"34021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.864092,40.40692],[-85.864092,40.379535],[-85.864092,40.220704],[-85.875046,40.220704],[-86.242001,40.215227],[-86.242001,40.374058],[-85.864092,40.40692]]]},"id":"18159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.109637,40.401443],[-87.934375,40.401443],[-87.939852,39.881133],[-88.126068,39.881133],[-88.460161,39.881133],[-88.460161,40.28095],[-88.460161,40.401443],[-88.109637,40.401443]]]},"id":"17019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.518598,40.401443],[-80.518598,40.160457],[-80.682906,40.187842],[-80.633614,40.395966],[-80.518598,40.401443]]]},"id":"54009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.325965,40.385012],[-94.216426,40.385012],[-94.216426,40.13855],[-94.216426,40.034488],[-94.577904,40.039965],[-94.605288,40.039965],[-94.605288,40.127596],[-94.599812,40.385012],[-94.325965,40.385012]]]},"id":"29075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.186761,40.385012],[-92.858145,40.341196],[-92.858145,40.039965],[-93.362023,40.034488],[-93.3675,40.264519],[-93.3675,40.385012],[-93.186761,40.385012]]]},"id":"29211"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.672399,40.379535],[-85.579291,40.379535],[-85.573814,40.078303],[-85.573814,39.946857],[-85.617629,39.946857],[-85.864092,39.94138],[-85.864092,40.220704],[-85.864092,40.379535],[-85.672399,40.379535]]]},"id":"18095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.513567,40.379535],[-85.442367,40.379535],[-85.217813,40.379535],[-85.217813,40.308335],[-85.212336,40.078303],[-85.327352,40.078303],[-85.573814,40.078303],[-85.579291,40.379535],[-85.513567,40.379535]]]},"id":"18035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.255235,40.297381],[-87.090926,40.368581],[-87.090926,40.215227],[-87.090926,39.952334],[-87.205942,39.952334],[-87.419543,39.952334],[-87.408589,40.127596],[-87.255235,40.297381]]]},"id":"18045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.456518,40.35215],[-84.43461,40.35215],[-84.43461,40.198796],[-84.423656,39.919472],[-84.483903,39.919472],[-84.812519,39.919472],[-84.812519,40.007103],[-84.801565,40.308335],[-84.801565,40.35215],[-84.456518,40.35215]]]},"id":"39037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.383461,40.35215],[-100.197245,40.35215],[-100.191768,40.001626],[-100.739462,40.001626],[-100.761369,40.001626],[-100.755893,40.35215],[-100.383461,40.35215]]]},"id":"31145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.989121,40.35215],[-99.644074,40.35215],[-99.63312,40.35215],[-99.627643,40.001626],[-100.175337,40.001626],[-100.191768,40.001626],[-100.197245,40.35215],[-100.093183,40.35215],[-99.989121,40.35215]]]},"id":"31065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.63312,40.35215],[-99.178534,40.35215],[-99.178534,40.001626],[-99.627643,40.001626],[-99.627643,40.001626],[-99.63312,40.35215]]]},"id":"31083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.111894,40.35215],[-100.7778,40.35215],[-100.755893,40.35215],[-100.761369,40.001626],[-101.325494,40.001626],[-101.325494,40.35215],[-101.111894,40.35215]]]},"id":"31087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.011945,40.35215],[-97.825729,40.35215],[-97.820252,40.35215],[-97.820252,40.001626],[-97.875022,40.001626],[-97.929791,40.001626],[-98.269362,40.001626],[-98.274839,40.001626],[-98.274839,40.35215],[-98.011945,40.35215]]]},"id":"31129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.11281,40.35215],[-98.729425,40.35215],[-98.723948,40.001626],[-99.068995,40.001626],[-99.123764,40.001626],[-99.178534,40.001626],[-99.178534,40.35215],[-99.11281,40.35215]]]},"id":"31061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.50259,40.35215],[-97.365666,40.35215],[-97.371143,40.001626],[-97.820252,40.001626],[-97.820252,40.35215],[-97.50259,40.35215]]]},"id":"31169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.291269,40.35215],[-98.280315,40.35215],[-98.274839,40.35215],[-98.274839,40.001626],[-98.50487,40.001626],[-98.691086,40.001626],[-98.723948,40.001626],[-98.729425,40.35215],[-98.723948,40.35215],[-98.291269,40.35215]]]},"id":"31181"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.325494,40.35215],[-101.325494,40.35215],[-101.325494,40.001626],[-101.413125,40.001626],[-101.90605,40.001626],[-102.053927,40.001626],[-102.053927,40.346673],[-101.341925,40.35215],[-101.325494,40.35215]]]},"id":"31057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.365666,40.35215],[-96.916557,40.35215],[-96.916557,40.001626],[-97.349236,40.001626],[-97.371143,40.001626],[-97.365666,40.35215]]]},"id":"31095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.348789,40.346673],[-92.348789,40.302858],[-92.343312,40.039965],[-92.677405,40.039965],[-92.847191,40.039965],[-92.858145,40.039965],[-92.858145,40.341196],[-92.682882,40.341196],[-92.348789,40.346673]]]},"id":"29001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.122895,40.297381],[-76.914771,40.330243],[-76.860002,40.226181],[-76.903817,40.220704],[-77.139326,40.067349],[-77.473419,39.946857],[-77.615819,40.198796],[-77.122895,40.297381]]]},"id":"42041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.6181,40.324766],[-78.256622,40.297381],[-78.136129,40.165934],[-78.382591,39.722302],[-78.809792,39.722302],[-78.656438,40.242611],[-78.6181,40.324766]]]},"id":"42009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.265272,40.324766],[-89.150256,40.28095],[-89.144779,40.050919],[-89.215979,39.919472],[-89.489826,39.974241],[-89.577457,39.974241],[-89.599365,40.122119],[-89.604842,40.319289],[-89.265272,40.324766]]]},"id":"17107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.306831,40.253565],[-76.153476,40.313812],[-75.874152,40.13855],[-76.137046,39.722302],[-76.235631,39.722302],[-76.241107,39.722302],[-76.723078,40.122119],[-76.564247,40.198796],[-76.306831,40.253565]]]},"id":"42071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.807042,40.308335],[-84.801565,40.308335],[-84.812519,40.007103],[-84.856335,40.007103],[-85.201382,40.007103],[-85.212336,40.078303],[-85.217813,40.308335],[-84.807042,40.308335]]]},"id":"18135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.140665,40.302858],[-91.948972,40.302858],[-91.948972,40.259042],[-91.954449,39.946857],[-91.998265,39.952334],[-92.288543,39.952334],[-92.343312,40.039965],[-92.348789,40.302858],[-92.140665,40.302858]]]},"id":"29103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.670589,40.291904],[-77.615819,40.198796],[-77.473419,39.946857],[-77.456988,39.722302],[-77.467942,39.722302],[-78.09779,39.722302],[-77.862282,40.061872],[-77.703451,40.264519],[-77.670589,40.291904]]]},"id":"42055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.001485,40.286427],[-78.656438,40.242611],[-78.809792,39.722302],[-78.930285,39.722302],[-79.390348,39.722302],[-79.291763,40.039965],[-79.056255,40.286427],[-79.001485,40.286427]]]},"id":"42111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.908354,40.286427],[-90.448291,40.275473],[-90.201828,40.182365],[-90.355183,40.122119],[-90.514014,39.985195],[-90.913831,40.105688],[-90.913831,40.193319],[-90.908354,40.286427]]]},"id":"17169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.920224,40.28095],[-88.575177,40.28095],[-88.744962,40.056395],[-88.805209,40.056395],[-89.144779,40.050919],[-89.150256,40.28095],[-88.920224,40.28095]]]},"id":"17039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.575177,40.28095],[-88.460161,40.28095],[-88.460161,39.881133],[-88.471115,39.793502],[-88.744962,39.793502],[-88.744962,40.056395],[-88.575177,40.28095]]]},"id":"17147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.75319,40.275473],[-82.194542,40.237135],[-82.189065,40.165934],[-82.23288,39.913995],[-82.462912,39.930426],[-82.780574,39.94138],[-82.764143,40.127596],[-82.75319,40.275473]]]},"id":"39089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.881439,40.264519],[-83.552823,40.231658],[-83.50353,40.111165],[-83.514484,40.01258],[-84.034794,40.039965],[-84.02384,40.182365],[-84.012886,40.275473],[-83.881439,40.264519]]]},"id":"39021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.3675,40.264519],[-93.362023,40.034488],[-93.362023,39.968764],[-93.76184,39.957811],[-93.76184,40.133073],[-93.76184,40.264519],[-93.3675,40.264519]]]},"id":"29079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.503507,40.264519],[-95.180367,40.264519],[-95.043444,40.127596],[-94.994151,39.897564],[-95.306337,40.001626],[-95.552799,40.264519],[-95.552799,40.264519],[-95.503507,40.264519]]]},"id":"29087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.340092,40.259042],[-105.055291,40.264519],[-105.055291,40.001626],[-105.055291,39.913995],[-105.055291,39.913995],[-105.400338,39.913995],[-105.674185,39.930426],[-105.652277,40.259042],[-105.340092,40.259042]]]},"id":"08013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.325048,40.264519],[-96.067632,40.264519],[-96.012862,40.259042],[-96.012862,40.001626],[-96.237417,40.001626],[-96.237417,40.001626],[-96.461971,40.001626],[-96.461971,40.264519],[-96.325048,40.264519]]]},"id":"31133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.673292,40.264519],[-95.552799,40.264519],[-95.306337,40.001626],[-95.339199,40.001626],[-95.788308,40.001626],[-96.012862,40.001626],[-96.012862,40.259042],[-95.673292,40.264519]]]},"id":"31147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.948972,40.259042],[-91.499863,40.248088],[-91.50534,40.198796],[-91.43414,39.946857],[-91.784664,39.946857],[-91.839434,39.946857],[-91.954449,39.946857],[-91.948972,40.259042]]]},"id":"29111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.676983,40.242611],[-75.35932,40.067349],[-75.594828,39.837318],[-75.786521,39.722302],[-75.808429,39.722302],[-76.137046,39.722302],[-75.874152,40.13855],[-75.69889,40.242611],[-75.676983,40.242611]]]},"id":"42029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.903817,40.220704],[-76.860002,40.226181],[-76.723078,40.122119],[-76.241107,39.722302],[-76.569724,39.722302],[-76.70117,39.722302],[-76.788801,39.722302],[-76.996925,39.722302],[-77.139326,40.067349],[-76.903817,40.220704]]]},"id":"42133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.109143,40.226181],[-107.037943,40.089257],[-107.936161,39.694917],[-109.053457,39.662056],[-109.053457,40.220704],[-107.43776,40.220704],[-107.109143,40.226181]]]},"id":"08103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.652325,40.220704],[-81.62494,40.220704],[-81.340139,40.215227],[-81.225123,40.171411],[-81.236077,39.952334],[-81.471585,39.892087],[-81.69614,39.842795],[-81.718048,40.149503],[-81.652325,40.220704]]]},"id":"39059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.875046,40.220704],[-85.864092,40.220704],[-85.864092,39.94138],[-85.935292,39.924949],[-86.110554,39.924949],[-86.242001,39.924949],[-86.242001,40.182365],[-86.242001,40.215227],[-85.875046,40.220704]]]},"id":"18057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.921141,40.215227],[-86.696587,40.215227],[-86.696587,40.176888],[-86.696587,39.924949],[-86.696587,39.864703],[-87.008772,39.864703],[-87.090926,39.952334],[-87.090926,40.215227],[-86.921141,40.215227]]]},"id":"18107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.204109,40.198796],[-90.913831,40.193319],[-90.913831,40.105688],[-90.919308,39.842795],[-91.36294,39.760641],[-91.43414,39.946857],[-91.50534,40.198796],[-91.204109,40.198796]]]},"id":"17001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.22101,40.198796],[-84.02384,40.182365],[-84.034794,40.039965],[-84.051224,39.881133],[-84.155286,39.924949],[-84.423656,39.919472],[-84.43461,40.198796],[-84.22101,40.198796]]]},"id":"39109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.682906,40.187842],[-80.518598,40.160457],[-80.518598,40.018057],[-80.726722,40.034488],[-80.732199,40.034488],[-80.704814,40.15498],[-80.682906,40.187842]]]},"id":"54069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.702087,40.182365],[-74.587071,40.13855],[-74.55421,40.078303],[-74.417286,39.557994],[-74.734949,39.727779],[-75.030704,39.990672],[-75.058088,39.990672],[-74.975934,40.050919],[-74.723995,40.149503],[-74.702087,40.182365]]]},"id":"34005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.242001,40.182365],[-86.242001,39.924949],[-86.324155,39.924949],[-86.433693,39.924949],[-86.696587,39.924949],[-86.696587,40.176888],[-86.242001,40.182365]]]},"id":"18011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.219646,40.171411],[-80.885553,40.160457],[-80.704814,40.15498],[-80.732199,40.034488],[-80.81983,39.848272],[-81.236077,39.87018],[-81.236077,39.952334],[-81.225123,40.171411],[-81.219646,40.171411]]]},"id":"39013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.406332,40.171411],[-74.0339,40.100211],[-74.313224,39.497748],[-74.417286,39.557994],[-74.55421,40.078303],[-74.406332,40.171411]]]},"id":"34029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.189065,40.165934],[-81.718048,40.149503],[-81.69614,39.842795],[-81.69614,39.755164],[-82.074049,39.771595],[-82.23288,39.913995],[-82.189065,40.165934]]]},"id":"39119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.136129,40.165934],[-77.862282,40.061872],[-78.09779,39.722302],[-78.284006,39.722302],[-78.344253,39.722302],[-78.382591,39.722302],[-78.136129,40.165934]]]},"id":"42057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.670565,40.160457],[-89.599365,40.122119],[-89.577457,39.974241],[-89.993705,39.903041],[-89.993705,40.105688],[-89.670565,40.160457]]]},"id":"17129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.584697,40.100211],[-121.436819,40.149503],[-121.075341,39.596333],[-121.623035,39.295101],[-121.907836,39.306055],[-121.891405,39.382732],[-122.04476,39.798979],[-121.584697,40.100211]]]},"id":"06007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.408589,40.127596],[-87.419543,39.952334],[-87.381204,39.607286],[-87.534558,39.607286],[-87.534558,39.881133],[-87.529082,40.149503],[-87.408589,40.127596]]]},"id":"18165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.499887,40.13855],[-79.291763,40.039965],[-79.390348,39.722302],[-79.477979,39.722302],[-79.609426,39.722302],[-79.76278,39.722302],[-79.916134,39.722302],[-79.998289,39.985195],[-79.877796,40.127596],[-79.499887,40.13855]]]},"id":"42051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.03799,40.13855],[-82.764143,40.127596],[-82.780574,39.94138],[-82.797005,39.94138],[-82.82439,39.793502],[-83.246114,39.81541],[-83.207776,40.105688],[-83.169437,40.144027],[-83.03799,40.13855]]]},"id":"39049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.025227,40.133073],[-75.014273,40.13855],[-74.975934,40.050919],[-75.058088,39.990672],[-75.140242,39.88661],[-75.211443,39.864703],[-75.277166,39.974241],[-75.025227,40.133073]]]},"id":"42101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.216426,40.13855],[-93.76184,40.133073],[-93.76184,39.957811],[-93.756363,39.782548],[-93.871378,39.788025],[-94.205472,39.788025],[-94.216426,40.034488],[-94.216426,40.13855]]]},"id":"29061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.043444,40.127596],[-94.605288,40.127596],[-94.605288,40.039965],[-94.605288,39.820887],[-94.769597,39.820887],[-94.879136,39.820887],[-94.994151,39.897564],[-95.043444,40.127596]]]},"id":"29003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.048427,40.116642],[-114.048427,39.908518],[-114.048427,39.541563],[-114.048427,38.676207],[-114.70566,38.676207],[-115.001414,38.676207],[-115.90511,39.163654],[-115.833909,40.127596],[-114.048427,40.116642]]]},"id":"32033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.355183,40.122119],[-89.993705,40.105688],[-89.993705,39.903041],[-89.993705,39.87018],[-90.585214,39.875656],[-90.514014,39.985195],[-90.355183,40.122119]]]},"id":"17017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.50353,40.111165],[-83.207776,40.105688],[-83.246114,39.81541],[-83.246114,39.809933],[-83.251591,39.694917],[-83.651408,39.716825],[-83.645931,39.771595],[-83.514484,40.01258],[-83.50353,40.111165]]]},"id":"39097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.913831,40.105688],[-90.514014,39.985195],[-90.585214,39.875656],[-90.57426,39.837318],[-90.919308,39.842795],[-90.913831,40.105688]]]},"id":"17009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.037943,40.089257],[-107.032466,39.919472],[-107.11462,39.366301],[-107.432283,39.366301],[-108.774133,39.366301],[-109.053457,39.366301],[-109.053457,39.497748],[-109.053457,39.662056],[-107.936161,39.694917],[-107.037943,40.089257]]]},"id":"08045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.327352,40.078303],[-85.212336,40.078303],[-85.201382,40.007103],[-85.22329,39.788025],[-85.299967,39.788025],[-85.321875,39.788025],[-85.595722,39.788025],[-85.573814,39.946857],[-85.573814,40.078303],[-85.327352,40.078303]]]},"id":"18065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.139326,40.067349],[-76.996925,39.722302],[-77.216003,39.722302],[-77.456988,39.722302],[-77.473419,39.946857],[-77.139326,40.067349]]]},"id":"42001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.353843,40.056395],[-75.277166,39.974241],[-75.211443,39.864703],[-75.414089,39.804456],[-75.578398,39.837318],[-75.594828,39.837318],[-75.594828,39.837318],[-75.35932,40.067349],[-75.353843,40.056395]]]},"id":"42045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.805209,40.056395],[-88.744962,40.056395],[-88.744962,39.793502],[-88.761393,39.793502],[-88.810686,39.651102],[-89.024286,39.656579],[-89.215979,39.81541],[-89.215979,39.919472],[-89.144779,40.050919],[-88.805209,40.056395]]]},"id":"17115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.034794,40.039965],[-83.514484,40.01258],[-83.645931,39.771595],[-84.029317,39.848272],[-84.051224,39.848272],[-84.051224,39.881133],[-84.034794,40.039965]]]},"id":"39023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.577904,40.039965],[-94.216426,40.034488],[-94.205472,39.788025],[-94.205472,39.74421],[-94.506704,39.749687],[-94.599812,39.749687],[-94.605288,39.820887],[-94.605288,40.039965],[-94.577904,40.039965]]]},"id":"29063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.677405,40.039965],[-92.343312,40.039965],[-92.288543,39.952334],[-92.299497,39.607286],[-92.299497,39.607286],[-92.693836,39.612763],[-92.858145,39.700394],[-92.847191,40.039965],[-92.677405,40.039965]]]},"id":"29121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.858145,40.039965],[-92.847191,40.039965],[-92.858145,39.700394],[-93.04436,39.705871],[-93.268915,39.705871],[-93.362023,39.968764],[-93.362023,40.034488],[-92.858145,40.039965]]]},"id":"29115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.726722,40.034488],[-80.518598,40.018057],[-80.518598,39.963288],[-80.518598,39.722302],[-80.830783,39.722302],[-80.81983,39.848272],[-80.732199,40.034488],[-80.726722,40.034488]]]},"id":"54051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.064012,40.007103],[-79.998289,39.985195],[-79.916134,39.722302],[-80.420013,39.722302],[-80.518598,39.722302],[-80.518598,39.963288],[-80.064012,40.007103]]]},"id":"42059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.18079,40.01258],[-111.64405,39.81541],[-112.016482,39.317009],[-112.23556,39.552517],[-114.048427,39.541563],[-114.048427,39.908518],[-112.339621,39.903041],[-112.18079,40.01258]]]},"id":"49023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.856335,40.007103],[-84.812519,40.007103],[-84.812519,39.919472],[-84.812519,39.727779],[-85.037074,39.716825],[-85.22329,39.788025],[-85.201382,40.007103],[-84.856335,40.007103]]]},"id":"18177"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.90605,40.001626],[-101.413125,40.001626],[-101.413125,39.568948],[-102.004635,39.568948],[-102.04845,39.568948],[-102.04845,39.574425],[-102.053927,40.001626],[-101.90605,40.001626]]]},"id":"20023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.325494,40.001626],[-100.761369,40.001626],[-100.739462,40.001626],[-100.739462,39.568948],[-101.391218,39.568948],[-101.413125,39.568948],[-101.413125,40.001626],[-101.325494,40.001626]]]},"id":"20153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.948008,40.001626],[-117.542715,40.001626],[-117.493422,39.530609],[-117.772746,39.092454],[-117.865854,39.076023],[-118.753119,39.076023],[-119.191274,39.629194],[-119.224135,40.001626],[-117.948008,40.001626]]]},"id":"32001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.269362,40.001626],[-97.929791,40.001626],[-97.929791,39.656579],[-97.929791,39.568948],[-98.488439,39.568948],[-98.50487,39.568948],[-98.50487,40.001626],[-98.274839,40.001626],[-98.269362,40.001626]]]},"id":"20089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.691086,40.001626],[-98.50487,40.001626],[-98.50487,39.568948],[-98.849917,39.568948],[-99.04161,39.568948],[-99.063518,39.568948],[-99.068995,40.001626],[-98.723948,40.001626],[-98.691086,40.001626]]]},"id":"20183"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.739462,40.001626],[-100.191768,40.001626],[-100.175337,40.001626],[-100.180814,39.568948],[-100.668261,39.568948],[-100.717554,39.568948],[-100.739462,39.568948],[-100.739462,40.001626]]]},"id":"20039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.123764,40.001626],[-99.068995,40.001626],[-99.063518,39.568948],[-99.600258,39.568948],[-99.627643,39.568948],[-99.627643,40.001626],[-99.178534,40.001626],[-99.123764,40.001626]]]},"id":"20147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.875022,40.001626],[-97.820252,40.001626],[-97.371143,40.001626],[-97.371143,39.656579],[-97.69976,39.656579],[-97.929791,39.656579],[-97.929791,40.001626],[-97.875022,40.001626]]]},"id":"20157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-124.021935,40.001626],[-123.545441,40.001626],[-122.932024,39.979718],[-122.937501,39.798979],[-122.882732,39.579902],[-123.090855,39.070546],[-122.822485,38.851469],[-123.074425,38.851469],[-123.534488,38.769315],[-123.737134,38.95553],[-124.021935,40.001626]]]},"id":"06045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.349236,40.001626],[-96.916557,40.001626],[-96.807019,40.001626],[-96.807019,39.568948],[-96.960373,39.568948],[-97.299943,39.568948],[-97.371143,39.568948],[-97.371143,39.656579],[-97.371143,40.001626],[-97.349236,40.001626]]]},"id":"20201"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.627643,40.001626],[-99.627643,39.568948],[-100.164383,39.568948],[-100.180814,39.568948],[-100.175337,40.001626],[-99.627643,40.001626],[-99.627643,40.001626]]]},"id":"20137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.795594,40.001626],[-103.707963,40.001626],[-103.707963,39.738733],[-104.830736,39.738733],[-104.885506,39.738733],[-104.704767,39.903041],[-105.055291,39.793502],[-105.055291,39.913995],[-105.055291,40.001626],[-104.151596,40.001626],[-103.795594,40.001626]]]},"id":"08001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.692003,40.001626],[-96.461971,40.001626],[-96.237417,40.001626],[-96.237417,39.568948],[-96.582464,39.568948],[-96.582464,39.568948],[-96.692003,39.568948],[-96.807019,39.568948],[-96.807019,40.001626],[-96.692003,40.001626]]]},"id":"20117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.237417,40.001626],[-96.012862,40.001626],[-95.788308,40.001626],[-95.788308,39.651102],[-96.03477,39.563471],[-96.237417,39.568948],[-96.237417,40.001626],[-96.237417,40.001626]]]},"id":"20131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.788308,40.001626],[-95.339199,40.001626],[-95.339199,39.651102],[-95.393968,39.651102],[-95.563753,39.651102],[-95.728061,39.651102],[-95.788308,39.651102],[-95.788308,40.001626]]]},"id":"20013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.339199,40.001626],[-95.306337,40.001626],[-94.994151,39.897564],[-94.879136,39.820887],[-95.054398,39.623717],[-95.339199,39.651102],[-95.339199,40.001626]]]},"id":"20043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.030704,39.990672],[-74.734949,39.727779],[-74.877349,39.607286],[-75.140242,39.88661],[-75.058088,39.990672],[-75.030704,39.990672]]]},"id":"34007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.489826,39.974241],[-89.215979,39.919472],[-89.215979,39.81541],[-89.254318,39.820887],[-89.533642,39.525132],[-89.588411,39.525132],[-89.703427,39.525132],[-89.758196,39.525132],[-89.927981,39.519655],[-89.993705,39.87018],[-89.993705,39.903041],[-89.577457,39.974241],[-89.489826,39.974241]]]},"id":"17167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.362023,39.968764],[-93.268915,39.705871],[-93.279869,39.61824],[-93.422269,39.612763],[-93.756363,39.612763],[-93.756363,39.782548],[-93.76184,39.957811],[-93.362023,39.968764]]]},"id":"29117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.998265,39.952334],[-91.954449,39.946857],[-91.839434,39.946857],[-91.844911,39.656579],[-92.299497,39.607286],[-92.288543,39.952334],[-91.998265,39.952334]]]},"id":"29205"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.471585,39.892087],[-81.236077,39.952334],[-81.236077,39.87018],[-81.307277,39.87018],[-81.28537,39.607286],[-81.449678,39.634671],[-81.586601,39.585379],[-81.69614,39.755164],[-81.69614,39.842795],[-81.471585,39.892087]]]},"id":"39121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.205942,39.952334],[-87.090926,39.952334],[-87.008772,39.864703],[-87.014249,39.607286],[-87.200465,39.607286],[-87.331912,39.607286],[-87.381204,39.607286],[-87.419543,39.952334],[-87.205942,39.952334]]]},"id":"18121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.784664,39.946857],[-91.43414,39.946857],[-91.36294,39.760641],[-91.30817,39.683964],[-91.686079,39.683964],[-91.713464,39.656579],[-91.844911,39.656579],[-91.839434,39.946857],[-91.784664,39.946857]]]},"id":"29127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.617629,39.946857],[-85.573814,39.946857],[-85.595722,39.788025],[-85.63406,39.700394],[-85.951723,39.694917],[-85.935292,39.924949],[-85.864092,39.94138],[-85.617629,39.946857]]]},"id":"18059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.797005,39.94138],[-82.780574,39.94138],[-82.462912,39.930426],[-82.375281,39.656579],[-82.731282,39.552517],[-82.82439,39.793502],[-82.797005,39.94138]]]},"id":"39045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.674185,39.930426],[-105.400338,39.913995],[-105.400338,39.749687],[-105.690616,39.853749],[-105.674185,39.930426]]]},"id":"08047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.462912,39.930426],[-82.23288,39.913995],[-82.074049,39.771595],[-82.046664,39.552517],[-82.16168,39.557994],[-82.375281,39.656579],[-82.462912,39.930426]]]},"id":"39127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.110554,39.924949],[-85.935292,39.924949],[-85.951723,39.694917],[-85.951723,39.640148],[-85.97363,39.640148],[-86.247477,39.634671],[-86.324155,39.629194],[-86.324155,39.924949],[-86.242001,39.924949],[-86.110554,39.924949]]]},"id":"18097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.627173,39.924949],[-106.43548,39.924949],[-106.205448,39.377255],[-106.424526,39.360824],[-107.04342,39.366301],[-107.11462,39.366301],[-107.032466,39.919472],[-106.627173,39.924949]]]},"id":"08037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.43548,39.924949],[-105.926124,39.700394],[-105.827539,39.563471],[-106.134248,39.377255],[-106.205448,39.377255],[-106.43548,39.924949]]]},"id":"08117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.433693,39.924949],[-86.324155,39.924949],[-86.324155,39.629194],[-86.658248,39.601809],[-86.696587,39.864703],[-86.696587,39.924949],[-86.433693,39.924949]]]},"id":"18063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.155286,39.924949],[-84.051224,39.881133],[-84.051224,39.848272],[-84.111471,39.579902],[-84.36341,39.590856],[-84.478426,39.590856],[-84.483903,39.919472],[-84.423656,39.919472],[-84.155286,39.924949]]]},"id":"39113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.483903,39.919472],[-84.478426,39.590856],[-84.812519,39.568948],[-84.812519,39.727779],[-84.812519,39.919472],[-84.483903,39.919472]]]},"id":"39135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.055291,39.913995],[-105.055291,39.913995],[-105.055291,39.793502],[-105.055291,39.623717],[-105.049814,39.563471],[-105.329138,39.130793],[-105.329138,39.130793],[-105.400338,39.563471],[-105.400338,39.749687],[-105.400338,39.913995],[-105.055291,39.913995]]]},"id":"08059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.704767,39.903041],[-104.885506,39.738733],[-105.055291,39.629194],[-105.055291,39.629194],[-105.055291,39.623717],[-105.055291,39.793502],[-104.704767,39.903041]]]},"id":"08031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.211443,39.864703],[-75.140242,39.88661],[-74.877349,39.607286],[-74.986888,39.514178],[-75.058088,39.568948],[-75.063565,39.568948],[-75.446951,39.771595],[-75.414089,39.804456],[-75.211443,39.864703]]]},"id":"34015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.534558,39.881133],[-87.534558,39.607286],[-87.529082,39.47584],[-87.76459,39.486794],[-87.96176,39.481317],[-87.967237,39.683964],[-87.939852,39.881133],[-87.534558,39.881133]]]},"id":"17045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.126068,39.881133],[-87.939852,39.881133],[-87.967237,39.683964],[-88.065822,39.651102],[-88.471115,39.651102],[-88.471115,39.793502],[-88.460161,39.881133],[-88.126068,39.881133]]]},"id":"17041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.585214,39.875656],[-89.993705,39.87018],[-89.927981,39.519655],[-90.152536,39.519655],[-90.300413,39.519655],[-90.371614,39.667533],[-90.601645,39.788025],[-90.57426,39.837318],[-90.585214,39.875656]]]},"id":"17137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.307277,39.87018],[-81.236077,39.87018],[-80.81983,39.848272],[-80.830783,39.722302],[-80.945799,39.607286],[-81.038907,39.541563],[-81.28537,39.607286],[-81.307277,39.87018]]]},"id":"39111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.008772,39.864703],[-86.696587,39.864703],[-86.658248,39.601809],[-86.685633,39.470363],[-86.937572,39.47584],[-87.014249,39.607286],[-87.008772,39.864703]]]},"id":"18133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.926124,39.700394],[-105.690616,39.853749],[-105.400338,39.749687],[-105.400338,39.563471],[-105.827539,39.563471],[-105.926124,39.700394]]]},"id":"08019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.029317,39.848272],[-83.645931,39.771595],[-83.651408,39.716825],[-83.667839,39.552517],[-83.974547,39.568948],[-83.974547,39.568948],[-84.111471,39.579902],[-84.051224,39.848272],[-84.029317,39.848272]]]},"id":"39057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.919308,39.842795],[-90.57426,39.837318],[-90.601645,39.788025],[-90.579737,39.519655],[-90.612599,39.393686],[-90.935738,39.399163],[-91.176724,39.596333],[-91.30817,39.683964],[-91.36294,39.760641],[-90.919308,39.842795]]]},"id":"17149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.414089,39.804456],[-75.446951,39.771595],[-75.507197,39.683964],[-75.512674,39.366301],[-75.616736,39.311532],[-75.759137,39.295101],[-75.764614,39.377255],[-75.786521,39.722302],[-75.594828,39.837318],[-75.594828,39.837318],[-75.578398,39.837318],[-75.414089,39.804456]]]},"id":"10003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.254318,39.820887],[-89.215979,39.81541],[-89.024286,39.656579],[-89.139302,39.34987],[-89.533642,39.525132],[-89.254318,39.820887]]]},"id":"17021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.769597,39.820887],[-94.605288,39.820887],[-94.599812,39.749687],[-94.599812,39.530609],[-95.10369,39.530609],[-95.054398,39.623717],[-94.879136,39.820887],[-94.769597,39.820887]]]},"id":"29021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.014202,39.81541],[-110.855371,39.81541],[-109.968106,39.804456],[-110.022876,39.470363],[-111.079925,39.464886],[-111.24971,39.705871],[-111.24971,39.81541],[-111.014202,39.81541]]]},"id":"49007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.246114,39.809933],[-83.246114,39.81541],[-82.82439,39.793502],[-82.731282,39.552517],[-82.742236,39.470363],[-83.268022,39.514178],[-83.251591,39.694917],[-83.246114,39.809933]]]},"id":"39129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.556419,39.81541],[-111.24971,39.81541],[-111.24971,39.705871],[-111.299003,39.032208],[-111.978143,39.043162],[-112.016482,39.043162],[-112.016482,39.317009],[-111.64405,39.81541],[-111.556419,39.81541]]]},"id":"49039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.937501,39.798979],[-122.04476,39.798979],[-121.891405,39.382732],[-122.077621,39.415593],[-122.740331,39.382732],[-122.882732,39.579902],[-122.937501,39.798979]]]},"id":"06021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.761393,39.793502],[-88.744962,39.793502],[-88.471115,39.793502],[-88.471115,39.651102],[-88.471115,39.448455],[-88.810686,39.651102],[-88.761393,39.793502]]]},"id":"17139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.371614,39.667533],[-90.300413,39.519655],[-90.579737,39.519655],[-90.601645,39.788025],[-90.371614,39.667533]]]},"id":"17171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.871378,39.788025],[-93.756363,39.782548],[-93.756363,39.612763],[-93.76184,39.525132],[-94.10141,39.525132],[-94.210949,39.525132],[-94.205472,39.74421],[-94.205472,39.788025],[-93.871378,39.788025]]]},"id":"29025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.22329,39.788025],[-85.037074,39.716825],[-85.037074,39.525132],[-85.23972,39.525132],[-85.299967,39.525132],[-85.299967,39.788025],[-85.22329,39.788025]]]},"id":"18041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.321875,39.788025],[-85.299967,39.788025],[-85.299967,39.525132],[-85.299967,39.453932],[-85.628583,39.453932],[-85.63406,39.700394],[-85.595722,39.788025],[-85.321875,39.788025]]]},"id":"18139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.446951,39.771595],[-75.063565,39.568948],[-75.408613,39.382732],[-75.55649,39.607286],[-75.561967,39.629194],[-75.507197,39.683964],[-75.446951,39.771595]]]},"id":"34033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.149738,39.705871],[-120.001861,39.722302],[-120.001861,39.442978],[-120.555032,39.508701],[-121.020572,39.393686],[-121.009618,39.640148],[-120.149738,39.705871]]]},"id":"06091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.074049,39.771595],[-81.69614,39.755164],[-81.586601,39.585379],[-81.844017,39.448455],[-82.046664,39.552517],[-82.074049,39.771595]]]},"id":"39115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.506704,39.749687],[-94.205472,39.74421],[-94.210949,39.525132],[-94.210949,39.453932],[-94.56695,39.453932],[-94.599812,39.453932],[-94.599812,39.530609],[-94.599812,39.749687],[-94.506704,39.749687]]]},"id":"29049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.830736,39.738733],[-103.707963,39.738733],[-103.707963,39.568948],[-103.71344,39.568948],[-104.195411,39.563471],[-104.660951,39.563471],[-104.989567,39.568948],[-105.049814,39.563471],[-105.055291,39.623717],[-105.055291,39.629194],[-105.055291,39.629194],[-104.885506,39.738733],[-104.830736,39.738733]]]},"id":"08005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.196751,39.623717],[-119.191274,39.629194],[-118.753119,39.076023],[-118.764072,39.076023],[-118.906473,38.413313],[-119.158412,38.413313],[-119.328197,38.533806],[-119.552752,39.086977],[-119.580137,39.196516],[-119.711583,39.251285],[-119.284382,39.623717],[-119.196751,39.623717]]]},"id":"32019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.734949,39.727779],[-74.417286,39.557994],[-74.313224,39.497748],[-74.548733,39.295101],[-74.860918,39.322485],[-74.986888,39.514178],[-74.877349,39.607286],[-74.734949,39.727779]]]},"id":"34001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.812519,39.727779],[-84.812519,39.568948],[-84.817996,39.519655],[-85.037074,39.525132],[-85.037074,39.716825],[-84.812519,39.727779]]]},"id":"18161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.809792,39.722302],[-78.382591,39.722302],[-78.344253,39.722302],[-78.333299,39.634671],[-78.470222,39.514178],[-78.656438,39.536086],[-78.738592,39.623717],[-79.067209,39.47584],[-78.930285,39.722302],[-78.809792,39.722302]]]},"id":"24001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.930285,39.722302],[-79.067209,39.47584],[-79.275332,39.327962],[-79.488933,39.20747],[-79.477979,39.722302],[-79.390348,39.722302],[-78.930285,39.722302]]]},"id":"24023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.284006,39.722302],[-78.09779,39.722302],[-77.467942,39.722302],[-77.676066,39.322485],[-77.719881,39.322485],[-77.823943,39.492271],[-78.021113,39.61824],[-78.185421,39.694917],[-78.333299,39.634671],[-78.344253,39.722302],[-78.284006,39.722302]]]},"id":"24043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.808429,39.722302],[-75.786521,39.722302],[-75.764614,39.377255],[-76.000122,39.377255],[-76.076799,39.541563],[-76.235631,39.722302],[-76.137046,39.722302],[-75.808429,39.722302]]]},"id":"24015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.830783,39.722302],[-80.518598,39.722302],[-80.420013,39.722302],[-80.398105,39.634671],[-80.49669,39.470363],[-80.545983,39.426547],[-80.617183,39.448455],[-80.945799,39.607286],[-80.830783,39.722302]]]},"id":"54103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.916134,39.722302],[-79.76278,39.722302],[-79.894227,39.437501],[-79.938042,39.453932],[-80.398105,39.634671],[-80.420013,39.722302],[-79.916134,39.722302]]]},"id":"54061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.241107,39.722302],[-76.235631,39.722302],[-76.076799,39.541563],[-76.328738,39.355347],[-76.569724,39.722302],[-76.241107,39.722302]]]},"id":"24025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.609426,39.722302],[-79.477979,39.722302],[-79.488933,39.20747],[-79.488933,39.196516],[-79.812073,39.229378],[-79.894227,39.300578],[-79.894227,39.437501],[-79.76278,39.722302],[-79.609426,39.722302]]]},"id":"54077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.70117,39.722302],[-76.569724,39.722302],[-76.328738,39.355347],[-76.525908,39.218424],[-76.651878,39.371778],[-76.619016,39.234854],[-76.695693,39.212947],[-76.881909,39.34987],[-76.788801,39.722302],[-76.70117,39.722302]]]},"id":"24005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.788801,39.722302],[-76.881909,39.34987],[-77.079079,39.366301],[-77.16671,39.355347],[-77.216003,39.722302],[-76.996925,39.722302],[-76.788801,39.722302]]]},"id":"24013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.467942,39.722302],[-77.456988,39.722302],[-77.216003,39.722302],[-77.16671,39.355347],[-77.16671,39.355347],[-77.243388,39.317009],[-77.456988,39.218424],[-77.676066,39.322485],[-77.467942,39.722302]]]},"id":"24021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.651408,39.716825],[-83.251591,39.694917],[-83.268022,39.514178],[-83.372084,39.377255],[-83.591161,39.377255],[-83.667839,39.552517],[-83.651408,39.716825]]]},"id":"39047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.04436,39.705871],[-92.858145,39.700394],[-92.693836,39.612763],[-92.70479,39.322485],[-92.847191,39.223901],[-93.104607,39.382732],[-93.279869,39.61824],[-93.268915,39.705871],[-93.04436,39.705871]]]},"id":"29041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.24971,39.705871],[-111.079925,39.464886],[-110.022876,39.470363],[-110.022876,39.459409],[-110.022876,38.500944],[-111.30448,38.511898],[-111.299003,39.032208],[-111.24971,39.705871]]]},"id":"49015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.63406,39.700394],[-85.628583,39.453932],[-85.683353,39.34987],[-85.798368,39.34987],[-85.951723,39.34987],[-85.951723,39.640148],[-85.951723,39.694917],[-85.63406,39.700394]]]},"id":"18145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.185421,39.694917],[-78.021113,39.61824],[-78.229237,39.393686],[-78.349729,39.464886],[-78.470222,39.514178],[-78.333299,39.634671],[-78.185421,39.694917]]]},"id":"54065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.686079,39.683964],[-91.30817,39.683964],[-91.176724,39.596333],[-91.198632,39.596333],[-91.439617,39.317009],[-91.718941,39.338916],[-91.713464,39.656579],[-91.686079,39.683964]]]},"id":"29173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.065822,39.651102],[-87.967237,39.683964],[-87.96176,39.481317],[-88.011052,39.377255],[-88.142499,39.377255],[-88.471115,39.371778],[-88.471115,39.448455],[-88.471115,39.651102],[-88.065822,39.651102]]]},"id":"17029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.299497,39.607286],[-91.844911,39.656579],[-91.713464,39.656579],[-91.718941,39.338916],[-92.31045,39.34987],[-92.299497,39.607286],[-92.299497,39.607286]]]},"id":"29137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.375281,39.656579],[-82.16168,39.557994],[-82.28765,39.382732],[-82.747713,39.366301],[-82.742236,39.470363],[-82.731282,39.552517],[-82.375281,39.656579]]]},"id":"39073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.024286,39.656579],[-88.810686,39.651102],[-88.471115,39.448455],[-88.471115,39.371778],[-88.471115,39.212947],[-88.580654,39.212947],[-88.805209,39.218424],[-89.139302,39.218424],[-89.139302,39.34987],[-89.024286,39.656579]]]},"id":"17173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.69976,39.656579],[-97.371143,39.656579],[-97.371143,39.568948],[-97.371143,39.306055],[-97.590221,39.306055],[-97.929791,39.306055],[-97.929791,39.568948],[-97.929791,39.656579],[-97.69976,39.656579]]]},"id":"20029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.728061,39.651102],[-95.563753,39.651102],[-95.56923,39.42107],[-95.591138,39.218424],[-95.886893,39.218424],[-96.03477,39.218424],[-96.03477,39.563471],[-95.788308,39.651102],[-95.728061,39.651102]]]},"id":"20085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.393968,39.651102],[-95.339199,39.651102],[-95.054398,39.623717],[-95.10369,39.530609],[-94.966767,39.42107],[-95.065351,39.42107],[-95.180367,39.42107],[-95.465168,39.42107],[-95.56923,39.42107],[-95.563753,39.651102],[-95.393968,39.651102]]]},"id":"20005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.738592,39.623717],[-78.656438,39.536086],[-78.979578,39.240331],[-79.275332,39.327962],[-79.067209,39.47584],[-78.738592,39.623717]]]},"id":"54057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.449678,39.634671],[-81.28537,39.607286],[-81.038907,39.541563],[-81.121061,39.459409],[-81.373001,39.344393],[-81.723525,39.218424],[-81.844017,39.448455],[-81.586601,39.585379],[-81.449678,39.634671]]]},"id":"39167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.398105,39.634671],[-79.938042,39.453932],[-80.195458,39.393686],[-80.49669,39.470363],[-80.398105,39.634671]]]},"id":"54049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.075341,39.596333],[-121.009618,39.640148],[-121.020572,39.393686],[-121.277988,39.032208],[-121.414912,38.999346],[-121.623035,39.295101],[-121.075341,39.596333]]]},"id":"06115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.97363,39.640148],[-85.951723,39.640148],[-85.951723,39.34987],[-86.083169,39.344393],[-86.252954,39.344393],[-86.247477,39.634671],[-85.97363,39.640148]]]},"id":"18081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.247477,39.634671],[-86.252954,39.344393],[-86.378924,39.338916],[-86.630863,39.34987],[-86.685633,39.470363],[-86.658248,39.601809],[-86.324155,39.629194],[-86.247477,39.634671]]]},"id":"18109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.689675,39.519655],[-119.284382,39.623717],[-119.711583,39.251285],[-119.689675,39.519655]]]},"id":"32029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.021113,39.61824],[-77.823943,39.492271],[-77.823943,39.492271],[-78.032067,39.262239],[-78.229237,39.393686],[-78.021113,39.61824]]]},"id":"54003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.422269,39.612763],[-93.279869,39.61824],[-93.104607,39.382732],[-93.274392,39.317009],[-93.477039,39.295101],[-93.597531,39.240331],[-93.756363,39.20747],[-93.76184,39.525132],[-93.756363,39.612763],[-93.422269,39.612763]]]},"id":"29033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.693836,39.612763],[-92.299497,39.607286],[-92.31045,39.34987],[-92.315927,39.245808],[-92.430943,39.251285],[-92.70479,39.322485],[-92.693836,39.612763]]]},"id":"29175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.331912,39.607286],[-87.200465,39.607286],[-87.238804,39.256762],[-87.578374,39.256762],[-87.605759,39.256762],[-87.529082,39.47584],[-87.534558,39.607286],[-87.381204,39.607286],[-87.331912,39.607286]]]},"id":"18167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.200465,39.607286],[-87.014249,39.607286],[-86.937572,39.47584],[-87.052588,39.169131],[-87.211419,39.169131],[-87.238804,39.169131],[-87.238804,39.256762],[-87.200465,39.607286]]]},"id":"18021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.945799,39.607286],[-80.617183,39.448455],[-80.89103,39.295101],[-81.006046,39.34987],[-81.038907,39.470363],[-81.121061,39.459409],[-81.038907,39.541563],[-80.945799,39.607286]]]},"id":"54095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.198632,39.596333],[-91.176724,39.596333],[-90.935738,39.399163],[-90.722138,39.223901],[-91.149339,39.229378],[-91.258878,39.141746],[-91.406755,39.141746],[-91.439617,39.317009],[-91.198632,39.596333]]]},"id":"29163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.478426,39.590856],[-84.36341,39.590856],[-84.352456,39.289624],[-84.598918,39.306055],[-84.817996,39.306055],[-84.817996,39.519655],[-84.812519,39.568948],[-84.478426,39.590856]]]},"id":"39017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.36341,39.590856],[-84.111471,39.579902],[-83.974547,39.568948],[-84.007409,39.256762],[-84.259348,39.273193],[-84.352456,39.289624],[-84.36341,39.590856]]]},"id":"39165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.882732,39.579902],[-122.740331,39.382732],[-122.340515,38.922669],[-122.395284,38.862422],[-122.625315,38.665253],[-122.822485,38.851469],[-123.090855,39.070546],[-122.882732,39.579902]]]},"id":"06033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.426359,39.568948],[-102.04845,39.574425],[-102.04845,39.568948],[-102.04845,39.130793],[-102.04845,39.048638],[-103.165746,39.037685],[-103.154792,39.563471],[-102.804268,39.568948],[-102.426359,39.568948]]]},"id":"08063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.974547,39.568948],[-83.667839,39.552517],[-83.591161,39.377255],[-83.865008,39.245808],[-83.990978,39.256762],[-84.007409,39.256762],[-83.974547,39.568948],[-83.974547,39.568948]]]},"id":"39027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.058088,39.568948],[-74.986888,39.514178],[-74.860918,39.322485],[-74.915688,39.180085],[-75.408613,39.382732],[-75.063565,39.568948],[-75.058088,39.568948]]]},"id":"34011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.004635,39.568948],[-101.413125,39.568948],[-101.391218,39.568948],[-101.391218,39.13627],[-101.478849,39.13627],[-102.04845,39.130793],[-102.04845,39.568948],[-102.004635,39.568948]]]},"id":"20181"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.391218,39.568948],[-100.739462,39.568948],[-100.717554,39.568948],[-100.723031,39.130793],[-100.739462,39.130793],[-100.810662,39.130793],[-101.391218,39.13627],[-101.391218,39.568948]]]},"id":"20193"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.827539,39.563471],[-105.400338,39.563471],[-105.329138,39.130793],[-105.329138,38.698114],[-105.96994,38.692637],[-106.189017,39.054115],[-106.134248,39.377255],[-105.827539,39.563471]]]},"id":"08093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.668261,39.568948],[-100.180814,39.568948],[-100.164383,39.568948],[-100.164383,39.130793],[-100.723031,39.130793],[-100.717554,39.568948],[-100.668261,39.568948]]]},"id":"20179"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.063518,39.568948],[-99.04161,39.568948],[-99.047087,39.130793],[-99.408565,39.130793],[-99.589304,39.130793],[-99.605735,39.130793],[-99.600258,39.568948],[-99.063518,39.568948]]]},"id":"20163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.849917,39.568948],[-98.50487,39.568948],[-98.488439,39.568948],[-98.488439,39.218424],[-98.488439,39.130793],[-98.510347,39.130793],[-99.036133,39.130793],[-99.047087,39.130793],[-99.04161,39.568948],[-98.849917,39.568948]]]},"id":"20141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.488439,39.568948],[-97.929791,39.568948],[-97.929791,39.306055],[-97.929791,39.218424],[-98.477485,39.218424],[-98.488439,39.218424],[-98.488439,39.568948]]]},"id":"20123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.600258,39.568948],[-99.605735,39.130793],[-100.147952,39.130793],[-100.164383,39.130793],[-100.164383,39.568948],[-99.627643,39.568948],[-99.600258,39.568948]]]},"id":"20065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.299943,39.568948],[-96.960373,39.568948],[-96.960373,39.218424],[-96.96585,39.130793],[-97.261605,39.130793],[-97.371143,39.130793],[-97.371143,39.306055],[-97.371143,39.568948],[-97.299943,39.568948]]]},"id":"20027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.692003,39.568948],[-96.582464,39.568948],[-96.390771,39.174608],[-96.50031,39.043162],[-96.943942,39.218424],[-96.960373,39.218424],[-96.960373,39.568948],[-96.807019,39.568948],[-96.692003,39.568948]]]},"id":"20161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.71344,39.568948],[-103.707963,39.568948],[-103.154792,39.563471],[-103.165746,39.037685],[-103.171223,38.610483],[-103.505317,38.517375],[-104.053011,38.522852],[-104.053011,38.867899],[-103.718917,38.867899],[-103.71344,39.568948]]]},"id":"08073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.195411,39.563471],[-103.71344,39.568948],[-103.718917,38.867899],[-104.053011,38.867899],[-104.053011,39.130793],[-104.660951,39.130793],[-104.660951,39.563471],[-104.195411,39.563471]]]},"id":"08039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.582464,39.568948],[-96.237417,39.568948],[-96.03477,39.563471],[-96.03477,39.218424],[-96.040247,39.125316],[-96.390771,39.174608],[-96.582464,39.568948],[-96.582464,39.568948]]]},"id":"20149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.989567,39.568948],[-104.660951,39.563471],[-104.660951,39.130793],[-104.995044,39.130793],[-105.033383,39.130793],[-105.329138,39.130793],[-105.049814,39.563471],[-104.989567,39.568948]]]},"id":"08035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.048427,39.541563],[-112.23556,39.552517],[-112.016482,39.317009],[-112.016482,39.043162],[-112.514883,38.572145],[-113.97175,38.572145],[-114.048427,38.572145],[-114.048427,38.676207],[-114.048427,39.541563]]]},"id":"49027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.046664,39.552517],[-81.844017,39.448455],[-81.723525,39.218424],[-81.756386,39.180085],[-82.271219,39.201993],[-82.28765,39.382732],[-82.16168,39.557994],[-82.046664,39.552517]]]},"id":"39009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.656438,39.536086],[-78.470222,39.514178],[-78.349729,39.464886],[-78.508561,39.086977],[-78.979578,39.240331],[-78.656438,39.536086]]]},"id":"54027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.10369,39.530609],[-94.599812,39.530609],[-94.599812,39.453932],[-94.599812,39.158177],[-94.775074,39.201993],[-94.966767,39.42107],[-95.10369,39.530609]]]},"id":"29165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.10141,39.525132],[-93.76184,39.525132],[-93.756363,39.20747],[-94.106887,39.141746],[-94.210949,39.20747],[-94.210949,39.453932],[-94.210949,39.525132],[-94.10141,39.525132]]]},"id":"29177"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.23972,39.525132],[-85.037074,39.525132],[-84.817996,39.519655],[-84.817996,39.306055],[-85.031597,39.306055],[-85.064458,39.306055],[-85.09732,39.311532],[-85.29449,39.267716],[-85.299967,39.453932],[-85.299967,39.525132],[-85.23972,39.525132]]]},"id":"18047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.555032,39.508701],[-120.001861,39.442978],[-120.007338,39.317009],[-120.149738,39.317009],[-121.277988,39.032208],[-121.020572,39.393686],[-120.555032,39.508701]]]},"id":"06057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.588411,39.525132],[-89.533642,39.525132],[-89.139302,39.34987],[-89.139302,39.218424],[-89.248841,39.026731],[-89.637704,38.999346],[-89.69795,38.999346],[-89.703427,39.525132],[-89.588411,39.525132]]]},"id":"17135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.758196,39.525132],[-89.703427,39.525132],[-89.69795,38.999346],[-90.147059,38.999346],[-90.147059,39.262239],[-90.152536,39.519655],[-89.927981,39.519655],[-89.758196,39.525132]]]},"id":"17117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.579737,39.519655],[-90.300413,39.519655],[-90.152536,39.519655],[-90.147059,39.262239],[-90.601645,39.119839],[-90.612599,39.393686],[-90.579737,39.519655]]]},"id":"17061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.268022,39.514178],[-82.742236,39.470363],[-82.747713,39.366301],[-82.764143,39.20747],[-82.786051,39.169131],[-83.355653,39.196516],[-83.372084,39.377255],[-83.268022,39.514178]]]},"id":"39141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.053457,39.497748],[-109.053457,39.366301],[-109.058934,38.500944],[-110.022876,38.500944],[-110.022876,39.459409],[-109.053457,39.497748]]]},"id":"49019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.823943,39.492271],[-77.823943,39.492271],[-77.719881,39.322485],[-77.82942,39.130793],[-78.032067,39.262239],[-77.823943,39.492271]]]},"id":"54037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.76459,39.486794],[-87.529082,39.47584],[-87.605759,39.256762],[-87.644097,39.158177],[-87.786498,39.180085],[-87.950806,39.174608],[-88.005575,39.174608],[-88.011052,39.377255],[-87.96176,39.481317],[-87.76459,39.486794]]]},"id":"17023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.038907,39.470363],[-81.006046,39.34987],[-81.016999,39.34987],[-81.241554,39.267716],[-81.373001,39.344393],[-81.121061,39.459409],[-81.038907,39.470363]]]},"id":"54073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.937572,39.47584],[-86.685633,39.470363],[-86.630863,39.34987],[-86.685633,39.163654],[-87.052588,39.169131],[-86.937572,39.47584]]]},"id":"18119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.49669,39.470363],[-80.195458,39.393686],[-80.168074,39.240331],[-80.22832,39.114362],[-80.29952,39.103408],[-80.452875,39.141746],[-80.595275,39.169131],[-80.545983,39.426547],[-80.49669,39.470363]]]},"id":"54033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.349729,39.464886],[-78.229237,39.393686],[-78.032067,39.262239],[-78.032067,39.262239],[-78.15256,39.037685],[-78.311391,39.0103],[-78.338776,39.103408],[-78.541422,39.054115],[-78.508561,39.086977],[-78.349729,39.464886]]]},"id":"51069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.56695,39.453932],[-94.210949,39.453932],[-94.210949,39.20747],[-94.419073,39.147223],[-94.605288,39.114362],[-94.599812,39.158177],[-94.599812,39.453932],[-94.56695,39.453932]]]},"id":"29047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.299967,39.453932],[-85.29449,39.267716],[-85.442367,39.196516],[-85.68883,39.130793],[-85.683353,39.34987],[-85.628583,39.453932],[-85.299967,39.453932]]]},"id":"18031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.938042,39.453932],[-79.894227,39.437501],[-79.894227,39.300578],[-79.976381,39.262239],[-80.168074,39.240331],[-80.195458,39.393686],[-79.938042,39.453932]]]},"id":"54091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.617183,39.448455],[-80.545983,39.426547],[-80.595275,39.169131],[-80.726722,39.097931],[-80.814353,39.108885],[-80.89103,39.295101],[-80.617183,39.448455]]]},"id":"54017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.465168,39.42107],[-95.180367,39.42107],[-95.185844,39.043162],[-95.49803,39.054115],[-95.591138,39.218424],[-95.56923,39.42107],[-95.465168,39.42107]]]},"id":"20087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.065351,39.42107],[-94.966767,39.42107],[-94.775074,39.201993],[-94.862705,39.201993],[-94.90652,38.988392],[-95.054398,38.982915],[-95.185844,39.043162],[-95.180367,39.42107],[-95.065351,39.42107]]]},"id":"20103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.077621,39.415593],[-121.891405,39.382732],[-121.907836,39.306055],[-121.836636,38.922669],[-122.061191,38.928146],[-122.340515,38.922669],[-122.740331,39.382732],[-122.077621,39.415593]]]},"id":"06011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.274392,39.317009],[-93.104607,39.382732],[-92.847191,39.223901],[-92.934822,39.065069],[-93.049837,38.928146],[-93.498947,38.944577],[-93.477039,39.295101],[-93.274392,39.317009]]]},"id":"29195"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.373001,39.344393],[-81.241554,39.267716],[-81.296323,39.185562],[-81.42777,39.13627],[-81.581124,39.026731],[-81.739956,39.092454],[-81.745433,39.097931],[-81.756386,39.180085],[-81.723525,39.218424],[-81.373001,39.344393]]]},"id":"54107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.935738,39.399163],[-90.612599,39.393686],[-90.601645,39.119839],[-90.448291,38.966484],[-90.667368,38.933623],[-90.722138,39.223901],[-90.935738,39.399163]]]},"id":"17013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.747713,39.366301],[-82.28765,39.382732],[-82.271219,39.201993],[-82.28765,39.201993],[-82.320511,39.026731],[-82.435527,39.037685],[-82.671035,39.201993],[-82.764143,39.20747],[-82.747713,39.366301]]]},"id":"39163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.016999,39.34987],[-81.006046,39.34987],[-80.89103,39.295101],[-80.814353,39.108885],[-81.03343,39.0103],[-81.115584,39.037685],[-81.164877,39.032208],[-81.296323,39.185562],[-81.241554,39.267716],[-81.016999,39.34987]]]},"id":"54085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.000122,39.377255],[-75.764614,39.377255],[-75.759137,39.295101],[-75.75366,39.245808],[-75.846768,39.256762],[-76.158953,39.092454],[-76.000122,39.377255]]]},"id":"24029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.134248,39.377255],[-106.189017,39.054115],[-106.375233,39.054115],[-106.57788,39.059592],[-106.424526,39.360824],[-106.205448,39.377255],[-106.134248,39.377255]]]},"id":"08065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.142499,39.377255],[-88.011052,39.377255],[-88.005575,39.174608],[-88.361576,39.169131],[-88.471115,39.212947],[-88.471115,39.371778],[-88.142499,39.377255]]]},"id":"17035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.591161,39.377255],[-83.372084,39.377255],[-83.355653,39.196516],[-83.383038,39.054115],[-83.673316,39.021254],[-83.865008,39.245808],[-83.591161,39.377255]]]},"id":"39071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.651878,39.371778],[-76.525908,39.218424],[-76.531385,39.20747],[-76.619016,39.234854],[-76.619016,39.234854],[-76.651878,39.371778]]]},"id":"24510"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.079079,39.366301],[-76.881909,39.34987],[-76.695693,39.212947],[-76.838094,39.103408],[-76.887386,39.130793],[-77.16671,39.355347],[-77.16671,39.355347],[-77.079079,39.366301]]]},"id":"24027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-108.774133,39.366301],[-107.432283,39.366301],[-107.393944,39.256762],[-107.503483,39.218424],[-107.514437,39.212947],[-108.379794,38.67073],[-109.058934,38.500944],[-109.053457,39.366301],[-108.774133,39.366301]]]},"id":"08077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.04342,39.366301],[-106.424526,39.360824],[-106.57788,39.059592],[-106.599788,38.999346],[-107.393944,39.256762],[-107.432283,39.366301],[-107.11462,39.366301],[-107.04342,39.366301]]]},"id":"08097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.616736,39.311532],[-75.512674,39.366301],[-75.310028,38.944577],[-75.720798,38.829561],[-75.748183,39.141746],[-75.75366,39.245808],[-75.759137,39.295101],[-75.616736,39.311532]]]},"id":"10001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.630863,39.34987],[-86.378924,39.338916],[-86.318678,39.048638],[-86.318678,38.988392],[-86.680156,38.993869],[-86.685633,39.163654],[-86.630863,39.34987]]]},"id":"18105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.243388,39.317009],[-77.16671,39.355347],[-76.887386,39.130793],[-77.002402,38.966484],[-77.035264,38.993869],[-77.117418,38.933623],[-77.331019,39.059592],[-77.456988,39.218424],[-77.243388,39.317009]]]},"id":"24031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.798368,39.34987],[-85.683353,39.34987],[-85.68883,39.130793],[-85.798368,39.070546],[-86.077692,39.048638],[-86.083169,39.344393],[-85.951723,39.34987],[-85.798368,39.34987]]]},"id":"18005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.31045,39.34987],[-91.718941,39.338916],[-91.439617,39.317009],[-91.406755,39.141746],[-91.625833,39.147223],[-91.63131,39.059592],[-92.107804,39.065069],[-92.315927,39.245808],[-92.31045,39.34987]]]},"id":"29007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.252954,39.344393],[-86.083169,39.344393],[-86.077692,39.048638],[-86.318678,39.048638],[-86.378924,39.338916],[-86.252954,39.344393]]]},"id":"18013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.847191,39.223901],[-92.70479,39.322485],[-92.430943,39.251285],[-92.556913,38.971961],[-92.918391,39.032208],[-92.934822,39.065069],[-92.847191,39.223901]]]},"id":"29089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.979578,39.240331],[-79.132932,38.81313],[-79.35201,38.95553],[-79.357487,38.966484],[-79.488933,39.196516],[-79.488933,39.20747],[-79.275332,39.327962],[-78.979578,39.240331]]]},"id":"54023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-74.860918,39.322485],[-74.548733,39.295101],[-74.915688,39.180085],[-74.860918,39.322485]]]},"id":"34009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.719881,39.322485],[-77.676066,39.322485],[-77.456988,39.218424],[-77.331019,39.059592],[-77.533665,38.845992],[-77.654158,38.944577],[-77.960867,39.015777],[-77.82942,39.130793],[-77.719881,39.322485]]]},"id":"51107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.149738,39.317009],[-120.007338,39.317009],[-120.001861,39.163654],[-120.001861,39.114362],[-120.001861,39.065069],[-121.04248,38.917192],[-121.141065,38.714545],[-121.486112,38.736453],[-121.414912,38.999346],[-121.277988,39.032208],[-120.149738,39.317009]]]},"id":"06061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.598918,39.306055],[-84.352456,39.289624],[-84.259348,39.273193],[-84.319594,39.021254],[-84.50581,39.092454],[-84.620826,39.076023],[-84.817996,39.103408],[-84.817996,39.306055],[-84.598918,39.306055]]]},"id":"39061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.09732,39.311532],[-85.064458,39.306055],[-85.130182,38.950054],[-85.135659,38.928146],[-85.201382,38.911715],[-85.299967,38.911715],[-85.442367,38.911715],[-85.442367,39.196516],[-85.29449,39.267716],[-85.09732,39.311532]]]},"id":"18137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.031597,39.306055],[-84.817996,39.306055],[-84.817996,39.103408],[-84.878242,39.032208],[-84.933012,39.0103],[-85.130182,38.950054],[-85.064458,39.306055],[-85.031597,39.306055]]]},"id":"18029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.590221,39.306055],[-97.371143,39.306055],[-97.371143,39.130793],[-97.371143,38.95553],[-97.486159,38.95553],[-97.929791,38.95553],[-97.929791,39.218424],[-97.929791,39.306055],[-97.590221,39.306055]]]},"id":"20143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.623035,39.295101],[-121.414912,38.999346],[-121.486112,38.736453],[-121.557312,38.736453],[-121.601128,38.736453],[-121.836636,38.922669],[-121.907836,39.306055],[-121.623035,39.295101]]]},"id":"06101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.976381,39.262239],[-79.894227,39.300578],[-79.812073,39.229378],[-79.823026,39.114362],[-80.08592,38.944577],[-80.22832,39.114362],[-80.168074,39.240331],[-79.976381,39.262239]]]},"id":"54001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.597531,39.240331],[-93.477039,39.295101],[-93.498947,38.944577],[-93.498947,38.928146],[-93.800178,38.9391],[-94.112364,38.917192],[-94.106887,39.141746],[-93.756363,39.20747],[-93.597531,39.240331]]]},"id":"29107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.812073,39.229378],[-79.488933,39.196516],[-79.357487,38.966484],[-79.757303,39.032208],[-79.823026,39.114362],[-79.812073,39.229378]]]},"id":"54093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.259348,39.273193],[-84.007409,39.256762],[-83.990978,39.256762],[-84.051224,38.769315],[-84.231963,38.829561],[-84.231963,38.873376],[-84.319594,39.021254],[-84.259348,39.273193]]]},"id":"39025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.032067,39.262239],[-78.032067,39.262239],[-77.82942,39.130793],[-77.960867,39.015777],[-78.004682,38.977438],[-78.15256,39.037685],[-78.032067,39.262239]]]},"id":"51043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.147059,39.262239],[-90.147059,38.999346],[-90.240167,38.999346],[-90.278506,38.922669],[-90.448291,38.966484],[-90.601645,39.119839],[-90.147059,39.262239]]]},"id":"17083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.846768,39.256762],[-75.75366,39.245808],[-75.748183,39.141746],[-75.748183,39.141746],[-75.95083,38.917192],[-76.071322,38.9391],[-76.197292,38.851469],[-76.158953,39.092454],[-75.846768,39.256762]]]},"id":"24035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.578374,39.256762],[-87.238804,39.256762],[-87.238804,39.169131],[-87.238804,38.906238],[-87.534558,38.900761],[-87.644097,39.158177],[-87.605759,39.256762],[-87.578374,39.256762]]]},"id":"18153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.503483,39.218424],[-107.393944,39.256762],[-106.599788,38.999346],[-106.249264,38.424267],[-106.999605,38.424267],[-106.999605,38.144943],[-107.569206,38.144943],[-107.63493,38.303775],[-107.498006,38.67073],[-107.503483,39.218424]]]},"id":"08051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.990978,39.256762],[-83.865008,39.245808],[-83.673316,39.021254],[-83.706177,38.637868],[-83.848578,38.747407],[-83.903347,38.769315],[-84.051224,38.769315],[-83.990978,39.256762]]]},"id":"39015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.580137,39.196516],[-119.552752,39.086977],[-119.760876,39.114362],[-120.001861,39.114362],[-120.001861,39.163654],[-119.711583,39.251285],[-119.580137,39.196516]]]},"id":"32510"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.430943,39.251285],[-92.315927,39.245808],[-92.107804,39.065069],[-92.222819,38.643345],[-92.392605,38.736453],[-92.463805,38.862422],[-92.496666,38.922669],[-92.556913,38.971961],[-92.430943,39.251285]]]},"id":"29019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.979578,39.240331],[-78.508561,39.086977],[-78.541422,39.054115],[-78.870039,38.763838],[-78.990532,38.845992],[-79.056255,38.763838],[-79.132932,38.81313],[-78.979578,39.240331]]]},"id":"54031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.619016,39.234854],[-76.531385,39.20747],[-76.531385,38.714545],[-76.635447,38.769315],[-76.68474,38.747407],[-76.838094,39.103408],[-76.695693,39.212947],[-76.619016,39.234854],[-76.619016,39.234854]]]},"id":"24003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.419073,39.147223],[-94.210949,39.20747],[-94.106887,39.141746],[-94.112364,38.917192],[-94.117841,38.835038],[-94.583381,38.845992],[-94.610765,38.845992],[-94.605288,39.043162],[-94.605288,39.114362],[-94.419073,39.147223]]]},"id":"29095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.149339,39.229378],[-90.722138,39.223901],[-90.667368,38.933623],[-90.957646,38.873376],[-91.111001,38.895284],[-91.264355,38.993869],[-91.258878,39.141746],[-91.149339,39.229378]]]},"id":"29113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.943942,39.218424],[-96.50031,39.043162],[-96.50031,38.867899],[-96.686526,38.867899],[-96.889173,38.867899],[-96.96585,39.130793],[-96.960373,39.218424],[-96.943942,39.218424]]]},"id":"20061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.477485,39.218424],[-97.929791,39.218424],[-97.929791,38.95553],[-97.929791,38.873376],[-98.482962,38.873376],[-98.488439,39.130793],[-98.488439,39.218424],[-98.477485,39.218424]]]},"id":"20105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.514437,39.212947],[-107.503483,39.218424],[-107.498006,38.67073],[-108.001885,38.67073],[-108.379794,38.67073],[-107.514437,39.212947]]]},"id":"08029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.139302,39.218424],[-88.805209,39.218424],[-88.69567,38.917192],[-88.69567,38.824084],[-88.777824,38.824084],[-89.139302,38.736453],[-89.254318,38.74193],[-89.248841,39.026731],[-89.139302,39.218424]]]},"id":"17051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.886893,39.218424],[-95.591138,39.218424],[-95.49803,39.054115],[-95.49803,38.867899],[-95.667815,38.867899],[-95.947139,38.867899],[-96.040247,39.125316],[-96.03477,39.218424],[-95.886893,39.218424]]]},"id":"20177"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.580654,39.212947],[-88.471115,39.212947],[-88.361576,39.169131],[-88.361576,38.911715],[-88.613516,38.917192],[-88.69567,38.917192],[-88.805209,39.218424],[-88.580654,39.212947]]]},"id":"17049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.040247,39.125316],[-95.947139,38.867899],[-95.947139,38.736453],[-96.336002,38.74193],[-96.352432,38.74193],[-96.50031,38.867899],[-96.50031,39.043162],[-96.390771,39.174608],[-96.040247,39.125316]]]},"id":"20197"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.671035,39.201993],[-82.435527,39.037685],[-82.577927,38.845992],[-82.649128,38.851469],[-82.807959,38.950054],[-82.786051,39.169131],[-82.764143,39.20747],[-82.671035,39.201993]]]},"id":"39079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.28765,39.201993],[-82.271219,39.201993],[-81.756386,39.180085],[-81.745433,39.097931],[-81.909741,38.878853],[-82.101434,38.95553],[-82.320511,39.026731],[-82.28765,39.201993]]]},"id":"39105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.862705,39.201993],[-94.775074,39.201993],[-94.599812,39.158177],[-94.605288,39.114362],[-94.605288,39.043162],[-94.90652,38.988392],[-94.862705,39.201993]]]},"id":"20209"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.355653,39.196516],[-82.786051,39.169131],[-82.807959,38.950054],[-83.273499,39.015777],[-83.383038,39.054115],[-83.355653,39.196516]]]},"id":"39131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.442367,39.196516],[-85.442367,38.911715],[-85.683353,38.81313],[-85.792891,38.807653],[-85.798368,39.070546],[-85.68883,39.130793],[-85.442367,39.196516]]]},"id":"18079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.42777,39.13627],[-81.296323,39.185562],[-81.164877,39.032208],[-81.279893,38.917192],[-81.433247,38.933623],[-81.504447,38.917192],[-81.581124,39.026731],[-81.42777,39.13627]]]},"id":"54105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.786498,39.180085],[-87.644097,39.158177],[-87.534558,38.900761],[-87.534558,38.851469],[-87.90699,38.851469],[-87.945329,38.851469],[-87.950806,39.174608],[-87.786498,39.180085]]]},"id":"17033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.005575,39.174608],[-87.950806,39.174608],[-87.945329,38.851469],[-88.257515,38.845992],[-88.361576,38.911715],[-88.361576,39.169131],[-88.005575,39.174608]]]},"id":"17079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.211419,39.169131],[-87.052588,39.169131],[-86.685633,39.163654],[-86.680156,38.993869],[-86.680156,38.906238],[-86.756833,38.906238],[-86.90471,38.906238],[-87.096403,38.906238],[-87.238804,38.906238],[-87.238804,39.169131],[-87.211419,39.169131]]]},"id":"18055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.452875,39.141746],[-80.29952,39.103408],[-80.392628,38.725499],[-80.458352,38.74193],[-80.606229,38.906238],[-80.726722,39.097931],[-80.595275,39.169131],[-80.452875,39.141746]]]},"id":"54041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-116.233726,39.163654],[-115.90511,39.163654],[-115.001414,38.676207],[-115.001414,38.051835],[-115.894156,38.051835],[-115.894156,36.841432],[-115.899633,36.00346],[-117.164806,36.972878],[-117.164806,38.002543],[-117.690592,38.47356],[-118.194471,38.917192],[-117.865854,39.076023],[-117.772746,39.092454],[-116.600681,39.163654],[-116.233726,39.163654]]]},"id":"32023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.625833,39.147223],[-91.406755,39.141746],[-91.258878,39.141746],[-91.264355,38.993869],[-91.417709,38.709068],[-91.642264,38.703591],[-91.647741,38.703591],[-91.63131,39.059592],[-91.625833,39.147223]]]},"id":"29139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.620826,39.076023],[-84.615349,38.802176],[-84.659165,38.774791],[-84.779657,38.856946],[-84.796088,38.856946],[-84.872765,38.900761],[-84.878242,39.032208],[-84.817996,39.103408],[-84.620826,39.076023]]]},"id":"21015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.748183,39.141746],[-75.748183,39.141746],[-75.720798,38.829561],[-75.709844,38.637868],[-75.841291,38.703591],[-75.945353,38.676207],[-75.95083,38.917192],[-75.748183,39.141746]]]},"id":"24011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.391218,39.13627],[-100.810662,39.130793],[-100.816139,38.698114],[-101.128324,38.698114],[-101.259771,38.703591],[-101.484326,38.698114],[-101.478849,39.13627],[-101.391218,39.13627]]]},"id":"20109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.478849,39.13627],[-101.484326,38.698114],[-101.56648,38.698114],[-102.042974,38.698114],[-102.04845,39.048638],[-102.04845,39.130793],[-101.478849,39.13627]]]},"id":"20199"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.510347,39.130793],[-98.488439,39.130793],[-98.482962,38.873376],[-98.488439,38.698114],[-98.811579,38.698114],[-99.030656,38.698114],[-99.04161,38.698114],[-99.036133,39.130793],[-98.510347,39.130793]]]},"id":"20167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.261605,39.130793],[-96.96585,39.130793],[-96.889173,38.867899],[-96.932988,38.610483],[-97.261605,38.610483],[-97.371143,38.610483],[-97.371143,38.95553],[-97.371143,39.130793],[-97.261605,39.130793]]]},"id":"20041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.408565,39.130793],[-99.047087,39.130793],[-99.036133,39.130793],[-99.04161,38.698114],[-99.583827,38.698114],[-99.600258,38.698114],[-99.589304,39.130793],[-99.408565,39.130793]]]},"id":"20051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.739462,39.130793],[-100.723031,39.130793],[-100.164383,39.130793],[-100.147952,39.130793],[-100.153429,38.698114],[-100.246537,38.698114],[-100.58063,38.698114],[-100.690169,38.698114],[-100.816139,38.698114],[-100.810662,39.130793],[-100.739462,39.130793]]]},"id":"20063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.589304,39.130793],[-99.600258,38.698114],[-100.153429,38.698114],[-100.147952,39.130793],[-99.605735,39.130793],[-99.589304,39.130793]]]},"id":"20195"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.887386,39.130793],[-76.838094,39.103408],[-76.68474,38.747407],[-76.673786,38.533806],[-77.046218,38.61596],[-77.084556,38.709068],[-77.040741,38.785745],[-77.040741,38.791222],[-77.002402,38.966484],[-76.887386,39.130793]]]},"id":"24033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.995044,39.130793],[-104.660951,39.130793],[-104.053011,39.130793],[-104.053011,38.867899],[-104.053011,38.522852],[-104.940275,38.517375],[-104.940275,38.648822],[-105.033383,39.130793],[-104.995044,39.130793]]]},"id":"08041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.329138,39.130793],[-105.329138,39.130793],[-105.033383,39.130793],[-104.940275,38.648822],[-105.329138,38.698114],[-105.329138,39.130793]]]},"id":"08119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.319594,39.021254],[-84.231963,38.873376],[-84.418179,38.807653],[-84.50581,39.092454],[-84.319594,39.021254]]]},"id":"21037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.757303,39.032208],[-79.357487,38.966484],[-79.35201,38.95553],[-79.625857,38.665253],[-80.244751,38.385929],[-80.277612,38.692637],[-80.08592,38.944577],[-79.823026,39.114362],[-79.757303,39.032208]]]},"id":"54083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.22832,39.114362],[-80.08592,38.944577],[-80.277612,38.692637],[-80.392628,38.725499],[-80.29952,39.103408],[-80.22832,39.114362]]]},"id":"54097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.760876,39.114362],[-119.552752,39.086977],[-119.328197,38.533806],[-119.585614,38.714545],[-119.903276,38.933623],[-120.001861,39.065069],[-120.001861,39.114362],[-119.760876,39.114362]]]},"id":"32005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.726722,39.097931],[-80.606229,38.906238],[-80.984138,38.720022],[-81.03343,39.0103],[-80.814353,39.108885],[-80.726722,39.097931]]]},"id":"54021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.338776,39.103408],[-78.311391,39.0103],[-78.388068,38.829561],[-78.640007,38.605006],[-78.870039,38.763838],[-78.541422,39.054115],[-78.338776,39.103408]]]},"id":"51171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.50581,39.092454],[-84.418179,38.807653],[-84.533195,38.791222],[-84.615349,38.802176],[-84.620826,39.076023],[-84.50581,39.092454]]]},"id":"21117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.739956,39.092454],[-81.581124,39.026731],[-81.504447,38.917192],[-81.520878,38.610483],[-81.69614,38.626914],[-81.772817,38.681683],[-81.909741,38.878853],[-81.745433,39.097931],[-81.739956,39.092454]]]},"id":"54035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.764072,39.076023],[-118.753119,39.076023],[-117.865854,39.076023],[-118.194471,38.917192],[-117.690592,38.47356],[-118.429979,37.898481],[-119.158412,38.413313],[-118.906473,38.413313],[-118.764072,39.076023]]]},"id":"32021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.798368,39.070546],[-85.792891,38.807653],[-85.885999,38.736453],[-86.274862,38.763838],[-86.318678,38.988392],[-86.318678,39.048638],[-86.077692,39.048638],[-85.798368,39.070546]]]},"id":"18071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.49803,39.054115],[-95.185844,39.043162],[-95.054398,38.982915],[-95.054398,38.736453],[-95.49803,38.736453],[-95.503507,38.736453],[-95.49803,38.867899],[-95.49803,39.054115]]]},"id":"20045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.001861,39.065069],[-119.903276,38.933623],[-120.073061,38.703591],[-121.026049,38.506421],[-121.141065,38.714545],[-121.04248,38.917192],[-120.001861,39.065069]]]},"id":"06017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.107804,39.065069],[-91.63131,39.059592],[-91.647741,38.703591],[-92.009219,38.572145],[-92.222819,38.643345],[-92.107804,39.065069]]]},"id":"29027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.918391,39.032208],[-92.556913,38.971961],[-92.496666,38.922669],[-92.841714,38.681683],[-93.060791,38.692637],[-93.049837,38.928146],[-92.934822,39.065069],[-92.918391,39.032208]]]},"id":"29053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.90652,38.988392],[-94.605288,39.043162],[-94.610765,38.845992],[-94.610765,38.736453],[-94.966767,38.736453],[-95.054398,38.736453],[-95.054398,38.982915],[-94.90652,38.988392]]]},"id":"20091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.375233,39.054115],[-106.189017,39.054115],[-105.96994,38.692637],[-106.008278,38.446175],[-106.249264,38.424267],[-106.599788,38.999346],[-106.57788,39.059592],[-106.375233,39.054115]]]},"id":"08015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.331019,39.059592],[-77.117418,38.933623],[-77.172187,38.895284],[-77.15028,38.878853],[-77.111941,38.845992],[-77.040741,38.785745],[-77.084556,38.709068],[-77.128372,38.632391],[-77.22148,38.637868],[-77.533665,38.845992],[-77.331019,39.059592]]]},"id":"51059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.383038,39.054115],[-83.273499,39.015777],[-83.273499,39.0103],[-83.268022,38.61596],[-83.645931,38.637868],[-83.706177,38.637868],[-83.673316,39.021254],[-83.383038,39.054115]]]},"id":"39001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.04845,39.048638],[-102.042974,38.698114],[-102.042974,38.61596],[-103.171223,38.610483],[-103.165746,39.037685],[-102.04845,39.048638]]]},"id":"08017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.978143,39.043162],[-111.299003,39.032208],[-111.30448,38.511898],[-111.764543,38.500944],[-111.857651,38.500944],[-112.52036,38.511898],[-112.514883,38.572145],[-112.016482,39.043162],[-111.978143,39.043162]]]},"id":"49041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.115584,39.037685],[-81.03343,39.0103],[-80.984138,38.720022],[-81.03343,38.665253],[-81.055338,38.643345],[-81.082723,38.610483],[-81.279893,38.917192],[-81.164877,39.032208],[-81.115584,39.037685]]]},"id":"54013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.15256,39.037685],[-78.004682,38.977438],[-78.130652,38.862422],[-78.256622,38.758361],[-78.284006,38.758361],[-78.388068,38.829561],[-78.311391,39.0103],[-78.15256,39.037685]]]},"id":"51187"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.435527,39.037685],[-82.320511,39.026731],[-82.101434,38.95553],[-82.216449,38.594052],[-82.265742,38.599529],[-82.28765,38.583099],[-82.577927,38.845992],[-82.435527,39.037685]]]},"id":"39053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.933012,39.0103],[-84.878242,39.032208],[-84.872765,38.900761],[-85.135659,38.928146],[-85.130182,38.950054],[-84.933012,39.0103]]]},"id":"18115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.909741,38.878853],[-81.772817,38.681683],[-82.057618,38.47356],[-82.216449,38.594052],[-82.101434,38.95553],[-81.909741,38.878853]]]},"id":"54053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.248841,39.026731],[-89.254318,38.74193],[-89.593888,38.74193],[-89.599365,38.74193],[-89.637704,38.999346],[-89.248841,39.026731]]]},"id":"17005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.273499,39.0103],[-83.273499,39.015777],[-82.807959,38.950054],[-82.649128,38.851469],[-82.813436,38.572145],[-83.032514,38.725499],[-83.268022,38.61596],[-83.273499,39.0103]]]},"id":"39145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.960867,39.015777],[-77.654158,38.944577],[-77.533665,38.555714],[-77.637727,38.407836],[-77.933482,38.698114],[-78.130652,38.862422],[-78.004682,38.977438],[-77.960867,39.015777]]]},"id":"51061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.240167,38.999346],[-90.147059,38.999346],[-89.69795,38.999346],[-89.637704,38.999346],[-89.599365,38.74193],[-89.708904,38.654299],[-90.179921,38.659776],[-90.168967,38.774791],[-90.119674,38.807653],[-90.278506,38.922669],[-90.240167,38.999346]]]},"id":"17119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.035264,38.993869],[-77.002402,38.966484],[-77.040741,38.791222],[-77.046218,38.840515],[-77.117418,38.933623],[-77.035264,38.993869]]]},"id":"11001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.111001,38.895284],[-90.957646,38.873376],[-90.963123,38.550237],[-91.368417,38.698114],[-91.417709,38.709068],[-91.264355,38.993869],[-91.111001,38.895284]]]},"id":"29219"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.680156,38.993869],[-86.318678,38.988392],[-86.274862,38.763838],[-86.307724,38.68716],[-86.685633,38.68716],[-86.680156,38.906238],[-86.680156,38.993869]]]},"id":"18093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.448291,38.966484],[-90.278506,38.922669],[-90.119674,38.807653],[-90.283983,38.878853],[-90.733092,38.637868],[-90.963123,38.550237],[-90.957646,38.873376],[-90.667368,38.933623],[-90.448291,38.966484]]]},"id":"29183"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.047134,38.451652],[-75.342889,38.451652],[-75.69889,38.561191],[-75.709844,38.637868],[-75.720798,38.829561],[-75.310028,38.944577],[-75.047134,38.451652]]]},"id":"10005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.486159,38.95553],[-97.371143,38.95553],[-97.371143,38.610483],[-97.924314,38.610483],[-97.929791,38.873376],[-97.929791,38.95553],[-97.486159,38.95553]]]},"id":"20169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.35201,38.95553],[-79.132932,38.81313],[-79.056255,38.763838],[-79.22604,38.479037],[-79.313671,38.413313],[-79.647764,38.594052],[-79.625857,38.665253],[-79.35201,38.95553]]]},"id":"54071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.071322,38.9391],[-75.95083,38.917192],[-75.945353,38.676207],[-76.153476,38.632391],[-76.197292,38.851469],[-76.071322,38.9391]]]},"id":"24041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.654158,38.944577],[-77.533665,38.845992],[-77.22148,38.637868],[-77.303634,38.506421],[-77.533665,38.555714],[-77.654158,38.944577]]]},"id":"51153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.498947,38.944577],[-93.049837,38.928146],[-93.060791,38.692637],[-93.066268,38.528329],[-93.159376,38.533806],[-93.515377,38.511898],[-93.5099,38.555714],[-93.498947,38.928146],[-93.498947,38.944577]]]},"id":"29159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.433247,38.933623],[-81.279893,38.917192],[-81.082723,38.610483],[-81.192262,38.528329],[-81.520878,38.610483],[-81.504447,38.917192],[-81.433247,38.933623]]]},"id":"54087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.800178,38.9391],[-93.498947,38.928146],[-93.5099,38.555714],[-93.794701,38.561191],[-94.063071,38.566668],[-94.117841,38.835038],[-94.112364,38.917192],[-93.800178,38.9391]]]},"id":"29101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.117418,38.933623],[-77.046218,38.840515],[-77.084556,38.845992],[-77.111941,38.845992],[-77.15028,38.878853],[-77.172187,38.895284],[-77.117418,38.933623]]]},"id":"51013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.585614,38.714545],[-119.640383,38.325682],[-120.018292,38.435221],[-120.073061,38.506421],[-120.073061,38.511898],[-120.073061,38.698114],[-120.073061,38.703591],[-119.903276,38.933623],[-119.585614,38.714545]]]},"id":"06003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.135659,38.928146],[-84.872765,38.900761],[-84.796088,38.856946],[-85.02612,38.763838],[-85.201382,38.692637],[-85.201382,38.911715],[-85.135659,38.928146]]]},"id":"18155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.061191,38.928146],[-121.836636,38.922669],[-121.601128,38.736453],[-121.590174,38.314728],[-121.738051,38.539283],[-122.105006,38.511898],[-122.395284,38.862422],[-122.340515,38.922669],[-122.061191,38.928146]]]},"id":"06113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.463805,38.862422],[-92.392605,38.736453],[-92.496666,38.429744],[-92.611682,38.429744],[-92.622636,38.429744],[-92.841714,38.681683],[-92.496666,38.922669],[-92.463805,38.862422]]]},"id":"29135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.613516,38.917192],[-88.361576,38.911715],[-88.257515,38.845992],[-88.252038,38.599529],[-88.586131,38.605006],[-88.701147,38.605006],[-88.69567,38.824084],[-88.69567,38.917192],[-88.613516,38.917192]]]},"id":"17025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.299967,38.911715],[-85.201382,38.911715],[-85.201382,38.692637],[-85.332828,38.736453],[-85.425936,38.588575],[-85.568337,38.605006],[-85.683353,38.81313],[-85.442367,38.911715],[-85.299967,38.911715]]]},"id":"18077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.238804,38.906238],[-87.096403,38.906238],[-87.244281,38.54476],[-87.463358,38.533806],[-87.605759,38.446175],[-87.742682,38.413313],[-87.649574,38.566668],[-87.534558,38.851469],[-87.534558,38.900761],[-87.238804,38.906238]]]},"id":"18083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.756833,38.906238],[-86.680156,38.906238],[-86.685633,38.68716],[-86.680156,38.528329],[-86.926618,38.506421],[-86.90471,38.906238],[-86.756833,38.906238]]]},"id":"18101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.096403,38.906238],[-86.90471,38.906238],[-86.926618,38.506421],[-87.074495,38.517375],[-87.244281,38.54476],[-87.096403,38.906238]]]},"id":"18027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.606229,38.906238],[-80.458352,38.74193],[-80.650044,38.528329],[-80.677429,38.533806],[-80.880076,38.506421],[-81.03343,38.665253],[-80.984138,38.720022],[-80.606229,38.906238]]]},"id":"54007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.283983,38.878853],[-90.119674,38.807653],[-90.168967,38.774791],[-90.256598,38.533806],[-90.262075,38.522852],[-90.344229,38.385929],[-90.464722,38.500944],[-90.738569,38.47356],[-90.733092,38.637868],[-90.283983,38.878853]]]},"id":"29189"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.231963,38.829561],[-84.204579,38.583099],[-84.401749,38.561191],[-84.478426,38.54476],[-84.533195,38.791222],[-84.418179,38.807653],[-84.231963,38.873376],[-84.231963,38.829561]]]},"id":"21191"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.929791,38.873376],[-97.924314,38.610483],[-97.924314,38.522852],[-98.017422,38.522852],[-98.482962,38.522852],[-98.488439,38.698114],[-98.482962,38.873376],[-97.929791,38.873376]]]},"id":"20053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.686526,38.867899],[-96.50031,38.867899],[-96.352432,38.74193],[-96.352432,38.522852],[-96.817972,38.522852],[-96.932988,38.610483],[-96.889173,38.867899],[-96.686526,38.867899]]]},"id":"20127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.667815,38.867899],[-95.49803,38.867899],[-95.503507,38.736453],[-95.508984,38.435221],[-95.656861,38.435221],[-95.952616,38.435221],[-95.947139,38.736453],[-95.947139,38.867899],[-95.667815,38.867899]]]},"id":"20139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.395284,38.862422],[-122.105006,38.511898],[-122.406238,38.155897],[-122.625315,38.665253],[-122.395284,38.862422]]]},"id":"06055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.256622,38.758361],[-78.130652,38.862422],[-77.933482,38.698114],[-78.229237,38.533806],[-78.338776,38.626914],[-78.284006,38.758361],[-78.256622,38.758361]]]},"id":"51157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.779657,38.856946],[-84.659165,38.774791],[-84.785134,38.720022],[-84.817996,38.709068],[-84.933012,38.659776],[-85.02612,38.763838],[-84.796088,38.856946],[-84.779657,38.856946]]]},"id":"21077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-123.074425,38.851469],[-122.822485,38.851469],[-122.625315,38.665253],[-122.406238,38.155897],[-122.406238,38.15042],[-122.488392,38.112082],[-122.844393,38.27639],[-123.003224,38.298298],[-123.534488,38.769315],[-123.074425,38.851469]]]},"id":"06097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.534558,38.851469],[-87.649574,38.566668],[-87.912467,38.572145],[-87.90699,38.851469],[-87.534558,38.851469]]]},"id":"17101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.90699,38.851469],[-87.912467,38.572145],[-87.956283,38.572145],[-88.005575,38.572145],[-88.147976,38.566668],[-88.252038,38.599529],[-88.257515,38.845992],[-87.945329,38.851469],[-87.90699,38.851469]]]},"id":"17159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.990532,38.845992],[-78.870039,38.763838],[-78.640007,38.605006],[-78.486653,38.41879],[-78.661915,38.27639],[-78.749546,38.20519],[-79.22604,38.479037],[-79.056255,38.763838],[-78.990532,38.845992]]]},"id":"51165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.649128,38.851469],[-82.577927,38.845992],[-82.28765,38.583099],[-82.506727,38.413313],[-82.561497,38.40236],[-82.594358,38.424267],[-82.665558,38.506421],[-82.813436,38.572145],[-82.649128,38.851469]]]},"id":"39087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.583381,38.845992],[-94.117841,38.835038],[-94.063071,38.566668],[-94.063071,38.446175],[-94.610765,38.479037],[-94.610765,38.479037],[-94.610765,38.736453],[-94.610765,38.845992],[-94.583381,38.845992]]]},"id":"29037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.084556,38.845992],[-77.046218,38.840515],[-77.040741,38.791222],[-77.040741,38.785745],[-77.111941,38.845992],[-77.084556,38.845992]]]},"id":"51510"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.683353,38.81313],[-85.568337,38.605006],[-85.590245,38.605006],[-85.847661,38.561191],[-85.885999,38.736453],[-85.792891,38.807653],[-85.683353,38.81313]]]},"id":"18143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.388068,38.829561],[-78.284006,38.758361],[-78.338776,38.626914],[-78.448314,38.500944],[-78.453791,38.47356],[-78.459268,38.468083],[-78.486653,38.41879],[-78.640007,38.605006],[-78.388068,38.829561]]]},"id":"51139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.051224,38.769315],[-83.903347,38.769315],[-83.990978,38.594052],[-84.160763,38.555714],[-84.204579,38.583099],[-84.231963,38.829561],[-84.051224,38.769315]]]},"id":"21023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.777824,38.824084],[-88.69567,38.824084],[-88.701147,38.605006],[-88.701147,38.47356],[-88.914747,38.479037],[-89.144779,38.47356],[-89.144779,38.500944],[-89.139302,38.736453],[-88.777824,38.824084]]]},"id":"17121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.615349,38.802176],[-84.533195,38.791222],[-84.478426,38.54476],[-84.555103,38.495467],[-84.582488,38.47356],[-84.785134,38.720022],[-84.659165,38.774791],[-84.615349,38.802176]]]},"id":"21081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.274862,38.763838],[-85.885999,38.736453],[-85.847661,38.561191],[-85.995538,38.41879],[-86.011969,38.41879],[-86.033877,38.41879],[-86.198185,38.424267],[-86.252954,38.424267],[-86.307724,38.424267],[-86.307724,38.68716],[-86.274862,38.763838]]]},"id":"18175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.168967,38.774791],[-90.179921,38.659776],[-90.256598,38.533806],[-90.168967,38.774791]]]},"id":"29510"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.635447,38.769315],[-76.531385,38.714545],[-76.405416,38.320205],[-76.673786,38.500944],[-76.673786,38.533806],[-76.68474,38.747407],[-76.635447,38.769315]]]},"id":"24009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.848578,38.747407],[-83.706177,38.637868],[-83.645931,38.637868],[-83.640454,38.522852],[-83.930732,38.489991],[-83.96907,38.583099],[-83.990978,38.594052],[-83.903347,38.769315],[-83.848578,38.747407]]]},"id":"21161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.02612,38.763838],[-84.933012,38.659776],[-85.075412,38.599529],[-85.16852,38.583099],[-85.332828,38.736453],[-85.201382,38.692637],[-85.02612,38.763838]]]},"id":"21041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.813436,38.572145],[-82.665558,38.506421],[-82.818913,38.374975],[-83.16396,38.506421],[-83.032514,38.725499],[-82.813436,38.572145]]]},"id":"21089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.593888,38.74193],[-89.254318,38.74193],[-89.139302,38.736453],[-89.144779,38.500944],[-89.320041,38.511898],[-89.703427,38.41879],[-89.708904,38.654299],[-89.599365,38.74193],[-89.593888,38.74193]]]},"id":"17027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.625857,38.665253],[-79.647764,38.594052],[-79.795642,38.265436],[-79.95995,38.062789],[-80.359767,38.227097],[-80.244751,38.385929],[-79.625857,38.665253]]]},"id":"54075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.336002,38.74193],[-95.947139,38.736453],[-95.952616,38.435221],[-95.958093,38.172328],[-96.281232,38.172328],[-96.357909,38.172328],[-96.352432,38.522852],[-96.352432,38.74193],[-96.336002,38.74193]]]},"id":"20111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.458352,38.74193],[-80.392628,38.725499],[-80.277612,38.692637],[-80.244751,38.385929],[-80.359767,38.227097],[-80.414536,38.254482],[-80.436444,38.265436],[-80.650044,38.528329],[-80.458352,38.74193]]]},"id":"54101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.392605,38.736453],[-92.222819,38.643345],[-92.009219,38.572145],[-92.195435,38.336636],[-92.496666,38.429744],[-92.392605,38.736453]]]},"id":"29051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.49803,38.736453],[-95.054398,38.736453],[-95.065351,38.391406],[-95.235137,38.391406],[-95.508984,38.391406],[-95.508984,38.435221],[-95.503507,38.736453],[-95.49803,38.736453]]]},"id":"20059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.966767,38.736453],[-94.610765,38.736453],[-94.610765,38.479037],[-94.610765,38.391406],[-95.010582,38.391406],[-95.065351,38.391406],[-95.054398,38.736453],[-94.966767,38.736453]]]},"id":"20121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.425936,38.588575],[-85.332828,38.736453],[-85.16852,38.583099],[-85.316398,38.489991],[-85.431413,38.522852],[-85.425936,38.588575]]]},"id":"21223"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.557312,38.736453],[-121.486112,38.736453],[-121.141065,38.714545],[-121.026049,38.506421],[-121.026049,38.298298],[-121.097249,38.287344],[-121.57922,38.095651],[-121.628512,38.101128],[-121.864021,38.068266],[-121.590174,38.314728],[-121.601128,38.736453],[-121.557312,38.736453]]]},"id":"06067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.268022,38.61596],[-83.032514,38.725499],[-83.16396,38.506421],[-83.339222,38.320205],[-83.410422,38.396883],[-83.454238,38.380452],[-83.602115,38.506421],[-83.640454,38.522852],[-83.645931,38.637868],[-83.268022,38.61596]]]},"id":"21135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.817996,38.709068],[-84.785134,38.720022],[-84.582488,38.47356],[-84.741319,38.353067],[-84.861812,38.358544],[-84.872765,38.358544],[-85.075412,38.599529],[-84.933012,38.659776],[-84.817996,38.709068]]]},"id":"21187"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.417709,38.709068],[-91.368417,38.698114],[-91.368417,38.210667],[-91.532725,38.210667],[-91.532725,38.15042],[-91.63131,38.155897],[-91.642264,38.287344],[-91.642264,38.703591],[-91.417709,38.709068]]]},"id":"29073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.585614,38.714545],[-119.328197,38.533806],[-119.158412,38.413313],[-118.429979,37.898481],[-117.832993,37.465803],[-117.937054,37.465803],[-118.775026,37.460326],[-119.021489,37.586295],[-119.267951,37.73965],[-119.640383,38.325682],[-119.585614,38.714545]]]},"id":"06051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.073061,38.698114],[-120.073061,38.511898],[-120.993187,38.227097],[-121.026049,38.298298],[-121.026049,38.506421],[-120.073061,38.703591],[-120.073061,38.698114]]]},"id":"06005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.963123,38.550237],[-90.733092,38.637868],[-90.738569,38.47356],[-90.782384,38.20519],[-91.09457,38.20519],[-91.368417,38.210667],[-91.368417,38.698114],[-90.963123,38.550237]]]},"id":"29071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.647741,38.703591],[-91.642264,38.703591],[-91.642264,38.287344],[-91.954449,38.287344],[-92.195435,38.292821],[-92.195435,38.336636],[-92.009219,38.572145],[-91.647741,38.703591]]]},"id":"29151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.046218,38.61596],[-76.673786,38.533806],[-76.673786,38.500944],[-76.706647,38.506421],[-76.832617,38.298298],[-77.128372,38.632391],[-77.084556,38.709068],[-77.046218,38.61596]]]},"id":"24017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.841291,38.703591],[-75.709844,38.637868],[-75.69889,38.561191],[-75.813906,38.489991],[-75.923445,38.265436],[-76.153476,38.632391],[-75.945353,38.676207],[-75.841291,38.703591]]]},"id":"24019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.259771,38.703591],[-101.128324,38.698114],[-101.122848,38.265436],[-101.544572,38.265436],[-101.56648,38.265436],[-101.56648,38.698114],[-101.484326,38.698114],[-101.259771,38.703591]]]},"id":"20203"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.128324,38.698114],[-100.816139,38.698114],[-100.690169,38.698114],[-100.684692,38.265436],[-100.881862,38.265436],[-101.10094,38.265436],[-101.122848,38.265436],[-101.128324,38.698114]]]},"id":"20171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.58063,38.698114],[-100.246537,38.698114],[-100.246537,38.259959],[-100.684692,38.265436],[-100.690169,38.698114],[-100.58063,38.698114]]]},"id":"20101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.56648,38.698114],[-101.56648,38.265436],[-102.042974,38.259959],[-102.042974,38.270913],[-102.042974,38.61596],[-102.042974,38.698114],[-101.56648,38.698114]]]},"id":"20071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.246537,38.698114],[-100.153429,38.698114],[-99.600258,38.698114],[-99.583827,38.698114],[-99.583827,38.34759],[-99.583827,38.259959],[-100.224629,38.259959],[-100.246537,38.259959],[-100.246537,38.698114]]]},"id":"20135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.933482,38.698114],[-77.637727,38.407836],[-77.621296,38.369498],[-77.703451,38.358544],[-77.895143,38.391406],[-78.092313,38.309252],[-78.229237,38.533806],[-77.933482,38.698114]]]},"id":"51047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.329138,38.698114],[-104.940275,38.648822],[-104.940275,38.517375],[-105.049814,38.259959],[-105.794678,38.265436],[-106.008278,38.446175],[-105.96994,38.692637],[-105.329138,38.698114]]]},"id":"08043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.04161,38.698114],[-99.030656,38.698114],[-99.030656,38.34759],[-99.359273,38.34759],[-99.583827,38.34759],[-99.583827,38.698114],[-99.04161,38.698114]]]},"id":"20165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.811579,38.698114],[-98.488439,38.698114],[-98.482962,38.522852],[-98.477485,38.259959],[-98.800625,38.259959],[-98.910164,38.259959],[-99.030656,38.34759],[-99.030656,38.698114],[-98.811579,38.698114]]]},"id":"20009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.060791,38.692637],[-92.841714,38.681683],[-92.622636,38.429744],[-92.693836,38.22162],[-93.077222,38.259959],[-93.066268,38.528329],[-93.060791,38.692637]]]},"id":"29141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.307724,38.68716],[-86.307724,38.424267],[-86.680156,38.396883],[-86.680156,38.528329],[-86.685633,38.68716],[-86.307724,38.68716]]]},"id":"18117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.69614,38.626914],[-81.69614,38.626914],[-81.915218,38.325682],[-82.046664,38.374975],[-82.057618,38.47356],[-81.772817,38.681683],[-81.69614,38.626914]]]},"id":"54079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.70566,38.676207],[-114.048427,38.676207],[-114.048427,38.572145],[-114.048427,38.15042],[-114.053904,37.602726],[-114.048427,37.000263],[-114.048427,36.841432],[-114.081288,36.841432],[-115.894156,36.841432],[-115.894156,38.051835],[-115.001414,38.051835],[-115.001414,38.676207],[-114.70566,38.676207]]]},"id":"32017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-108.001885,38.67073],[-107.498006,38.67073],[-107.63493,38.303775],[-107.963546,38.15042],[-109.042503,38.15042],[-109.058934,38.500944],[-108.379794,38.67073],[-108.001885,38.67073]]]},"id":"08085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.055338,38.643345],[-81.03343,38.665253],[-80.880076,38.506421],[-81.2306,38.265436],[-81.192262,38.528329],[-81.082723,38.610483],[-81.055338,38.643345]]]},"id":"54015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.179921,38.659776],[-89.708904,38.654299],[-89.703427,38.41879],[-89.703427,38.22162],[-89.900597,38.22162],[-90.207305,38.47356],[-90.262075,38.522852],[-90.256598,38.533806],[-90.179921,38.659776]]]},"id":"17163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.448314,38.500944],[-78.338776,38.626914],[-78.229237,38.533806],[-78.092313,38.309252],[-78.289483,38.270913],[-78.453791,38.47356],[-78.448314,38.500944]]]},"id":"51113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.69614,38.626914],[-81.69614,38.626914],[-81.520878,38.610483],[-81.192262,38.528329],[-81.2306,38.265436],[-81.2306,38.265436],[-81.378478,37.969681],[-81.455155,37.986112],[-81.756386,38.20519],[-81.833064,38.210667],[-81.915218,38.325682],[-81.69614,38.626914]]]},"id":"54039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.042974,38.61596],[-102.042974,38.270913],[-102.212759,38.265436],[-102.744022,38.265436],[-103.401255,38.265436],[-103.49984,38.265436],[-103.505317,38.517375],[-103.171223,38.610483],[-102.042974,38.61596]]]},"id":"08061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.924314,38.610483],[-97.371143,38.610483],[-97.371143,38.172328],[-97.69976,38.172328],[-97.924314,38.172328],[-97.924314,38.522852],[-97.924314,38.610483]]]},"id":"20113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.261605,38.610483],[-96.932988,38.610483],[-96.817972,38.522852],[-96.83988,38.084697],[-97.113727,38.084697],[-97.152066,38.090174],[-97.152066,38.172328],[-97.371143,38.172328],[-97.371143,38.610483],[-97.261605,38.610483]]]},"id":"20115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.96907,38.583099],[-83.930732,38.489991],[-83.980024,38.440698],[-84.001932,38.440698],[-84.100517,38.457129],[-84.160763,38.555714],[-83.990978,38.594052],[-83.96907,38.583099]]]},"id":"21201"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.586131,38.605006],[-88.252038,38.599529],[-88.147976,38.566668],[-88.153453,38.254482],[-88.37253,38.254482],[-88.591608,38.254482],[-88.701147,38.254482],[-88.701147,38.47356],[-88.701147,38.605006],[-88.586131,38.605006]]]},"id":"17191"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.590245,38.605006],[-85.568337,38.605006],[-85.425936,38.588575],[-85.431413,38.522852],[-85.639537,38.380452],[-85.792891,38.287344],[-85.995538,38.41879],[-85.847661,38.561191],[-85.590245,38.605006]]]},"id":"18019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.265742,38.599529],[-82.216449,38.594052],[-82.057618,38.47356],[-82.046664,38.374975],[-82.265742,38.227097],[-82.506727,38.413313],[-82.28765,38.583099],[-82.265742,38.599529]]]},"id":"54011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.16852,38.583099],[-85.075412,38.599529],[-84.872765,38.358544],[-84.998735,38.336636],[-85.283536,38.358544],[-85.316398,38.489991],[-85.16852,38.583099]]]},"id":"21103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.533665,38.555714],[-77.303634,38.506421],[-77.287203,38.34759],[-77.325542,38.243528],[-77.369357,38.249005],[-77.446034,38.281867],[-77.528188,38.309252],[-77.621296,38.369498],[-77.637727,38.407836],[-77.533665,38.555714]]]},"id":"51179"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.647764,38.594052],[-79.313671,38.413313],[-79.510841,38.177805],[-79.795642,38.265436],[-79.647764,38.594052]]]},"id":"51091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.401749,38.561191],[-84.204579,38.583099],[-84.160763,38.555714],[-84.100517,38.457129],[-84.193625,38.369498],[-84.264825,38.325682],[-84.440087,38.281867],[-84.555103,38.495467],[-84.478426,38.54476],[-84.401749,38.561191]]]},"id":"21097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.97175,38.572145],[-112.514883,38.572145],[-112.52036,38.511898],[-112.443683,38.15042],[-112.476545,38.144943],[-112.876362,38.15042],[-114.048427,38.15042],[-114.048427,38.572145],[-113.97175,38.572145]]]},"id":"49001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.912467,38.572145],[-87.649574,38.566668],[-87.742682,38.413313],[-87.972714,38.232574],[-87.989145,38.259959],[-87.956283,38.572145],[-87.912467,38.572145]]]},"id":"17185"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.005575,38.572145],[-87.956283,38.572145],[-87.989145,38.259959],[-88.005575,38.259959],[-88.153453,38.254482],[-88.147976,38.566668],[-88.005575,38.572145]]]},"id":"17047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.794701,38.561191],[-93.5099,38.555714],[-93.515377,38.511898],[-93.520854,38.20519],[-93.772794,38.20519],[-94.052118,38.216144],[-94.063071,38.446175],[-94.063071,38.566668],[-93.794701,38.561191]]]},"id":"29083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.813906,38.489991],[-75.69889,38.561191],[-75.342889,38.451652],[-75.611259,38.27639],[-75.62769,38.281867],[-75.863199,38.238051],[-75.923445,38.265436],[-75.813906,38.489991]]]},"id":"24045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.677429,38.533806],[-80.650044,38.528329],[-80.436444,38.265436],[-80.880076,38.101128],[-81.192262,38.232574],[-81.2306,38.265436],[-81.2306,38.265436],[-80.880076,38.506421],[-80.677429,38.533806]]]},"id":"54067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.074495,38.517375],[-87.074495,38.232574],[-87.310004,38.243528],[-87.315481,38.243528],[-87.463358,38.533806],[-87.244281,38.54476],[-87.074495,38.517375]]]},"id":"18125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.738051,38.539283],[-121.590174,38.314728],[-121.864021,38.068266],[-122.269314,38.062789],[-122.406238,38.15042],[-122.406238,38.155897],[-122.105006,38.511898],[-121.738051,38.539283]]]},"id":"06095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.159376,38.533806],[-93.066268,38.528329],[-93.077222,38.259959],[-93.066268,38.062789],[-93.411315,38.068266],[-93.504423,38.073743],[-93.520854,38.20519],[-93.515377,38.511898],[-93.159376,38.533806]]]},"id":"29015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.605759,38.446175],[-87.463358,38.533806],[-87.315481,38.243528],[-87.468835,38.166851],[-87.687913,38.166851],[-87.972714,38.232574],[-87.978191,38.232574],[-87.972714,38.232574],[-87.742682,38.413313],[-87.605759,38.446175]]]},"id":"18051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.680156,38.528329],[-86.680156,38.396883],[-86.680156,38.265436],[-86.789695,38.20519],[-86.866372,38.20519],[-87.019726,38.20519],[-87.074495,38.232574],[-87.074495,38.517375],[-86.926618,38.506421],[-86.680156,38.528329]]]},"id":"18037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.602115,38.506421],[-83.454238,38.380452],[-83.634977,38.188759],[-83.848578,38.298298],[-83.980024,38.440698],[-83.930732,38.489991],[-83.640454,38.522852],[-83.602115,38.506421]]]},"id":"21069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.639537,38.380452],[-85.431413,38.522852],[-85.316398,38.489991],[-85.283536,38.358544],[-85.469752,38.287344],[-85.639537,38.380452]]]},"id":"21185"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.053011,38.522852],[-103.505317,38.517375],[-103.49984,38.265436],[-104.058488,38.144943],[-104.053011,38.522852]]]},"id":"08025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.017422,38.522852],[-97.924314,38.522852],[-97.924314,38.172328],[-97.929791,38.172328],[-98.472008,38.172328],[-98.477485,38.259959],[-98.482962,38.522852],[-98.017422,38.522852]]]},"id":"20159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.053011,38.522852],[-104.058488,38.144943],[-104.058488,37.734173],[-104.348765,37.816327],[-105.049814,37.914912],[-105.049814,38.259959],[-104.940275,38.517375],[-104.053011,38.522852]]]},"id":"08101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.817972,38.522852],[-96.352432,38.522852],[-96.357909,38.172328],[-96.522218,38.084697],[-96.83988,38.084697],[-96.817972,38.522852]]]},"id":"20017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.207305,38.47356],[-89.900597,38.22162],[-90.03752,38.22162],[-90.207305,38.090174],[-90.251121,38.128512],[-90.344229,38.385929],[-90.262075,38.522852],[-90.207305,38.47356]]]},"id":"17133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.320041,38.511898],[-89.144779,38.500944],[-89.144779,38.47356],[-89.144779,38.210667],[-89.593888,38.22162],[-89.703427,38.22162],[-89.703427,38.41879],[-89.320041,38.511898]]]},"id":"17189"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.706647,38.506421],[-76.673786,38.500944],[-76.405416,38.320205],[-76.832617,38.298298],[-76.706647,38.506421]]]},"id":"24037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.857651,38.500944],[-111.764543,38.500944],[-111.84122,38.15042],[-112.443683,38.15042],[-112.52036,38.511898],[-111.857651,38.500944]]]},"id":"49031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.764543,38.500944],[-111.30448,38.511898],[-110.022876,38.500944],[-109.929768,38.15042],[-111.84122,38.15042],[-111.764543,38.500944]]]},"id":"49055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.073061,38.506421],[-120.018292,38.435221],[-120.045677,38.424267],[-120.653617,37.832758],[-120.927464,38.07922],[-120.993187,38.227097],[-120.073061,38.511898],[-120.073061,38.506421]]]},"id":"06009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.594358,38.424267],[-82.605312,38.249005],[-82.791528,38.243528],[-82.818913,38.374975],[-82.665558,38.506421],[-82.594358,38.424267]]]},"id":"21019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.16396,38.506421],[-82.818913,38.374975],[-82.791528,38.243528],[-82.922975,38.177805],[-83.246114,38.194236],[-83.339222,38.320205],[-83.16396,38.506421]]]},"id":"21043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.464722,38.500944],[-90.344229,38.385929],[-90.251121,38.128512],[-90.415429,38.040881],[-90.639984,38.07922],[-90.782384,38.20519],[-90.738569,38.47356],[-90.464722,38.500944]]]},"id":"29099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.022876,38.500944],[-109.058934,38.500944],[-109.042503,38.15042],[-109.042503,37.88205],[-109.042503,37.482234],[-109.042503,37.000263],[-110.000968,37.000263],[-110.751309,37.00574],[-111.414018,37.000263],[-110.647247,37.54248],[-109.929768,38.15042],[-110.022876,38.500944]]]},"id":"49037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.555103,38.495467],[-84.440087,38.281867],[-84.401749,38.20519],[-84.626303,38.117559],[-84.724888,38.194236],[-84.741319,38.353067],[-84.582488,38.47356],[-84.555103,38.495467]]]},"id":"21209"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.313671,38.413313],[-79.22604,38.479037],[-78.749546,38.20519],[-78.837177,38.046358],[-78.859085,38.029928],[-79.15484,37.893004],[-79.483456,38.084697],[-79.510841,38.177805],[-79.313671,38.413313]]]},"id":"51015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.610765,38.479037],[-94.063071,38.446175],[-94.052118,38.216144],[-94.057594,38.035405],[-94.501227,38.057312],[-94.616242,38.062789],[-94.610765,38.391406],[-94.610765,38.479037],[-94.610765,38.479037]]]},"id":"29013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.914747,38.479037],[-88.701147,38.47356],[-88.701147,38.254482],[-88.706624,38.123036],[-88.816163,38.128512],[-89.128348,38.123036],[-89.144779,38.210667],[-89.144779,38.47356],[-88.914747,38.479037]]]},"id":"17081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.459268,38.468083],[-78.453791,38.47356],[-78.289483,38.270913],[-78.371637,38.183282],[-78.661915,38.27639],[-78.486653,38.41879],[-78.459268,38.468083]]]},"id":"51079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.690592,38.47356],[-117.164806,38.002543],[-117.164806,36.972878],[-117.832993,37.465803],[-118.429979,37.898481],[-117.690592,38.47356]]]},"id":"32009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.001932,38.440698],[-83.980024,38.440698],[-83.848578,38.298298],[-83.980024,38.194236],[-84.193625,38.369498],[-84.100517,38.457129],[-84.001932,38.440698]]]},"id":"21181"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.008278,38.446175],[-105.794678,38.265436],[-105.471538,37.898481],[-105.455107,37.750604],[-105.707047,37.750604],[-106.04114,37.750604],[-106.692896,37.832758],[-106.999605,37.958727],[-106.999605,38.144943],[-106.999605,38.424267],[-106.249264,38.424267],[-106.008278,38.446175]]]},"id":"08109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.342889,38.451652],[-75.047134,38.451652],[-75.244304,38.029928],[-75.397659,38.013497],[-75.622213,37.991589],[-75.611259,38.27639],[-75.342889,38.451652]]]},"id":"24047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.656861,38.435221],[-95.508984,38.435221],[-95.508984,38.391406],[-95.519938,38.040881],[-95.810215,38.040881],[-95.958093,38.040881],[-95.958093,38.172328],[-95.952616,38.435221],[-95.656861,38.435221]]]},"id":"20031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.045677,38.424267],[-120.018292,38.435221],[-119.640383,38.325682],[-119.267951,37.73965],[-119.30629,37.777988],[-120.084015,37.827281],[-120.385247,37.635588],[-120.653617,37.832758],[-120.045677,38.424267]]]},"id":"06109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.611682,38.429744],[-92.496666,38.429744],[-92.195435,38.336636],[-92.195435,38.292821],[-92.184481,38.018974],[-92.359743,38.018974],[-92.403558,38.018974],[-92.693836,38.22162],[-92.622636,38.429744],[-92.611682,38.429744]]]},"id":"29131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.307724,38.424267],[-86.252954,38.424267],[-86.307724,38.166851],[-86.461078,38.117559],[-86.570617,38.265436],[-86.680156,38.265436],[-86.680156,38.396883],[-86.307724,38.424267]]]},"id":"18025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.198185,38.424267],[-86.033877,38.41879],[-85.90243,38.177805],[-85.946246,38.00802],[-86.001015,37.997066],[-86.307724,38.166851],[-86.252954,38.424267],[-86.198185,38.424267]]]},"id":"18061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.561497,38.40236],[-82.506727,38.413313],[-82.265742,38.227097],[-82.30408,37.942297],[-82.413619,37.854665],[-82.495773,37.947773],[-82.605312,38.249005],[-82.594358,38.424267],[-82.561497,38.40236]]]},"id":"54099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.011969,38.41879],[-85.995538,38.41879],[-85.792891,38.287344],[-85.90243,38.177805],[-86.033877,38.41879],[-86.011969,38.41879]]]},"id":"18043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.996925,38.27639],[-77.062649,38.161374],[-77.117418,38.15042],[-77.325542,38.243528],[-77.287203,38.34759],[-76.996925,38.27639]]]},"id":"51099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.410422,38.396883],[-83.339222,38.320205],[-83.246114,38.194236],[-83.262545,38.117559],[-83.355653,38.068266],[-83.43233,38.035405],[-83.498053,38.051835],[-83.634977,38.188759],[-83.454238,38.380452],[-83.410422,38.396883]]]},"id":"21205"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.895143,38.391406],[-77.703451,38.358544],[-77.95539,38.117559],[-78.207329,38.133989],[-78.371637,38.183282],[-78.289483,38.270913],[-78.092313,38.309252],[-77.895143,38.391406]]]},"id":"51137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.235137,38.391406],[-95.065351,38.391406],[-95.076305,38.035405],[-95.465168,38.040881],[-95.519938,38.040881],[-95.508984,38.391406],[-95.235137,38.391406]]]},"id":"20003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.010582,38.391406],[-94.610765,38.391406],[-94.616242,38.062789],[-94.616242,38.035405],[-94.933905,38.035405],[-95.076305,38.035405],[-95.065351,38.391406],[-95.010582,38.391406]]]},"id":"20107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.639537,38.380452],[-85.469752,38.287344],[-85.425936,38.144943],[-85.431413,38.117559],[-85.699783,38.084697],[-85.940769,37.997066],[-85.946246,38.00802],[-85.90243,38.177805],[-85.792891,38.287344],[-85.639537,38.380452]]]},"id":"21111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.621296,38.369498],[-77.528188,38.309252],[-77.446034,38.281867],[-77.369357,38.249005],[-77.643204,37.991589],[-77.68702,38.00802],[-77.95539,38.117559],[-77.703451,38.358544],[-77.621296,38.369498]]]},"id":"51177"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.046664,38.374975],[-81.915218,38.325682],[-81.833064,38.210667],[-81.931648,38.024451],[-82.189065,37.975158],[-82.30408,37.942297],[-82.265742,38.227097],[-82.046664,38.374975]]]},"id":"54043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.861812,38.358544],[-84.741319,38.353067],[-84.724888,38.194236],[-84.867289,38.117559],[-84.998735,38.128512],[-85.02612,38.128512],[-84.998735,38.336636],[-84.872765,38.358544],[-84.861812,38.358544]]]},"id":"21073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.264825,38.325682],[-84.193625,38.369498],[-83.980024,38.194236],[-84.040271,38.144943],[-84.078609,38.117559],[-84.286733,38.068266],[-84.401749,38.20519],[-84.440087,38.281867],[-84.264825,38.325682]]]},"id":"21017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.283536,38.358544],[-84.998735,38.336636],[-85.02612,38.128512],[-85.102797,38.035405],[-85.425936,38.144943],[-85.469752,38.287344],[-85.283536,38.358544]]]},"id":"21211"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.359273,38.34759],[-99.030656,38.34759],[-98.910164,38.259959],[-99.019702,38.002543],[-99.348319,38.002543],[-99.567396,38.084697],[-99.57835,38.259959],[-99.583827,38.259959],[-99.583827,38.34759],[-99.359273,38.34759]]]},"id":"20145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.63493,38.303775],[-107.569206,38.144943],[-107.569206,37.964204],[-107.738991,37.903958],[-107.963546,38.15042],[-107.63493,38.303775]]]},"id":"08091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.844393,38.27639],[-122.488392,38.112082],[-122.504823,37.821804],[-123.014178,38.002543],[-123.003224,38.298298],[-122.844393,38.27639]]]},"id":"06041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.848578,38.298298],[-83.634977,38.188759],[-83.498053,38.051835],[-83.760947,37.997066],[-83.980024,38.194236],[-83.848578,38.298298]]]},"id":"21011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.62769,38.281867],[-75.611259,38.27639],[-75.622213,37.991589],[-75.671506,37.95325],[-75.863199,38.238051],[-75.62769,38.281867]]]},"id":"24039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.097249,38.287344],[-121.026049,38.298298],[-120.993187,38.227097],[-120.927464,38.07922],[-120.921987,37.805373],[-121.469681,37.482234],[-121.557312,37.821804],[-121.57922,38.095651],[-121.097249,38.287344]]]},"id":"06077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.954449,38.287344],[-91.642264,38.287344],[-91.63131,38.155897],[-92.020173,38.00802],[-92.184481,38.018974],[-92.195435,38.292821],[-91.954449,38.287344]]]},"id":"29125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.520431,38.035405],[-76.635447,37.964204],[-76.914771,38.095651],[-76.936679,38.07922],[-77.062649,38.161374],[-76.996925,38.27639],[-76.520431,38.035405]]]},"id":"51193"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.371637,38.183282],[-78.207329,38.133989],[-78.305914,38.00802],[-78.49213,37.794419],[-78.645484,37.734173],[-78.837177,38.046358],[-78.749546,38.20519],[-78.661915,38.27639],[-78.371637,38.183282]]]},"id":"51003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.077222,38.259959],[-92.693836,38.22162],[-92.403558,38.018974],[-92.409035,37.860142],[-92.852668,37.893004],[-93.071745,37.903958],[-93.066268,38.062789],[-93.077222,38.259959]]]},"id":"29029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.212759,38.265436],[-102.042974,38.270913],[-102.042974,38.259959],[-102.042974,37.73965],[-102.042974,37.646542],[-102.749499,37.641065],[-102.744022,38.265436],[-102.212759,38.265436]]]},"id":"08099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.744022,38.265436],[-102.749499,37.641065],[-103.078115,37.641065],[-103.406732,37.641065],[-103.401255,38.265436],[-102.744022,38.265436]]]},"id":"08011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.791528,38.243528],[-82.605312,38.249005],[-82.495773,37.947773],[-82.610789,37.876573],[-82.851774,37.975158],[-82.988698,37.964204],[-83.02156,38.00802],[-82.922975,38.177805],[-82.791528,38.243528]]]},"id":"21127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.414536,38.254482],[-80.359767,38.227097],[-79.95995,38.062789],[-80.058535,37.95325],[-80.294043,37.690357],[-80.660998,37.734173],[-80.808876,37.871096],[-80.880076,38.101128],[-80.436444,38.265436],[-80.414536,38.254482]]]},"id":"54025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.922975,38.177805],[-83.02156,38.00802],[-83.262545,38.117559],[-83.246114,38.194236],[-82.922975,38.177805]]]},"id":"21063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.570617,38.265436],[-86.461078,38.117559],[-86.488463,38.046358],[-86.652771,37.843712],[-86.811602,37.997066],[-86.789695,38.20519],[-86.680156,38.265436],[-86.570617,38.265436]]]},"id":"18123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.795642,38.265436],[-79.510841,38.177805],[-79.483456,38.084697],[-79.653241,37.871096],[-79.998289,37.958727],[-80.058535,37.95325],[-79.95995,38.062789],[-79.795642,38.265436]]]},"id":"51017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.401255,38.265436],[-103.406732,37.641065],[-104.058488,37.734173],[-104.058488,38.144943],[-103.49984,38.265436],[-103.401255,38.265436]]]},"id":"08089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.881862,38.265436],[-100.684692,38.265436],[-100.246537,38.259959],[-100.224629,38.259959],[-100.224629,38.002543],[-100.651831,37.734173],[-101.089986,37.734173],[-101.10094,38.265436],[-100.881862,38.265436]]]},"id":"20055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.794678,38.265436],[-105.049814,38.259959],[-105.049814,37.914912],[-105.186737,38.00802],[-105.471538,37.898481],[-105.794678,38.265436]]]},"id":"08027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.122848,38.265436],[-101.10094,38.265436],[-101.089986,37.734173],[-101.17214,37.734173],[-101.528141,37.734173],[-101.544572,38.265436],[-101.122848,38.265436]]]},"id":"20093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.192262,38.232574],[-80.880076,38.101128],[-80.808876,37.871096],[-80.945799,37.821804],[-81.378478,37.969681],[-81.2306,38.265436],[-81.192262,38.232574]]]},"id":"54019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.56648,38.265436],[-101.544572,38.265436],[-101.528141,37.734173],[-102.042974,37.73965],[-102.042974,38.259959],[-101.56648,38.265436]]]},"id":"20075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.57835,38.259959],[-99.567396,38.084697],[-99.567396,37.914912],[-99.874105,37.914912],[-100.224629,37.914912],[-100.224629,38.002543],[-100.224629,38.259959],[-99.583827,38.259959],[-99.57835,38.259959]]]},"id":"20083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.800625,38.259959],[-98.477485,38.259959],[-98.472008,38.172328],[-98.472008,37.827281],[-98.904687,37.827281],[-99.014225,37.827281],[-99.019702,38.002543],[-98.910164,38.259959],[-98.800625,38.259959]]]},"id":"20185"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.005575,38.259959],[-87.989145,38.259959],[-87.972714,38.232574],[-87.978191,38.232574],[-88.054868,37.88205],[-88.137022,37.909435],[-88.37253,37.909435],[-88.37253,38.254482],[-88.153453,38.254482],[-88.005575,38.259959]]]},"id":"17193"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.591608,38.254482],[-88.37253,38.254482],[-88.37253,37.909435],[-88.37253,37.909435],[-88.4273,37.909435],[-88.706624,37.909435],[-88.706624,38.123036],[-88.701147,38.254482],[-88.591608,38.254482]]]},"id":"17065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.325542,38.243528],[-77.117418,38.15042],[-77.068125,37.964204],[-77.073602,37.964204],[-77.183141,37.893004],[-77.347449,37.788942],[-77.643204,37.991589],[-77.369357,38.249005],[-77.325542,38.243528]]]},"id":"51033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.310004,38.243528],[-87.074495,38.232574],[-87.019726,38.20519],[-87.266188,37.876573],[-87.304527,37.898481],[-87.452404,37.942297],[-87.468835,38.166851],[-87.315481,38.243528],[-87.310004,38.243528]]]},"id":"18173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.756386,38.20519],[-81.455155,37.986112],[-81.564693,37.931343],[-81.515401,37.788942],[-81.608509,37.788942],[-81.931648,38.024451],[-81.833064,38.210667],[-81.756386,38.20519]]]},"id":"54005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.972714,38.232574],[-87.687913,38.166851],[-87.698867,37.898481],[-87.928898,37.903958],[-88.027483,37.799896],[-88.054868,37.88205],[-87.978191,38.232574],[-87.972714,38.232574]]]},"id":"18129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.03752,38.22162],[-89.900597,38.22162],[-89.703427,38.22162],[-89.593888,38.22162],[-89.593888,37.95325],[-89.676042,37.805373],[-89.938935,37.876573],[-90.207305,38.090174],[-90.03752,38.22162]]]},"id":"17157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.772794,38.20519],[-93.520854,38.20519],[-93.504423,38.073743],[-93.575624,37.827281],[-93.630393,37.827281],[-94.063071,37.898481],[-94.057594,38.035405],[-94.052118,38.216144],[-93.772794,38.20519]]]},"id":"29185"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.593888,38.22162],[-89.144779,38.210667],[-89.128348,38.123036],[-89.177641,37.947773],[-89.566503,37.95325],[-89.593888,37.95325],[-89.593888,38.22162]]]},"id":"17145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.532725,38.210667],[-91.368417,38.210667],[-91.09457,38.20519],[-91.100047,37.73965],[-91.154816,37.695834],[-91.527248,37.788942],[-91.532725,38.15042],[-91.532725,38.210667]]]},"id":"29055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.401749,38.20519],[-84.286733,38.068266],[-84.336025,37.893004],[-84.43461,37.849189],[-84.659165,38.002543],[-84.626303,38.117559],[-84.401749,38.20519]]]},"id":"21067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.09457,38.20519],[-90.782384,38.20519],[-90.639984,38.07922],[-90.645461,37.734173],[-91.100047,37.73965],[-91.09457,38.20519]]]},"id":"29221"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.866372,38.20519],[-86.789695,38.20519],[-86.811602,37.997066],[-86.981388,37.931343],[-87.266188,37.876573],[-87.019726,38.20519],[-86.866372,38.20519]]]},"id":"18147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.867289,38.117559],[-84.724888,38.194236],[-84.626303,38.117559],[-84.659165,38.002543],[-84.708457,37.860142],[-84.796088,37.969681],[-84.867289,38.117559]]]},"id":"21239"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.040271,38.144943],[-83.980024,38.194236],[-83.760947,37.997066],[-83.766424,37.920389],[-83.96907,37.931343],[-84.078609,38.117559],[-84.040271,38.144943]]]},"id":"21173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.152066,38.172328],[-97.152066,38.090174],[-97.152066,37.914912],[-97.157543,37.914912],[-97.69976,37.914912],[-97.69976,38.172328],[-97.371143,38.172328],[-97.152066,38.172328]]]},"id":"20079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.929791,38.172328],[-97.924314,38.172328],[-97.69976,38.172328],[-97.69976,37.914912],[-97.809299,37.734173],[-97.918837,37.734173],[-98.466531,37.734173],[-98.472008,37.827281],[-98.472008,38.172328],[-97.929791,38.172328]]]},"id":"20155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.281232,38.172328],[-95.958093,38.172328],[-95.958093,38.040881],[-95.96357,37.734173],[-95.96357,37.602726],[-96.308617,37.608203],[-96.527695,37.608203],[-96.522218,38.084697],[-96.357909,38.172328],[-96.281232,38.172328]]]},"id":"20073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.687913,38.166851],[-87.468835,38.166851],[-87.452404,37.942297],[-87.698867,37.898481],[-87.687913,38.166851]]]},"id":"18163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.307724,38.166851],[-86.001015,37.997066],[-86.148893,37.799896],[-86.488463,38.046358],[-86.461078,38.117559],[-86.307724,38.166851]]]},"id":"21163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.062649,38.161374],[-76.936679,38.07922],[-76.777848,37.876573],[-76.68474,37.772511],[-76.750463,37.728696],[-77.068125,37.964204],[-77.117418,38.15042],[-77.062649,38.161374]]]},"id":"51057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.042503,38.15042],[-107.963546,38.15042],[-107.738991,37.903958],[-107.859484,37.777988],[-109.042503,37.88205],[-109.042503,38.15042]]]},"id":"08113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.84122,38.15042],[-109.929768,38.15042],[-110.647247,37.54248],[-112.684669,37.54248],[-112.476545,38.144943],[-112.443683,38.15042],[-111.84122,38.15042]]]},"id":"49017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.63131,38.155897],[-91.532725,38.15042],[-91.527248,37.788942],[-91.806572,37.597249],[-92.031127,37.602726],[-92.020173,38.00802],[-91.63131,38.155897]]]},"id":"29161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.95539,38.117559],[-77.68702,38.00802],[-77.796559,37.728696],[-78.064929,37.903958],[-78.305914,38.00802],[-78.207329,38.133989],[-77.95539,38.117559]]]},"id":"51109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.876362,38.15042],[-112.476545,38.144943],[-112.684669,37.54248],[-112.903746,37.498664],[-112.898269,37.498664],[-114.053904,37.602726],[-114.048427,38.15042],[-112.876362,38.15042]]]},"id":"49021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.425936,38.144943],[-85.102797,38.035405],[-85.16852,37.969681],[-85.49166,37.991589],[-85.431413,38.117559],[-85.425936,38.144943]]]},"id":"21215"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.999605,38.144943],[-106.999605,37.958727],[-107.103666,37.95325],[-107.131051,37.421987],[-107.481575,37.421987],[-107.481575,37.641065],[-107.569206,37.964204],[-107.569206,38.144943],[-106.999605,38.144943]]]},"id":"08053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.998735,38.128512],[-84.867289,38.117559],[-84.796088,37.969681],[-85.031597,37.893004],[-85.152089,37.898481],[-85.16852,37.969681],[-85.102797,38.035405],[-85.02612,38.128512],[-84.998735,38.128512]]]},"id":"21005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.251121,38.128512],[-90.207305,38.090174],[-89.938935,37.876573],[-90.10872,37.673926],[-90.415429,38.040881],[-90.251121,38.128512]]]},"id":"29186"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.816163,38.128512],[-88.706624,38.123036],[-88.706624,37.909435],[-88.706624,37.865619],[-88.728531,37.865619],[-89.150256,37.860142],[-89.177641,37.947773],[-89.128348,38.123036],[-88.816163,38.128512]]]},"id":"17055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.914771,38.095651],[-76.635447,37.964204],[-76.509478,37.838235],[-76.640924,37.794419],[-76.777848,37.876573],[-76.936679,38.07922],[-76.914771,38.095651]]]},"id":"51159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.699783,38.084697],[-85.431413,38.117559],[-85.49166,37.991589],[-85.497137,37.986112],[-85.738122,37.81085],[-85.940769,37.997066],[-85.699783,38.084697]]]},"id":"21029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.355653,38.068266],[-83.262545,38.117559],[-83.02156,38.00802],[-82.988698,37.964204],[-83.005129,37.860142],[-83.262545,37.712265],[-83.492576,37.860142],[-83.43233,38.035405],[-83.355653,38.068266]]]},"id":"21175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.078609,38.117559],[-83.96907,37.931343],[-83.990978,37.914912],[-84.001932,37.838235],[-84.078609,37.854665],[-84.270302,37.914912],[-84.336025,37.893004],[-84.286733,38.068266],[-84.078609,38.117559]]]},"id":"21049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.628512,38.101128],[-121.57922,38.095651],[-121.557312,37.821804],[-122.269314,37.903958],[-122.31313,37.898481],[-122.269314,38.062789],[-121.864021,38.068266],[-121.628512,38.101128]]]},"id":"06013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.348319,38.002543],[-99.019702,38.002543],[-99.014225,37.827281],[-99.014225,37.734173],[-99.56192,37.734173],[-99.567396,37.914912],[-99.567396,38.084697],[-99.348319,38.002543]]]},"id":"20047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.113727,38.084697],[-96.83988,38.084697],[-96.522218,38.084697],[-96.527695,37.608203],[-96.527695,37.476757],[-97.080866,37.476757],[-97.152066,37.476757],[-97.152066,37.914912],[-97.152066,38.090174],[-97.113727,38.084697]]]},"id":"20015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.483456,38.084697],[-79.15484,37.893004],[-79.171271,37.805373],[-79.439641,37.619157],[-79.499887,37.531526],[-79.675149,37.761557],[-79.653241,37.871096],[-79.483456,38.084697]]]},"id":"51163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.921987,37.805373],[-120.927464,38.07922],[-120.653617,37.832758],[-120.385247,37.635588],[-120.385247,37.635588],[-121.228696,37.137186],[-121.475158,37.482234],[-121.469681,37.482234],[-120.921987,37.805373]]]},"id":"06099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.639984,38.07922],[-90.415429,38.040881],[-90.10872,37.673926],[-90.147059,37.641065],[-90.535922,37.641065],[-90.645461,37.734173],[-90.639984,38.07922]]]},"id":"29187"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.411315,38.068266],[-93.066268,38.062789],[-93.071745,37.903958],[-93.126515,37.903958],[-93.186761,37.805373],[-93.575624,37.827281],[-93.504423,38.073743],[-93.411315,38.068266]]]},"id":"29085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.501227,38.057312],[-94.057594,38.035405],[-94.063071,37.898481],[-94.074025,37.641065],[-94.490273,37.652019],[-94.616242,37.652019],[-94.616242,37.673926],[-94.616242,38.035405],[-94.616242,38.062789],[-94.501227,38.057312]]]},"id":"29217"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.498053,38.051835],[-83.43233,38.035405],[-83.492576,37.860142],[-83.607592,37.827281],[-83.6295,37.827281],[-83.766424,37.920389],[-83.760947,37.997066],[-83.498053,38.051835]]]},"id":"21165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.859085,38.029928],[-78.837177,38.046358],[-78.645484,37.734173],[-78.826223,37.553434],[-78.870039,37.54248],[-79.171271,37.805373],[-79.15484,37.893004],[-78.859085,38.029928]]]},"id":"51125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.652771,37.843712],[-86.488463,38.046358],[-86.148893,37.799896],[-86.274862,37.591772],[-86.472032,37.602726],[-86.592525,37.564388],[-86.63634,37.662973],[-86.652771,37.843712]]]},"id":"21027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.810215,38.040881],[-95.519938,38.040881],[-95.525414,37.734173],[-95.919754,37.734173],[-95.96357,37.734173],[-95.958093,38.040881],[-95.810215,38.040881]]]},"id":"20207"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.994645,37.95325],[-76.016553,37.95325],[-76.043938,37.95325],[-75.994645,37.95325]]]},"id":"24039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.465168,38.040881],[-95.076305,38.035405],[-95.087259,37.734173],[-95.399445,37.734173],[-95.525414,37.734173],[-95.519938,38.040881],[-95.465168,38.040881]]]},"id":"20001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.933905,38.035405],[-94.616242,38.035405],[-94.616242,37.673926],[-94.884612,37.673926],[-95.087259,37.673926],[-95.087259,37.734173],[-95.076305,38.035405],[-94.933905,38.035405]]]},"id":"20011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.317785,37.679403],[-76.48757,37.838235],[-76.509478,37.838235],[-76.635447,37.964204],[-76.520431,38.035405],[-76.317785,37.679403]]]},"id":"51133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.397659,38.013497],[-75.244304,38.029928],[-75.666029,37.465803],[-75.939876,37.547957],[-75.671506,37.95325],[-75.622213,37.991589],[-75.397659,38.013497]]]},"id":"51001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.931648,38.024451],[-81.608509,37.788942],[-81.800202,37.662973],[-82.189065,37.975158],[-81.931648,38.024451]]]},"id":"54045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.359743,38.018974],[-92.184481,38.018974],[-92.020173,38.00802],[-92.031127,37.602726],[-92.250204,37.602726],[-92.409035,37.860142],[-92.403558,38.018974],[-92.359743,38.018974]]]},"id":"29169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.186737,38.00802],[-105.049814,37.914912],[-104.348765,37.816327],[-105.153876,37.290541],[-105.23603,37.624634],[-105.487969,37.575342],[-105.455107,37.750604],[-105.471538,37.898481],[-105.186737,38.00802]]]},"id":"08055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.68702,38.00802],[-77.643204,37.991589],[-77.347449,37.788942],[-77.122895,37.624634],[-77.226957,37.537003],[-77.63225,37.706788],[-77.796559,37.728696],[-77.68702,38.00802]]]},"id":"51085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.946246,38.00802],[-85.940769,37.997066],[-85.738122,37.81085],[-85.677876,37.734173],[-85.891476,37.438418],[-86.017446,37.449372],[-86.044831,37.449372],[-86.274862,37.591772],[-86.148893,37.799896],[-86.001015,37.997066],[-85.946246,38.00802]]]},"id":"21093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.305914,38.00802],[-78.064929,37.903958],[-78.158037,37.750604],[-78.163514,37.750604],[-78.240191,37.690357],[-78.49213,37.794419],[-78.305914,38.00802]]]},"id":"51065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.659165,38.002543],[-84.43461,37.849189],[-84.527718,37.767034],[-84.648211,37.81085],[-84.713934,37.816327],[-84.708457,37.860142],[-84.659165,38.002543]]]},"id":"21113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.224629,38.002543],[-100.224629,37.914912],[-100.213675,37.476757],[-100.651831,37.476757],[-100.651831,37.734173],[-100.224629,38.002543]]]},"id":"20069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.851774,37.975158],[-82.610789,37.876573],[-82.638174,37.717742],[-82.786051,37.745127],[-82.939406,37.717742],[-83.005129,37.860142],[-82.988698,37.964204],[-82.851774,37.975158]]]},"id":"21115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.811602,37.997066],[-86.652771,37.843712],[-86.63634,37.662973],[-86.822556,37.73965],[-86.981388,37.931343],[-86.811602,37.997066]]]},"id":"21091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.497137,37.986112],[-85.49166,37.991589],[-85.16852,37.969681],[-85.152089,37.898481],[-85.404029,37.728696],[-85.519044,37.553434],[-85.677876,37.734173],[-85.738122,37.81085],[-85.497137,37.986112]]]},"id":"21179"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.564693,37.931343],[-81.455155,37.986112],[-81.378478,37.969681],[-80.945799,37.821804],[-81.093677,37.586295],[-81.126538,37.591772],[-81.219646,37.509618],[-81.515401,37.788942],[-81.564693,37.931343]]]},"id":"54081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.698867,37.898481],[-87.452404,37.942297],[-87.304527,37.898481],[-87.408589,37.68488],[-87.49622,37.646542],[-87.731728,37.635588],[-87.928898,37.903958],[-87.698867,37.898481]]]},"id":"21101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.103666,37.95325],[-106.999605,37.958727],[-106.692896,37.832758],[-106.709327,37.405556],[-107.131051,37.421987],[-107.103666,37.95325]]]},"id":"08079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.30408,37.942297],[-82.189065,37.975158],[-81.800202,37.662973],[-81.854971,37.547957],[-81.926172,37.509618],[-81.969987,37.537003],[-82.145249,37.569865],[-82.331465,37.73965],[-82.413619,37.854665],[-82.30408,37.942297]]]},"id":"54059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.073602,37.964204],[-77.068125,37.964204],[-76.750463,37.728696],[-76.651878,37.602726],[-76.712124,37.432941],[-76.739509,37.465803],[-76.794278,37.515095],[-77.177664,37.893004],[-77.183141,37.893004],[-77.073602,37.964204]]]},"id":"51097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.796088,37.969681],[-84.708457,37.860142],[-84.713934,37.816327],[-84.746796,37.712265],[-84.856335,37.695834],[-85.02612,37.679403],[-85.031597,37.893004],[-84.796088,37.969681]]]},"id":"21167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.569206,37.964204],[-107.481575,37.641065],[-107.804715,37.641065],[-107.9745,37.641065],[-107.859484,37.777988],[-107.738991,37.903958],[-107.569206,37.964204]]]},"id":"08111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.413619,37.854665],[-82.331465,37.73965],[-82.561497,37.68488],[-82.638174,37.717742],[-82.610789,37.876573],[-82.495773,37.947773],[-82.413619,37.854665]]]},"id":"21159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.998289,37.958727],[-79.653241,37.871096],[-79.675149,37.761557],[-79.790165,37.794419],[-80.020196,37.646542],[-80.222843,37.630111],[-80.294043,37.690357],[-80.058535,37.95325],[-79.998289,37.958727]]]},"id":"51005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.566503,37.95325],[-89.177641,37.947773],[-89.150256,37.860142],[-89.155733,37.602726],[-89.522688,37.569865],[-89.676042,37.805373],[-89.593888,37.95325],[-89.566503,37.95325]]]},"id":"17077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.016553,37.95325],[-75.994645,37.95325],[-76.043938,37.95325],[-76.016553,37.95325]]]},"id":"51001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.990978,37.914912],[-83.96907,37.931343],[-83.766424,37.920389],[-83.6295,37.827281],[-83.706177,37.717742],[-83.722608,37.717742],[-84.001932,37.838235],[-83.990978,37.914912]]]},"id":"21197"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.266188,37.876573],[-86.981388,37.931343],[-86.822556,37.73965],[-87.036157,37.558911],[-87.408589,37.68488],[-87.304527,37.898481],[-87.266188,37.876573]]]},"id":"21059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.270302,37.914912],[-84.078609,37.854665],[-84.089563,37.564388],[-84.199102,37.520572],[-84.231963,37.520572],[-84.346979,37.537003],[-84.527718,37.767034],[-84.43461,37.849189],[-84.336025,37.893004],[-84.270302,37.914912]]]},"id":"21151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.152089,37.898481],[-85.031597,37.893004],[-85.02612,37.679403],[-85.031597,37.630111],[-85.404029,37.728696],[-85.152089,37.898481]]]},"id":"21229"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.137022,37.909435],[-88.054868,37.88205],[-88.027483,37.799896],[-88.131545,37.575342],[-88.378007,37.597249],[-88.37253,37.909435],[-88.37253,37.909435],[-88.137022,37.909435]]]},"id":"17059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.874105,37.914912],[-99.567396,37.914912],[-99.56192,37.734173],[-99.556443,37.465803],[-100.054844,37.47128],[-100.109614,37.476757],[-100.213675,37.476757],[-100.224629,37.914912],[-99.874105,37.914912]]]},"id":"20057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.157543,37.914912],[-97.152066,37.914912],[-97.152066,37.476757],[-97.349236,37.476757],[-97.809299,37.476757],[-97.809299,37.734173],[-97.69976,37.914912],[-97.157543,37.914912]]]},"id":"20173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.177664,37.893004],[-76.794278,37.515095],[-77.122895,37.624634],[-77.347449,37.788942],[-77.183141,37.893004],[-77.177664,37.893004]]]},"id":"51101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.4273,37.909435],[-88.37253,37.909435],[-88.378007,37.597249],[-88.410869,37.597249],[-88.706624,37.597249],[-88.706624,37.865619],[-88.706624,37.909435],[-88.4273,37.909435]]]},"id":"17165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.938935,37.876573],[-89.676042,37.805373],[-89.522688,37.569865],[-89.522688,37.564388],[-89.796535,37.602726],[-89.862258,37.597249],[-90.147059,37.597249],[-90.147059,37.641065],[-90.10872,37.673926],[-89.938935,37.876573]]]},"id":"29157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.064929,37.903958],[-77.796559,37.728696],[-77.63225,37.706788],[-77.654158,37.564388],[-78.015636,37.641065],[-78.070406,37.657496],[-78.158037,37.750604],[-78.064929,37.903958]]]},"id":"51075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.269314,37.903958],[-121.557312,37.821804],[-121.469681,37.482234],[-121.475158,37.482234],[-121.853067,37.482234],[-122.083098,37.476757],[-122.11596,37.504141],[-122.31313,37.898481],[-122.269314,37.903958]]]},"id":"06001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.126515,37.903958],[-93.071745,37.903958],[-92.852668,37.893004],[-92.852668,37.482234],[-93.071745,37.48771],[-93.071745,37.41651],[-93.181284,37.41651],[-93.186761,37.805373],[-93.126515,37.903958]]]},"id":"29059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.084015,37.827281],[-119.30629,37.777988],[-120.051153,37.181002],[-120.385247,37.635588],[-120.385247,37.635588],[-120.084015,37.827281]]]},"id":"06043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.027483,37.799896],[-87.928898,37.903958],[-87.731728,37.635588],[-87.934375,37.482234],[-88.060345,37.504141],[-88.131545,37.575342],[-88.027483,37.799896]]]},"id":"21225"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.063071,37.898481],[-93.630393,37.827281],[-93.613962,37.575342],[-94.074025,37.580818],[-94.074025,37.641065],[-94.063071,37.898481]]]},"id":"29039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.852668,37.893004],[-92.409035,37.860142],[-92.250204,37.602726],[-92.250204,37.47128],[-92.688359,37.482234],[-92.852668,37.482234],[-92.852668,37.893004]]]},"id":"29105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.042503,37.88205],[-107.859484,37.777988],[-107.9745,37.641065],[-109.042503,37.482234],[-109.042503,37.88205]]]},"id":"08033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.005129,37.860142],[-82.939406,37.717742],[-82.922975,37.48771],[-82.944882,37.498664],[-82.950359,37.504141],[-83.246114,37.668449],[-83.262545,37.712265],[-83.005129,37.860142]]]},"id":"21153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.808876,37.871096],[-80.660998,37.734173],[-80.858168,37.427464],[-80.858168,37.427464],[-81.093677,37.586295],[-80.945799,37.821804],[-80.808876,37.871096]]]},"id":"54089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.728531,37.865619],[-88.706624,37.865619],[-88.706624,37.597249],[-88.876409,37.597249],[-89.040717,37.597249],[-89.155733,37.602726],[-89.150256,37.860142],[-88.728531,37.865619]]]},"id":"17199"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.607592,37.827281],[-83.492576,37.860142],[-83.262545,37.712265],[-83.246114,37.668449],[-83.377561,37.695834],[-83.519961,37.641065],[-83.706177,37.717742],[-83.6295,37.827281],[-83.607592,37.827281]]]},"id":"21237"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.078609,37.854665],[-84.001932,37.838235],[-83.722608,37.717742],[-83.903347,37.54248],[-83.963593,37.580818],[-84.089563,37.564388],[-84.078609,37.854665]]]},"id":"21065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.48757,37.838235],[-76.317785,37.679403],[-76.640924,37.794419],[-76.509478,37.838235],[-76.48757,37.838235]]]},"id":"51103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.692896,37.832758],[-106.04114,37.750604],[-106.04114,37.400079],[-106.523111,37.400079],[-106.676465,37.405556],[-106.709327,37.405556],[-106.692896,37.832758]]]},"id":"08105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.648211,37.81085],[-84.527718,37.767034],[-84.346979,37.537003],[-84.445564,37.48771],[-84.659165,37.635588],[-84.746796,37.712265],[-84.713934,37.816327],[-84.648211,37.81085]]]},"id":"21079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.630393,37.827281],[-93.575624,37.827281],[-93.186761,37.805373],[-93.181284,37.41651],[-93.619439,37.427464],[-93.613962,37.575342],[-93.630393,37.827281]]]},"id":"29167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.904687,37.827281],[-98.472008,37.827281],[-98.466531,37.734173],[-98.466531,37.47128],[-98.482962,37.47128],[-99.014225,37.47128],[-99.014225,37.734173],[-99.014225,37.827281],[-98.904687,37.827281]]]},"id":"20151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.348765,37.816327],[-104.058488,37.734173],[-103.406732,37.641065],[-103.078115,37.641065],[-103.083592,37.000263],[-104.009195,36.994786],[-105.153876,36.994786],[-105.153876,37.290541],[-104.348765,37.816327]]]},"id":"08071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.439641,37.619157],[-79.171271,37.805373],[-78.870039,37.54248],[-79.017916,37.427464],[-79.083639,37.394602],[-79.187701,37.465803],[-79.439641,37.619157]]]},"id":"51009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.428146,37.706788],[-122.504823,37.706788],[-122.389807,37.706788],[-122.428146,37.706788]]]},"id":"06075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.790165,37.794419],[-79.675149,37.761557],[-79.499887,37.531526],[-79.844934,37.306971],[-80.074966,37.421987],[-80.020196,37.646542],[-79.790165,37.794419]]]},"id":"51023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.49213,37.794419],[-78.240191,37.690357],[-78.464745,37.339833],[-78.596192,37.400079],[-78.826223,37.553434],[-78.645484,37.734173],[-78.49213,37.794419]]]},"id":"51029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.515401,37.788942],[-81.219646,37.509618],[-81.312754,37.421987],[-81.838541,37.547957],[-81.854971,37.547957],[-81.800202,37.662973],[-81.608509,37.788942],[-81.515401,37.788942]]]},"id":"54109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.806572,37.597249],[-91.527248,37.788942],[-91.154816,37.695834],[-91.154816,37.586295],[-91.209585,37.41651],[-91.554633,37.421987],[-91.647741,37.421987],[-91.806572,37.597249]]]},"id":"29065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.267951,37.73965],[-119.021489,37.586295],[-119.821122,36.846908],[-120.281185,36.764754],[-120.544078,37.044078],[-120.051153,37.181002],[-119.30629,37.777988],[-119.267951,37.73965]]]},"id":"06039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.356123,37.526049],[-76.356123,37.526049],[-76.438277,37.515095],[-76.62997,37.591772],[-76.651878,37.602726],[-76.750463,37.728696],[-76.68474,37.772511],[-76.356123,37.526049]]]},"id":"51119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.786051,37.745127],[-82.638174,37.717742],[-82.561497,37.68488],[-82.709374,37.285064],[-82.922975,37.48771],[-82.939406,37.717742],[-82.786051,37.745127]]]},"id":"21071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.707047,37.750604],[-105.455107,37.750604],[-105.487969,37.575342],[-105.745385,37.356264],[-106.04114,37.400079],[-106.04114,37.750604],[-105.707047,37.750604]]]},"id":"08003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.163514,37.750604],[-78.158037,37.750604],[-78.070406,37.657496],[-78.130652,37.454849],[-78.234714,37.367218],[-78.262098,37.34531],[-78.464745,37.339833],[-78.240191,37.690357],[-78.163514,37.750604]]]},"id":"51049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.145249,37.569865],[-81.969987,37.537003],[-82.315034,37.296018],[-82.55602,37.20291],[-82.566974,37.197433],[-82.731282,37.27411],[-82.709374,37.285064],[-82.561497,37.68488],[-82.331465,37.73965],[-82.145249,37.569865]]]},"id":"21195"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.645461,37.734173],[-90.535922,37.641065],[-90.552353,37.317925],[-90.733092,37.268633],[-90.77143,37.476757],[-91.154816,37.586295],[-91.154816,37.695834],[-91.100047,37.73965],[-90.645461,37.734173]]]},"id":"29093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.042974,37.73965],[-101.528141,37.734173],[-101.528141,37.389126],[-101.555526,37.389126],[-101.884142,37.389126],[-102.042974,37.389126],[-102.042974,37.646542],[-102.042974,37.73965]]]},"id":"20187"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.822556,37.73965],[-86.63634,37.662973],[-86.592525,37.564388],[-86.614433,37.394602],[-86.899233,37.213863],[-87.10188,37.41651],[-87.036157,37.558911],[-86.822556,37.73965]]]},"id":"21183"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.651831,37.734173],[-100.651831,37.476757],[-100.651831,37.389126],[-100.750416,37.389126],[-101.068078,37.389126],[-101.089986,37.389126],[-101.089986,37.734173],[-100.651831,37.734173]]]},"id":"20081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.17214,37.734173],[-101.089986,37.734173],[-101.089986,37.389126],[-101.528141,37.389126],[-101.528141,37.734173],[-101.17214,37.734173]]]},"id":"20067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.56192,37.734173],[-99.014225,37.734173],[-99.014225,37.47128],[-99.014225,37.383649],[-99.545489,37.383649],[-99.556443,37.465803],[-99.56192,37.734173]]]},"id":"20097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.919754,37.734173],[-95.525414,37.734173],[-95.525414,37.383649],[-95.96357,37.389126],[-95.96357,37.602726],[-95.96357,37.734173],[-95.919754,37.734173]]]},"id":"20205"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.399445,37.734173],[-95.087259,37.734173],[-95.087259,37.673926],[-95.087259,37.383649],[-95.125598,37.383649],[-95.519938,37.383649],[-95.525414,37.383649],[-95.525414,37.734173],[-95.399445,37.734173]]]},"id":"20133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.918837,37.734173],[-97.809299,37.734173],[-97.809299,37.476757],[-97.809299,37.383649],[-98.351516,37.383649],[-98.466531,37.47128],[-98.466531,37.734173],[-97.918837,37.734173]]]},"id":"20095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.677876,37.734173],[-85.519044,37.553434],[-85.464275,37.465803],[-85.584768,37.47128],[-85.590245,37.47128],[-85.655968,37.421987],[-85.891476,37.438418],[-85.677876,37.734173]]]},"id":"21123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.660998,37.734173],[-80.294043,37.690357],[-80.222843,37.630111],[-80.474782,37.421987],[-80.858168,37.427464],[-80.660998,37.734173]]]},"id":"54063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.404029,37.728696],[-85.031597,37.630111],[-85.037074,37.54248],[-85.075412,37.411033],[-85.464275,37.465803],[-85.519044,37.553434],[-85.404029,37.728696]]]},"id":"21155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.706177,37.717742],[-83.519961,37.641065],[-83.580208,37.504141],[-83.651408,37.537003],[-83.886916,37.520572],[-83.903347,37.54248],[-83.722608,37.717742],[-83.706177,37.717742]]]},"id":"21129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.856335,37.695834],[-84.746796,37.712265],[-84.659165,37.635588],[-84.845381,37.547957],[-85.037074,37.54248],[-85.031597,37.630111],[-85.02612,37.679403],[-84.856335,37.695834]]]},"id":"21021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.63225,37.706788],[-77.226957,37.537003],[-77.177664,37.493187],[-77.248864,37.383649],[-77.41865,37.449372],[-77.473419,37.597249],[-77.593912,37.553434],[-77.654158,37.564388],[-77.63225,37.706788]]]},"id":"51087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.428146,37.706788],[-122.389807,37.706788],[-122.11596,37.504141],[-122.083098,37.476757],[-122.154299,37.285064],[-122.291222,37.109802],[-122.504823,37.706788],[-122.428146,37.706788]]]},"id":"06081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.377561,37.695834],[-83.246114,37.668449],[-82.950359,37.504141],[-83.125621,37.405556],[-83.547346,37.334356],[-83.580208,37.504141],[-83.519961,37.641065],[-83.377561,37.695834]]]},"id":"21025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.015636,37.641065],[-77.654158,37.564388],[-77.856805,37.41651],[-77.988251,37.48771],[-78.130652,37.454849],[-78.070406,37.657496],[-78.015636,37.641065]]]},"id":"51145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.408589,37.68488],[-87.036157,37.558911],[-87.10188,37.41651],[-87.293573,37.389126],[-87.375727,37.569865],[-87.49622,37.646542],[-87.408589,37.68488]]]},"id":"21149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.884612,37.673926],[-94.616242,37.673926],[-94.616242,37.652019],[-94.616242,37.361741],[-94.616242,37.339833],[-94.829843,37.339833],[-95.076305,37.339833],[-95.087259,37.383649],[-95.087259,37.673926],[-94.884612,37.673926]]]},"id":"20037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.020196,37.646542],[-80.074966,37.421987],[-80.173551,37.378172],[-80.261182,37.339833],[-80.430967,37.312448],[-80.474782,37.421987],[-80.222843,37.630111],[-80.020196,37.646542]]]},"id":"51045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.23603,37.624634],[-105.153876,37.290541],[-105.153876,36.994786],[-105.219599,36.994786],[-105.718001,36.994786],[-105.745385,37.356264],[-105.487969,37.575342],[-105.23603,37.624634]]]},"id":"08023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.490273,37.652019],[-94.074025,37.641065],[-94.074025,37.580818],[-94.079502,37.350787],[-94.577904,37.361741],[-94.616242,37.361741],[-94.616242,37.652019],[-94.490273,37.652019]]]},"id":"29011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.49622,37.646542],[-87.375727,37.569865],[-87.813882,37.350787],[-87.802929,37.378172],[-87.934375,37.482234],[-87.731728,37.635588],[-87.49622,37.646542]]]},"id":"21233"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.749499,37.641065],[-102.042974,37.646542],[-102.042974,37.389126],[-102.042974,36.994786],[-103.001438,37.000263],[-103.083592,37.000263],[-103.078115,37.641065],[-102.749499,37.641065]]]},"id":"08009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.535922,37.641065],[-90.147059,37.641065],[-90.147059,37.597249],[-90.218259,37.312448],[-90.552353,37.317925],[-90.535922,37.641065]]]},"id":"29123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.659165,37.635588],[-84.445564,37.48771],[-84.500334,37.328879],[-84.670119,37.27411],[-84.719411,37.235771],[-84.845381,37.547957],[-84.659165,37.635588]]]},"id":"21137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.804715,37.641065],[-107.481575,37.641065],[-107.481575,37.421987],[-107.481575,37.000263],[-108.379794,37.000263],[-107.9745,37.641065],[-107.804715,37.641065]]]},"id":"08067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.9745,37.641065],[-108.379794,37.000263],[-109.042503,37.000263],[-109.042503,37.482234],[-107.9745,37.641065]]]},"id":"08083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.385247,37.635588],[-120.051153,37.181002],[-120.544078,37.044078],[-120.91651,36.742847],[-121.217742,36.961924],[-121.228696,37.137186],[-120.385247,37.635588]]]},"id":"06047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.122895,37.624634],[-76.794278,37.515095],[-76.739509,37.465803],[-76.903817,37.378172],[-77.040741,37.427464],[-77.177664,37.493187],[-77.226957,37.537003],[-77.122895,37.624634]]]},"id":"51127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.472032,37.602726],[-86.274862,37.591772],[-86.044831,37.449372],[-86.159846,37.334356],[-86.466555,37.323402],[-86.614433,37.394602],[-86.592525,37.564388],[-86.472032,37.602726]]]},"id":"21085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.053904,37.602726],[-112.898269,37.498664],[-112.898269,37.000263],[-114.048427,37.000263],[-114.053904,37.602726]]]},"id":"49053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.439641,37.619157],[-79.187701,37.465803],[-79.187701,37.465803],[-79.258902,37.356264],[-79.445118,37.055032],[-79.592995,37.044078],[-79.784688,37.230294],[-79.844934,37.224817],[-79.844934,37.306971],[-79.499887,37.531526],[-79.439641,37.619157]]]},"id":"51019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.308617,37.608203],[-95.96357,37.602726],[-95.96357,37.389126],[-95.96357,37.301494],[-96.522218,37.301494],[-96.527695,37.476757],[-96.527695,37.608203],[-96.308617,37.608203]]]},"id":"20049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.796535,37.602726],[-89.522688,37.564388],[-89.484349,37.334356],[-89.489826,37.252202],[-89.763673,37.126232],[-89.867735,37.126232],[-89.867735,37.126232],[-89.862258,37.597249],[-89.796535,37.602726]]]},"id":"29031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.250204,37.602726],[-92.031127,37.602726],[-91.806572,37.597249],[-91.647741,37.421987],[-91.653218,37.049555],[-92.074942,37.055032],[-92.091373,37.055032],[-92.250204,37.060509],[-92.250204,37.47128],[-92.250204,37.602726]]]},"id":"29215"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.77143,37.476757],[-90.733092,37.268633],[-90.776907,37.049555],[-91.017893,37.093371],[-91.209585,37.41651],[-91.154816,37.586295],[-90.77143,37.476757]]]},"id":"29179"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.62997,37.591772],[-76.438277,37.515095],[-76.405416,37.400079],[-76.498524,37.241248],[-76.657355,37.378172],[-76.712124,37.432941],[-76.651878,37.602726],[-76.62997,37.591772]]]},"id":"51073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.473419,37.597249],[-77.41865,37.449372],[-77.593912,37.553434],[-77.473419,37.597249]]]},"id":"51760"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.876409,37.597249],[-88.706624,37.597249],[-88.712101,37.334356],[-88.931178,37.301494],[-89.046194,37.328879],[-89.040717,37.597249],[-88.876409,37.597249]]]},"id":"17087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.155733,37.602726],[-89.040717,37.597249],[-89.046194,37.328879],[-89.248841,37.334356],[-89.259795,37.334356],[-89.484349,37.334356],[-89.522688,37.564388],[-89.522688,37.569865],[-89.155733,37.602726]]]},"id":"17181"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.410869,37.597249],[-88.416346,37.421987],[-88.487546,37.065986],[-88.712101,37.334356],[-88.706624,37.597249],[-88.410869,37.597249]]]},"id":"17151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.378007,37.597249],[-88.131545,37.575342],[-88.060345,37.504141],[-88.3561,37.405556],[-88.361576,37.405556],[-88.416346,37.421987],[-88.410869,37.597249],[-88.378007,37.597249]]]},"id":"17069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.862258,37.597249],[-89.867735,37.126232],[-90.10872,37.038601],[-90.218259,37.312448],[-90.147059,37.597249],[-89.862258,37.597249]]]},"id":"29017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.126538,37.591772],[-81.093677,37.586295],[-80.858168,37.427464],[-80.978661,37.290541],[-81.225123,37.235771],[-81.362047,37.339833],[-81.312754,37.421987],[-81.219646,37.509618],[-81.126538,37.591772]]]},"id":"54055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.021489,37.586295],[-118.775026,37.460326],[-118.358779,36.742847],[-118.98315,36.742847],[-119.57466,36.490907],[-119.958045,36.403276],[-120.314047,35.904875],[-120.681002,36.266353],[-120.91651,36.742847],[-120.544078,37.044078],[-120.281185,36.764754],[-119.821122,36.846908],[-119.021489,37.586295]]]},"id":"06019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.074025,37.580818],[-93.613962,37.575342],[-93.619439,37.427464],[-93.619439,37.427464],[-93.624916,37.279587],[-94.008302,37.290541],[-94.052118,37.290541],[-94.079502,37.350787],[-94.074025,37.580818]]]},"id":"29057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.963593,37.580818],[-83.903347,37.54248],[-83.886916,37.520572],[-83.782854,37.350787],[-83.941686,37.252202],[-84.138855,37.317925],[-84.199102,37.520572],[-84.089563,37.564388],[-83.963593,37.580818]]]},"id":"21109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.375727,37.569865],[-87.293573,37.389126],[-87.331912,37.159094],[-87.682436,37.14814],[-87.813882,37.350787],[-87.375727,37.569865]]]},"id":"21107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.654158,37.564388],[-77.593912,37.553434],[-77.41865,37.449372],[-77.248864,37.383649],[-77.270772,37.323402],[-77.281726,37.312448],[-77.298157,37.312448],[-77.298157,37.312448],[-77.336496,37.312448],[-77.374834,37.246725],[-77.402219,37.241248],[-77.402219,37.235771],[-77.41865,37.235771],[-77.446034,37.224817],[-77.648681,37.263156],[-77.856805,37.41651],[-77.654158,37.564388]]]},"id":"51041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.826223,37.553434],[-78.596192,37.400079],[-78.683823,37.246725],[-78.6893,37.246725],[-78.826223,37.20291],[-79.001485,37.400079],[-79.017916,37.427464],[-78.870039,37.54248],[-78.826223,37.553434]]]},"id":"51011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.037074,37.54248],[-84.845381,37.547957],[-84.719411,37.235771],[-84.90015,37.115279],[-85.042551,37.186479],[-85.163043,37.312448],[-85.075412,37.411033],[-85.037074,37.54248]]]},"id":"21045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.838541,37.547957],[-81.312754,37.421987],[-81.362047,37.339833],[-81.373001,37.323402],[-81.739956,37.241248],[-81.926172,37.509618],[-81.854971,37.547957],[-81.838541,37.547957]]]},"id":"54047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.060345,37.504141],[-87.934375,37.482234],[-87.802929,37.378172],[-88.098683,37.181002],[-88.191791,37.14814],[-88.3561,37.405556],[-88.060345,37.504141]]]},"id":"21055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.903746,37.498664],[-112.684669,37.54248],[-110.647247,37.54248],[-111.414018,37.000263],[-112.542268,37.000263],[-112.898269,37.000263],[-112.898269,37.498664],[-112.903746,37.498664]]]},"id":"49025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.651408,37.537003],[-83.580208,37.504141],[-83.547346,37.334356],[-83.525438,37.257679],[-83.574731,37.279587],[-83.782854,37.350787],[-83.886916,37.520572],[-83.651408,37.537003]]]},"id":"21189"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.231963,37.520572],[-84.199102,37.520572],[-84.138855,37.317925],[-84.138855,37.306971],[-84.286733,37.153617],[-84.500334,37.328879],[-84.445564,37.48771],[-84.346979,37.537003],[-84.231963,37.520572]]]},"id":"21203"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.969987,37.537003],[-81.926172,37.509618],[-81.739956,37.241248],[-81.898787,37.142663],[-82.150726,37.044078],[-82.315034,37.296018],[-82.315034,37.296018],[-81.969987,37.537003]]]},"id":"51027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.356123,37.526049],[-76.356123,37.526049],[-76.405416,37.400079],[-76.438277,37.515095],[-76.356123,37.526049]]]},"id":"51115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.944882,37.498664],[-82.922975,37.48771],[-82.709374,37.285064],[-82.731282,37.27411],[-82.999652,37.197433],[-83.125621,37.405556],[-82.950359,37.504141],[-82.944882,37.498664]]]},"id":"21119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.988251,37.48771],[-77.856805,37.41651],[-77.648681,37.263156],[-77.796559,37.191956],[-78.229237,37.296018],[-78.234714,37.367218],[-78.130652,37.454849],[-77.988251,37.48771]]]},"id":"51007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.040741,37.427464],[-76.903817,37.378172],[-76.881909,37.224817],[-76.975017,37.246725],[-77.270772,37.323402],[-77.248864,37.383649],[-77.177664,37.493187],[-77.040741,37.427464]]]},"id":"51036"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.071745,37.48771],[-92.852668,37.482234],[-92.688359,37.482234],[-92.688359,37.065986],[-92.90196,37.071463],[-93.066268,37.087894],[-93.071745,37.41651],[-93.071745,37.48771]]]},"id":"29225"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.853067,37.482234],[-121.475158,37.482234],[-121.228696,37.137186],[-121.217742,36.961924],[-121.447773,36.989309],[-121.57922,36.901678],[-122.154299,37.285064],[-122.083098,37.476757],[-121.853067,37.482234]]]},"id":"06085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.584768,37.47128],[-85.464275,37.465803],[-85.075412,37.411033],[-85.163043,37.312448],[-85.354736,37.191956],[-85.584768,37.47128]]]},"id":"21217"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.474782,37.421987],[-80.430967,37.312448],[-80.606229,37.246725],[-80.852691,37.14814],[-80.978661,37.290541],[-80.858168,37.427464],[-80.858168,37.427464],[-80.474782,37.421987]]]},"id":"51071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.688359,37.482234],[-92.250204,37.47128],[-92.250204,37.060509],[-92.688359,37.065986],[-92.688359,37.482234]]]},"id":"29229"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.349236,37.476757],[-97.152066,37.476757],[-97.146589,37.000263],[-97.464251,37.000263],[-97.650467,37.000263],[-97.803822,37.000263],[-97.803822,37.389126],[-97.809299,37.383649],[-97.809299,37.476757],[-97.349236,37.476757]]]},"id":"20191"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.080866,37.476757],[-96.527695,37.476757],[-96.522218,37.301494],[-96.527695,37.000263],[-96.730341,37.000263],[-96.752249,37.000263],[-96.867265,37.000263],[-97.146589,37.000263],[-97.152066,37.476757],[-97.080866,37.476757]]]},"id":"20035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.213675,37.476757],[-100.109614,37.476757],[-100.087706,37.000263],[-100.6354,37.000263],[-100.651831,37.389126],[-100.651831,37.476757],[-100.213675,37.476757]]]},"id":"20119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.054844,37.47128],[-99.556443,37.465803],[-99.545489,37.383649],[-99.540012,37.000263],[-100.000075,37.000263],[-100.087706,37.000263],[-100.109614,37.476757],[-100.054844,37.47128]]]},"id":"20025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.590245,37.47128],[-85.584768,37.47128],[-85.354736,37.191956],[-85.524521,37.109802],[-85.68883,37.181002],[-85.655968,37.421987],[-85.590245,37.47128]]]},"id":"21087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.482962,37.47128],[-98.466531,37.47128],[-98.351516,37.383649],[-98.346039,37.000263],[-98.543209,37.000263],[-99.003272,37.000263],[-99.014225,37.383649],[-99.014225,37.47128],[-98.482962,37.47128]]]},"id":"20007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.187701,37.465803],[-79.187701,37.465803],[-79.083639,37.394602],[-79.258902,37.356264],[-79.187701,37.465803]]]},"id":"51680"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.739509,37.465803],[-76.712124,37.432941],[-76.657355,37.378172],[-76.728555,37.306971],[-76.679263,37.268633],[-76.591632,37.213863],[-76.613539,37.164571],[-76.794278,37.208387],[-76.881909,37.224817],[-76.903817,37.378172],[-76.739509,37.465803]]]},"id":"51095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.937054,37.465803],[-117.832993,37.465803],[-117.164806,36.972878],[-115.899633,36.00346],[-115.647693,35.80629],[-117.630346,35.795336],[-118.008255,35.789859],[-118.358779,36.742847],[-118.775026,37.460326],[-117.937054,37.465803]]]},"id":"06027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.017446,37.449372],[-85.891476,37.438418],[-85.655968,37.421987],[-85.68883,37.181002],[-85.743599,37.170048],[-86.055785,37.164571],[-86.159846,37.334356],[-86.044831,37.449372],[-86.017446,37.449372]]]},"id":"21099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.125621,37.405556],[-82.999652,37.197433],[-83.120145,37.000263],[-83.180391,37.022171],[-83.509007,37.235771],[-83.525438,37.257679],[-83.547346,37.334356],[-83.125621,37.405556]]]},"id":"21193"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.001485,37.400079],[-78.826223,37.20291],[-78.9029,37.022171],[-78.974101,37.049555],[-79.094593,37.060509],[-79.302717,37.109802],[-79.445118,37.055032],[-79.258902,37.356264],[-79.083639,37.394602],[-79.017916,37.427464],[-79.001485,37.400079]]]},"id":"51031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.619439,37.427464],[-93.619439,37.427464],[-93.181284,37.41651],[-93.071745,37.41651],[-93.066268,37.087894],[-93.482516,37.098848],[-93.608485,37.098848],[-93.624916,37.279587],[-93.619439,37.427464]]]},"id":"29077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.361576,37.405556],[-88.3561,37.405556],[-88.191791,37.14814],[-88.241084,36.983832],[-88.432777,37.049555],[-88.482069,37.022171],[-88.564223,37.082417],[-88.487546,37.065986],[-88.416346,37.421987],[-88.361576,37.405556]]]},"id":"21139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.131051,37.421987],[-106.709327,37.405556],[-106.676465,37.405556],[-106.473818,36.994786],[-107.421329,37.000263],[-107.481575,37.000263],[-107.481575,37.421987],[-107.131051,37.421987]]]},"id":"08007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.554633,37.421987],[-91.209585,37.41651],[-91.017893,37.093371],[-91.220539,37.038601],[-91.220539,36.885247],[-91.658695,36.890724],[-91.653218,37.049555],[-91.647741,37.421987],[-91.554633,37.421987]]]},"id":"29203"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.173551,37.378172],[-80.074966,37.421987],[-79.844934,37.306971],[-79.844934,37.224817],[-80.129735,37.120755],[-80.179028,37.115279],[-80.261182,37.339833],[-80.173551,37.378172]],[[-79.981858,37.328879],[-80.020196,37.306971],[-80.03115,37.263156],[-79.981858,37.328879]]]},"id":"51161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.10188,37.41651],[-86.899233,37.213863],[-86.943049,37.071463],[-86.954003,37.071463],[-87.052588,37.060509],[-87.260711,37.071463],[-87.331912,37.159094],[-87.293573,37.389126],[-87.10188,37.41651]]]},"id":"21177"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.523111,37.400079],[-106.04114,37.400079],[-105.745385,37.356264],[-105.718001,36.994786],[-106.008278,36.994786],[-106.473818,36.994786],[-106.676465,37.405556],[-106.523111,37.400079]]]},"id":"08021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.262098,37.34531],[-78.234714,37.367218],[-78.229237,37.296018],[-78.240191,37.120755],[-78.399022,37.087894],[-78.442837,37.07694],[-78.683823,37.246725],[-78.596192,37.400079],[-78.464745,37.339833],[-78.262098,37.34531]]]},"id":"51147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.614433,37.394602],[-86.466555,37.323402],[-86.400832,37.170048],[-86.674679,37.000263],[-86.943049,37.071463],[-86.899233,37.213863],[-86.614433,37.394602]]]},"id":"21031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.884142,37.389126],[-101.555526,37.389126],[-101.555526,36.994786],[-102.026543,36.994786],[-102.042974,36.994786],[-102.042974,37.389126],[-101.884142,37.389126]]]},"id":"20129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.528141,37.389126],[-101.089986,37.389126],[-101.068078,37.389126],[-101.068078,37.000263],[-101.555526,36.994786],[-101.555526,37.389126],[-101.528141,37.389126]]]},"id":"20189"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.750416,37.389126],[-100.651831,37.389126],[-100.6354,37.000263],[-100.947585,37.000263],[-101.068078,37.000263],[-101.068078,37.389126],[-100.750416,37.389126]]]},"id":"20175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.96357,37.389126],[-95.525414,37.383649],[-95.519938,37.383649],[-95.519938,37.000263],[-95.613046,37.000263],[-95.788308,37.000263],[-95.9088,37.000263],[-95.96357,37.000263],[-95.96357,37.301494],[-95.96357,37.389126]]]},"id":"20125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.803822,37.389126],[-97.803822,37.000263],[-98.11053,37.000263],[-98.346039,37.000263],[-98.351516,37.383649],[-97.809299,37.383649],[-97.803822,37.389126]]]},"id":"20077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.125598,37.383649],[-95.087259,37.383649],[-95.076305,37.339833],[-95.070828,37.000263],[-95.152983,37.000263],[-95.410399,37.000263],[-95.519938,37.000263],[-95.519938,37.383649],[-95.125598,37.383649]]]},"id":"20099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.014225,37.383649],[-99.003272,37.000263],[-99.457858,37.000263],[-99.540012,37.000263],[-99.545489,37.383649],[-99.014225,37.383649]]]},"id":"20033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.657355,37.378172],[-76.498524,37.241248],[-76.399939,37.164571],[-76.394462,37.104325],[-76.4328,37.093371],[-76.55877,37.213863],[-76.591632,37.213863],[-76.679263,37.268633],[-76.728555,37.306971],[-76.657355,37.378172]]]},"id":"51199"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.802929,37.378172],[-87.813882,37.350787],[-87.682436,37.14814],[-87.731728,37.000263],[-87.879606,36.961924],[-88.098683,37.181002],[-87.802929,37.378172]]]},"id":"21033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.261182,37.339833],[-80.179028,37.115279],[-80.545983,36.983832],[-80.578844,37.087894],[-80.529552,37.131709],[-80.606229,37.246725],[-80.430967,37.312448],[-80.261182,37.339833]]]},"id":"51121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.577904,37.361741],[-94.079502,37.350787],[-94.052118,37.290541],[-94.057594,37.049555],[-94.616242,37.055032],[-94.616242,37.339833],[-94.616242,37.361741],[-94.577904,37.361741]]]},"id":"29097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.574731,37.279587],[-83.525438,37.257679],[-83.509007,37.235771],[-83.509007,36.940016],[-83.591161,36.956447],[-83.788331,37.033124],[-83.870485,37.055032],[-83.941686,37.252202],[-83.782854,37.350787],[-83.574731,37.279587]]]},"id":"21051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.670119,37.27411],[-84.500334,37.328879],[-84.286733,37.153617],[-84.357933,36.961924],[-84.577011,36.868816],[-84.807042,36.989309],[-84.834427,36.994786],[-84.90015,37.115279],[-84.719411,37.235771],[-84.670119,37.27411]]]},"id":"21199"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.466555,37.323402],[-86.159846,37.334356],[-86.055785,37.164571],[-86.116031,37.060509],[-86.400832,37.170048],[-86.466555,37.323402]]]},"id":"21061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.829843,37.339833],[-94.616242,37.339833],[-94.616242,37.055032],[-94.616242,37.055032],[-94.616242,37.000263],[-94.994151,37.000263],[-95.005105,37.000263],[-95.070828,37.000263],[-95.076305,37.339833],[-94.829843,37.339833]]]},"id":"20021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.373001,37.323402],[-81.362047,37.339833],[-81.225123,37.235771],[-81.438724,37.011217],[-81.477062,36.989309],[-81.778294,36.956447],[-81.898787,37.142663],[-81.739956,37.241248],[-81.373001,37.323402]]]},"id":"51185"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.931178,37.301494],[-88.712101,37.334356],[-88.487546,37.065986],[-88.564223,37.082417],[-88.925701,37.224817],[-88.931178,37.301494]]]},"id":"17127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.981858,37.328879],[-80.03115,37.263156],[-80.020196,37.306971],[-79.981858,37.328879]]]},"id":"51770"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.138855,37.306971],[-84.138855,37.317925],[-83.941686,37.252202],[-83.870485,37.055032],[-84.089563,36.956447],[-84.122425,36.967401],[-84.297687,36.945493],[-84.357933,36.961924],[-84.286733,37.153617],[-84.138855,37.306971]]]},"id":"21125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.259795,37.334356],[-89.248841,37.334356],[-89.172164,37.065986],[-89.133825,36.983832],[-89.314564,37.011217],[-89.489826,37.252202],[-89.484349,37.334356],[-89.259795,37.334356]]]},"id":"17003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.046194,37.328879],[-88.931178,37.301494],[-88.925701,37.224817],[-88.936655,37.230294],[-89.172164,37.065986],[-89.248841,37.334356],[-89.046194,37.328879]]]},"id":"17153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.281726,37.312448],[-77.270772,37.323402],[-76.975017,37.246725],[-77.155756,37.109802],[-77.396742,36.994786],[-77.396742,37.170048],[-77.374834,37.246725],[-77.336496,37.312448],[-77.281726,37.312448]]]},"id":"51149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.509007,37.235771],[-83.180391,37.022171],[-83.492576,36.896201],[-83.509007,36.940016],[-83.509007,37.235771]]]},"id":"21131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.552353,37.317925],[-90.218259,37.312448],[-90.10872,37.038601],[-90.256598,36.923586],[-90.568783,36.929063],[-90.678322,36.929063],[-90.776907,37.049555],[-90.733092,37.268633],[-90.552353,37.317925]]]},"id":"29223"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.298157,37.312448],[-77.281726,37.312448],[-77.336496,37.312448],[-77.298157,37.312448],[-77.298157,37.312448]]]},"id":"51670"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.163043,37.312448],[-85.042551,37.186479],[-85.234244,36.923586],[-85.447844,36.940016],[-85.453321,36.940016],[-85.524521,37.109802],[-85.354736,37.191956],[-85.163043,37.312448]]]},"id":"21001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.315034,37.296018],[-82.150726,37.044078],[-82.325988,36.972878],[-82.55602,37.20291],[-82.315034,37.296018],[-82.315034,37.296018]]]},"id":"51051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.522218,37.301494],[-95.96357,37.301494],[-95.96357,37.000263],[-96.001908,37.000263],[-96.527695,37.000263],[-96.522218,37.301494]]]},"id":"20019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.225123,37.235771],[-80.978661,37.290541],[-80.852691,37.14814],[-80.912938,37.071463],[-81.378478,36.95097],[-81.438724,37.011217],[-81.225123,37.235771]]]},"id":"51021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.229237,37.296018],[-77.796559,37.191956],[-77.889666,36.989309],[-78.004682,37.022171],[-78.240191,37.120755],[-78.229237,37.296018]]]},"id":"51135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.008302,37.290541],[-93.624916,37.279587],[-93.608485,37.098848],[-93.608485,36.994786],[-93.608485,36.923586],[-94.008302,36.929063],[-94.063071,36.929063],[-94.057594,37.049555],[-94.052118,37.290541],[-94.008302,37.290541]]]},"id":"29109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-122.154299,37.285064],[-121.57922,36.901678],[-121.644943,36.896201],[-121.699712,36.918109],[-121.809251,36.852385],[-122.291222,37.109802],[-122.154299,37.285064]]]},"id":"06087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.731282,37.27411],[-82.566974,37.197433],[-82.868205,36.972878],[-82.912021,37.000263],[-83.120145,37.000263],[-82.999652,37.197433],[-82.731282,37.27411]]]},"id":"21133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.648681,37.263156],[-77.446034,37.224817],[-77.396742,37.170048],[-77.396742,36.994786],[-77.621296,36.87977],[-77.659635,36.896201],[-77.889666,36.989309],[-77.796559,37.191956],[-77.648681,37.263156]]]},"id":"51053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.489826,37.252202],[-89.314564,37.011217],[-89.517211,36.868816],[-89.528165,36.868816],[-89.692473,36.857862],[-89.763673,37.126232],[-89.489826,37.252202]]]},"id":"29201"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.6893,37.246725],[-78.683823,37.246725],[-78.442837,37.07694],[-78.49213,36.890724],[-78.650961,36.699031],[-78.9029,37.022171],[-78.826223,37.20291],[-78.6893,37.246725]]]},"id":"51037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.975017,37.246725],[-76.881909,37.224817],[-76.794278,37.208387],[-76.673786,37.142663],[-76.849048,36.994786],[-76.95311,36.945493],[-77.155756,37.109802],[-76.975017,37.246725]]]},"id":"51181"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.402219,37.241248],[-77.374834,37.246725],[-77.396742,37.170048],[-77.446034,37.224817],[-77.41865,37.235771],[-77.402219,37.235771],[-77.402219,37.241248]]]},"id":"51730"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.606229,37.246725],[-80.529552,37.131709],[-80.578844,37.087894],[-80.545983,36.983832],[-80.633614,36.929063],[-80.743152,36.87977],[-80.912938,37.071463],[-80.852691,37.14814],[-80.606229,37.246725]]]},"id":"51155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.784688,37.230294],[-79.592995,37.044078],[-79.642287,36.857862],[-79.647764,36.852385],[-80.042104,36.792139],[-80.233797,36.874293],[-80.129735,37.120755],[-79.844934,37.224817],[-79.784688,37.230294]]]},"id":"51067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.936655,37.230294],[-88.816163,36.956447],[-89.100963,36.945493],[-89.133825,36.983832],[-89.172164,37.065986],[-88.936655,37.230294]]]},"id":"21007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.925701,37.224817],[-88.564223,37.082417],[-88.482069,37.022171],[-88.482069,36.940016],[-88.723055,36.945493],[-88.810686,36.945493],[-88.816163,36.956447],[-88.936655,37.230294],[-88.925701,37.224817]]]},"id":"21145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.55877,37.213863],[-76.4328,37.093371],[-76.388985,36.989309],[-76.613539,37.164571],[-76.591632,37.213863],[-76.55877,37.213863]]]},"id":"51700"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.55602,37.20291],[-82.325988,36.972878],[-82.408142,36.874293],[-82.479343,36.885247],[-82.76962,36.797616],[-82.868205,36.885247],[-82.879159,36.890724],[-82.868205,36.972878],[-82.566974,37.197433],[-82.55602,37.20291]]]},"id":"51195"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.400832,37.170048],[-86.116031,37.060509],[-86.165323,36.934539],[-86.22557,36.912632],[-86.406309,36.775708],[-86.608956,36.885247],[-86.674679,37.000263],[-86.400832,37.170048]]]},"id":"21227"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.042551,37.186479],[-84.90015,37.115279],[-84.834427,36.994786],[-85.064458,36.857862],[-85.217813,36.852385],[-85.234244,36.923586],[-85.042551,37.186479]]]},"id":"21207"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.68883,37.181002],[-85.524521,37.109802],[-85.453321,36.940016],[-85.595722,36.819524],[-85.738122,36.841432],[-85.743599,37.170048],[-85.68883,37.181002]]]},"id":"21169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.191791,37.14814],[-88.098683,37.181002],[-87.879606,36.961924],[-88.15893,36.868816],[-88.241084,36.983832],[-88.191791,37.14814]]]},"id":"21143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.394462,37.104325],[-76.399939,37.164571],[-76.284923,37.115279],[-76.394462,37.104325]]]},"id":"51735"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.743599,37.170048],[-85.738122,36.841432],[-85.979107,36.720939],[-86.165323,36.934539],[-86.116031,37.060509],[-86.055785,37.164571],[-85.743599,37.170048]]]},"id":"21009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.682436,37.14814],[-87.331912,37.159094],[-87.260711,37.071463],[-87.260711,37.071463],[-87.337389,36.644262],[-87.63862,36.638785],[-87.69339,36.638785],[-87.731728,37.000263],[-87.682436,37.14814]]]},"id":"21047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.898787,37.142663],[-81.778294,36.956447],[-81.838541,36.929063],[-82.331465,36.709985],[-82.408142,36.874293],[-82.325988,36.972878],[-82.150726,37.044078],[-81.898787,37.142663]]]},"id":"51167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.482093,36.929063],[-76.89834,36.644262],[-76.909294,36.649739],[-76.925725,36.709985],[-76.860002,36.961924],[-76.849048,36.994786],[-76.673786,37.142663],[-76.482093,36.929063]]]},"id":"51093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.302717,37.109802],[-79.094593,37.060509],[-79.220563,36.5402],[-79.341056,36.5402],[-79.401302,36.638785],[-79.472502,36.5402],[-79.510841,36.5402],[-79.713488,36.5402],[-79.642287,36.857862],[-79.592995,37.044078],[-79.445118,37.055032],[-79.302717,37.109802]]]},"id":"51143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.867735,37.126232],[-89.763673,37.126232],[-89.692473,36.857862],[-89.960843,36.627831],[-90.048474,36.627831],[-90.147059,36.633308],[-90.256598,36.923586],[-90.10872,37.038601],[-89.867735,37.126232],[-89.867735,37.126232]]]},"id":"29207"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.129735,37.120755],[-80.233797,36.874293],[-80.463828,36.709985],[-80.633614,36.929063],[-80.545983,36.983832],[-80.179028,37.115279],[-80.129735,37.120755]]]},"id":"51063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.399022,37.087894],[-78.240191,37.120755],[-78.004682,37.022171],[-78.02659,36.775708],[-78.475699,36.885247],[-78.49213,36.890724],[-78.442837,37.07694],[-78.399022,37.087894]]]},"id":"51111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.394462,37.104325],[-76.284923,37.115279],[-76.388985,36.989309],[-76.4328,37.093371],[-76.394462,37.104325]]]},"id":"51650"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.155756,37.109802],[-76.95311,36.945493],[-77.429604,36.709985],[-77.621296,36.87977],[-77.396742,36.994786],[-77.155756,37.109802]]]},"id":"51183"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.220539,37.038601],[-91.017893,37.093371],[-90.776907,37.049555],[-90.678322,36.929063],[-90.661891,36.814047],[-90.935738,36.814047],[-91.116477,36.825001],[-91.220539,36.885247],[-91.220539,37.038601]]]},"id":"29035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.482516,37.098848],[-93.066268,37.087894],[-92.90196,37.071463],[-92.907437,36.80857],[-93.301777,36.819524],[-93.592055,36.994786],[-93.608485,36.994786],[-93.608485,37.098848],[-93.482516,37.098848]]]},"id":"29043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.260711,37.071463],[-87.260711,37.071463],[-87.052588,37.060509],[-87.058065,36.644262],[-87.112834,36.644262],[-87.337389,36.644262],[-87.260711,37.071463]]]},"id":"21219"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.954003,37.071463],[-86.943049,37.071463],[-86.674679,37.000263],[-86.608956,36.885247],[-86.76231,36.649739],[-87.058065,36.644262],[-87.052588,37.060509],[-86.954003,37.071463]]]},"id":"21141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.912938,37.071463],[-80.743152,36.87977],[-81.044384,36.80857],[-81.263462,36.764754],[-81.378478,36.95097],[-80.912938,37.071463]]]},"id":"51197"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.314564,37.011217],[-89.133825,36.983832],[-89.100963,36.945493],[-89.122871,36.786662],[-89.172164,36.649739],[-89.325518,36.633308],[-89.517211,36.868816],[-89.314564,37.011217]]]},"id":"29133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.688359,37.065986],[-92.250204,37.060509],[-92.091373,37.055032],[-92.113281,36.792139],[-92.529528,36.803093],[-92.765037,36.80857],[-92.907437,36.80857],[-92.90196,37.071463],[-92.688359,37.065986]]]},"id":"29067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.432777,37.049555],[-88.241084,36.983832],[-88.15893,36.868816],[-88.109637,36.748324],[-88.487546,36.748324],[-88.482069,36.940016],[-88.482069,37.022171],[-88.432777,37.049555]]]},"id":"21157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.974101,37.049555],[-78.9029,37.022171],[-78.650961,36.699031],[-78.733115,36.5402],[-78.798839,36.5402],[-79.138409,36.5402],[-79.220563,36.5402],[-79.094593,37.060509],[-78.974101,37.049555]]]},"id":"51083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.616242,37.055032],[-94.616242,37.055032],[-94.057594,37.049555],[-94.063071,36.929063],[-94.068548,36.748324],[-94.539565,36.764754],[-94.616242,36.764754],[-94.616242,37.000263],[-94.616242,37.055032]]]},"id":"29145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.074942,37.055032],[-91.653218,37.049555],[-91.658695,36.890724],[-91.669648,36.501861],[-92.118758,36.496384],[-92.113281,36.792139],[-92.091373,37.055032],[-92.074942,37.055032]]]},"id":"29091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.788331,37.033124],[-83.591161,36.956447],[-83.875962,36.688077],[-84.089563,36.956447],[-83.870485,37.055032],[-83.788331,37.033124]]]},"id":"21121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.004682,37.022171],[-77.889666,36.989309],[-77.659635,36.896201],[-77.769174,36.545677],[-77.90062,36.545677],[-78.048498,36.545677],[-78.02659,36.775708],[-78.004682,37.022171]]]},"id":"51025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.912021,37.000263],[-82.868205,36.972878],[-82.879159,36.890724],[-83.459715,36.666169],[-83.492576,36.896201],[-83.180391,37.022171],[-83.120145,37.000263],[-82.912021,37.000263]]]},"id":"21095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.477062,36.989309],[-81.438724,37.011217],[-81.378478,36.95097],[-81.263462,36.764754],[-81.608509,36.638785],[-81.838541,36.929063],[-81.778294,36.956447],[-81.477062,36.989309]]]},"id":"51173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.000968,37.000263],[-110.000968,35.663889],[-109.842137,35.516012],[-109.891429,33.566221],[-110.000968,33.577175],[-110.000968,33.998899],[-110.751309,33.998899],[-110.751309,34.261793],[-110.751309,37.00574],[-110.000968,37.000263]]]},"id":"04017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.751309,37.00574],[-110.751309,34.261793],[-111.556419,34.469916],[-111.775497,34.979272],[-112.334144,34.973795],[-112.438206,35.258596],[-113.336425,35.526966],[-113.352855,36.047275],[-112.629899,36.392322],[-112.542268,37.000263],[-111.414018,37.000263],[-110.751309,37.00574]]]},"id":"04005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.087706,37.000263],[-100.000075,37.000263],[-100.005552,36.594969],[-100.005552,36.501861],[-100.547769,36.501861],[-100.805185,36.501861],[-100.953062,36.501861],[-100.947585,37.000263],[-100.6354,37.000263],[-100.087706,37.000263]]]},"id":"40007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.731728,37.000263],[-87.69339,36.638785],[-88.071299,36.677123],[-88.109637,36.748324],[-88.15893,36.868816],[-87.879606,36.961924],[-87.731728,37.000263]]]},"id":"21221"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.000075,37.000263],[-99.540012,37.000263],[-99.457858,37.000263],[-99.293549,36.819524],[-99.605735,36.594969],[-100.005552,36.594969],[-100.000075,37.000263]]]},"id":"40059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.042974,36.994786],[-102.026543,36.994786],[-102.03202,36.501861],[-102.163466,36.501861],[-103.001438,36.501861],[-103.001438,37.000263],[-102.042974,36.994786]]]},"id":"40025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-112.898269,37.000263],[-112.542268,37.000263],[-112.629899,36.392322],[-113.352855,36.047275],[-113.336425,35.526966],[-113.330948,34.316562],[-113.418579,34.300131],[-114.136058,34.305608],[-114.634459,35.00118],[-114.754952,36.085614],[-114.048427,36.195153],[-114.048427,36.841432],[-114.048427,37.000263],[-112.898269,37.000263]]]},"id":"04015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.001438,37.000263],[-103.001438,36.501861],[-103.039777,36.052752],[-103.039777,35.740566],[-103.37387,35.740566],[-103.362916,36.085614],[-104.009195,36.21706],[-104.009195,36.994786],[-103.083592,37.000263],[-103.001438,37.000263]]]},"id":"35059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.457858,37.000263],[-99.003272,37.000263],[-98.543209,37.000263],[-98.532255,36.463523],[-98.959456,36.507338],[-99.293549,36.819524],[-99.457858,37.000263]]]},"id":"40151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.421329,37.000263],[-106.473818,36.994786],[-106.008278,36.994786],[-105.958986,36.353984],[-105.531785,36.014414],[-105.718001,35.976075],[-106.068525,35.997983],[-106.243787,35.932259],[-106.249264,35.965121],[-106.884589,36.21706],[-107.623976,36.222537],[-107.421329,37.000263]]]},"id":"35039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.421329,37.000263],[-107.623976,36.222537],[-107.623976,35.997983],[-108.883672,36.00346],[-109.04798,36.00346],[-109.042503,37.000263],[-108.379794,37.000263],[-107.481575,37.000263],[-107.421329,37.000263]]]},"id":"35045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.152983,37.000263],[-95.070828,37.000263],[-95.005105,37.000263],[-94.999628,36.671646],[-95.005105,36.507338],[-95.322768,36.512815],[-95.328245,36.512815],[-95.432306,36.594969],[-95.410399,37.000263],[-95.152983,37.000263]]]},"id":"40035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.994151,37.000263],[-94.616242,37.000263],[-94.616242,36.764754],[-94.616242,36.666169],[-94.890089,36.671646],[-94.999628,36.671646],[-95.005105,37.000263],[-94.994151,37.000263]]]},"id":"40115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.613046,37.000263],[-95.519938,37.000263],[-95.410399,37.000263],[-95.432306,36.594969],[-95.810215,36.594969],[-95.788308,37.000263],[-95.613046,37.000263]]]},"id":"40105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.000968,37.000263],[-109.042503,37.000263],[-109.04798,36.00346],[-109.04798,34.957364],[-109.04798,34.579455],[-109.04798,33.779822],[-109.497089,33.653852],[-109.743552,33.500498],[-109.891429,33.566221],[-109.842137,35.516012],[-110.000968,35.663889],[-110.000968,37.000263]]]},"id":"04001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.9088,37.000263],[-95.788308,37.000263],[-95.810215,36.594969],[-95.810215,36.425184],[-95.919754,36.425184],[-96.001908,36.425184],[-96.001908,37.000263],[-95.96357,37.000263],[-95.9088,37.000263]]]},"id":"40147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.730341,37.000263],[-96.527695,37.000263],[-96.001908,37.000263],[-96.001908,36.425184],[-96.270278,36.162291],[-96.724864,36.529246],[-97.009665,36.507338],[-97.058958,36.594969],[-96.752249,37.000263],[-96.730341,37.000263]]]},"id":"40113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.867265,37.000263],[-96.752249,37.000263],[-97.058958,36.594969],[-97.464251,36.594969],[-97.464251,36.594969],[-97.464251,37.000263],[-97.146589,37.000263],[-96.867265,37.000263]]]},"id":"40071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.650467,37.000263],[-97.464251,37.000263],[-97.464251,36.594969],[-97.984561,36.594969],[-98.105053,36.594969],[-98.11053,37.000263],[-97.803822,37.000263],[-97.650467,37.000263]]]},"id":"40053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.543209,37.000263],[-98.346039,37.000263],[-98.11053,37.000263],[-98.105053,36.594969],[-98.105053,36.463523],[-98.532255,36.463523],[-98.543209,37.000263]]]},"id":"40003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.947585,37.000263],[-100.953062,36.501861],[-101.084509,36.501861],[-101.621249,36.501861],[-101.812942,36.501861],[-102.03202,36.501861],[-102.026543,36.994786],[-101.555526,36.994786],[-101.068078,37.000263],[-100.947585,37.000263]]]},"id":"40139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.807042,36.989309],[-84.577011,36.868816],[-84.779657,36.605923],[-84.785134,36.605923],[-84.976827,36.616877],[-85.064458,36.857862],[-84.834427,36.994786],[-84.807042,36.989309]]]},"id":"21231"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.860002,36.961924],[-76.925725,36.709985],[-76.909294,36.649739],[-76.89834,36.644262],[-76.914771,36.551154],[-76.914771,36.545677],[-77.16671,36.545677],[-77.298157,36.545677],[-77.429604,36.709985],[-76.95311,36.945493],[-76.849048,36.994786],[-76.860002,36.961924]]]},"id":"51175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.009195,36.994786],[-104.009195,36.21706],[-104.436396,36.21706],[-105.340092,36.260876],[-105.219599,36.994786],[-105.153876,36.994786],[-104.009195,36.994786]]]},"id":"35007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.219599,36.994786],[-105.340092,36.260876],[-105.531785,36.014414],[-105.958986,36.353984],[-106.008278,36.994786],[-105.718001,36.994786],[-105.219599,36.994786]]]},"id":"35055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.592055,36.994786],[-93.301777,36.819524],[-93.312731,36.496384],[-93.586578,36.496384],[-93.608485,36.923586],[-93.608485,36.994786],[-93.592055,36.994786]]]},"id":"29209"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.447773,36.989309],[-121.217742,36.961924],[-120.91651,36.742847],[-120.681002,36.266353],[-121.31085,36.501861],[-121.644943,36.896201],[-121.57922,36.901678],[-121.447773,36.989309]]]},"id":"06069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.122425,36.967401],[-84.089563,36.956447],[-83.875962,36.688077],[-83.930732,36.589492],[-83.985501,36.589492],[-84.226487,36.589492],[-84.297687,36.945493],[-84.122425,36.967401]]]},"id":"21235"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.175384,36.929063],[-76.180861,36.923586],[-76.224677,36.841432],[-76.2904,36.819524],[-76.345169,36.918109],[-76.175384,36.929063]]]},"id":"51710"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.357933,36.961924],[-84.297687,36.945493],[-84.226487,36.589492],[-84.259348,36.589492],[-84.779657,36.605923],[-84.577011,36.868816],[-84.357933,36.961924]]]},"id":"21147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.509007,36.940016],[-83.492576,36.896201],[-83.459715,36.666169],[-83.673316,36.600446],[-83.930732,36.589492],[-83.875962,36.688077],[-83.591161,36.956447],[-83.509007,36.940016]]]},"id":"21013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.810686,36.945493],[-88.810686,36.775708],[-89.122871,36.786662],[-89.100963,36.945493],[-88.816163,36.956447],[-88.810686,36.945493]]]},"id":"21039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.723055,36.945493],[-88.482069,36.940016],[-88.487546,36.748324],[-88.487546,36.501861],[-88.514931,36.501861],[-88.816163,36.501861],[-88.810686,36.775708],[-88.810686,36.945493],[-88.723055,36.945493]]]},"id":"21083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.447844,36.940016],[-85.234244,36.923586],[-85.217813,36.852385],[-85.29449,36.627831],[-85.43689,36.616877],[-85.595722,36.819524],[-85.453321,36.940016],[-85.447844,36.940016]]]},"id":"21057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.22557,36.912632],[-86.165323,36.934539],[-85.979107,36.720939],[-85.979107,36.627831],[-86.203662,36.638785],[-86.411786,36.649739],[-86.406309,36.775708],[-86.22557,36.912632]]]},"id":"21003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.180861,36.923586],[-76.175384,36.929063],[-75.868676,36.551154],[-75.901537,36.551154],[-76.120615,36.551154],[-76.224677,36.841432],[-76.180861,36.923586]]]},"id":"51810"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.008302,36.929063],[-93.608485,36.923586],[-93.586578,36.496384],[-93.728978,36.496384],[-93.865902,36.496384],[-94.079502,36.496384],[-94.068548,36.748324],[-94.063071,36.929063],[-94.008302,36.929063]]]},"id":"29009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.633614,36.929063],[-80.463828,36.709985],[-80.611706,36.556631],[-80.83626,36.556631],[-80.83626,36.556631],[-80.912938,36.649739],[-80.934845,36.671646],[-81.044384,36.80857],[-80.743152,36.87977],[-80.633614,36.929063]]]},"id":"51035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.838541,36.929063],[-81.608509,36.638785],[-81.646848,36.6114],[-81.827587,36.616877],[-82.145249,36.594969],[-82.145249,36.671646],[-82.243834,36.594969],[-82.293127,36.594969],[-82.331465,36.709985],[-81.838541,36.929063]]]},"id":"51191"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.405416,36.896201],[-76.421846,36.868816],[-76.493047,36.551154],[-76.542339,36.551154],[-76.914771,36.551154],[-76.89834,36.644262],[-76.482093,36.929063],[-76.405416,36.896201]]]},"id":"51800"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.568783,36.929063],[-90.256598,36.923586],[-90.147059,36.633308],[-90.218259,36.496384],[-90.57426,36.496384],[-90.661891,36.814047],[-90.678322,36.929063],[-90.568783,36.929063]]]},"id":"29023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.345169,36.918109],[-76.2904,36.819524],[-76.405416,36.868816],[-76.421846,36.868816],[-76.405416,36.896201],[-76.345169,36.918109]]]},"id":"51740"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.699712,36.918109],[-121.644943,36.896201],[-121.31085,36.501861],[-120.681002,36.266353],[-120.314047,35.904875],[-120.215462,35.789859],[-121.343711,35.795336],[-121.896882,36.315645],[-121.809251,36.852385],[-121.699712,36.918109]]]},"id":"06053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.621296,36.87977],[-77.429604,36.709985],[-77.298157,36.545677],[-77.769174,36.545677],[-77.659635,36.896201],[-77.621296,36.87977]]]},"id":"51081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.868205,36.885247],[-82.76962,36.797616],[-82.983221,36.594969],[-83.470669,36.594969],[-83.673316,36.600446],[-83.459715,36.666169],[-82.879159,36.890724],[-82.868205,36.885247]]]},"id":"51105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.475699,36.885247],[-78.02659,36.775708],[-78.048498,36.545677],[-78.322345,36.545677],[-78.459268,36.5402],[-78.470222,36.5402],[-78.733115,36.5402],[-78.650961,36.699031],[-78.49213,36.890724],[-78.475699,36.885247]]]},"id":"51117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.658695,36.890724],[-91.220539,36.885247],[-91.116477,36.825001],[-91.127431,36.496384],[-91.406755,36.496384],[-91.450571,36.496384],[-91.450571,36.496384],[-91.669648,36.501861],[-91.658695,36.890724]]]},"id":"29149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.217813,36.852385],[-85.064458,36.857862],[-84.976827,36.616877],[-85.278059,36.627831],[-85.29449,36.627831],[-85.217813,36.852385]]]},"id":"21053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.479343,36.885247],[-82.408142,36.874293],[-82.331465,36.709985],[-82.293127,36.594969],[-82.610789,36.594969],[-82.654605,36.594969],[-82.829867,36.594969],[-82.983221,36.594969],[-82.76962,36.797616],[-82.479343,36.885247]]]},"id":"51169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.608956,36.885247],[-86.406309,36.775708],[-86.411786,36.649739],[-86.56514,36.633308],[-86.76231,36.649739],[-86.608956,36.885247]]]},"id":"21213"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.233797,36.874293],[-80.042104,36.792139],[-80.053058,36.5402],[-80.441921,36.551154],[-80.611706,36.556631],[-80.463828,36.709985],[-80.233797,36.874293]]]},"id":"51141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.528165,36.868816],[-89.517211,36.868816],[-89.325518,36.633308],[-89.418626,36.496384],[-89.484349,36.496384],[-89.539119,36.496384],[-89.544596,36.337553],[-89.714381,36.425184],[-89.960843,36.386845],[-89.960843,36.627831],[-89.692473,36.857862],[-89.528165,36.868816]]]},"id":"29143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.405416,36.868816],[-76.2904,36.819524],[-76.224677,36.841432],[-76.120615,36.551154],[-76.312308,36.551154],[-76.493047,36.551154],[-76.421846,36.868816],[-76.405416,36.868816]]]},"id":"51550"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.647764,36.852385],[-79.642287,36.857862],[-79.713488,36.5402],[-79.965427,36.5402],[-80.025673,36.5402],[-80.053058,36.5402],[-80.042104,36.792139],[-79.647764,36.852385]]]},"id":"51089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.081288,36.841432],[-114.048427,36.841432],[-114.048427,36.195153],[-114.754952,36.085614],[-114.634459,35.00118],[-115.647693,35.80629],[-115.899633,36.00346],[-115.894156,36.841432],[-114.081288,36.841432]]]},"id":"32003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.738122,36.841432],[-85.595722,36.819524],[-85.43689,36.616877],[-85.787415,36.622354],[-85.979107,36.627831],[-85.979107,36.720939],[-85.738122,36.841432]]]},"id":"21171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.935738,36.814047],[-90.661891,36.814047],[-90.57426,36.496384],[-90.782384,36.496384],[-90.848107,36.496384],[-91.127431,36.496384],[-91.116477,36.825001],[-90.935738,36.814047]]]},"id":"29181"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.293549,36.819524],[-98.959456,36.507338],[-98.959456,36.501861],[-98.953979,36.162291],[-99.38118,36.162291],[-99.605735,36.594969],[-99.293549,36.819524]]]},"id":"40153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.301777,36.819524],[-92.907437,36.80857],[-92.765037,36.80857],[-92.770513,36.496384],[-92.852668,36.496384],[-93.066268,36.496384],[-93.2963,36.496384],[-93.312731,36.496384],[-93.301777,36.819524]]]},"id":"29213"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.044384,36.80857],[-80.934845,36.671646],[-80.912938,36.649739],[-80.83626,36.556631],[-80.901984,36.562108],[-80.978661,36.562108],[-81.351093,36.573061],[-81.679709,36.589492],[-81.646848,36.6114],[-81.608509,36.638785],[-81.263462,36.764754],[-81.044384,36.80857]]]},"id":"51077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.529528,36.803093],[-92.113281,36.792139],[-92.118758,36.496384],[-92.151619,36.496384],[-92.529528,36.496384],[-92.770513,36.496384],[-92.765037,36.80857],[-92.529528,36.803093]]]},"id":"29153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.122871,36.786662],[-88.810686,36.775708],[-88.816163,36.501861],[-88.827116,36.501861],[-88.832593,36.501861],[-89.095486,36.622354],[-89.172164,36.649739],[-89.122871,36.786662]]]},"id":"21105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.539565,36.764754],[-94.068548,36.748324],[-94.079502,36.496384],[-94.473842,36.501861],[-94.616242,36.501861],[-94.616242,36.666169],[-94.616242,36.764754],[-94.539565,36.764754]]]},"id":"29119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.109637,36.748324],[-88.071299,36.677123],[-88.054868,36.496384],[-88.487546,36.501861],[-88.487546,36.748324],[-88.109637,36.748324]]]},"id":"21035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.358779,36.742847],[-118.008255,35.789859],[-119.536321,35.789859],[-119.57466,36.490907],[-118.98315,36.742847],[-118.358779,36.742847]]]},"id":"06107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.071299,36.677123],[-87.69339,36.638785],[-87.63862,36.638785],[-87.594805,36.364938],[-87.753636,36.34303],[-87.983668,36.353984],[-87.989145,36.359461],[-88.054868,36.496384],[-88.071299,36.677123]]]},"id":"47161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.145249,36.671646],[-82.145249,36.594969],[-82.243834,36.594969],[-82.145249,36.671646]]]},"id":"51520"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.890089,36.671646],[-94.616242,36.666169],[-94.616242,36.501861],[-94.561473,36.162291],[-94.769597,36.162291],[-94.796981,36.162291],[-95.010582,36.162291],[-95.005105,36.507338],[-94.999628,36.671646],[-94.890089,36.671646]]]},"id":"40041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.76231,36.649739],[-86.56514,36.633308],[-86.756833,36.403276],[-86.76231,36.403276],[-86.915664,36.381369],[-87.118311,36.458046],[-87.112834,36.644262],[-87.058065,36.644262],[-86.76231,36.649739]]]},"id":"47147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.411786,36.649739],[-86.203662,36.638785],[-86.231047,36.48543],[-86.285816,36.348507],[-86.36797,36.353984],[-86.592525,36.244445],[-86.756833,36.403276],[-86.56514,36.633308],[-86.411786,36.649739]]]},"id":"47165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.095486,36.622354],[-88.832593,36.501861],[-89.117394,36.501861],[-89.347426,36.501861],[-89.418626,36.496384],[-89.325518,36.633308],[-89.172164,36.649739],[-89.095486,36.622354]]]},"id":"21075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.401302,36.638785],[-79.341056,36.5402],[-79.472502,36.5402],[-79.401302,36.638785]]]},"id":"51590"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.112834,36.644262],[-87.118311,36.458046],[-87.288096,36.321122],[-87.512651,36.332076],[-87.594805,36.364938],[-87.63862,36.638785],[-87.337389,36.644262],[-87.112834,36.644262]]]},"id":"47125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.203662,36.638785],[-85.979107,36.627831],[-85.787415,36.622354],[-85.814799,36.501861],[-85.825753,36.41423],[-85.979107,36.425184],[-86.231047,36.48543],[-86.203662,36.638785]]]},"id":"47111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.048474,36.627831],[-89.960843,36.627831],[-89.960843,36.386845],[-89.960843,35.997983],[-90.289459,35.997983],[-90.377091,35.997983],[-90.190875,36.200629],[-90.218259,36.496384],[-90.147059,36.633308],[-90.048474,36.627831]]]},"id":"29069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.278059,36.627831],[-85.283536,36.529246],[-85.497137,36.403276],[-85.814799,36.501861],[-85.787415,36.622354],[-85.43689,36.616877],[-85.29449,36.627831],[-85.278059,36.627831]]]},"id":"47027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.278059,36.627831],[-84.976827,36.616877],[-84.785134,36.605923],[-84.730365,36.523769],[-85.009689,36.567584],[-85.119228,36.408753],[-85.283536,36.534723],[-85.283536,36.529246],[-85.278059,36.627831]]]},"id":"47137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.827587,36.616877],[-81.986418,36.507338],[-82.298603,36.397799],[-82.473866,36.441615],[-82.681989,36.430661],[-82.610789,36.594969],[-82.293127,36.594969],[-82.243834,36.594969],[-82.145249,36.594969],[-81.827587,36.616877]]]},"id":"47163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.827587,36.616877],[-81.646848,36.6114],[-81.679709,36.589492],[-81.734479,36.392322],[-81.920695,36.288261],[-81.931648,36.266353],[-81.986418,36.507338],[-81.827587,36.616877]]]},"id":"47091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.785134,36.605923],[-84.779657,36.605923],[-84.259348,36.589492],[-84.374364,36.21706],[-84.440087,36.162291],[-84.70298,36.370415],[-84.730365,36.523769],[-84.785134,36.605923]]]},"id":"47151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.673316,36.600446],[-83.470669,36.594969],[-83.388515,36.41423],[-83.667839,36.34303],[-83.903347,36.419707],[-83.985501,36.589492],[-83.930732,36.589492],[-83.673316,36.600446]]]},"id":"47025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.464251,36.594969],[-97.058958,36.594969],[-97.009665,36.507338],[-96.927511,36.244445],[-97.031573,36.244445],[-97.354713,36.156814],[-97.458774,36.162291],[-97.464251,36.594969]]]},"id":"40103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.983221,36.594969],[-82.829867,36.594969],[-83.278976,36.392322],[-83.388515,36.41423],[-83.470669,36.594969],[-82.983221,36.594969]]]},"id":"47067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.810215,36.594969],[-95.432306,36.594969],[-95.328245,36.512815],[-95.437783,36.07466],[-95.618522,36.162291],[-95.760923,36.162291],[-95.810215,36.425184],[-95.810215,36.594969]]]},"id":"40131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.654605,36.594969],[-82.610789,36.594969],[-82.681989,36.430661],[-82.703897,36.408753],[-83.081806,36.244445],[-83.158483,36.332076],[-83.257068,36.288261],[-83.278976,36.392322],[-82.829867,36.594969],[-82.654605,36.594969]]]},"id":"47073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.984561,36.594969],[-97.464251,36.594969],[-97.464251,36.594969],[-97.458774,36.162291],[-97.677852,36.162291],[-98.0941,36.167768],[-98.105053,36.162291],[-98.105053,36.463523],[-98.105053,36.594969],[-97.984561,36.594969]]]},"id":"40047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.605735,36.594969],[-99.38118,36.162291],[-99.38118,36.014414],[-100.000075,35.882967],[-100.000075,36.058229],[-100.005552,36.501861],[-100.005552,36.594969],[-99.605735,36.594969]]]},"id":"40045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.226487,36.589492],[-83.985501,36.589492],[-83.903347,36.419707],[-84.001932,36.27183],[-84.374364,36.21706],[-84.259348,36.589492],[-84.226487,36.589492]]]},"id":"47013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.351093,36.573061],[-81.252508,36.364938],[-81.477062,36.238968],[-81.734479,36.392322],[-81.679709,36.589492],[-81.351093,36.573061]]]},"id":"37009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.009689,36.567584],[-84.730365,36.523769],[-84.70298,36.370415],[-84.724888,36.375892],[-84.905627,36.156814],[-84.987781,36.162291],[-85.102797,36.140383],[-85.119228,36.14586],[-85.119228,36.408753],[-85.009689,36.567584]]]},"id":"47049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.978661,36.562108],[-80.901984,36.562108],[-80.967707,36.403276],[-81.082723,36.430661],[-81.252508,36.364938],[-81.351093,36.573061],[-80.978661,36.562108]]]},"id":"37005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.724864,36.529246],[-96.270278,36.162291],[-96.297663,36.162291],[-96.620803,36.162291],[-96.927511,36.244445],[-97.009665,36.507338],[-96.724864,36.529246]]]},"id":"40117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.83626,36.556631],[-80.611706,36.556631],[-80.441921,36.551154],[-80.452875,36.260876],[-80.452875,36.238968],[-80.874599,36.238968],[-80.967707,36.403276],[-80.901984,36.562108],[-80.83626,36.556631],[-80.83626,36.556631]]]},"id":"37171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.914771,36.551154],[-76.542339,36.551154],[-76.493047,36.512815],[-76.454708,36.375892],[-76.55877,36.353984],[-76.695693,36.293737],[-76.914771,36.545677],[-76.914771,36.551154]]]},"id":"37073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.493047,36.551154],[-76.312308,36.551154],[-75.885106,36.162291],[-76.049415,36.184199],[-76.493047,36.512815],[-76.542339,36.551154],[-76.493047,36.551154]]]},"id":"37029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.901537,36.551154],[-75.868676,36.551154],[-75.775568,36.233491],[-75.791998,36.228014],[-75.885106,36.162291],[-76.312308,36.551154],[-76.120615,36.551154],[-75.901537,36.551154]]]},"id":"37053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.441921,36.551154],[-80.053058,36.5402],[-80.025673,36.5402],[-80.036627,36.255399],[-80.036627,36.255399],[-80.452875,36.260876],[-80.441921,36.551154]]]},"id":"37169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.298157,36.545677],[-77.16671,36.545677],[-77.210526,36.244445],[-77.29268,36.167768],[-77.90062,36.507338],[-77.90062,36.545677],[-77.769174,36.545677],[-77.298157,36.545677]]]},"id":"37131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.914771,36.545677],[-76.695693,36.293737],[-76.706647,36.244445],[-77.210526,36.244445],[-77.16671,36.545677],[-76.914771,36.545677]]]},"id":"37091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.322345,36.545677],[-78.048498,36.545677],[-77.90062,36.545677],[-77.90062,36.507338],[-78.004682,36.200629],[-78.163514,36.249922],[-78.305914,36.266353],[-78.322345,36.545677]]]},"id":"37185"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.322345,36.545677],[-78.305914,36.266353],[-78.497607,36.173245],[-78.459268,36.5402],[-78.322345,36.545677]]]},"id":"37181"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.965427,36.5402],[-79.713488,36.5402],[-79.510841,36.5402],[-79.532749,36.249922],[-79.532749,36.238968],[-80.036627,36.255399],[-80.025673,36.5402],[-79.965427,36.5402]]]},"id":"37157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.470222,36.5402],[-78.459268,36.5402],[-78.497607,36.173245],[-78.546899,36.01989],[-78.749546,36.069183],[-78.804316,36.233491],[-78.798839,36.5402],[-78.733115,36.5402],[-78.470222,36.5402]]]},"id":"37077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.138409,36.5402],[-78.798839,36.5402],[-78.804316,36.233491],[-78.952193,36.238968],[-79.15484,36.244445],[-79.138409,36.5402]]]},"id":"37145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.138409,36.5402],[-79.15484,36.244445],[-79.247948,36.244445],[-79.258902,36.244445],[-79.532749,36.249922],[-79.510841,36.5402],[-79.472502,36.5402],[-79.341056,36.5402],[-79.220563,36.5402],[-79.138409,36.5402]]]},"id":"37033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.283536,36.534723],[-85.119228,36.408753],[-85.119228,36.14586],[-85.497137,36.304691],[-85.497137,36.403276],[-85.283536,36.529246],[-85.283536,36.534723]]]},"id":"47133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.814799,36.501861],[-85.497137,36.403276],[-85.497137,36.304691],[-85.497137,36.299214],[-85.781938,36.238968],[-85.825753,36.41423],[-85.814799,36.501861]]]},"id":"47087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.90062,36.507338],[-77.29268,36.167768],[-77.325542,36.07466],[-77.402219,36.00346],[-77.697974,36.151337],[-78.004682,36.200629],[-77.90062,36.507338]]]},"id":"37083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.986418,36.507338],[-81.931648,36.266353],[-82.079526,36.107521],[-82.221926,36.156814],[-82.320511,36.260876],[-82.342419,36.255399],[-82.298603,36.397799],[-81.986418,36.507338]]]},"id":"47019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.493047,36.512815],[-76.049415,36.184199],[-76.191815,36.118475],[-76.454708,36.375892],[-76.493047,36.512815]]]},"id":"37139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.322768,36.512815],[-95.005105,36.507338],[-95.010582,36.162291],[-95.027013,36.162291],[-95.207752,36.07466],[-95.437783,36.07466],[-95.328245,36.512815],[-95.322768,36.512815]]]},"id":"40097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.117394,36.501861],[-88.832593,36.501861],[-88.827116,36.501861],[-88.958563,36.222537],[-89.155733,36.206106],[-89.265272,36.206106],[-89.484349,36.211583],[-89.347426,36.501861],[-89.117394,36.501861]]]},"id":"47131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.959456,36.501861],[-98.959456,36.507338],[-98.532255,36.463523],[-98.105053,36.463523],[-98.105053,36.162291],[-98.209115,36.162291],[-98.488439,36.162291],[-98.636317,36.162291],[-98.953979,36.162291],[-98.959456,36.501861]]]},"id":"40093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.347426,36.501861],[-89.484349,36.211583],[-89.62675,36.184199],[-89.544596,36.337553],[-89.539119,36.496384],[-89.484349,36.496384],[-89.418626,36.496384],[-89.347426,36.501861]]]},"id":"47095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.827116,36.501861],[-88.816163,36.501861],[-88.514931,36.501861],[-88.531362,36.151337],[-88.690193,36.063706],[-88.958563,36.222537],[-88.827116,36.501861]]]},"id":"47183"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.514931,36.501861],[-88.487546,36.501861],[-88.054868,36.496384],[-87.989145,36.359461],[-88.213699,36.118475],[-88.531362,36.151337],[-88.514931,36.501861]]]},"id":"47079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.001438,36.501861],[-102.163466,36.501861],[-102.163466,36.052752],[-102.30039,36.052752],[-103.039777,36.052752],[-103.001438,36.501861]]]},"id":"48111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.812942,36.501861],[-101.621249,36.501861],[-101.621249,36.052752],[-102.125128,36.058229],[-102.163466,36.052752],[-102.163466,36.501861],[-102.03202,36.501861],[-101.812942,36.501861]]]},"id":"48421"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.005552,36.501861],[-100.000075,36.058229],[-100.542292,36.058229],[-100.547769,36.058229],[-100.547769,36.501861],[-100.005552,36.501861]]]},"id":"48295"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.805185,36.501861],[-100.547769,36.501861],[-100.547769,36.058229],[-100.947585,36.058229],[-101.084509,36.058229],[-101.084509,36.501861],[-100.953062,36.501861],[-100.805185,36.501861]]]},"id":"48357"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.473842,36.501861],[-94.079502,36.496384],[-93.865902,36.496384],[-93.816609,36.304691],[-93.887809,36.233491],[-94.013779,36.206106],[-94.550519,36.102045],[-94.561473,36.162291],[-94.616242,36.501861],[-94.473842,36.501861]]]},"id":"05007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.084509,36.501861],[-101.084509,36.058229],[-101.084509,36.052752],[-101.621249,36.052752],[-101.621249,36.501861],[-101.084509,36.501861]]]},"id":"48195"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.669648,36.501861],[-91.450571,36.496384],[-91.691556,36.255399],[-92.124235,36.260876],[-92.157096,36.260876],[-92.151619,36.496384],[-92.118758,36.496384],[-91.669648,36.501861]]]},"id":"05049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.728978,36.496384],[-93.586578,36.496384],[-93.312731,36.496384],[-93.2963,36.496384],[-93.301777,36.123952],[-93.477039,36.123952],[-93.816609,36.304691],[-93.865902,36.496384],[-93.728978,36.496384]]]},"id":"05015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.529528,36.496384],[-92.151619,36.496384],[-92.157096,36.260876],[-92.195435,36.134906],[-92.414512,35.976075],[-92.409035,36.063706],[-92.529528,36.496384]]]},"id":"05005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.770513,36.496384],[-92.529528,36.496384],[-92.409035,36.063706],[-92.891006,36.112998],[-92.852668,36.496384],[-92.770513,36.496384]]]},"id":"05089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.782384,36.496384],[-90.57426,36.496384],[-90.218259,36.496384],[-90.190875,36.200629],[-90.804292,36.266353],[-90.782384,36.496384]]]},"id":"05021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.848107,36.496384],[-90.782384,36.496384],[-90.804292,36.266353],[-90.809769,36.151337],[-91.242447,36.255399],[-91.258878,36.255399],[-91.406755,36.496384],[-91.127431,36.496384],[-90.848107,36.496384]]]},"id":"05121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.066268,36.496384],[-92.852668,36.496384],[-92.891006,36.112998],[-92.945776,36.112998],[-93.301777,36.123952],[-93.2963,36.496384],[-93.066268,36.496384]]]},"id":"05009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.450571,36.496384],[-91.406755,36.496384],[-91.258878,36.255399],[-91.357463,35.888444],[-91.707987,35.943213],[-91.691556,36.255399],[-91.450571,36.496384],[-91.450571,36.496384]]]},"id":"05135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.57466,36.490907],[-119.536321,35.789859],[-120.193554,35.789859],[-120.215462,35.789859],[-120.314047,35.904875],[-119.958045,36.403276],[-119.57466,36.490907]]]},"id":"06031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.231047,36.48543],[-85.979107,36.425184],[-86.137939,36.293737],[-86.285816,36.348507],[-86.231047,36.48543]]]},"id":"47169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.118311,36.458046],[-86.915664,36.381369],[-87.052588,36.047275],[-87.184034,36.047275],[-87.288096,36.321122],[-87.118311,36.458046]]]},"id":"47021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.473866,36.441615],[-82.298603,36.397799],[-82.342419,36.255399],[-82.594358,36.096568],[-82.632697,36.419707],[-82.703897,36.408753],[-82.681989,36.430661],[-82.473866,36.441615]]]},"id":"47179"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.082723,36.430661],[-80.967707,36.403276],[-80.874599,36.238968],[-80.880076,36.058229],[-81.027953,36.047275],[-81.329185,35.997983],[-81.542786,36.118475],[-81.477062,36.238968],[-81.252508,36.364938],[-81.082723,36.430661]]]},"id":"37193"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.903347,36.419707],[-83.667839,36.34303],[-83.733562,36.162291],[-83.925255,36.173245],[-83.941686,36.184199],[-84.001932,36.27183],[-83.903347,36.419707]]]},"id":"47173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.714381,36.425184],[-89.544596,36.337553],[-89.62675,36.184199],[-89.730812,35.997983],[-89.960843,35.997983],[-89.960843,36.386845],[-89.714381,36.425184]]]},"id":"29155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.979107,36.425184],[-85.825753,36.41423],[-85.781938,36.238968],[-85.809322,36.129429],[-86.061262,36.085614],[-86.137939,36.293737],[-85.979107,36.425184]]]},"id":"47159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.919754,36.425184],[-95.810215,36.425184],[-95.760923,36.162291],[-95.821169,35.855582],[-96.03477,35.855582],[-96.297663,36.162291],[-96.270278,36.162291],[-96.001908,36.425184],[-95.919754,36.425184]]]},"id":"40143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.278976,36.392322],[-83.257068,36.288261],[-83.465192,36.173245],[-83.602115,36.151337],[-83.667839,36.080137],[-83.733562,36.162291],[-83.667839,36.34303],[-83.388515,36.41423],[-83.278976,36.392322]]]},"id":"47057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.632697,36.419707],[-82.594358,36.096568],[-82.605312,36.041798],[-82.786051,35.987029],[-82.901067,35.943213],[-83.16396,36.178722],[-83.081806,36.244445],[-82.703897,36.408753],[-82.632697,36.419707]]]},"id":"47059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.76231,36.403276],[-86.756833,36.403276],[-86.592525,36.244445],[-86.515848,36.102045],[-86.619909,35.970598],[-86.921141,36.052752],[-87.052588,36.047275],[-86.915664,36.381369],[-86.76231,36.403276]]]},"id":"47037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.734479,36.392322],[-81.477062,36.238968],[-81.542786,36.118475],[-81.685186,36.123952],[-81.811156,36.112998],[-81.920695,36.288261],[-81.734479,36.392322]]]},"id":"37189"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.454708,36.375892],[-76.191815,36.118475],[-76.410893,36.07466],[-76.55877,36.353984],[-76.454708,36.375892]]]},"id":"37143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.724888,36.375892],[-84.70298,36.370415],[-84.440087,36.162291],[-84.341502,36.047275],[-84.681073,35.910352],[-84.905627,36.156814],[-84.724888,36.375892]]]},"id":"47129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.753636,36.34303],[-87.594805,36.364938],[-87.512651,36.332076],[-87.56742,36.178722],[-87.879606,36.233491],[-87.950806,36.244445],[-87.983668,36.353984],[-87.753636,36.34303]]]},"id":"47083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.989145,36.359461],[-87.983668,36.353984],[-87.950806,36.244445],[-87.96176,35.839151],[-87.972714,35.817244],[-88.175361,35.844628],[-88.213699,36.118475],[-87.989145,36.359461]]]},"id":"47005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.36797,36.353984],[-86.285816,36.348507],[-86.137939,36.293737],[-86.061262,36.085614],[-86.017446,35.959644],[-86.15437,35.954167],[-86.515848,36.102045],[-86.592525,36.244445],[-86.36797,36.353984]]]},"id":"47189"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.695693,36.293737],[-76.55877,36.353984],[-76.410893,36.07466],[-76.668309,36.01989],[-76.706647,36.244445],[-76.695693,36.293737]]]},"id":"37041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.158483,36.332076],[-83.081806,36.244445],[-83.16396,36.178722],[-83.23516,36.085614],[-83.465192,36.173245],[-83.257068,36.288261],[-83.158483,36.332076]]]},"id":"47063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.512651,36.332076],[-87.288096,36.321122],[-87.184034,36.047275],[-87.205942,35.959644],[-87.512651,35.992506],[-87.534558,35.992506],[-87.56742,36.178722],[-87.512651,36.332076]]]},"id":"47043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.816609,36.304691],[-93.477039,36.123952],[-93.520854,35.762474],[-93.696116,35.767951],[-93.909717,35.762474],[-93.964486,35.762474],[-93.887809,36.233491],[-93.816609,36.304691]]]},"id":"05087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.497137,36.299214],[-85.497137,36.304691],[-85.119228,36.14586],[-85.102797,36.140383],[-85.261628,35.981552],[-85.508091,36.080137],[-85.645014,36.014414],[-85.809322,36.129429],[-85.781938,36.238968],[-85.497137,36.299214]]]},"id":"47141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.001932,36.27183],[-83.941686,36.184199],[-84.270302,35.910352],[-84.341502,36.047275],[-84.440087,36.162291],[-84.374364,36.21706],[-84.001932,36.27183]]]},"id":"47001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.452875,36.238968],[-80.49669,36.047275],[-80.69386,36.052752],[-80.880076,36.058229],[-80.874599,36.238968],[-80.452875,36.238968]]]},"id":"37197"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.931648,36.266353],[-81.920695,36.288261],[-81.811156,36.112998],[-81.805679,35.959644],[-81.898787,35.997983],[-81.942602,35.959644],[-81.948079,35.954167],[-81.980941,35.910352],[-82.079526,36.107521],[-81.931648,36.266353]]]},"id":"37011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.804292,36.266353],[-90.190875,36.200629],[-90.377091,35.997983],[-90.853584,35.970598],[-90.809769,36.151337],[-90.804292,36.266353]]]},"id":"05055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.163514,36.249922],[-78.004682,36.200629],[-78.053975,36.134906],[-78.256622,35.817244],[-78.546899,36.01989],[-78.497607,36.173245],[-78.305914,36.266353],[-78.163514,36.249922]]]},"id":"37069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.340092,36.260876],[-104.436396,36.21706],[-104.365196,35.778905],[-105.718001,35.872013],[-105.718001,35.976075],[-105.531785,36.014414],[-105.340092,36.260876]]]},"id":"35033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.452875,36.260876],[-80.036627,36.255399],[-80.042104,36.008937],[-80.211889,36.008937],[-80.398105,35.970598],[-80.49669,36.047275],[-80.452875,36.238968],[-80.452875,36.260876]]]},"id":"37067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.124235,36.260876],[-91.691556,36.255399],[-91.707987,35.943213],[-91.850387,35.866536],[-92.195435,36.134906],[-92.157096,36.260876],[-92.124235,36.260876]]]},"id":"05065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.320511,36.260876],[-82.221926,36.156814],[-82.419096,36.07466],[-82.506727,35.976075],[-82.605312,36.041798],[-82.594358,36.096568],[-82.342419,36.255399],[-82.320511,36.260876]]]},"id":"47171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.242447,36.255399],[-90.809769,36.151337],[-90.853584,35.970598],[-91.034323,35.882967],[-91.198632,35.888444],[-91.357463,35.888444],[-91.258878,36.255399],[-91.242447,36.255399]]]},"id":"05075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.036627,36.255399],[-80.036627,36.255399],[-79.532749,36.238968],[-79.543702,35.899398],[-80.036627,35.921306],[-80.047581,35.921306],[-80.042104,36.008937],[-80.036627,36.255399]]]},"id":"37081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.532749,36.249922],[-79.258902,36.244445],[-79.247948,35.87749],[-79.543702,35.844628],[-79.543702,35.899398],[-79.532749,36.238968],[-79.532749,36.249922]]]},"id":"37001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.706647,36.244445],[-76.668309,36.01989],[-76.690217,35.943213],[-76.761417,35.866536],[-77.325542,36.07466],[-77.29268,36.167768],[-77.210526,36.244445],[-76.706647,36.244445]]]},"id":"37015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.031573,36.244445],[-96.927511,36.244445],[-96.620803,36.162291],[-96.620803,35.943213],[-97.080866,35.943213],[-97.141112,35.943213],[-97.354713,36.156814],[-97.031573,36.244445]]]},"id":"40119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.879606,36.233491],[-87.56742,36.178722],[-87.534558,35.992506],[-87.715298,35.839151],[-87.96176,35.839151],[-87.950806,36.244445],[-87.879606,36.233491]]]},"id":"47085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.247948,36.244445],[-79.15484,36.244445],[-78.952193,36.238968],[-79.017916,35.861059],[-79.187701,35.872013],[-79.247948,35.87749],[-79.258902,36.244445],[-79.247948,36.244445]]]},"id":"37135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.952193,36.238968],[-78.804316,36.233491],[-78.749546,36.069183],[-78.908377,35.866536],[-79.017916,35.861059],[-78.952193,36.238968]]]},"id":"37063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.013779,36.206106],[-93.887809,36.233491],[-93.964486,35.762474],[-94.490273,35.756997],[-94.550519,36.102045],[-94.013779,36.206106]]]},"id":"05143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.155733,36.206106],[-88.958563,36.222537],[-88.690193,36.063706],[-88.706624,35.789859],[-88.914747,35.795336],[-89.188594,35.997983],[-89.188594,35.997983],[-89.155733,36.206106]]]},"id":"47053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.623976,36.222537],[-106.884589,36.21706],[-106.249264,35.965121],[-106.249264,35.756997],[-106.243787,35.21478],[-107.196774,35.220257],[-107.31179,35.307888],[-107.306313,35.997983],[-107.623976,35.997983],[-107.623976,36.222537]]]},"id":"35043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.436396,36.21706],[-104.009195,36.21706],[-103.362916,36.085614],[-103.37387,35.740566],[-103.636763,35.390042],[-103.976333,35.800813],[-104.365196,35.778905],[-104.436396,36.21706]]]},"id":"35021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.265272,36.206106],[-89.155733,36.206106],[-89.188594,35.997983],[-89.341949,35.882967],[-89.489826,35.94869],[-89.643181,35.904875],[-89.730812,35.997983],[-89.62675,36.184199],[-89.484349,36.211583],[-89.265272,36.206106]]]},"id":"47045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.053975,36.134906],[-78.004682,36.200629],[-77.697974,36.151337],[-77.82942,35.866536],[-78.190898,35.729613],[-78.256622,35.817244],[-78.053975,36.134906]]]},"id":"37127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.602115,36.151337],[-83.465192,36.173245],[-83.23516,36.085614],[-83.311837,35.893921],[-83.673316,36.036321],[-83.667839,36.080137],[-83.602115,36.151337]]]},"id":"47089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.925255,36.173245],[-83.733562,36.162291],[-83.667839,36.080137],[-83.673316,36.036321],[-83.678792,36.030844],[-83.793808,35.888444],[-84.16624,35.80629],[-84.264825,35.899398],[-84.270302,35.910352],[-83.941686,36.184199],[-83.925255,36.173245]]]},"id":"47093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.16396,36.178722],[-82.901067,35.943213],[-82.961313,35.789859],[-83.257068,35.713182],[-83.311837,35.893921],[-83.23516,36.085614],[-83.16396,36.178722]]]},"id":"47029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.987781,36.162291],[-84.905627,36.156814],[-84.681073,35.910352],[-84.779657,35.822721],[-84.916581,35.762474],[-85.256151,35.767951],[-85.256151,35.767951],[-85.272582,35.789859],[-85.267105,35.795336],[-85.261628,35.981552],[-85.102797,36.140383],[-84.987781,36.162291]]]},"id":"47035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.488439,36.162291],[-98.209115,36.162291],[-98.209115,35.724136],[-98.313177,35.548874],[-98.587024,35.548874],[-98.625363,35.548874],[-98.63084,35.811767],[-98.636317,36.162291],[-98.488439,36.162291]]]},"id":"40011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.0941,36.167768],[-97.677852,36.162291],[-97.672375,35.724136],[-97.973607,35.724136],[-98.209115,35.724136],[-98.209115,36.162291],[-98.105053,36.162291],[-98.0941,36.167768]]]},"id":"40073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.636317,36.162291],[-98.63084,35.811767],[-98.817056,35.811767],[-99.375704,35.811767],[-99.38118,36.014414],[-99.38118,36.162291],[-98.953979,36.162291],[-98.636317,36.162291]]]},"id":"40043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.677852,36.162291],[-97.458774,36.162291],[-97.354713,36.156814],[-97.141112,35.943213],[-97.141112,35.724136],[-97.672375,35.724136],[-97.677852,36.162291]]]},"id":"40083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.620803,36.162291],[-96.297663,36.162291],[-96.03477,35.855582],[-96.138832,35.855582],[-96.193601,35.636505],[-96.478402,35.636505],[-96.620803,35.636505],[-96.620803,35.943213],[-96.620803,36.162291]]]},"id":"40037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.618522,36.162291],[-95.437783,36.07466],[-95.207752,36.07466],[-95.267998,35.811767],[-95.656861,35.855582],[-95.7664,35.855582],[-95.821169,35.855582],[-95.760923,36.162291],[-95.618522,36.162291]]]},"id":"40145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.027013,36.162291],[-95.010582,36.162291],[-94.796981,36.162291],[-94.807935,35.636505],[-94.851751,35.636505],[-95.125598,35.636505],[-95.267998,35.811767],[-95.207752,36.07466],[-95.027013,36.162291]]]},"id":"40021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.769597,36.162291],[-94.561473,36.162291],[-94.550519,36.102045],[-94.490273,35.756997],[-94.473842,35.636505],[-94.807935,35.636505],[-94.796981,36.162291],[-94.769597,36.162291]]]},"id":"40001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.079526,36.107521],[-81.980941,35.910352],[-82.134295,35.822721],[-82.419096,36.07466],[-82.221926,36.156814],[-82.079526,36.107521]]]},"id":"37121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.697974,36.151337],[-77.402219,36.00346],[-77.352926,35.817244],[-77.413173,35.822721],[-77.659635,35.674843],[-77.82942,35.866536],[-77.82942,35.866536],[-77.697974,36.151337]]]},"id":"37065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.531362,36.151337],[-88.213699,36.118475],[-88.175361,35.844628],[-88.180837,35.817244],[-88.514931,35.822721],[-88.608039,35.789859],[-88.706624,35.789859],[-88.690193,36.063706],[-88.531362,36.151337]]]},"id":"47017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.195435,36.134906],[-91.850387,35.866536],[-91.839434,35.702228],[-91.998265,35.707705],[-92.23925,35.713182],[-92.414512,35.789859],[-92.414512,35.976075],[-92.195435,36.134906]]]},"id":"05137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.809322,36.129429],[-85.645014,36.014414],[-85.683353,35.833674],[-85.885999,35.839151],[-86.017446,35.959644],[-86.061262,36.085614],[-85.809322,36.129429]]]},"id":"47041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.301777,36.123952],[-92.945776,36.112998],[-92.951253,35.724136],[-93.016976,35.724136],[-93.164853,35.729613],[-93.520854,35.762474],[-93.477039,36.123952],[-93.301777,36.123952]]]},"id":"05101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.685186,36.123952],[-81.542786,36.118475],[-81.329185,35.997983],[-81.334662,35.795336],[-81.362047,35.767951],[-81.805679,35.959644],[-81.811156,36.112998],[-81.685186,36.123952]]]},"id":"37027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.945776,36.112998],[-92.891006,36.112998],[-92.409035,36.063706],[-92.414512,35.976075],[-92.414512,35.789859],[-92.611682,35.789859],[-92.808852,35.724136],[-92.951253,35.724136],[-92.945776,36.112998]]]},"id":"05129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.515848,36.102045],[-86.15437,35.954167],[-86.209139,35.702228],[-86.247477,35.631028],[-86.521325,35.691274],[-86.641817,35.685797],[-86.685633,35.707705],[-86.619909,35.970598],[-86.515848,36.102045]]]},"id":"47149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.419096,36.07466],[-82.134295,35.822721],[-82.276696,35.702228],[-82.408142,35.817244],[-82.506727,35.976075],[-82.419096,36.07466]]]},"id":"37199"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.508091,36.080137],[-85.261628,35.981552],[-85.267105,35.795336],[-85.42046,35.817244],[-85.601199,35.795336],[-85.683353,35.833674],[-85.645014,36.014414],[-85.508091,36.080137]]]},"id":"47185"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.749546,36.069183],[-78.546899,36.01989],[-78.256622,35.817244],[-78.711208,35.521489],[-78.913854,35.581735],[-78.908377,35.866536],[-78.749546,36.069183]]]},"id":"37183"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.325542,36.07466],[-76.761417,35.866536],[-76.843571,35.707705],[-77.172187,35.73509],[-77.352926,35.817244],[-77.402219,36.00346],[-77.325542,36.07466]]]},"id":"37117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.786051,35.987029],[-82.605312,36.041798],[-82.506727,35.976075],[-82.408142,35.817244],[-82.884636,35.68032],[-82.961313,35.789859],[-82.901067,35.943213],[-82.786051,35.987029]]]},"id":"37115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.69386,36.052752],[-80.49669,36.047275],[-80.398105,35.970598],[-80.458352,35.740566],[-80.688383,35.861059],[-80.710291,35.850105],[-80.69386,36.052752]]]},"id":"37059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.947585,36.058229],[-100.547769,36.058229],[-100.542292,36.058229],[-100.542292,35.620074],[-101.084509,35.620074],[-101.084509,35.625551],[-101.084509,35.625551],[-101.084509,36.052752],[-101.084509,36.058229],[-100.947585,36.058229]]]},"id":"48393"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.880076,36.058229],[-80.69386,36.052752],[-80.710291,35.850105],[-80.737675,35.505058],[-80.781491,35.505058],[-80.907461,35.516012],[-80.945799,35.488627],[-80.96223,35.548874],[-81.110107,35.778905],[-81.027953,36.047275],[-80.880076,36.058229]]]},"id":"37097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.000075,36.058229],[-100.000075,35.882967],[-100.000075,35.620074],[-100.542292,35.620074],[-100.542292,36.058229],[-100.000075,36.058229]]]},"id":"48211"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.125128,36.058229],[-101.621249,36.052752],[-101.621249,35.625551],[-101.621249,35.620074],[-101.659588,35.620074],[-102.163466,35.620074],[-102.163466,35.625551],[-102.163466,36.052752],[-102.125128,36.058229]]]},"id":"48341"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.30039,36.052752],[-102.163466,36.052752],[-102.163466,35.625551],[-103.039777,35.620074],[-103.039777,35.740566],[-103.039777,36.052752],[-102.30039,36.052752]]]},"id":"48205"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.621249,36.052752],[-101.084509,36.052752],[-101.084509,35.625551],[-101.621249,35.625551],[-101.621249,36.052752]]]},"id":"48233"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.921141,36.052752],[-86.619909,35.970598],[-86.685633,35.707705],[-86.784218,35.707705],[-87.216896,35.850105],[-87.205942,35.959644],[-87.184034,36.047275],[-87.052588,36.047275],[-86.921141,36.052752]]]},"id":"47187"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.582488,35.641982],[-84.620826,35.641982],[-84.724888,35.75152],[-84.768704,35.80629],[-84.779657,35.822721],[-84.681073,35.910352],[-84.341502,36.047275],[-84.270302,35.910352],[-84.264825,35.899398],[-84.582488,35.641982]]]},"id":"47145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.027953,36.047275],[-81.110107,35.778905],[-81.192262,35.822721],[-81.334662,35.795336],[-81.329185,35.997983],[-81.027953,36.047275]]]},"id":"37003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.678792,36.030844],[-83.673316,36.036321],[-83.311837,35.893921],[-83.257068,35.713182],[-83.257068,35.696751],[-83.662362,35.570781],[-83.793808,35.888444],[-83.678792,36.030844]]]},"id":"47155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.211889,36.008937],[-80.042104,36.008937],[-80.047581,35.921306],[-80.064012,35.505058],[-80.184505,35.505058],[-80.458352,35.740566],[-80.398105,35.970598],[-80.211889,36.008937]]]},"id":"37057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.38118,36.014414],[-99.375704,35.811767],[-99.36475,35.510535],[-100.000075,35.422904],[-100.000075,35.620074],[-100.000075,35.882967],[-99.38118,36.014414]]]},"id":"40129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-108.883672,36.00346],[-107.623976,35.997983],[-107.306313,35.997983],[-107.31179,35.307888],[-107.985454,35.307888],[-108.467425,35.307888],[-108.467425,34.957364],[-109.04798,34.957364],[-109.04798,36.00346],[-108.883672,36.00346]]]},"id":"35031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.068525,35.997983],[-105.718001,35.976075],[-105.718001,35.872013],[-105.712524,35.039518],[-106.243787,35.039518],[-106.243787,35.21478],[-106.249264,35.756997],[-106.249264,35.839151],[-106.249264,35.855582],[-106.243787,35.932259],[-106.068525,35.997983]]]},"id":"35049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.730812,35.997983],[-89.643181,35.904875],[-89.911551,35.53792],[-90.141582,35.439335],[-90.289459,35.439335],[-90.289459,35.702228],[-90.289459,35.997983],[-89.960843,35.997983],[-89.730812,35.997983]]]},"id":"05093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.188594,35.997983],[-88.914747,35.795336],[-89.068102,35.691274],[-89.341949,35.789859],[-89.35838,35.817244],[-89.341949,35.882967],[-89.188594,35.997983],[-89.188594,35.997983]]]},"id":"47033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.898787,35.997983],[-81.805679,35.959644],[-81.362047,35.767951],[-81.531832,35.570781],[-81.537309,35.565304],[-81.586601,35.565304],[-81.690663,35.581735],[-81.82211,35.576258],[-81.942602,35.959644],[-81.898787,35.997983]]]},"id":"37023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.289459,35.997983],[-90.289459,35.702228],[-90.930262,35.707705],[-91.034323,35.707705],[-91.034323,35.882967],[-90.853584,35.970598],[-90.377091,35.997983],[-90.289459,35.997983]]]},"id":"05031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.512651,35.992506],[-87.205942,35.959644],[-87.216896,35.850105],[-87.337389,35.658412],[-87.660528,35.60912],[-87.720774,35.795336],[-87.715298,35.839151],[-87.534558,35.992506],[-87.512651,35.992506]]]},"id":"47081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.000122,35.904875],[-76.027507,35.669366],[-76.394462,35.696751],[-76.367077,35.943213],[-76.000122,35.904875]]]},"id":"37177"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.367077,35.943213],[-76.394462,35.696751],[-76.635447,35.707705],[-76.640924,35.707705],[-76.843571,35.707705],[-76.761417,35.866536],[-76.690217,35.943213],[-76.367077,35.943213]]]},"id":"37187"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-75.868676,35.581735],[-76.027507,35.669366],[-76.000122,35.904875],[-75.868676,35.581735]]]},"id":"37055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.017446,35.959644],[-85.885999,35.839151],[-85.984584,35.658412],[-86.209139,35.702228],[-86.15437,35.954167],[-86.017446,35.959644]]]},"id":"47015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.249264,35.965121],[-106.243787,35.932259],[-106.249264,35.855582],[-106.249264,35.839151],[-106.249264,35.756997],[-106.249264,35.965121]]]},"id":"35028"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.948079,35.954167],[-81.942602,35.959644],[-81.82211,35.576258],[-82.167157,35.526966],[-82.276696,35.702228],[-82.134295,35.822721],[-81.980941,35.910352],[-81.948079,35.954167]]]},"id":"37111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.489826,35.94869],[-89.341949,35.882967],[-89.35838,35.817244],[-89.50078,35.581735],[-89.643181,35.647459],[-89.911551,35.53792],[-89.643181,35.904875],[-89.489826,35.94869]]]},"id":"47097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.850387,35.866536],[-91.707987,35.943213],[-91.357463,35.888444],[-91.198632,35.888444],[-91.582017,35.532443],[-91.795618,35.532443],[-91.839434,35.702228],[-91.850387,35.866536]]]},"id":"05063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.080866,35.943213],[-96.620803,35.943213],[-96.620803,35.636505],[-96.626279,35.461243],[-97.141112,35.466719],[-97.141112,35.724136],[-97.141112,35.943213],[-97.080866,35.943213]]]},"id":"40081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.036627,35.921306],[-79.543702,35.899398],[-79.543702,35.844628],[-79.554656,35.516012],[-79.768257,35.510535],[-80.064012,35.505058],[-80.047581,35.921306],[-80.036627,35.921306]]]},"id":"37151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.264825,35.899398],[-84.16624,35.80629],[-84.188148,35.60912],[-84.43461,35.669366],[-84.527718,35.625551],[-84.582488,35.641982],[-84.264825,35.899398]]]},"id":"47105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.198632,35.888444],[-91.034323,35.882967],[-91.034323,35.707705],[-91.0398,35.444812],[-91.0398,35.351704],[-91.346509,35.439335],[-91.582017,35.532443],[-91.198632,35.888444]]]},"id":"05067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.793808,35.888444],[-83.662362,35.570781],[-83.952639,35.461243],[-83.963593,35.461243],[-84.188148,35.60912],[-84.16624,35.80629],[-83.793808,35.888444]]]},"id":"47009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.187701,35.872013],[-79.017916,35.861059],[-78.908377,35.866536],[-78.913854,35.581735],[-78.968624,35.521489],[-79.242471,35.570781],[-79.35201,35.516012],[-79.554656,35.516012],[-79.543702,35.844628],[-79.247948,35.87749],[-79.187701,35.872013]]]},"id":"37037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.365196,35.778905],[-103.976333,35.800813],[-103.636763,35.390042],[-104.124211,35.14358],[-105.290799,35.21478],[-105.290799,35.039518],[-105.712524,35.039518],[-105.718001,35.872013],[-104.365196,35.778905]]]},"id":"35047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.82942,35.866536],[-77.659635,35.674843],[-77.697974,35.652935],[-77.823943,35.570781],[-78.064929,35.587212],[-78.190898,35.729613],[-77.82942,35.866536],[-77.82942,35.866536]]]},"id":"37195"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.688383,35.861059],[-80.458352,35.740566],[-80.184505,35.505058],[-80.233797,35.505058],[-80.294043,35.505058],[-80.737675,35.505058],[-80.710291,35.850105],[-80.688383,35.861059]]]},"id":"37159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.138832,35.855582],[-96.03477,35.855582],[-95.821169,35.855582],[-95.7664,35.855582],[-95.71163,35.554351],[-95.980001,35.379088],[-96.193601,35.636505],[-96.138832,35.855582]]]},"id":"40111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.656861,35.855582],[-95.267998,35.811767],[-95.125598,35.636505],[-95.048921,35.461243],[-95.344675,35.291457],[-95.476122,35.554351],[-95.71163,35.554351],[-95.7664,35.855582],[-95.656861,35.855582]]]},"id":"40101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.683353,35.833674],[-85.601199,35.795336],[-85.557383,35.532443],[-85.606675,35.532443],[-85.875046,35.521489],[-85.984584,35.658412],[-85.885999,35.839151],[-85.683353,35.833674]]]},"id":"47177"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.216896,35.850105],[-86.784218,35.707705],[-86.95948,35.417427],[-87.129265,35.455766],[-87.205942,35.433858],[-87.293573,35.444812],[-87.337389,35.658412],[-87.216896,35.850105]]]},"id":"47119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.175361,35.844628],[-87.972714,35.817244],[-88.005575,35.422904],[-88.022006,35.390042],[-88.241084,35.422904],[-88.180837,35.817244],[-88.175361,35.844628]]]},"id":"47039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.720774,35.795336],[-87.660528,35.60912],[-87.715298,35.48315],[-87.956283,35.461243],[-88.005575,35.422904],[-87.972714,35.817244],[-87.96176,35.839151],[-87.715298,35.839151],[-87.720774,35.795336]]]},"id":"47135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.413173,35.822721],[-77.352926,35.817244],[-77.172187,35.73509],[-77.188618,35.417427],[-77.391265,35.34075],[-77.446034,35.379088],[-77.473419,35.428381],[-77.681543,35.636505],[-77.697974,35.652935],[-77.659635,35.674843],[-77.413173,35.822721]]]},"id":"37147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.192262,35.822721],[-81.110107,35.778905],[-80.96223,35.548874],[-81.488016,35.570781],[-81.531832,35.570781],[-81.362047,35.767951],[-81.334662,35.795336],[-81.192262,35.822721]]]},"id":"37035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.768704,35.80629],[-84.724888,35.75152],[-85.015166,35.41195],[-85.130182,35.455766],[-85.135659,35.455766],[-84.916581,35.762474],[-84.779657,35.822721],[-84.768704,35.80629]]]},"id":"47143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.514931,35.822721],[-88.180837,35.817244],[-88.241084,35.422904],[-88.361576,35.417427],[-88.613516,35.587212],[-88.608039,35.789859],[-88.514931,35.822721]]]},"id":"47077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.276696,35.702228],[-82.167157,35.526966],[-82.265742,35.466719],[-82.408142,35.472196],[-82.747713,35.422904],[-82.884636,35.68032],[-82.408142,35.817244],[-82.276696,35.702228]]]},"id":"37021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.341949,35.789859],[-89.068102,35.691274],[-89.079056,35.433858],[-89.150256,35.433858],[-89.183118,35.395519],[-89.473395,35.400996],[-89.50078,35.581735],[-89.35838,35.817244],[-89.341949,35.789859]]]},"id":"47075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.42046,35.817244],[-85.267105,35.795336],[-85.272582,35.789859],[-85.256151,35.767951],[-85.256151,35.767951],[-85.256151,35.767951],[-85.425936,35.565304],[-85.557383,35.532443],[-85.601199,35.795336],[-85.42046,35.817244]]]},"id":"47175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.256622,35.817244],[-78.190898,35.729613],[-78.064929,35.587212],[-78.305914,35.28598],[-78.541422,35.313365],[-78.711208,35.521489],[-78.256622,35.817244]]]},"id":"37101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.817056,35.811767],[-98.63084,35.811767],[-98.625363,35.548874],[-98.625363,35.466719],[-99.16758,35.466719],[-99.36475,35.466719],[-99.36475,35.510535],[-99.375704,35.811767],[-98.817056,35.811767]]]},"id":"40039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.630346,35.795336],[-115.647693,35.80629],[-114.634459,35.00118],[-114.136058,34.305608],[-114.43729,34.081054],[-114.733044,34.081054],[-117.559146,34.031761],[-117.674161,33.87293],[-117.7837,33.94413],[-117.668684,34.820441],[-117.630346,35.795336]]]},"id":"06071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-118.008255,35.789859],[-117.630346,35.795336],[-117.668684,34.820441],[-118.884565,34.793056],[-119.443213,34.902595],[-119.470598,34.902595],[-120.193554,35.789859],[-119.536321,35.789859],[-118.008255,35.789859]]]},"id":"06029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.914747,35.795336],[-88.706624,35.789859],[-88.608039,35.789859],[-88.613516,35.587212],[-88.701147,35.477673],[-88.843547,35.428381],[-89.079056,35.433858],[-89.068102,35.691274],[-88.914747,35.795336]]]},"id":"47113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-121.343711,35.795336],[-120.215462,35.789859],[-120.193554,35.789859],[-119.470598,34.902595],[-120.094969,35.116195],[-120.64814,34.973795],[-121.343711,35.795336]]]},"id":"06079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.961313,35.789859],[-82.884636,35.68032],[-82.747713,35.422904],[-82.922975,35.291457],[-83.185868,35.516012],[-83.257068,35.696751],[-83.257068,35.713182],[-82.961313,35.789859]]]},"id":"37087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.611682,35.789859],[-92.414512,35.789859],[-92.23925,35.713182],[-92.250204,35.362658],[-92.480236,35.368135],[-92.480236,35.368135],[-92.852668,35.461243],[-92.808852,35.724136],[-92.611682,35.789859]]]},"id":"05141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.909717,35.762474],[-93.696116,35.767951],[-93.712547,35.373611],[-94.03021,35.21478],[-94.074025,35.444812],[-93.909717,35.762474]]]},"id":"05047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.256151,35.767951],[-85.256151,35.767951],[-84.916581,35.762474],[-85.135659,35.455766],[-85.22329,35.351704],[-85.425936,35.565304],[-85.256151,35.767951]]]},"id":"47007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.696116,35.767951],[-93.520854,35.762474],[-93.164853,35.729613],[-93.2963,35.329796],[-93.422269,35.329796],[-93.712547,35.373611],[-93.696116,35.767951]]]},"id":"05071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.964486,35.762474],[-93.909717,35.762474],[-94.074025,35.444812],[-94.380734,35.444812],[-94.430026,35.395519],[-94.473842,35.636505],[-94.490273,35.756997],[-93.964486,35.762474]]]},"id":"05033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.620826,35.641982],[-84.861812,35.351704],[-84.872765,35.357181],[-84.943966,35.28598],[-85.015166,35.41195],[-84.724888,35.75152],[-84.620826,35.641982]]]},"id":"47121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.37387,35.740566],[-103.039777,35.740566],[-103.039777,35.620074],[-103.039777,35.181919],[-103.045254,34.951887],[-103.264331,34.951887],[-103.740825,34.60684],[-103.948949,34.60684],[-104.129688,34.776625],[-104.124211,35.14358],[-103.636763,35.390042],[-103.37387,35.740566]]]},"id":"35037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.172187,35.73509],[-76.843571,35.707705],[-76.640924,35.707705],[-76.547816,35.390042],[-76.602586,35.335273],[-76.624493,35.253119],[-76.89834,35.253119],[-77.188618,35.417427],[-77.172187,35.73509]]]},"id":"37013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.016976,35.724136],[-92.951253,35.724136],[-92.808852,35.724136],[-92.852668,35.461243],[-92.896483,35.170965],[-93.279869,35.318842],[-93.2963,35.329796],[-93.164853,35.729613],[-93.016976,35.724136]]]},"id":"05115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.973607,35.724136],[-97.672375,35.724136],[-97.672375,35.379088],[-97.672375,35.335273],[-97.672375,35.335273],[-98.0941,35.379088],[-98.313177,35.548874],[-98.209115,35.724136],[-97.973607,35.724136]]]},"id":"40017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.672375,35.724136],[-97.141112,35.724136],[-97.141112,35.466719],[-97.141112,35.379088],[-97.425913,35.379088],[-97.672375,35.379088],[-97.672375,35.724136]]]},"id":"40109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.998265,35.707705],[-91.839434,35.702228],[-91.795618,35.532443],[-92.113281,35.362658],[-92.250204,35.362658],[-92.23925,35.713182],[-91.998265,35.707705]]]},"id":"05023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.784218,35.707705],[-86.685633,35.707705],[-86.641817,35.685797],[-86.598002,35.362658],[-86.828033,35.264073],[-86.95948,35.417427],[-86.784218,35.707705]]]},"id":"47117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.930262,35.707705],[-90.289459,35.702228],[-90.289459,35.439335],[-90.50306,35.439335],[-90.744046,35.444812],[-91.0398,35.444812],[-91.034323,35.707705],[-90.930262,35.707705]]]},"id":"05111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.635447,35.707705],[-76.394462,35.696751],[-76.027507,35.669366],[-75.868676,35.581735],[-76.547816,35.390042],[-76.640924,35.707705],[-76.635447,35.707705]]]},"id":"37095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.209139,35.702228],[-85.984584,35.658412],[-85.875046,35.521489],[-85.913384,35.291457],[-86.214616,35.346227],[-86.263908,35.335273],[-86.258431,35.41195],[-86.258431,35.41195],[-86.247477,35.631028],[-86.209139,35.702228]]]},"id":"47031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.521325,35.691274],[-86.247477,35.631028],[-86.258431,35.41195],[-86.526801,35.357181],[-86.598002,35.362658],[-86.641817,35.685797],[-86.521325,35.691274]]]},"id":"47003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.662362,35.570781],[-83.257068,35.696751],[-83.185868,35.516012],[-83.207776,35.516012],[-83.339222,35.329796],[-83.678792,35.280503],[-83.952639,35.461243],[-83.662362,35.570781]]]},"id":"37173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.43461,35.669366],[-84.188148,35.60912],[-83.963593,35.461243],[-84.029317,35.291457],[-84.29221,35.209303],[-84.494857,35.28598],[-84.522241,35.60912],[-84.522241,35.620074],[-84.527718,35.625551],[-84.43461,35.669366]]]},"id":"47123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.337389,35.658412],[-87.293573,35.444812],[-87.435974,35.455766],[-87.572897,35.400996],[-87.715298,35.48315],[-87.660528,35.60912],[-87.337389,35.658412]]]},"id":"47101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.681543,35.636505],[-77.473419,35.428381],[-77.807512,35.368135],[-77.823943,35.570781],[-77.697974,35.652935],[-77.681543,35.636505]]]},"id":"37079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.643181,35.647459],[-89.50078,35.581735],[-89.473395,35.400996],[-89.550073,35.400996],[-89.632227,35.373611],[-89.774627,35.406473],[-90.075859,35.384565],[-90.141582,35.439335],[-89.911551,35.53792],[-89.643181,35.647459]]]},"id":"47167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.582488,35.641982],[-84.527718,35.625551],[-84.522241,35.620074],[-84.522241,35.60912],[-84.494857,35.28598],[-84.686549,35.253119],[-84.70298,35.242165],[-84.861812,35.351704],[-84.620826,35.641982],[-84.582488,35.641982]]]},"id":"47107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.478402,35.636505],[-96.193601,35.636505],[-95.980001,35.379088],[-95.980001,35.291457],[-96.199078,35.291457],[-96.440064,35.291457],[-96.440064,35.466719],[-96.626279,35.400996],[-96.626279,35.461243],[-96.620803,35.636505],[-96.478402,35.636505]]]},"id":"40107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.851751,35.636505],[-94.807935,35.636505],[-94.473842,35.636505],[-94.430026,35.395519],[-94.430026,35.379088],[-94.813412,35.324319],[-95.048921,35.461243],[-95.125598,35.636505],[-94.851751,35.636505]]]},"id":"40135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.242471,35.570781],[-78.968624,35.521489],[-79.182224,35.307888],[-79.35201,35.516012],[-79.242471,35.570781]]]},"id":"37105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.163466,35.625551],[-102.163466,35.620074],[-102.168943,35.181919],[-102.579714,35.187396],[-103.039777,35.181919],[-103.039777,35.620074],[-102.163466,35.625551]]]},"id":"48359"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.084509,35.625551],[-101.084509,35.620074],[-101.084509,35.181919],[-101.621249,35.181919],[-101.621249,35.620074],[-101.621249,35.625551],[-101.084509,35.625551],[-101.084509,35.625551]]]},"id":"48065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.084509,35.620074],[-100.542292,35.620074],[-100.536815,35.181919],[-100.969493,35.181919],[-101.084509,35.181919],[-101.084509,35.620074]]]},"id":"48179"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.659588,35.620074],[-101.621249,35.620074],[-101.621249,35.181919],[-101.988204,35.181919],[-102.168943,35.181919],[-102.163466,35.620074],[-101.659588,35.620074]]]},"id":"48375"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.542292,35.620074],[-100.000075,35.620074],[-100.000075,35.422904],[-100.000075,35.181919],[-100.093183,35.181919],[-100.536815,35.181919],[-100.542292,35.620074]]]},"id":"48483"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.82211,35.576258],[-81.690663,35.581735],[-81.76734,35.181919],[-81.876879,35.181919],[-81.969987,35.187396],[-82.09048,35.357181],[-82.260265,35.395519],[-82.265742,35.466719],[-82.167157,35.526966],[-81.82211,35.576258]]]},"id":"37161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.064929,35.587212],[-77.823943,35.570781],[-77.807512,35.368135],[-77.834897,35.176442],[-78.043021,35.192872],[-78.163514,35.187396],[-78.305914,35.28598],[-78.064929,35.587212]]]},"id":"37191"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.701147,35.477673],[-88.613516,35.587212],[-88.361576,35.417427],[-88.361576,35.379088],[-88.378007,35.373611],[-88.783301,35.247642],[-88.843547,35.428381],[-88.701147,35.477673]]]},"id":"47023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.586601,35.565304],[-81.537309,35.565304],[-81.455155,35.417427],[-81.329185,35.165488],[-81.367524,35.165488],[-81.76734,35.181919],[-81.690663,35.581735],[-81.586601,35.565304]]]},"id":"37045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.913854,35.581735],[-78.711208,35.521489],[-78.541422,35.313365],[-78.6181,35.247642],[-78.952193,35.21478],[-79.094593,35.192872],[-79.182224,35.307888],[-78.968624,35.521489],[-78.913854,35.581735]]]},"id":"37085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.488016,35.570781],[-80.96223,35.548874],[-80.945799,35.488627],[-80.956753,35.400996],[-81.455155,35.417427],[-81.537309,35.565304],[-81.531832,35.570781],[-81.488016,35.570781]]]},"id":"37109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.425936,35.565304],[-85.22329,35.351704],[-85.387598,35.149057],[-85.557383,35.318842],[-85.590245,35.521489],[-85.606675,35.532443],[-85.557383,35.532443],[-85.425936,35.565304]]]},"id":"47153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.476122,35.554351],[-95.344675,35.291457],[-95.448737,35.296934],[-95.706154,35.203826],[-95.985477,35.149057],[-95.980001,35.291457],[-95.980001,35.379088],[-95.71163,35.554351],[-95.476122,35.554351]]]},"id":"40091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.587024,35.548874],[-98.313177,35.548874],[-98.0941,35.379088],[-98.0941,34.853302],[-98.619886,34.853302],[-98.619886,35.099764],[-98.625363,35.466719],[-98.625363,35.548874],[-98.587024,35.548874]]]},"id":"40015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.795618,35.532443],[-91.582017,35.532443],[-91.346509,35.439335],[-91.467002,35.088811],[-91.587494,35.023087],[-91.801095,35.028564],[-92.118758,35.066903],[-92.113281,35.362658],[-91.795618,35.532443]]]},"id":"05145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.590245,35.521489],[-85.557383,35.318842],[-85.601199,35.307888],[-85.875046,35.225734],[-85.913384,35.291457],[-85.875046,35.521489],[-85.606675,35.532443],[-85.590245,35.521489]]]},"id":"47061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.336425,35.526966],[-112.438206,35.258596],[-112.334144,34.973795],[-111.775497,34.979272],[-111.556419,34.469916],[-111.496173,33.998899],[-112.273898,33.883884],[-113.336425,33.998899],[-113.330948,34.316562],[-113.336425,35.526966]]]},"id":"04025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.207776,35.516012],[-83.185868,35.516012],[-82.922975,35.291457],[-83.010606,35.028564],[-83.109191,35.00118],[-83.339222,35.329796],[-83.207776,35.516012]]]},"id":"37099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.35201,35.516012],[-79.182224,35.307888],[-79.094593,35.192872],[-79.10007,35.176442],[-79.127455,35.165488],[-79.461548,35.044995],[-79.614903,35.165488],[-79.768257,35.510535],[-79.554656,35.516012],[-79.35201,35.516012]]]},"id":"37125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.907461,35.516012],[-80.781491,35.505058],[-80.55146,35.209303],[-80.841737,35.00118],[-80.907461,35.077857],[-81.044384,35.149057],[-80.956753,35.400996],[-80.945799,35.488627],[-80.907461,35.516012]]]},"id":"37119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.768257,35.510535],[-79.614903,35.165488],[-79.729918,35.176442],[-80.074966,35.14358],[-80.184505,35.505058],[-80.064012,35.505058],[-79.768257,35.510535]]]},"id":"37123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.36475,35.510535],[-99.36475,35.466719],[-99.359273,35.116195],[-99.408565,35.116195],[-99.709797,35.116195],[-99.890536,35.028564],[-99.934351,35.028564],[-100.000075,35.028564],[-100.000075,35.181919],[-100.000075,35.422904],[-99.36475,35.510535]]]},"id":"40009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.737675,35.505058],[-80.294043,35.505058],[-80.507644,35.187396],[-80.55146,35.209303],[-80.781491,35.505058],[-80.737675,35.505058]]]},"id":"37025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.233797,35.505058],[-80.184505,35.505058],[-80.074966,35.14358],[-80.173551,35.149057],[-80.277612,35.198349],[-80.507644,35.187396],[-80.294043,35.505058],[-80.233797,35.505058]]]},"id":"37167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.408142,35.472196],[-82.265742,35.466719],[-82.260265,35.395519],[-82.353373,35.192872],[-82.572451,35.14358],[-82.747713,35.422904],[-82.408142,35.472196]]]},"id":"37089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.956283,35.461243],[-87.715298,35.48315],[-87.572897,35.400996],[-87.605759,35.00118],[-87.983668,35.006656],[-88.022006,35.390042],[-88.005575,35.422904],[-87.956283,35.461243]]]},"id":"47181"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.440064,35.466719],[-96.440064,35.291457],[-96.489356,34.908072],[-96.774157,34.902595],[-96.626279,35.400996],[-96.440064,35.466719]]]},"id":"40133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.952639,35.461243],[-83.678792,35.280503],[-83.7007,35.247642],[-84.029317,35.291457],[-83.963593,35.461243],[-83.952639,35.461243]]]},"id":"37075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.16758,35.466719],[-98.625363,35.466719],[-98.619886,35.099764],[-99.184011,35.116195],[-99.359273,35.116195],[-99.36475,35.466719],[-99.16758,35.466719]]]},"id":"40149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.141112,35.466719],[-96.626279,35.461243],[-96.626279,35.400996],[-96.774157,34.902595],[-96.932988,34.962841],[-97.141112,34.929979],[-97.141112,35.379088],[-97.141112,35.466719]]]},"id":"40125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.852668,35.461243],[-92.480236,35.368135],[-92.556913,35.110718],[-93.038884,35.077857],[-92.896483,35.170965],[-92.852668,35.461243]]]},"id":"05029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.130182,35.455766],[-85.015166,35.41195],[-84.943966,35.28598],[-84.976827,34.990226],[-84.982304,34.990226],[-85.267105,34.984749],[-85.272582,34.984749],[-85.36569,34.984749],[-85.475229,34.984749],[-85.387598,35.149057],[-85.22329,35.351704],[-85.135659,35.455766],[-85.130182,35.455766]]]},"id":"47065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.048921,35.461243],[-94.813412,35.324319],[-94.928428,35.055949],[-95.333722,35.055949],[-95.350152,35.055949],[-95.448737,35.296934],[-95.344675,35.291457],[-95.048921,35.461243]]]},"id":"40061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.435974,35.455766],[-87.293573,35.444812],[-87.205942,35.433858],[-87.222373,35.00118],[-87.605759,35.00118],[-87.572897,35.400996],[-87.435974,35.455766]]]},"id":"47099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.129265,35.455766],[-86.95948,35.417427],[-86.828033,35.264073],[-86.838987,34.990226],[-87.211419,35.00118],[-87.222373,35.00118],[-87.205942,35.433858],[-87.129265,35.455766]]]},"id":"47055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.380734,35.444812],[-94.074025,35.444812],[-94.03021,35.21478],[-94.139749,35.099764],[-94.183564,35.083334],[-94.446457,34.935456],[-94.430026,35.379088],[-94.430026,35.395519],[-94.380734,35.444812]]]},"id":"05131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.744046,35.444812],[-90.50306,35.439335],[-90.50306,35.14358],[-90.831677,35.149057],[-91.045277,35.149057],[-91.0398,35.351704],[-91.0398,35.444812],[-90.744046,35.444812]]]},"id":"05037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.346509,35.439335],[-91.0398,35.351704],[-91.045277,35.149057],[-91.149339,35.00118],[-91.275309,34.984749],[-91.368417,34.913548],[-91.467002,35.088811],[-91.346509,35.439335]]]},"id":"05147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.50306,35.439335],[-90.289459,35.439335],[-90.141582,35.439335],[-90.075859,35.384565],[-90.311367,34.995703],[-90.30589,34.858779],[-90.409952,34.831394],[-90.409952,34.902595],[-90.50306,35.14358],[-90.50306,35.439335]]]},"id":"05035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.150256,35.433858],[-89.079056,35.433858],[-88.843547,35.428381],[-88.783301,35.247642],[-88.788778,34.995703],[-88.821639,34.995703],[-89.018809,34.995703],[-89.199548,34.995703],[-89.183118,35.395519],[-89.150256,35.433858]]]},"id":"47069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.422269,35.329796],[-93.2963,35.329796],[-93.279869,35.318842],[-93.70707,35.01761],[-94.139749,35.099764],[-94.03021,35.21478],[-93.712547,35.373611],[-93.422269,35.329796]]]},"id":"05083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.446034,35.379088],[-77.391265,35.34075],[-77.473419,35.231211],[-77.730835,35.006656],[-77.834897,35.176442],[-77.807512,35.368135],[-77.473419,35.428381],[-77.446034,35.379088]]]},"id":"37107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.361576,35.417427],[-88.241084,35.422904],[-88.022006,35.390042],[-87.983668,35.006656],[-88.202745,34.995703],[-88.252038,34.995703],[-88.361576,34.995703],[-88.378007,34.995703],[-88.361576,35.379088],[-88.361576,35.417427]]]},"id":"47071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.747713,35.422904],[-82.572451,35.14358],[-82.764143,35.066903],[-82.89559,35.055949],[-83.010606,35.028564],[-82.922975,35.291457],[-82.747713,35.422904]]]},"id":"37175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.455155,35.417427],[-80.956753,35.400996],[-81.044384,35.149057],[-81.329185,35.165488],[-81.455155,35.417427]]]},"id":"37071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.188618,35.417427],[-76.89834,35.253119],[-76.712124,34.979272],[-77.090033,34.80401],[-77.473419,35.231211],[-77.391265,35.34075],[-77.188618,35.417427]]]},"id":"37049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.258431,35.41195],[-86.263908,35.335273],[-86.318678,35.127149],[-86.526801,35.357181],[-86.258431,35.41195],[-86.258431,35.41195]]]},"id":"47127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.774627,35.406473],[-89.632227,35.373611],[-89.643181,34.995703],[-89.725335,34.995703],[-89.829396,34.995703],[-90.311367,34.995703],[-90.075859,35.384565],[-89.774627,35.406473]]]},"id":"47157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.09048,35.357181],[-81.969987,35.187396],[-82.216449,35.198349],[-82.353373,35.192872],[-82.260265,35.395519],[-82.09048,35.357181]]]},"id":"37149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.550073,35.400996],[-89.473395,35.400996],[-89.183118,35.395519],[-89.199548,34.995703],[-89.352903,34.995703],[-89.643181,34.995703],[-89.632227,35.373611],[-89.550073,35.400996]]]},"id":"47047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.378007,35.373611],[-88.361576,35.379088],[-88.378007,34.995703],[-88.471115,34.995703],[-88.788778,34.995703],[-88.783301,35.247642],[-88.378007,35.373611]]]},"id":"47109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.0941,35.379088],[-97.672375,35.335273],[-97.666898,34.853302],[-97.666898,34.683517],[-97.995515,34.683517],[-98.088623,34.683517],[-98.0941,34.853302],[-98.0941,35.379088]]]},"id":"40051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.430026,35.379088],[-94.446457,34.935456],[-94.451934,34.727333],[-94.462888,34.508255],[-94.616242,34.508255],[-94.939382,34.508255],[-95.059875,34.67804],[-94.928428,35.055949],[-94.813412,35.324319],[-94.430026,35.379088]]]},"id":"40079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.425913,35.379088],[-97.141112,35.379088],[-97.141112,34.929979],[-97.672375,35.335273],[-97.672375,35.379088],[-97.425913,35.379088]]]},"id":"40027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.598002,35.362658],[-86.526801,35.357181],[-86.318678,35.127149],[-86.318678,34.990226],[-86.784218,34.990226],[-86.838987,34.990226],[-86.828033,35.264073],[-86.598002,35.362658]]]},"id":"47103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.480236,35.368135],[-92.250204,35.362658],[-92.113281,35.362658],[-92.118758,35.066903],[-92.118758,35.012133],[-92.228296,34.957364],[-92.545959,34.951887],[-92.556913,35.110718],[-92.480236,35.368135],[-92.480236,35.368135]]]},"id":"05045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.214616,35.346227],[-85.913384,35.291457],[-85.875046,35.225734],[-85.864092,34.990226],[-86.313201,34.990226],[-86.318678,34.990226],[-86.318678,35.127149],[-86.263908,35.335273],[-86.214616,35.346227]]]},"id":"47051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.872765,35.357181],[-84.861812,35.351704],[-84.70298,35.242165],[-84.774181,34.990226],[-84.812519,34.990226],[-84.976827,34.990226],[-84.943966,35.28598],[-84.872765,35.357181]]]},"id":"47011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.985454,35.307888],[-107.31179,35.307888],[-107.196774,35.220257],[-107.065328,34.957364],[-107.196774,34.957364],[-107.202251,34.579455],[-107.536345,34.579455],[-107.722561,34.579455],[-108.987734,34.579455],[-109.04798,34.579455],[-109.04798,34.957364],[-108.467425,34.957364],[-108.467425,35.307888],[-107.985454,35.307888]]]},"id":"35006"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-76.624493,35.253119],[-76.602586,35.335273],[-76.646401,35.01761],[-76.712124,34.979272],[-76.89834,35.253119],[-76.624493,35.253119]]]},"id":"37137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.672375,35.335273],[-97.141112,34.929979],[-96.932988,34.962841],[-96.932988,34.853302],[-97.425913,34.853302],[-97.666898,34.853302],[-97.672375,35.335273],[-97.672375,35.335273]]]},"id":"40087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.339222,35.329796],[-83.109191,35.00118],[-83.481623,34.995703],[-83.739039,35.154534],[-83.7007,35.247642],[-83.678792,35.280503],[-83.339222,35.329796]]]},"id":"37113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.601199,35.307888],[-85.557383,35.318842],[-85.387598,35.149057],[-85.475229,34.984749],[-85.606675,34.984749],[-85.864092,34.990226],[-85.875046,35.225734],[-85.601199,35.307888]]]},"id":"47115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.279869,35.318842],[-92.896483,35.170965],[-93.038884,35.077857],[-93.285346,34.771148],[-93.394885,34.743763],[-93.570147,34.743763],[-93.712547,34.743763],[-93.70707,35.01761],[-93.279869,35.318842]]]},"id":"05149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.541422,35.313365],[-78.305914,35.28598],[-78.163514,35.187396],[-78.114221,34.721856],[-78.256622,34.55207],[-78.49213,34.847825],[-78.49213,34.858779],[-78.6181,35.247642],[-78.541422,35.313365]]]},"id":"37163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.706154,35.203826],[-95.448737,35.296934],[-95.350152,35.055949],[-95.514461,34.683517],[-95.673292,34.595886],[-96.089539,34.67804],[-96.089539,34.765671],[-95.985477,35.149057],[-95.706154,35.203826]]]},"id":"40121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.7007,35.247642],[-83.739039,35.154534],[-84.007409,34.984749],[-84.127902,34.990226],[-84.319594,34.990226],[-84.29221,35.209303],[-84.029317,35.291457],[-83.7007,35.247642]]]},"id":"37039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.199078,35.291457],[-95.980001,35.291457],[-95.985477,35.149057],[-96.089539,34.765671],[-96.407202,34.765671],[-96.489356,34.908072],[-96.440064,35.291457],[-96.199078,35.291457]]]},"id":"40063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.686549,35.253119],[-84.494857,35.28598],[-84.29221,35.209303],[-84.319594,34.990226],[-84.620826,34.990226],[-84.774181,34.990226],[-84.70298,35.242165],[-84.686549,35.253119]]]},"id":"47139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.952193,35.21478],[-78.6181,35.247642],[-78.49213,34.858779],[-78.9029,34.836871],[-79.034347,34.951887],[-79.10007,35.176442],[-79.094593,35.192872],[-78.952193,35.21478]]]},"id":"37051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.473419,35.231211],[-77.090033,34.80401],[-77.16671,34.787579],[-77.676066,34.973795],[-77.730835,35.006656],[-77.473419,35.231211]]]},"id":"37103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.196774,35.220257],[-106.243787,35.21478],[-106.243787,35.039518],[-106.413572,34.869733],[-107.065328,34.957364],[-107.196774,35.220257]]]},"id":"35001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.124211,35.14358],[-104.129688,34.776625],[-104.890983,34.60684],[-104.890983,34.349424],[-105.312707,34.349424],[-105.290799,35.039518],[-105.290799,35.21478],[-104.124211,35.14358]]]},"id":"35019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.353373,35.192872],[-82.216449,35.198349],[-82.145249,34.787579],[-82.315034,34.486347],[-82.484819,34.820441],[-82.621743,35.066903],[-82.764143,35.066903],[-82.572451,35.14358],[-82.353373,35.192872]]]},"id":"45045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.127455,35.165488],[-79.10007,35.176442],[-79.034347,34.951887],[-79.346533,34.836871],[-79.461548,35.044995],[-79.127455,35.165488]]]},"id":"37093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.173551,35.149057],[-80.074966,35.14358],[-79.927088,34.80401],[-80.321428,34.814964],[-80.277612,35.198349],[-80.173551,35.149057]]]},"id":"37007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.55146,35.209303],[-80.507644,35.187396],[-80.277612,35.198349],[-80.321428,34.814964],[-80.562413,34.814964],[-80.841737,35.00118],[-80.55146,35.209303]]]},"id":"37179"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.216449,35.198349],[-81.969987,35.187396],[-81.876879,35.181919],[-81.712571,34.913548],[-81.712571,34.913548],[-81.854971,34.595886],[-82.145249,34.787579],[-82.216449,35.198349]]]},"id":"45083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.043021,35.192872],[-77.834897,35.176442],[-77.730835,35.006656],[-77.676066,34.973795],[-77.681543,34.721856],[-78.015636,34.732809],[-78.114221,34.721856],[-78.163514,35.187396],[-78.043021,35.192872]]]},"id":"37061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.579714,35.187396],[-102.168943,35.181919],[-102.168943,34.74924],[-102.524944,34.74924],[-103.045254,34.74924],[-103.045254,34.951887],[-103.039777,35.181919],[-102.579714,35.187396]]]},"id":"48117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.76734,35.181919],[-81.367524,35.165488],[-81.455155,34.836871],[-81.712571,34.913548],[-81.876879,35.181919],[-81.76734,35.181919]]]},"id":"45021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.729918,35.176442],[-79.614903,35.165488],[-79.461548,35.044995],[-79.686103,34.80401],[-79.927088,34.80401],[-80.074966,35.14358],[-79.729918,35.176442]]]},"id":"37153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.988204,35.181919],[-101.621249,35.181919],[-101.626726,34.74924],[-101.999158,34.74924],[-102.004635,34.74924],[-102.168943,34.74924],[-102.168943,35.181919],[-101.988204,35.181919]]]},"id":"48381"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.969493,35.181919],[-100.536815,35.181919],[-100.542292,34.74924],[-100.947585,34.74924],[-101.089986,34.74924],[-101.084509,35.181919],[-100.969493,35.181919]]]},"id":"48129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.093183,35.181919],[-100.000075,35.181919],[-100.000075,35.028564],[-100.000075,34.743763],[-100.416322,34.74924],[-100.542292,34.74924],[-100.536815,35.181919],[-100.093183,35.181919]]]},"id":"48087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.621249,35.181919],[-101.084509,35.181919],[-101.089986,34.74924],[-101.473372,34.74924],[-101.626726,34.74924],[-101.621249,35.181919]]]},"id":"48011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.367524,35.165488],[-81.329185,35.165488],[-81.044384,35.149057],[-80.907461,35.077857],[-80.907461,35.077857],[-80.896507,34.820441],[-81.28537,34.820441],[-81.477062,34.820441],[-81.455155,34.836871],[-81.367524,35.165488]]]},"id":"45091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.739039,35.154534],[-83.481623,34.995703],[-83.547346,34.990226],[-83.936209,34.984749],[-84.007409,34.984749],[-83.739039,35.154534]]]},"id":"37043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.831677,35.149057],[-90.50306,35.14358],[-90.409952,34.902595],[-91.100047,34.869733],[-91.149339,35.00118],[-91.045277,35.149057],[-90.831677,35.149057]]]},"id":"05123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.184011,35.116195],[-98.619886,35.099764],[-98.619886,34.853302],[-98.795148,34.853302],[-98.82801,34.595886],[-99.101857,34.639701],[-99.244257,34.820441],[-99.408565,35.116195],[-99.359273,35.116195],[-99.184011,35.116195]]]},"id":"40075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.709797,35.116195],[-99.408565,35.116195],[-99.244257,34.820441],[-99.397611,34.814964],[-99.665981,34.727333],[-99.890536,35.028564],[-99.709797,35.116195]]]},"id":"40055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.038884,35.077857],[-92.556913,35.110718],[-92.545959,34.951887],[-92.737652,34.853302],[-92.967683,34.858779],[-93.077222,34.771148],[-93.285346,34.771148],[-93.038884,35.077857]]]},"id":"05105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-120.094969,35.116195],[-119.470598,34.902595],[-119.443213,34.902595],[-119.476075,34.376808],[-120.64814,34.579455],[-120.64814,34.973795],[-120.094969,35.116195]]]},"id":"06083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.183564,35.083334],[-94.139749,35.099764],[-93.70707,35.01761],[-93.712547,34.743763],[-93.931625,34.667086],[-94.451934,34.727333],[-94.446457,34.935456],[-94.183564,35.083334]]]},"id":"05127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.587494,35.023087],[-91.467002,35.088811],[-91.368417,34.913548],[-91.379371,34.563024],[-91.587494,34.568501],[-91.680602,34.48087],[-91.801095,35.028564],[-91.587494,35.023087]]]},"id":"05117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.621743,35.066903],[-82.484819,34.820441],[-82.490296,34.820441],[-82.840821,34.623271],[-82.89559,35.055949],[-82.764143,35.066903],[-82.621743,35.066903]]]},"id":"45077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.111941,34.639701],[-77.16671,34.787579],[-77.090033,34.80401],[-76.712124,34.979272],[-76.646401,35.01761],[-76.279446,34.940933],[-76.536862,34.590409],[-77.111941,34.639701]]]},"id":"37031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.907461,35.077857],[-80.907461,35.077857],[-80.841737,35.00118],[-80.562413,34.814964],[-80.409059,34.612317],[-80.880076,34.458962],[-80.880076,34.541117],[-80.896507,34.820441],[-80.907461,35.077857]]]},"id":"45057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.801095,35.028564],[-91.680602,34.48087],[-91.70251,34.48087],[-92.031127,34.491824],[-92.118758,35.012133],[-92.118758,35.066903],[-91.801095,35.028564]]]},"id":"05085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.333722,35.055949],[-94.928428,35.055949],[-95.059875,34.67804],[-95.311814,34.683517],[-95.514461,34.683517],[-95.350152,35.055949],[-95.333722,35.055949]]]},"id":"40077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.89559,35.055949],[-82.840821,34.623271],[-82.846298,34.617794],[-82.857251,34.60684],[-82.994175,34.48087],[-83.048944,34.497301],[-83.103714,34.53564],[-83.278976,34.645178],[-83.339222,34.688994],[-83.350176,34.716379],[-83.109191,35.00118],[-83.010606,35.028564],[-82.89559,35.055949]]]},"id":"45073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.461548,35.044995],[-79.346533,34.836871],[-79.461548,34.628748],[-79.686103,34.80401],[-79.461548,35.044995]]]},"id":"37165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.290799,35.039518],[-105.312707,34.349424],[-105.926124,34.261793],[-106.419049,34.442532],[-106.413572,34.869733],[-106.243787,35.039518],[-105.712524,35.039518],[-105.290799,35.039518]]]},"id":"35057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.934351,35.028564],[-99.890536,35.028564],[-99.665981,34.727333],[-99.84672,34.508255],[-100.000075,34.563024],[-100.000075,34.743763],[-100.000075,35.028564],[-99.934351,35.028564]]]},"id":"40057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.228296,34.957364],[-92.118758,35.012133],[-92.031127,34.491824],[-92.069465,34.491824],[-92.206389,34.491824],[-92.244727,34.491824],[-92.737652,34.853302],[-92.545959,34.951887],[-92.228296,34.957364]]]},"id":"05119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.983668,35.006656],[-87.605759,35.00118],[-87.222373,35.00118],[-87.211419,35.00118],[-87.260711,34.760194],[-87.42502,34.798533],[-88.098683,34.891641],[-88.202745,34.995703],[-87.983668,35.006656]]]},"id":"01077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.275309,34.984749],[-91.149339,35.00118],[-91.100047,34.869733],[-91.050754,34.645178],[-91.056231,34.33847],[-91.379371,34.563024],[-91.368417,34.913548],[-91.275309,34.984749]]]},"id":"05095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.109191,35.00118],[-83.350176,34.716379],[-83.651408,34.820441],[-83.547346,34.990226],[-83.481623,34.995703],[-83.109191,35.00118]]]},"id":"13241"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.211419,35.00118],[-86.838987,34.990226],[-86.784218,34.990226],[-86.789695,34.55207],[-87.03068,34.650655],[-87.107357,34.683517],[-87.260711,34.760194],[-87.211419,35.00118]]]},"id":"01083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.471115,34.995703],[-88.378007,34.995703],[-88.361576,34.995703],[-88.367053,34.754717],[-88.717578,34.754717],[-88.821639,34.995703],[-88.788778,34.995703],[-88.471115,34.995703]]]},"id":"28003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.018809,34.995703],[-88.821639,34.995703],[-88.717578,34.754717],[-88.734008,34.595886],[-89.09001,34.595886],[-89.018809,34.995703]]]},"id":"28139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.829396,34.995703],[-89.725335,34.995703],[-89.725335,34.771148],[-89.845827,34.771148],[-90.201828,34.721856],[-90.267552,34.858779],[-90.30589,34.858779],[-90.311367,34.995703],[-89.829396,34.995703]]]},"id":"28033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.252038,34.995703],[-88.202745,34.995703],[-88.098683,34.891641],[-88.142499,34.579455],[-88.15893,34.464439],[-88.328715,34.464439],[-88.367053,34.754717],[-88.361576,34.995703],[-88.252038,34.995703]]]},"id":"28141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.643181,34.995703],[-89.352903,34.995703],[-89.243364,34.584932],[-89.248841,34.497301],[-89.62675,34.557547],[-89.670565,34.55207],[-89.725335,34.771148],[-89.725335,34.995703],[-89.643181,34.995703]]]},"id":"28093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.199548,34.995703],[-89.018809,34.995703],[-89.09001,34.595886],[-89.243364,34.584932],[-89.352903,34.995703],[-89.199548,34.995703]]]},"id":"28009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.936209,34.984749],[-83.547346,34.990226],[-83.651408,34.820441],[-83.684269,34.798533],[-83.782854,34.793056],[-83.936209,34.984749]]]},"id":"13281"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.784218,34.990226],[-86.318678,34.990226],[-86.313201,34.990226],[-86.329632,34.601363],[-86.548709,34.546593],[-86.789695,34.55207],[-86.784218,34.990226]]]},"id":"01089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.864092,34.990226],[-85.606675,34.984749],[-85.584768,34.858779],[-86.055785,34.475393],[-86.329632,34.601363],[-86.313201,34.990226],[-85.864092,34.990226]]]},"id":"01071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.319594,34.990226],[-84.127902,34.990226],[-84.155286,34.650655],[-84.188148,34.601363],[-84.199102,34.617794],[-84.620826,34.853302],[-84.620826,34.990226],[-84.319594,34.990226]]]},"id":"13111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.620826,34.990226],[-84.620826,34.853302],[-84.653688,34.584932],[-84.916581,34.634225],[-84.812519,34.990226],[-84.774181,34.990226],[-84.620826,34.990226]]]},"id":"13213"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.976827,34.990226],[-84.812519,34.990226],[-84.916581,34.634225],[-85.048028,34.623271],[-85.146612,34.765671],[-84.982304,34.990226],[-84.976827,34.990226]]]},"id":"13313"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.267105,34.984749],[-84.982304,34.990226],[-85.146612,34.765671],[-85.267105,34.984749]]]},"id":"13047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.007409,34.984749],[-83.936209,34.984749],[-83.782854,34.793056],[-83.854055,34.721856],[-84.155286,34.650655],[-84.127902,34.990226],[-84.007409,34.984749]]]},"id":"13291"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.272582,34.984749],[-85.267105,34.984749],[-85.146612,34.765671],[-85.048028,34.623271],[-85.069935,34.584932],[-85.09732,34.584932],[-85.108274,34.584932],[-85.529998,34.590409],[-85.535475,34.623271],[-85.36569,34.984749],[-85.272582,34.984749]]]},"id":"13295"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.475229,34.984749],[-85.36569,34.984749],[-85.535475,34.623271],[-85.584768,34.858779],[-85.606675,34.984749],[-85.475229,34.984749]]]},"id":"13083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.676066,34.973795],[-77.16671,34.787579],[-77.111941,34.639701],[-77.517235,34.442532],[-77.681543,34.721856],[-77.676066,34.973795]]]},"id":"37133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.932988,34.962841],[-96.774157,34.902595],[-96.489356,34.908072],[-96.407202,34.765671],[-96.511264,34.502778],[-96.828926,34.508255],[-96.932988,34.634225],[-96.932988,34.853302],[-96.932988,34.962841]]]},"id":"40123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.196774,34.957364],[-107.065328,34.957364],[-106.413572,34.869733],[-106.419049,34.442532],[-107.202251,34.579455],[-107.196774,34.957364]]]},"id":"35061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.264331,34.951887],[-103.045254,34.951887],[-103.045254,34.74924],[-103.045254,34.311085],[-103.045254,34.300131],[-103.740825,34.305608],[-103.740825,34.60684],[-103.264331,34.951887]]]},"id":"35009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.034347,34.951887],[-78.9029,34.836871],[-78.870039,34.48087],[-79.072686,34.300131],[-79.450595,34.623271],[-79.461548,34.628748],[-79.346533,34.836871],[-79.034347,34.951887]]]},"id":"37155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.712571,34.913548],[-81.712571,34.913548],[-81.455155,34.836871],[-81.477062,34.820441],[-81.422293,34.573978],[-81.422293,34.491824],[-81.641371,34.53564],[-81.854971,34.595886],[-81.712571,34.913548]]]},"id":"45087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.100047,34.869733],[-90.409952,34.902595],[-90.409952,34.831394],[-90.585214,34.639701],[-91.050754,34.645178],[-91.100047,34.869733]]]},"id":"05077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.098683,34.891641],[-87.42502,34.798533],[-87.529082,34.568501],[-88.142499,34.579455],[-88.098683,34.891641]]]},"id":"01033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-119.443213,34.902595],[-118.884565,34.793056],[-118.638103,34.289177],[-118.944811,34.042715],[-119.476075,34.376808],[-119.443213,34.902595]]]},"id":"06111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.267552,34.858779],[-90.201828,34.721856],[-90.196352,34.55207],[-90.196352,34.508255],[-90.398998,34.426101],[-90.568783,34.524686],[-90.585214,34.639701],[-90.409952,34.831394],[-90.30589,34.858779],[-90.267552,34.858779]]]},"id":"28143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.584768,34.858779],[-85.535475,34.623271],[-85.529998,34.590409],[-85.513567,34.524686],[-85.842184,34.201546],[-86.105077,34.201546],[-86.055785,34.475393],[-85.584768,34.858779]]]},"id":"01049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.397611,34.814964],[-99.244257,34.820441],[-99.101857,34.639701],[-99.211395,34.33847],[-99.474288,34.398716],[-99.84672,34.508255],[-99.665981,34.727333],[-99.397611,34.814964]]]},"id":"40065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.967683,34.858779],[-92.737652,34.853302],[-92.244727,34.491824],[-92.392605,34.497301],[-92.666452,34.415147],[-92.792421,34.502778],[-93.077222,34.771148],[-92.967683,34.858779]]]},"id":"05125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.49213,34.847825],[-78.256622,34.55207],[-78.256622,34.398716],[-78.870039,34.48087],[-78.9029,34.836871],[-78.49213,34.858779],[-78.49213,34.847825]]]},"id":"37017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.795148,34.853302],[-98.619886,34.853302],[-98.0941,34.853302],[-98.088623,34.683517],[-98.143392,34.508255],[-98.663701,34.404193],[-98.82801,34.595886],[-98.795148,34.853302]]]},"id":"40031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.620826,34.853302],[-84.199102,34.617794],[-84.346979,34.563024],[-84.653688,34.546593],[-84.653688,34.584932],[-84.620826,34.853302]]]},"id":"13123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.425913,34.853302],[-96.932988,34.853302],[-96.932988,34.634225],[-97.091819,34.639701],[-97.354713,34.508255],[-97.562836,34.508255],[-97.666898,34.683517],[-97.666898,34.853302],[-97.425913,34.853302]]]},"id":"40049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.651408,34.820441],[-83.350176,34.716379],[-83.339222,34.688994],[-83.459715,34.48087],[-83.552823,34.486347],[-83.613069,34.431578],[-83.667839,34.502778],[-83.684269,34.798533],[-83.651408,34.820441]]]},"id":"13137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.668684,34.820441],[-117.7837,33.94413],[-118.117793,33.741483],[-118.944811,34.042715],[-118.638103,34.289177],[-118.884565,34.793056],[-117.668684,34.820441]]]},"id":"06037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.28537,34.820441],[-80.896507,34.820441],[-80.880076,34.541117],[-81.416816,34.573978],[-81.422293,34.573978],[-81.477062,34.820441],[-81.28537,34.820441]]]},"id":"45023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.490296,34.820441],[-82.484819,34.820441],[-82.315034,34.486347],[-82.325988,34.475393],[-82.742236,34.207023],[-82.775097,34.289177],[-82.994175,34.48087],[-82.857251,34.60684],[-82.846298,34.617794],[-82.840821,34.623271],[-82.490296,34.820441]]]},"id":"45007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.562413,34.814964],[-80.321428,34.814964],[-79.927088,34.80401],[-79.828503,34.530163],[-79.866842,34.508255],[-80.288566,34.365854],[-80.387151,34.595886],[-80.409059,34.612317],[-80.562413,34.814964]]]},"id":"45025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.927088,34.80401],[-79.686103,34.80401],[-79.461548,34.628748],[-79.450595,34.623271],[-79.631334,34.300131],[-79.658718,34.305608],[-79.828503,34.530163],[-79.927088,34.80401]]]},"id":"45069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.42502,34.798533],[-87.260711,34.760194],[-87.107357,34.683517],[-87.112834,34.311085],[-87.107357,34.300131],[-87.529082,34.305608],[-87.529082,34.568501],[-87.42502,34.798533]]]},"id":"01079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.782854,34.793056],[-83.684269,34.798533],[-83.667839,34.502778],[-83.788331,34.513732],[-83.843101,34.502778],[-83.854055,34.721856],[-83.782854,34.793056]]]},"id":"13311"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.145249,34.787579],[-81.854971,34.595886],[-81.641371,34.53564],[-81.646848,34.519209],[-81.942602,34.201546],[-82.243834,34.40967],[-82.315034,34.486347],[-82.145249,34.787579]]]},"id":"45059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.129688,34.776625],[-103.948949,34.60684],[-103.943472,34.081054],[-104.890983,34.08653],[-104.890983,34.349424],[-104.890983,34.60684],[-104.129688,34.776625]]]},"id":"35011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.285346,34.771148],[-93.077222,34.771148],[-92.792421,34.502778],[-93.405839,34.398716],[-93.394885,34.743763],[-93.285346,34.771148]]]},"id":"05051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.845827,34.771148],[-89.725335,34.771148],[-89.670565,34.55207],[-89.719858,34.55207],[-90.097767,34.55207],[-90.196352,34.55207],[-90.201828,34.721856],[-89.845827,34.771148]]]},"id":"28137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.089539,34.765671],[-96.089539,34.67804],[-96.407202,34.420624],[-96.511264,34.502778],[-96.407202,34.765671],[-96.089539,34.765671]]]},"id":"40029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.717578,34.754717],[-88.367053,34.754717],[-88.328715,34.464439],[-88.493023,34.464439],[-88.542316,34.464439],[-88.635423,34.508255],[-88.734008,34.508255],[-88.734008,34.595886],[-88.717578,34.754717]]]},"id":"28117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.473372,34.74924],[-101.089986,34.74924],[-100.947585,34.74924],[-100.947585,34.311085],[-101.040693,34.311085],[-101.473372,34.311085],[-101.473372,34.74924]]]},"id":"48045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.947585,34.74924],[-100.542292,34.74924],[-100.416322,34.74924],[-100.416322,34.311085],[-100.514907,34.316562],[-100.673738,34.311085],[-100.947585,34.311085],[-100.947585,34.74924]]]},"id":"48191"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.999158,34.74924],[-101.626726,34.74924],[-101.473372,34.74924],[-101.473372,34.311085],[-101.56648,34.311085],[-101.999158,34.311085],[-101.999158,34.74924]]]},"id":"48437"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.004635,34.74924],[-101.999158,34.74924],[-101.999158,34.311085],[-102.092266,34.311085],[-102.327774,34.311085],[-102.524944,34.311085],[-102.524944,34.74924],[-102.168943,34.74924],[-102.004635,34.74924]]]},"id":"48069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.045254,34.74924],[-102.524944,34.74924],[-102.524944,34.311085],[-102.612575,34.311085],[-103.045254,34.311085],[-103.045254,34.74924]]]},"id":"48369"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.416322,34.74924],[-100.000075,34.743763],[-100.000075,34.563024],[-100.000075,34.311085],[-100.416322,34.311085],[-100.416322,34.74924]]]},"id":"48075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.570147,34.743763],[-93.394885,34.743763],[-93.405839,34.398716],[-93.405839,34.33847],[-93.477039,34.33847],[-93.750886,34.349424],[-93.937102,34.349424],[-93.931625,34.667086],[-93.712547,34.743763],[-93.570147,34.743763]]]},"id":"05097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.854055,34.721856],[-83.843101,34.502778],[-83.980024,34.420624],[-84.188148,34.601363],[-84.155286,34.650655],[-83.854055,34.721856]]]},"id":"13187"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.015636,34.732809],[-77.681543,34.721856],[-77.517235,34.442532],[-77.714404,34.294654],[-77.960867,34.376808],[-78.032067,34.332993],[-78.125175,34.365854],[-78.163514,34.354901],[-78.256622,34.398716],[-78.256622,34.55207],[-78.114221,34.721856],[-78.015636,34.732809]]]},"id":"37141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.451934,34.727333],[-93.931625,34.667086],[-93.937102,34.349424],[-94.24381,34.190592],[-94.468365,34.190592],[-94.462888,34.508255],[-94.451934,34.727333]]]},"id":"05113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.278976,34.645178],[-83.103714,34.53564],[-83.125621,34.519209],[-83.399469,34.458962],[-83.459715,34.48087],[-83.339222,34.688994],[-83.278976,34.645178]]]},"id":"13257"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.03068,34.650655],[-86.789695,34.55207],[-86.548709,34.546593],[-86.581571,34.305608],[-86.986864,34.311085],[-87.112834,34.311085],[-87.107357,34.683517],[-87.03068,34.650655]]]},"id":"01103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.995515,34.683517],[-97.666898,34.683517],[-97.562836,34.508255],[-97.562836,34.289177],[-98.061238,34.289177],[-98.137915,34.289177],[-98.143392,34.508255],[-98.143392,34.508255],[-98.088623,34.683517],[-97.995515,34.683517]]]},"id":"40137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.311814,34.683517],[-95.059875,34.67804],[-94.939382,34.508255],[-95.158459,34.157731],[-95.383014,34.157731],[-95.777354,34.157731],[-95.673292,34.595886],[-95.514461,34.683517],[-95.311814,34.683517]]]},"id":"40127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.673292,34.595886],[-95.777354,34.157731],[-95.990954,34.157731],[-96.407202,34.157731],[-96.407202,34.420624],[-96.089539,34.67804],[-95.673292,34.595886]]]},"id":"40005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.050754,34.645178],[-90.585214,34.639701],[-90.568783,34.524686],[-90.957646,34.119392],[-90.952169,34.119392],[-91.116477,34.119392],[-91.056231,34.33847],[-91.050754,34.645178]]]},"id":"05107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.101857,34.639701],[-98.82801,34.595886],[-98.663701,34.404193],[-98.608932,34.157731],[-98.953979,34.2125],[-99.211395,34.33847],[-99.101857,34.639701]]]},"id":"40141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.091819,34.639701],[-96.932988,34.634225],[-96.828926,34.508255],[-96.878219,34.502778],[-96.932988,34.332993],[-97.354713,34.508255],[-97.091819,34.639701]]]},"id":"40099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.916581,34.634225],[-84.653688,34.584932],[-84.653688,34.546593],[-84.653688,34.415147],[-84.933012,34.398716],[-85.004212,34.393239],[-85.069935,34.584932],[-85.048028,34.623271],[-84.916581,34.634225]]]},"id":"13129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.450595,34.623271],[-79.072686,34.300131],[-79.078163,34.294654],[-79.127455,34.256316],[-79.36844,34.300131],[-79.549179,34.228931],[-79.631334,34.300131],[-79.450595,34.623271]]]},"id":"45033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.199102,34.617794],[-84.188148,34.601363],[-83.980024,34.420624],[-83.958116,34.332993],[-84.259348,34.332993],[-84.259348,34.382285],[-84.346979,34.563024],[-84.199102,34.617794]]]},"id":"13085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.387151,34.595886],[-80.288566,34.365854],[-80.288566,34.365854],[-80.480259,34.168685],[-80.617183,34.097484],[-80.825307,34.26727],[-80.880076,34.458962],[-80.409059,34.612317],[-80.387151,34.595886]]]},"id":"45055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.740825,34.60684],[-103.740825,34.305608],[-103.045254,34.300131],[-103.045254,33.823637],[-103.050731,33.571698],[-103.510794,33.571698],[-103.877749,34.081054],[-103.943472,34.081054],[-103.948949,34.60684],[-103.740825,34.60684]]]},"id":"35041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.329632,34.601363],[-86.055785,34.475393],[-86.105077,34.201546],[-86.302247,34.097484],[-86.455601,34.261793],[-86.581571,34.305608],[-86.548709,34.546593],[-86.329632,34.601363]]]},"id":"01095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.09001,34.595886],[-88.734008,34.595886],[-88.734008,34.508255],[-88.827116,34.365854],[-89.09001,34.382285],[-89.248841,34.376808],[-89.248841,34.497301],[-89.243364,34.584932],[-89.09001,34.595886]]]},"id":"28145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.108274,34.584932],[-85.464275,34.2837],[-85.513567,34.524686],[-85.529998,34.590409],[-85.108274,34.584932]]]},"id":"13055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.09732,34.584932],[-85.069935,34.584932],[-85.004212,34.393239],[-85.048028,34.097484],[-85.42046,34.081054],[-85.464275,34.2837],[-85.108274,34.584932],[-85.09732,34.584932]]]},"id":"13115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.142499,34.579455],[-87.529082,34.568501],[-87.529082,34.305608],[-87.633143,34.305608],[-88.175361,34.322039],[-88.15893,34.464439],[-88.142499,34.579455]]]},"id":"01059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-108.987734,34.579455],[-107.722561,34.579455],[-107.711607,33.47859],[-108.001885,33.199266],[-108.182624,33.199266],[-109.04798,33.21022],[-109.04798,33.779822],[-109.04798,34.579455],[-108.987734,34.579455]]]},"id":"35003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.536345,34.579455],[-107.202251,34.579455],[-106.419049,34.442532],[-105.926124,34.261793],[-106.052094,33.648375],[-106.375233,33.47859],[-107.711607,33.47859],[-107.722561,34.579455],[-107.536345,34.579455]]]},"id":"35053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.84672,34.508255],[-99.474288,34.398716],[-99.474288,34.08653],[-100.000075,34.223454],[-100.000075,34.311085],[-100.000075,34.563024],[-99.84672,34.508255]]]},"id":"48197"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.416816,34.573978],[-80.880076,34.541117],[-80.880076,34.458962],[-80.825307,34.26727],[-80.863645,34.261793],[-81.318231,34.239885],[-81.422293,34.491824],[-81.422293,34.573978],[-81.416816,34.573978]]]},"id":"45039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.587494,34.568501],[-91.379371,34.563024],[-91.056231,34.33847],[-91.116477,34.119392],[-91.423186,34.01533],[-91.445094,34.081054],[-91.70251,34.48087],[-91.680602,34.48087],[-91.587494,34.568501]]]},"id":"05001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.346979,34.563024],[-84.259348,34.382285],[-84.582488,34.387762],[-84.653688,34.415147],[-84.653688,34.546593],[-84.346979,34.563024]]]},"id":"13227"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.62675,34.557547],[-89.248841,34.497301],[-89.248841,34.376808],[-89.243364,34.163208],[-89.511734,34.163208],[-89.719858,34.190592],[-89.719858,34.55207],[-89.670565,34.55207],[-89.62675,34.557547]]]},"id":"28071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.097767,34.55207],[-89.719858,34.55207],[-89.719858,34.190592],[-89.933458,34.163208],[-90.136105,34.157731],[-90.196352,34.508255],[-90.196352,34.55207],[-90.097767,34.55207]]]},"id":"28107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.125621,34.519209],[-83.103714,34.53564],[-83.048944,34.497301],[-83.114668,34.272746],[-83.120145,34.272746],[-83.355653,34.223454],[-83.399469,34.458962],[-83.125621,34.519209]]]},"id":"13119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.866842,34.508255],[-79.828503,34.530163],[-79.658718,34.305608],[-80.074966,34.08653],[-80.244751,34.322039],[-80.288566,34.365854],[-80.288566,34.365854],[-79.866842,34.508255]]]},"id":"45031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.646848,34.519209],[-81.641371,34.53564],[-81.422293,34.491824],[-81.318231,34.239885],[-81.340139,34.196069],[-81.471585,34.075577],[-81.739956,34.185115],[-81.871402,34.135823],[-81.942602,34.201546],[-81.646848,34.519209]]]},"id":"45071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.513567,34.524686],[-85.464275,34.2837],[-85.42046,34.081054],[-85.398552,33.966038],[-85.529998,33.94413],[-85.738122,33.966038],[-85.842184,34.201546],[-85.513567,34.524686]]]},"id":"01019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.568783,34.524686],[-90.398998,34.426101],[-90.448291,34.075577],[-90.448291,33.987946],[-90.656414,33.987946],[-90.738569,34.119392],[-90.957646,34.119392],[-90.568783,34.524686]]]},"id":"28027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.788331,34.513732],[-83.667839,34.502778],[-83.613069,34.431578],[-83.618546,34.294654],[-83.815716,34.124869],[-83.990978,34.1413],[-84.062178,34.168685],[-83.958116,34.332993],[-83.980024,34.420624],[-83.843101,34.502778],[-83.788331,34.513732]]]},"id":"13139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.196352,34.508255],[-90.136105,34.157731],[-90.448291,34.075577],[-90.398998,34.426101],[-90.196352,34.508255]]]},"id":"28119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.635423,34.508255],[-88.542316,34.464439],[-88.542316,34.08653],[-88.706624,34.092007],[-88.717578,34.075577],[-88.827116,34.075577],[-88.827116,34.365854],[-88.734008,34.508255],[-88.635423,34.508255]]]},"id":"28081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.616242,34.508255],[-94.462888,34.508255],[-94.468365,34.190592],[-94.479319,33.938653],[-94.484796,33.637421],[-94.736735,33.703145],[-95.158459,33.938653],[-95.158459,34.157731],[-94.939382,34.508255],[-94.616242,34.508255]]]},"id":"40089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.143392,34.508255],[-98.137915,34.289177],[-98.137915,34.1413],[-98.422716,34.081054],[-98.608932,34.157731],[-98.663701,34.404193],[-98.143392,34.508255],[-98.143392,34.508255]]]},"id":"40033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.562836,34.508255],[-97.354713,34.508255],[-96.932988,34.332993],[-96.932988,34.174162],[-96.971327,34.0701],[-97.562836,34.0701],[-97.562836,34.289177],[-97.562836,34.508255]]]},"id":"40019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.878219,34.502778],[-96.828926,34.508255],[-96.511264,34.502778],[-96.407202,34.420624],[-96.407202,34.157731],[-96.412679,34.157731],[-96.587941,34.113915],[-96.932988,34.174162],[-96.932988,34.332993],[-96.878219,34.502778]]]},"id":"40069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.792421,34.502778],[-92.666452,34.415147],[-92.677405,34.152254],[-92.885529,34.157731],[-93.405839,34.33847],[-93.405839,34.398716],[-92.792421,34.502778]]]},"id":"05059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.556419,34.469916],[-110.751309,34.261793],[-110.751309,33.998899],[-110.000968,33.998899],[-110.000968,33.577175],[-110.450077,33.193789],[-110.778693,32.985665],[-111.041587,33.467636],[-111.496173,33.998899],[-111.556419,34.469916]]]},"id":"04007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.048944,34.497301],[-82.994175,34.48087],[-82.775097,34.289177],[-83.076329,34.228931],[-83.114668,34.272746],[-83.048944,34.497301]]]},"id":"13147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.392605,34.497301],[-92.244727,34.491824],[-92.206389,34.491824],[-92.233773,34.064623],[-92.337835,34.059146],[-92.677405,34.152254],[-92.666452,34.415147],[-92.392605,34.497301]]]},"id":"05053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.069465,34.491824],[-92.031127,34.491824],[-91.70251,34.48087],[-91.445094,34.081054],[-91.603925,34.113915],[-91.954449,34.064623],[-92.058511,34.064623],[-92.233773,34.064623],[-92.206389,34.491824],[-92.069465,34.491824]]]},"id":"05069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.552823,34.486347],[-83.459715,34.48087],[-83.399469,34.458962],[-83.355653,34.223454],[-83.404945,34.196069],[-83.618546,34.289177],[-83.618546,34.294654],[-83.613069,34.431578],[-83.552823,34.486347]]]},"id":"13011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.325988,34.475393],[-82.315034,34.486347],[-82.243834,34.40967],[-82.325988,34.064623],[-82.594358,34.01533],[-82.742236,34.207023],[-82.325988,34.475393]]]},"id":"45001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.870039,34.48087],[-78.256622,34.398716],[-78.163514,34.354901],[-78.650961,33.94413],[-79.072686,34.300131],[-78.870039,34.48087]]]},"id":"37047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.493023,34.464439],[-88.328715,34.464439],[-88.15893,34.464439],[-88.175361,34.322039],[-88.202745,34.08653],[-88.542316,34.08653],[-88.542316,34.464439],[-88.493023,34.464439]]]},"id":"28057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.211395,34.33847],[-98.953979,34.2125],[-98.953979,33.834591],[-98.992318,33.834591],[-99.474288,33.834591],[-99.474288,34.08653],[-99.474288,34.398716],[-99.211395,34.33847]]]},"id":"48487"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.933012,34.398716],[-84.653688,34.415147],[-84.659165,34.075577],[-84.735842,34.081054],[-84.922058,34.081054],[-85.048028,34.097484],[-85.004212,34.393239],[-84.933012,34.398716]]]},"id":"13015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.582488,34.387762],[-84.259348,34.382285],[-84.259348,34.332993],[-84.259348,34.185115],[-84.407226,34.108438],[-84.418179,34.075577],[-84.615349,34.081054],[-84.659165,34.075577],[-84.653688,34.415147],[-84.582488,34.387762]]]},"id":"13057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.243834,34.40967],[-81.942602,34.201546],[-81.871402,34.135823],[-82.008326,33.960561],[-82.046664,33.955084],[-82.325988,34.064623],[-82.243834,34.40967]]]},"id":"45047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-77.960867,34.376808],[-77.714404,34.294654],[-77.938959,33.927699],[-78.032067,34.332993],[-77.960867,34.376808]]]},"id":"37129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.09001,34.382285],[-88.827116,34.365854],[-88.827116,34.075577],[-89.139302,34.075577],[-89.243364,34.163208],[-89.248841,34.376808],[-89.09001,34.382285]]]},"id":"28115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-78.125175,34.365854],[-78.032067,34.332993],[-77.938959,33.927699],[-78.541422,33.851022],[-78.650961,33.94413],[-78.163514,34.354901],[-78.125175,34.365854]]]},"id":"37019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.244751,34.322039],[-80.074966,34.08653],[-79.998289,34.048192],[-80.480259,34.168685],[-80.288566,34.365854],[-80.244751,34.322039]]]},"id":"45061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.24381,34.190592],[-93.937102,34.349424],[-93.822086,34.009853],[-93.95901,33.752437],[-93.95901,33.752437],[-94.189041,34.190592],[-94.24381,34.190592]]]},"id":"05061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.750886,34.349424],[-93.477039,34.33847],[-93.372977,33.955084],[-93.455131,33.955084],[-93.811132,34.009853],[-93.822086,34.009853],[-93.937102,34.349424],[-93.750886,34.349424]]]},"id":"05109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.890983,34.349424],[-104.890983,34.08653],[-104.907413,33.13902],[-105.318184,33.133543],[-105.728954,33.390959],[-106.347849,33.390959],[-106.375233,33.47859],[-106.052094,33.648375],[-105.926124,34.261793],[-105.312707,34.349424],[-104.890983,34.349424]]]},"id":"35027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.477039,34.33847],[-93.405839,34.33847],[-92.885529,34.157731],[-92.891006,33.807207],[-93.104607,33.779822],[-93.372977,33.955084],[-93.477039,34.33847]]]},"id":"05019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.259348,34.332993],[-83.958116,34.332993],[-84.062178,34.168685],[-84.09504,34.048192],[-84.259348,34.185115],[-84.259348,34.332993]]]},"id":"13117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.175361,34.322039],[-87.633143,34.305608],[-87.63862,34.004376],[-87.63862,33.916745],[-87.950806,33.922222],[-88.208222,34.059146],[-88.202745,34.08653],[-88.175361,34.322039]]]},"id":"01093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.418579,34.300131],[-113.330948,34.316562],[-113.336425,33.998899],[-113.336425,33.380005],[-113.993657,33.462159],[-114.513967,33.029481],[-114.628982,33.434775],[-114.43729,34.081054],[-114.136058,34.305608],[-113.418579,34.300131]]]},"id":"04012"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.673738,34.311085],[-100.514907,34.316562],[-100.520384,33.834591],[-100.90377,33.834591],[-101.040693,33.834591],[-101.040693,34.311085],[-100.947585,34.311085],[-100.673738,34.311085]]]},"id":"48345"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.514907,34.316562],[-100.416322,34.311085],[-100.000075,34.311085],[-100.000075,34.223454],[-100.049367,33.834591],[-100.520384,33.834591],[-100.514907,34.316562]]]},"id":"48101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.986864,34.311085],[-86.581571,34.305608],[-86.455601,34.261793],[-86.488463,34.261793],[-86.964957,33.856499],[-87.151173,33.993423],[-87.107357,34.300131],[-87.112834,34.311085],[-86.986864,34.311085]]]},"id":"01043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.327774,34.311085],[-102.092266,34.311085],[-102.086789,33.823637],[-102.618052,33.823637],[-102.612575,34.311085],[-102.524944,34.311085],[-102.327774,34.311085]]]},"id":"48279"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.092266,34.311085],[-101.999158,34.311085],[-101.56648,34.311085],[-101.561003,33.829114],[-101.571957,33.829114],[-102.086789,33.823637],[-102.092266,34.311085]]]},"id":"48189"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.612575,34.311085],[-102.618052,33.823637],[-103.001438,33.823637],[-103.045254,33.823637],[-103.045254,34.300131],[-103.045254,34.311085],[-102.612575,34.311085]]]},"id":"48017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.473372,34.311085],[-101.040693,34.311085],[-101.040693,33.834591],[-101.561003,33.829114],[-101.56648,34.311085],[-101.473372,34.311085]]]},"id":"48153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.658718,34.305608],[-79.631334,34.300131],[-79.549179,34.228931],[-79.324625,33.80173],[-79.83398,33.883884],[-79.877796,33.883884],[-79.976381,33.94413],[-79.998289,34.048192],[-80.074966,34.08653],[-79.658718,34.305608]]]},"id":"45041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.633143,34.305608],[-87.529082,34.305608],[-87.107357,34.300131],[-87.151173,33.993423],[-87.627666,34.004376],[-87.63862,34.004376],[-87.633143,34.305608]]]},"id":"01133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.36844,34.300131],[-79.127455,34.256316],[-79.187701,33.703145],[-79.319148,33.779822],[-79.324625,33.80173],[-79.549179,34.228931],[-79.36844,34.300131]]]},"id":"45067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.078163,34.294654],[-79.072686,34.300131],[-78.650961,33.94413],[-78.541422,33.851022],[-79.001485,33.571698],[-79.187701,33.703145],[-79.127455,34.256316],[-79.078163,34.294654]]]},"id":"45051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.618546,34.289177],[-83.404945,34.196069],[-83.36113,34.042715],[-83.536392,33.966038],[-83.815716,34.124869],[-83.618546,34.294654],[-83.618546,34.289177]]]},"id":"13157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.061238,34.289177],[-97.562836,34.289177],[-97.562836,34.0701],[-97.562836,33.894838],[-97.979084,33.889361],[-98.137915,34.1413],[-98.137915,34.289177],[-98.061238,34.289177]]]},"id":"40067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.775097,34.289177],[-82.742236,34.207023],[-82.594358,34.01533],[-82.566974,33.955084],[-82.643651,33.982469],[-82.731282,33.982469],[-82.780574,33.971515],[-82.977744,34.042715],[-83.076329,34.228931],[-82.775097,34.289177]]]},"id":"13105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.120145,34.272746],[-83.114668,34.272746],[-83.076329,34.228931],[-82.977744,34.042715],[-83.098237,34.026284],[-83.257068,33.998899],[-83.36113,34.042715],[-83.404945,34.196069],[-83.355653,34.223454],[-83.120145,34.272746]]]},"id":"13195"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.863645,34.261793],[-80.825307,34.26727],[-80.617183,34.097484],[-80.62266,33.741483],[-81.011523,33.878407],[-81.340139,34.196069],[-81.318231,34.239885],[-80.863645,34.261793]]]},"id":"45079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.488463,34.261793],[-86.455601,34.261793],[-86.302247,34.097484],[-86.324155,33.938653],[-86.576094,33.763391],[-86.685633,33.796253],[-86.954003,33.812683],[-86.964957,33.856499],[-86.488463,34.261793]]]},"id":"01009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.000075,34.223454],[-99.474288,34.08653],[-99.474288,33.834591],[-99.474288,33.736006],[-99.868628,33.834591],[-99.994598,33.834591],[-100.049367,33.834591],[-100.000075,34.223454]]]},"id":"48155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.608932,34.157731],[-98.422716,34.081054],[-98.422716,33.834591],[-98.43367,33.834591],[-98.953979,33.834591],[-98.953979,34.2125],[-98.608932,34.157731]]]},"id":"48485"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.105077,34.201546],[-85.842184,34.201546],[-85.738122,33.966038],[-86.066738,33.840068],[-86.291293,33.982469],[-86.324155,33.938653],[-86.302247,34.097484],[-86.105077,34.201546]]]},"id":"01055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.340139,34.196069],[-81.011523,33.878407],[-81.044384,33.796253],[-81.044384,33.708622],[-81.186785,33.653852],[-81.57017,33.878407],[-81.471585,34.075577],[-81.340139,34.196069]]]},"id":"45063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.189041,34.190592],[-93.95901,33.752437],[-94.446457,33.927699],[-94.479319,33.938653],[-94.468365,34.190592],[-94.24381,34.190592],[-94.189041,34.190592]]]},"id":"05133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.511734,34.163208],[-89.506257,33.867453],[-89.927981,33.900315],[-89.933458,34.163208],[-89.719858,34.190592],[-89.511734,34.163208]]]},"id":"28161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.739956,34.185115],[-81.471585,34.075577],[-81.57017,33.878407],[-81.652325,33.812683],[-82.008326,33.960561],[-81.871402,34.135823],[-81.739956,34.185115]]]},"id":"45081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.407226,34.108438],[-84.259348,34.185115],[-84.09504,34.048192],[-84.275779,33.955084],[-84.352456,33.648375],[-84.456518,33.54979],[-84.609872,33.500498],[-84.681073,33.511452],[-84.850858,33.511452],[-84.807042,33.571698],[-84.577011,33.741483],[-84.418179,34.075577],[-84.407226,34.108438]]]},"id":"13121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.603925,34.113915],[-91.445094,34.081054],[-91.423186,34.01533],[-91.56011,33.785299],[-91.664172,33.790776],[-91.976357,33.790776],[-91.954449,34.064623],[-91.603925,34.113915]]]},"id":"05079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.932988,34.174162],[-96.587941,34.113915],[-96.587941,33.894838],[-96.932988,33.955084],[-96.971327,34.0701],[-96.932988,34.174162]]]},"id":"40095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.480259,34.168685],[-79.998289,34.048192],[-79.976381,33.94413],[-80.332382,33.779822],[-80.535029,33.642898],[-80.62266,33.741483],[-80.617183,34.097484],[-80.480259,34.168685]]]},"id":"45085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.990978,34.1413],[-83.815716,34.124869],[-83.799285,33.927699],[-83.980024,33.785299],[-84.02384,33.752437],[-84.275779,33.955084],[-84.275779,33.955084],[-84.09504,34.048192],[-84.062178,34.168685],[-83.990978,34.1413]]]},"id":"13135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.933458,34.163208],[-89.927981,33.900315],[-90.136105,33.719575],[-90.453768,33.812683],[-90.448291,33.987946],[-90.448291,34.075577],[-90.136105,34.157731],[-89.933458,34.163208]]]},"id":"28135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.511734,34.163208],[-89.243364,34.163208],[-89.139302,34.075577],[-89.194071,33.736006],[-89.506257,33.719575],[-89.506257,33.867453],[-89.511734,34.163208]]]},"id":"28013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.412679,34.157731],[-96.407202,34.157731],[-95.990954,34.157731],[-95.760923,33.87293],[-95.843077,33.840068],[-96.379817,33.725052],[-96.587941,33.894838],[-96.587941,34.113915],[-96.412679,34.157731]]]},"id":"40013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.137915,34.1413],[-97.979084,33.889361],[-97.979084,33.467636],[-98.422716,33.467636],[-98.422716,33.834591],[-98.422716,34.081054],[-98.137915,34.1413]]]},"id":"48077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.383014,34.157731],[-95.158459,34.157731],[-95.158459,33.938653],[-95.311814,33.878407],[-95.760923,33.87293],[-95.990954,34.157731],[-95.777354,34.157731],[-95.383014,34.157731]]]},"id":"40023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.885529,34.157731],[-92.677405,34.152254],[-92.337835,34.059146],[-92.332358,33.796253],[-92.584298,33.80173],[-92.891006,33.807207],[-92.885529,34.157731]]]},"id":"05039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.799285,33.927699],[-83.815716,34.124869],[-83.536392,33.966038],[-83.645931,33.905791],[-83.799285,33.927699]]]},"id":"13013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.738569,34.119392],[-90.656414,33.987946],[-90.765953,33.527883],[-91.001462,33.527883],[-91.215062,33.527883],[-91.231493,33.560744],[-90.952169,34.119392],[-90.957646,34.119392],[-90.738569,34.119392]]]},"id":"28011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.116477,34.119392],[-90.952169,34.119392],[-91.231493,33.560744],[-91.390325,33.560744],[-91.456048,33.566221],[-91.56011,33.785299],[-91.423186,34.01533],[-91.116477,34.119392]]]},"id":"05041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.42046,34.081054],[-85.048028,34.097484],[-84.922058,34.081054],[-85.048028,33.905791],[-85.310921,33.900315],[-85.387598,33.900315],[-85.398552,33.966038],[-85.42046,34.081054]]]},"id":"13233"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.706624,34.092007],[-88.542316,34.08653],[-88.202745,34.08653],[-88.208222,34.059146],[-88.246561,33.74696],[-88.514931,33.648375],[-88.717578,33.812683],[-88.717578,34.075577],[-88.706624,34.092007]]]},"id":"28095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.877749,34.081054],[-103.510794,33.571698],[-103.812025,32.963758],[-104.102303,32.963758],[-104.84169,32.963758],[-104.852644,32.520126],[-105.356522,32.520126],[-105.318184,33.133543],[-104.907413,33.13902],[-104.890983,34.08653],[-103.943472,34.081054],[-103.877749,34.081054]]]},"id":"35005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.922058,34.081054],[-84.735842,34.081054],[-84.724888,33.807207],[-84.90015,33.779822],[-85.037074,33.812683],[-85.048028,33.905791],[-84.922058,34.081054]]]},"id":"13223"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.615349,34.081054],[-84.418179,34.075577],[-84.577011,33.741483],[-84.724888,33.807207],[-84.735842,34.081054],[-84.659165,34.075577],[-84.615349,34.081054]]]},"id":"13067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.594358,34.01533],[-82.325988,34.064623],[-82.046664,33.955084],[-82.117864,33.599083],[-82.216449,33.686714],[-82.566974,33.955084],[-82.594358,34.01533]]]},"id":"45065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.733044,34.081054],[-114.43729,34.081054],[-114.628982,33.434775],[-114.733044,33.434775],[-116.085849,33.423821],[-117.476991,33.505975],[-117.509853,33.505975],[-117.674161,33.87293],[-117.559146,34.031761],[-114.733044,34.081054]]]},"id":"06065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.827116,34.075577],[-88.717578,34.075577],[-88.717578,33.812683],[-88.887363,33.812683],[-89.03524,33.741483],[-89.117394,33.741483],[-89.194071,33.736006],[-89.139302,34.075577],[-88.827116,34.075577]]]},"id":"28017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.562836,34.0701],[-96.971327,34.0701],[-96.932988,33.955084],[-96.943942,33.949607],[-97.486159,33.916745],[-97.562836,33.894838],[-97.562836,34.0701]]]},"id":"40085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.058511,34.064623],[-91.954449,34.064623],[-91.976357,33.790776],[-91.976357,33.703145],[-92.332358,33.708622],[-92.332358,33.796253],[-92.337835,34.059146],[-92.233773,34.064623],[-92.058511,34.064623]]]},"id":"05025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.208222,34.059146],[-87.950806,33.922222],[-87.945329,33.522406],[-88.273945,33.53336],[-88.246561,33.74696],[-88.208222,34.059146]]]},"id":"01075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.496173,33.998899],[-111.041587,33.467636],[-111.578327,33.467636],[-111.583804,33.204743],[-112.202698,33.308805],[-112.202698,32.509172],[-113.336425,32.503695],[-113.336425,33.380005],[-113.336425,33.998899],[-112.273898,33.883884],[-111.496173,33.998899]]]},"id":"04013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.098237,34.026284],[-82.977744,34.042715],[-82.780574,33.971515],[-82.950359,33.736006],[-82.994175,33.692191],[-83.278976,33.763391],[-83.273499,33.845545],[-83.257068,33.998899],[-83.098237,34.026284]]]},"id":"13221"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.36113,34.042715],[-83.257068,33.998899],[-83.273499,33.845545],[-83.530915,33.960561],[-83.536392,33.966038],[-83.36113,34.042715]]]},"id":"13059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.811132,34.009853],[-93.455131,33.955084],[-93.482516,33.47859],[-93.723501,33.484067],[-93.827563,33.610037],[-93.95901,33.752437],[-93.822086,34.009853],[-93.811132,34.009853]]]},"id":"05057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.627666,34.004376],[-87.151173,33.993423],[-86.964957,33.856499],[-86.954003,33.812683],[-87.266188,33.511452],[-87.42502,33.60456],[-87.63862,33.916745],[-87.63862,34.004376],[-87.627666,34.004376]]]},"id":"01127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.562836,33.894838],[-97.486159,33.916745],[-97.486159,33.434775],[-97.50259,33.434775],[-97.918837,33.434775],[-97.979084,33.467636],[-97.979084,33.889361],[-97.562836,33.894838]]]},"id":"48337"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.731282,33.982469],[-82.643651,33.982469],[-82.479343,33.637421],[-82.649128,33.610037],[-82.681989,33.599083],[-82.950359,33.736006],[-82.780574,33.971515],[-82.731282,33.982469]]]},"id":"13317"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.291293,33.982469],[-86.066738,33.840068],[-86.143416,33.681237],[-86.198185,33.697668],[-86.378924,33.390959],[-86.515848,33.544313],[-86.576094,33.763391],[-86.324155,33.938653],[-86.291293,33.982469]]]},"id":"01115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.448291,33.987946],[-90.453768,33.812683],[-90.453768,33.330713],[-90.716661,33.270466],[-90.765953,33.527883],[-90.656414,33.987946],[-90.448291,33.987946]]]},"id":"28133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.643651,33.982469],[-82.566974,33.955084],[-82.216449,33.686714],[-82.424573,33.648375],[-82.479343,33.637421],[-82.643651,33.982469]]]},"id":"13181"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.008326,33.960561],[-81.652325,33.812683],[-82.013803,33.53336],[-82.030233,33.544313],[-82.117864,33.599083],[-82.046664,33.955084],[-82.008326,33.960561]]]},"id":"45037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.275779,33.955084],[-84.02384,33.752437],[-84.182671,33.648375],[-84.226487,33.637421],[-84.281256,33.648375],[-84.352456,33.648375],[-84.275779,33.955084],[-84.275779,33.955084]]]},"id":"13089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.738122,33.966038],[-85.529998,33.94413],[-85.798368,33.555267],[-86.143416,33.681237],[-86.066738,33.840068],[-85.738122,33.966038]]]},"id":"01015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.530915,33.960561],[-83.273499,33.845545],[-83.278976,33.763391],[-83.28993,33.736006],[-83.404945,33.697668],[-83.50353,33.81816],[-83.645931,33.905791],[-83.536392,33.966038],[-83.530915,33.960561]]]},"id":"13219"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.398552,33.966038],[-85.387598,33.900315],[-85.338305,33.653852],[-85.305444,33.484067],[-85.645014,33.495021],[-85.853138,33.500498],[-85.798368,33.555267],[-85.529998,33.94413],[-85.398552,33.966038]]]},"id":"01029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.158459,33.938653],[-94.736735,33.703145],[-94.747689,33.330713],[-94.807935,33.363574],[-95.125598,33.390959],[-95.306337,33.380005],[-95.306337,33.380005],[-95.311814,33.878407],[-95.158459,33.938653]]]},"id":"48387"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.455131,33.955084],[-93.372977,33.955084],[-93.104607,33.779822],[-93.115561,33.451205],[-93.247007,33.440252],[-93.3675,33.445728],[-93.482516,33.47859],[-93.455131,33.955084]]]},"id":"05099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.587941,33.894838],[-96.379817,33.725052],[-96.385294,33.396436],[-96.834403,33.40739],[-96.943942,33.418344],[-96.943942,33.949607],[-96.932988,33.955084],[-96.587941,33.894838]]]},"id":"48181"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.943942,33.949607],[-96.943942,33.418344],[-97.382097,33.429298],[-97.486159,33.434775],[-97.486159,33.916745],[-96.943942,33.949607]]]},"id":"48097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.7837,33.94413],[-117.674161,33.87293],[-117.509853,33.505975],[-117.597484,33.385482],[-118.117793,33.741483],[-117.7837,33.94413]]]},"id":"06059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.332382,33.779822],[-79.976381,33.94413],[-79.877796,33.883884],[-80.10235,33.495021],[-80.222843,33.445728],[-80.49669,33.560744],[-80.535029,33.642898],[-80.332382,33.779822]]]},"id":"45027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.446457,33.927699],[-93.95901,33.752437],[-93.95901,33.752437],[-93.827563,33.610037],[-94.041164,33.54979],[-94.484796,33.637421],[-94.479319,33.938653],[-94.446457,33.927699]]]},"id":"05081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.311814,33.878407],[-95.306337,33.380005],[-95.651384,33.484067],[-95.859508,33.462159],[-95.843077,33.840068],[-95.760923,33.87293],[-95.311814,33.878407]]]},"id":"48277"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.799285,33.927699],[-83.645931,33.905791],[-83.50353,33.81816],[-83.509007,33.812683],[-83.678792,33.599083],[-83.914301,33.74696],[-83.980024,33.785299],[-83.799285,33.927699]]]},"id":"13297"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.950806,33.922222],[-87.63862,33.916745],[-87.42502,33.60456],[-87.841267,33.522406],[-87.945329,33.522406],[-87.950806,33.922222]]]},"id":"01057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.310921,33.900315],[-85.048028,33.905791],[-85.037074,33.812683],[-85.338305,33.653852],[-85.387598,33.900315],[-85.310921,33.900315]]]},"id":"13143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.927981,33.900315],[-89.506257,33.867453],[-89.506257,33.719575],[-89.506257,33.67576],[-89.785581,33.67576],[-90.114197,33.67576],[-90.130628,33.67576],[-90.136105,33.719575],[-89.927981,33.900315]]]},"id":"28043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.83398,33.883884],[-79.324625,33.80173],[-79.319148,33.779822],[-79.319148,33.779822],[-79.675149,33.303328],[-80.053058,33.505975],[-80.10235,33.495021],[-79.877796,33.883884],[-79.83398,33.883884]]]},"id":"45089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.843077,33.840068],[-95.859508,33.462159],[-95.859508,33.40739],[-96.297663,33.35262],[-96.385294,33.396436],[-96.379817,33.725052],[-95.843077,33.840068]]]},"id":"48147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.044384,33.796253],[-81.011523,33.878407],[-80.62266,33.741483],[-80.535029,33.642898],[-80.49669,33.560744],[-81.044384,33.708622],[-81.044384,33.796253]]]},"id":"45017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.57017,33.878407],[-81.186785,33.653852],[-81.373001,33.489544],[-81.756386,33.199266],[-81.849494,33.248559],[-82.013803,33.53336],[-81.652325,33.812683],[-81.57017,33.878407]]]},"id":"45003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.685633,33.796253],[-86.576094,33.763391],[-86.515848,33.544313],[-87.025203,33.248559],[-87.063542,33.248559],[-87.266188,33.511452],[-86.954003,33.812683],[-86.685633,33.796253]]]},"id":"01073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.43367,33.834591],[-98.422716,33.834591],[-98.422716,33.467636],[-98.422716,33.396436],[-98.953979,33.396436],[-98.953979,33.834591],[-98.43367,33.834591]]]},"id":"48009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.994598,33.834591],[-99.989121,33.396436],[-100.197245,33.396436],[-100.514907,33.396436],[-100.520384,33.834591],[-100.049367,33.834591],[-99.994598,33.834591]]]},"id":"48269"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.868628,33.834591],[-99.474288,33.736006],[-99.474288,33.396436],[-99.518104,33.396436],[-99.989121,33.396436],[-99.994598,33.834591],[-99.868628,33.834591]]]},"id":"48275"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.90377,33.834591],[-100.520384,33.834591],[-100.514907,33.396436],[-100.816139,33.396436],[-101.040693,33.396436],[-101.040693,33.834591],[-100.90377,33.834591]]]},"id":"48125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.992318,33.834591],[-98.953979,33.834591],[-98.953979,33.396436],[-99.474288,33.396436],[-99.474288,33.736006],[-99.474288,33.834591],[-98.992318,33.834591]]]},"id":"48023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.561003,33.829114],[-101.040693,33.834591],[-101.040693,33.396436],[-101.111894,33.396436],[-101.555526,33.396436],[-101.561003,33.829114]]]},"id":"48107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.571957,33.829114],[-101.561003,33.829114],[-101.555526,33.396436],[-102.075835,33.390959],[-102.086789,33.823637],[-101.571957,33.829114]]]},"id":"48303"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.001438,33.823637],[-102.618052,33.823637],[-102.596144,33.390959],[-103.056207,33.390959],[-103.050731,33.571698],[-103.045254,33.823637],[-103.001438,33.823637]]]},"id":"48079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.618052,33.823637],[-102.086789,33.823637],[-102.075835,33.390959],[-102.366113,33.390959],[-102.596144,33.390959],[-102.618052,33.823637]]]},"id":"48219"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.891006,33.807207],[-92.584298,33.80173],[-92.567867,33.369051],[-92.737652,33.385482],[-92.978637,33.380005],[-93.115561,33.451205],[-93.104607,33.779822],[-92.891006,33.807207]]]},"id":"05103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.509007,33.812683],[-83.50353,33.81816],[-83.404945,33.697668],[-83.278976,33.484067],[-83.278976,33.484067],[-83.536392,33.434775],[-83.684269,33.527883],[-83.678792,33.599083],[-83.509007,33.812683]]]},"id":"13211"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.037074,33.812683],[-84.90015,33.779822],[-84.807042,33.571698],[-84.850858,33.511452],[-85.015166,33.423821],[-85.29449,33.429298],[-85.305444,33.484067],[-85.338305,33.653852],[-85.037074,33.812683]]]},"id":"13045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.887363,33.812683],[-88.717578,33.812683],[-88.514931,33.648375],[-88.673762,33.505975],[-89.018809,33.560744],[-89.03524,33.741483],[-88.887363,33.812683]]]},"id":"28025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.453768,33.812683],[-90.136105,33.719575],[-90.130628,33.67576],[-90.174444,33.330713],[-90.333275,33.303328],[-90.453768,33.330713],[-90.453768,33.812683]]]},"id":"28083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.724888,33.807207],[-84.577011,33.741483],[-84.807042,33.571698],[-84.90015,33.779822],[-84.724888,33.807207]]]},"id":"13097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.584298,33.80173],[-92.332358,33.796253],[-92.332358,33.708622],[-92.348789,33.297851],[-92.567867,33.369051],[-92.584298,33.80173]]]},"id":"05013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.664172,33.790776],[-91.56011,33.785299],[-91.456048,33.566221],[-91.456048,33.390959],[-91.992788,33.396436],[-91.976357,33.703145],[-91.976357,33.790776],[-91.664172,33.790776]]]},"id":"05043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.980024,33.785299],[-83.914301,33.74696],[-84.045747,33.527883],[-84.182671,33.648375],[-84.02384,33.752437],[-83.980024,33.785299]]]},"id":"13247"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.319148,33.779822],[-79.319148,33.779822],[-79.187701,33.703145],[-79.001485,33.571698],[-79.291763,33.111635],[-79.445118,33.215697],[-79.675149,33.303328],[-79.319148,33.779822]]]},"id":"45043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.497089,33.653852],[-109.04798,33.779822],[-109.04798,33.21022],[-109.04798,32.777542],[-109.04798,32.427018],[-109.113704,32.427018],[-109.497089,33.078773],[-109.497089,33.653852]]]},"id":"04011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.28993,33.736006],[-83.278976,33.763391],[-82.994175,33.692191],[-83.010606,33.467636],[-83.16396,33.35262],[-83.278976,33.484067],[-83.404945,33.697668],[-83.28993,33.736006]]]},"id":"13133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.246561,33.74696],[-88.273945,33.53336],[-88.306807,33.286897],[-88.668285,33.286897],[-88.673762,33.505975],[-88.514931,33.648375],[-88.246561,33.74696]]]},"id":"28087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.914301,33.74696],[-83.678792,33.599083],[-83.684269,33.527883],[-83.865008,33.369051],[-83.925255,33.451205],[-84.045747,33.527883],[-83.914301,33.74696]]]},"id":"13217"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.117394,33.741483],[-89.03524,33.741483],[-89.018809,33.560744],[-89.051671,33.560744],[-89.09001,33.53336],[-89.139302,33.53336],[-89.380287,33.462159],[-89.506257,33.67576],[-89.506257,33.719575],[-89.194071,33.736006],[-89.117394,33.741483]]]},"id":"28155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.950359,33.736006],[-82.681989,33.599083],[-82.851774,33.445728],[-83.010606,33.467636],[-83.010606,33.467636],[-82.994175,33.692191],[-82.950359,33.736006]]]},"id":"13265"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.736735,33.703145],[-94.484796,33.637421],[-94.041164,33.54979],[-94.041164,33.270466],[-94.194518,33.297851],[-94.654581,33.270466],[-94.747689,33.330713],[-94.736735,33.703145]]]},"id":"48037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.332358,33.708622],[-91.976357,33.703145],[-91.992788,33.396436],[-92.135188,33.160928],[-92.348789,33.297851],[-92.332358,33.708622]]]},"id":"05011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.044384,33.708622],[-80.49669,33.560744],[-80.222843,33.445728],[-80.359767,33.259513],[-80.502167,33.33619],[-80.792445,33.182835],[-80.797922,33.177358],[-81.10463,33.380005],[-81.225123,33.440252],[-81.373001,33.489544],[-81.186785,33.653852],[-81.044384,33.708622]]]},"id":"45075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.216449,33.686714],[-82.117864,33.599083],[-82.030233,33.544313],[-82.293127,33.35262],[-82.424573,33.648375],[-82.216449,33.686714]]]},"id":"13073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.198185,33.697668],[-86.143416,33.681237],[-85.798368,33.555267],[-85.853138,33.500498],[-85.875046,33.500498],[-86.176277,33.106158],[-86.488463,33.100681],[-86.378924,33.390959],[-86.198185,33.697668]]]},"id":"01121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.506257,33.67576],[-89.380287,33.462159],[-89.451488,33.286897],[-89.643181,33.286897],[-89.785581,33.67576],[-89.506257,33.67576]]]},"id":"28097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.114197,33.67576],[-89.785581,33.67576],[-89.643181,33.286897],[-89.747242,33.215697],[-90.174444,33.330713],[-90.130628,33.67576],[-90.114197,33.67576]]]},"id":"28015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.424573,33.648375],[-82.293127,33.35262],[-82.353373,33.314282],[-82.386235,33.314282],[-82.649128,33.610037],[-82.479343,33.637421],[-82.424573,33.648375]]]},"id":"13189"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.743552,33.500498],[-109.497089,33.653852],[-109.497089,33.078773],[-109.113704,32.427018],[-109.831183,32.427018],[-110.450077,32.427018],[-110.450077,32.514649],[-110.450077,33.193789],[-110.000968,33.577175],[-109.891429,33.566221],[-109.743552,33.500498]]]},"id":"04009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.352456,33.648375],[-84.281256,33.648375],[-84.352456,33.35262],[-84.368887,33.35262],[-84.385318,33.35262],[-84.451041,33.54979],[-84.456518,33.54979],[-84.352456,33.648375]]]},"id":"13063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.226487,33.637421],[-84.182671,33.648375],[-84.045747,33.527883],[-83.925255,33.451205],[-84.100517,33.297851],[-84.352456,33.35262],[-84.281256,33.648375],[-84.226487,33.637421]]]},"id":"13151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.827563,33.610037],[-93.723501,33.484067],[-93.805655,33.018527],[-93.816609,33.018527],[-94.041164,33.018527],[-94.041164,33.270466],[-94.041164,33.54979],[-93.827563,33.610037]]]},"id":"05091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.649128,33.610037],[-82.386235,33.314282],[-82.43005,33.275943],[-82.687466,33.270466],[-82.75319,33.254036],[-82.851774,33.445728],[-82.681989,33.599083],[-82.649128,33.610037]]]},"id":"13301"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.841267,33.522406],[-87.42502,33.60456],[-87.266188,33.511452],[-87.063542,33.248559],[-87.419543,33.002096],[-87.644097,33.007573],[-87.715298,33.007573],[-87.83579,33.155451],[-87.841267,33.522406]]]},"id":"01125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.050731,33.571698],[-103.056207,33.390959],[-103.067161,32.958281],[-103.067161,32.520126],[-103.061684,32.087447],[-103.324578,31.999816],[-103.71344,31.999816],[-103.724394,31.999816],[-103.812025,32.963758],[-103.510794,33.571698],[-103.050731,33.571698]]]},"id":"35025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.051671,33.560744],[-89.018809,33.560744],[-88.673762,33.505975],[-88.668285,33.286897],[-88.810686,33.286897],[-89.09001,33.286897],[-89.09001,33.53336],[-89.051671,33.560744]]]},"id":"28105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.390325,33.560744],[-91.231493,33.560744],[-91.215062,33.527883],[-91.16577,33.01305],[-91.16577,33.002096],[-91.264355,33.007573],[-91.30817,33.007573],[-91.43414,33.007573],[-91.461525,33.007573],[-91.456048,33.390959],[-91.456048,33.566221],[-91.390325,33.560744]]]},"id":"05017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.451041,33.54979],[-84.385318,33.35262],[-84.494857,33.259513],[-84.609872,33.500498],[-84.456518,33.54979],[-84.451041,33.54979]]]},"id":"13113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.515848,33.544313],[-86.378924,33.390959],[-86.488463,33.100681],[-86.515848,33.018527],[-86.882803,33.051389],[-87.025203,33.248559],[-86.515848,33.544313]]]},"id":"01117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.030233,33.544313],[-82.013803,33.53336],[-81.849494,33.248559],[-82.189065,33.292374],[-82.265742,33.264989],[-82.353373,33.314282],[-82.293127,33.35262],[-82.030233,33.544313]]]},"id":"13245"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.273945,33.53336],[-87.945329,33.522406],[-87.841267,33.522406],[-87.83579,33.155451],[-88.169884,32.996619],[-88.339669,32.991142],[-88.306807,33.286897],[-88.273945,33.53336]]]},"id":"01107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.139302,33.53336],[-89.09001,33.53336],[-89.09001,33.286897],[-89.320041,33.106158],[-89.396718,33.286897],[-89.451488,33.286897],[-89.380287,33.462159],[-89.139302,33.53336]]]},"id":"28019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.001462,33.527883],[-90.765953,33.527883],[-90.716661,33.270466],[-90.70023,33.095204],[-90.913831,33.095204],[-90.913831,33.007573],[-91.16577,33.01305],[-91.215062,33.527883],[-91.001462,33.527883]]]},"id":"28151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.684269,33.527883],[-83.536392,33.434775],[-83.547346,33.171881],[-83.815716,33.133543],[-83.821193,33.182835],[-83.865008,33.369051],[-83.684269,33.527883]]]},"id":"13159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.681073,33.511452],[-84.609872,33.500498],[-84.494857,33.259513],[-84.500334,33.221174],[-84.861812,33.193789],[-84.938489,33.226651],[-85.015166,33.423821],[-84.850858,33.511452],[-84.681073,33.511452]]]},"id":"13077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.053058,33.505975],[-79.675149,33.303328],[-79.445118,33.215697],[-79.49441,33.188312],[-79.927088,32.821357],[-80.151643,33.024004],[-80.359767,33.259513],[-80.222843,33.445728],[-80.10235,33.495021],[-80.053058,33.505975]]]},"id":"45015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-117.476991,33.505975],[-116.085849,33.423821],[-116.107756,32.61871],[-117.126467,32.536556],[-117.597484,33.385482],[-117.509853,33.505975],[-117.476991,33.505975]]]},"id":"06073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.645014,33.495021],[-85.305444,33.484067],[-85.29449,33.429298],[-85.234244,33.128066],[-85.234244,33.106158],[-85.404029,33.106158],[-85.595722,33.106158],[-85.655968,33.106158],[-85.645014,33.495021]]]},"id":"01111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.875046,33.500498],[-85.853138,33.500498],[-85.645014,33.495021],[-85.655968,33.106158],[-86.006492,33.089727],[-86.176277,33.106158],[-85.875046,33.500498]]]},"id":"01027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.651384,33.484067],[-95.306337,33.380005],[-95.306337,33.380005],[-95.306337,33.374528],[-95.492553,33.35262],[-95.859508,33.221174],[-95.859508,33.40739],[-95.859508,33.462159],[-95.651384,33.484067]]]},"id":"48119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.373001,33.489544],[-81.225123,33.440252],[-81.192262,33.117112],[-81.613986,33.095204],[-81.756386,33.199266],[-81.373001,33.489544]]]},"id":"45011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.278976,33.484067],[-83.278976,33.484067],[-83.16396,33.35262],[-83.273499,33.188312],[-83.426853,33.182835],[-83.547346,33.171881],[-83.536392,33.434775],[-83.278976,33.484067]]]},"id":"13237"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.723501,33.484067],[-93.482516,33.47859],[-93.3675,33.445728],[-93.487993,33.018527],[-93.49347,33.018527],[-93.520854,33.018527],[-93.805655,33.018527],[-93.723501,33.484067]]]},"id":"05073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.375233,33.47859],[-106.347849,33.390959],[-106.342372,33.051389],[-107.300836,32.777542],[-107.300836,32.607757],[-107.607545,32.607757],[-108.001885,33.199266],[-107.711607,33.47859],[-106.375233,33.47859]]]},"id":"35051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.010606,33.467636],[-82.851774,33.445728],[-82.75319,33.254036],[-82.747713,33.237605],[-83.054421,33.078773],[-83.273499,33.188312],[-83.16396,33.35262],[-83.010606,33.467636],[-83.010606,33.467636]]]},"id":"13141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.422716,33.467636],[-97.979084,33.467636],[-97.918837,33.434775],[-97.924314,33.002096],[-98.055761,33.002096],[-98.055761,33.002096],[-98.428193,33.007573],[-98.422716,33.396436],[-98.422716,33.467636]]]},"id":"48237"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-111.578327,33.467636],[-111.041587,33.467636],[-110.778693,32.985665],[-110.450077,33.193789],[-110.450077,32.514649],[-110.696539,32.514649],[-112.202698,32.509172],[-112.202698,33.308805],[-111.583804,33.204743],[-111.578327,33.467636]]]},"id":"04021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-113.993657,33.462159],[-113.336425,33.380005],[-113.336425,32.503695],[-113.336425,32.038155],[-114.815198,32.492741],[-114.72209,32.717295],[-114.513967,33.029481],[-113.993657,33.462159]]]},"id":"04027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.247007,33.440252],[-93.115561,33.451205],[-92.978637,33.380005],[-92.989591,33.018527],[-93.236053,33.018527],[-93.487993,33.018527],[-93.3675,33.445728],[-93.247007,33.440252]]]},"id":"05027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.925255,33.451205],[-83.865008,33.369051],[-83.821193,33.182835],[-84.001932,33.204743],[-84.040271,33.204743],[-84.122425,33.204743],[-84.100517,33.297851],[-83.925255,33.451205]]]},"id":"13035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.10463,33.380005],[-80.797922,33.177358],[-81.082723,33.024004],[-81.192262,33.117112],[-81.225123,33.440252],[-81.10463,33.380005]]]},"id":"45009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.50259,33.434775],[-97.486159,33.434775],[-97.382097,33.429298],[-97.398528,32.991142],[-97.535452,32.996619],[-97.546405,32.996619],[-97.924314,33.002096],[-97.918837,33.434775],[-97.50259,33.434775]]]},"id":"48497"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-114.733044,33.434775],[-114.628982,33.434775],[-114.513967,33.029481],[-114.72209,32.717295],[-116.107756,32.61871],[-116.085849,33.423821],[-114.733044,33.434775]]]},"id":"06025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.382097,33.429298],[-96.943942,33.418344],[-96.834403,33.40739],[-96.834403,33.40739],[-96.845357,32.985665],[-96.856311,32.985665],[-97.031573,32.985665],[-97.398528,32.991142],[-97.382097,33.429298]]]},"id":"48121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.015166,33.423821],[-84.938489,33.226651],[-84.938489,33.226651],[-85.234244,33.128066],[-85.29449,33.429298],[-85.015166,33.423821]]]},"id":"13149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.859508,33.40739],[-95.859508,33.221174],[-95.864985,32.980189],[-95.936185,32.837788],[-96.062155,32.837788],[-96.078585,32.837788],[-96.297663,32.843265],[-96.297663,32.980189],[-96.297663,33.35262],[-95.859508,33.40739]]]},"id":"48231"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.834403,33.40739],[-96.834403,33.40739],[-96.385294,33.396436],[-96.297663,33.35262],[-96.297663,32.980189],[-96.440064,32.980189],[-96.516741,32.980189],[-96.845357,32.985665],[-96.834403,33.40739]]]},"id":"48085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.816139,33.396436],[-100.514907,33.396436],[-100.520384,32.963758],[-100.657308,32.963758],[-101.040693,32.969235],[-101.040693,33.396436],[-100.816139,33.396436]]]},"id":"48263"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.518104,33.396436],[-99.474288,33.396436],[-99.468812,32.958281],[-99.611212,32.958281],[-99.989121,32.958281],[-99.989121,33.396436],[-99.518104,33.396436]]]},"id":"48207"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.474288,33.396436],[-98.953979,33.396436],[-98.948502,32.958281],[-99.09638,32.958281],[-99.233303,32.958281],[-99.468812,32.958281],[-99.474288,33.396436]]]},"id":"48447"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.992788,33.396436],[-91.456048,33.390959],[-91.461525,33.007573],[-92.069465,33.007573],[-92.135188,33.160928],[-91.992788,33.396436]]]},"id":"05003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.197245,33.396436],[-99.989121,33.396436],[-99.989121,32.958281],[-100.109614,32.958281],[-100.142475,32.958281],[-100.520384,32.963758],[-100.514907,33.396436],[-100.197245,33.396436]]]},"id":"48433"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.807935,33.363574],[-94.818889,32.980189],[-95.125598,33.034958],[-95.125598,33.390959],[-94.807935,33.363574]]]},"id":"48449"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.953979,33.396436],[-98.422716,33.396436],[-98.428193,33.007573],[-98.57607,32.952804],[-98.762286,32.958281],[-98.948502,32.958281],[-98.953979,33.396436]]]},"id":"48503"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.111894,33.396436],[-101.040693,33.396436],[-101.040693,32.969235],[-101.17214,32.963758],[-101.555526,32.963758],[-101.555526,33.396436],[-101.111894,33.396436]]]},"id":"48169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.555526,33.396436],[-101.555526,32.963758],[-101.692449,32.963758],[-102.075835,32.958281],[-102.075835,33.390959],[-101.555526,33.396436]]]},"id":"48305"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.728954,33.390959],[-105.318184,33.133543],[-105.356522,32.520126],[-104.852644,32.520126],[-104.847167,31.999816],[-104.918367,31.999816],[-105.997324,31.999816],[-106.375233,31.999816],[-106.342372,33.051389],[-106.347849,33.390959],[-105.728954,33.390959]]]},"id":"35035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.366113,33.390959],[-102.075835,33.390959],[-102.075835,32.958281],[-102.207282,32.958281],[-102.596144,32.958281],[-102.596144,33.390959],[-102.366113,33.390959]]]},"id":"48445"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.306337,33.380005],[-95.125598,33.390959],[-95.125598,33.034958],[-95.152983,33.01305],[-95.306337,32.963758],[-95.306337,33.374528],[-95.306337,33.380005]]]},"id":"48159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.056207,33.390959],[-102.596144,33.390959],[-102.596144,32.958281],[-103.067161,32.958281],[-103.056207,33.390959]]]},"id":"48501"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.737652,33.385482],[-92.567867,33.369051],[-92.348789,33.297851],[-92.135188,33.160928],[-92.069465,33.007573],[-92.710267,33.01305],[-92.726698,33.01305],[-92.989591,33.018527],[-92.978637,33.380005],[-92.737652,33.385482]]]},"id":"05139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.492553,33.35262],[-95.306337,33.374528],[-95.306337,32.963758],[-95.667815,32.958281],[-95.864985,32.980189],[-95.859508,33.221174],[-95.492553,33.35262]]]},"id":"48223"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.174444,33.330713],[-89.747242,33.215697],[-89.96632,32.881604],[-90.366137,33.01305],[-90.333275,33.303328],[-90.174444,33.330713]]]},"id":"28051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.807935,33.363574],[-94.747689,33.330713],[-94.654581,33.270466],[-94.654581,32.881604],[-94.703873,32.881604],[-94.720304,32.903511],[-94.818889,32.980189],[-94.807935,33.363574]]]},"id":"48343"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.368887,33.35262],[-84.352456,33.35262],[-84.100517,33.297851],[-84.122425,33.204743],[-84.248394,33.188312],[-84.494857,33.182835],[-84.500334,33.221174],[-84.494857,33.259513],[-84.385318,33.35262],[-84.368887,33.35262]]]},"id":"13255"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.502167,33.33619],[-80.359767,33.259513],[-80.151643,33.024004],[-80.403582,32.859696],[-80.792445,33.182835],[-80.502167,33.33619]]]},"id":"45035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.453768,33.330713],[-90.333275,33.303328],[-90.366137,33.01305],[-90.656414,32.919942],[-90.70023,33.095204],[-90.716661,33.270466],[-90.453768,33.330713]]]},"id":"28053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.687466,33.270466],[-82.43005,33.275943],[-82.660082,33.128066],[-82.747713,33.237605],[-82.75319,33.254036],[-82.687466,33.270466]]]},"id":"13125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.386235,33.314282],[-82.353373,33.314282],[-82.265742,33.264989],[-82.315034,32.837788],[-82.435527,32.761111],[-82.523158,32.821357],[-82.660082,33.128066],[-82.43005,33.275943],[-82.386235,33.314282]]]},"id":"13163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.194518,33.297851],[-94.041164,33.270466],[-94.041164,33.018527],[-94.041164,32.881604],[-94.249287,32.881604],[-94.654581,32.881604],[-94.654581,33.270466],[-94.194518,33.297851]]]},"id":"48067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.189065,33.292374],[-81.849494,33.248559],[-81.756386,33.199266],[-81.613986,33.095204],[-81.542786,33.045912],[-81.76734,32.908988],[-81.860448,32.952804],[-82.145249,32.810403],[-82.315034,32.837788],[-82.265742,33.264989],[-82.189065,33.292374]]]},"id":"13033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.668285,33.286897],[-88.306807,33.286897],[-88.339669,32.991142],[-88.345146,32.930896],[-88.810686,32.925419],[-88.810686,33.286897],[-88.668285,33.286897]]]},"id":"28103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.09001,33.286897],[-88.810686,33.286897],[-88.810686,32.925419],[-88.914747,32.925419],[-89.155733,32.930896],[-89.320041,32.930896],[-89.320041,33.106158],[-89.09001,33.286897]]]},"id":"28159"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.396718,33.286897],[-89.320041,33.106158],[-89.320041,32.930896],[-89.473395,32.930896],[-89.730812,32.887081],[-89.96632,32.881604],[-89.747242,33.215697],[-89.643181,33.286897],[-89.451488,33.286897],[-89.396718,33.286897]]]},"id":"28007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.063542,33.248559],[-87.025203,33.248559],[-86.882803,33.051389],[-87.019726,32.837788],[-87.326435,32.876127],[-87.419543,32.876127],[-87.419543,33.002096],[-87.063542,33.248559]]]},"id":"01007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.747713,33.237605],[-82.660082,33.128066],[-82.523158,32.821357],[-82.944882,32.761111],[-83.076329,32.947327],[-83.054421,33.078773],[-82.747713,33.237605]]]},"id":"13303"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.861812,33.193789],[-84.500334,33.221174],[-84.494857,33.182835],[-84.527718,32.969235],[-84.50581,32.881604],[-84.70298,32.843265],[-84.861812,32.87065],[-84.861812,32.87065],[-84.861812,33.193789]]]},"id":"13199"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.938489,33.226651],[-84.938489,33.226651],[-84.861812,33.193789],[-84.861812,32.87065],[-85.184951,32.87065],[-85.234244,33.106158],[-85.234244,33.128066],[-84.938489,33.226651]]]},"id":"13285"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-79.49441,33.188312],[-79.445118,33.215697],[-79.291763,33.111635],[-80.250228,32.531079],[-80.403582,32.859696],[-80.151643,33.024004],[-79.927088,32.821357],[-79.49441,33.188312]]]},"id":"45019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-108.182624,33.199266],[-108.001885,33.199266],[-107.607545,32.607757],[-108.231916,32.514649],[-108.215485,31.862893],[-108.522194,31.862893],[-108.538625,32.514649],[-109.04798,32.777542],[-109.04798,33.21022],[-108.182624,33.199266]]]},"id":"35017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.494857,33.182835],[-84.248394,33.188312],[-84.270302,32.991142],[-84.36341,32.991142],[-84.527718,32.969235],[-84.494857,33.182835]]]},"id":"13231"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.040271,33.204743],[-84.122425,32.930896],[-84.270302,32.991142],[-84.248394,33.188312],[-84.122425,33.204743],[-84.040271,33.204743]]]},"id":"13171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.001932,33.204743],[-83.821193,33.182835],[-83.815716,33.133543],[-83.711654,32.952804],[-83.722608,32.952804],[-83.892393,32.848742],[-84.122425,32.848742],[-84.122425,32.930896],[-84.040271,33.204743],[-84.001932,33.204743]]]},"id":"13207"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.273499,33.188312],[-83.054421,33.078773],[-83.076329,32.947327],[-83.355653,32.925419],[-83.426853,33.182835],[-83.273499,33.188312]]]},"id":"13009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.426853,33.182835],[-83.355653,32.925419],[-83.404945,32.898034],[-83.514484,32.843265],[-83.711654,32.952804],[-83.815716,33.133543],[-83.547346,33.171881],[-83.426853,33.182835]]]},"id":"13169"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.792445,33.182835],[-80.403582,32.859696],[-80.250228,32.531079],[-80.474782,32.487264],[-80.825307,32.706342],[-81.055338,33.002096],[-81.082723,33.024004],[-80.797922,33.177358],[-80.792445,33.182835]]]},"id":"45029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.613986,33.095204],[-81.192262,33.117112],[-81.082723,33.024004],[-81.411339,32.74468],[-81.542786,33.045912],[-81.613986,33.095204]]]},"id":"45005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.83579,33.155451],[-87.715298,33.007573],[-87.813882,32.525602],[-87.852221,32.531079],[-88.169884,32.996619],[-87.83579,33.155451]]]},"id":"01063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.404029,33.106158],[-85.234244,33.106158],[-85.184951,32.87065],[-85.130182,32.74468],[-85.184951,32.74468],[-85.595722,32.728249],[-85.595722,33.106158],[-85.404029,33.106158]]]},"id":"01017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.655968,33.106158],[-85.595722,33.106158],[-85.595722,32.728249],[-85.694307,32.596803],[-85.885999,32.492741],[-86.006492,32.755634],[-86.006492,33.089727],[-85.655968,33.106158]]]},"id":"01123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.176277,33.106158],[-86.006492,33.089727],[-86.006492,32.755634],[-86.378924,32.755634],[-86.515848,33.018527],[-86.488463,33.100681],[-86.176277,33.106158]]]},"id":"01037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.913831,33.095204],[-90.70023,33.095204],[-90.656414,32.919942],[-90.722138,32.662526],[-90.913831,33.007573],[-90.913831,33.095204]]]},"id":"28125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.125598,33.034958],[-94.818889,32.980189],[-94.720304,32.903511],[-94.780551,32.903511],[-95.152983,32.903511],[-95.152983,33.01305],[-95.125598,33.034958]]]},"id":"48063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.515848,33.018527],[-86.378924,32.755634],[-86.411786,32.706342],[-86.915664,32.662526],[-87.019726,32.728249],[-87.019726,32.837788],[-86.882803,33.051389],[-86.515848,33.018527]]]},"id":"01021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-106.342372,33.051389],[-106.375233,31.999816],[-106.528588,31.786216],[-107.295359,31.786216],[-107.300836,32.607757],[-107.300836,32.777542],[-106.342372,33.051389]]]},"id":"35013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.542786,33.045912],[-81.411339,32.74468],[-81.389431,32.596803],[-81.548263,32.487264],[-81.827587,32.651572],[-81.838541,32.651572],[-81.76734,32.908988],[-81.542786,33.045912]]]},"id":"13251"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.055338,33.002096],[-80.825307,32.706342],[-80.869122,32.662526],[-81.142969,32.657049],[-81.279893,32.558464],[-81.389431,32.596803],[-81.411339,32.74468],[-81.082723,33.024004],[-81.055338,33.002096]]]},"id":"45049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.366137,33.01305],[-89.96632,32.881604],[-90.448291,32.574895],[-90.486629,32.542033],[-90.552353,32.509172],[-90.722138,32.61871],[-90.722138,32.662526],[-90.656414,32.919942],[-90.366137,33.01305]]]},"id":"28163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.805655,33.018527],[-93.520854,33.018527],[-93.372977,32.410587],[-93.427746,32.235325],[-93.471562,32.235325],[-93.816609,33.018527],[-93.805655,33.018527]]]},"id":"22015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.816609,33.018527],[-93.471562,32.235325],[-93.613962,32.235325],[-93.750886,32.339387],[-94.041164,32.196986],[-94.041164,32.394156],[-94.041164,32.695388],[-94.041164,32.881604],[-94.041164,33.018527],[-93.816609,33.018527]]]},"id":"22017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.49347,33.018527],[-93.487993,33.018527],[-93.236053,33.018527],[-93.181284,32.585849],[-93.372977,32.410587],[-93.520854,33.018527],[-93.49347,33.018527]]]},"id":"22119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.236053,33.018527],[-92.989591,33.018527],[-92.726698,33.01305],[-92.726698,32.761111],[-92.880052,32.585849],[-92.912914,32.585849],[-93.181284,32.585849],[-93.236053,33.018527]]]},"id":"22027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.710267,33.01305],[-92.069465,33.007573],[-92.063988,32.722772],[-92.414512,32.580372],[-92.726698,32.761111],[-92.726698,33.01305],[-92.710267,33.01305]]]},"id":"22111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.152983,33.01305],[-95.152983,32.903511],[-95.152983,32.569418],[-95.574707,32.67348],[-95.596615,32.684434],[-95.634953,32.722772],[-95.667815,32.958281],[-95.306337,32.963758],[-95.152983,33.01305]]]},"id":"48499"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.913831,33.007573],[-90.722138,32.662526],[-90.722138,32.61871],[-91.045277,32.574895],[-91.16577,33.002096],[-91.16577,33.01305],[-90.913831,33.007573]]]},"id":"28055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.076329,32.947327],[-82.944882,32.761111],[-82.955836,32.706342],[-83.224206,32.585849],[-83.393992,32.876127],[-83.404945,32.898034],[-83.355653,32.925419],[-83.076329,32.947327]]]},"id":"13319"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.069465,33.007573],[-91.461525,33.007573],[-91.43414,33.007573],[-91.636787,32.668003],[-91.910634,32.503695],[-91.998265,32.706342],[-92.063988,32.722772],[-92.069465,33.007573]]]},"id":"22067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.428193,33.007573],[-98.055761,33.002096],[-98.066715,32.558464],[-98.066715,32.509172],[-98.477485,32.514649],[-98.57607,32.514649],[-98.57607,32.952804],[-98.428193,33.007573]]]},"id":"48363"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.644097,33.007573],[-87.419543,33.002096],[-87.419543,32.876127],[-87.523605,32.481787],[-87.813882,32.525602],[-87.715298,33.007573],[-87.644097,33.007573]]]},"id":"01065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.30817,33.007573],[-91.264355,33.007573],[-91.445094,32.580372],[-91.598448,32.668003],[-91.636787,32.668003],[-91.43414,33.007573],[-91.30817,33.007573]]]},"id":"22123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.16577,33.002096],[-91.045277,32.574895],[-91.067185,32.563941],[-91.368417,32.536556],[-91.456048,32.536556],[-91.445094,32.580372],[-91.264355,33.007573],[-91.16577,33.002096]]]},"id":"22035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.055761,33.002096],[-97.924314,33.002096],[-97.546405,32.996619],[-97.551882,32.552987],[-97.617606,32.552987],[-98.066715,32.558464],[-98.055761,33.002096],[-98.055761,33.002096]]]},"id":"48367"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.36341,32.991142],[-84.270302,32.991142],[-84.122425,32.930896],[-84.122425,32.848742],[-84.204579,32.689911],[-84.286733,32.750157],[-84.50581,32.881604],[-84.527718,32.969235],[-84.36341,32.991142]]]},"id":"13293"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.339669,32.991142],[-88.169884,32.996619],[-87.852221,32.531079],[-87.928898,32.312002],[-87.994621,32.312002],[-88.421823,32.306525],[-88.388961,32.580372],[-88.345146,32.930896],[-88.339669,32.991142]]]},"id":"01119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.535452,32.996619],[-97.398528,32.991142],[-97.031573,32.985665],[-97.03705,32.54751],[-97.086342,32.54751],[-97.551882,32.552987],[-97.546405,32.996619],[-97.535452,32.996619]]]},"id":"48439"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.856311,32.985665],[-96.845357,32.985665],[-96.516741,32.980189],[-96.516741,32.81588],[-96.527695,32.54751],[-97.03705,32.54751],[-97.031573,32.985665],[-96.856311,32.985665]]]},"id":"48113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.440064,32.980189],[-96.297663,32.980189],[-96.297663,32.843265],[-96.516741,32.81588],[-96.516741,32.980189],[-96.440064,32.980189]]]},"id":"48397"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.864985,32.980189],[-95.667815,32.958281],[-95.634953,32.722772],[-95.936185,32.837788],[-95.864985,32.980189]]]},"id":"48379"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.040693,32.969235],[-100.657308,32.963758],[-100.662785,32.525602],[-101.17214,32.525602],[-101.17214,32.963758],[-101.040693,32.969235]]]},"id":"48415"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.102303,32.963758],[-103.812025,32.963758],[-103.724394,31.999816],[-103.98181,31.999816],[-104.025626,31.999816],[-104.847167,31.999816],[-104.852644,32.520126],[-104.84169,32.963758],[-104.102303,32.963758]]]},"id":"35015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.17214,32.963758],[-101.17214,32.525602],[-101.17214,32.525602],[-101.686972,32.525602],[-101.692449,32.963758],[-101.555526,32.963758],[-101.17214,32.963758]]]},"id":"48033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.520384,32.963758],[-100.142475,32.958281],[-100.147952,32.520126],[-100.662785,32.525602],[-100.657308,32.963758],[-100.520384,32.963758]]]},"id":"48151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.692449,32.963758],[-101.686972,32.525602],[-102.201805,32.525602],[-102.207282,32.958281],[-102.075835,32.958281],[-101.692449,32.963758]]]},"id":"48115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.109614,32.958281],[-99.989121,32.958281],[-99.611212,32.958281],[-99.611212,32.514649],[-99.627643,32.514649],[-100.136998,32.520126],[-100.147952,32.520126],[-100.142475,32.958281],[-100.109614,32.958281]]]},"id":"48253"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.067161,32.958281],[-102.596144,32.958281],[-102.207282,32.958281],[-102.201805,32.525602],[-102.212759,32.525602],[-102.995961,32.525602],[-103.067161,32.520126],[-103.067161,32.958281]]]},"id":"48165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.762286,32.958281],[-98.57607,32.952804],[-98.57607,32.514649],[-98.740378,32.514649],[-99.09638,32.514649],[-99.09638,32.958281],[-98.948502,32.958281],[-98.762286,32.958281]]]},"id":"48429"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.233303,32.958281],[-99.09638,32.958281],[-99.09638,32.514649],[-99.11281,32.514649],[-99.194965,32.514649],[-99.611212,32.514649],[-99.611212,32.958281],[-99.468812,32.958281],[-99.233303,32.958281]]]},"id":"48417"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.860448,32.952804],[-81.76734,32.908988],[-81.838541,32.651572],[-82.002849,32.607757],[-82.145249,32.810403],[-81.860448,32.952804]]]},"id":"13165"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.722608,32.952804],[-83.711654,32.952804],[-83.514484,32.843265],[-83.596638,32.662526],[-83.7007,32.689911],[-83.892393,32.848742],[-83.722608,32.952804]]]},"id":"13021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.155733,32.930896],[-88.914747,32.925419],[-88.914747,32.574895],[-89.133825,32.574895],[-89.320041,32.574895],[-89.320041,32.930896],[-89.155733,32.930896]]]},"id":"28099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.473395,32.930896],[-89.320041,32.930896],[-89.320041,32.574895],[-89.320041,32.574895],[-89.730812,32.635141],[-89.730812,32.887081],[-89.473395,32.930896]]]},"id":"28079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.345146,32.930896],[-88.388961,32.580372],[-88.651854,32.574895],[-88.914747,32.574895],[-88.914747,32.925419],[-88.810686,32.925419],[-88.345146,32.930896]]]},"id":"28069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.780551,32.903511],[-94.720304,32.903511],[-94.703873,32.881604],[-94.703873,32.793973],[-94.703873,32.651572],[-94.988674,32.536556],[-95.152983,32.569418],[-95.152983,32.903511],[-94.780551,32.903511]]]},"id":"48459"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.393992,32.876127],[-83.224206,32.585849],[-83.498053,32.454402],[-83.596638,32.662526],[-83.514484,32.843265],[-83.404945,32.898034],[-83.393992,32.876127]]]},"id":"13289"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.96632,32.881604],[-89.730812,32.887081],[-89.730812,32.635141],[-89.785581,32.585849],[-90.03752,32.448925],[-90.064905,32.399633],[-90.448291,32.574895],[-89.96632,32.881604]]]},"id":"28089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.50581,32.881604],[-84.286733,32.750157],[-84.445564,32.563941],[-84.637257,32.536556],[-84.692026,32.520126],[-84.692026,32.585849],[-84.70298,32.843265],[-84.50581,32.881604]]]},"id":"13263"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.249287,32.881604],[-94.041164,32.881604],[-94.041164,32.695388],[-94.703873,32.793973],[-94.703873,32.881604],[-94.654581,32.881604],[-94.249287,32.881604]]]},"id":"48315"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.326435,32.876127],[-87.019726,32.837788],[-87.019726,32.728249],[-87.025203,32.717295],[-87.474312,32.306525],[-87.523605,32.481787],[-87.419543,32.876127],[-87.326435,32.876127]]]},"id":"01105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.861812,32.87065],[-84.70298,32.843265],[-84.692026,32.585849],[-85.02612,32.607757],[-85.080889,32.607757],[-85.130182,32.74468],[-85.184951,32.87065],[-84.861812,32.87065],[-84.861812,32.87065]]]},"id":"13145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.122425,32.848742],[-83.892393,32.848742],[-83.7007,32.689911],[-83.7007,32.689911],[-83.766424,32.695388],[-84.001932,32.531079],[-84.204579,32.689911],[-84.122425,32.848742]]]},"id":"13079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.297663,32.843265],[-96.078585,32.837788],[-96.078585,32.355817],[-96.215509,32.361294],[-96.451017,32.361294],[-96.527695,32.54751],[-96.516741,32.81588],[-96.297663,32.843265]]]},"id":"48257"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.315034,32.837788],[-82.145249,32.810403],[-82.002849,32.607757],[-82.030233,32.536556],[-82.23288,32.317479],[-82.408142,32.355817],[-82.550543,32.498218],[-82.649128,32.514649],[-82.435527,32.761111],[-82.315034,32.837788]]]},"id":"13107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.062155,32.837788],[-95.936185,32.837788],[-95.634953,32.722772],[-95.596615,32.684434],[-95.448737,32.355817],[-96.078585,32.355817],[-96.078585,32.837788],[-96.062155,32.837788]]]},"id":"48467"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.523158,32.821357],[-82.435527,32.761111],[-82.649128,32.514649],[-82.955836,32.706342],[-82.944882,32.761111],[-82.523158,32.821357]]]},"id":"13167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.703873,32.793973],[-94.041164,32.695388],[-94.041164,32.394156],[-94.462888,32.377725],[-94.490273,32.394156],[-94.577904,32.394156],[-94.703873,32.651572],[-94.703873,32.793973]]]},"id":"48203"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.04798,32.777542],[-108.538625,32.514649],[-108.522194,31.862893],[-108.215485,31.862893],[-108.210008,31.786216],[-108.210008,31.331629],[-109.04798,31.331629],[-109.04798,32.427018],[-109.04798,32.777542]]]},"id":"35023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.006492,32.755634],[-85.885999,32.492741],[-86.022923,32.421541],[-86.307724,32.416064],[-86.411786,32.410587],[-86.411786,32.706342],[-86.378924,32.755634],[-86.006492,32.755634]]]},"id":"01051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.726698,32.761111],[-92.414512,32.580372],[-92.414512,32.498218],[-92.578821,32.498218],[-92.77599,32.454402],[-92.880052,32.585849],[-92.726698,32.761111]]]},"id":"22061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.142969,32.657049],[-80.869122,32.662526],[-80.880076,32.08197],[-80.885553,32.032678],[-81.148446,32.224371],[-81.279893,32.558464],[-81.142969,32.657049]]]},"id":"45053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.286733,32.750157],[-84.204579,32.689911],[-84.001932,32.531079],[-84.051224,32.520126],[-84.253871,32.372248],[-84.36341,32.399633],[-84.390795,32.416064],[-84.445564,32.563941],[-84.286733,32.750157]]]},"id":"13269"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.184951,32.74468],[-85.130182,32.74468],[-85.080889,32.607757],[-84.998735,32.509172],[-85.020643,32.509172],[-85.431413,32.410587],[-85.694307,32.580372],[-85.694307,32.596803],[-85.595722,32.728249],[-85.184951,32.74468]]]},"id":"01081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.025203,32.717295],[-87.019726,32.728249],[-86.915664,32.662526],[-86.817079,32.339387],[-86.90471,32.049109],[-87.277142,32.147694],[-87.474312,32.262709],[-87.474312,32.306525],[-87.025203,32.717295]]]},"id":"01047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.998265,32.706342],[-91.910634,32.503695],[-92.036603,32.27914],[-92.16805,32.27914],[-92.31045,32.27914],[-92.414512,32.498218],[-92.414512,32.580372],[-92.063988,32.722772],[-91.998265,32.706342]]]},"id":"22073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.224206,32.585849],[-82.955836,32.706342],[-82.649128,32.514649],[-82.720328,32.312002],[-82.884636,32.196986],[-83.136575,32.421541],[-83.224206,32.585849]]]},"id":"13175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.411786,32.706342],[-86.411786,32.410587],[-86.499417,32.344863],[-86.817079,32.339387],[-86.915664,32.662526],[-86.411786,32.706342]]]},"id":"01001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.825307,32.706342],[-80.474782,32.487264],[-80.880076,32.08197],[-80.869122,32.662526],[-80.825307,32.706342]]]},"id":"45013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.766424,32.695388],[-83.7007,32.689911],[-83.848578,32.465356],[-84.018363,32.503695],[-84.007409,32.520126],[-84.001932,32.531079],[-83.766424,32.695388]]]},"id":"13225"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.7007,32.689911],[-83.7007,32.689911],[-83.596638,32.662526],[-83.498053,32.454402],[-83.498053,32.399633],[-83.613069,32.290094],[-83.848578,32.290094],[-83.848578,32.465356],[-83.7007,32.689911]]]},"id":"13153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.574707,32.67348],[-95.152983,32.569418],[-94.988674,32.536556],[-94.988674,32.366771],[-94.983197,32.13674],[-95.459691,32.13674],[-95.448737,32.355817],[-95.596615,32.684434],[-95.574707,32.67348]]]},"id":"48423"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.598448,32.668003],[-91.445094,32.580372],[-91.456048,32.536556],[-91.477956,32.40511],[-91.57654,32.40511],[-91.894203,32.153171],[-92.036603,32.27914],[-91.910634,32.503695],[-91.636787,32.668003],[-91.598448,32.668003]]]},"id":"22083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.703873,32.651572],[-94.577904,32.394156],[-94.988674,32.366771],[-94.988674,32.536556],[-94.703873,32.651572]]]},"id":"48183"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.827587,32.651572],[-81.548263,32.487264],[-81.433247,32.240802],[-81.783771,32.153171],[-81.969987,32.268186],[-82.030233,32.536556],[-82.002849,32.607757],[-81.838541,32.651572],[-81.827587,32.651572]]]},"id":"13031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.730812,32.635141],[-89.320041,32.574895],[-89.320041,32.224371],[-89.456965,32.224371],[-89.730812,32.224371],[-89.785581,32.585849],[-89.730812,32.635141]]]},"id":"28123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.045277,32.574895],[-90.722138,32.61871],[-90.552353,32.509172],[-90.727615,32.224371],[-91.028846,32.114832],[-91.028846,32.120309],[-91.050754,32.125786],[-91.121954,32.213417],[-91.067185,32.563941],[-91.045277,32.574895]]]},"id":"28149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.02612,32.607757],[-84.692026,32.585849],[-84.692026,32.520126],[-84.982304,32.372248],[-84.998735,32.509172],[-85.080889,32.607757],[-85.02612,32.607757]]]},"id":"13215"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-107.607545,32.607757],[-107.300836,32.607757],[-107.295359,31.786216],[-108.210008,31.786216],[-108.215485,31.862893],[-108.231916,32.514649],[-107.607545,32.607757]]]},"id":"35029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.694307,32.580372],[-85.431413,32.410587],[-85.431413,32.235325],[-85.918861,32.273663],[-86.022923,32.421541],[-85.885999,32.492741],[-85.694307,32.596803],[-85.694307,32.580372]]]},"id":"01087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.389431,32.596803],[-81.279893,32.558464],[-81.148446,32.224371],[-81.1594,32.229848],[-81.389431,32.098401],[-81.42777,32.235325],[-81.433247,32.240802],[-81.548263,32.487264],[-81.389431,32.596803]]]},"id":"13103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.03752,32.448925],[-89.785581,32.585849],[-89.730812,32.224371],[-89.730812,32.049109],[-90.190875,32.049109],[-90.229213,32.049109],[-90.064905,32.399633],[-90.03752,32.448925]]]},"id":"28121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.912914,32.585849],[-92.880052,32.585849],[-92.77599,32.454402],[-92.814329,32.147694],[-92.940299,32.147694],[-93.131992,32.147694],[-93.186761,32.147694],[-93.427746,32.235325],[-93.372977,32.410587],[-93.181284,32.585849],[-92.912914,32.585849]]]},"id":"22013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.224206,32.585849],[-83.136575,32.421541],[-83.344699,32.273663],[-83.498053,32.399633],[-83.498053,32.454402],[-83.224206,32.585849]]]},"id":"13023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.651854,32.574895],[-88.388961,32.580372],[-88.421823,32.306525],[-88.432777,32.229848],[-88.914747,32.224371],[-88.914747,32.574895],[-88.651854,32.574895]]]},"id":"28075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.133825,32.574895],[-88.914747,32.574895],[-88.914747,32.224371],[-89.018809,32.224371],[-89.320041,32.224371],[-89.320041,32.574895],[-89.320041,32.574895],[-89.133825,32.574895]]]},"id":"28101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.486629,32.542033],[-90.448291,32.574895],[-90.064905,32.399633],[-90.229213,32.049109],[-90.716661,32.049109],[-90.727615,32.224371],[-90.552353,32.509172],[-90.486629,32.542033]]]},"id":"28049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.368417,32.536556],[-91.067185,32.563941],[-91.121954,32.213417],[-91.494386,32.202463],[-91.477956,32.40511],[-91.456048,32.536556],[-91.368417,32.536556]]]},"id":"22065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.637257,32.536556],[-84.445564,32.563941],[-84.390795,32.416064],[-84.429133,32.164124],[-84.429133,32.13674],[-84.648211,32.235325],[-84.659165,32.235325],[-84.637257,32.536556]]]},"id":"13197"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.030233,32.536556],[-81.969987,32.268186],[-82.024756,32.27914],[-82.23288,32.317479],[-82.030233,32.536556]]]},"id":"13043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.066715,32.558464],[-97.617606,32.552987],[-97.617606,32.317479],[-97.946222,32.235325],[-98.066715,32.509172],[-98.066715,32.558464]]]},"id":"48221"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.551882,32.552987],[-97.086342,32.54751],[-97.086342,32.268186],[-97.113727,32.257232],[-97.475205,32.175078],[-97.617606,32.202463],[-97.617606,32.317479],[-97.617606,32.552987],[-97.551882,32.552987]]]},"id":"48251"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.086342,32.54751],[-97.03705,32.54751],[-96.527695,32.54751],[-96.451017,32.361294],[-96.385294,32.328433],[-96.89465,32.076493],[-97.086342,32.268186],[-97.086342,32.54751]]]},"id":"48139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.813882,32.525602],[-87.523605,32.481787],[-87.474312,32.306525],[-87.474312,32.262709],[-87.666005,31.988862],[-87.819359,31.988862],[-88.071299,31.988862],[-87.928898,32.312002],[-87.852221,32.531079],[-87.813882,32.525602]]]},"id":"01091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.637257,32.536556],[-84.659165,32.235325],[-84.922058,32.229848],[-84.982304,32.372248],[-84.692026,32.520126],[-84.637257,32.536556]]]},"id":"13053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.001932,32.531079],[-84.007409,32.520126],[-84.051224,32.520126],[-84.051224,32.520126],[-84.001932,32.531079]]]},"id":"13193"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.662785,32.525602],[-100.662785,32.087447],[-100.821616,32.087447],[-101.183094,32.087447],[-101.17214,32.525602],[-101.17214,32.525602],[-100.662785,32.525602]]]},"id":"48335"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.686972,32.525602],[-101.692449,32.087447],[-101.747219,32.087447],[-101.774603,32.087447],[-101.933435,32.087447],[-102.212759,32.087447],[-102.212759,32.525602],[-102.201805,32.525602],[-101.686972,32.525602]]]},"id":"48317"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.147952,32.520126],[-100.153429,32.08197],[-100.235583,32.08197],[-100.662785,32.087447],[-100.662785,32.525602],[-100.147952,32.520126]]]},"id":"48353"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.17214,32.525602],[-101.183094,32.087447],[-101.265248,32.087447],[-101.692449,32.087447],[-101.686972,32.525602],[-101.17214,32.525602]]]},"id":"48227"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.995961,32.525602],[-102.212759,32.525602],[-102.212759,32.087447],[-102.289436,32.087447],[-102.798791,32.087447],[-103.061684,32.087447],[-103.067161,32.520126],[-102.995961,32.525602]]]},"id":"48003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.136998,32.520126],[-99.627643,32.514649],[-99.63312,32.08197],[-99.715274,32.08197],[-100.054844,32.08197],[-100.153429,32.08197],[-100.147952,32.520126],[-100.136998,32.520126]]]},"id":"48441"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.018363,32.503695],[-83.848578,32.465356],[-83.848578,32.290094],[-84.029317,32.169601],[-84.182671,32.229848],[-84.253871,32.372248],[-84.051224,32.520126],[-84.018363,32.503695]]]},"id":"13193"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.051224,32.520126],[-84.007409,32.520126],[-84.018363,32.503695],[-84.051224,32.520126],[-84.051224,32.520126]]]},"id":"13269"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.740378,32.514649],[-98.57607,32.514649],[-98.477485,32.514649],[-98.548686,32.262709],[-98.926594,32.076493],[-99.118287,32.08197],[-99.11281,32.514649],[-99.09638,32.514649],[-98.740378,32.514649]]]},"id":"48133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.194965,32.514649],[-99.11281,32.514649],[-99.118287,32.08197],[-99.194965,32.08197],[-99.63312,32.08197],[-99.627643,32.514649],[-99.611212,32.514649],[-99.194965,32.514649]]]},"id":"48059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.696539,32.514649],[-110.450077,32.514649],[-110.450077,32.427018],[-110.450077,31.731446],[-110.789647,31.731446],[-111.364726,31.424737],[-113.336425,32.038155],[-113.336425,32.503695],[-112.202698,32.509172],[-110.696539,32.514649]]]},"id":"04019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.066715,32.509172],[-97.946222,32.235325],[-97.864068,32.087447],[-98.006468,32.016247],[-98.209115,31.917662],[-98.548686,32.262709],[-98.477485,32.514649],[-98.066715,32.509172]]]},"id":"48143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.550543,32.498218],[-82.408142,32.355817],[-82.654605,32.295571],[-82.720328,32.312002],[-82.649128,32.514649],[-82.550543,32.498218]]]},"id":"13283"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.020643,32.509172],[-84.998735,32.509172],[-84.982304,32.372248],[-84.922058,32.229848],[-85.053504,32.06554],[-85.354736,32.147694],[-85.409506,32.147694],[-85.431413,32.235325],[-85.431413,32.410587],[-85.020643,32.509172]]]},"id":"01113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.307724,32.416064],[-86.022923,32.421541],[-85.918861,32.273663],[-85.995538,32.049109],[-86.192708,31.966955],[-86.302247,31.988862],[-86.406309,32.049109],[-86.499417,32.344863],[-86.411786,32.410587],[-86.307724,32.416064]]]},"id":"01101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.578821,32.498218],[-92.414512,32.498218],[-92.31045,32.27914],[-92.31045,32.147694],[-92.814329,32.147694],[-92.77599,32.454402],[-92.578821,32.498218]]]},"id":"22049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.136575,32.421541],[-82.884636,32.196986],[-82.928452,32.13674],[-82.950359,32.120309],[-83.207776,31.901231],[-83.339222,32.103878],[-83.344699,32.273663],[-83.136575,32.421541]]]},"id":"13091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.36341,32.399633],[-84.253871,32.372248],[-84.182671,32.229848],[-84.429133,32.164124],[-84.390795,32.416064],[-84.36341,32.399633]]]},"id":"13249"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-109.831183,32.427018],[-109.113704,32.427018],[-109.04798,32.427018],[-109.04798,31.331629],[-110.461031,31.331629],[-110.450077,31.731446],[-110.450077,32.427018],[-109.831183,32.427018]]]},"id":"04003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.577904,32.394156],[-94.490273,32.394156],[-94.512181,31.972432],[-94.451934,31.846462],[-94.512181,31.846462],[-94.939382,31.846462],[-94.983197,32.13674],[-94.988674,32.366771],[-94.577904,32.394156]]]},"id":"48401"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.499417,32.344863],[-86.406309,32.049109],[-86.450124,31.966955],[-86.477509,31.966955],[-86.855418,31.961478],[-86.90471,32.049109],[-86.817079,32.339387],[-86.499417,32.344863]]]},"id":"01085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.57654,32.40511],[-91.477956,32.40511],[-91.494386,32.202463],[-91.57654,31.8848],[-91.647741,31.972432],[-91.888726,31.972432],[-91.894203,32.153171],[-91.57654,32.40511]]]},"id":"22041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.613069,32.290094],[-83.498053,32.399633],[-83.344699,32.273663],[-83.339222,32.103878],[-83.607592,32.120309],[-83.613069,32.290094]]]},"id":"13235"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.462888,32.377725],[-94.041164,32.394156],[-94.041164,32.196986],[-94.013779,31.977908],[-94.134272,31.977908],[-94.512181,31.972432],[-94.490273,32.394156],[-94.462888,32.377725]]]},"id":"48365"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.215509,32.361294],[-96.078585,32.355817],[-95.448737,32.355817],[-95.459691,32.13674],[-95.42683,32.08197],[-96.051201,32.005293],[-96.056678,32.01077],[-96.385294,32.328433],[-96.451017,32.361294],[-96.215509,32.361294]]]},"id":"48213"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.408142,32.355817],[-82.23288,32.317479],[-82.227403,31.912185],[-82.43005,31.966955],[-82.468389,31.966955],[-82.479343,31.972432],[-82.408142,32.355817]]]},"id":"13279"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.408142,32.355817],[-82.479343,31.972432],[-82.545066,31.961478],[-82.654605,32.295571],[-82.408142,32.355817]]]},"id":"13209"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.750886,32.339387],[-93.613962,32.235325],[-93.356546,31.934093],[-93.4387,31.846462],[-93.619439,31.846462],[-93.882332,31.846462],[-94.013779,31.977908],[-94.041164,32.196986],[-93.750886,32.339387]]]},"id":"22031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.385294,32.328433],[-96.056678,32.01077],[-96.494833,31.797169],[-96.719387,31.8136],[-96.89465,32.076493],[-96.385294,32.328433]]]},"id":"48349"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.23288,32.317479],[-82.024756,32.27914],[-81.761863,32.049109],[-81.82211,32.016247],[-81.969987,31.791692],[-82.046664,31.824554],[-82.227403,31.912185],[-82.23288,32.317479]]]},"id":"13267"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.946222,32.235325],[-97.617606,32.317479],[-97.617606,32.202463],[-97.62856,32.20794],[-97.864068,32.087447],[-97.946222,32.235325]]]},"id":"48425"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.994621,32.312002],[-87.928898,32.312002],[-88.071299,31.988862],[-88.087729,31.698584],[-88.186314,31.698584],[-88.465638,31.698584],[-88.471115,31.895754],[-88.432777,32.229848],[-88.421823,32.306525],[-87.994621,32.312002]]]},"id":"01023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.720328,32.312002],[-82.654605,32.295571],[-82.545066,31.961478],[-82.643651,31.917662],[-82.928452,32.13674],[-82.884636,32.196986],[-82.720328,32.312002]]]},"id":"13309"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.918861,32.273663],[-85.431413,32.235325],[-85.409506,32.147694],[-85.655968,31.879324],[-85.995538,32.049109],[-85.918861,32.273663]]]},"id":"01011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.848578,32.290094],[-83.613069,32.290094],[-83.607592,32.120309],[-83.607592,32.027201],[-83.963593,32.032678],[-84.029317,32.169601],[-83.848578,32.290094]]]},"id":"13093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.024756,32.27914],[-81.969987,32.268186],[-81.783771,32.153171],[-81.718048,32.087447],[-81.761863,32.049109],[-82.024756,32.27914]]]},"id":"13109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.16805,32.27914],[-92.036603,32.27914],[-91.894203,32.153171],[-91.888726,31.972432],[-92.003742,31.928616],[-92.184481,31.928616],[-92.31045,31.928616],[-92.31045,32.147694],[-92.31045,32.27914],[-92.16805,32.27914]]]},"id":"22021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.277142,32.147694],[-86.90471,32.049109],[-86.855418,31.961478],[-86.90471,31.830031],[-87.501697,31.830031],[-87.666005,31.988862],[-87.474312,32.262709],[-87.277142,32.147694]]]},"id":"01131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.113727,32.257232],[-97.086342,32.268186],[-96.89465,32.076493],[-96.719387,31.8136],[-96.932988,31.709538],[-97.080866,31.840985],[-97.278035,31.747877],[-97.475205,32.175078],[-97.113727,32.257232]]]},"id":"48217"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.548686,32.262709],[-98.209115,31.917662],[-98.461055,31.682154],[-98.669178,31.698584],[-98.926594,32.076493],[-98.548686,32.262709]]]},"id":"48093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.494386,32.202463],[-91.121954,32.213417],[-91.050754,32.125786],[-91.028846,32.120309],[-91.028846,32.114832],[-91.247924,31.86837],[-91.346509,31.753354],[-91.379371,31.731446],[-91.428663,31.753354],[-91.543679,31.753354],[-91.57654,31.8848],[-91.494386,32.202463]]]},"id":"22107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.42777,32.235325],[-81.389431,32.098401],[-81.153923,31.725969],[-81.197738,31.725969],[-81.707094,32.087447],[-81.718048,32.087447],[-81.783771,32.153171],[-81.433247,32.240802],[-81.42777,32.235325]]]},"id":"13029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.471562,32.235325],[-93.427746,32.235325],[-93.186761,32.147694],[-93.356546,31.934093],[-93.613962,32.235325],[-93.471562,32.235325]]]},"id":"22081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.1594,32.229848],[-81.148446,32.224371],[-80.885553,32.032678],[-81.153923,31.725969],[-81.389431,32.098401],[-81.1594,32.229848]]]},"id":"13051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.648211,32.235325],[-84.429133,32.13674],[-84.445564,31.966955],[-84.598918,31.917662],[-84.653688,31.917662],[-84.648211,32.235325]]]},"id":"13307"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.659165,32.235325],[-84.648211,32.235325],[-84.653688,31.917662],[-84.905627,31.923139],[-85.069935,31.994339],[-85.053504,32.06554],[-84.922058,32.229848],[-84.659165,32.235325]]]},"id":"13259"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.182671,32.229848],[-84.029317,32.169601],[-83.963593,32.032678],[-83.925255,31.912185],[-84.259348,31.917662],[-84.336025,31.873847],[-84.445564,31.966955],[-84.429133,32.13674],[-84.429133,32.164124],[-84.182671,32.229848]]]},"id":"13261"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.914747,32.224371],[-88.432777,32.229848],[-88.471115,31.895754],[-88.909271,31.824554],[-88.914747,32.224371]]]},"id":"28023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.727615,32.224371],[-90.716661,32.049109],[-90.738569,31.786216],[-91.247924,31.86837],[-91.028846,32.114832],[-90.727615,32.224371]]]},"id":"28021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.018809,32.224371],[-88.914747,32.224371],[-88.909271,31.824554],[-88.942132,31.824554],[-89.314564,31.802646],[-89.320041,32.224371],[-89.018809,32.224371]]]},"id":"28061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.456965,32.224371],[-89.320041,32.224371],[-89.314564,31.802646],[-89.402195,31.797169],[-89.654134,31.780739],[-89.730812,32.049109],[-89.730812,32.224371],[-89.456965,32.224371]]]},"id":"28129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.62856,32.20794],[-97.617606,32.202463],[-97.475205,32.175078],[-97.278035,31.747877],[-97.606652,31.589046],[-97.688806,31.709538],[-97.765483,31.6712],[-98.006468,32.016247],[-97.864068,32.087447],[-97.62856,32.20794]]]},"id":"48035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.950359,32.120309],[-82.928452,32.13674],[-82.643651,31.917662],[-82.835344,31.8136],[-82.994175,31.780739],[-83.180391,31.846462],[-83.207776,31.901231],[-82.950359,32.120309]]]},"id":"13271"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.131992,32.147694],[-92.940299,32.147694],[-92.97316,31.709538],[-92.721221,31.517845],[-92.984114,31.34806],[-93.236053,31.364491],[-93.4387,31.846462],[-93.356546,31.934093],[-93.186761,32.147694],[-93.131992,32.147694]]]},"id":"22069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.354736,32.147694],[-85.053504,32.06554],[-85.069935,31.994339],[-85.141136,31.780739],[-85.124705,31.764308],[-85.414983,31.621907],[-85.694307,31.61643],[-85.749076,31.61643],[-85.655968,31.879324],[-85.409506,32.147694],[-85.354736,32.147694]]]},"id":"01005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.940299,32.147694],[-92.814329,32.147694],[-92.31045,32.147694],[-92.31045,31.928616],[-92.36522,31.797169],[-92.97316,31.709538],[-92.940299,32.147694]]]},"id":"22127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.983197,32.13674],[-94.939382,31.846462],[-94.868182,31.528799],[-95.005105,31.424737],[-95.273475,31.594523],[-95.42683,32.08197],[-95.459691,32.13674],[-94.983197,32.13674]]]},"id":"48073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.607592,32.120309],[-83.339222,32.103878],[-83.207776,31.901231],[-83.180391,31.846462],[-83.481623,31.846462],[-83.613069,31.851939],[-83.607592,32.027201],[-83.607592,32.120309]]]},"id":"13315"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.707094,32.087447],[-81.197738,31.725969],[-81.192262,31.567138],[-81.493493,31.698584],[-81.811156,31.999816],[-81.82211,32.016247],[-81.761863,32.049109],[-81.718048,32.087447],[-81.707094,32.087447]]]},"id":"13179"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.747219,32.087447],[-101.692449,32.087447],[-101.265248,32.087447],[-101.265248,31.649292],[-101.686972,31.649292],[-101.774603,31.649292],[-101.774603,32.087447],[-101.747219,32.087447]]]},"id":"48173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.265248,32.087447],[-101.183094,32.087447],[-100.821616,32.087447],[-100.827093,31.698584],[-101.265248,31.556184],[-101.265248,31.649292],[-101.265248,32.087447]]]},"id":"48431"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.061684,32.087447],[-102.798791,32.087447],[-102.798791,31.649292],[-103.330055,31.649292],[-103.324578,31.999816],[-103.061684,32.087447]]]},"id":"48495"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.933435,32.087447],[-101.774603,32.087447],[-101.774603,31.649292],[-102.223713,31.649292],[-102.289436,31.649292],[-102.289436,32.087447],[-102.212759,32.087447],[-101.933435,32.087447]]]},"id":"48329"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.289436,32.087447],[-102.289436,31.649292],[-102.316821,31.649292],[-102.76593,31.649292],[-102.798791,31.649292],[-102.798791,32.087447],[-102.289436,32.087447]]]},"id":"48135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.821616,32.087447],[-100.662785,32.087447],[-100.235583,32.08197],[-100.235583,31.693108],[-100.827093,31.698584],[-100.821616,32.087447]]]},"id":"48081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.42683,32.08197],[-95.273475,31.594523],[-95.623999,31.54523],[-95.739015,31.501415],[-95.728061,31.643815],[-95.788308,31.61643],[-96.051201,32.005293],[-95.42683,32.08197]]]},"id":"48001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.054844,32.08197],[-99.715274,32.08197],[-99.720751,31.578092],[-99.726228,31.578092],[-100.109614,31.578092],[-100.235583,31.693108],[-100.235583,32.08197],[-100.153429,32.08197],[-100.054844,32.08197]]]},"id":"48399"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.63312,32.08197],[-99.194965,32.08197],[-99.200441,31.468553],[-99.430473,31.468553],[-99.600258,31.490461],[-99.720751,31.578092],[-99.715274,32.08197],[-99.63312,32.08197]]]},"id":"48083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.118287,32.08197],[-98.926594,32.076493],[-98.669178,31.698584],[-98.992318,31.484984],[-99.090903,31.463076],[-99.200441,31.468553],[-99.194965,32.08197],[-99.118287,32.08197]]]},"id":"48049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.995538,32.049109],[-85.655968,31.879324],[-85.749076,31.61643],[-85.787415,31.61643],[-86.055785,31.61643],[-86.143416,31.61643],[-86.192708,31.966955],[-85.995538,32.049109]]]},"id":"01109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.302247,31.988862],[-86.192708,31.966955],[-86.143416,31.61643],[-86.192708,31.441168],[-86.400832,31.47403],[-86.499417,31.523322],[-86.450124,31.966955],[-86.406309,32.049109],[-86.302247,31.988862]]]},"id":"01041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.716661,32.049109],[-90.229213,32.049109],[-90.125151,31.753354],[-90.245644,31.715015],[-90.311367,31.698584],[-90.738569,31.698584],[-90.738569,31.786216],[-90.716661,32.049109]]]},"id":"28029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.190875,32.049109],[-89.730812,32.049109],[-89.654134,31.780739],[-89.752719,31.775262],[-89.977274,31.764308],[-90.125151,31.753354],[-90.229213,32.049109],[-90.190875,32.049109]]]},"id":"28127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.963593,32.032678],[-83.607592,32.027201],[-83.613069,31.851939],[-83.804762,31.802646],[-83.941686,31.846462],[-83.925255,31.912185],[-83.963593,32.032678]]]},"id":"13081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.006468,32.016247],[-97.765483,31.6712],[-98.181731,31.463076],[-98.269362,31.413784],[-98.461055,31.682154],[-98.209115,31.917662],[-98.006468,32.016247]]]},"id":"48193"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.811156,31.999816],[-81.493493,31.698584],[-81.663278,31.539753],[-81.969987,31.791692],[-81.82211,32.016247],[-81.811156,31.999816]]]},"id":"13183"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.051201,32.005293],[-95.788308,31.61643],[-96.237417,31.413784],[-96.494833,31.797169],[-96.056678,32.01077],[-96.051201,32.005293]]]},"id":"48161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.997324,31.999816],[-105.997324,31.386399],[-106.528588,31.786216],[-106.375233,31.999816],[-105.997324,31.999816]]]},"id":"48141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-105.997324,31.999816],[-104.918367,31.999816],[-104.918367,30.663443],[-104.98409,30.630581],[-104.98409,30.630581],[-105.997324,31.386399],[-105.997324,31.999816]]]},"id":"48229"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.71344,31.999816],[-103.324578,31.999816],[-103.330055,31.649292],[-103.609378,31.649292],[-103.98181,31.999816],[-103.724394,31.999816],[-103.71344,31.999816]]]},"id":"48301"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.847167,31.999816],[-104.025626,31.999816],[-104.102303,31.107075],[-104.918367,30.663443],[-104.918367,31.999816],[-104.847167,31.999816]]]},"id":"48109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.025626,31.999816],[-103.98181,31.999816],[-103.609378,31.649292],[-103.012392,31.369968],[-103.587471,30.767505],[-104.102303,31.107075],[-104.025626,31.999816]]]},"id":"48389"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.069935,31.994339],[-84.905627,31.923139],[-84.960397,31.775262],[-85.124705,31.780739],[-85.141136,31.780739],[-85.069935,31.994339]]]},"id":"13239"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.819359,31.988862],[-87.666005,31.988862],[-87.501697,31.830031],[-87.76459,31.298768],[-87.945329,31.194706],[-88.087729,31.698584],[-88.071299,31.988862],[-87.819359,31.988862]]]},"id":"01025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.134272,31.977908],[-94.013779,31.977908],[-93.882332,31.846462],[-93.83304,31.583569],[-93.843994,31.589046],[-93.986394,31.567138],[-94.002825,31.578092],[-94.397165,31.654769],[-94.451934,31.846462],[-94.512181,31.972432],[-94.134272,31.977908]]]},"id":"48419"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.468389,31.966955],[-82.43005,31.966955],[-82.523158,31.709538],[-82.62722,31.6712],[-82.835344,31.8136],[-82.643651,31.917662],[-82.545066,31.961478],[-82.479343,31.972432],[-82.468389,31.966955]]]},"id":"13161"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.647741,31.972432],[-91.57654,31.8848],[-91.543679,31.753354],[-91.833957,31.265906],[-92.009219,31.326153],[-92.003742,31.928616],[-91.888726,31.972432],[-91.647741,31.972432]]]},"id":"22025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.297687,31.621907],[-84.451041,31.621907],[-84.544149,31.621907],[-84.598918,31.917662],[-84.445564,31.966955],[-84.336025,31.873847],[-84.297687,31.621907]]]},"id":"13273"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.43005,31.966955],[-82.227403,31.912185],[-82.046664,31.824554],[-82.134295,31.632861],[-82.134295,31.468553],[-82.227403,31.528799],[-82.523158,31.709538],[-82.43005,31.966955]]]},"id":"13001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.477509,31.966955],[-86.450124,31.966955],[-86.499417,31.523322],[-86.702064,31.523322],[-86.90471,31.753354],[-86.90471,31.830031],[-86.855418,31.961478],[-86.477509,31.966955]]]},"id":"01013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.905627,31.923139],[-84.653688,31.917662],[-84.598918,31.917662],[-84.544149,31.621907],[-84.817996,31.621907],[-84.960397,31.775262],[-84.905627,31.923139]]]},"id":"13243"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.184481,31.928616],[-92.003742,31.928616],[-92.009219,31.326153],[-92.085896,31.337106],[-92.195435,31.479507],[-92.36522,31.797169],[-92.31045,31.928616],[-92.184481,31.928616]]]},"id":"22059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.259348,31.917662],[-83.925255,31.912185],[-83.941686,31.846462],[-84.018363,31.649292],[-84.297687,31.621907],[-84.336025,31.873847],[-84.259348,31.917662]]]},"id":"13177"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.471115,31.895754],[-88.465638,31.698584],[-88.449208,31.435691],[-88.460161,31.435691],[-88.843547,31.435691],[-88.942132,31.435691],[-88.942132,31.824554],[-88.909271,31.824554],[-88.471115,31.895754]]]},"id":"28153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.247924,31.86837],[-90.738569,31.786216],[-90.738569,31.698584],[-90.738569,31.610953],[-91.154816,31.610953],[-91.319124,31.758831],[-91.346509,31.753354],[-91.247924,31.86837]]]},"id":"28063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.080866,31.840985],[-96.932988,31.709538],[-96.801542,31.523322],[-97.278035,31.282337],[-97.404005,31.304245],[-97.420436,31.320676],[-97.606652,31.589046],[-97.278035,31.747877],[-97.080866,31.840985]]]},"id":"48309"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.613069,31.851939],[-83.481623,31.846462],[-83.454238,31.758831],[-83.498053,31.594523],[-83.645931,31.594523],[-83.651408,31.567138],[-83.804762,31.802646],[-83.613069,31.851939]]]},"id":"13287"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.481623,31.846462],[-83.180391,31.846462],[-82.994175,31.780739],[-82.999652,31.6712],[-83.454238,31.758831],[-83.481623,31.846462]]]},"id":"13017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.941686,31.846462],[-83.804762,31.802646],[-83.651408,31.567138],[-83.651408,31.331629],[-83.974547,31.337106],[-84.001932,31.337106],[-83.996455,31.441168],[-84.018363,31.649292],[-83.941686,31.846462]]]},"id":"13321"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.512181,31.846462],[-94.451934,31.846462],[-94.397165,31.654769],[-94.325965,31.222091],[-94.868182,31.528799],[-94.939382,31.846462],[-94.512181,31.846462]]]},"id":"48347"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.619439,31.846462],[-93.4387,31.846462],[-93.236053,31.364491],[-93.553716,31.183752],[-93.603008,31.178275],[-93.83304,31.583569],[-93.882332,31.846462],[-93.619439,31.846462]]]},"id":"22085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.501697,31.830031],[-86.90471,31.830031],[-86.90471,31.753354],[-86.910187,31.753354],[-87.42502,31.260429],[-87.616713,31.243998],[-87.76459,31.298768],[-87.501697,31.830031]]]},"id":"01099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.134295,31.632861],[-82.046664,31.824554],[-81.969987,31.791692],[-81.663278,31.539753],[-81.62494,31.452122],[-81.729002,31.331629],[-82.041187,31.375445],[-82.134295,31.468553],[-82.134295,31.632861]]]},"id":"13305"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.942132,31.824554],[-88.942132,31.435691],[-89.144779,31.435691],[-89.396718,31.435691],[-89.402195,31.797169],[-89.314564,31.802646],[-88.942132,31.824554]]]},"id":"28067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.994175,31.780739],[-82.835344,31.8136],[-82.62722,31.6712],[-82.599835,31.468553],[-82.62722,31.364491],[-83.142052,31.419261],[-83.147529,31.47403],[-82.999652,31.6712],[-82.994175,31.780739]]]},"id":"13069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.719387,31.8136],[-96.494833,31.797169],[-96.237417,31.413784],[-96.319571,31.359014],[-96.598895,31.222091],[-96.801542,31.523322],[-96.932988,31.709538],[-96.719387,31.8136]]]},"id":"48293"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.36522,31.797169],[-92.195435,31.479507],[-92.721221,31.517845],[-92.97316,31.709538],[-92.36522,31.797169]]]},"id":"22043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.402195,31.797169],[-89.396718,31.435691],[-89.42958,31.435691],[-89.451488,31.435691],[-89.588411,31.435691],[-89.752719,31.775262],[-89.654134,31.780739],[-89.402195,31.797169]]]},"id":"28031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.124705,31.780739],[-84.960397,31.775262],[-84.817996,31.621907],[-84.817996,31.501415],[-85.048028,31.517845],[-85.124705,31.764308],[-85.141136,31.780739],[-85.124705,31.780739]]]},"id":"13061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.977274,31.764308],[-89.752719,31.775262],[-89.588411,31.435691],[-89.654134,31.435691],[-89.659611,31.435691],[-89.960843,31.391876],[-89.977274,31.753354],[-89.977274,31.764308]]]},"id":"28065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.414983,31.621907],[-85.124705,31.764308],[-85.048028,31.517845],[-85.086366,31.309722],[-85.414983,31.315199],[-85.414983,31.621907]]]},"id":"01067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.454238,31.758831],[-82.999652,31.6712],[-83.147529,31.47403],[-83.240637,31.47403],[-83.339222,31.47403],[-83.498053,31.594523],[-83.454238,31.758831]]]},"id":"13155"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.428663,31.753354],[-91.379371,31.731446],[-91.587494,31.189229],[-91.636787,30.997536],[-91.664172,30.970151],[-91.658695,30.992059],[-91.724418,31.046829],[-91.833957,31.265906],[-91.543679,31.753354],[-91.428663,31.753354]]]},"id":"22029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.977274,31.753354],[-89.960843,31.391876],[-90.042997,31.337106],[-90.190875,31.34806],[-90.245644,31.34806],[-90.245644,31.715015],[-90.125151,31.753354],[-89.977274,31.764308],[-89.977274,31.753354]]]},"id":"28077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.319124,31.758831],[-91.154816,31.610953],[-91.160293,31.34806],[-91.264355,31.369968],[-91.587494,31.189229],[-91.379371,31.731446],[-91.346509,31.753354],[-91.319124,31.758831]]]},"id":"28001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.910187,31.753354],[-86.90471,31.753354],[-86.702064,31.523322],[-86.702064,31.194706],[-86.948526,31.260429],[-87.42502,31.260429],[-86.910187,31.753354]]]},"id":"01035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-110.789647,31.731446],[-110.450077,31.731446],[-110.461031,31.331629],[-111.364726,31.424737],[-110.789647,31.731446]]]},"id":"04023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.669178,31.698584],[-98.461055,31.682154],[-98.269362,31.413784],[-98.565116,31.233045],[-98.992318,31.484984],[-98.669178,31.698584]]]},"id":"48333"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.311367,31.698584],[-90.245644,31.715015],[-90.245644,31.34806],[-90.262075,31.34806],[-90.355183,31.34806],[-90.546876,31.34806],[-90.634507,31.34806],[-90.738569,31.610953],[-90.738569,31.698584],[-90.311367,31.698584]]]},"id":"28085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.688806,31.709538],[-97.606652,31.589046],[-97.420436,31.320676],[-97.907884,31.068736],[-98.181731,31.463076],[-97.765483,31.6712],[-97.688806,31.709538]]]},"id":"48099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.523158,31.709538],[-82.227403,31.528799],[-82.419096,31.419261],[-82.473866,31.419261],[-82.599835,31.468553],[-82.62722,31.6712],[-82.523158,31.709538]]]},"id":"13005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.827093,31.698584],[-100.235583,31.693108],[-100.109614,31.578092],[-100.115091,31.090644],[-100.690169,31.085167],[-100.695646,31.523322],[-101.265248,31.528799],[-101.265248,31.556184],[-100.827093,31.698584]]]},"id":"48451"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.493493,31.698584],[-81.192262,31.567138],[-81.268939,31.293291],[-81.279893,31.293291],[-81.62494,31.452122],[-81.663278,31.539753],[-81.493493,31.698584]]]},"id":"13191"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.186314,31.698584],[-88.087729,31.698584],[-87.945329,31.194706],[-87.972714,31.161844],[-88.432777,31.112552],[-88.449208,31.435691],[-88.465638,31.698584],[-88.186314,31.698584]]]},"id":"01129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.728061,31.643815],[-95.739015,31.501415],[-95.7664,31.096121],[-95.903323,31.090644],[-96.242894,30.975628],[-96.319571,31.359014],[-96.237417,31.413784],[-95.788308,31.61643],[-95.728061,31.643815]]]},"id":"48289"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.002825,31.578092],[-93.986394,31.567138],[-94.041164,31.13446],[-94.128795,31.101598],[-94.325965,31.222091],[-94.397165,31.654769],[-94.002825,31.578092]]]},"id":"48405"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.223713,31.649292],[-101.774603,31.649292],[-101.774603,31.07969],[-102.30039,31.085167],[-102.316821,31.649292],[-102.289436,31.649292],[-102.223713,31.649292]]]},"id":"48461"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.798791,31.649292],[-102.76593,31.649292],[-102.76593,31.293291],[-102.83713,31.282337],[-103.012392,31.369968],[-103.609378,31.649292],[-103.330055,31.649292],[-102.798791,31.649292]]]},"id":"48475"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.76593,31.649292],[-102.316821,31.649292],[-102.30039,31.085167],[-102.388021,31.085167],[-102.76593,31.293291],[-102.76593,31.649292]]]},"id":"48103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.686972,31.649292],[-101.265248,31.649292],[-101.265248,31.556184],[-101.265248,31.528799],[-101.276202,31.07969],[-101.774603,31.07969],[-101.774603,31.649292],[-101.686972,31.649292]]]},"id":"48383"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.018363,31.649292],[-83.996455,31.441168],[-84.062178,31.441168],[-84.138855,31.441168],[-84.429133,31.435691],[-84.451041,31.621907],[-84.297687,31.621907],[-84.018363,31.649292]]]},"id":"13095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.544149,31.621907],[-84.451041,31.621907],[-84.429133,31.435691],[-84.637257,31.435691],[-84.817996,31.501415],[-84.817996,31.621907],[-84.544149,31.621907]]]},"id":"13037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.694307,31.61643],[-85.414983,31.621907],[-85.414983,31.315199],[-85.710737,31.194706],[-85.792891,31.194706],[-85.787415,31.61643],[-85.749076,31.61643],[-85.694307,31.61643]]]},"id":"01045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.055785,31.61643],[-85.787415,31.61643],[-85.792891,31.194706],[-86.192708,31.194706],[-86.192708,31.441168],[-86.143416,31.61643],[-86.055785,31.61643]]]},"id":"01031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.843994,31.589046],[-93.83304,31.583569],[-93.603008,31.178275],[-93.909717,31.156367],[-93.997348,31.139937],[-94.041164,31.13446],[-93.986394,31.567138],[-93.843994,31.589046]]]},"id":"48403"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.154816,31.610953],[-90.738569,31.610953],[-90.634507,31.34806],[-90.722138,31.34806],[-91.09457,31.320676],[-91.160293,31.34806],[-91.154816,31.610953]]]},"id":"28037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.645931,31.594523],[-83.498053,31.594523],[-83.339222,31.47403],[-83.43233,31.34806],[-83.514484,31.326153],[-83.651408,31.331629],[-83.651408,31.567138],[-83.645931,31.594523]]]},"id":"13277"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.623999,31.54523],[-95.273475,31.594523],[-95.005105,31.424737],[-94.955813,31.386399],[-95.432306,31.057782],[-95.618522,30.931813],[-95.7664,31.096121],[-95.739015,31.501415],[-95.623999,31.54523]]]},"id":"48225"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.726228,31.578092],[-99.720751,31.578092],[-99.600258,31.490461],[-99.605735,31.085167],[-100.115091,31.090644],[-100.109614,31.578092],[-99.726228,31.578092]]]},"id":"48095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.227403,31.528799],[-82.134295,31.468553],[-82.041187,31.375445],[-82.041187,31.369968],[-82.282173,31.227568],[-82.419096,31.419261],[-82.227403,31.528799]]]},"id":"13229"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.265248,31.528799],[-100.695646,31.523322],[-100.690169,31.085167],[-100.964016,31.085167],[-101.276202,31.07969],[-101.265248,31.528799]]]},"id":"48235"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.400832,31.47403],[-86.192708,31.441168],[-86.192708,31.194706],[-86.187231,30.992059],[-86.389878,30.992059],[-86.685633,30.992059],[-86.702064,31.194706],[-86.702064,31.523322],[-86.499417,31.523322],[-86.400832,31.47403]]]},"id":"01039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.868182,31.528799],[-94.325965,31.222091],[-94.128795,31.101598],[-94.457411,31.035875],[-94.561473,31.057782],[-94.813412,31.13446],[-94.840797,31.145414],[-94.950336,31.342583],[-94.955813,31.386399],[-95.005105,31.424737],[-94.868182,31.528799]]]},"id":"48005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.801542,31.523322],[-96.598895,31.222091],[-96.828926,31.107075],[-97.069912,30.986582],[-97.278035,31.282337],[-96.801542,31.523322]]]},"id":"48145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.086366,31.309722],[-85.048028,31.517845],[-84.817996,31.501415],[-84.637257,31.435691],[-84.642734,31.260429],[-84.922058,31.074213],[-85.02612,31.074213],[-85.086366,31.309722]]]},"id":"13099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.721221,31.517845],[-92.195435,31.479507],[-92.085896,31.337106],[-92.283066,30.964674],[-92.387128,31.003013],[-92.595251,30.893474],[-92.660975,30.898951],[-92.825283,30.887997],[-92.984114,31.34806],[-92.721221,31.517845]]]},"id":"22079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.430473,31.468553],[-99.200441,31.468553],[-99.090903,31.463076],[-99.090903,30.942767],[-99.485242,30.942767],[-99.605735,31.085167],[-99.600258,31.490461],[-99.430473,31.468553]]]},"id":"48307"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.992318,31.484984],[-98.565116,31.233045],[-98.439147,31.030398],[-98.444624,30.920859],[-98.515824,30.920859],[-98.964933,30.920859],[-99.090903,30.942767],[-99.090903,31.463076],[-98.992318,31.484984]]]},"id":"48411"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.240637,31.47403],[-83.147529,31.47403],[-83.142052,31.419261],[-83.048944,31.183752],[-83.196822,31.024921],[-83.295407,31.024921],[-83.43233,31.34806],[-83.339222,31.47403],[-83.240637,31.47403]]]},"id":"13019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.473866,31.419261],[-82.419096,31.419261],[-82.282173,31.227568],[-82.134295,31.00849],[-82.216449,30.570335],[-82.419096,30.581289],[-82.671035,31.183752],[-82.62722,31.364491],[-82.599835,31.468553],[-82.473866,31.419261]]]},"id":"13299"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.181731,31.463076],[-97.907884,31.068736],[-97.91336,31.035875],[-98.017422,31.035875],[-98.439147,31.030398],[-98.565116,31.233045],[-98.269362,31.413784],[-98.181731,31.463076]]]},"id":"48281"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.429133,31.435691],[-84.138855,31.441168],[-84.50581,31.07969],[-84.544149,31.07969],[-84.642734,31.260429],[-84.637257,31.435691],[-84.429133,31.435691]]]},"id":"13007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.279893,31.293291],[-81.268939,31.293291],[-81.444201,31.013967],[-81.76734,31.167321],[-81.729002,31.331629],[-81.62494,31.452122],[-81.279893,31.293291]]]},"id":"13127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.062178,31.441168],[-83.996455,31.441168],[-84.001932,31.337106],[-84.001932,31.07969],[-84.100517,31.07969],[-84.116948,31.07969],[-84.270302,31.07969],[-84.374364,31.07969],[-84.50581,31.07969],[-84.138855,31.441168],[-84.062178,31.441168]]]},"id":"13205"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.460161,31.435691],[-88.449208,31.435691],[-88.432777,31.112552],[-88.4273,30.997536],[-88.679239,30.997536],[-88.832593,30.997536],[-88.843547,31.435691],[-88.460161,31.435691]]]},"id":"28041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.42958,31.435691],[-89.396718,31.435691],[-89.144779,31.435691],[-89.139302,30.909905],[-89.341949,30.909905],[-89.347426,31.00849],[-89.451488,31.435691],[-89.42958,31.435691]]]},"id":"28035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.659611,31.435691],[-89.654134,31.435691],[-89.654134,31.003013],[-89.730812,31.003013],[-89.834873,31.003013],[-90.042997,31.337106],[-89.960843,31.391876],[-89.659611,31.435691]]]},"id":"28091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.144779,31.435691],[-88.942132,31.435691],[-88.843547,31.435691],[-88.832593,30.997536],[-88.887363,30.909905],[-88.996902,30.909905],[-89.139302,30.909905],[-89.144779,31.435691]]]},"id":"28111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.451488,31.435691],[-89.347426,31.00849],[-89.599365,31.003013],[-89.654134,31.003013],[-89.654134,31.435691],[-89.588411,31.435691],[-89.451488,31.435691]]]},"id":"28073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.142052,31.419261],[-82.62722,31.364491],[-82.671035,31.183752],[-82.972267,31.183752],[-83.032514,31.183752],[-83.048944,31.183752],[-83.142052,31.419261]]]},"id":"13003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.950336,31.342583],[-94.840797,31.145414],[-95.202275,30.822274],[-95.311814,30.88252],[-95.328245,30.860613],[-95.432306,31.057782],[-94.955813,31.386399],[-94.950336,31.342583]]]},"id":"48455"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.264355,31.369968],[-91.160293,31.34806],[-91.09457,31.320676],[-91.061708,30.997536],[-91.176724,30.997536],[-91.636787,30.997536],[-91.587494,31.189229],[-91.264355,31.369968]]]},"id":"28157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.041187,31.369968],[-82.041187,31.375445],[-81.729002,31.331629],[-81.76734,31.167321],[-81.937125,31.046829],[-81.986418,31.057782],[-82.134295,31.00849],[-82.282173,31.227568],[-82.041187,31.369968]]]},"id":"13025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.83713,31.282337],[-102.76593,31.293291],[-102.388021,31.085167],[-101.769126,30.652489],[-102.344205,30.597719],[-102.56876,30.050025],[-103.346485,30.603196],[-103.439593,30.663443],[-103.587471,30.767505],[-103.012392,31.369968],[-102.83713,31.282337]]]},"id":"48371"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.236053,31.364491],[-92.984114,31.34806],[-92.825283,30.887997],[-92.978637,30.877043],[-93.011499,30.877043],[-93.559193,30.86609],[-93.553716,31.183752],[-93.236053,31.364491]]]},"id":"22115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.319571,31.359014],[-96.242894,30.975628],[-96.566033,30.696304],[-96.620803,30.729166],[-96.828926,31.107075],[-96.598895,31.222091],[-96.319571,31.359014]]]},"id":"48395"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.190875,31.34806],[-90.042997,31.337106],[-89.834873,31.003013],[-90.262075,31.003013],[-90.262075,31.34806],[-90.245644,31.34806],[-90.190875,31.34806]]]},"id":"28147"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.43233,31.34806],[-83.295407,31.024921],[-83.383038,31.030398],[-83.476146,31.030398],[-83.498053,31.052306],[-83.574731,31.07969],[-83.514484,31.326153],[-83.43233,31.34806]]]},"id":"13075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.355183,31.34806],[-90.262075,31.34806],[-90.262075,31.003013],[-90.349706,31.003013],[-90.371614,30.997536],[-90.546876,30.997536],[-90.546876,31.34806],[-90.355183,31.34806]]]},"id":"28113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.722138,31.34806],[-90.634507,31.34806],[-90.546876,31.34806],[-90.546876,30.997536],[-90.568783,30.997536],[-90.8262,30.997536],[-91.061708,30.997536],[-91.09457,31.320676],[-90.722138,31.34806]]]},"id":"28005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.085896,31.337106],[-92.009219,31.326153],[-91.833957,31.265906],[-91.724418,31.046829],[-91.751803,31.019444],[-91.762756,31.00849],[-91.817526,30.849659],[-92.085896,30.849659],[-92.211866,30.849659],[-92.283066,30.964674],[-92.085896,31.337106]]]},"id":"22009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.974547,31.337106],[-83.651408,31.331629],[-83.514484,31.326153],[-83.574731,31.07969],[-83.739039,31.035875],[-84.001932,31.07969],[-84.001932,31.337106],[-83.974547,31.337106]]]},"id":"13071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.404005,31.304245],[-97.278035,31.282337],[-97.069912,30.986582],[-97.316374,30.751074],[-97.831206,30.904428],[-97.91336,31.035875],[-97.907884,31.068736],[-97.420436,31.320676],[-97.404005,31.304245]]]},"id":"48027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.76459,31.298768],[-87.616713,31.243998],[-87.600282,30.997536],[-87.518128,30.280057],[-88.005575,30.685351],[-87.972714,31.161844],[-87.945329,31.194706],[-87.76459,31.298768]]]},"id":"01003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.414983,31.315199],[-85.086366,31.309722],[-85.02612,31.074213],[-85.004212,31.003013],[-85.486183,30.997536],[-85.486183,31.200183],[-85.710737,31.194706],[-85.414983,31.315199]]]},"id":"01069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.948526,31.260429],[-86.702064,31.194706],[-86.685633,30.992059],[-86.784218,30.997536],[-87.162127,30.997536],[-87.249758,30.997536],[-87.600282,30.997536],[-87.616713,31.243998],[-87.42502,31.260429],[-86.948526,31.260429]]]},"id":"01053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.642734,31.260429],[-84.544149,31.07969],[-84.544149,31.07969],[-84.730365,31.068736],[-84.922058,31.074213],[-84.642734,31.260429]]]},"id":"13201"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.486183,31.200183],[-85.486183,30.997536],[-85.497137,30.997536],[-86.033877,30.992059],[-86.187231,30.992059],[-86.192708,31.194706],[-85.792891,31.194706],[-85.710737,31.194706],[-85.486183,31.200183]]]},"id":"01061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.603008,31.178275],[-93.553716,31.183752],[-93.559193,30.86609],[-93.739932,30.40055],[-93.70707,30.247195],[-93.898763,30.241718],[-93.909717,31.156367],[-93.603008,31.178275]]]},"id":"48351"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.972267,31.183752],[-82.671035,31.183752],[-82.419096,30.581289],[-82.457435,30.586766],[-82.583404,30.592243],[-82.972267,30.871567],[-82.972267,31.183752]]]},"id":"13065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.032514,31.183752],[-82.972267,31.183752],[-82.972267,30.871567],[-83.02156,30.849659],[-83.196822,31.024921],[-83.048944,31.183752],[-83.032514,31.183752]]]},"id":"13173"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.972714,31.161844],[-88.005575,30.685351],[-88.394438,30.367688],[-88.410869,30.734643],[-88.4273,30.997536],[-88.432777,31.112552],[-87.972714,31.161844]]]},"id":"01097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.76734,31.167321],[-81.444201,31.013967],[-81.444201,30.707258],[-81.904264,30.816797],[-81.937125,31.046829],[-81.76734,31.167321]]]},"id":"13039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.997348,31.139937],[-93.909717,31.156367],[-93.898763,30.241718],[-94.117841,30.241718],[-94.074025,30.526519],[-94.29858,31.035875],[-94.457411,31.035875],[-94.128795,31.101598],[-94.041164,31.13446],[-93.997348,31.139937]]]},"id":"48241"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.813412,31.13446],[-94.561473,31.057782],[-94.545042,30.526519],[-94.731258,30.488181],[-94.851751,30.493658],[-95.202275,30.822274],[-94.840797,31.145414],[-94.813412,31.13446]]]},"id":"48373"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.828926,31.107075],[-96.620803,30.729166],[-96.96585,30.559381],[-97.157543,30.455319],[-97.316374,30.751074],[-97.069912,30.986582],[-96.828926,31.107075]]]},"id":"48331"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.102303,31.107075],[-103.587471,30.767505],[-103.439593,30.663443],[-103.801071,30.411504],[-104.98409,30.630581],[-104.918367,30.663443],[-104.102303,31.107075]]]},"id":"48243"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.903323,31.090644],[-95.7664,31.096121],[-95.618522,30.931813],[-95.864985,30.86609],[-96.166217,30.822274],[-96.237417,30.964674],[-96.242894,30.975628],[-95.903323,31.090644]]]},"id":"48313"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.690169,31.085167],[-100.115091,31.090644],[-100.115091,30.712735],[-100.958539,30.707258],[-100.964016,31.085167],[-100.690169,31.085167]]]},"id":"48413"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.115091,31.090644],[-99.605735,31.085167],[-99.485242,30.942767],[-99.485242,30.712735],[-99.759089,30.712735],[-100.115091,30.712735],[-100.115091,31.090644]]]},"id":"48327"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.388021,31.085167],[-102.30039,31.085167],[-101.774603,31.07969],[-101.276202,31.07969],[-100.964016,31.085167],[-100.958539,30.707258],[-100.958539,30.285534],[-101.544572,30.285534],[-101.758173,30.285534],[-101.769126,30.652489],[-102.388021,31.085167]]]},"id":"48105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.544149,31.07969],[-84.544149,31.07969],[-84.50581,31.07969],[-84.374364,31.07969],[-84.379841,30.690827],[-84.861812,30.712735],[-84.730365,31.068736],[-84.544149,31.07969]]]},"id":"13087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.270302,31.07969],[-84.116948,31.07969],[-84.084086,30.674397],[-84.281256,30.685351],[-84.379841,30.690827],[-84.374364,31.07969],[-84.270302,31.07969]]]},"id":"13131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.498053,31.052306],[-83.476146,31.030398],[-83.355653,30.636058],[-83.613069,30.652489],[-83.744516,30.657966],[-83.739039,31.035875],[-83.574731,31.07969],[-83.498053,31.052306]]]},"id":"13027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.100517,31.07969],[-84.001932,31.07969],[-83.739039,31.035875],[-83.744516,30.657966],[-84.007409,30.674397],[-84.084086,30.674397],[-84.116948,31.07969],[-84.100517,31.07969]]]},"id":"13275"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.986418,31.057782],[-81.937125,31.046829],[-81.904264,30.816797],[-82.052141,30.362211],[-82.216449,30.570335],[-82.134295,31.00849],[-81.986418,31.057782]]]},"id":"13049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.02612,31.074213],[-84.922058,31.074213],[-84.730365,31.068736],[-84.861812,30.712735],[-84.867289,30.712735],[-85.004212,31.003013],[-85.02612,31.074213]]]},"id":"13253"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.29858,31.035875],[-94.074025,30.526519],[-94.44098,30.526519],[-94.545042,30.526519],[-94.561473,31.057782],[-94.457411,31.035875],[-94.29858,31.035875]]]},"id":"48457"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.432306,31.057782],[-95.328245,30.860613],[-95.361106,30.504611],[-95.832123,30.630581],[-95.864985,30.86609],[-95.618522,30.931813],[-95.432306,31.057782]]]},"id":"48471"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.724418,31.046829],[-91.658695,30.992059],[-91.751803,31.019444],[-91.724418,31.046829]]]},"id":"22125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.017422,31.035875],[-97.91336,31.035875],[-97.831206,30.904428],[-98.050284,30.625104],[-98.126961,30.427934],[-98.351516,30.488181],[-98.444624,30.920859],[-98.439147,31.030398],[-98.017422,31.035875]]]},"id":"48053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.383038,31.030398],[-83.295407,31.024921],[-83.196822,31.024921],[-83.02156,30.849659],[-83.136575,30.625104],[-83.311837,30.636058],[-83.355653,30.636058],[-83.476146,31.030398],[-83.383038,31.030398]]]},"id":"13185"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.762756,31.00849],[-91.751803,31.019444],[-91.658695,30.992059],[-91.664172,30.970151],[-91.330078,30.657966],[-91.483432,30.499135],[-91.521771,30.499135],[-91.70251,30.499135],[-91.75728,30.499135],[-91.817526,30.849659],[-91.762756,31.00849]]]},"id":"22077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.599365,31.003013],[-89.347426,31.00849],[-89.341949,30.909905],[-89.341949,30.647012],[-89.495303,30.647012],[-89.686996,30.460796],[-89.84035,30.663443],[-89.730812,31.003013],[-89.654134,31.003013],[-89.599365,31.003013]]]},"id":"28109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.834873,31.003013],[-89.730812,31.003013],[-89.84035,30.663443],[-90.256598,30.712735],[-90.349706,31.003013],[-90.262075,31.003013],[-89.834873,31.003013]]]},"id":"22117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.387128,31.003013],[-92.283066,30.964674],[-92.211866,30.849659],[-92.49119,30.482704],[-92.63359,30.482704],[-92.628113,30.488181],[-92.595251,30.893474],[-92.387128,31.003013]]]},"id":"22039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.486183,30.997536],[-85.004212,31.003013],[-84.867289,30.712735],[-84.933012,30.608673],[-85.16852,30.608673],[-85.382121,30.564858],[-85.43689,30.570335],[-85.601199,30.833228],[-85.497137,30.997536],[-85.486183,30.997536]]]},"id":"12063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.371614,30.997536],[-90.349706,31.003013],[-90.256598,30.712735],[-90.245644,30.225288],[-90.278506,30.230764],[-90.398998,30.285534],[-90.568783,30.652489],[-90.568783,30.997536],[-90.546876,30.997536],[-90.371614,30.997536]]]},"id":"22105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.568783,30.997536],[-90.568783,30.652489],[-90.744046,30.652489],[-90.908354,30.647012],[-90.848107,30.718212],[-90.8262,30.997536],[-90.568783,30.997536]]]},"id":"22091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.061708,30.997536],[-90.8262,30.997536],[-90.848107,30.718212],[-90.864538,30.718212],[-91.297217,30.647012],[-91.302693,30.652489],[-91.176724,30.997536],[-91.061708,30.997536]]]},"id":"22037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.162127,30.997536],[-86.784218,30.997536],[-86.800648,30.384119],[-86.921141,30.373165],[-87.310004,30.734643],[-87.162127,30.997536]]]},"id":"12113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.636787,30.997536],[-91.176724,30.997536],[-91.302693,30.652489],[-91.330078,30.657966],[-91.664172,30.970151],[-91.636787,30.997536]]]},"id":"22125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-87.249758,30.997536],[-87.162127,30.997536],[-87.310004,30.734643],[-86.921141,30.373165],[-87.518128,30.280057],[-87.600282,30.997536],[-87.249758,30.997536]]]},"id":"12033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.679239,30.997536],[-88.4273,30.997536],[-88.410869,30.734643],[-88.865455,30.734643],[-88.881886,30.734643],[-88.887363,30.909905],[-88.832593,30.997536],[-88.679239,30.997536]]]},"id":"28039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.685633,30.992059],[-86.389878,30.992059],[-86.395355,30.378642],[-86.800648,30.384119],[-86.784218,30.997536],[-86.685633,30.992059]]]},"id":"12091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.033877,30.992059],[-85.497137,30.997536],[-85.601199,30.833228],[-85.842184,30.701781],[-86.033877,30.992059]]]},"id":"12059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-86.389878,30.992059],[-86.187231,30.992059],[-86.033877,30.992059],[-85.842184,30.701781],[-85.990061,30.389596],[-85.995538,30.269103],[-86.395355,30.378642],[-86.389878,30.992059]]]},"id":"12131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.237417,30.964674],[-96.166217,30.822274],[-96.155263,30.329349],[-96.297663,30.378642],[-96.566033,30.696304],[-96.242894,30.975628],[-96.237417,30.964674]]]},"id":"48041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.485242,30.942767],[-99.090903,30.942767],[-98.964933,30.920859],[-98.964933,30.499135],[-99.304503,30.499135],[-99.485242,30.712735],[-99.485242,30.942767]]]},"id":"48319"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.515824,30.920859],[-98.444624,30.920859],[-98.351516,30.488181],[-98.411762,30.504611],[-98.592501,30.499135],[-98.964933,30.499135],[-98.964933,30.920859],[-98.515824,30.920859]]]},"id":"48299"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.996902,30.909905],[-88.887363,30.909905],[-88.881886,30.734643],[-88.881886,30.679874],[-89.341949,30.647012],[-89.341949,30.909905],[-89.139302,30.909905],[-88.996902,30.909905]]]},"id":"28131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.311814,30.88252],[-95.202275,30.822274],[-94.851751,30.493658],[-95.163936,30.34578],[-95.361106,30.504611],[-95.328245,30.860613],[-95.311814,30.88252]]]},"id":"48407"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.831206,30.904428],[-97.316374,30.751074],[-97.157543,30.455319],[-97.332805,30.40055],[-97.371143,30.41698],[-97.973607,30.625104],[-98.050284,30.625104],[-97.831206,30.904428]]]},"id":"48491"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.660975,30.898951],[-92.595251,30.893474],[-92.628113,30.488181],[-92.770513,30.488181],[-93.131992,30.422457],[-92.978637,30.877043],[-92.825283,30.887997],[-92.660975,30.898951]]]},"id":"22003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.011499,30.877043],[-92.978637,30.877043],[-93.131992,30.422457],[-93.131992,30.40055],[-93.460608,30.488181],[-93.739932,30.40055],[-93.559193,30.86609],[-93.011499,30.877043]]]},"id":"22011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.972267,30.871567],[-82.583404,30.592243],[-82.687466,30.597719],[-83.136575,30.625104],[-83.02156,30.849659],[-82.972267,30.871567]]]},"id":"13101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.166217,30.822274],[-95.864985,30.86609],[-95.832123,30.630581],[-95.804738,30.247195],[-95.821169,30.247195],[-96.095016,30.225288],[-96.155263,30.329349],[-96.166217,30.822274]]]},"id":"48185"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.085896,30.849659],[-91.817526,30.849659],[-91.75728,30.499135],[-91.987311,30.367688],[-92.053034,30.378642],[-92.140665,30.296488],[-92.49119,30.482704],[-92.211866,30.849659],[-92.085896,30.849659]]]},"id":"22097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.601199,30.833228],[-85.43689,30.570335],[-85.990061,30.389596],[-85.842184,30.701781],[-85.601199,30.833228]]]},"id":"12133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.904264,30.816797],[-81.444201,30.707258],[-81.444201,30.510088],[-81.608509,30.586766],[-82.046664,30.27458],[-82.052141,30.362211],[-81.904264,30.816797]]]},"id":"12089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.865455,30.734643],[-88.410869,30.734643],[-88.394438,30.367688],[-88.843547,30.406027],[-88.881886,30.679874],[-88.881886,30.734643],[-88.865455,30.734643]]]},"id":"28059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.620803,30.729166],[-96.566033,30.696304],[-96.297663,30.378642],[-96.64271,30.296488],[-96.96585,30.559381],[-96.620803,30.729166]]]},"id":"48051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.864538,30.718212],[-90.848107,30.718212],[-90.908354,30.647012],[-90.891923,30.34578],[-91.023369,30.323872],[-91.143862,30.323872],[-91.297217,30.647012],[-90.864538,30.718212]]]},"id":"22033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.256598,30.712735],[-89.84035,30.663443],[-89.686996,30.460796],[-89.522688,30.181472],[-89.62675,30.14861],[-89.900597,30.192426],[-90.103244,30.192426],[-90.245644,30.225288],[-90.256598,30.712735]]]},"id":"22103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.867289,30.712735],[-84.861812,30.712735],[-84.379841,30.690827],[-84.281256,30.685351],[-84.648211,30.389596],[-84.933012,30.608673],[-84.867289,30.712735]]]},"id":"12039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.759089,30.712735],[-99.485242,30.712735],[-99.304503,30.499135],[-99.304503,30.285534],[-99.605735,30.291011],[-99.753612,30.291011],[-100.115091,30.291011],[-100.115091,30.712735],[-99.759089,30.712735]]]},"id":"48267"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.115091,30.712735],[-100.115091,30.291011],[-100.701123,30.291011],[-100.958539,30.285534],[-100.958539,30.707258],[-100.115091,30.712735]]]},"id":"48435"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.084086,30.674397],[-84.007409,30.674397],[-84.073132,30.27458],[-84.303164,30.301965],[-84.713934,30.301965],[-84.648211,30.389596],[-84.281256,30.685351],[-84.084086,30.674397]]]},"id":"12073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-88.881886,30.679874],[-88.843547,30.406027],[-89.341949,30.373165],[-89.341949,30.647012],[-88.881886,30.679874]]]},"id":"28047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.744516,30.657966],[-83.613069,30.652489],[-83.821193,30.301965],[-83.990978,30.082887],[-84.078609,30.093841],[-84.073132,30.27458],[-84.007409,30.674397],[-83.744516,30.657966]]]},"id":"12065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-103.346485,30.603196],[-102.56876,30.050025],[-102.322297,29.88024],[-102.678299,29.73784],[-102.919284,29.190146],[-103.280762,28.982022],[-103.790117,29.261346],[-103.801071,30.411504],[-103.439593,30.663443],[-103.346485,30.603196]]]},"id":"48043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.330078,30.657966],[-91.302693,30.652489],[-91.297217,30.647012],[-91.143862,30.323872],[-91.483432,30.499135],[-91.330078,30.657966]]]},"id":"22121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-102.56876,30.050025],[-102.344205,30.597719],[-101.769126,30.652489],[-101.758173,30.285534],[-101.76365,29.781655],[-102.322297,29.88024],[-102.56876,30.050025]]]},"id":"48443"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.355653,30.636058],[-83.311837,30.636058],[-83.169437,30.384119],[-83.246114,30.258149],[-83.366607,30.258149],[-83.509007,30.301965],[-83.821193,30.301965],[-83.613069,30.652489],[-83.355653,30.636058]]]},"id":"12079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.744046,30.652489],[-90.568783,30.652489],[-90.398998,30.285534],[-90.634507,30.219811],[-90.891923,30.34578],[-90.908354,30.647012],[-90.744046,30.652489]]]},"id":"22063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.495303,30.647012],[-89.341949,30.647012],[-89.341949,30.373165],[-89.522688,30.181472],[-89.686996,30.460796],[-89.495303,30.647012]]]},"id":"28045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.311837,30.636058],[-83.136575,30.625104],[-82.687466,30.597719],[-82.69842,30.597719],[-82.797005,30.334826],[-83.081806,30.438888],[-83.169437,30.384119],[-83.311837,30.636058]]]},"id":"12047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.832123,30.630581],[-95.361106,30.504611],[-95.163936,30.34578],[-95.098213,30.165041],[-95.218706,30.066456],[-95.804738,30.088364],[-95.804738,30.247195],[-95.832123,30.630581]]]},"id":"48339"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-104.98409,30.630581],[-103.801071,30.411504],[-103.790117,29.261346],[-104.507597,29.639255],[-104.98409,30.630581],[-104.98409,30.630581]]]},"id":"48377"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.973607,30.625104],[-97.371143,30.41698],[-97.650467,30.071933],[-97.666898,30.066456],[-97.710714,30.022641],[-98.170777,30.356734],[-98.126961,30.427934],[-98.050284,30.625104],[-97.973607,30.625104]]]},"id":"48453"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.16852,30.608673],[-84.933012,30.608673],[-85.113751,30.197903],[-85.22329,30.20338],[-85.387598,30.20338],[-85.382121,30.564858],[-85.16852,30.608673]]]},"id":"12013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.933012,30.608673],[-84.648211,30.389596],[-84.713934,30.301965],[-84.544149,30.011687],[-85.004212,30.011687],[-85.02612,29.973348],[-85.113751,30.197903],[-84.933012,30.608673]]]},"id":"12077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.69842,30.597719],[-82.687466,30.597719],[-82.583404,30.592243],[-82.457435,30.586766],[-82.457435,30.137656],[-82.528635,29.940487],[-82.660082,29.830948],[-82.802482,29.93501],[-82.797005,30.334826],[-82.69842,30.597719]]]},"id":"12023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.608509,30.586766],[-81.444201,30.510088],[-81.378478,30.252672],[-81.389431,30.252672],[-81.679709,30.121226],[-81.701617,30.192426],[-82.052141,30.186949],[-82.046664,30.27458],[-81.608509,30.586766]]]},"id":"12031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.419096,30.581289],[-82.216449,30.570335],[-82.052141,30.362211],[-82.046664,30.27458],[-82.052141,30.186949],[-82.052141,30.143133],[-82.145249,30.143133],[-82.298603,30.143133],[-82.457435,30.137656],[-82.457435,30.586766],[-82.419096,30.581289]]]},"id":"12003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.382121,30.564858],[-85.387598,30.20338],[-85.387598,29.924056],[-85.995538,30.269103],[-85.990061,30.389596],[-85.43689,30.570335],[-85.382121,30.564858]]]},"id":"12005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.157543,30.455319],[-96.96585,30.559381],[-96.64271,30.296488],[-96.796065,30.159564],[-96.801542,30.154087],[-97.026096,30.050025],[-97.332805,30.40055],[-97.157543,30.455319]]]},"id":"48287"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.44098,30.526519],[-94.074025,30.526519],[-94.117841,30.241718],[-94.117841,30.159564],[-94.216426,30.175995],[-94.446457,30.110272],[-94.731258,30.488181],[-94.545042,30.526519],[-94.44098,30.526519]]]},"id":"48199"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.411762,30.504611],[-98.351516,30.488181],[-98.126961,30.427934],[-98.170777,30.356734],[-98.296746,30.039072],[-98.411762,29.93501],[-98.587024,30.137656],[-98.592501,30.499135],[-98.411762,30.504611]]]},"id":"48031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.304503,30.499135],[-98.964933,30.499135],[-98.592501,30.499135],[-98.587024,30.137656],[-98.921118,30.137656],[-99.304503,30.285534],[-99.304503,30.499135]]]},"id":"48171"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.75728,30.499135],[-91.70251,30.499135],[-91.368417,30.060979],[-91.724418,30.121226],[-91.948972,30.071933],[-91.987311,30.367688],[-91.75728,30.499135]]]},"id":"22099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.521771,30.499135],[-91.483432,30.499135],[-91.143862,30.323872],[-91.023369,30.323872],[-91.105524,30.060979],[-91.226016,30.022641],[-91.368417,30.060979],[-91.70251,30.499135],[-91.521771,30.499135]]]},"id":"22047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.851751,30.493658],[-94.731258,30.488181],[-94.446457,30.110272],[-94.44098,29.891194],[-94.97772,29.885717],[-95.098213,30.165041],[-95.163936,30.34578],[-94.851751,30.493658]]]},"id":"48291"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.460608,30.488181],[-93.131992,30.40055],[-92.995068,30.039072],[-93.372977,30.050025],[-93.723501,30.050025],[-93.70707,30.247195],[-93.739932,30.40055],[-93.460608,30.488181]]]},"id":"22019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.770513,30.488181],[-92.628113,30.488181],[-92.63359,30.482704],[-92.628113,30.093841],[-92.737652,30.039072],[-92.995068,30.039072],[-93.131992,30.40055],[-93.131992,30.422457],[-92.770513,30.488181]]]},"id":"22053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.63359,30.482704],[-92.49119,30.482704],[-92.140665,30.296488],[-92.283066,30.14861],[-92.628113,30.093841],[-92.63359,30.482704]]]},"id":"22001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.081806,30.438888],[-82.797005,30.334826],[-82.802482,29.93501],[-82.879159,29.885717],[-83.246114,30.258149],[-83.169437,30.384119],[-83.081806,30.438888]]]},"id":"12121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.332805,30.40055],[-97.026096,30.050025],[-97.316374,29.787132],[-97.650467,30.071933],[-97.371143,30.41698],[-97.332805,30.40055]]]},"id":"48021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.297663,30.378642],[-96.155263,30.329349],[-96.095016,30.225288],[-96.144309,30.071933],[-96.379817,30.082887],[-96.620803,30.044549],[-96.796065,30.159564],[-96.64271,30.296488],[-96.297663,30.378642]]]},"id":"48477"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.053034,30.378642],[-91.987311,30.367688],[-91.948972,30.071933],[-91.965403,30.033595],[-92.250204,30.143133],[-92.283066,30.14861],[-92.140665,30.296488],[-92.053034,30.378642]]]},"id":"22055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.170777,30.356734],[-97.710714,30.022641],[-97.875022,29.858333],[-98.000992,29.754271],[-98.296746,30.039072],[-98.170777,30.356734]]]},"id":"48209"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.891923,30.34578],[-90.634507,30.219811],[-90.639984,30.165041],[-90.963123,30.066456],[-91.078139,30.07741],[-91.105524,30.060979],[-91.023369,30.323872],[-90.891923,30.34578]]]},"id":"22005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.509007,30.301965],[-83.366607,30.258149],[-83.317314,29.819994],[-83.410422,29.66664],[-83.990978,30.082887],[-83.821193,30.301965],[-83.509007,30.301965]]]},"id":"12123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-84.303164,30.301965],[-84.073132,30.27458],[-84.078609,30.093841],[-84.341502,29.962394],[-84.544149,30.011687],[-84.713934,30.301965],[-84.303164,30.301965]]]},"id":"12129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.398998,30.285534],[-90.278506,30.230764],[-90.420906,30.060979],[-90.541399,29.891194],[-90.656414,29.891194],[-90.639984,30.165041],[-90.634507,30.219811],[-90.398998,30.285534]]]},"id":"22095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.605735,30.291011],[-99.304503,30.285534],[-98.921118,30.137656],[-98.915641,29.781655],[-99.600258,29.907625],[-99.759089,30.071933],[-99.753612,30.291011],[-99.605735,30.291011]]]},"id":"48265"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.753612,30.291011],[-99.759089,30.071933],[-100.016506,29.622824],[-100.109614,29.622824],[-100.575153,29.622824],[-100.701123,29.622824],[-100.701123,30.291011],[-100.115091,30.291011],[-99.753612,30.291011]]]},"id":"48137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-101.544572,30.285534],[-100.958539,30.285534],[-100.701123,30.291011],[-100.701123,29.622824],[-100.794231,29.239438],[-101.413125,29.754271],[-101.76365,29.781655],[-101.758173,30.285534],[-101.544572,30.285534]]]},"id":"48465"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-83.246114,30.258149],[-82.879159,29.885717],[-82.906544,29.825471],[-82.917498,29.825471],[-82.922975,29.825471],[-82.939406,29.825471],[-83.317314,29.819994],[-83.366607,30.258149],[-83.246114,30.258149]]]},"id":"12067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.389431,30.252672],[-81.378478,30.252672],[-81.214169,29.672117],[-81.214169,29.672117],[-81.526355,29.622824],[-81.581124,29.841902],[-81.679709,30.121226],[-81.389431,30.252672]]]},"id":"12109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.821169,30.247195],[-95.804738,30.247195],[-95.804738,30.088364],[-95.826646,29.787132],[-95.826646,29.787132],[-96.03477,29.726886],[-96.144309,30.071933],[-96.095016,30.225288],[-95.821169,30.247195]]]},"id":"48473"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.70707,30.247195],[-93.723501,30.050025],[-93.854948,29.863809],[-94.117841,30.159564],[-94.117841,30.241718],[-93.898763,30.241718],[-93.70707,30.247195]]]},"id":"48361"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.420906,30.060979],[-90.278506,30.230764],[-90.229213,29.694024],[-90.541399,29.891194],[-90.420906,30.060979]]]},"id":"22089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.278506,30.230764],[-90.245644,30.225288],[-90.103244,30.192426],[-90.010136,29.896671],[-89.977274,29.447562],[-90.032043,29.431131],[-90.229213,29.694024],[-90.278506,30.230764]]]},"id":"22051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.22329,30.20338],[-85.113751,30.197903],[-85.02612,29.973348],[-85.217813,29.694024],[-85.387598,29.924056],[-85.387598,30.20338],[-85.22329,30.20338]]]},"id":"12045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.900597,30.192426],[-89.62675,30.14861],[-89.856781,30.00621],[-89.862258,30.000733],[-89.911551,29.869286],[-89.988228,29.907625],[-90.010136,29.896671],[-90.103244,30.192426],[-89.900597,30.192426]]]},"id":"22071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.701617,30.192426],[-81.679709,30.121226],[-81.581124,29.841902],[-82.046664,29.715932],[-82.052141,30.143133],[-82.052141,30.186949],[-81.701617,30.192426]]]},"id":"12019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.216426,30.175995],[-94.117841,30.159564],[-93.854948,29.863809],[-93.838517,29.688547],[-94.353349,29.562578],[-94.44098,29.891194],[-94.446457,30.110272],[-94.216426,30.175995]]]},"id":"48245"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.218706,30.066456],[-95.098213,30.165041],[-94.97772,29.885717],[-94.928428,29.672117],[-95.016059,29.557101],[-95.202275,29.562578],[-95.218706,29.557101],[-95.295383,29.595439],[-95.42683,29.579009],[-95.826646,29.787132],[-95.804738,30.088364],[-95.218706,30.066456]]]},"id":"48201"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.639984,30.165041],[-90.656414,29.891194],[-90.727615,29.913102],[-90.886446,29.907625],[-90.963123,30.066456],[-90.639984,30.165041]]]},"id":"22093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.801542,30.154087],[-96.796065,30.159564],[-96.620803,30.044549],[-96.57151,29.962394],[-96.872742,29.633778],[-97.141112,29.628301],[-97.316374,29.787132],[-97.316374,29.787132],[-97.026096,30.050025],[-96.801542,30.154087]]]},"id":"48149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-92.250204,30.143133],[-91.965403,30.033595],[-91.97088,29.803563],[-91.998265,29.61187],[-92.04208,29.579009],[-92.617159,29.579009],[-92.737652,30.039072],[-92.628113,30.093841],[-92.283066,30.14861],[-92.250204,30.143133]]]},"id":"22113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.145249,30.143133],[-82.052141,30.143133],[-82.046664,29.715932],[-82.052141,29.715932],[-82.419096,29.924056],[-82.145249,30.143133]]]},"id":"12007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.298603,30.143133],[-82.145249,30.143133],[-82.419096,29.924056],[-82.506727,29.940487],[-82.528635,29.940487],[-82.457435,30.137656],[-82.298603,30.143133]]]},"id":"12125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.921118,30.137656],[-98.587024,30.137656],[-98.411762,29.93501],[-98.64727,29.743317],[-98.778717,29.721409],[-98.915641,29.781655],[-98.921118,30.137656]]]},"id":"48259"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.724418,30.121226],[-91.368417,30.060979],[-91.226016,30.022641],[-91.253401,29.973348],[-91.472479,29.956917],[-91.532725,29.951441],[-91.877772,29.721409],[-91.97088,29.803563],[-91.965403,30.033595],[-91.948972,30.071933],[-91.724418,30.121226]]]},"id":"22045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.379817,30.082887],[-96.144309,30.071933],[-96.03477,29.726886],[-96.089539,29.600916],[-96.17717,29.633778],[-96.57151,29.962394],[-96.620803,30.044549],[-96.379817,30.082887]]]},"id":"48015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.759089,30.071933],[-99.600258,29.907625],[-99.605735,29.628301],[-100.016506,29.622824],[-99.759089,30.071933]]]},"id":"48385"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.078139,30.07741],[-90.963123,30.066456],[-90.886446,29.907625],[-91.006939,29.715932],[-91.083616,29.628301],[-91.100047,29.699501],[-91.253401,29.973348],[-91.226016,30.022641],[-91.105524,30.060979],[-91.078139,30.07741]]]},"id":"22007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.862258,30.000733],[-89.856781,30.00621],[-89.369334,29.913102],[-89.484349,29.622824],[-89.911551,29.869286],[-89.862258,30.000733]]]},"id":"22087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.666898,30.066456],[-97.650467,30.071933],[-97.316374,29.787132],[-97.316374,29.787132],[-97.634037,29.650209],[-97.798345,29.754271],[-97.875022,29.858333],[-97.710714,30.022641],[-97.666898,30.066456]]]},"id":"48055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-93.372977,30.050025],[-92.995068,30.039072],[-92.737652,30.039072],[-92.617159,29.579009],[-93.2251,29.776178],[-93.838517,29.688547],[-93.854948,29.863809],[-93.723501,30.050025],[-93.372977,30.050025]]]},"id":"22023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.296746,30.039072],[-98.000992,29.754271],[-98.313177,29.595439],[-98.64727,29.743317],[-98.411762,29.93501],[-98.296746,30.039072]]]},"id":"48091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-85.004212,30.011687],[-84.544149,30.011687],[-84.341502,29.962394],[-85.217813,29.694024],[-85.02612,29.973348],[-85.004212,30.011687]]]},"id":"12037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.472479,29.956917],[-91.253401,29.973348],[-91.100047,29.699501],[-91.472479,29.956917]]]},"id":"22099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.57151,29.962394],[-96.17717,29.633778],[-96.64271,29.250392],[-96.659141,29.261346],[-96.872742,29.633778],[-96.57151,29.962394]]]},"id":"48089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-91.532725,29.951441],[-91.472479,29.956917],[-91.100047,29.699501],[-91.083616,29.628301],[-91.275309,29.474947],[-91.877772,29.721409],[-91.532725,29.951441]]]},"id":"22101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.506727,29.940487],[-82.419096,29.924056],[-82.052141,29.715932],[-82.057618,29.46947],[-82.408142,29.485901],[-82.654605,29.562578],[-82.660082,29.830948],[-82.528635,29.940487],[-82.506727,29.940487]]]},"id":"12001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.879159,29.885717],[-82.802482,29.93501],[-82.660082,29.830948],[-82.654605,29.562578],[-82.873682,29.589962],[-82.939406,29.589962],[-82.922975,29.825471],[-82.917498,29.825471],[-82.906544,29.825471],[-82.879159,29.885717]]]},"id":"12041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.727615,29.913102],[-90.656414,29.891194],[-90.541399,29.891194],[-90.229213,29.694024],[-90.032043,29.431131],[-90.064905,29.212054],[-90.086813,29.162761],[-90.409952,29.195623],[-90.815246,29.776178],[-91.006939,29.715932],[-90.886446,29.907625],[-90.727615,29.913102]]]},"id":"22057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.600258,29.907625],[-98.915641,29.781655],[-98.778717,29.721409],[-98.806102,29.688547],[-99.414042,29.628301],[-99.605735,29.628301],[-99.600258,29.907625]]]},"id":"48019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-89.988228,29.907625],[-89.911551,29.869286],[-89.484349,29.622824],[-89.002379,29.179192],[-89.16121,29.009407],[-89.977274,29.447562],[-90.010136,29.896671],[-89.988228,29.907625]]]},"id":"22075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.44098,29.891194],[-94.353349,29.562578],[-94.36978,29.557101],[-94.36978,29.595439],[-94.512181,29.54067],[-94.928428,29.672117],[-94.97772,29.885717],[-94.44098,29.891194]]]},"id":"48071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.798345,29.754271],[-97.634037,29.650209],[-97.84216,29.376362],[-98.132438,29.442085],[-98.313177,29.595439],[-98.000992,29.754271],[-97.875022,29.858333],[-97.798345,29.754271]]]},"id":"48187"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.581124,29.841902],[-81.526355,29.622824],[-81.433247,29.39827],[-81.679709,29.327069],[-81.844017,29.518762],[-82.057618,29.46947],[-82.052141,29.715932],[-82.046664,29.715932],[-81.581124,29.841902]]]},"id":"12107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.939406,29.825471],[-82.922975,29.825471],[-82.939406,29.589962],[-83.16396,29.288731],[-83.410422,29.66664],[-83.317314,29.819994],[-82.939406,29.825471]]]},"id":"12029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.826646,29.787132],[-95.826646,29.787132],[-95.42683,29.579009],[-95.848554,29.261346],[-96.089539,29.600916],[-96.03477,29.726886],[-95.826646,29.787132]]]},"id":"48157"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.316374,29.787132],[-97.141112,29.628301],[-97.239697,29.381839],[-97.612129,29.107992],[-97.727145,29.223007],[-97.84216,29.376362],[-97.634037,29.650209],[-97.316374,29.787132]]]},"id":"48177"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-90.815246,29.776178],[-90.409952,29.195623],[-90.837154,29.036791],[-91.275309,29.474947],[-91.083616,29.628301],[-91.006939,29.715932],[-90.815246,29.776178]]]},"id":"22109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.64727,29.743317],[-98.313177,29.595439],[-98.132438,29.442085],[-98.285792,29.255869],[-98.406285,29.113469],[-98.800625,29.250392],[-98.806102,29.250392],[-98.806102,29.688547],[-98.778717,29.721409],[-98.64727,29.743317]]]},"id":"48029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.806102,29.688547],[-98.806102,29.250392],[-98.806102,29.091561],[-98.904687,29.091561],[-99.414042,29.091561],[-99.414042,29.628301],[-98.806102,29.688547]]]},"id":"48325"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.214169,29.672117],[-81.214169,29.672117],[-81.10463,29.425654],[-81.110107,29.425654],[-81.433247,29.39827],[-81.526355,29.622824],[-81.214169,29.672117]]]},"id":"12035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.17717,29.633778],[-96.089539,29.600916],[-95.848554,29.261346],[-95.875939,29.228484],[-96.308617,28.965591],[-96.64271,29.250392],[-96.17717,29.633778]]]},"id":"48481"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.872742,29.633778],[-96.659141,29.261346],[-96.938465,29.064176],[-96.976804,29.102515],[-97.239697,29.381839],[-97.141112,29.628301],[-96.872742,29.633778]]]},"id":"48285"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.605735,29.628301],[-99.414042,29.628301],[-99.414042,29.091561],[-100.109614,29.086084],[-100.109614,29.622824],[-100.016506,29.622824],[-99.605735,29.628301]]]},"id":"48463"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.575153,29.622824],[-100.109614,29.622824],[-100.109614,29.086084],[-100.668261,29.086084],[-100.794231,29.239438],[-100.701123,29.622824],[-100.575153,29.622824]]]},"id":"48271"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.295383,29.595439],[-95.218706,29.557101],[-95.120121,29.07513],[-95.508984,28.823191],[-95.864985,29.223007],[-95.875939,29.228484],[-95.848554,29.261346],[-95.42683,29.579009],[-95.295383,29.595439]]]},"id":"48039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-94.36978,29.595439],[-94.36978,29.557101],[-94.512181,29.54067],[-94.36978,29.595439]]]},"id":"48167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.873682,29.589962],[-82.654605,29.562578],[-82.408142,29.485901],[-82.534112,29.042268],[-82.758666,28.992976],[-83.16396,29.288731],[-82.939406,29.589962],[-82.873682,29.589962]]]},"id":"12075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.202275,29.562578],[-95.016059,29.557101],[-95.120121,29.07513],[-95.218706,29.557101],[-95.202275,29.562578]]]},"id":"48167"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.844017,29.518762],[-81.679709,29.327069],[-81.641371,29.277777],[-81.953556,28.960114],[-82.013803,28.960114],[-82.309557,28.960114],[-82.523158,29.042268],[-82.534112,29.042268],[-82.408142,29.485901],[-82.057618,29.46947],[-81.844017,29.518762]]]},"id":"12083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.285792,29.255869],[-98.132438,29.442085],[-97.84216,29.376362],[-97.727145,29.223007],[-98.192684,28.883437],[-98.406285,29.113469],[-98.285792,29.255869]]]},"id":"48493"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.110107,29.425654],[-81.10463,29.425654],[-80.732199,28.790329],[-80.989615,28.615067],[-81.367524,28.87796],[-81.641371,29.277777],[-81.679709,29.327069],[-81.433247,29.39827],[-81.110107,29.425654]]]},"id":"12127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.239697,29.381839],[-96.976804,29.102515],[-97.30542,28.861529],[-97.57379,28.812237],[-97.612129,29.107992],[-97.239697,29.381839]]]},"id":"48123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.641371,29.277777],[-81.367524,28.87796],[-81.411339,28.784852],[-81.542786,28.784852],[-81.657801,28.346697],[-81.959033,28.346697],[-81.953556,28.960114],[-81.641371,29.277777]]]},"id":"12069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.659141,29.261346],[-96.64271,29.250392],[-96.308617,28.965591],[-96.325048,28.675313],[-96.576987,28.708175],[-96.576987,28.702698],[-96.64271,28.713652],[-96.938465,29.064176],[-96.659141,29.261346]]]},"id":"48239"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.800625,29.250392],[-98.406285,29.113469],[-98.192684,28.883437],[-98.099576,28.784852],[-98.335085,28.615067],[-98.581547,28.642452],[-98.800625,28.636975],[-98.800625,28.647929],[-98.806102,29.091561],[-98.806102,29.250392],[-98.800625,29.250392]]]},"id":"48013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-95.864985,29.223007],[-95.508984,28.823191],[-96.379817,28.385036],[-96.37434,28.401466],[-96.325048,28.642452],[-96.325048,28.675313],[-96.308617,28.965591],[-95.875939,29.228484],[-95.864985,29.223007]]]},"id":"48321"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.727145,29.223007],[-97.612129,29.107992],[-97.57379,28.812237],[-97.776437,28.669836],[-97.935268,28.713652],[-98.006468,28.691744],[-98.099576,28.784852],[-98.192684,28.883437],[-97.727145,29.223007]]]},"id":"48255"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.976804,29.102515],[-96.938465,29.064176],[-96.64271,28.713652],[-96.653664,28.702698],[-96.889173,28.505528],[-97.146589,28.549344],[-97.16302,28.554821],[-97.30542,28.861529],[-96.976804,29.102515]]]},"id":"48469"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.904687,29.091561],[-98.806102,29.091561],[-98.800625,28.647929],[-99.397611,28.642452],[-99.408565,28.642452],[-99.414042,29.091561],[-98.904687,29.091561]]]},"id":"48163"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.414042,29.091561],[-99.408565,28.642452],[-99.780997,28.642452],[-100.115091,28.647929],[-100.109614,29.086084],[-99.414042,29.091561]]]},"id":"48507"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.109614,29.086084],[-100.115091,28.647929],[-100.115091,28.19882],[-100.213675,28.19882],[-100.668261,29.086084],[-100.109614,29.086084]]]},"id":"48323"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.523158,29.042268],[-82.309557,28.960114],[-82.265742,28.669836],[-82.649128,28.691744],[-82.758666,28.992976],[-82.534112,29.042268],[-82.523158,29.042268]]]},"id":"12017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.013803,28.960114],[-81.953556,28.960114],[-81.959033,28.346697],[-82.057618,28.313835],[-82.057618,28.478144],[-82.265742,28.669836],[-82.309557,28.960114],[-82.013803,28.960114]]]},"id":"12119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.30542,28.861529],[-97.16302,28.554821],[-97.37662,28.390513],[-97.776437,28.669836],[-97.57379,28.812237],[-97.30542,28.861529]]]},"id":"48175"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.411339,28.784852],[-81.367524,28.87796],[-80.989615,28.615067],[-81.411339,28.784852]]]},"id":"12117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.447398,27.859249],[-80.869122,27.820911],[-80.863645,28.346697],[-80.989615,28.615067],[-80.732199,28.790329],[-80.447398,27.859249]]]},"id":"12009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.099576,28.784852],[-98.006468,28.691744],[-97.820252,28.176912],[-97.880499,28.056419],[-98.2365,28.056419],[-98.335085,28.056419],[-98.335085,28.615067],[-98.099576,28.784852]]]},"id":"48297"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.542786,28.784852],[-81.411339,28.784852],[-80.989615,28.615067],[-80.863645,28.346697],[-81.2306,28.346697],[-81.657801,28.346697],[-81.542786,28.784852]]]},"id":"12095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.576987,28.708175],[-96.325048,28.675313],[-96.325048,28.642452],[-96.576987,28.702698],[-96.576987,28.708175]]]},"id":"48057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.935268,28.713652],[-97.776437,28.669836],[-97.37662,28.390513],[-97.540929,28.165958],[-97.820252,28.176912],[-98.006468,28.691744],[-97.935268,28.713652]]]},"id":"48025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.763203,28.41242],[-96.889173,28.505528],[-96.653664,28.702698],[-96.763203,28.41242]]]},"id":"48057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.265742,28.669836],[-82.057618,28.478144],[-82.254788,28.478144],[-82.676512,28.434328],[-82.649128,28.691744],[-82.265742,28.669836]]]},"id":"12053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.780997,28.642452],[-99.408565,28.642452],[-99.397611,28.642452],[-99.392134,28.204297],[-100.115091,28.19882],[-100.115091,28.647929],[-99.780997,28.642452]]]},"id":"48127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.800625,28.647929],[-98.800625,28.636975],[-98.800625,28.056419],[-99.392134,28.204297],[-99.397611,28.642452],[-98.800625,28.647929]]]},"id":"48283"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.581547,28.642452],[-98.335085,28.615067],[-98.335085,28.056419],[-98.800625,28.056419],[-98.800625,28.636975],[-98.581547,28.642452]]]},"id":"48311"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.146589,28.549344],[-96.889173,28.505528],[-96.763203,28.41242],[-96.790588,28.319312],[-97.261605,28.078327],[-97.540929,28.165958],[-97.37662,28.390513],[-97.16302,28.554821],[-97.146589,28.549344]]]},"id":"48391"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.254788,28.478144],[-82.057618,28.478144],[-82.057618,28.313835],[-82.106911,28.171435],[-82.649128,28.171435],[-82.802482,28.171435],[-82.676512,28.434328],[-82.254788,28.478144]]]},"id":"12101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.657801,28.346697],[-81.142969,27.645649],[-81.49897,27.645649],[-81.564693,27.645649],[-82.052141,27.645649],[-82.106911,28.171435],[-82.057618,28.313835],[-81.959033,28.346697],[-81.657801,28.346697]]]},"id":"12105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.2306,28.346697],[-80.863645,28.346697],[-80.869122,27.820911],[-80.874599,27.640172],[-81.142969,27.645649],[-81.657801,28.346697],[-81.2306,28.346697]]]},"id":"12097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.801542,28.275497],[-96.812495,28.21525],[-97.135635,27.903065],[-97.261605,28.078327],[-96.790588,28.319312],[-96.801542,28.275497]]]},"id":"48007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-100.115091,28.19882],[-99.392134,28.204297],[-98.800625,28.056419],[-98.800625,27.355371],[-98.953979,27.26774],[-99.359273,27.306078],[-99.452381,27.262263],[-100.213675,28.19882],[-100.115091,28.19882]]]},"id":"48479"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.820252,28.176912],[-97.540929,28.165958],[-97.261605,28.078327],[-97.135635,27.903065],[-97.365666,27.848295],[-97.803822,27.979742],[-97.798345,27.996173],[-97.880499,28.056419],[-97.820252,28.176912]]]},"id":"48409"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.649128,28.171435],[-82.106911,28.171435],[-82.052141,27.645649],[-82.28765,27.645649],[-82.55602,27.645649],[-82.649128,27.968788],[-82.649128,28.171435]]]},"id":"12057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.649128,28.171435],[-82.649128,27.968788],[-82.802482,28.171435],[-82.649128,28.171435]]]},"id":"12103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-96.828926,28.111189],[-96.856311,28.061896],[-97.048004,27.837342],[-97.053481,27.842818],[-96.828926,28.111189]]]},"id":"48007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.335085,28.056419],[-98.2365,28.056419],[-98.231023,27.262263],[-98.521301,27.26774],[-98.800625,27.355371],[-98.800625,28.056419],[-98.335085,28.056419]]]},"id":"48131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.2365,28.056419],[-97.880499,28.056419],[-97.798345,27.996173],[-97.940745,27.634695],[-98.011945,27.634695],[-98.055761,27.262263],[-98.231023,27.262263],[-98.2365,28.056419]]]},"id":"48249"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.803822,27.979742],[-97.365666,27.848295],[-97.327328,27.563495],[-97.940745,27.634695],[-97.798345,27.996173],[-97.803822,27.979742]]]},"id":"48355"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.321428,27.558018],[-80.677429,27.558018],[-80.792445,27.645649],[-80.874599,27.640172],[-80.869122,27.820911],[-80.447398,27.859249],[-80.321428,27.558018]]]},"id":"12061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.053481,27.842818],[-97.048004,27.837342],[-97.223266,27.574448],[-97.245174,27.579925],[-97.053481,27.842818]]]},"id":"48355"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.49897,27.645649],[-81.142969,27.645649],[-80.945799,27.21297],[-81.564693,27.032231],[-81.564693,27.33894],[-81.564693,27.645649],[-81.49897,27.645649]]]},"id":"12055"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.28765,27.645649],[-82.052141,27.645649],[-82.057618,27.33894],[-82.057618,27.207493],[-82.62722,27.388232],[-82.643651,27.388232],[-82.55602,27.645649],[-82.28765,27.645649]]]},"id":"12081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.052141,27.645649],[-81.564693,27.645649],[-81.564693,27.33894],[-81.581124,27.33894],[-82.057618,27.33894],[-82.052141,27.645649]]]},"id":"12049"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.792445,27.645649],[-80.677429,27.558018],[-80.677429,27.207493],[-80.885553,26.961031],[-80.945799,27.21297],[-81.142969,27.645649],[-80.874599,27.640172],[-80.792445,27.645649]]]},"id":"12093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.011945,27.634695],[-97.940745,27.634695],[-97.327328,27.563495],[-97.634037,27.284171],[-97.738098,27.273217],[-97.984561,27.207493],[-98.055761,27.262263],[-98.011945,27.634695]]]},"id":"48273"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.245174,27.579925],[-97.223266,27.574448],[-97.349236,27.278694],[-97.371143,27.278694],[-97.245174,27.579925]]]},"id":"48273"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.677429,27.558018],[-80.321428,27.558018],[-80.200935,27.262263],[-80.677429,27.207493],[-80.677429,27.558018]]]},"id":"12111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.62722,27.388232],[-82.057618,27.207493],[-82.057618,27.032231],[-82.375281,26.9446],[-82.643651,27.388232],[-82.62722,27.388232]]]},"id":"12115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.521301,27.26774],[-98.422716,26.785769],[-98.953979,26.785769],[-98.953979,27.26774],[-98.800625,27.355371],[-98.521301,27.26774]]]},"id":"48247"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.581124,27.33894],[-81.564693,27.33894],[-81.564693,27.032231],[-82.041187,27.032231],[-82.057618,27.032231],[-82.057618,27.207493],[-82.057618,27.33894],[-81.581124,27.33894]]]},"id":"12027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-99.359273,27.306078],[-98.953979,27.26774],[-98.953979,26.785769],[-99.16758,26.572168],[-99.452381,27.262263],[-99.359273,27.306078]]]},"id":"48505"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.738098,27.273217],[-97.634037,27.284171],[-97.442344,26.599553],[-97.655944,26.599553],[-97.957176,26.610507],[-97.984561,26.780292],[-97.984561,27.207493],[-97.738098,27.273217]]]},"id":"48261"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.371143,27.278694],[-97.349236,27.278694],[-97.288989,26.599553],[-97.316374,26.599553],[-97.371143,27.278694]]]},"id":"48261"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.521301,27.26774],[-98.231023,27.262263],[-98.055761,27.262263],[-97.984561,27.207493],[-97.984561,26.780292],[-98.318654,26.785769],[-98.422716,26.785769],[-98.521301,27.26774]]]},"id":"48047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.080443,26.971985],[-80.885553,26.961031],[-80.677429,27.207493],[-80.200935,27.262263],[-80.080443,26.971985]]]},"id":"12085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.945799,27.21297],[-80.885553,26.961031],[-80.96223,26.769338],[-81.564693,26.769338],[-81.564693,27.032231],[-80.945799,27.21297]]]},"id":"12043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.041187,27.032231],[-81.564693,27.032231],[-81.564693,26.769338],[-82.063095,26.769338],[-82.210972,26.774815],[-82.23288,26.780292],[-82.23288,26.785769],[-82.271219,26.791246],[-82.375281,26.9446],[-82.057618,27.032231],[-82.041187,27.032231]]]},"id":"12015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.885553,26.961031],[-80.080443,26.971985],[-80.074966,26.320229],[-80.250228,26.33666],[-80.880076,26.331183],[-80.885553,26.961031]]]},"id":"12099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.96223,26.769338],[-80.885553,26.961031],[-80.880076,26.331183],[-80.880076,26.259983],[-81.564693,26.511922],[-81.564693,26.769338],[-80.96223,26.769338]]]},"id":"12051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.953979,26.785769],[-98.422716,26.785769],[-98.318654,26.785769],[-98.587024,26.254506],[-99.16758,26.572168],[-98.953979,26.785769]]]},"id":"48427"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-98.318654,26.785769],[-97.984561,26.780292],[-97.957176,26.610507],[-97.864068,26.347614],[-97.864068,26.051859],[-98.587024,26.254506],[-98.318654,26.785769]]]},"id":"48215"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-82.063095,26.769338],[-81.564693,26.769338],[-81.564693,26.511922],[-81.844017,26.331183],[-82.063095,26.769338]]]},"id":"12071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.655944,26.599553],[-97.442344,26.599553],[-97.382097,26.413337],[-97.864068,26.347614],[-97.957176,26.610507],[-97.655944,26.599553]]]},"id":"48489"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.316374,26.599553],[-97.288989,26.599553],[-97.223266,26.413337],[-97.239697,26.413337],[-97.316374,26.599553]]]},"id":"48489"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-81.564693,26.511922],[-80.880076,26.259983],[-80.874599,25.980659],[-80.874599,25.805397],[-81.345616,25.805397],[-81.679709,25.843735],[-81.844017,26.331183],[-81.564693,26.511922]]]},"id":"12021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.864068,26.347614],[-97.382097,26.413337],[-97.371143,25.838258],[-97.864068,26.051859],[-97.864068,26.347614]]]},"id":"48061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.250228,26.33666],[-80.074966,26.320229],[-80.118781,25.975182],[-80.874599,25.980659],[-80.880076,26.259983],[-80.880076,26.331183],[-80.250228,26.33666]]]},"id":"12011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.874599,25.980659],[-80.118781,25.975182],[-80.304997,25.383672],[-80.858168,25.175549],[-80.874599,25.805397],[-80.874599,25.980659]]]},"id":"12086"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-80.874599,25.805397],[-80.858168,25.175549],[-81.077246,25.120779],[-81.345616,25.805397],[-80.874599,25.805397]]]},"id":"12087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-157.951581,21.697691],[-157.655826,21.303352],[-158.110412,21.303352],[-157.951581,21.697691]]]},"id":"15003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-156.587823,21.029505],[-156.00179,20.793996],[-156.379699,20.580396],[-156.587823,21.029505]]]},"id":"15009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-155.634835,18.948267],[-155.881297,19.035898],[-156.062036,19.73147],[-155.87582,20.26821],[-155.284311,20.021748],[-154.807817,19.523346],[-155.634835,18.948267]]]},"id":"15001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.105571,18.515589],[-67.105571,18.515589],[-66.957694,18.488204],[-66.919355,18.395096],[-67.012463,18.395096],[-67.028894,18.395096],[-67.056278,18.46082],[-67.105571,18.515589]]]},"id":"72071"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.105571,18.515589],[-67.056278,18.46082],[-67.132956,18.389619],[-67.16034,18.417004],[-67.105571,18.515589],[-67.105571,18.515589]]]},"id":"72005"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.585262,18.482727],[-66.585262,18.482727],[-66.590739,18.389619],[-66.590739,18.340327],[-66.607169,18.329373],[-66.711231,18.312942],[-66.771478,18.323896],[-66.766001,18.482727],[-66.585262,18.482727]]]},"id":"72013"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.766001,18.482727],[-66.771478,18.323896],[-66.826247,18.323896],[-66.826247,18.340327],[-66.837201,18.488204],[-66.766001,18.482727]]]},"id":"72065"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.902924,18.482727],[-66.897447,18.367712],[-66.919355,18.395096],[-66.957694,18.488204],[-66.902924,18.482727]]]},"id":"72115"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.837201,18.488204],[-66.826247,18.340327],[-66.89197,18.367712],[-66.897447,18.367712],[-66.902924,18.482727],[-66.837201,18.488204]]]},"id":"72027"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.585262,18.482727],[-66.585262,18.482727],[-66.535969,18.482727],[-66.541446,18.40605],[-66.590739,18.389619],[-66.585262,18.482727]]]},"id":"72017"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.349753,18.488204],[-66.377138,18.345804],[-66.442861,18.373189],[-66.437384,18.482727],[-66.437384,18.488204],[-66.349753,18.488204]]]},"id":"72145"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.316892,18.47725],[-66.305938,18.384142],[-66.316892,18.367712],[-66.366184,18.33485],[-66.377138,18.345804],[-66.349753,18.488204],[-66.316892,18.47725]]]},"id":"72143"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.437384,18.482727],[-66.442861,18.373189],[-66.464769,18.373189],[-66.475723,18.367712],[-66.535969,18.351281],[-66.541446,18.400573],[-66.541446,18.40605],[-66.535969,18.482727],[-66.437384,18.488204],[-66.437384,18.482727]]]},"id":"72091"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.196399,18.466297],[-66.251168,18.395096],[-66.305938,18.384142],[-66.316892,18.47725],[-66.196399,18.466297]]]},"id":"72051"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.037568,18.449866],[-65.999229,18.378666],[-66.043044,18.312942],[-66.064952,18.301988],[-66.081383,18.296511],[-66.108768,18.438912],[-66.125199,18.46082],[-66.037568,18.449866]]]},"id":"72127"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.141629,18.46082],[-66.169014,18.433435],[-66.196399,18.389619],[-66.218307,18.395096],[-66.251168,18.395096],[-66.196399,18.466297],[-66.141629,18.46082]]]},"id":"72137"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.125199,18.46082],[-66.108768,18.438912],[-66.130676,18.422481],[-66.130676,18.422481],[-66.169014,18.433435],[-66.141629,18.46082],[-66.125199,18.46082]]]},"id":"72033"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.056278,18.46082],[-67.028894,18.395096],[-67.050802,18.307465],[-67.122002,18.323896],[-67.127479,18.318419],[-67.132956,18.389619],[-67.056278,18.46082]]]},"id":"72099"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.829444,18.422481],[-65.867782,18.378666],[-65.911598,18.400573],[-65.917075,18.400573],[-65.993752,18.46082],[-65.829444,18.422481]]]},"id":"72087"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.993752,18.46082],[-65.917075,18.400573],[-65.917075,18.269127],[-65.94446,18.291034],[-65.999229,18.378666],[-66.037568,18.449866],[-65.993752,18.46082]]]},"id":"72031"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.130676,18.422481],[-66.108768,18.438912],[-66.081383,18.296511],[-66.141629,18.280081],[-66.130676,18.422481],[-66.130676,18.422481]]]},"id":"72061"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.169014,18.433435],[-66.130676,18.422481],[-66.141629,18.280081],[-66.190922,18.258173],[-66.207353,18.274604],[-66.207353,18.318419],[-66.196399,18.389619],[-66.169014,18.433435]]]},"id":"72021"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.752767,18.384142],[-65.758244,18.291034],[-65.769197,18.280081],[-65.823967,18.274604],[-65.834921,18.274604],[-65.867782,18.378666],[-65.829444,18.422481],[-65.752767,18.384142]]]},"id":"72119"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.16034,18.417004],[-67.132956,18.389619],[-67.127479,18.318419],[-67.182248,18.312942],[-67.237017,18.373189],[-67.16034,18.417004]]]},"id":"72003"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.911598,18.400573],[-65.867782,18.378666],[-65.834921,18.274604],[-65.851352,18.252696],[-65.917075,18.269127],[-65.917075,18.400573],[-65.911598,18.400573]]]},"id":"72029"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.541446,18.400573],[-66.535969,18.351281],[-66.590739,18.340327],[-66.590739,18.389619],[-66.541446,18.40605],[-66.541446,18.400573]]]},"id":"72054"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.218307,18.395096],[-66.196399,18.389619],[-66.207353,18.318419],[-66.256645,18.329373],[-66.278553,18.329373],[-66.305938,18.367712],[-66.316892,18.367712],[-66.305938,18.384142],[-66.251168,18.395096],[-66.218307,18.395096]]]},"id":"72135"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.012463,18.395096],[-66.919355,18.395096],[-66.897447,18.367712],[-66.89197,18.367712],[-66.908401,18.252696],[-67.039848,18.291034],[-67.050802,18.307465],[-67.028894,18.395096],[-67.012463,18.395096]]]},"id":"72131"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.632274,18.285558],[-65.752767,18.296511],[-65.670613,18.362235],[-65.632274,18.285558]]]},"id":"72053"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.758244,18.291034],[-65.752767,18.384142],[-65.670613,18.362235],[-65.752767,18.296511],[-65.758244,18.291034]]]},"id":"72089"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.999229,18.378666],[-65.94446,18.291034],[-65.982798,18.312942],[-66.021137,18.307465],[-66.043044,18.312942],[-65.999229,18.378666]]]},"id":"72139"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.442861,18.373189],[-66.377138,18.345804],[-66.366184,18.33485],[-66.377138,18.296511],[-66.453815,18.258173],[-66.464769,18.373189],[-66.442861,18.373189]]]},"id":"72101"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.237017,18.373189],[-67.182248,18.312942],[-67.226064,18.296511],[-67.237017,18.373189]]]},"id":"72117"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.475723,18.367712],[-66.464769,18.373189],[-66.453815,18.258173],[-66.541446,18.165065],[-66.568831,18.296511],[-66.607169,18.329373],[-66.590739,18.340327],[-66.535969,18.351281],[-66.475723,18.367712]]]},"id":"72039"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.305938,18.367712],[-66.278553,18.329373],[-66.311415,18.247219],[-66.349753,18.241742],[-66.377138,18.296511],[-66.366184,18.33485],[-66.316892,18.367712],[-66.305938,18.367712]]]},"id":"72047"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.89197,18.367712],[-66.826247,18.340327],[-66.826247,18.323896],[-66.815293,18.230788],[-66.826247,18.170542],[-66.837201,18.170542],[-66.897447,18.186973],[-66.908401,18.252696],[-66.89197,18.367712]]]},"id":"72081"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.711231,18.312942],[-66.607169,18.329373],[-66.568831,18.296511],[-66.650985,18.159588],[-66.672893,18.154111],[-66.722185,18.219834],[-66.815293,18.230788],[-66.826247,18.323896],[-66.771478,18.323896],[-66.711231,18.312942]]]},"id":"72141"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.256645,18.329373],[-66.207353,18.318419],[-66.207353,18.274604],[-66.267599,18.247219],[-66.311415,18.247219],[-66.278553,18.329373],[-66.256645,18.329373]]]},"id":"72105"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.122002,18.323896],[-67.050802,18.307465],[-67.039848,18.291034],[-67.083663,18.252696],[-67.16034,18.274604],[-67.187725,18.269127],[-67.226064,18.296511],[-67.182248,18.312942],[-67.127479,18.318419],[-67.122002,18.323896]]]},"id":"72011"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.021137,18.307465],[-65.999229,18.20888],[-66.053998,18.115772],[-66.097814,18.170542],[-66.119722,18.20888],[-66.064952,18.301988],[-66.043044,18.312942],[-66.021137,18.307465]]]},"id":"72025"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.982798,18.312942],[-65.94446,18.291034],[-65.917075,18.269127],[-65.949936,18.230788],[-65.966367,18.230788],[-65.999229,18.20888],[-66.021137,18.307465],[-65.982798,18.312942]]]},"id":"72063"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.064952,18.301988],[-66.119722,18.20888],[-66.147106,18.230788],[-66.169014,18.225311],[-66.190922,18.258173],[-66.141629,18.280081],[-66.081383,18.296511],[-66.064952,18.301988]]]},"id":"72007"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.568831,18.296511],[-66.541446,18.165065],[-66.546923,18.154111],[-66.5524,18.154111],[-66.650985,18.159588],[-66.568831,18.296511]]]},"id":"72073"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.752767,18.296511],[-65.632274,18.285558],[-65.659659,18.20888],[-65.769197,18.280081],[-65.758244,18.291034],[-65.752767,18.296511]]]},"id":"72037"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.823967,18.274604],[-65.769197,18.280081],[-65.659659,18.20888],[-65.741813,18.176019],[-65.823967,18.197926],[-65.823967,18.274604]]]},"id":"72103"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.377138,18.296511],[-66.349753,18.241742],[-66.371661,18.176019],[-66.442861,18.176019],[-66.453815,18.176019],[-66.519538,18.154111],[-66.546923,18.154111],[-66.541446,18.165065],[-66.453815,18.258173],[-66.377138,18.296511]]]},"id":"72107"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.039848,18.291034],[-66.908401,18.252696],[-66.897447,18.186973],[-66.913878,18.19245],[-67.01794,18.197926],[-67.083663,18.252696],[-67.039848,18.291034]]]},"id":"72083"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.207353,18.274604],[-66.190922,18.258173],[-66.169014,18.225311],[-66.240214,18.186973],[-66.267599,18.247219],[-66.207353,18.274604]]]},"id":"72045"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.823967,18.274604],[-65.823967,18.197926],[-65.878736,18.115772],[-65.906121,18.126726],[-65.928029,18.121249],[-65.928029,18.143157],[-65.851352,18.252696],[-65.834921,18.274604],[-65.823967,18.274604]]]},"id":"72085"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.16034,18.274604],[-67.083663,18.252696],[-67.01794,18.197926],[-67.050802,18.176019],[-67.083663,18.148634],[-67.116525,18.159588],[-67.16034,18.154111],[-67.182248,18.170542],[-67.187725,18.269127],[-67.16034,18.274604]]]},"id":"72097"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.917075,18.269127],[-65.851352,18.252696],[-65.928029,18.143157],[-65.949936,18.230788],[-65.917075,18.269127]]]},"id":"72077"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.722185,18.219834],[-66.672893,18.154111],[-66.6948,18.132203],[-66.716708,18.132203],[-66.771478,18.13768],[-66.798862,18.132203],[-66.826247,18.170542],[-66.815293,18.230788],[-66.722185,18.219834]]]},"id":"72001"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.311415,18.247219],[-66.267599,18.247219],[-66.240214,18.186973],[-66.240214,18.181496],[-66.278553,18.176019],[-66.316892,18.154111],[-66.371661,18.176019],[-66.349753,18.241742],[-66.311415,18.247219]]]},"id":"72019"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.147106,18.230788],[-66.119722,18.20888],[-66.097814,18.170542],[-66.097814,18.159588],[-66.218307,18.143157],[-66.240214,18.181496],[-66.240214,18.186973],[-66.169014,18.225311],[-66.147106,18.230788]]]},"id":"72041"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.966367,18.230788],[-65.949936,18.230788],[-65.928029,18.143157],[-65.928029,18.121249],[-66.010183,18.077434],[-66.053998,18.110295],[-66.053998,18.115772],[-65.999229,18.20888],[-65.966367,18.230788]]]},"id":"72129"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.913878,18.19245],[-66.897447,18.186973],[-66.837201,18.170542],[-66.924832,18.148634],[-66.979601,18.143157],[-67.050802,18.176019],[-67.01794,18.197926],[-66.913878,18.19245]]]},"id":"72093"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.823967,18.197926],[-65.741813,18.176019],[-65.796582,18.071957],[-65.878736,18.115772],[-65.823967,18.197926]]]},"id":"72069"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.278553,18.176019],[-66.240214,18.181496],[-66.218307,18.143157],[-66.223784,18.093865],[-66.256645,18.077434],[-66.316892,18.154111],[-66.278553,18.176019]]]},"id":"72009"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.453815,18.176019],[-66.442861,18.176019],[-66.431907,18.082911],[-66.519538,18.154111],[-66.453815,18.176019]]]},"id":"72149"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.371661,18.176019],[-66.316892,18.154111],[-66.256645,18.077434],[-66.333322,18.017187],[-66.382615,18.039095],[-66.42643,18.044572],[-66.431907,18.082911],[-66.442861,18.176019],[-66.371661,18.176019]]]},"id":"72043"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.050802,18.176019],[-66.979601,18.143157],[-66.985078,18.050049],[-67.067232,18.06648],[-67.111048,18.055526],[-67.100094,18.104819],[-67.083663,18.148634],[-67.050802,18.176019]]]},"id":"72125"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.650985,18.159588],[-66.5524,18.154111],[-66.535969,17.978849],[-66.700277,17.978849],[-66.6948,18.132203],[-66.672893,18.154111],[-66.650985,18.159588]]]},"id":"72113"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.826247,18.170542],[-66.798862,18.132203],[-66.853632,17.956941],[-66.859109,17.956941],[-66.886493,18.022664],[-66.924832,18.148634],[-66.837201,18.170542],[-66.826247,18.170542]]]},"id":"72153"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.097814,18.159588],[-66.097814,18.170542],[-66.053998,18.115772],[-66.053998,18.110295],[-66.053998,18.104819],[-66.075906,18.104819],[-66.163537,18.050049],[-66.223784,18.093865],[-66.218307,18.143157],[-66.097814,18.159588]]]},"id":"72035"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.182248,18.170542],[-67.16034,18.154111],[-67.100094,18.104819],[-67.111048,18.055526],[-67.111048,17.945987],[-67.182248,18.170542]]]},"id":"72023"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.116525,18.159588],[-67.083663,18.148634],[-67.100094,18.104819],[-67.16034,18.154111],[-67.116525,18.159588]]]},"id":"72067"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.546923,18.154111],[-66.519538,18.154111],[-66.431907,18.082911],[-66.42643,18.044572],[-66.448338,17.984326],[-66.535969,17.978849],[-66.5524,18.154111],[-66.546923,18.154111]]]},"id":"72075"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.924832,18.148634],[-66.886493,18.022664],[-66.957694,18.033618],[-66.985078,18.050049],[-66.979601,18.143157],[-66.924832,18.148634]]]},"id":"72121"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.798862,18.132203],[-66.771478,18.13768],[-66.755047,18.000757],[-66.853632,17.956941],[-66.798862,18.132203]]]},"id":"72059"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.716708,18.132203],[-66.6948,18.132203],[-66.700277,17.978849],[-66.755047,18.000757],[-66.771478,18.13768],[-66.716708,18.132203]]]},"id":"72111"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.906121,18.126726],[-65.878736,18.115772],[-65.796582,18.071957],[-65.851352,18.011711],[-65.988275,18.061003],[-66.010183,18.077434],[-65.928029,18.121249],[-65.906121,18.126726]]]},"id":"72151"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.053998,18.104819],[-66.053998,18.110295],[-66.010183,18.077434],[-65.988275,18.061003],[-65.911598,17.984326],[-66.021137,17.978849],[-66.059475,18.039095],[-66.081383,18.033618],[-66.053998,18.104819]]]},"id":"72109"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.075906,18.104819],[-66.053998,18.104819],[-66.081383,18.033618],[-66.070429,17.967895],[-66.207353,17.962418],[-66.163537,18.050049],[-66.075906,18.104819]]]},"id":"72057"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.223784,18.093865],[-66.163537,18.050049],[-66.207353,17.962418],[-66.338799,17.978849],[-66.333322,18.017187],[-66.256645,18.077434],[-66.223784,18.093865]]]},"id":"72123"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-67.067232,18.06648],[-66.985078,18.050049],[-66.957694,18.033618],[-66.979601,17.951464],[-67.111048,17.945987],[-67.111048,18.055526],[-67.067232,18.06648]]]},"id":"72079"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-65.988275,18.061003],[-65.851352,18.011711],[-65.911598,17.984326],[-65.988275,18.061003]]]},"id":"72095"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.382615,18.039095],[-66.333322,18.017187],[-66.338799,17.978849],[-66.448338,17.984326],[-66.42643,18.044572],[-66.382615,18.039095]]]},"id":"72133"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.059475,18.039095],[-66.021137,17.978849],[-66.070429,17.967895],[-66.081383,18.033618],[-66.059475,18.039095]]]},"id":"72015"},
+{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-66.957694,18.033618],[-66.886493,18.022664],[-66.859109,17.956941],[-66.979601,17.951464],[-66.957694,18.033618]]]},"id":"72055"}]}
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/examples/data/us-state-centroids.json b/static/vendor/d3-2.8.1/examples/data/us-state-centroids.json
new file mode 100755 (executable)
index 0000000..950d9bc
--- /dev/null
@@ -0,0 +1,54 @@
+{"type":"FeatureCollection","features":[
+{"type":"Feature","id":"01","geometry":{"type":"Point","coordinates":[-86.766233,33.001471]},"properties":{"name":"Alabama","population":4447100}},
+{"type":"Feature","id":"02","geometry":{"type":"Point","coordinates":[-148.716968,61.288254]},"properties":{"name":"Alaska","population":626932}},
+{"type":"Feature","id":"04","geometry":{"type":"Point","coordinates":[-111.828711,33.373506]},"properties":{"name":"Arizona","population":5130632}},
+{"type":"Feature","id":"05","geometry":{"type":"Point","coordinates":[-92.576816,35.080251]},"properties":{"name":"Arkansas","population":2673400}},
+{"type":"Feature","id":"06","geometry":{"type":"Point","coordinates":[-119.355165,35.458606]},"properties":{"name":"California","population":33871648}},
+{"type":"Feature","id":"08","geometry":{"type":"Point","coordinates":[-105.203628,39.500656]},"properties":{"name":"Colorado","population":4301261}},
+{"type":"Feature","id":"09","geometry":{"type":"Point","coordinates":[-72.874365,41.494852]},"properties":{"name":"Connecticut","population":3405565}},
+{"type":"Feature","id":"10","geometry":{"type":"Point","coordinates":[-75.561908,39.397164]},"properties":{"name":"Delaware","population":783600}},
+{"type":"Feature","id":"11","geometry":{"type":"Point","coordinates":[-77.014001,38.910092]},"properties":{"name":"District of Columbia","population":572059}},
+{"type":"Feature","id":"12","geometry":{"type":"Point","coordinates":[-81.634622,27.795850]},"properties":{"name":"Florida","population":15982378}},
+{"type":"Feature","id":"13","geometry":{"type":"Point","coordinates":[-83.868887,33.332208]},"properties":{"name":"Georgia","population":8186453}},
+{"type":"Feature","id":"15","geometry":{"type":"Point","coordinates":[-157.524452,21.146768]},"properties":{"name":"Hawaii","population":1211537}},
+{"type":"Feature","id":"16","geometry":{"type":"Point","coordinates":[-115.133222,44.242605]},"properties":{"name":"Idaho","population":1293953}},
+{"type":"Feature","id":"17","geometry":{"type":"Point","coordinates":[-88.380238,41.278216]},"properties":{"name":"Illinois","population":12419293}},
+{"type":"Feature","id":"18","geometry":{"type":"Point","coordinates":[-86.261515,40.163935]},"properties":{"name":"Indiana","population":6080485}},
+{"type":"Feature","id":"19","geometry":{"type":"Point","coordinates":[-93.049161,41.960392]},"properties":{"name":"Iowa","population":2926324}},
+{"type":"Feature","id":"20","geometry":{"type":"Point","coordinates":[-96.536052,38.454303]},"properties":{"name":"Kansas","population":2688418}},
+{"type":"Feature","id":"21","geometry":{"type":"Point","coordinates":[-85.241819,37.808159]},"properties":{"name":"Kentucky","population":4041769}},
+{"type":"Feature","id":"22","geometry":{"type":"Point","coordinates":[-91.457133,30.699270]},"properties":{"name":"Louisiana","population":4468976}},
+{"type":"Feature","id":"23","geometry":{"type":"Point","coordinates":[-69.719931,44.313614]},"properties":{"name":"Maine","population":1274923}},
+{"type":"Feature","id":"24","geometry":{"type":"Point","coordinates":[-76.797396,39.145653]},"properties":{"name":"Maryland","population":5296486}},
+{"type":"Feature","id":"25","geometry":{"type":"Point","coordinates":[-71.363628,42.271831]},"properties":{"name":"Massachusetts","population":6349097}},
+{"type":"Feature","id":"26","geometry":{"type":"Point","coordinates":[-84.170753,42.866412]},"properties":{"name":"Michigan","population":9938444}},
+{"type":"Feature","id":"27","geometry":{"type":"Point","coordinates":[-93.583003,45.210782]},"properties":{"name":"Minnesota","population":4919479}},
+{"type":"Feature","id":"28","geometry":{"type":"Point","coordinates":[-89.593164,32.566420]},"properties":{"name":"Mississippi","population":2844658}},
+{"type":"Feature","id":"29","geometry":{"type":"Point","coordinates":[-92.153770,38.437715]},"properties":{"name":"Missouri","population":5595211}},
+{"type":"Feature","id":"30","geometry":{"type":"Point","coordinates":[-111.209708,46.813302]},"properties":{"name":"Montana","population":902195}},
+{"type":"Feature","id":"31","geometry":{"type":"Point","coordinates":[-97.403875,41.183753]},"properties":{"name":"Nebraska","population":1711263}},
+{"type":"Feature","id":"32","geometry":{"type":"Point","coordinates":[-116.304648,37.165965]},"properties":{"name":"Nevada","population":1998257}},
+{"type":"Feature","id":"33","geometry":{"type":"Point","coordinates":[-71.463342,43.153046]},"properties":{"name":"New Hampshire","population":1235786}},
+{"type":"Feature","id":"34","geometry":{"type":"Point","coordinates":[-74.428055,40.438458]},"properties":{"name":"New Jersey","population":8414350}},
+{"type":"Feature","id":"35","geometry":{"type":"Point","coordinates":[-106.342108,34.623012]},"properties":{"name":"New Mexico","population":1819046}},
+{"type":"Feature","id":"36","geometry":{"type":"Point","coordinates":[-74.645228,41.507548]},"properties":{"name":"New York","population":18976457}},
+{"type":"Feature","id":"37","geometry":{"type":"Point","coordinates":[-79.667654,35.553334]},"properties":{"name":"North Carolina","population":8049313}},
+{"type":"Feature","id":"38","geometry":{"type":"Point","coordinates":[-99.334736,47.375168]},"properties":{"name":"North Dakota","population":642200}},
+{"type":"Feature","id":"39","geometry":{"type":"Point","coordinates":[-82.749366,40.480854]},"properties":{"name":"Ohio","population":11353140}},
+{"type":"Feature","id":"40","geometry":{"type":"Point","coordinates":[-96.834653,35.597940]},"properties":{"name":"Oklahoma","population":3450654}},
+{"type":"Feature","id":"41","geometry":{"type":"Point","coordinates":[-122.579524,44.732273]},"properties":{"name":"Oregon","population":3421399}},
+{"type":"Feature","id":"42","geometry":{"type":"Point","coordinates":[-77.075925,40.463528]},"properties":{"name":"Pennsylvania","population":12281054}},
+{"type":"Feature","id":"44","geometry":{"type":"Point","coordinates":[-71.448902,41.753318]},"properties":{"name":"Rhode Island","population":1048319}},
+{"type":"Feature","id":"45","geometry":{"type":"Point","coordinates":[-81.032387,34.034551]},"properties":{"name":"South Carolina","population":4012012}},
+{"type":"Feature","id":"46","geometry":{"type":"Point","coordinates":[-99.043799,44.047502]},"properties":{"name":"South Dakota","population":754844}},
+{"type":"Feature","id":"47","geometry":{"type":"Point","coordinates":[-86.397772,35.795862]},"properties":{"name":"Tennessee","population":5689283}},
+{"type":"Feature","id":"48","geometry":{"type":"Point","coordinates":[-97.388631,30.943149]},"properties":{"name":"Texas","population":20851820}},
+{"type":"Feature","id":"49","geometry":{"type":"Point","coordinates":[-111.900160,40.438987]},"properties":{"name":"Utah","population":2233169}},
+{"type":"Feature","id":"50","geometry":{"type":"Point","coordinates":[-72.814309,44.081127]},"properties":{"name":"Vermont","population":608827}},
+{"type":"Feature","id":"51","geometry":{"type":"Point","coordinates":[-77.835857,37.750345]},"properties":{"name":"Virginia","population":7078515}},
+{"type":"Feature","id":"53","geometry":{"type":"Point","coordinates":[-121.624501,47.341728]},"properties":{"name":"Washington","population":5894121}},
+{"type":"Feature","id":"54","geometry":{"type":"Point","coordinates":[-80.820221,38.767195]},"properties":{"name":"West Virginia","population":1808344}},
+{"type":"Feature","id":"55","geometry":{"type":"Point","coordinates":[-89.001006,43.728544]},"properties":{"name":"Wisconsin","population":5363675}},
+{"type":"Feature","id":"56","geometry":{"type":"Point","coordinates":[-107.008835,42.675762]},"properties":{"name":"Wyoming","population":493782}},
+{"type":"Feature","id":"72","geometry":{"type":"Point","coordinates":[-66.58765,18.19958]},"properties":{"code":"PR","name":"Puerto Rico","population":3808610}}
+]}
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/examples/data/us-states.json b/static/vendor/d3-2.8.1/examples/data/us-states.json
new file mode 100755 (executable)
index 0000000..cd1b637
--- /dev/null
@@ -0,0 +1,54 @@
+{"type":"FeatureCollection","features":[
+{"type":"Feature","id":"01","properties":{"name":"Alabama"},"geometry":{"type":"Polygon","coordinates":[[[-87.359296,35.00118],[-85.606675,34.984749],[-85.431413,34.124869],[-85.184951,32.859696],[-85.069935,32.580372],[-84.960397,32.421541],[-85.004212,32.322956],[-84.889196,32.262709],[-85.058981,32.13674],[-85.053504,32.01077],[-85.141136,31.840985],[-85.042551,31.539753],[-85.113751,31.27686],[-85.004212,31.003013],[-85.497137,30.997536],[-87.600282,30.997536],[-87.633143,30.86609],[-87.408589,30.674397],[-87.446927,30.510088],[-87.37025,30.427934],[-87.518128,30.280057],[-87.655051,30.247195],[-87.90699,30.411504],[-87.934375,30.657966],[-88.011052,30.685351],[-88.10416,30.499135],[-88.137022,30.318396],[-88.394438,30.367688],[-88.471115,31.895754],[-88.241084,33.796253],[-88.098683,34.891641],[-88.202745,34.995703],[-87.359296,35.00118]]]}},
+{"type":"Feature","id":"02","properties":{"name":"Alaska"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-131.602021,55.117982],[-131.569159,55.28229],[-131.355558,55.183705],[-131.38842,55.01392],[-131.645836,55.035827],[-131.602021,55.117982]]],[[[-131.832052,55.42469],[-131.645836,55.304197],[-131.749898,55.128935],[-131.832052,55.189182],[-131.832052,55.42469]]],[[[-132.976733,56.437924],[-132.735747,56.459832],[-132.631685,56.421493],[-132.664547,56.273616],[-132.878148,56.240754],[-133.069841,56.333862],[-132.976733,56.437924]]],[[[-133.595627,56.350293],[-133.162949,56.317431],[-133.05341,56.125739],[-132.620732,55.912138],[-132.472854,55.780691],[-132.4619,55.671152],[-132.357838,55.649245],[-132.341408,55.506844],[-132.166146,55.364444],[-132.144238,55.238474],[-132.029222,55.276813],[-131.97993,55.178228],[-131.958022,54.789365],[-132.029222,54.701734],[-132.308546,54.718165],[-132.385223,54.915335],[-132.483808,54.898904],[-132.686455,55.046781],[-132.746701,54.997489],[-132.916486,55.046781],[-132.889102,54.898904],[-132.73027,54.937242],[-132.626209,54.882473],[-132.675501,54.679826],[-132.867194,54.701734],[-133.157472,54.95915],[-133.239626,55.090597],[-133.223195,55.22752],[-133.453227,55.216566],[-133.453227,55.320628],[-133.277964,55.331582],[-133.102702,55.42469],[-133.17938,55.588998],[-133.387503,55.62186],[-133.420365,55.884753],[-133.497042,56.0162],[-133.639442,55.923092],[-133.694212,56.070969],[-133.546335,56.142169],[-133.666827,56.311955],[-133.595627,56.350293]]],[[[-133.738027,55.556137],[-133.546335,55.490413],[-133.414888,55.572568],[-133.283441,55.534229],[-133.420365,55.386352],[-133.633966,55.430167],[-133.738027,55.556137]]],[[[-133.907813,56.930849],[-134.050213,57.029434],[-133.885905,57.095157],[-133.343688,57.002049],[-133.102702,57.007526],[-132.932917,56.82131],[-132.620732,56.667956],[-132.653593,56.55294],[-132.817901,56.492694],[-133.042456,56.520078],[-133.201287,56.448878],[-133.420365,56.492694],[-133.66135,56.448878],[-133.710643,56.684386],[-133.688735,56.837741],[-133.869474,56.843218],[-133.907813,56.930849]]],[[[-134.115936,56.48174],[-134.25286,56.558417],[-134.400737,56.722725],[-134.417168,56.848695],[-134.296675,56.908941],[-134.170706,56.848695],[-134.143321,56.952757],[-133.748981,56.772017],[-133.710643,56.596755],[-133.847566,56.574848],[-133.935197,56.377678],[-133.836612,56.322908],[-133.957105,56.092877],[-134.110459,56.142169],[-134.132367,55.999769],[-134.230952,56.070969],[-134.291198,56.350293],[-134.115936,56.48174]]],[[[-134.636246,56.28457],[-134.669107,56.169554],[-134.806031,56.235277],[-135.178463,56.67891],[-135.413971,56.810356],[-135.331817,56.914418],[-135.424925,57.166357],[-135.687818,57.369004],[-135.419448,57.566174],[-135.298955,57.48402],[-135.063447,57.418296],[-134.849846,57.407343],[-134.844369,57.248511],[-134.636246,56.728202],[-134.636246,56.28457]]],[[[-134.712923,58.223407],[-134.373353,58.14673],[-134.176183,58.157683],[-134.187137,58.081006],[-133.902336,57.807159],[-134.099505,57.850975],[-134.148798,57.757867],[-133.935197,57.615466],[-133.869474,57.363527],[-134.083075,57.297804],[-134.154275,57.210173],[-134.499322,57.029434],[-134.603384,57.034911],[-134.6472,57.226604],[-134.575999,57.341619],[-134.608861,57.511404],[-134.729354,57.719528],[-134.707446,57.829067],[-134.784123,58.097437],[-134.91557,58.212453],[-134.953908,58.409623],[-134.712923,58.223407]]],[[[-135.857603,57.330665],[-135.715203,57.330665],[-135.567326,57.149926],[-135.633049,57.023957],[-135.857603,56.996572],[-135.824742,57.193742],[-135.857603,57.330665]]],[[[-136.279328,58.206976],[-135.978096,58.201499],[-135.780926,58.28913],[-135.496125,58.168637],[-135.64948,58.037191],[-135.59471,57.987898],[-135.45231,58.135776],[-135.107263,58.086483],[-134.91557,57.976944],[-135.025108,57.779775],[-134.937477,57.763344],[-134.822462,57.500451],[-135.085355,57.462112],[-135.572802,57.675713],[-135.556372,57.456635],[-135.709726,57.369004],[-135.890465,57.407343],[-136.000004,57.544266],[-136.208128,57.637374],[-136.366959,57.829067],[-136.569606,57.916698],[-136.558652,58.075529],[-136.421728,58.130299],[-136.377913,58.267222],[-136.279328,58.206976]]],[[[-147.079854,60.200582],[-147.501579,59.948643],[-147.53444,59.850058],[-147.874011,59.784335],[-147.80281,59.937689],[-147.435855,60.09652],[-147.205824,60.271782],[-147.079854,60.200582]]],[[[-147.561825,60.578491],[-147.616594,60.370367],[-147.758995,60.156767],[-147.956165,60.227967],[-147.791856,60.474429],[-147.561825,60.578491]]],[[[-147.786379,70.245291],[-147.682318,70.201475],[-147.162008,70.15766],[-146.888161,70.185044],[-146.510252,70.185044],[-146.099482,70.146706],[-145.858496,70.168614],[-145.622988,70.08646],[-145.195787,69.993352],[-144.620708,69.971444],[-144.461877,70.026213],[-144.078491,70.059075],[-143.914183,70.130275],[-143.497935,70.141229],[-143.503412,70.091936],[-143.25695,70.119321],[-142.747594,70.042644],[-142.402547,69.916674],[-142.079408,69.856428],[-142.008207,69.801659],[-141.712453,69.790705],[-141.433129,69.697597],[-141.378359,69.63735],[-141.208574,69.686643],[-141.00045,69.648304],[-141.00045,60.304644],[-140.53491,60.22249],[-140.474664,60.310121],[-139.987216,60.184151],[-139.696939,60.342983],[-139.088998,60.359413],[-139.198537,60.091043],[-139.045183,59.997935],[-138.700135,59.910304],[-138.623458,59.767904],[-137.604747,59.242118],[-137.445916,58.908024],[-137.265177,59.001132],[-136.827022,59.159963],[-136.580559,59.16544],[-136.465544,59.285933],[-136.476498,59.466672],[-136.301236,59.466672],[-136.25742,59.625503],[-135.945234,59.663842],[-135.479694,59.800766],[-135.025108,59.565257],[-135.068924,59.422857],[-134.959385,59.280456],[-134.701969,59.247595],[-134.378829,59.033994],[-134.400737,58.973748],[-134.25286,58.858732],[-133.842089,58.727285],[-133.173903,58.152206],[-133.075318,57.998852],[-132.867194,57.845498],[-132.560485,57.505928],[-132.253777,57.21565],[-132.368792,57.095157],[-132.05113,57.051341],[-132.127807,56.876079],[-131.870391,56.804879],[-131.837529,56.602232],[-131.580113,56.613186],[-131.087188,56.405062],[-130.78048,56.366724],[-130.621648,56.268139],[-130.468294,56.240754],[-130.424478,56.142169],[-130.101339,56.114785],[-130.002754,55.994292],[-130.150631,55.769737],[-130.128724,55.583521],[-129.986323,55.276813],[-130.095862,55.200136],[-130.336847,54.920812],[-130.687372,54.718165],[-130.785957,54.822227],[-130.917403,54.789365],[-131.010511,54.997489],[-130.983126,55.08512],[-131.092665,55.189182],[-130.862634,55.298721],[-130.928357,55.337059],[-131.158389,55.200136],[-131.284358,55.287767],[-131.426759,55.238474],[-131.843006,55.457552],[-131.700606,55.698537],[-131.963499,55.616383],[-131.974453,55.49589],[-132.182576,55.588998],[-132.226392,55.704014],[-132.083991,55.829984],[-132.127807,55.955953],[-132.324977,55.851892],[-132.522147,56.076446],[-132.642639,56.032631],[-132.719317,56.218847],[-132.527624,56.339339],[-132.341408,56.339339],[-132.396177,56.487217],[-132.297592,56.67891],[-132.450946,56.673433],[-132.768609,56.837741],[-132.993164,57.034911],[-133.51895,57.177311],[-133.507996,57.577128],[-133.677781,57.62642],[-133.639442,57.790728],[-133.814705,57.834544],[-134.072121,58.053622],[-134.143321,58.168637],[-134.586953,58.206976],[-135.074401,58.502731],[-135.282525,59.192825],[-135.38111,59.033994],[-135.337294,58.891593],[-135.140124,58.617746],[-135.189417,58.573931],[-135.05797,58.349376],[-135.085355,58.201499],[-135.277048,58.234361],[-135.430402,58.398669],[-135.633049,58.426053],[-135.91785,58.382238],[-135.912373,58.617746],[-136.087635,58.814916],[-136.246466,58.75467],[-136.876314,58.962794],[-136.931084,58.902547],[-136.586036,58.836824],[-136.317666,58.672516],[-136.213604,58.667039],[-136.180743,58.535592],[-136.043819,58.382238],[-136.388867,58.294607],[-136.591513,58.349376],[-136.59699,58.212453],[-136.859883,58.316515],[-136.947514,58.393192],[-137.111823,58.393192],[-137.566409,58.590362],[-137.900502,58.765624],[-137.933364,58.869686],[-138.11958,59.02304],[-138.634412,59.132579],[-138.919213,59.247595],[-139.417615,59.379041],[-139.746231,59.505011],[-139.718846,59.641934],[-139.625738,59.598119],[-139.5162,59.68575],[-139.625738,59.88292],[-139.488815,59.992458],[-139.554538,60.041751],[-139.801,59.833627],[-140.315833,59.696704],[-140.92925,59.745996],[-141.444083,59.871966],[-141.46599,59.970551],[-141.706976,59.948643],[-141.964392,60.019843],[-142.539471,60.085566],[-142.873564,60.091043],[-143.623905,60.036274],[-143.892275,59.997935],[-144.231845,60.140336],[-144.65357,60.206059],[-144.785016,60.29369],[-144.834309,60.441568],[-145.124586,60.430614],[-145.223171,60.299167],[-145.738004,60.474429],[-145.820158,60.551106],[-146.351421,60.408706],[-146.608837,60.238921],[-146.718376,60.397752],[-146.608837,60.485383],[-146.455483,60.463475],[-145.951604,60.578491],[-146.017328,60.666122],[-146.252836,60.622307],[-146.345944,60.737322],[-146.565022,60.753753],[-146.784099,61.044031],[-146.866253,60.972831],[-147.172962,60.934492],[-147.271547,60.972831],[-147.375609,60.879723],[-147.758995,60.912584],[-147.775426,60.808523],[-148.032842,60.781138],[-148.153334,60.819476],[-148.065703,61.005692],[-148.175242,61.000215],[-148.350504,60.803046],[-148.109519,60.737322],[-148.087611,60.594922],[-147.939734,60.441568],[-148.027365,60.277259],[-148.219058,60.332029],[-148.273827,60.249875],[-148.087611,60.217013],[-147.983549,59.997935],[-148.251919,59.95412],[-148.399797,59.997935],[-148.635305,59.937689],[-148.755798,59.986981],[-149.067984,59.981505],[-149.05703,60.063659],[-149.204907,60.008889],[-149.287061,59.904827],[-149.418508,59.997935],[-149.582816,59.866489],[-149.511616,59.806242],[-149.741647,59.729565],[-149.949771,59.718611],[-150.031925,59.61455],[-150.25648,59.521442],[-150.409834,59.554303],[-150.579619,59.444764],[-150.716543,59.450241],[-151.001343,59.225687],[-151.308052,59.209256],[-151.406637,59.280456],[-151.592853,59.159963],[-151.976239,59.253071],[-151.888608,59.422857],[-151.636669,59.483103],[-151.47236,59.472149],[-151.423068,59.537872],[-151.127313,59.669319],[-151.116359,59.778858],[-151.505222,59.63098],[-151.828361,59.718611],[-151.8667,59.778858],[-151.702392,60.030797],[-151.423068,60.211536],[-151.379252,60.359413],[-151.297098,60.386798],[-151.264237,60.545629],[-151.406637,60.720892],[-151.06159,60.786615],[-150.404357,61.038554],[-150.245526,60.939969],[-150.042879,60.912584],[-149.741647,61.016646],[-150.075741,61.15357],[-150.207187,61.257632],[-150.47008,61.246678],[-150.656296,61.29597],[-150.711066,61.252155],[-151.023251,61.180954],[-151.165652,61.044031],[-151.477837,61.011169],[-151.800977,60.852338],[-151.833838,60.748276],[-152.080301,60.693507],[-152.13507,60.578491],[-152.310332,60.507291],[-152.392486,60.304644],[-152.732057,60.173197],[-152.567748,60.069136],[-152.704672,59.915781],[-153.022334,59.888397],[-153.049719,59.691227],[-153.345474,59.620026],[-153.438582,59.702181],[-153.586459,59.548826],[-153.761721,59.543349],[-153.72886,59.433811],[-154.117723,59.368087],[-154.1944,59.066856],[-153.750768,59.050425],[-153.400243,58.968271],[-153.301658,58.869686],[-153.444059,58.710854],[-153.679567,58.612269],[-153.898645,58.606793],[-153.920553,58.519161],[-154.062953,58.4863],[-153.99723,58.376761],[-154.145107,58.212453],[-154.46277,58.059098],[-154.643509,58.059098],[-154.818771,58.004329],[-154.988556,58.015283],[-155.120003,57.955037],[-155.081664,57.872883],[-155.328126,57.829067],[-155.377419,57.708574],[-155.547204,57.785251],[-155.73342,57.549743],[-156.045606,57.566174],[-156.023698,57.440204],[-156.209914,57.473066],[-156.34136,57.418296],[-156.34136,57.248511],[-156.549484,56.985618],[-156.883577,56.952757],[-157.157424,56.832264],[-157.20124,56.766541],[-157.376502,56.859649],[-157.672257,56.607709],[-157.754411,56.67891],[-157.918719,56.657002],[-157.957058,56.514601],[-158.126843,56.459832],[-158.32949,56.48174],[-158.488321,56.339339],[-158.208997,56.295524],[-158.510229,55.977861],[-159.375585,55.873799],[-159.616571,55.594475],[-159.676817,55.654722],[-159.643955,55.829984],[-159.813741,55.857368],[-160.027341,55.791645],[-160.060203,55.720445],[-160.394296,55.605429],[-160.536697,55.473983],[-160.580512,55.567091],[-160.668143,55.457552],[-160.865313,55.528752],[-161.232268,55.358967],[-161.506115,55.364444],[-161.467776,55.49589],[-161.588269,55.62186],[-161.697808,55.517798],[-161.686854,55.408259],[-162.053809,55.074166],[-162.179779,55.15632],[-162.218117,55.03035],[-162.470057,55.052258],[-162.508395,55.249428],[-162.661749,55.293244],[-162.716519,55.222043],[-162.579595,55.134412],[-162.645319,54.997489],[-162.847965,54.926289],[-163.00132,55.079643],[-163.187536,55.090597],[-163.220397,55.03035],[-163.034181,54.942719],[-163.373752,54.800319],[-163.14372,54.76198],[-163.138243,54.696257],[-163.329936,54.74555],[-163.587352,54.614103],[-164.085754,54.61958],[-164.332216,54.531949],[-164.354124,54.466226],[-164.638925,54.389548],[-164.847049,54.416933],[-164.918249,54.603149],[-164.710125,54.663395],[-164.551294,54.88795],[-164.34317,54.893427],[-163.894061,55.041304],[-163.532583,55.046781],[-163.39566,54.904381],[-163.291598,55.008443],[-163.313505,55.128935],[-163.105382,55.183705],[-162.880827,55.183705],[-162.579595,55.446598],[-162.245502,55.682106],[-161.807347,55.89023],[-161.292514,55.983338],[-161.078914,55.939523],[-160.87079,55.999769],[-160.816021,55.912138],[-160.931036,55.813553],[-160.805067,55.736876],[-160.766728,55.857368],[-160.509312,55.868322],[-160.438112,55.791645],[-160.27928,55.76426],[-160.273803,55.857368],[-160.536697,55.939523],[-160.558604,55.994292],[-160.383342,56.251708],[-160.147834,56.399586],[-159.830171,56.541986],[-159.326293,56.667956],[-158.959338,56.848695],[-158.784076,56.782971],[-158.641675,56.810356],[-158.701922,56.925372],[-158.658106,57.034911],[-158.378782,57.264942],[-157.995396,57.41282],[-157.688688,57.609989],[-157.705118,57.719528],[-157.458656,58.497254],[-157.07527,58.705377],[-157.119086,58.869686],[-158.039212,58.634177],[-158.32949,58.661562],[-158.40069,58.760147],[-158.564998,58.803962],[-158.619768,58.913501],[-158.767645,58.864209],[-158.860753,58.694424],[-158.701922,58.480823],[-158.893615,58.387715],[-159.0634,58.420577],[-159.392016,58.760147],[-159.616571,58.929932],[-159.731586,58.929932],[-159.808264,58.803962],[-159.906848,58.782055],[-160.054726,58.886116],[-160.235465,58.902547],[-160.317619,59.072332],[-160.854359,58.88064],[-161.33633,58.743716],[-161.374669,58.667039],[-161.752577,58.552023],[-161.938793,58.656085],[-161.769008,58.776578],[-161.829255,59.061379],[-161.955224,59.36261],[-161.703285,59.48858],[-161.911409,59.740519],[-162.092148,59.88292],[-162.234548,60.091043],[-162.448149,60.178674],[-162.502918,59.997935],[-162.760334,59.959597],[-163.171105,59.844581],[-163.66403,59.795289],[-163.9324,59.806242],[-164.162431,59.866489],[-164.189816,60.02532],[-164.386986,60.074613],[-164.699171,60.29369],[-164.962064,60.337506],[-165.268773,60.578491],[-165.060649,60.68803],[-165.016834,60.890677],[-165.175665,60.846861],[-165.197573,60.972831],[-165.120896,61.076893],[-165.323543,61.170001],[-165.34545,61.071416],[-165.591913,61.109754],[-165.624774,61.279539],[-165.816467,61.301447],[-165.920529,61.416463],[-165.915052,61.558863],[-166.106745,61.49314],[-166.139607,61.630064],[-165.904098,61.662925],[-166.095791,61.81628],[-165.756221,61.827233],[-165.756221,62.013449],[-165.674067,62.139419],[-165.044219,62.539236],[-164.912772,62.659728],[-164.819664,62.637821],[-164.874433,62.807606],[-164.633448,63.097884],[-164.425324,63.212899],[-164.036462,63.262192],[-163.73523,63.212899],[-163.313505,63.037637],[-163.039658,63.059545],[-162.661749,63.22933],[-162.272887,63.486746],[-162.075717,63.514131],[-162.026424,63.448408],[-161.555408,63.448408],[-161.13916,63.503177],[-160.766728,63.771547],[-160.766728,63.837271],[-160.952944,64.08921],[-160.974852,64.237087],[-161.26513,64.395918],[-161.374669,64.532842],[-161.078914,64.494503],[-160.79959,64.609519],[-160.783159,64.719058],[-161.144637,64.921705],[-161.413007,64.762873],[-161.664946,64.790258],[-161.900455,64.702627],[-162.168825,64.680719],[-162.234548,64.620473],[-162.541257,64.532842],[-162.634365,64.384965],[-162.787719,64.324718],[-162.858919,64.49998],[-163.045135,64.538319],[-163.176582,64.401395],[-163.253259,64.467119],[-163.598306,64.565704],[-164.304832,64.560227],[-164.80871,64.450688],[-165.000403,64.434257],[-165.411174,64.49998],[-166.188899,64.576658],[-166.391546,64.636904],[-166.484654,64.735489],[-166.413454,64.872412],[-166.692778,64.987428],[-166.638008,65.113398],[-166.462746,65.179121],[-166.517516,65.337952],[-166.796839,65.337952],[-167.026871,65.381768],[-167.47598,65.414629],[-167.711489,65.496784],[-168.072967,65.578938],[-168.105828,65.682999],[-167.541703,65.819923],[-166.829701,66.049954],[-166.3313,66.186878],[-166.046499,66.110201],[-165.756221,66.09377],[-165.690498,66.203309],[-165.86576,66.21974],[-165.88219,66.312848],[-165.186619,66.466202],[-164.403417,66.581218],[-163.981692,66.592172],[-163.751661,66.553833],[-163.872153,66.389525],[-163.828338,66.274509],[-163.915969,66.192355],[-163.768091,66.060908],[-163.494244,66.082816],[-163.149197,66.060908],[-162.749381,66.088293],[-162.634365,66.039001],[-162.371472,66.028047],[-162.14144,66.077339],[-161.840208,66.02257],[-161.549931,66.241647],[-161.341807,66.252601],[-161.199406,66.208786],[-161.128206,66.334755],[-161.528023,66.395002],[-161.911409,66.345709],[-161.87307,66.510017],[-162.174302,66.68528],[-162.502918,66.740049],[-162.601503,66.89888],[-162.344087,66.937219],[-162.015471,66.778388],[-162.075717,66.652418],[-161.916886,66.553833],[-161.571838,66.438817],[-161.489684,66.55931],[-161.884024,66.718141],[-161.714239,67.002942],[-161.851162,67.052235],[-162.240025,66.991988],[-162.639842,67.008419],[-162.700088,67.057712],[-162.902735,67.008419],[-163.740707,67.128912],[-163.757138,67.254881],[-164.009077,67.534205],[-164.211724,67.638267],[-164.534863,67.725898],[-165.192096,67.966884],[-165.493328,68.059992],[-165.794559,68.081899],[-166.243668,68.246208],[-166.681824,68.339316],[-166.703731,68.372177],[-166.375115,68.42147],[-166.227238,68.574824],[-166.216284,68.881533],[-165.329019,68.859625],[-164.255539,68.930825],[-163.976215,68.985595],[-163.532583,69.138949],[-163.110859,69.374457],[-163.023228,69.609966],[-162.842489,69.812613],[-162.470057,69.982398],[-162.311225,70.108367],[-161.851162,70.311014],[-161.779962,70.256245],[-161.396576,70.239814],[-160.837928,70.343876],[-160.487404,70.453415],[-159.649432,70.792985],[-159.33177,70.809416],[-159.298908,70.760123],[-158.975769,70.798462],[-158.658106,70.787508],[-158.033735,70.831323],[-157.420318,70.979201],[-156.812377,71.285909],[-156.565915,71.351633],[-156.522099,71.296863],[-155.585543,71.170894],[-155.508865,71.083263],[-155.832005,70.968247],[-155.979882,70.96277],[-155.974405,70.809416],[-155.503388,70.858708],[-155.476004,70.940862],[-155.262403,71.017539],[-155.191203,70.973724],[-155.032372,71.148986],[-154.566832,70.990155],[-154.643509,70.869662],[-154.353231,70.8368],[-154.183446,70.7656],[-153.931507,70.880616],[-153.487874,70.886093],[-153.235935,70.924431],[-152.589656,70.886093],[-152.26104,70.842277],[-152.419871,70.606769],[-151.817408,70.546523],[-151.773592,70.486276],[-151.187559,70.382214],[-151.182082,70.431507],[-150.760358,70.49723],[-150.355064,70.491753],[-150.349588,70.436984],[-150.114079,70.431507],[-149.867617,70.508184],[-149.462323,70.519138],[-149.177522,70.486276],[-148.78866,70.404122],[-148.607921,70.420553],[-148.350504,70.305537],[-148.202627,70.349353],[-147.961642,70.316491],[-147.786379,70.245291]]],[[[-152.94018,58.026237],[-152.945657,57.982421],[-153.290705,58.048145],[-153.044242,58.305561],[-152.819688,58.327469],[-152.666333,58.562977],[-152.496548,58.354853],[-152.354148,58.426053],[-152.080301,58.311038],[-152.080301,58.152206],[-152.480117,58.130299],[-152.655379,58.059098],[-152.94018,58.026237]]],[[[-153.958891,57.538789],[-153.67409,57.670236],[-153.931507,57.69762],[-153.936983,57.812636],[-153.723383,57.889313],[-153.570028,57.834544],[-153.548121,57.719528],[-153.46049,57.796205],[-153.455013,57.96599],[-153.268797,57.889313],[-153.235935,57.998852],[-153.071627,57.933129],[-152.874457,57.933129],[-152.721103,57.993375],[-152.469163,57.889313],[-152.469163,57.599035],[-152.151501,57.620943],[-152.359625,57.42925],[-152.74301,57.505928],[-152.60061,57.379958],[-152.710149,57.275896],[-152.907319,57.325188],[-152.912796,57.128019],[-153.214027,57.073249],[-153.312612,56.991095],[-153.498828,57.067772],[-153.695998,56.859649],[-153.849352,56.837741],[-154.013661,56.744633],[-154.073907,56.969187],[-154.303938,56.848695],[-154.314892,56.919895],[-154.523016,56.991095],[-154.539447,57.193742],[-154.742094,57.275896],[-154.627078,57.511404],[-154.227261,57.659282],[-153.980799,57.648328],[-153.958891,57.538789]]],[[[-154.53397,56.602232],[-154.742094,56.399586],[-154.807817,56.432447],[-154.53397,56.602232]]],[[[-155.634835,55.923092],[-155.476004,55.912138],[-155.530773,55.704014],[-155.793666,55.731399],[-155.837482,55.802599],[-155.634835,55.923092]]],[[[-159.890418,55.28229],[-159.950664,55.068689],[-160.257373,54.893427],[-160.109495,55.161797],[-160.005433,55.134412],[-159.890418,55.28229]]],[[[-160.520266,55.358967],[-160.33405,55.358967],[-160.339527,55.249428],[-160.525743,55.128935],[-160.690051,55.211089],[-160.794113,55.134412],[-160.854359,55.320628],[-160.79959,55.380875],[-160.520266,55.358967]]],[[[-162.256456,54.981058],[-162.234548,54.893427],[-162.349564,54.838658],[-162.437195,54.931766],[-162.256456,54.981058]]],[[[-162.415287,63.634624],[-162.563165,63.536039],[-162.612457,63.62367],[-162.415287,63.634624]]],[[[-162.80415,54.488133],[-162.590549,54.449795],[-162.612457,54.367641],[-162.782242,54.373118],[-162.80415,54.488133]]],[[[-165.548097,54.29644],[-165.476897,54.181425],[-165.630251,54.132132],[-165.685021,54.252625],[-165.548097,54.29644]]],[[[-165.73979,54.15404],[-166.046499,54.044501],[-166.112222,54.121178],[-165.980775,54.219763],[-165.73979,54.15404]]],[[[-166.364161,60.359413],[-166.13413,60.397752],[-166.084837,60.326552],[-165.88219,60.342983],[-165.685021,60.277259],[-165.646682,59.992458],[-165.750744,59.89935],[-166.00816,59.844581],[-166.062929,59.745996],[-166.440838,59.855535],[-166.6161,59.850058],[-166.994009,59.992458],[-167.125456,59.992458],[-167.344534,60.074613],[-167.421211,60.206059],[-167.311672,60.238921],[-166.93924,60.206059],[-166.763978,60.310121],[-166.577762,60.321075],[-166.495608,60.392275],[-166.364161,60.359413]]],[[[-166.375115,54.01164],[-166.210807,53.934962],[-166.5449,53.748746],[-166.539423,53.715885],[-166.117699,53.852808],[-166.112222,53.776131],[-166.282007,53.683023],[-166.555854,53.622777],[-166.583239,53.529669],[-166.878994,53.431084],[-167.13641,53.425607],[-167.306195,53.332499],[-167.623857,53.250345],[-167.793643,53.337976],[-167.459549,53.442038],[-167.355487,53.425607],[-167.103548,53.513238],[-167.163794,53.611823],[-167.021394,53.715885],[-166.807793,53.666592],[-166.785886,53.732316],[-167.015917,53.754223],[-167.141887,53.825424],[-167.032348,53.945916],[-166.643485,54.017116],[-166.561331,53.880193],[-166.375115,54.01164]]],[[[-168.790446,53.157237],[-168.40706,53.34893],[-168.385152,53.431084],[-168.237275,53.524192],[-168.007243,53.568007],[-167.886751,53.518715],[-167.842935,53.387268],[-168.270136,53.244868],[-168.500168,53.036744],[-168.686384,52.965544],[-168.790446,53.157237]]],[[[-169.74891,52.894344],[-169.705095,52.795759],[-169.962511,52.790282],[-169.989896,52.856005],[-169.74891,52.894344]]],[[[-170.148727,57.221127],[-170.28565,57.128019],[-170.313035,57.221127],[-170.148727,57.221127]]],[[[-170.669036,52.697174],[-170.603313,52.604066],[-170.789529,52.538343],[-170.816914,52.636928],[-170.669036,52.697174]]],[[[-171.742517,63.716778],[-170.94836,63.5689],[-170.488297,63.69487],[-170.280174,63.683916],[-170.093958,63.612716],[-170.044665,63.492223],[-169.644848,63.4265],[-169.518879,63.366254],[-168.99857,63.338869],[-168.686384,63.295053],[-168.856169,63.147176],[-169.108108,63.180038],[-169.376478,63.152653],[-169.513402,63.08693],[-169.639372,62.939052],[-169.831064,63.075976],[-170.055619,63.169084],[-170.263743,63.180038],[-170.362328,63.2841],[-170.866206,63.415546],[-171.101715,63.421023],[-171.463193,63.306007],[-171.73704,63.366254],[-171.852055,63.486746],[-171.742517,63.716778]]],[[[-172.432611,52.390465],[-172.41618,52.275449],[-172.607873,52.253542],[-172.569535,52.352127],[-172.432611,52.390465]]],[[[-173.626584,52.14948],[-173.495138,52.105664],[-173.122706,52.111141],[-173.106275,52.07828],[-173.549907,52.028987],[-173.626584,52.14948]]],[[[-174.322156,52.280926],[-174.327632,52.379511],[-174.185232,52.41785],[-173.982585,52.319265],[-174.059262,52.226157],[-174.179755,52.231634],[-174.141417,52.127572],[-174.333109,52.116618],[-174.738403,52.007079],[-174.968435,52.039941],[-174.902711,52.116618],[-174.656249,52.105664],[-174.322156,52.280926]]],[[[-176.469116,51.853725],[-176.288377,51.870156],[-176.288377,51.744186],[-176.518409,51.760617],[-176.80321,51.61274],[-176.912748,51.80991],[-176.792256,51.815386],[-176.775825,51.963264],[-176.627947,51.968741],[-176.627947,51.859202],[-176.469116,51.853725]]],[[[-177.153734,51.946833],[-177.044195,51.897541],[-177.120872,51.727755],[-177.274226,51.678463],[-177.279703,51.782525],[-177.153734,51.946833]]],[[[-178.123152,51.919448],[-177.953367,51.913971],[-177.800013,51.793479],[-177.964321,51.651078],[-178.123152,51.919448]]],[[[173.107557,52.992929],[173.293773,52.927205],[173.304726,52.823143],[172.90491,52.762897],[172.642017,52.927205],[172.642017,53.003883],[173.107557,52.992929]]]]}},
+{"type":"Feature","id":"04","properties":{"name":"Arizona"},"geometry":{"type":"Polygon","coordinates":[[[-109.042503,37.000263],[-109.04798,31.331629],[-111.074448,31.331629],[-112.246513,31.704061],[-114.815198,32.492741],[-114.72209,32.717295],[-114.524921,32.755634],[-114.470151,32.843265],[-114.524921,33.029481],[-114.661844,33.034958],[-114.727567,33.40739],[-114.524921,33.54979],[-114.497536,33.697668],[-114.535874,33.933176],[-114.415382,34.108438],[-114.256551,34.174162],[-114.136058,34.305608],[-114.333228,34.448009],[-114.470151,34.710902],[-114.634459,34.87521],[-114.634459,35.00118],[-114.574213,35.138103],[-114.596121,35.324319],[-114.678275,35.516012],[-114.738521,36.102045],[-114.371566,36.140383],[-114.251074,36.01989],[-114.152489,36.025367],[-114.048427,36.195153],[-114.048427,37.000263],[-110.499369,37.00574],[-109.042503,37.000263]]]}},
+{"type":"Feature","id":"05","properties":{"name":"Arkansas"},"geometry":{"type":"Polygon","coordinates":[[[-94.473842,36.501861],[-90.152536,36.496384],[-90.064905,36.304691],[-90.218259,36.184199],[-90.377091,35.997983],[-89.730812,35.997983],[-89.763673,35.811767],[-89.911551,35.756997],[-89.944412,35.603643],[-90.130628,35.439335],[-90.114197,35.198349],[-90.212782,35.023087],[-90.311367,34.995703],[-90.251121,34.908072],[-90.409952,34.831394],[-90.481152,34.661609],[-90.585214,34.617794],[-90.568783,34.420624],[-90.749522,34.365854],[-90.744046,34.300131],[-90.952169,34.135823],[-90.891923,34.026284],[-91.072662,33.867453],[-91.231493,33.560744],[-91.056231,33.429298],[-91.143862,33.347144],[-91.089093,33.13902],[-91.16577,33.002096],[-93.608485,33.018527],[-94.041164,33.018527],[-94.041164,33.54979],[-94.183564,33.593606],[-94.380734,33.544313],[-94.484796,33.637421],[-94.430026,35.395519],[-94.616242,36.501861],[-94.473842,36.501861]]]}},
+{"type":"Feature","id":"06","properties":{"name":"California"},"geometry":{"type":"Polygon","coordinates":[[[-123.233256,42.006186],[-122.378853,42.011663],[-121.037003,41.995232],[-120.001861,41.995232],[-119.996384,40.264519],[-120.001861,38.999346],[-118.71478,38.101128],[-117.498899,37.21934],[-116.540435,36.501861],[-115.85034,35.970598],[-114.634459,35.00118],[-114.634459,34.87521],[-114.470151,34.710902],[-114.333228,34.448009],[-114.136058,34.305608],[-114.256551,34.174162],[-114.415382,34.108438],[-114.535874,33.933176],[-114.497536,33.697668],[-114.524921,33.54979],[-114.727567,33.40739],[-114.661844,33.034958],[-114.524921,33.029481],[-114.470151,32.843265],[-114.524921,32.755634],[-114.72209,32.717295],[-116.04751,32.624187],[-117.126467,32.536556],[-117.24696,32.668003],[-117.252437,32.876127],[-117.329114,33.122589],[-117.471515,33.297851],[-117.7837,33.538836],[-118.183517,33.763391],[-118.260194,33.703145],[-118.413548,33.741483],[-118.391641,33.840068],[-118.566903,34.042715],[-118.802411,33.998899],[-119.218659,34.146777],[-119.278905,34.26727],[-119.558229,34.415147],[-119.875891,34.40967],[-120.138784,34.475393],[-120.472878,34.448009],[-120.64814,34.579455],[-120.609801,34.858779],[-120.670048,34.902595],[-120.631709,35.099764],[-120.894602,35.247642],[-120.905556,35.450289],[-121.004141,35.461243],[-121.168449,35.636505],[-121.283465,35.674843],[-121.332757,35.784382],[-121.716143,36.195153],[-121.896882,36.315645],[-121.935221,36.638785],[-121.858544,36.6114],[-121.787344,36.803093],[-121.929744,36.978355],[-122.105006,36.956447],[-122.335038,37.115279],[-122.417192,37.241248],[-122.400761,37.361741],[-122.515777,37.520572],[-122.515777,37.783465],[-122.329561,37.783465],[-122.406238,38.15042],[-122.488392,38.112082],[-122.504823,37.931343],[-122.701993,37.893004],[-122.937501,38.029928],[-122.97584,38.265436],[-123.129194,38.451652],[-123.331841,38.566668],[-123.44138,38.698114],[-123.737134,38.95553],[-123.687842,39.032208],[-123.824765,39.366301],[-123.764519,39.552517],[-123.85215,39.831841],[-124.109566,40.105688],[-124.361506,40.259042],[-124.410798,40.439781],[-124.158859,40.877937],[-124.109566,41.025814],[-124.158859,41.14083],[-124.065751,41.442061],[-124.147905,41.715908],[-124.257444,41.781632],[-124.213628,42.000709],[-123.233256,42.006186]]]}},
+{"type":"Feature","id":"08","properties":{"name":"Colorado"},"geometry":{"type":"Polygon","coordinates":[[[-107.919731,41.003906],[-105.728954,40.998429],[-104.053011,41.003906],[-102.053927,41.003906],[-102.053927,40.001626],[-102.042974,36.994786],[-103.001438,37.000263],[-104.337812,36.994786],[-106.868158,36.994786],[-107.421329,37.000263],[-109.042503,37.000263],[-109.042503,38.166851],[-109.058934,38.27639],[-109.053457,39.125316],[-109.04798,40.998429],[-107.919731,41.003906]]]}},
+{"type":"Feature","id":"09","properties":{"name":"Connecticut"},"geometry":{"type":"Polygon","coordinates":[[[-73.053528,42.039048],[-71.799309,42.022617],[-71.799309,42.006186],[-71.799309,41.414677],[-71.859555,41.321569],[-71.947186,41.338],[-72.385341,41.261322],[-72.905651,41.28323],[-73.130205,41.146307],[-73.371191,41.102491],[-73.655992,40.987475],[-73.727192,41.102491],[-73.48073,41.21203],[-73.55193,41.294184],[-73.486206,42.050002],[-73.053528,42.039048]]]}},
+{"type":"Feature","id":"10","properties":{"name":"Delaware"},"geometry":{"type":"Polygon","coordinates":[[[-75.414089,39.804456],[-75.507197,39.683964],[-75.611259,39.61824],[-75.589352,39.459409],[-75.441474,39.311532],[-75.403136,39.065069],[-75.189535,38.807653],[-75.09095,38.796699],[-75.047134,38.451652],[-75.693413,38.462606],[-75.786521,39.722302],[-75.616736,39.831841],[-75.414089,39.804456]]]}},
+{"type":"Feature","id":"11","properties":{"name":"District of Columbia"},"geometry":{"type":"Polygon","coordinates":[[[-77.035264,38.993869],[-76.909294,38.895284],[-77.040741,38.791222],[-77.117418,38.933623],[-77.035264,38.993869]]]}},
+{"type":"Feature","id":"12","properties":{"name":"Florida"},"geometry":{"type":"Polygon","coordinates":[[[-85.497137,30.997536],[-85.004212,31.003013],[-84.867289,30.712735],[-83.498053,30.647012],[-82.216449,30.570335],[-82.167157,30.356734],[-82.046664,30.362211],[-82.002849,30.564858],[-82.041187,30.751074],[-81.948079,30.827751],[-81.718048,30.745597],[-81.444201,30.707258],[-81.383954,30.27458],[-81.257985,29.787132],[-80.967707,29.14633],[-80.524075,28.461713],[-80.589798,28.41242],[-80.56789,28.094758],[-80.381674,27.738757],[-80.091397,27.021277],[-80.03115,26.796723],[-80.036627,26.566691],[-80.146166,25.739673],[-80.239274,25.723243],[-80.337859,25.465826],[-80.304997,25.383672],[-80.49669,25.197456],[-80.573367,25.241272],[-80.759583,25.164595],[-81.077246,25.120779],[-81.170354,25.224841],[-81.126538,25.378195],[-81.351093,25.821827],[-81.526355,25.903982],[-81.679709,25.843735],[-81.800202,26.090198],[-81.833064,26.292844],[-82.041187,26.517399],[-82.09048,26.665276],[-82.057618,26.878877],[-82.172634,26.917216],[-82.145249,26.791246],[-82.249311,26.758384],[-82.566974,27.300601],[-82.692943,27.437525],[-82.391711,27.837342],[-82.588881,27.815434],[-82.720328,27.689464],[-82.851774,27.886634],[-82.676512,28.434328],[-82.643651,28.888914],[-82.764143,28.998453],[-82.802482,29.14633],[-82.994175,29.179192],[-83.218729,29.420177],[-83.399469,29.518762],[-83.410422,29.66664],[-83.536392,29.721409],[-83.640454,29.885717],[-84.02384,30.104795],[-84.357933,30.055502],[-84.341502,29.902148],[-84.451041,29.929533],[-84.867289,29.743317],[-85.310921,29.699501],[-85.299967,29.80904],[-85.404029,29.940487],[-85.924338,30.236241],[-86.29677,30.362211],[-86.630863,30.395073],[-86.910187,30.373165],[-87.518128,30.280057],[-87.37025,30.427934],[-87.446927,30.510088],[-87.408589,30.674397],[-87.633143,30.86609],[-87.600282,30.997536],[-85.497137,30.997536]]]}},
+{"type":"Feature","id":"13","properties":{"name":"Georgia"},"geometry":{"type":"Polygon","coordinates":[[[-83.109191,35.00118],[-83.322791,34.787579],[-83.339222,34.683517],[-83.005129,34.469916],[-82.901067,34.486347],[-82.747713,34.26727],[-82.714851,34.152254],[-82.55602,33.94413],[-82.325988,33.81816],[-82.194542,33.631944],[-81.926172,33.462159],[-81.937125,33.347144],[-81.761863,33.160928],[-81.493493,33.007573],[-81.42777,32.843265],[-81.416816,32.629664],[-81.279893,32.558464],[-81.121061,32.290094],[-81.115584,32.120309],[-80.885553,32.032678],[-81.132015,31.693108],[-81.175831,31.517845],[-81.279893,31.364491],[-81.290846,31.20566],[-81.400385,31.13446],[-81.444201,30.707258],[-81.718048,30.745597],[-81.948079,30.827751],[-82.041187,30.751074],[-82.002849,30.564858],[-82.046664,30.362211],[-82.167157,30.356734],[-82.216449,30.570335],[-83.498053,30.647012],[-84.867289,30.712735],[-85.004212,31.003013],[-85.113751,31.27686],[-85.042551,31.539753],[-85.141136,31.840985],[-85.053504,32.01077],[-85.058981,32.13674],[-84.889196,32.262709],[-85.004212,32.322956],[-84.960397,32.421541],[-85.069935,32.580372],[-85.184951,32.859696],[-85.431413,34.124869],[-85.606675,34.984749],[-84.319594,34.990226],[-83.618546,34.984749],[-83.109191,35.00118]]]}},
+{"type":"Feature","id":"15","properties":{"name":"Hawaii"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.634835,18.948267],[-155.881297,19.035898],[-155.919636,19.123529],[-155.886774,19.348084],[-156.062036,19.73147],[-155.925113,19.857439],[-155.826528,20.032702],[-155.897728,20.147717],[-155.87582,20.26821],[-155.596496,20.12581],[-155.284311,20.021748],[-155.092618,19.868393],[-155.092618,19.736947],[-154.807817,19.523346],[-154.983079,19.348084],[-155.295265,19.26593],[-155.514342,19.134483],[-155.634835,18.948267]]],[[[-156.587823,21.029505],[-156.472807,20.892581],[-156.324929,20.952827],[-156.00179,20.793996],[-156.051082,20.651596],[-156.379699,20.580396],[-156.445422,20.60778],[-156.461853,20.783042],[-156.631638,20.821381],[-156.697361,20.919966],[-156.587823,21.029505]]],[[[-156.982162,21.210244],[-157.080747,21.106182],[-157.310779,21.106182],[-157.239579,21.221198],[-156.982162,21.210244]]],[[[-157.951581,21.697691],[-157.842042,21.462183],[-157.896811,21.325259],[-158.110412,21.303352],[-158.252813,21.582676],[-158.126843,21.588153],[-157.951581,21.697691]]],[[[-159.468693,22.228955],[-159.353678,22.218001],[-159.298908,22.113939],[-159.33177,21.966061],[-159.446786,21.872953],[-159.764448,21.987969],[-159.726109,22.152277],[-159.468693,22.228955]]]]}},
+{"type":"Feature","id":"16","properties":{"name":"Idaho"},"geometry":{"type":"Polygon","coordinates":[[[-116.04751,49.000239],[-116.04751,47.976051],[-115.724371,47.696727],[-115.718894,47.42288],[-115.527201,47.302388],[-115.324554,47.258572],[-115.302646,47.187372],[-114.930214,46.919002],[-114.886399,46.809463],[-114.623506,46.705401],[-114.612552,46.639678],[-114.322274,46.645155],[-114.464674,46.272723],[-114.492059,46.037214],[-114.387997,45.88386],[-114.568736,45.774321],[-114.497536,45.670259],[-114.546828,45.560721],[-114.333228,45.456659],[-114.086765,45.593582],[-113.98818,45.703121],[-113.807441,45.604536],[-113.834826,45.522382],[-113.736241,45.330689],[-113.571933,45.128042],[-113.45144,45.056842],[-113.456917,44.865149],[-113.341901,44.782995],[-113.133778,44.772041],[-113.002331,44.448902],[-112.887315,44.394132],[-112.783254,44.48724],[-112.471068,44.481763],[-112.241036,44.569394],[-112.104113,44.520102],[-111.868605,44.563917],[-111.819312,44.509148],[-111.616665,44.547487],[-111.386634,44.75561],[-111.227803,44.580348],[-111.047063,44.476286],[-111.047063,42.000709],[-112.164359,41.995232],[-114.04295,41.995232],[-117.027882,42.000709],[-117.027882,43.830007],[-116.896436,44.158624],[-116.97859,44.240778],[-117.170283,44.257209],[-117.241483,44.394132],[-117.038836,44.750133],[-116.934774,44.782995],[-116.830713,44.930872],[-116.847143,45.02398],[-116.732128,45.144473],[-116.671881,45.319735],[-116.463758,45.61549],[-116.545912,45.752413],[-116.78142,45.823614],[-116.918344,45.993399],[-116.92382,46.168661],[-117.055267,46.343923],[-117.038836,46.426077],[-117.044313,47.762451],[-117.033359,49.000239],[-116.04751,49.000239]]]}},
+{"type":"Feature","id":"17","properties":{"name":"Illinois"},"geometry":{"type":"Polygon","coordinates":[[[-90.639984,42.510065],[-88.788778,42.493634],[-87.802929,42.493634],[-87.83579,42.301941],[-87.682436,42.077386],[-87.523605,41.710431],[-87.529082,39.34987],[-87.63862,39.169131],[-87.512651,38.95553],[-87.49622,38.780268],[-87.62219,38.637868],[-87.655051,38.506421],[-87.83579,38.292821],[-87.950806,38.27639],[-87.923421,38.15042],[-88.000098,38.101128],[-88.060345,37.865619],[-88.027483,37.799896],[-88.15893,37.657496],[-88.065822,37.482234],[-88.476592,37.389126],[-88.514931,37.285064],[-88.421823,37.153617],[-88.547792,37.071463],[-88.914747,37.224817],[-89.029763,37.213863],[-89.183118,37.038601],[-89.133825,36.983832],[-89.292656,36.994786],[-89.517211,37.279587],[-89.435057,37.34531],[-89.517211,37.537003],[-89.517211,37.690357],[-89.84035,37.903958],[-89.949889,37.88205],[-90.059428,38.013497],[-90.355183,38.216144],[-90.349706,38.374975],[-90.179921,38.632391],[-90.207305,38.725499],[-90.10872,38.845992],[-90.251121,38.917192],[-90.470199,38.961007],[-90.585214,38.867899],[-90.661891,38.928146],[-90.727615,39.256762],[-91.061708,39.470363],[-91.368417,39.727779],[-91.494386,40.034488],[-91.50534,40.237135],[-91.417709,40.379535],[-91.401278,40.560274],[-91.121954,40.669813],[-91.09457,40.823167],[-90.963123,40.921752],[-90.946692,41.097014],[-91.111001,41.239415],[-91.045277,41.414677],[-90.656414,41.463969],[-90.344229,41.589939],[-90.311367,41.743293],[-90.179921,41.809016],[-90.141582,42.000709],[-90.168967,42.126679],[-90.393521,42.225264],[-90.420906,42.329326],[-90.639984,42.510065]]]}},
+{"type":"Feature","id":"18","properties":{"name":"Indiana"},"geometry":{"type":"Polygon","coordinates":[[[-85.990061,41.759724],[-84.807042,41.759724],[-84.807042,41.694001],[-84.801565,40.500028],[-84.817996,39.103408],[-84.894673,39.059592],[-84.812519,38.785745],[-84.987781,38.780268],[-85.173997,38.68716],[-85.431413,38.730976],[-85.42046,38.533806],[-85.590245,38.451652],[-85.655968,38.325682],[-85.83123,38.27639],[-85.924338,38.024451],[-86.039354,37.958727],[-86.263908,38.051835],[-86.302247,38.166851],[-86.521325,38.040881],[-86.504894,37.931343],[-86.729448,37.893004],[-86.795172,37.991589],[-87.047111,37.893004],[-87.129265,37.788942],[-87.381204,37.93682],[-87.512651,37.903958],[-87.600282,37.975158],[-87.682436,37.903958],[-87.934375,37.893004],[-88.027483,37.799896],[-88.060345,37.865619],[-88.000098,38.101128],[-87.923421,38.15042],[-87.950806,38.27639],[-87.83579,38.292821],[-87.655051,38.506421],[-87.62219,38.637868],[-87.49622,38.780268],[-87.512651,38.95553],[-87.63862,39.169131],[-87.529082,39.34987],[-87.523605,41.710431],[-87.42502,41.644708],[-87.118311,41.644708],[-86.822556,41.759724],[-85.990061,41.759724]]]}},
+{"type":"Feature","id":"19","properties":{"name":"Iowa"},"geometry":{"type":"Polygon","coordinates":[[[-91.368417,43.501391],[-91.215062,43.501391],[-91.204109,43.353514],[-91.056231,43.254929],[-91.176724,43.134436],[-91.143862,42.909881],[-91.067185,42.75105],[-90.711184,42.636034],[-90.639984,42.510065],[-90.420906,42.329326],[-90.393521,42.225264],[-90.168967,42.126679],[-90.141582,42.000709],[-90.179921,41.809016],[-90.311367,41.743293],[-90.344229,41.589939],[-90.656414,41.463969],[-91.045277,41.414677],[-91.111001,41.239415],[-90.946692,41.097014],[-90.963123,40.921752],[-91.09457,40.823167],[-91.121954,40.669813],[-91.401278,40.560274],[-91.417709,40.379535],[-91.527248,40.412397],[-91.729895,40.615043],[-91.833957,40.609566],[-93.257961,40.582182],[-94.632673,40.571228],[-95.7664,40.587659],[-95.881416,40.719105],[-95.826646,40.976521],[-95.925231,41.201076],[-95.919754,41.453015],[-96.095016,41.540646],[-96.122401,41.67757],[-96.062155,41.798063],[-96.127878,41.973325],[-96.264801,42.039048],[-96.44554,42.488157],[-96.631756,42.707235],[-96.544125,42.855112],[-96.511264,43.052282],[-96.434587,43.123482],[-96.560556,43.222067],[-96.527695,43.397329],[-96.582464,43.479483],[-96.451017,43.501391],[-91.368417,43.501391]]]}},
+{"type":"Feature","id":"20","properties":{"name":"Kansas"},"geometry":{"type":"Polygon","coordinates":[[[-101.90605,40.001626],[-95.306337,40.001626],[-95.207752,39.908518],[-94.884612,39.831841],[-95.109167,39.541563],[-94.983197,39.442978],[-94.824366,39.20747],[-94.610765,39.158177],[-94.616242,37.000263],[-100.087706,37.000263],[-102.042974,36.994786],[-102.053927,40.001626],[-101.90605,40.001626]]]}},
+{"type":"Feature","id":"21","properties":{"name":"Kentucky"},"geometry":{"type":"Polygon","coordinates":[[[-83.903347,38.769315],[-83.678792,38.632391],[-83.519961,38.703591],[-83.142052,38.626914],[-83.032514,38.725499],[-82.890113,38.758361],[-82.846298,38.588575],[-82.731282,38.561191],[-82.594358,38.424267],[-82.621743,38.123036],[-82.50125,37.931343],[-82.342419,37.783465],[-82.293127,37.668449],[-82.101434,37.553434],[-81.969987,37.537003],[-82.353373,37.268633],[-82.720328,37.120755],[-82.720328,37.044078],[-82.868205,36.978355],[-82.879159,36.890724],[-83.070852,36.852385],[-83.136575,36.742847],[-83.673316,36.600446],[-83.689746,36.584015],[-84.544149,36.594969],[-85.289013,36.627831],[-85.486183,36.616877],[-86.592525,36.655216],[-87.852221,36.633308],[-88.071299,36.677123],[-88.054868,36.496384],[-89.298133,36.507338],[-89.418626,36.496384],[-89.363857,36.622354],[-89.215979,36.578538],[-89.133825,36.983832],[-89.183118,37.038601],[-89.029763,37.213863],[-88.914747,37.224817],[-88.547792,37.071463],[-88.421823,37.153617],[-88.514931,37.285064],[-88.476592,37.389126],[-88.065822,37.482234],[-88.15893,37.657496],[-88.027483,37.799896],[-87.934375,37.893004],[-87.682436,37.903958],[-87.600282,37.975158],[-87.512651,37.903958],[-87.381204,37.93682],[-87.129265,37.788942],[-87.047111,37.893004],[-86.795172,37.991589],[-86.729448,37.893004],[-86.504894,37.931343],[-86.521325,38.040881],[-86.302247,38.166851],[-86.263908,38.051835],[-86.039354,37.958727],[-85.924338,38.024451],[-85.83123,38.27639],[-85.655968,38.325682],[-85.590245,38.451652],[-85.42046,38.533806],[-85.431413,38.730976],[-85.173997,38.68716],[-84.987781,38.780268],[-84.812519,38.785745],[-84.894673,39.059592],[-84.817996,39.103408],[-84.43461,39.103408],[-84.231963,38.895284],[-84.215533,38.807653],[-83.903347,38.769315]]]}},
+{"type":"Feature","id":"22","properties":{"name":"Louisiana"},"geometry":{"type":"Polygon","coordinates":[[[-93.608485,33.018527],[-91.16577,33.002096],[-91.072662,32.887081],[-91.143862,32.843265],[-91.154816,32.640618],[-91.006939,32.514649],[-90.985031,32.218894],[-91.105524,31.988862],[-91.341032,31.846462],[-91.401278,31.621907],[-91.499863,31.643815],[-91.516294,31.27686],[-91.636787,31.265906],[-91.565587,31.068736],[-91.636787,30.997536],[-89.747242,30.997536],[-89.845827,30.66892],[-89.681519,30.449842],[-89.643181,30.285534],[-89.522688,30.181472],[-89.818443,30.044549],[-89.84035,29.945964],[-89.599365,29.88024],[-89.495303,30.039072],[-89.287179,29.88024],[-89.30361,29.754271],[-89.424103,29.699501],[-89.648657,29.748794],[-89.621273,29.655686],[-89.69795,29.513285],[-89.506257,29.387316],[-89.199548,29.348977],[-89.09001,29.2011],[-89.002379,29.179192],[-89.16121,29.009407],[-89.336472,29.042268],[-89.484349,29.217531],[-89.851304,29.310638],[-89.851304,29.480424],[-90.032043,29.425654],[-90.021089,29.283254],[-90.103244,29.151807],[-90.23469,29.129899],[-90.333275,29.277777],[-90.563307,29.283254],[-90.645461,29.129899],[-90.798815,29.086084],[-90.963123,29.179192],[-91.09457,29.190146],[-91.220539,29.436608],[-91.445094,29.546147],[-91.532725,29.529716],[-91.620356,29.73784],[-91.883249,29.710455],[-91.888726,29.836425],[-92.146142,29.715932],[-92.113281,29.622824],[-92.31045,29.535193],[-92.617159,29.579009],[-92.97316,29.715932],[-93.2251,29.776178],[-93.767317,29.726886],[-93.838517,29.688547],[-93.926148,29.787132],[-93.690639,30.143133],[-93.767317,30.334826],[-93.696116,30.438888],[-93.728978,30.575812],[-93.630393,30.679874],[-93.526331,30.93729],[-93.542762,31.15089],[-93.816609,31.556184],[-93.822086,31.775262],[-94.041164,31.994339],[-94.041164,33.018527],[-93.608485,33.018527]]]}},
+{"type":"Feature","id":"23","properties":{"name":"Maine"},"geometry":{"type":"Polygon","coordinates":[[[-70.703921,43.057759],[-70.824413,43.128959],[-70.807983,43.227544],[-70.966814,43.34256],[-71.032537,44.657025],[-71.08183,45.303304],[-70.649151,45.440228],[-70.720352,45.511428],[-70.556043,45.664782],[-70.386258,45.735983],[-70.41912,45.796229],[-70.260289,45.889337],[-70.309581,46.064599],[-70.210996,46.327492],[-70.057642,46.415123],[-69.997395,46.694447],[-69.225147,47.461219],[-69.044408,47.428357],[-69.033454,47.242141],[-68.902007,47.176418],[-68.578868,47.285957],[-68.376221,47.285957],[-68.233821,47.357157],[-67.954497,47.198326],[-67.790188,47.066879],[-67.779235,45.944106],[-67.801142,45.675736],[-67.456095,45.604536],[-67.505388,45.48952],[-67.417757,45.379982],[-67.488957,45.281397],[-67.346556,45.128042],[-67.16034,45.160904],[-66.979601,44.804903],[-67.187725,44.646072],[-67.308218,44.706318],[-67.406803,44.596779],[-67.549203,44.624164],[-67.565634,44.531056],[-67.75185,44.54201],[-68.047605,44.328409],[-68.118805,44.476286],[-68.222867,44.48724],[-68.173574,44.328409],[-68.403606,44.251732],[-68.458375,44.377701],[-68.567914,44.311978],[-68.82533,44.311978],[-68.830807,44.459856],[-68.984161,44.426994],[-68.956777,44.322932],[-69.099177,44.103854],[-69.071793,44.043608],[-69.258008,43.923115],[-69.444224,43.966931],[-69.553763,43.840961],[-69.707118,43.82453],[-69.833087,43.720469],[-69.986442,43.742376],[-70.030257,43.851915],[-70.254812,43.676653],[-70.194565,43.567114],[-70.358873,43.528776],[-70.369827,43.435668],[-70.556043,43.320652],[-70.703921,43.057759]]]}},
+{"type":"Feature","id":"24","properties":{"name":"Maryland"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-75.994645,37.95325],[-76.016553,37.95325],[-76.043938,37.95325],[-75.994645,37.95325]]],[[[-79.477979,39.722302],[-75.786521,39.722302],[-75.693413,38.462606],[-75.047134,38.451652],[-75.244304,38.029928],[-75.397659,38.013497],[-75.671506,37.95325],[-75.885106,37.909435],[-75.879629,38.073743],[-75.961783,38.139466],[-75.846768,38.210667],[-76.000122,38.374975],[-76.049415,38.303775],[-76.257538,38.320205],[-76.328738,38.500944],[-76.263015,38.500944],[-76.257538,38.736453],[-76.191815,38.829561],[-76.279446,39.147223],[-76.169907,39.333439],[-76.000122,39.366301],[-75.972737,39.557994],[-76.098707,39.536086],[-76.104184,39.437501],[-76.367077,39.311532],[-76.443754,39.196516],[-76.460185,38.906238],[-76.55877,38.769315],[-76.514954,38.539283],[-76.383508,38.380452],[-76.399939,38.259959],[-76.317785,38.139466],[-76.3616,38.057312],[-76.591632,38.216144],[-76.920248,38.292821],[-77.018833,38.446175],[-77.205049,38.358544],[-77.276249,38.479037],[-77.128372,38.632391],[-77.040741,38.791222],[-76.909294,38.895284],[-77.035264,38.993869],[-77.117418,38.933623],[-77.248864,39.026731],[-77.456988,39.076023],[-77.456988,39.223901],[-77.566527,39.306055],[-77.719881,39.322485],[-77.834897,39.601809],[-78.004682,39.601809],[-78.174467,39.694917],[-78.267575,39.61824],[-78.431884,39.623717],[-78.470222,39.514178],[-78.765977,39.585379],[-78.963147,39.437501],[-79.094593,39.470363],[-79.291763,39.300578],[-79.488933,39.20747],[-79.477979,39.722302]]]]}},
+{"type":"Feature","id":"25","properties":{"name":"Massachusetts"},"geometry":{"type":"Polygon","coordinates":[[[-70.917521,42.887974],[-70.818936,42.871543],[-70.780598,42.696281],[-70.824413,42.55388],[-70.983245,42.422434],[-70.988722,42.269079],[-70.769644,42.247172],[-70.638197,42.08834],[-70.660105,41.962371],[-70.550566,41.929509],[-70.539613,41.814493],[-70.260289,41.715908],[-69.937149,41.809016],[-70.008349,41.672093],[-70.484843,41.5516],[-70.660105,41.546123],[-70.764167,41.639231],[-70.928475,41.611847],[-70.933952,41.540646],[-71.120168,41.496831],[-71.196845,41.67757],[-71.22423,41.710431],[-71.328292,41.781632],[-71.383061,42.01714],[-71.530939,42.01714],[-71.799309,42.006186],[-71.799309,42.022617],[-73.053528,42.039048],[-73.486206,42.050002],[-73.508114,42.08834],[-73.267129,42.745573],[-72.456542,42.729142],[-71.29543,42.696281],[-71.185891,42.789389],[-70.917521,42.887974]]]}},
+{"type":"Feature","id":"26","properties":{"name":"Michigan"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-83.454238,41.732339],[-84.807042,41.694001],[-84.807042,41.759724],[-85.990061,41.759724],[-86.822556,41.759724],[-86.619909,41.891171],[-86.482986,42.115725],[-86.357016,42.252649],[-86.263908,42.444341],[-86.209139,42.718189],[-86.231047,43.013943],[-86.526801,43.594499],[-86.433693,43.813577],[-86.499417,44.07647],[-86.269385,44.34484],[-86.220093,44.569394],[-86.252954,44.689887],[-86.088646,44.73918],[-86.066738,44.903488],[-85.809322,44.947303],[-85.612152,45.128042],[-85.628583,44.766564],[-85.524521,44.750133],[-85.393075,44.930872],[-85.387598,45.237581],[-85.305444,45.314258],[-85.031597,45.363551],[-85.119228,45.577151],[-84.938489,45.75789],[-84.713934,45.768844],[-84.461995,45.653829],[-84.215533,45.637398],[-84.09504,45.494997],[-83.908824,45.484043],[-83.596638,45.352597],[-83.4871,45.358074],[-83.317314,45.144473],[-83.454238,45.029457],[-83.322791,44.88158],[-83.273499,44.711795],[-83.333745,44.339363],[-83.536392,44.246255],[-83.585684,44.054562],[-83.82667,43.988839],[-83.958116,43.758807],[-83.908824,43.671176],[-83.667839,43.589022],[-83.481623,43.714992],[-83.262545,43.972408],[-82.917498,44.070993],[-82.747713,43.994316],[-82.643651,43.851915],[-82.539589,43.435668],[-82.523158,43.227544],[-82.413619,42.975605],[-82.517681,42.614127],[-82.681989,42.559357],[-82.687466,42.690804],[-82.797005,42.652465],[-82.922975,42.351234],[-83.125621,42.236218],[-83.185868,42.006186],[-83.437807,41.814493],[-83.454238,41.732339]]],[[[-85.508091,45.730506],[-85.49166,45.610013],[-85.623106,45.588105],[-85.568337,45.75789],[-85.508091,45.730506]]],[[[-87.589328,45.095181],[-87.742682,45.199243],[-87.649574,45.341643],[-87.885083,45.363551],[-87.791975,45.500474],[-87.781021,45.675736],[-87.989145,45.796229],[-88.10416,45.922199],[-88.531362,46.020784],[-88.662808,45.987922],[-89.09001,46.135799],[-90.119674,46.338446],[-90.229213,46.508231],[-90.415429,46.568478],[-90.026566,46.672539],[-89.851304,46.793032],[-89.413149,46.842325],[-89.128348,46.990202],[-88.996902,46.995679],[-88.887363,47.099741],[-88.575177,47.247618],[-88.416346,47.373588],[-88.180837,47.455742],[-87.956283,47.384542],[-88.350623,47.077833],[-88.443731,46.973771],[-88.438254,46.787555],[-88.246561,46.929956],[-87.901513,46.908048],[-87.633143,46.809463],[-87.392158,46.535616],[-87.260711,46.486323],[-87.008772,46.530139],[-86.948526,46.469893],[-86.696587,46.437031],[-86.159846,46.667063],[-85.880522,46.68897],[-85.508091,46.678016],[-85.256151,46.754694],[-85.064458,46.760171],[-85.02612,46.480847],[-84.82895,46.442508],[-84.63178,46.486323],[-84.549626,46.4206],[-84.418179,46.502754],[-84.127902,46.530139],[-84.122425,46.179615],[-83.990978,46.031737],[-83.793808,45.993399],[-83.7719,46.091984],[-83.580208,46.091984],[-83.476146,45.987922],[-83.563777,45.911245],[-84.111471,45.976968],[-84.374364,45.933153],[-84.659165,46.053645],[-84.741319,45.944106],[-84.70298,45.850998],[-84.82895,45.872906],[-85.015166,46.00983],[-85.338305,46.091984],[-85.502614,46.097461],[-85.661445,45.966014],[-85.924338,45.933153],[-86.209139,45.960537],[-86.324155,45.905768],[-86.351539,45.796229],[-86.663725,45.703121],[-86.647294,45.834568],[-86.784218,45.861952],[-86.838987,45.725029],[-87.069019,45.719552],[-87.17308,45.659305],[-87.326435,45.423797],[-87.611236,45.122565],[-87.589328,45.095181]]],[[[-88.805209,47.976051],[-89.057148,47.850082],[-89.188594,47.833651],[-89.177641,47.937713],[-88.547792,48.173221],[-88.668285,48.008913],[-88.805209,47.976051]]]]}},
+{"type":"Feature","id":"27","properties":{"name":"Minnesota"},"geometry":{"type":"Polygon","coordinates":[[[-92.014696,46.705401],[-92.091373,46.749217],[-92.29402,46.667063],[-92.29402,46.075553],[-92.354266,46.015307],[-92.639067,45.933153],[-92.869098,45.719552],[-92.885529,45.577151],[-92.770513,45.566198],[-92.644544,45.440228],[-92.75956,45.286874],[-92.737652,45.117088],[-92.808852,44.750133],[-92.545959,44.569394],[-92.337835,44.552964],[-92.233773,44.443425],[-91.927065,44.333886],[-91.877772,44.202439],[-91.592971,44.032654],[-91.43414,43.994316],[-91.242447,43.775238],[-91.269832,43.616407],[-91.215062,43.501391],[-91.368417,43.501391],[-96.451017,43.501391],[-96.451017,45.297827],[-96.681049,45.412843],[-96.856311,45.604536],[-96.582464,45.818137],[-96.560556,45.933153],[-96.598895,46.332969],[-96.719387,46.437031],[-96.801542,46.656109],[-96.785111,46.924479],[-96.823449,46.968294],[-96.856311,47.609096],[-97.053481,47.948667],[-97.130158,48.140359],[-97.16302,48.545653],[-97.097296,48.682577],[-97.228743,49.000239],[-95.152983,49.000239],[-95.152983,49.383625],[-94.955813,49.372671],[-94.824366,49.295994],[-94.69292,48.775685],[-94.588858,48.715438],[-94.260241,48.699007],[-94.221903,48.649715],[-93.838517,48.627807],[-93.794701,48.518268],[-93.466085,48.545653],[-93.466085,48.589469],[-93.208669,48.644238],[-92.984114,48.62233],[-92.726698,48.540176],[-92.655498,48.436114],[-92.50762,48.447068],[-92.370697,48.222514],[-92.304974,48.315622],[-92.053034,48.359437],[-92.009219,48.266329],[-91.713464,48.200606],[-91.713464,48.112975],[-91.565587,48.041775],[-91.264355,48.080113],[-91.083616,48.178698],[-90.837154,48.238944],[-90.749522,48.091067],[-90.579737,48.123929],[-90.377091,48.091067],[-90.141582,48.112975],[-89.873212,47.987005],[-89.615796,48.008913],[-89.637704,47.954144],[-89.971797,47.828174],[-90.437337,47.729589],[-90.738569,47.625527],[-91.171247,47.368111],[-91.357463,47.20928],[-91.642264,47.028541],[-92.091373,46.787555],[-92.014696,46.705401]]]}},
+{"type":"Feature","id":"28","properties":{"name":"Mississippi"},"geometry":{"type":"Polygon","coordinates":[[[-88.471115,34.995703],[-88.202745,34.995703],[-88.098683,34.891641],[-88.241084,33.796253],[-88.471115,31.895754],[-88.394438,30.367688],[-88.503977,30.323872],[-88.744962,30.34578],[-88.843547,30.411504],[-89.084533,30.367688],[-89.418626,30.252672],[-89.522688,30.181472],[-89.643181,30.285534],[-89.681519,30.449842],[-89.845827,30.66892],[-89.747242,30.997536],[-91.636787,30.997536],[-91.565587,31.068736],[-91.636787,31.265906],[-91.516294,31.27686],[-91.499863,31.643815],[-91.401278,31.621907],[-91.341032,31.846462],[-91.105524,31.988862],[-90.985031,32.218894],[-91.006939,32.514649],[-91.154816,32.640618],[-91.143862,32.843265],[-91.072662,32.887081],[-91.16577,33.002096],[-91.089093,33.13902],[-91.143862,33.347144],[-91.056231,33.429298],[-91.231493,33.560744],[-91.072662,33.867453],[-90.891923,34.026284],[-90.952169,34.135823],[-90.744046,34.300131],[-90.749522,34.365854],[-90.568783,34.420624],[-90.585214,34.617794],[-90.481152,34.661609],[-90.409952,34.831394],[-90.251121,34.908072],[-90.311367,34.995703],[-88.471115,34.995703]]]}},
+{"type":"Feature","id":"29","properties":{"name":"Missouri"},"geometry":{"type":"Polygon","coordinates":[[[-91.833957,40.609566],[-91.729895,40.615043],[-91.527248,40.412397],[-91.417709,40.379535],[-91.50534,40.237135],[-91.494386,40.034488],[-91.368417,39.727779],[-91.061708,39.470363],[-90.727615,39.256762],[-90.661891,38.928146],[-90.585214,38.867899],[-90.470199,38.961007],[-90.251121,38.917192],[-90.10872,38.845992],[-90.207305,38.725499],[-90.179921,38.632391],[-90.349706,38.374975],[-90.355183,38.216144],[-90.059428,38.013497],[-89.949889,37.88205],[-89.84035,37.903958],[-89.517211,37.690357],[-89.517211,37.537003],[-89.435057,37.34531],[-89.517211,37.279587],[-89.292656,36.994786],[-89.133825,36.983832],[-89.215979,36.578538],[-89.363857,36.622354],[-89.418626,36.496384],[-89.484349,36.496384],[-89.539119,36.496384],[-89.533642,36.249922],[-89.730812,35.997983],[-90.377091,35.997983],[-90.218259,36.184199],[-90.064905,36.304691],[-90.152536,36.496384],[-94.473842,36.501861],[-94.616242,36.501861],[-94.616242,37.000263],[-94.610765,39.158177],[-94.824366,39.20747],[-94.983197,39.442978],[-95.109167,39.541563],[-94.884612,39.831841],[-95.207752,39.908518],[-95.306337,40.001626],[-95.552799,40.264519],[-95.7664,40.587659],[-94.632673,40.571228],[-93.257961,40.582182],[-91.833957,40.609566]]]}},
+{"type":"Feature","id":"30","properties":{"name":"Montana"},"geometry":{"type":"Polygon","coordinates":[[[-104.047534,49.000239],[-104.042057,47.861036],[-104.047534,45.944106],[-104.042057,44.996596],[-104.058488,44.996596],[-105.91517,45.002073],[-109.080842,45.002073],[-111.05254,45.002073],[-111.047063,44.476286],[-111.227803,44.580348],[-111.386634,44.75561],[-111.616665,44.547487],[-111.819312,44.509148],[-111.868605,44.563917],[-112.104113,44.520102],[-112.241036,44.569394],[-112.471068,44.481763],[-112.783254,44.48724],[-112.887315,44.394132],[-113.002331,44.448902],[-113.133778,44.772041],[-113.341901,44.782995],[-113.456917,44.865149],[-113.45144,45.056842],[-113.571933,45.128042],[-113.736241,45.330689],[-113.834826,45.522382],[-113.807441,45.604536],[-113.98818,45.703121],[-114.086765,45.593582],[-114.333228,45.456659],[-114.546828,45.560721],[-114.497536,45.670259],[-114.568736,45.774321],[-114.387997,45.88386],[-114.492059,46.037214],[-114.464674,46.272723],[-114.322274,46.645155],[-114.612552,46.639678],[-114.623506,46.705401],[-114.886399,46.809463],[-114.930214,46.919002],[-115.302646,47.187372],[-115.324554,47.258572],[-115.527201,47.302388],[-115.718894,47.42288],[-115.724371,47.696727],[-116.04751,47.976051],[-116.04751,49.000239],[-111.50165,48.994762],[-109.453274,49.000239],[-104.047534,49.000239]]]}},
+{"type":"Feature","id":"31","properties":{"name":"Nebraska"},"geometry":{"type":"Polygon","coordinates":[[[-103.324578,43.002989],[-101.626726,42.997512],[-98.499393,42.997512],[-98.466531,42.94822],[-97.951699,42.767481],[-97.831206,42.866066],[-97.688806,42.844158],[-97.217789,42.844158],[-96.692003,42.657942],[-96.626279,42.515542],[-96.44554,42.488157],[-96.264801,42.039048],[-96.127878,41.973325],[-96.062155,41.798063],[-96.122401,41.67757],[-96.095016,41.540646],[-95.919754,41.453015],[-95.925231,41.201076],[-95.826646,40.976521],[-95.881416,40.719105],[-95.7664,40.587659],[-95.552799,40.264519],[-95.306337,40.001626],[-101.90605,40.001626],[-102.053927,40.001626],[-102.053927,41.003906],[-104.053011,41.003906],[-104.053011,43.002989],[-103.324578,43.002989]]]}},
+{"type":"Feature","id":"32","properties":{"name":"Nevada"},"geometry":{"type":"Polygon","coordinates":[[[-117.027882,42.000709],[-114.04295,41.995232],[-114.048427,37.000263],[-114.048427,36.195153],[-114.152489,36.025367],[-114.251074,36.01989],[-114.371566,36.140383],[-114.738521,36.102045],[-114.678275,35.516012],[-114.596121,35.324319],[-114.574213,35.138103],[-114.634459,35.00118],[-115.85034,35.970598],[-116.540435,36.501861],[-117.498899,37.21934],[-118.71478,38.101128],[-120.001861,38.999346],[-119.996384,40.264519],[-120.001861,41.995232],[-118.698349,41.989755],[-117.027882,42.000709]]]}},
+{"type":"Feature","id":"33","properties":{"name":"New Hampshire"},"geometry":{"type":"Polygon","coordinates":[[[-71.08183,45.303304],[-71.032537,44.657025],[-70.966814,43.34256],[-70.807983,43.227544],[-70.824413,43.128959],[-70.703921,43.057759],[-70.818936,42.871543],[-70.917521,42.887974],[-71.185891,42.789389],[-71.29543,42.696281],[-72.456542,42.729142],[-72.544173,42.80582],[-72.533219,42.953697],[-72.445588,43.008466],[-72.456542,43.150867],[-72.379864,43.572591],[-72.204602,43.769761],[-72.116971,43.994316],[-72.02934,44.07647],[-72.034817,44.322932],[-71.700724,44.41604],[-71.536416,44.585825],[-71.629524,44.750133],[-71.4926,44.914442],[-71.503554,45.013027],[-71.361154,45.270443],[-71.131122,45.243058],[-71.08183,45.303304]]]}},
+{"type":"Feature","id":"34","properties":{"name":"New Jersey"},"geometry":{"type":"Polygon","coordinates":[[[-74.236547,41.14083],[-73.902454,40.998429],[-74.022947,40.708151],[-74.187255,40.642428],[-74.274886,40.489074],[-74.001039,40.412397],[-73.979131,40.297381],[-74.099624,39.760641],[-74.411809,39.360824],[-74.614456,39.245808],[-74.795195,38.993869],[-74.888303,39.158177],[-75.178581,39.240331],[-75.534582,39.459409],[-75.55649,39.607286],[-75.561967,39.629194],[-75.507197,39.683964],[-75.414089,39.804456],[-75.145719,39.88661],[-75.129289,39.963288],[-74.82258,40.127596],[-74.773287,40.215227],[-75.058088,40.417874],[-75.069042,40.543843],[-75.195012,40.576705],[-75.205966,40.691721],[-75.052611,40.866983],[-75.134765,40.971045],[-74.882826,41.179168],[-74.828057,41.288707],[-74.69661,41.359907],[-74.236547,41.14083]]]}},
+{"type":"Feature","id":"35","properties":{"name":"New Mexico"},"geometry":{"type":"Polygon","coordinates":[[[-107.421329,37.000263],[-106.868158,36.994786],[-104.337812,36.994786],[-103.001438,37.000263],[-103.001438,36.501861],[-103.039777,36.501861],[-103.045254,34.01533],[-103.067161,33.002096],[-103.067161,31.999816],[-106.616219,31.999816],[-106.643603,31.901231],[-106.528588,31.786216],[-108.210008,31.786216],[-108.210008,31.331629],[-109.04798,31.331629],[-109.042503,37.000263],[-107.421329,37.000263]]]}},
+{"type":"Feature","id":"36","properties":{"name":"New York"},"geometry":{"type":"Polygon","coordinates":[[[-73.343806,45.013027],[-73.332852,44.804903],[-73.387622,44.618687],[-73.294514,44.437948],[-73.321898,44.246255],[-73.436914,44.043608],[-73.349283,43.769761],[-73.404052,43.687607],[-73.245221,43.523299],[-73.278083,42.833204],[-73.267129,42.745573],[-73.508114,42.08834],[-73.486206,42.050002],[-73.55193,41.294184],[-73.48073,41.21203],[-73.727192,41.102491],[-73.655992,40.987475],[-73.22879,40.905321],[-73.141159,40.965568],[-72.774204,40.965568],[-72.587988,40.998429],[-72.28128,41.157261],[-72.259372,41.042245],[-72.100541,40.992952],[-72.467496,40.845075],[-73.239744,40.625997],[-73.562884,40.582182],[-73.776484,40.593136],[-73.935316,40.543843],[-74.022947,40.708151],[-73.902454,40.998429],[-74.236547,41.14083],[-74.69661,41.359907],[-74.740426,41.431108],[-74.89378,41.436584],[-75.074519,41.60637],[-75.052611,41.754247],[-75.173104,41.869263],[-75.249781,41.863786],[-75.35932,42.000709],[-79.76278,42.000709],[-79.76278,42.252649],[-79.76278,42.269079],[-79.149363,42.55388],[-79.050778,42.690804],[-78.853608,42.783912],[-78.930285,42.953697],[-79.012439,42.986559],[-79.072686,43.260406],[-78.486653,43.375421],[-77.966344,43.369944],[-77.75822,43.34256],[-77.533665,43.233021],[-77.391265,43.276836],[-76.958587,43.271359],[-76.695693,43.34256],[-76.41637,43.523299],[-76.235631,43.528776],[-76.230154,43.802623],[-76.137046,43.961454],[-76.3616,44.070993],[-76.312308,44.196962],[-75.912491,44.366748],[-75.764614,44.514625],[-75.282643,44.848718],[-74.828057,45.018503],[-74.148916,44.991119],[-73.343806,45.013027]]]}},
+{"type":"Feature","id":"37","properties":{"name":"North Carolina"},"geometry":{"type":"Polygon","coordinates":[[[-80.978661,36.562108],[-80.294043,36.545677],[-79.510841,36.5402],[-75.868676,36.551154],[-75.75366,36.151337],[-76.032984,36.189676],[-76.071322,36.140383],[-76.410893,36.080137],[-76.460185,36.025367],[-76.68474,36.008937],[-76.673786,35.937736],[-76.399939,35.987029],[-76.3616,35.943213],[-76.060368,35.992506],[-75.961783,35.899398],[-75.781044,35.937736],[-75.715321,35.696751],[-75.775568,35.581735],[-75.89606,35.570781],[-76.147999,35.324319],[-76.482093,35.313365],[-76.536862,35.14358],[-76.394462,34.973795],[-76.279446,34.940933],[-76.493047,34.661609],[-76.673786,34.694471],[-76.991448,34.667086],[-77.210526,34.60684],[-77.555573,34.415147],[-77.82942,34.163208],[-77.971821,33.845545],[-78.179944,33.916745],[-78.541422,33.851022],[-79.675149,34.80401],[-80.797922,34.820441],[-80.781491,34.935456],[-80.934845,35.105241],[-81.038907,35.044995],[-81.044384,35.149057],[-82.276696,35.198349],[-82.550543,35.160011],[-82.764143,35.066903],[-83.109191,35.00118],[-83.618546,34.984749],[-84.319594,34.990226],[-84.29221,35.225734],[-84.09504,35.247642],[-84.018363,35.41195],[-83.7719,35.559827],[-83.498053,35.565304],[-83.251591,35.718659],[-82.994175,35.773428],[-82.775097,35.997983],[-82.638174,36.063706],[-82.610789,35.965121],[-82.216449,36.156814],[-82.03571,36.118475],[-81.909741,36.304691],[-81.723525,36.353984],[-81.679709,36.589492],[-80.978661,36.562108]]]}},
+{"type":"Feature","id":"38","properties":{"name":"North Dakota"},"geometry":{"type":"Polygon","coordinates":[[[-97.228743,49.000239],[-97.097296,48.682577],[-97.16302,48.545653],[-97.130158,48.140359],[-97.053481,47.948667],[-96.856311,47.609096],[-96.823449,46.968294],[-96.785111,46.924479],[-96.801542,46.656109],[-96.719387,46.437031],[-96.598895,46.332969],[-96.560556,45.933153],[-104.047534,45.944106],[-104.042057,47.861036],[-104.047534,49.000239],[-97.228743,49.000239]]]}},
+{"type":"Feature","id":"39","properties":{"name":"Ohio"},"geometry":{"type":"Polygon","coordinates":[[[-80.518598,41.978802],[-80.518598,40.636951],[-80.666475,40.582182],[-80.595275,40.472643],[-80.600752,40.319289],[-80.737675,40.078303],[-80.830783,39.711348],[-81.219646,39.388209],[-81.345616,39.344393],[-81.455155,39.410117],[-81.57017,39.267716],[-81.685186,39.273193],[-81.811156,39.0815],[-81.783771,38.966484],[-81.887833,38.873376],[-82.03571,39.026731],[-82.221926,38.785745],[-82.172634,38.632391],[-82.293127,38.577622],[-82.331465,38.446175],[-82.594358,38.424267],[-82.731282,38.561191],[-82.846298,38.588575],[-82.890113,38.758361],[-83.032514,38.725499],[-83.142052,38.626914],[-83.519961,38.703591],[-83.678792,38.632391],[-83.903347,38.769315],[-84.215533,38.807653],[-84.231963,38.895284],[-84.43461,39.103408],[-84.817996,39.103408],[-84.801565,40.500028],[-84.807042,41.694001],[-83.454238,41.732339],[-83.065375,41.595416],[-82.933929,41.513262],[-82.835344,41.589939],[-82.616266,41.431108],[-82.479343,41.381815],[-82.013803,41.513262],[-81.739956,41.485877],[-81.444201,41.672093],[-81.011523,41.852832],[-80.518598,41.978802],[-80.518598,41.978802]]]}},
+{"type":"Feature","id":"40","properties":{"name":"Oklahoma"},"geometry":{"type":"Polygon","coordinates":[[[-100.087706,37.000263],[-94.616242,37.000263],[-94.616242,36.501861],[-94.430026,35.395519],[-94.484796,33.637421],[-94.868182,33.74696],[-94.966767,33.861976],[-95.224183,33.960561],[-95.289906,33.87293],[-95.547322,33.878407],[-95.602092,33.933176],[-95.8376,33.834591],[-95.936185,33.889361],[-96.149786,33.840068],[-96.346956,33.686714],[-96.423633,33.774345],[-96.631756,33.845545],[-96.850834,33.845545],[-96.922034,33.960561],[-97.173974,33.736006],[-97.256128,33.861976],[-97.371143,33.823637],[-97.458774,33.905791],[-97.694283,33.982469],[-97.869545,33.851022],[-97.946222,33.987946],[-98.088623,34.004376],[-98.170777,34.113915],[-98.36247,34.157731],[-98.488439,34.064623],[-98.570593,34.146777],[-98.767763,34.135823],[-98.986841,34.223454],[-99.189488,34.2125],[-99.260688,34.404193],[-99.57835,34.415147],[-99.698843,34.382285],[-99.923398,34.573978],[-100.000075,34.563024],[-100.000075,36.501861],[-101.812942,36.501861],[-103.001438,36.501861],[-103.001438,37.000263],[-102.042974,36.994786],[-100.087706,37.000263]]]}},
+{"type":"Feature","id":"41","properties":{"name":"Oregon"},"geometry":{"type":"Polygon","coordinates":[[[-123.211348,46.174138],[-123.11824,46.185092],[-122.904639,46.08103],[-122.811531,45.960537],[-122.762239,45.659305],[-122.247407,45.549767],[-121.809251,45.708598],[-121.535404,45.725029],[-121.217742,45.670259],[-121.18488,45.604536],[-120.637186,45.746937],[-120.505739,45.697644],[-120.209985,45.725029],[-119.963522,45.823614],[-119.525367,45.911245],[-119.125551,45.933153],[-118.988627,45.998876],[-116.918344,45.993399],[-116.78142,45.823614],[-116.545912,45.752413],[-116.463758,45.61549],[-116.671881,45.319735],[-116.732128,45.144473],[-116.847143,45.02398],[-116.830713,44.930872],[-116.934774,44.782995],[-117.038836,44.750133],[-117.241483,44.394132],[-117.170283,44.257209],[-116.97859,44.240778],[-116.896436,44.158624],[-117.027882,43.830007],[-117.027882,42.000709],[-118.698349,41.989755],[-120.001861,41.995232],[-121.037003,41.995232],[-122.378853,42.011663],[-123.233256,42.006186],[-124.213628,42.000709],[-124.356029,42.115725],[-124.432706,42.438865],[-124.416275,42.663419],[-124.553198,42.838681],[-124.454613,43.002989],[-124.383413,43.271359],[-124.235536,43.55616],[-124.169813,43.8081],[-124.060274,44.657025],[-124.076705,44.772041],[-123.97812,45.144473],[-123.939781,45.659305],[-123.994551,45.944106],[-123.945258,46.113892],[-123.545441,46.261769],[-123.370179,46.146753],[-123.211348,46.174138]]]}},
+{"type":"Feature","id":"42","properties":{"name":"Pennsylvania"},"geometry":{"type":"Polygon","coordinates":[[[-79.76278,42.252649],[-79.76278,42.000709],[-75.35932,42.000709],[-75.249781,41.863786],[-75.173104,41.869263],[-75.052611,41.754247],[-75.074519,41.60637],[-74.89378,41.436584],[-74.740426,41.431108],[-74.69661,41.359907],[-74.828057,41.288707],[-74.882826,41.179168],[-75.134765,40.971045],[-75.052611,40.866983],[-75.205966,40.691721],[-75.195012,40.576705],[-75.069042,40.543843],[-75.058088,40.417874],[-74.773287,40.215227],[-74.82258,40.127596],[-75.129289,39.963288],[-75.145719,39.88661],[-75.414089,39.804456],[-75.616736,39.831841],[-75.786521,39.722302],[-79.477979,39.722302],[-80.518598,39.722302],[-80.518598,40.636951],[-80.518598,41.978802],[-80.518598,41.978802],[-80.332382,42.033571],[-79.76278,42.269079],[-79.76278,42.252649]]]}},
+{"type":"Feature","id":"44","properties":{"name":"Rhode Island"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-71.196845,41.67757],[-71.120168,41.496831],[-71.317338,41.474923],[-71.196845,41.67757]]],[[[-71.530939,42.01714],[-71.383061,42.01714],[-71.328292,41.781632],[-71.22423,41.710431],[-71.344723,41.726862],[-71.448785,41.578985],[-71.481646,41.370861],[-71.859555,41.321569],[-71.799309,41.414677],[-71.799309,42.006186],[-71.530939,42.01714]]]]}},
+{"type":"Feature","id":"45","properties":{"name":"South Carolina"},"geometry":{"type":"Polygon","coordinates":[[[-82.764143,35.066903],[-82.550543,35.160011],[-82.276696,35.198349],[-81.044384,35.149057],[-81.038907,35.044995],[-80.934845,35.105241],[-80.781491,34.935456],[-80.797922,34.820441],[-79.675149,34.80401],[-78.541422,33.851022],[-78.716684,33.80173],[-78.935762,33.637421],[-79.149363,33.380005],[-79.187701,33.171881],[-79.357487,33.007573],[-79.582041,33.007573],[-79.631334,32.887081],[-79.866842,32.755634],[-79.998289,32.613234],[-80.206412,32.552987],[-80.430967,32.399633],[-80.452875,32.328433],[-80.660998,32.246279],[-80.885553,32.032678],[-81.115584,32.120309],[-81.121061,32.290094],[-81.279893,32.558464],[-81.416816,32.629664],[-81.42777,32.843265],[-81.493493,33.007573],[-81.761863,33.160928],[-81.937125,33.347144],[-81.926172,33.462159],[-82.194542,33.631944],[-82.325988,33.81816],[-82.55602,33.94413],[-82.714851,34.152254],[-82.747713,34.26727],[-82.901067,34.486347],[-83.005129,34.469916],[-83.339222,34.683517],[-83.322791,34.787579],[-83.109191,35.00118],[-82.764143,35.066903]]]}},
+{"type":"Feature","id":"46","properties":{"name":"South Dakota"},"geometry":{"type":"Polygon","coordinates":[[[-104.047534,45.944106],[-96.560556,45.933153],[-96.582464,45.818137],[-96.856311,45.604536],[-96.681049,45.412843],[-96.451017,45.297827],[-96.451017,43.501391],[-96.582464,43.479483],[-96.527695,43.397329],[-96.560556,43.222067],[-96.434587,43.123482],[-96.511264,43.052282],[-96.544125,42.855112],[-96.631756,42.707235],[-96.44554,42.488157],[-96.626279,42.515542],[-96.692003,42.657942],[-97.217789,42.844158],[-97.688806,42.844158],[-97.831206,42.866066],[-97.951699,42.767481],[-98.466531,42.94822],[-98.499393,42.997512],[-101.626726,42.997512],[-103.324578,43.002989],[-104.053011,43.002989],[-104.058488,44.996596],[-104.042057,44.996596],[-104.047534,45.944106]]]}},
+{"type":"Feature","id":"47","properties":{"name":"Tennessee"},"geometry":{"type":"Polygon","coordinates":[[[-88.054868,36.496384],[-88.071299,36.677123],[-87.852221,36.633308],[-86.592525,36.655216],[-85.486183,36.616877],[-85.289013,36.627831],[-84.544149,36.594969],[-83.689746,36.584015],[-83.673316,36.600446],[-81.679709,36.589492],[-81.723525,36.353984],[-81.909741,36.304691],[-82.03571,36.118475],[-82.216449,36.156814],[-82.610789,35.965121],[-82.638174,36.063706],[-82.775097,35.997983],[-82.994175,35.773428],[-83.251591,35.718659],[-83.498053,35.565304],[-83.7719,35.559827],[-84.018363,35.41195],[-84.09504,35.247642],[-84.29221,35.225734],[-84.319594,34.990226],[-85.606675,34.984749],[-87.359296,35.00118],[-88.202745,34.995703],[-88.471115,34.995703],[-90.311367,34.995703],[-90.212782,35.023087],[-90.114197,35.198349],[-90.130628,35.439335],[-89.944412,35.603643],[-89.911551,35.756997],[-89.763673,35.811767],[-89.730812,35.997983],[-89.533642,36.249922],[-89.539119,36.496384],[-89.484349,36.496384],[-89.418626,36.496384],[-89.298133,36.507338],[-88.054868,36.496384]]]}},
+{"type":"Feature","id":"48","properties":{"name":"Texas"},"geometry":{"type":"Polygon","coordinates":[[[-101.812942,36.501861],[-100.000075,36.501861],[-100.000075,34.563024],[-99.923398,34.573978],[-99.698843,34.382285],[-99.57835,34.415147],[-99.260688,34.404193],[-99.189488,34.2125],[-98.986841,34.223454],[-98.767763,34.135823],[-98.570593,34.146777],[-98.488439,34.064623],[-98.36247,34.157731],[-98.170777,34.113915],[-98.088623,34.004376],[-97.946222,33.987946],[-97.869545,33.851022],[-97.694283,33.982469],[-97.458774,33.905791],[-97.371143,33.823637],[-97.256128,33.861976],[-97.173974,33.736006],[-96.922034,33.960561],[-96.850834,33.845545],[-96.631756,33.845545],[-96.423633,33.774345],[-96.346956,33.686714],[-96.149786,33.840068],[-95.936185,33.889361],[-95.8376,33.834591],[-95.602092,33.933176],[-95.547322,33.878407],[-95.289906,33.87293],[-95.224183,33.960561],[-94.966767,33.861976],[-94.868182,33.74696],[-94.484796,33.637421],[-94.380734,33.544313],[-94.183564,33.593606],[-94.041164,33.54979],[-94.041164,33.018527],[-94.041164,31.994339],[-93.822086,31.775262],[-93.816609,31.556184],[-93.542762,31.15089],[-93.526331,30.93729],[-93.630393,30.679874],[-93.728978,30.575812],[-93.696116,30.438888],[-93.767317,30.334826],[-93.690639,30.143133],[-93.926148,29.787132],[-93.838517,29.688547],[-94.002825,29.68307],[-94.523134,29.546147],[-94.70935,29.622824],[-94.742212,29.787132],[-94.873659,29.672117],[-94.966767,29.699501],[-95.016059,29.557101],[-94.911997,29.496854],[-94.895566,29.310638],[-95.081782,29.113469],[-95.383014,28.867006],[-95.985477,28.604113],[-96.045724,28.647929],[-96.226463,28.582205],[-96.23194,28.642452],[-96.478402,28.598636],[-96.593418,28.724606],[-96.664618,28.697221],[-96.401725,28.439805],[-96.593418,28.357651],[-96.774157,28.406943],[-96.801542,28.226204],[-97.026096,28.039988],[-97.256128,27.694941],[-97.404005,27.333463],[-97.513544,27.360848],[-97.540929,27.229401],[-97.425913,27.262263],[-97.480682,26.99937],[-97.557359,26.988416],[-97.562836,26.840538],[-97.469728,26.758384],[-97.442344,26.457153],[-97.332805,26.353091],[-97.30542,26.161398],[-97.217789,25.991613],[-97.524498,25.887551],[-97.650467,26.018997],[-97.885976,26.06829],[-98.198161,26.057336],[-98.466531,26.221644],[-98.669178,26.238075],[-98.822533,26.369522],[-99.030656,26.413337],[-99.173057,26.539307],[-99.266165,26.840538],[-99.446904,27.021277],[-99.424996,27.174632],[-99.50715,27.33894],[-99.479765,27.48134],[-99.605735,27.640172],[-99.709797,27.656603],[-99.879582,27.799003],[-99.934351,27.979742],[-100.082229,28.14405],[-100.29583,28.280974],[-100.399891,28.582205],[-100.498476,28.66436],[-100.629923,28.905345],[-100.673738,29.102515],[-100.799708,29.244915],[-101.013309,29.370885],[-101.062601,29.458516],[-101.259771,29.535193],[-101.413125,29.754271],[-101.851281,29.803563],[-102.114174,29.792609],[-102.338728,29.869286],[-102.388021,29.765225],[-102.629006,29.732363],[-102.809745,29.524239],[-102.919284,29.190146],[-102.97953,29.184669],[-103.116454,28.987499],[-103.280762,28.982022],[-103.527224,29.135376],[-104.146119,29.381839],[-104.266611,29.513285],[-104.507597,29.639255],[-104.677382,29.924056],[-104.688336,30.181472],[-104.858121,30.389596],[-104.896459,30.570335],[-105.005998,30.685351],[-105.394861,30.855136],[-105.602985,31.085167],[-105.77277,31.167321],[-105.953509,31.364491],[-106.205448,31.468553],[-106.38071,31.731446],[-106.528588,31.786216],[-106.643603,31.901231],[-106.616219,31.999816],[-103.067161,31.999816],[-103.067161,33.002096],[-103.045254,34.01533],[-103.039777,36.501861],[-103.001438,36.501861],[-101.812942,36.501861]]]}},
+{"type":"Feature","id":"49","properties":{"name":"Utah"},"geometry":{"type":"Polygon","coordinates":[[[-112.164359,41.995232],[-111.047063,42.000709],[-111.047063,40.998429],[-109.04798,40.998429],[-109.053457,39.125316],[-109.058934,38.27639],[-109.042503,38.166851],[-109.042503,37.000263],[-110.499369,37.00574],[-114.048427,37.000263],[-114.04295,41.995232],[-112.164359,41.995232]]]}},
+{"type":"Feature","id":"50","properties":{"name":"Vermont"},"geometry":{"type":"Polygon","coordinates":[[[-71.503554,45.013027],[-71.4926,44.914442],[-71.629524,44.750133],[-71.536416,44.585825],[-71.700724,44.41604],[-72.034817,44.322932],[-72.02934,44.07647],[-72.116971,43.994316],[-72.204602,43.769761],[-72.379864,43.572591],[-72.456542,43.150867],[-72.445588,43.008466],[-72.533219,42.953697],[-72.544173,42.80582],[-72.456542,42.729142],[-73.267129,42.745573],[-73.278083,42.833204],[-73.245221,43.523299],[-73.404052,43.687607],[-73.349283,43.769761],[-73.436914,44.043608],[-73.321898,44.246255],[-73.294514,44.437948],[-73.387622,44.618687],[-73.332852,44.804903],[-73.343806,45.013027],[-72.308664,45.002073],[-71.503554,45.013027]]]}},
+{"type":"Feature","id":"51","properties":{"name":"Virginia"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-75.397659,38.013497],[-75.244304,38.029928],[-75.375751,37.860142],[-75.512674,37.799896],[-75.594828,37.569865],[-75.802952,37.197433],[-75.972737,37.120755],[-76.027507,37.257679],[-75.939876,37.564388],[-75.671506,37.95325],[-75.397659,38.013497]]],[[[-76.016553,37.95325],[-75.994645,37.95325],[-76.043938,37.95325],[-76.016553,37.95325]]],[[[-78.349729,39.464886],[-77.82942,39.130793],[-77.719881,39.322485],[-77.566527,39.306055],[-77.456988,39.223901],[-77.456988,39.076023],[-77.248864,39.026731],[-77.117418,38.933623],[-77.040741,38.791222],[-77.128372,38.632391],[-77.248864,38.588575],[-77.325542,38.446175],[-77.281726,38.342113],[-77.013356,38.374975],[-76.964064,38.216144],[-76.613539,38.15042],[-76.514954,38.024451],[-76.235631,37.887527],[-76.3616,37.608203],[-76.246584,37.389126],[-76.383508,37.285064],[-76.399939,37.159094],[-76.273969,37.082417],[-76.410893,36.961924],[-76.619016,37.120755],[-76.668309,37.065986],[-76.48757,36.95097],[-75.994645,36.923586],[-75.868676,36.551154],[-79.510841,36.5402],[-80.294043,36.545677],[-80.978661,36.562108],[-81.679709,36.589492],[-83.673316,36.600446],[-83.136575,36.742847],[-83.070852,36.852385],[-82.879159,36.890724],[-82.868205,36.978355],[-82.720328,37.044078],[-82.720328,37.120755],[-82.353373,37.268633],[-81.969987,37.537003],[-81.986418,37.454849],[-81.849494,37.285064],[-81.679709,37.20291],[-81.55374,37.208387],[-81.362047,37.339833],[-81.225123,37.235771],[-80.967707,37.290541],[-80.513121,37.482234],[-80.474782,37.421987],[-80.29952,37.509618],[-80.294043,37.690357],[-80.184505,37.849189],[-79.998289,37.997066],[-79.921611,38.177805],[-79.724442,38.364021],[-79.647764,38.594052],[-79.477979,38.457129],[-79.313671,38.413313],[-79.209609,38.495467],[-78.996008,38.851469],[-78.870039,38.763838],[-78.404499,39.169131],[-78.349729,39.464886]]]]}},
+{"type":"Feature","id":"53","properties":{"name":"Washington"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-117.033359,49.000239],[-117.044313,47.762451],[-117.038836,46.426077],[-117.055267,46.343923],[-116.92382,46.168661],[-116.918344,45.993399],[-118.988627,45.998876],[-119.125551,45.933153],[-119.525367,45.911245],[-119.963522,45.823614],[-120.209985,45.725029],[-120.505739,45.697644],[-120.637186,45.746937],[-121.18488,45.604536],[-121.217742,45.670259],[-121.535404,45.725029],[-121.809251,45.708598],[-122.247407,45.549767],[-122.762239,45.659305],[-122.811531,45.960537],[-122.904639,46.08103],[-123.11824,46.185092],[-123.211348,46.174138],[-123.370179,46.146753],[-123.545441,46.261769],[-123.72618,46.300108],[-123.874058,46.239861],[-124.065751,46.327492],[-124.027412,46.464416],[-123.895966,46.535616],[-124.098612,46.74374],[-124.235536,47.285957],[-124.31769,47.357157],[-124.427229,47.740543],[-124.624399,47.88842],[-124.706553,48.184175],[-124.597014,48.381345],[-124.394367,48.288237],[-123.983597,48.162267],[-123.704273,48.167744],[-123.424949,48.118452],[-123.162056,48.167744],[-123.036086,48.080113],[-122.800578,48.08559],[-122.636269,47.866512],[-122.515777,47.882943],[-122.493869,47.587189],[-122.422669,47.318818],[-122.324084,47.346203],[-122.422669,47.576235],[-122.395284,47.800789],[-122.230976,48.030821],[-122.362422,48.123929],[-122.373376,48.288237],[-122.471961,48.468976],[-122.422669,48.600422],[-122.488392,48.753777],[-122.647223,48.775685],[-122.795101,48.8907],[-122.756762,49.000239],[-117.033359,49.000239]]],[[[-122.718423,48.310145],[-122.586977,48.35396],[-122.608885,48.151313],[-122.767716,48.227991],[-122.718423,48.310145]]],[[[-123.025132,48.583992],[-122.915593,48.715438],[-122.767716,48.556607],[-122.811531,48.419683],[-123.041563,48.458022],[-123.025132,48.583992]]]]}},
+{"type":"Feature","id":"54","properties":{"name":"West Virginia"},"geometry":{"type":"Polygon","coordinates":[[[-80.518598,40.636951],[-80.518598,39.722302],[-79.477979,39.722302],[-79.488933,39.20747],[-79.291763,39.300578],[-79.094593,39.470363],[-78.963147,39.437501],[-78.765977,39.585379],[-78.470222,39.514178],[-78.431884,39.623717],[-78.267575,39.61824],[-78.174467,39.694917],[-78.004682,39.601809],[-77.834897,39.601809],[-77.719881,39.322485],[-77.82942,39.130793],[-78.349729,39.464886],[-78.404499,39.169131],[-78.870039,38.763838],[-78.996008,38.851469],[-79.209609,38.495467],[-79.313671,38.413313],[-79.477979,38.457129],[-79.647764,38.594052],[-79.724442,38.364021],[-79.921611,38.177805],[-79.998289,37.997066],[-80.184505,37.849189],[-80.294043,37.690357],[-80.29952,37.509618],[-80.474782,37.421987],[-80.513121,37.482234],[-80.967707,37.290541],[-81.225123,37.235771],[-81.362047,37.339833],[-81.55374,37.208387],[-81.679709,37.20291],[-81.849494,37.285064],[-81.986418,37.454849],[-81.969987,37.537003],[-82.101434,37.553434],[-82.293127,37.668449],[-82.342419,37.783465],[-82.50125,37.931343],[-82.621743,38.123036],[-82.594358,38.424267],[-82.331465,38.446175],[-82.293127,38.577622],[-82.172634,38.632391],[-82.221926,38.785745],[-82.03571,39.026731],[-81.887833,38.873376],[-81.783771,38.966484],[-81.811156,39.0815],[-81.685186,39.273193],[-81.57017,39.267716],[-81.455155,39.410117],[-81.345616,39.344393],[-81.219646,39.388209],[-80.830783,39.711348],[-80.737675,40.078303],[-80.600752,40.319289],[-80.595275,40.472643],[-80.666475,40.582182],[-80.518598,40.636951]]]}},
+{"type":"Feature","id":"55","properties":{"name":"Wisconsin"},"geometry":{"type":"Polygon","coordinates":[[[-90.415429,46.568478],[-90.229213,46.508231],[-90.119674,46.338446],[-89.09001,46.135799],[-88.662808,45.987922],[-88.531362,46.020784],[-88.10416,45.922199],[-87.989145,45.796229],[-87.781021,45.675736],[-87.791975,45.500474],[-87.885083,45.363551],[-87.649574,45.341643],[-87.742682,45.199243],[-87.589328,45.095181],[-87.627666,44.974688],[-87.819359,44.95278],[-87.983668,44.722749],[-88.043914,44.563917],[-87.928898,44.536533],[-87.775544,44.640595],[-87.611236,44.837764],[-87.403112,44.914442],[-87.238804,45.166381],[-87.03068,45.22115],[-87.047111,45.089704],[-87.189511,44.969211],[-87.468835,44.552964],[-87.545512,44.322932],[-87.540035,44.158624],[-87.644097,44.103854],[-87.737205,43.8793],[-87.704344,43.687607],[-87.791975,43.561637],[-87.912467,43.249452],[-87.885083,43.002989],[-87.76459,42.783912],[-87.802929,42.493634],[-88.788778,42.493634],[-90.639984,42.510065],[-90.711184,42.636034],[-91.067185,42.75105],[-91.143862,42.909881],[-91.176724,43.134436],[-91.056231,43.254929],[-91.204109,43.353514],[-91.215062,43.501391],[-91.269832,43.616407],[-91.242447,43.775238],[-91.43414,43.994316],[-91.592971,44.032654],[-91.877772,44.202439],[-91.927065,44.333886],[-92.233773,44.443425],[-92.337835,44.552964],[-92.545959,44.569394],[-92.808852,44.750133],[-92.737652,45.117088],[-92.75956,45.286874],[-92.644544,45.440228],[-92.770513,45.566198],[-92.885529,45.577151],[-92.869098,45.719552],[-92.639067,45.933153],[-92.354266,46.015307],[-92.29402,46.075553],[-92.29402,46.667063],[-92.091373,46.749217],[-92.014696,46.705401],[-91.790141,46.694447],[-91.09457,46.864232],[-90.837154,46.95734],[-90.749522,46.88614],[-90.886446,46.754694],[-90.55783,46.584908],[-90.415429,46.568478]]]}},
+{"type":"Feature","id":"56","properties":{"name":"Wyoming"},"geometry":{"type":"Polygon","coordinates":[[[-109.080842,45.002073],[-105.91517,45.002073],[-104.058488,44.996596],[-104.053011,43.002989],[-104.053011,41.003906],[-105.728954,40.998429],[-107.919731,41.003906],[-109.04798,40.998429],[-111.047063,40.998429],[-111.047063,42.000709],[-111.047063,44.476286],[-111.05254,45.002073],[-109.080842,45.002073]]]}},
+{"type":"Feature","id":"72","properties":{"name":"Puerto Rico"},"geometry":{"type":"Polygon","coordinates":[[[-66.448338,17.984326],[-66.771478,18.006234],[-66.924832,17.929556],[-66.985078,17.973372],[-67.209633,17.956941],[-67.154863,18.19245],[-67.269879,18.362235],[-67.094617,18.515589],[-66.957694,18.488204],[-66.409999,18.488204],[-65.840398,18.433435],[-65.632274,18.367712],[-65.626797,18.203403],[-65.730859,18.186973],[-65.834921,18.017187],[-66.234737,17.929556],[-66.448338,17.984326]]]}}
+]}
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/examples/data/world-countries.json b/static/vendor/d3-2.8.1/examples/data/world-countries.json
new file mode 100755 (executable)
index 0000000..c5094ce
--- /dev/null
@@ -0,0 +1,179 @@
+{"type":"FeatureCollection","features":[
+{"type":"Feature","properties":{"name":"Afghanistan"},"geometry":{"type":"Polygon","coordinates":[[[61.210817,35.650072],[62.230651,35.270664],[62.984662,35.404041],[63.193538,35.857166],[63.982896,36.007957],[64.546479,36.312073],[64.746105,37.111818],[65.588948,37.305217],[65.745631,37.661164],[66.217385,37.39379],[66.518607,37.362784],[67.075782,37.356144],[67.83,37.144994],[68.135562,37.023115],[68.859446,37.344336],[69.196273,37.151144],[69.518785,37.608997],[70.116578,37.588223],[70.270574,37.735165],[70.376304,38.138396],[70.806821,38.486282],[71.348131,38.258905],[71.239404,37.953265],[71.541918,37.905774],[71.448693,37.065645],[71.844638,36.738171],[72.193041,36.948288],[72.63689,37.047558],[73.260056,37.495257],[73.948696,37.421566],[74.980002,37.41999],[75.158028,37.133031],[74.575893,37.020841],[74.067552,36.836176],[72.920025,36.720007],[71.846292,36.509942],[71.262348,36.074388],[71.498768,35.650563],[71.613076,35.153203],[71.115019,34.733126],[71.156773,34.348911],[70.881803,33.988856],[69.930543,34.02012],[70.323594,33.358533],[69.687147,33.105499],[69.262522,32.501944],[69.317764,31.901412],[68.926677,31.620189],[68.556932,31.71331],[67.792689,31.58293],[67.683394,31.303154],[66.938891,31.304911],[66.381458,30.738899],[66.346473,29.887943],[65.046862,29.472181],[64.350419,29.560031],[64.148002,29.340819],[63.550261,29.468331],[62.549857,29.318572],[60.874248,29.829239],[61.781222,30.73585],[61.699314,31.379506],[60.941945,31.548075],[60.863655,32.18292],[60.536078,32.981269],[60.9637,33.528832],[60.52843,33.676446],[60.803193,34.404102],[61.210817,35.650072]]]},"id":"AFG"},
+{"type":"Feature","properties":{"name":"Angola"},"geometry":{"type":"MultiPolygon","coordinates":[[[[16.326528,-5.87747],[16.57318,-6.622645],[16.860191,-7.222298],[17.089996,-7.545689],[17.47297,-8.068551],[18.134222,-7.987678],[18.464176,-7.847014],[19.016752,-7.988246],[19.166613,-7.738184],[19.417502,-7.155429],[20.037723,-7.116361],[20.091622,-6.94309],[20.601823,-6.939318],[20.514748,-7.299606],[21.728111,-7.290872],[21.746456,-7.920085],[21.949131,-8.305901],[21.801801,-8.908707],[21.875182,-9.523708],[22.208753,-9.894796],[22.155268,-11.084801],[22.402798,-10.993075],[22.837345,-11.017622],[23.456791,-10.867863],[23.912215,-10.926826],[24.017894,-11.237298],[23.904154,-11.722282],[24.079905,-12.191297],[23.930922,-12.565848],[24.016137,-12.911046],[21.933886,-12.898437],[21.887843,-16.08031],[22.562478,-16.898451],[23.215048,-17.523116],[21.377176,-17.930636],[18.956187,-17.789095],[18.263309,-17.309951],[14.209707,-17.353101],[14.058501,-17.423381],[13.462362,-16.971212],[12.814081,-16.941343],[12.215461,-17.111668],[11.734199,-17.301889],[11.640096,-16.673142],[11.778537,-15.793816],[12.123581,-14.878316],[12.175619,-14.449144],[12.500095,-13.5477],[12.738479,-13.137906],[13.312914,-12.48363],[13.633721,-12.038645],[13.738728,-11.297863],[13.686379,-10.731076],[13.387328,-10.373578],[13.120988,-9.766897],[12.87537,-9.166934],[12.929061,-8.959091],[13.236433,-8.562629],[12.93304,-7.596539],[12.728298,-6.927122],[12.227347,-6.294448],[12.322432,-6.100092],[12.735171,-5.965682],[13.024869,-5.984389],[13.375597,-5.864241],[16.326528,-5.87747]]],[[[12.436688,-5.684304],[12.182337,-5.789931],[11.914963,-5.037987],[12.318608,-4.60623],[12.62076,-4.438023],[12.995517,-4.781103],[12.631612,-4.991271],[12.468004,-5.248362],[12.436688,-5.684304]]]]},"id":"AGO"},
+{"type":"Feature","properties":{"name":"Albania"},"geometry":{"type":"Polygon","coordinates":[[[20.590247,41.855404],[20.463175,41.515089],[20.605182,41.086226],[21.02004,40.842727],[20.99999,40.580004],[20.674997,40.435],[20.615,40.110007],[20.150016,39.624998],[19.98,39.694993],[19.960002,39.915006],[19.406082,40.250773],[19.319059,40.72723],[19.40355,41.409566],[19.540027,41.719986],[19.371769,41.877548],[19.304486,42.195745],[19.738051,42.688247],[19.801613,42.500093],[20.0707,42.58863],[20.283755,42.32026],[20.52295,42.21787],[20.590247,41.855404]]]},"id":"ALB"},
+{"type":"Feature","properties":{"name":"United Arab Emirates"},"geometry":{"type":"Polygon","coordinates":[[[51.579519,24.245497],[51.757441,24.294073],[51.794389,24.019826],[52.577081,24.177439],[53.404007,24.151317],[54.008001,24.121758],[54.693024,24.797892],[55.439025,25.439145],[56.070821,26.055464],[56.261042,25.714606],[56.396847,24.924732],[55.886233,24.920831],[55.804119,24.269604],[55.981214,24.130543],[55.528632,23.933604],[55.525841,23.524869],[55.234489,23.110993],[55.208341,22.70833],[55.006803,22.496948],[52.000733,23.001154],[51.617708,24.014219],[51.579519,24.245497]]]},"id":"ARE"},
+{"type":"Feature","properties":{"name":"Argentina"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.5,-55.2],[-66.45,-55.25],[-66.95992,-54.89681],[-67.56244,-54.87001],[-68.63335,-54.8695],[-68.63401,-52.63637],[-68.25,-53.1],[-67.75,-53.85],[-66.45,-54.45],[-65.05,-54.7],[-65.5,-55.2]]],[[[-64.964892,-22.075862],[-64.377021,-22.798091],[-63.986838,-21.993644],[-62.846468,-22.034985],[-62.685057,-22.249029],[-60.846565,-23.880713],[-60.028966,-24.032796],[-58.807128,-24.771459],[-57.777217,-25.16234],[-57.63366,-25.603657],[-58.618174,-27.123719],[-57.60976,-27.395899],[-56.486702,-27.548499],[-55.695846,-27.387837],[-54.788795,-26.621786],[-54.625291,-25.739255],[-54.13005,-25.547639],[-53.628349,-26.124865],[-53.648735,-26.923473],[-54.490725,-27.474757],[-55.162286,-27.881915],[-56.2909,-28.852761],[-57.625133,-30.216295],[-57.874937,-31.016556],[-58.14244,-32.044504],[-58.132648,-33.040567],[-58.349611,-33.263189],[-58.427074,-33.909454],[-58.495442,-34.43149],[-57.22583,-35.288027],[-57.362359,-35.97739],[-56.737487,-36.413126],[-56.788285,-36.901572],[-57.749157,-38.183871],[-59.231857,-38.72022],[-61.237445,-38.928425],[-62.335957,-38.827707],[-62.125763,-39.424105],[-62.330531,-40.172586],[-62.145994,-40.676897],[-62.745803,-41.028761],[-63.770495,-41.166789],[-64.73209,-40.802677],[-65.118035,-41.064315],[-64.978561,-42.058001],[-64.303408,-42.359016],[-63.755948,-42.043687],[-63.458059,-42.563138],[-64.378804,-42.873558],[-65.181804,-43.495381],[-65.328823,-44.501366],[-65.565269,-45.036786],[-66.509966,-45.039628],[-67.293794,-45.551896],[-67.580546,-46.301773],[-66.597066,-47.033925],[-65.641027,-47.236135],[-65.985088,-48.133289],[-67.166179,-48.697337],[-67.816088,-49.869669],[-68.728745,-50.264218],[-69.138539,-50.73251],[-68.815561,-51.771104],[-68.149995,-52.349983],[-68.571545,-52.299444],[-69.498362,-52.142761],[-71.914804,-52.009022],[-72.329404,-51.425956],[-72.309974,-50.67701],[-72.975747,-50.74145],[-73.328051,-50.378785],[-73.415436,-49.318436],[-72.648247,-48.878618],[-72.331161,-48.244238],[-72.447355,-47.738533],[-71.917258,-46.884838],[-71.552009,-45.560733],[-71.659316,-44.973689],[-71.222779,-44.784243],[-71.329801,-44.407522],[-71.793623,-44.207172],[-71.464056,-43.787611],[-71.915424,-43.408565],[-72.148898,-42.254888],[-71.746804,-42.051386],[-71.915734,-40.832339],[-71.680761,-39.808164],[-71.413517,-38.916022],[-70.814664,-38.552995],[-71.118625,-37.576827],[-71.121881,-36.658124],[-70.364769,-36.005089],[-70.388049,-35.169688],[-69.817309,-34.193571],[-69.814777,-33.273886],[-70.074399,-33.09121],[-70.535069,-31.36501],[-69.919008,-30.336339],[-70.01355,-29.367923],[-69.65613,-28.459141],[-69.001235,-27.521214],[-68.295542,-26.89934],[-68.5948,-26.506909],[-68.386001,-26.185016],[-68.417653,-24.518555],[-67.328443,-24.025303],[-66.985234,-22.986349],[-67.106674,-22.735925],[-66.273339,-21.83231],[-64.964892,-22.075862]]]]},"id":"ARG"},
+{"type":"Feature","properties":{"name":"Armenia"},"geometry":{"type":"Polygon","coordinates":[[[43.582746,41.092143],[44.97248,41.248129],[45.179496,40.985354],[45.560351,40.81229],[45.359175,40.561504],[45.891907,40.218476],[45.610012,39.899994],[46.034534,39.628021],[46.483499,39.464155],[46.50572,38.770605],[46.143623,38.741201],[45.735379,39.319719],[45.739978,39.473999],[45.298145,39.471751],[45.001987,39.740004],[44.79399,39.713003],[44.400009,40.005],[43.656436,40.253564],[43.752658,40.740201],[43.582746,41.092143]]]},"id":"ARM"},
+{"type":"Feature","properties":{"name":"Antarctica"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.572095,-80.040179],[-59.865849,-80.549657],[-60.159656,-81.000327],[-62.255393,-80.863178],[-64.488125,-80.921934],[-65.741666,-80.588827],[-65.741666,-80.549657],[-66.290031,-80.255773],[-64.037688,-80.294944],[-61.883246,-80.39287],[-61.138976,-79.981371],[-60.610119,-79.628679],[-59.572095,-80.040179]]],[[[-159.208184,-79.497059],[-161.127601,-79.634209],[-162.439847,-79.281465],[-163.027408,-78.928774],[-163.066604,-78.869966],[-163.712896,-78.595667],[-163.712896,-78.595667],[-163.105801,-78.223338],[-161.245113,-78.380176],[-160.246208,-78.693645],[-159.482405,-79.046338],[-159.208184,-79.497059]]],[[[-45.154758,-78.04707],[-43.920828,-78.478103],[-43.48995,-79.08556],[-43.372438,-79.516645],[-43.333267,-80.026123],[-44.880537,-80.339644],[-46.506174,-80.594357],[-48.386421,-80.829485],[-50.482107,-81.025442],[-52.851988,-80.966685],[-54.164259,-80.633528],[-53.987991,-80.222028],[-51.853134,-79.94773],[-50.991326,-79.614623],[-50.364595,-79.183487],[-49.914131,-78.811209],[-49.306959,-78.458569],[-48.660616,-78.047018],[-48.660616,-78.047019],[-48.151396,-78.04707],[-46.662857,-77.831476],[-45.154758,-78.04707]]],[[[-121.211511,-73.50099],[-119.918851,-73.657725],[-118.724143,-73.481353],[-119.292119,-73.834097],[-120.232217,-74.08881],[-121.62283,-74.010468],[-122.621735,-73.657778],[-122.621735,-73.657777],[-122.406245,-73.324619],[-121.211511,-73.50099]]],[[[-125.559566,-73.481353],[-124.031882,-73.873268],[-124.619469,-73.834097],[-125.912181,-73.736118],[-127.28313,-73.461769],[-127.28313,-73.461768],[-126.558472,-73.246226],[-125.559566,-73.481353]]],[[[-98.98155,-71.933334],[-97.884743,-72.070535],[-96.787937,-71.952971],[-96.20035,-72.521205],[-96.983765,-72.442864],[-98.198083,-72.482035],[-99.432013,-72.442864],[-100.783455,-72.50162],[-101.801868,-72.305663],[-102.330725,-71.894164],[-102.330725,-71.894164],[-101.703967,-71.717792],[-100.430919,-71.854993],[-98.98155,-71.933334]]],[[[-68.451346,-70.955823],[-68.333834,-71.406493],[-68.510128,-71.798407],[-68.784297,-72.170736],[-69.959471,-72.307885],[-71.075889,-72.503842],[-72.388134,-72.484257],[-71.8985,-72.092343],[-73.073622,-72.229492],[-74.19004,-72.366693],[-74.953895,-72.072757],[-75.012625,-71.661258],[-73.915819,-71.269345],[-73.915819,-71.269344],[-73.230331,-71.15178],[-72.074717,-71.190951],[-71.780962,-70.681473],[-71.72218,-70.309196],[-71.741791,-69.505782],[-71.173815,-69.035475],[-70.253252,-68.87874],[-69.724447,-69.251017],[-69.489422,-69.623346],[-69.058518,-70.074016],[-68.725541,-70.505153],[-68.451346,-70.955823]]],[[[-58.614143,-64.152467],[-59.045073,-64.36801],[-59.789342,-64.211223],[-60.611928,-64.309202],[-61.297416,-64.54433],[-62.0221,-64.799094],[-62.51176,-65.09303],[-62.648858,-65.484942],[-62.590128,-65.857219],[-62.120079,-66.190326],[-62.805567,-66.425505],[-63.74569,-66.503847],[-64.294106,-66.837004],[-64.881693,-67.150474],[-65.508425,-67.58161],[-65.665082,-67.953887],[-65.312545,-68.365335],[-64.783715,-68.678908],[-63.961103,-68.913984],[-63.1973,-69.227556],[-62.785955,-69.619419],[-62.570516,-69.991747],[-62.276736,-70.383661],[-61.806661,-70.716768],[-61.512906,-71.089045],[-61.375809,-72.010074],[-61.081977,-72.382351],[-61.003661,-72.774265],[-60.690269,-73.166179],[-60.827367,-73.695242],[-61.375809,-74.106742],[-61.96337,-74.439848],[-63.295201,-74.576997],[-63.74569,-74.92974],[-64.352836,-75.262847],[-65.860987,-75.635124],[-67.192818,-75.79191],[-68.446282,-76.007452],[-69.797724,-76.222995],[-70.600724,-76.634494],[-72.206776,-76.673665],[-73.969536,-76.634494],[-75.555977,-76.712887],[-77.24037,-76.712887],[-76.926979,-77.104802],[-75.399294,-77.28107],[-74.282876,-77.55542],[-73.656119,-77.908112],[-74.772536,-78.221633],[-76.4961,-78.123654],[-77.925858,-78.378419],[-77.984666,-78.789918],[-78.023785,-79.181833],[-76.848637,-79.514939],[-76.633224,-79.887216],[-75.360097,-80.259545],[-73.244852,-80.416331],[-71.442946,-80.69063],[-70.013163,-81.004151],[-68.191646,-81.317672],[-65.704279,-81.474458],[-63.25603,-81.748757],[-61.552026,-82.042692],[-59.691416,-82.37585],[-58.712121,-82.846106],[-58.222487,-83.218434],[-57.008117,-82.865691],[-55.362894,-82.571755],[-53.619771,-82.258235],[-51.543644,-82.003521],[-49.76135,-81.729171],[-47.273931,-81.709586],[-44.825708,-81.846735],[-42.808363,-82.081915],[-42.16202,-81.65083],[-40.771433,-81.356894],[-38.244818,-81.337309],[-36.26667,-81.121715],[-34.386397,-80.906172],[-32.310296,-80.769023],[-30.097098,-80.592651],[-28.549802,-80.337938],[-29.254901,-79.985195],[-29.685805,-79.632503],[-29.685805,-79.260226],[-31.624808,-79.299397],[-33.681324,-79.456132],[-35.639912,-79.456132],[-35.914107,-79.083855],[-35.77701,-78.339248],[-35.326546,-78.123654],[-33.896763,-77.888526],[-32.212369,-77.65345],[-30.998051,-77.359515],[-29.783732,-77.065579],[-28.882779,-76.673665],[-27.511752,-76.497345],[-26.160336,-76.360144],[-25.474822,-76.281803],[-23.927552,-76.24258],[-22.458598,-76.105431],[-21.224694,-75.909474],[-20.010375,-75.674346],[-18.913543,-75.439218],[-17.522982,-75.125698],[-16.641589,-74.79254],[-15.701491,-74.498604],[-15.40771,-74.106742],[-16.46532,-73.871614],[-16.112784,-73.460114],[-15.446855,-73.146542],[-14.408805,-72.950585],[-13.311973,-72.715457],[-12.293508,-72.401936],[-11.510067,-72.010074],[-11.020433,-71.539767],[-10.295774,-71.265416],[-9.101015,-71.324224],[-8.611381,-71.65733],[-7.416622,-71.696501],[-7.377451,-71.324224],[-6.868232,-70.93231],[-5.790985,-71.030289],[-5.536375,-71.402617],[-4.341667,-71.461373],[-3.048981,-71.285053],[-1.795492,-71.167438],[-0.659489,-71.226246],[-0.228637,-71.637745],[0.868195,-71.304639],[1.886686,-71.128267],[3.022638,-70.991118],[4.139055,-70.853917],[5.157546,-70.618789],[6.273912,-70.462055],[7.13572,-70.246512],[7.742866,-69.893769],[8.48711,-70.148534],[9.525135,-70.011333],[10.249845,-70.48164],[10.817821,-70.834332],[11.953824,-70.638375],[12.404287,-70.246512],[13.422778,-69.972162],[14.734998,-70.030918],[15.126757,-70.403247],[15.949342,-70.030918],[17.026589,-69.913354],[18.201711,-69.874183],[19.259373,-69.893769],[20.375739,-70.011333],[21.452985,-70.07014],[21.923034,-70.403247],[22.569403,-70.697182],[23.666184,-70.520811],[24.841357,-70.48164],[25.977309,-70.48164],[27.093726,-70.462055],[28.09258,-70.324854],[29.150242,-70.20729],[30.031583,-69.93294],[30.971733,-69.75662],[31.990172,-69.658641],[32.754053,-69.384291],[33.302443,-68.835642],[33.870419,-68.502588],[34.908495,-68.659271],[35.300202,-69.012014],[36.16201,-69.247142],[37.200035,-69.168748],[37.905108,-69.52144],[38.649404,-69.776205],[39.667894,-69.541077],[40.020431,-69.109941],[40.921358,-68.933621],[41.959434,-68.600514],[42.938702,-68.463313],[44.113876,-68.267408],[44.897291,-68.051866],[45.719928,-67.816738],[46.503343,-67.601196],[47.44344,-67.718759],[48.344419,-67.366068],[48.990736,-67.091718],[49.930885,-67.111303],[50.753471,-66.876175],[50.949325,-66.523484],[51.791547,-66.249133],[52.614133,-66.053176],[53.613038,-65.89639],[54.53355,-65.818049],[55.414943,-65.876805],[56.355041,-65.974783],[57.158093,-66.249133],[57.255968,-66.680218],[58.137361,-67.013324],[58.744508,-67.287675],[59.939318,-67.405239],[60.605221,-67.679589],[61.427806,-67.953887],[62.387489,-68.012695],[63.19049,-67.816738],[64.052349,-67.405239],[64.992447,-67.620729],[65.971715,-67.738345],[66.911864,-67.855909],[67.891133,-67.934302],[68.890038,-67.934302],[69.712624,-68.972791],[69.673453,-69.227556],[69.555941,-69.678226],[68.596258,-69.93294],[67.81274,-70.305268],[67.949889,-70.697182],[69.066307,-70.677545],[68.929157,-71.069459],[68.419989,-71.441788],[67.949889,-71.853287],[68.71377,-72.166808],[69.869307,-72.264787],[71.024895,-72.088415],[71.573285,-71.696501],[71.906288,-71.324224],[72.454627,-71.010703],[73.08141,-70.716768],[73.33602,-70.364024],[73.864877,-69.874183],[74.491557,-69.776205],[75.62756,-69.737034],[76.626465,-69.619419],[77.644904,-69.462684],[78.134539,-69.07077],[78.428371,-68.698441],[79.113859,-68.326216],[80.093127,-68.071503],[80.93535,-67.875546],[81.483792,-67.542388],[82.051767,-67.366068],[82.776426,-67.209282],[83.775331,-67.30726],[84.676206,-67.209282],[85.655527,-67.091718],[86.752359,-67.150474],[87.477017,-66.876175],[87.986289,-66.209911],[88.358411,-66.484261],[88.828408,-66.954568],[89.67063,-67.150474],[90.630365,-67.228867],[91.5901,-67.111303],[92.608539,-67.189696],[93.548637,-67.209282],[94.17542,-67.111303],[95.017591,-67.170111],[95.781472,-67.385653],[96.682399,-67.248504],[97.759646,-67.248504],[98.68021,-67.111303],[99.718182,-67.248504],[100.384188,-66.915346],[100.893356,-66.58224],[101.578896,-66.30789],[102.832411,-65.563284],[103.478676,-65.700485],[104.242557,-65.974783],[104.90846,-66.327527],[106.181561,-66.934931],[107.160881,-66.954568],[108.081393,-66.954568],[109.15864,-66.837004],[110.235835,-66.699804],[111.058472,-66.425505],[111.74396,-66.13157],[112.860378,-66.092347],[113.604673,-65.876805],[114.388088,-66.072762],[114.897308,-66.386283],[115.602381,-66.699804],[116.699161,-66.660633],[117.384701,-66.915346],[118.57946,-67.170111],[119.832924,-67.268089],[120.871,-67.189696],[121.654415,-66.876175],[122.320369,-66.562654],[123.221296,-66.484261],[124.122274,-66.621462],[125.160247,-66.719389],[126.100396,-66.562654],[127.001427,-66.562654],[127.882768,-66.660633],[128.80328,-66.758611],[129.704259,-66.58224],[130.781454,-66.425505],[131.799945,-66.386283],[132.935896,-66.386283],[133.85646,-66.288304],[134.757387,-66.209963],[135.031582,-65.72007],[135.070753,-65.308571],[135.697485,-65.582869],[135.873805,-66.033591],[136.206705,-66.44509],[136.618049,-66.778197],[137.460271,-66.954568],[138.596223,-66.895761],[139.908442,-66.876175],[140.809421,-66.817367],[142.121692,-66.817367],[143.061842,-66.797782],[144.374061,-66.837004],[145.490427,-66.915346],[146.195552,-67.228867],[145.999699,-67.601196],[146.646067,-67.895131],[147.723263,-68.130259],[148.839629,-68.385024],[150.132314,-68.561292],[151.483705,-68.71813],[152.502247,-68.874813],[153.638199,-68.894502],[154.284567,-68.561292],[155.165857,-68.835642],[155.92979,-69.149215],[156.811132,-69.384291],[158.025528,-69.482269],[159.181013,-69.599833],[159.670699,-69.991747],[160.80665,-70.226875],[161.570479,-70.579618],[162.686897,-70.736353],[163.842434,-70.716768],[164.919681,-70.775524],[166.11444,-70.755938],[167.309095,-70.834332],[168.425616,-70.971481],[169.463589,-71.20666],[170.501665,-71.402617],[171.20679,-71.696501],[171.089227,-72.088415],[170.560422,-72.441159],[170.109958,-72.891829],[169.75737,-73.24452],[169.287321,-73.65602],[167.975101,-73.812806],[167.387489,-74.165498],[166.094803,-74.38104],[165.644391,-74.772954],[164.958851,-75.145283],[164.234193,-75.458804],[163.822797,-75.870303],[163.568239,-76.24258],[163.47026,-76.693302],[163.489897,-77.065579],[164.057873,-77.457442],[164.273363,-77.82977],[164.743464,-78.182514],[166.604126,-78.319611],[166.995781,-78.750748],[165.193876,-78.907483],[163.666217,-79.123025],[161.766385,-79.162248],[160.924162,-79.730482],[160.747894,-80.200737],[160.316964,-80.573066],[159.788211,-80.945395],[161.120016,-81.278501],[161.629287,-81.690001],[162.490992,-82.062278],[163.705336,-82.395435],[165.095949,-82.708956],[166.604126,-83.022477],[168.895665,-83.335998],[169.404782,-83.825891],[172.283934,-84.041433],[172.477049,-84.117914],[173.224083,-84.41371],[175.985672,-84.158997],[178.277212,-84.472518],[180,-84.71338],[-179.942499,-84.721443],[-179.058677,-84.139412],[-177.256772,-84.452933],[-177.140807,-84.417941],[-176.084673,-84.099259],[-175.947235,-84.110449],[-175.829882,-84.117914],[-174.382503,-84.534323],[-173.116559,-84.117914],[-172.889106,-84.061019],[-169.951223,-83.884647],[-168.999989,-84.117914],[-168.530199,-84.23739],[-167.022099,-84.570497],[-164.182144,-84.82521],[-161.929775,-85.138731],[-158.07138,-85.37391],[-155.192253,-85.09956],[-150.942099,-85.295517],[-148.533073,-85.609038],[-145.888918,-85.315102],[-143.107718,-85.040752],[-142.892279,-84.570497],[-146.829068,-84.531274],[-150.060732,-84.296146],[-150.902928,-83.904232],[-153.586201,-83.68869],[-153.409907,-83.23802],[-153.037759,-82.82652],[-152.665637,-82.454192],[-152.861517,-82.042692],[-154.526299,-81.768394],[-155.29018,-81.41565],[-156.83745,-81.102129],[-154.408787,-81.160937],[-152.097662,-81.004151],[-150.648293,-81.337309],[-148.865998,-81.043373],[-147.22075,-80.671045],[-146.417749,-80.337938],[-146.770286,-79.926439],[-148.062947,-79.652089],[-149.531901,-79.358205],[-151.588416,-79.299397],[-153.390322,-79.162248],[-155.329376,-79.064269],[-155.975668,-78.69194],[-157.268302,-78.378419],[-158.051768,-78.025676],[-158.365134,-76.889207],[-157.875474,-76.987238],[-156.974573,-77.300759],[-155.329376,-77.202728],[-153.742832,-77.065579],[-152.920247,-77.496664],[-151.33378,-77.398737],[-150.00195,-77.183143],[-148.748486,-76.908845],[-147.612483,-76.575738],[-146.104409,-76.47776],[-146.143528,-76.105431],[-146.496091,-75.733154],[-146.20231,-75.380411],[-144.909624,-75.204039],[-144.322037,-75.537197],[-142.794353,-75.34124],[-141.638764,-75.086475],[-140.209007,-75.06689],[-138.85759,-74.968911],[-137.5062,-74.733783],[-136.428901,-74.518241],[-135.214583,-74.302699],[-134.431194,-74.361455],[-133.745654,-74.439848],[-132.257168,-74.302699],[-130.925311,-74.479019],[-129.554284,-74.459433],[-128.242038,-74.322284],[-126.890622,-74.420263],[-125.402082,-74.518241],[-124.011496,-74.479019],[-122.562152,-74.498604],[-121.073613,-74.518241],[-119.70256,-74.479019],[-118.684145,-74.185083],[-117.469801,-74.028348],[-116.216312,-74.243891],[-115.021552,-74.067519],[-113.944331,-73.714828],[-113.297988,-74.028348],[-112.945452,-74.38104],[-112.299083,-74.714198],[-111.261059,-74.420263],[-110.066325,-74.79254],[-108.714909,-74.910103],[-107.559346,-75.184454],[-106.149148,-75.125698],[-104.876074,-74.949326],[-103.367949,-74.988497],[-102.016507,-75.125698],[-100.645531,-75.302018],[-100.1167,-74.870933],[-100.763043,-74.537826],[-101.252703,-74.185083],[-102.545337,-74.106742],[-103.113313,-73.734413],[-103.328752,-73.362084],[-103.681289,-72.61753],[-102.917485,-72.754679],[-101.60524,-72.813436],[-100.312528,-72.754679],[-99.13738,-72.911414],[-98.118889,-73.20535],[-97.688037,-73.558041],[-96.336595,-73.616849],[-95.043961,-73.4797],[-93.672907,-73.283743],[-92.439003,-73.166179],[-91.420564,-73.401307],[-90.088733,-73.322914],[-89.226951,-72.558722],[-88.423951,-73.009393],[-87.268337,-73.185764],[-86.014822,-73.087786],[-85.192236,-73.4797],[-83.879991,-73.518871],[-82.665646,-73.636434],[-81.470913,-73.851977],[-80.687447,-73.4797],[-80.295791,-73.126956],[-79.296886,-73.518871],[-77.925858,-73.420892],[-76.907367,-73.636434],[-76.221879,-73.969541],[-74.890049,-73.871614],[-73.852024,-73.65602],[-72.833533,-73.401307],[-71.619215,-73.264157],[-70.209042,-73.146542],[-68.935916,-73.009393],[-67.956622,-72.79385],[-67.369061,-72.480329],[-67.134036,-72.049244],[-67.251548,-71.637745],[-67.56494,-71.245831],[-67.917477,-70.853917],[-68.230843,-70.462055],[-68.485452,-70.109311],[-68.544209,-69.717397],[-68.446282,-69.325535],[-67.976233,-68.953206],[-67.5845,-68.541707],[-67.427843,-68.149844],[-67.62367,-67.718759],[-67.741183,-67.326845],[-67.251548,-66.876175],[-66.703184,-66.58224],[-66.056815,-66.209963],[-65.371327,-65.89639],[-64.568276,-65.602506],[-64.176542,-65.171423],[-63.628152,-64.897073],[-63.001394,-64.642308],[-62.041686,-64.583552],[-61.414928,-64.270031],[-60.709855,-64.074074],[-59.887269,-63.95651],[-59.162585,-63.701745],[-58.594557,-63.388224],[-57.811143,-63.27066],[-57.223582,-63.525425],[-57.59573,-63.858532],[-58.614143,-64.152467]]]]},"id":"ATA"},
+{"type":"Feature","properties":{"name":"French Southern and Antarctic Lands"},"geometry":{"type":"Polygon","coordinates":[[[68.935,-48.625],[69.58,-48.94],[70.525,-49.065],[70.56,-49.255],[70.28,-49.71],[68.745,-49.775],[68.72,-49.2425],[68.8675,-48.83],[68.935,-48.625]]]},"id":"ATF"},
+{"type":"Feature","properties":{"name":"Australia"},"geometry":{"type":"MultiPolygon","coordinates":[[[[145.397978,-40.792549],[146.364121,-41.137695],[146.908584,-41.000546],[147.689259,-40.808258],[148.289068,-40.875438],[148.359865,-42.062445],[148.017301,-42.407024],[147.914052,-43.211522],[147.564564,-42.937689],[146.870343,-43.634597],[146.663327,-43.580854],[146.048378,-43.549745],[145.43193,-42.693776],[145.29509,-42.03361],[144.718071,-41.162552],[144.743755,-40.703975],[145.397978,-40.792549]]],[[[143.561811,-13.763656],[143.922099,-14.548311],[144.563714,-14.171176],[144.894908,-14.594458],[145.374724,-14.984976],[145.271991,-15.428205],[145.48526,-16.285672],[145.637033,-16.784918],[145.888904,-16.906926],[146.160309,-17.761655],[146.063674,-18.280073],[146.387478,-18.958274],[147.471082,-19.480723],[148.177602,-19.955939],[148.848414,-20.39121],[148.717465,-20.633469],[149.28942,-21.260511],[149.678337,-22.342512],[150.077382,-22.122784],[150.482939,-22.556142],[150.727265,-22.402405],[150.899554,-23.462237],[151.609175,-24.076256],[152.07354,-24.457887],[152.855197,-25.267501],[153.136162,-26.071173],[153.161949,-26.641319],[153.092909,-27.2603],[153.569469,-28.110067],[153.512108,-28.995077],[153.339095,-29.458202],[153.069241,-30.35024],[153.089602,-30.923642],[152.891578,-31.640446],[152.450002,-32.550003],[151.709117,-33.041342],[151.343972,-33.816023],[151.010555,-34.31036],[150.714139,-35.17346],[150.32822,-35.671879],[150.075212,-36.420206],[149.946124,-37.109052],[149.997284,-37.425261],[149.423882,-37.772681],[148.304622,-37.809061],[147.381733,-38.219217],[146.922123,-38.606532],[146.317922,-39.035757],[145.489652,-38.593768],[144.876976,-38.417448],[145.032212,-37.896188],[144.485682,-38.085324],[143.609974,-38.809465],[142.745427,-38.538268],[142.17833,-38.380034],[141.606582,-38.308514],[140.638579,-38.019333],[139.992158,-37.402936],[139.806588,-36.643603],[139.574148,-36.138362],[139.082808,-35.732754],[138.120748,-35.612296],[138.449462,-35.127261],[138.207564,-34.384723],[137.71917,-35.076825],[136.829406,-35.260535],[137.352371,-34.707339],[137.503886,-34.130268],[137.890116,-33.640479],[137.810328,-32.900007],[136.996837,-33.752771],[136.372069,-34.094766],[135.989043,-34.890118],[135.208213,-34.47867],[135.239218,-33.947953],[134.613417,-33.222778],[134.085904,-32.848072],[134.273903,-32.617234],[132.990777,-32.011224],[132.288081,-31.982647],[131.326331,-31.495803],[129.535794,-31.590423],[128.240938,-31.948489],[127.102867,-32.282267],[126.148714,-32.215966],[125.088623,-32.728751],[124.221648,-32.959487],[124.028947,-33.483847],[123.659667,-33.890179],[122.811036,-33.914467],[122.183064,-34.003402],[121.299191,-33.821036],[120.580268,-33.930177],[119.893695,-33.976065],[119.298899,-34.509366],[119.007341,-34.464149],[118.505718,-34.746819],[118.024972,-35.064733],[117.295507,-35.025459],[116.625109,-35.025097],[115.564347,-34.386428],[115.026809,-34.196517],[115.048616,-33.623425],[115.545123,-33.487258],[115.714674,-33.259572],[115.679379,-32.900369],[115.801645,-32.205062],[115.689611,-31.612437],[115.160909,-30.601594],[114.997043,-30.030725],[115.040038,-29.461095],[114.641974,-28.810231],[114.616498,-28.516399],[114.173579,-28.118077],[114.048884,-27.334765],[113.477498,-26.543134],[113.338953,-26.116545],[113.778358,-26.549025],[113.440962,-25.621278],[113.936901,-25.911235],[114.232852,-26.298446],[114.216161,-25.786281],[113.721255,-24.998939],[113.625344,-24.683971],[113.393523,-24.384764],[113.502044,-23.80635],[113.706993,-23.560215],[113.843418,-23.059987],[113.736552,-22.475475],[114.149756,-21.755881],[114.225307,-22.517488],[114.647762,-21.82952],[115.460167,-21.495173],[115.947373,-21.068688],[116.711615,-20.701682],[117.166316,-20.623599],[117.441545,-20.746899],[118.229559,-20.374208],[118.836085,-20.263311],[118.987807,-20.044203],[119.252494,-19.952942],[119.805225,-19.976506],[120.85622,-19.683708],[121.399856,-19.239756],[121.655138,-18.705318],[122.241665,-18.197649],[122.286624,-17.798603],[122.312772,-17.254967],[123.012574,-16.4052],[123.433789,-17.268558],[123.859345,-17.069035],[123.503242,-16.596506],[123.817073,-16.111316],[124.258287,-16.327944],[124.379726,-15.56706],[124.926153,-15.0751],[125.167275,-14.680396],[125.670087,-14.51007],[125.685796,-14.230656],[126.125149,-14.347341],[126.142823,-14.095987],[126.582589,-13.952791],[127.065867,-13.817968],[127.804633,-14.276906],[128.35969,-14.86917],[128.985543,-14.875991],[129.621473,-14.969784],[129.4096,-14.42067],[129.888641,-13.618703],[130.339466,-13.357376],[130.183506,-13.10752],[130.617795,-12.536392],[131.223495,-12.183649],[131.735091,-12.302453],[132.575298,-12.114041],[132.557212,-11.603012],[131.824698,-11.273782],[132.357224,-11.128519],[133.019561,-11.376411],[133.550846,-11.786515],[134.393068,-12.042365],[134.678632,-11.941183],[135.298491,-12.248606],[135.882693,-11.962267],[136.258381,-12.049342],[136.492475,-11.857209],[136.95162,-12.351959],[136.685125,-12.887223],[136.305407,-13.29123],[135.961758,-13.324509],[136.077617,-13.724278],[135.783836,-14.223989],[135.428664,-14.715432],[135.500184,-14.997741],[136.295175,-15.550265],[137.06536,-15.870762],[137.580471,-16.215082],[138.303217,-16.807604],[138.585164,-16.806622],[139.108543,-17.062679],[139.260575,-17.371601],[140.215245,-17.710805],[140.875463,-17.369069],[141.07111,-16.832047],[141.274095,-16.38887],[141.398222,-15.840532],[141.702183,-15.044921],[141.56338,-14.561333],[141.63552,-14.270395],[141.519869,-13.698078],[141.65092,-12.944688],[141.842691,-12.741548],[141.68699,-12.407614],[141.928629,-11.877466],[142.118488,-11.328042],[142.143706,-11.042737],[142.51526,-10.668186],[142.79731,-11.157355],[142.866763,-11.784707],[143.115947,-11.90563],[143.158632,-12.325656],[143.522124,-12.834358],[143.597158,-13.400422],[143.561811,-13.763656]]]]},"id":"AUS"},
+{"type":"Feature","properties":{"name":"Austria"},"geometry":{"type":"Polygon","coordinates":[[[16.979667,48.123497],[16.903754,47.714866],[16.340584,47.712902],[16.534268,47.496171],[16.202298,46.852386],[16.011664,46.683611],[15.137092,46.658703],[14.632472,46.431817],[13.806475,46.509306],[12.376485,46.767559],[12.153088,47.115393],[11.164828,46.941579],[11.048556,46.751359],[10.442701,46.893546],[9.932448,46.920728],[9.47997,47.10281],[9.632932,47.347601],[9.594226,47.525058],[9.896068,47.580197],[10.402084,47.302488],[10.544504,47.566399],[11.426414,47.523766],[12.141357,47.703083],[12.62076,47.672388],[12.932627,47.467646],[13.025851,47.637584],[12.884103,48.289146],[13.243357,48.416115],[13.595946,48.877172],[14.338898,48.555305],[14.901447,48.964402],[15.253416,49.039074],[16.029647,48.733899],[16.499283,48.785808],[16.960288,48.596982],[16.879983,48.470013],[16.979667,48.123497]]]},"id":"AUT"},
+{"type":"Feature","properties":{"name":"Azerbaijan"},"geometry":{"type":"MultiPolygon","coordinates":[[[[45.001987,39.740004],[45.298145,39.471751],[45.739978,39.473999],[45.735379,39.319719],[46.143623,38.741201],[45.457722,38.874139],[44.952688,39.335765],[44.79399,39.713003],[45.001987,39.740004]]],[[[47.373315,41.219732],[47.815666,41.151416],[47.987283,41.405819],[48.584353,41.80887],[49.110264,41.282287],[49.618915,40.572924],[50.08483,40.526157],[50.392821,40.256561],[49.569202,40.176101],[49.395259,39.399482],[49.223228,39.049219],[48.856532,38.815486],[48.883249,38.320245],[48.634375,38.270378],[48.010744,38.794015],[48.355529,39.288765],[48.060095,39.582235],[47.685079,39.508364],[46.50572,38.770605],[46.483499,39.464155],[46.034534,39.628021],[45.610012,39.899994],[45.891907,40.218476],[45.359175,40.561504],[45.560351,40.81229],[45.179496,40.985354],[44.97248,41.248129],[45.217426,41.411452],[45.962601,41.123873],[46.501637,41.064445],[46.637908,41.181673],[46.145432,41.722802],[46.404951,41.860675],[46.686071,41.827137],[47.373315,41.219732]]]]},"id":"AZE"},
+{"type":"Feature","properties":{"name":"Burundi"},"geometry":{"type":"Polygon","coordinates":[[[29.339998,-4.499983],[29.276384,-3.293907],[29.024926,-2.839258],[29.632176,-2.917858],[29.938359,-2.348487],[30.469696,-2.413858],[30.527677,-2.807632],[30.743013,-3.034285],[30.752263,-3.35933],[30.50556,-3.568567],[30.116333,-4.090138],[29.753512,-4.452389],[29.339998,-4.499983]]]},"id":"BDI"},
+{"type":"Feature","properties":{"name":"Belgium"},"geometry":{"type":"Polygon","coordinates":[[[3.314971,51.345781],[4.047071,51.267259],[4.973991,51.475024],[5.606976,51.037298],[6.156658,50.803721],[6.043073,50.128052],[5.782417,50.090328],[5.674052,49.529484],[4.799222,49.985373],[4.286023,49.907497],[3.588184,50.378992],[3.123252,50.780363],[2.658422,50.796848],[2.513573,51.148506],[3.314971,51.345781]]]},"id":"BEL"},
+{"type":"Feature","properties":{"name":"Benin"},"geometry":{"type":"Polygon","coordinates":[[[2.691702,6.258817],[1.865241,6.142158],[1.618951,6.832038],[1.664478,9.12859],[1.463043,9.334624],[1.425061,9.825395],[1.077795,10.175607],[0.772336,10.470808],[0.899563,10.997339],[1.24347,11.110511],[1.447178,11.547719],[1.935986,11.64115],[2.154474,11.94015],[2.490164,12.233052],[2.848643,12.235636],[3.61118,11.660167],[3.572216,11.327939],[3.797112,10.734746],[3.60007,10.332186],[3.705438,10.06321],[3.220352,9.444153],[2.912308,9.137608],[2.723793,8.506845],[2.749063,7.870734],[2.691702,6.258817]]]},"id":"BEN"},
+{"type":"Feature","properties":{"name":"Burkina Faso"},"geometry":{"type":"Polygon","coordinates":[[[-2.827496,9.642461],[-3.511899,9.900326],[-3.980449,9.862344],[-4.330247,9.610835],[-4.779884,9.821985],[-4.954653,10.152714],[-5.404342,10.370737],[-5.470565,10.95127],[-5.197843,11.375146],[-5.220942,11.713859],[-4.427166,12.542646],[-4.280405,13.228444],[-4.006391,13.472485],[-3.522803,13.337662],[-3.103707,13.541267],[-2.967694,13.79815],[-2.191825,14.246418],[-2.001035,14.559008],[-1.066363,14.973815],[-0.515854,15.116158],[-0.266257,14.924309],[0.374892,14.928908],[0.295646,14.444235],[0.429928,13.988733],[0.993046,13.33575],[1.024103,12.851826],[2.177108,12.625018],[2.154474,11.94015],[1.935986,11.64115],[1.447178,11.547719],[1.24347,11.110511],[0.899563,10.997339],[0.023803,11.018682],[-0.438702,11.098341],[-0.761576,10.93693],[-1.203358,11.009819],[-2.940409,10.96269],[-2.963896,10.395335],[-2.827496,9.642461]]]},"id":"BFA"},
+{"type":"Feature","properties":{"name":"Bangladesh"},"geometry":{"type":"Polygon","coordinates":[[[92.672721,22.041239],[92.652257,21.324048],[92.303234,21.475485],[92.368554,20.670883],[92.082886,21.192195],[92.025215,21.70157],[91.834891,22.182936],[91.417087,22.765019],[90.496006,22.805017],[90.586957,22.392794],[90.272971,21.836368],[89.847467,22.039146],[89.70205,21.857116],[89.418863,21.966179],[89.031961,22.055708],[88.876312,22.879146],[88.52977,23.631142],[88.69994,24.233715],[88.084422,24.501657],[88.306373,24.866079],[88.931554,25.238692],[88.209789,25.768066],[88.563049,26.446526],[89.355094,26.014407],[89.832481,25.965082],[89.920693,25.26975],[90.872211,25.132601],[91.799596,25.147432],[92.376202,24.976693],[91.915093,24.130414],[91.46773,24.072639],[91.158963,23.503527],[91.706475,22.985264],[91.869928,23.624346],[92.146035,23.627499],[92.672721,22.041239]]]},"id":"BGD"},
+{"type":"Feature","properties":{"name":"Bulgaria"},"geometry":{"type":"Polygon","coordinates":[[[22.65715,44.234923],[22.944832,43.823785],[23.332302,43.897011],[24.100679,43.741051],[25.569272,43.688445],[26.065159,43.943494],[27.2424,44.175986],[27.970107,43.812468],[28.558081,43.707462],[28.039095,43.293172],[27.673898,42.577892],[27.99672,42.007359],[27.135739,42.141485],[26.117042,41.826905],[26.106138,41.328899],[25.197201,41.234486],[24.492645,41.583896],[23.692074,41.309081],[22.952377,41.337994],[22.881374,41.999297],[22.380526,42.32026],[22.545012,42.461362],[22.436595,42.580321],[22.604801,42.898519],[22.986019,43.211161],[22.500157,43.642814],[22.410446,44.008063],[22.65715,44.234923]]]},"id":"BGR"},
+{"type":"Feature","properties":{"name":"The Bahamas"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-77.53466,23.75975],[-77.78,23.71],[-78.03405,24.28615],[-78.40848,24.57564],[-78.19087,25.2103],[-77.89,25.17],[-77.54,24.34],[-77.53466,23.75975]]],[[[-77.82,26.58],[-78.91,26.42],[-78.98,26.79],[-78.51,26.87],[-77.85,26.84],[-77.82,26.58]]],[[[-77,26.59],[-77.17255,25.87918],[-77.35641,26.00735],[-77.34,26.53],[-77.78802,26.92516],[-77.79,27.04],[-77,26.59]]]]},"id":"BHS"},
+{"type":"Feature","properties":{"name":"Bosnia and Herzegovina"},"geometry":{"type":"Polygon","coordinates":[[[19.005486,44.860234],[19.36803,44.863],[19.11761,44.42307],[19.59976,44.03847],[19.454,43.5681],[19.21852,43.52384],[19.03165,43.43253],[18.70648,43.20011],[18.56,42.65],[17.674922,43.028563],[17.297373,43.446341],[16.916156,43.667722],[16.456443,44.04124],[16.23966,44.351143],[15.750026,44.818712],[15.959367,45.233777],[16.318157,45.004127],[16.534939,45.211608],[17.002146,45.233777],[17.861783,45.06774],[18.553214,45.08159],[19.005486,44.860234]]]},"id":"BIH"},
+{"type":"Feature","properties":{"name":"Belarus"},"geometry":{"type":"Polygon","coordinates":[[[23.484128,53.912498],[24.450684,53.905702],[25.536354,54.282423],[25.768433,54.846963],[26.588279,55.167176],[26.494331,55.615107],[27.10246,55.783314],[28.176709,56.16913],[29.229513,55.918344],[29.371572,55.670091],[29.896294,55.789463],[30.873909,55.550976],[30.971836,55.081548],[30.757534,54.811771],[31.384472,54.157056],[31.791424,53.974639],[31.731273,53.794029],[32.405599,53.618045],[32.693643,53.351421],[32.304519,53.132726],[31.497644,53.167427],[31.305201,53.073996],[31.540018,52.742052],[31.785998,52.101678],[30.927549,52.042353],[30.619454,51.822806],[30.555117,51.319503],[30.157364,51.416138],[29.254938,51.368234],[28.992835,51.602044],[28.617613,51.427714],[28.241615,51.572227],[27.454066,51.592303],[26.337959,51.832289],[25.327788,51.910656],[24.553106,51.888461],[24.005078,51.617444],[23.527071,51.578454],[23.508002,52.023647],[23.199494,52.486977],[23.799199,52.691099],[23.804935,53.089731],[23.527536,53.470122],[23.484128,53.912498]]]},"id":"BLR"},
+{"type":"Feature","properties":{"name":"Belize"},"geometry":{"type":"Polygon","coordinates":[[[-89.14308,17.808319],[-89.150909,17.955468],[-89.029857,18.001511],[-88.848344,17.883198],[-88.490123,18.486831],[-88.300031,18.499982],[-88.296336,18.353273],[-88.106813,18.348674],[-88.123479,18.076675],[-88.285355,17.644143],[-88.197867,17.489475],[-88.302641,17.131694],[-88.239518,17.036066],[-88.355428,16.530774],[-88.551825,16.265467],[-88.732434,16.233635],[-88.930613,15.887273],[-89.229122,15.886938],[-89.150806,17.015577],[-89.14308,17.808319]]]},"id":"BLZ"},
+{"type":"Feature","properties":{"name":"Bolivia"},"geometry":{"type":"Polygon","coordinates":[[[-62.846468,-22.034985],[-63.986838,-21.993644],[-64.377021,-22.798091],[-64.964892,-22.075862],[-66.273339,-21.83231],[-67.106674,-22.735925],[-67.82818,-22.872919],[-68.219913,-21.494347],[-68.757167,-20.372658],[-68.442225,-19.405068],[-68.966818,-18.981683],[-69.100247,-18.260125],[-69.590424,-17.580012],[-68.959635,-16.500698],[-69.389764,-15.660129],[-69.160347,-15.323974],[-69.339535,-14.953195],[-68.948887,-14.453639],[-68.929224,-13.602684],[-68.88008,-12.899729],[-68.66508,-12.5613],[-69.529678,-10.951734],[-68.786158,-11.03638],[-68.271254,-11.014521],[-68.048192,-10.712059],[-67.173801,-10.306812],[-66.646908,-9.931331],[-65.338435,-9.761988],[-65.444837,-10.511451],[-65.321899,-10.895872],[-65.402281,-11.56627],[-64.316353,-12.461978],[-63.196499,-12.627033],[-62.80306,-13.000653],[-62.127081,-13.198781],[-61.713204,-13.489202],[-61.084121,-13.479384],[-60.503304,-13.775955],[-60.459198,-14.354007],[-60.264326,-14.645979],[-60.251149,-15.077219],[-60.542966,-15.09391],[-60.15839,-16.258284],[-58.24122,-16.299573],[-58.388058,-16.877109],[-58.280804,-17.27171],[-57.734558,-17.552468],[-57.498371,-18.174188],[-57.676009,-18.96184],[-57.949997,-19.400004],[-57.853802,-19.969995],[-58.166392,-20.176701],[-58.183471,-19.868399],[-59.115042,-19.356906],[-60.043565,-19.342747],[-61.786326,-19.633737],[-62.265961,-20.513735],[-62.291179,-21.051635],[-62.685057,-22.249029],[-62.846468,-22.034985]]]},"id":"BOL"},
+{"type":"Feature","properties":{"name":"Brazil"},"geometry":{"type":"Polygon","coordinates":[[[-57.625133,-30.216295],[-56.2909,-28.852761],[-55.162286,-27.881915],[-54.490725,-27.474757],[-53.648735,-26.923473],[-53.628349,-26.124865],[-54.13005,-25.547639],[-54.625291,-25.739255],[-54.428946,-25.162185],[-54.293476,-24.5708],[-54.29296,-24.021014],[-54.652834,-23.839578],[-55.027902,-24.001274],[-55.400747,-23.956935],[-55.517639,-23.571998],[-55.610683,-22.655619],[-55.797958,-22.35693],[-56.473317,-22.0863],[-56.88151,-22.282154],[-57.937156,-22.090176],[-57.870674,-20.732688],[-58.166392,-20.176701],[-57.853802,-19.969995],[-57.949997,-19.400004],[-57.676009,-18.96184],[-57.498371,-18.174188],[-57.734558,-17.552468],[-58.280804,-17.27171],[-58.388058,-16.877109],[-58.24122,-16.299573],[-60.15839,-16.258284],[-60.542966,-15.09391],[-60.251149,-15.077219],[-60.264326,-14.645979],[-60.459198,-14.354007],[-60.503304,-13.775955],[-61.084121,-13.479384],[-61.713204,-13.489202],[-62.127081,-13.198781],[-62.80306,-13.000653],[-63.196499,-12.627033],[-64.316353,-12.461978],[-65.402281,-11.56627],[-65.321899,-10.895872],[-65.444837,-10.511451],[-65.338435,-9.761988],[-66.646908,-9.931331],[-67.173801,-10.306812],[-68.048192,-10.712059],[-68.271254,-11.014521],[-68.786158,-11.03638],[-69.529678,-10.951734],[-70.093752,-11.123972],[-70.548686,-11.009147],[-70.481894,-9.490118],[-71.302412,-10.079436],[-72.184891,-10.053598],[-72.563033,-9.520194],[-73.226713,-9.462213],[-73.015383,-9.032833],[-73.571059,-8.424447],[-73.987235,-7.52383],[-73.723401,-7.340999],[-73.724487,-6.918595],[-73.120027,-6.629931],[-73.219711,-6.089189],[-72.964507,-5.741251],[-72.891928,-5.274561],[-71.748406,-4.593983],[-70.928843,-4.401591],[-70.794769,-4.251265],[-69.893635,-4.298187],[-69.444102,-1.556287],[-69.420486,-1.122619],[-69.577065,-0.549992],[-70.020656,-0.185156],[-70.015566,0.541414],[-69.452396,0.706159],[-69.252434,0.602651],[-69.218638,0.985677],[-69.804597,1.089081],[-69.816973,1.714805],[-67.868565,1.692455],[-67.53781,2.037163],[-67.259998,1.719999],[-67.065048,1.130112],[-66.876326,1.253361],[-66.325765,0.724452],[-65.548267,0.789254],[-65.354713,1.095282],[-64.611012,1.328731],[-64.199306,1.492855],[-64.083085,1.916369],[-63.368788,2.2009],[-63.422867,2.411068],[-64.269999,2.497006],[-64.408828,3.126786],[-64.368494,3.79721],[-64.816064,4.056445],[-64.628659,4.148481],[-63.888343,4.02053],[-63.093198,3.770571],[-62.804533,4.006965],[-62.08543,4.162124],[-60.966893,4.536468],[-60.601179,4.918098],[-60.733574,5.200277],[-60.213683,5.244486],[-59.980959,5.014061],[-60.111002,4.574967],[-59.767406,4.423503],[-59.53804,3.958803],[-59.815413,3.606499],[-59.974525,2.755233],[-59.718546,2.24963],[-59.646044,1.786894],[-59.030862,1.317698],[-58.540013,1.268088],[-58.429477,1.463942],[-58.11345,1.507195],[-57.660971,1.682585],[-57.335823,1.948538],[-56.782704,1.863711],[-56.539386,1.899523],[-55.995698,1.817667],[-55.9056,2.021996],[-56.073342,2.220795],[-55.973322,2.510364],[-55.569755,2.421506],[-55.097587,2.523748],[-54.524754,2.311849],[-54.088063,2.105557],[-53.778521,2.376703],[-53.554839,2.334897],[-53.418465,2.053389],[-52.939657,2.124858],[-52.556425,2.504705],[-52.249338,3.241094],[-51.657797,4.156232],[-51.317146,4.203491],[-51.069771,3.650398],[-50.508875,1.901564],[-49.974076,1.736483],[-49.947101,1.04619],[-50.699251,0.222984],[-50.388211,-0.078445],[-48.620567,-0.235489],[-48.584497,-1.237805],[-47.824956,-0.581618],[-46.566584,-0.941028],[-44.905703,-1.55174],[-44.417619,-2.13775],[-44.581589,-2.691308],[-43.418791,-2.38311],[-41.472657,-2.912018],[-39.978665,-2.873054],[-38.500383,-3.700652],[-37.223252,-4.820946],[-36.452937,-5.109404],[-35.597796,-5.149504],[-35.235389,-5.464937],[-34.89603,-6.738193],[-34.729993,-7.343221],[-35.128212,-8.996401],[-35.636967,-9.649282],[-37.046519,-11.040721],[-37.683612,-12.171195],[-38.423877,-13.038119],[-38.673887,-13.057652],[-38.953276,-13.79337],[-38.882298,-15.667054],[-39.161092,-17.208407],[-39.267339,-17.867746],[-39.583521,-18.262296],[-39.760823,-19.599113],[-40.774741,-20.904512],[-40.944756,-21.937317],[-41.754164,-22.370676],[-41.988284,-22.97007],[-43.074704,-22.967693],[-44.647812,-23.351959],[-45.352136,-23.796842],[-46.472093,-24.088969],[-47.648972,-24.885199],[-48.495458,-25.877025],[-48.641005,-26.623698],[-48.474736,-27.175912],[-48.66152,-28.186135],[-48.888457,-28.674115],[-49.587329,-29.224469],[-50.696874,-30.984465],[-51.576226,-31.777698],[-52.256081,-32.24537],[-52.7121,-33.196578],[-53.373662,-33.768378],[-53.650544,-33.202004],[-53.209589,-32.727666],[-53.787952,-32.047243],[-54.572452,-31.494511],[-55.60151,-30.853879],[-55.973245,-30.883076],[-56.976026,-30.109686],[-57.625133,-30.216295]]]},"id":"BRA"},
+{"type":"Feature","properties":{"name":"Brunei"},"geometry":{"type":"Polygon","coordinates":[[[114.204017,4.525874],[114.599961,4.900011],[115.45071,5.44773],[115.4057,4.955228],[115.347461,4.316636],[114.869557,4.348314],[114.659596,4.007637],[114.204017,4.525874]]]},"id":"BRN"},
+{"type":"Feature","properties":{"name":"Bhutan"},"geometry":{"type":"Polygon","coordinates":[[[91.696657,27.771742],[92.103712,27.452614],[92.033484,26.83831],[91.217513,26.808648],[90.373275,26.875724],[89.744528,26.719403],[88.835643,27.098966],[88.814248,27.299316],[89.47581,28.042759],[90.015829,28.296439],[90.730514,28.064954],[91.258854,28.040614],[91.696657,27.771742]]]},"id":"BTN"},
+{"type":"Feature","properties":{"name":"Botswana"},"geometry":{"type":"Polygon","coordinates":[[[25.649163,-18.536026],[25.850391,-18.714413],[26.164791,-19.293086],[27.296505,-20.39152],[27.724747,-20.499059],[27.727228,-20.851802],[28.02137,-21.485975],[28.794656,-21.639454],[29.432188,-22.091313],[28.017236,-22.827754],[27.11941,-23.574323],[26.786407,-24.240691],[26.485753,-24.616327],[25.941652,-24.696373],[25.765849,-25.174845],[25.664666,-25.486816],[25.025171,-25.71967],[24.211267,-25.670216],[23.73357,-25.390129],[23.312097,-25.26869],[22.824271,-25.500459],[22.579532,-25.979448],[22.105969,-26.280256],[21.605896,-26.726534],[20.889609,-26.828543],[20.66647,-26.477453],[20.758609,-25.868136],[20.165726,-24.917962],[19.895768,-24.76779],[19.895458,-21.849157],[20.881134,-21.814327],[20.910641,-18.252219],[21.65504,-18.219146],[23.196858,-17.869038],[23.579006,-18.281261],[24.217365,-17.889347],[24.520705,-17.887125],[25.084443,-17.661816],[25.264226,-17.73654],[25.649163,-18.536026]]]},"id":"BWA"},
+{"type":"Feature","properties":{"name":"Central African Republic"},"geometry":{"type":"Polygon","coordinates":[[[15.27946,7.421925],[16.106232,7.497088],[16.290562,7.754307],[16.456185,7.734774],[16.705988,7.508328],[17.96493,7.890914],[18.389555,8.281304],[18.911022,8.630895],[18.81201,8.982915],[19.094008,9.074847],[20.059685,9.012706],[21.000868,9.475985],[21.723822,10.567056],[22.231129,10.971889],[22.864165,11.142395],[22.977544,10.714463],[23.554304,10.089255],[23.55725,9.681218],[23.394779,9.265068],[23.459013,8.954286],[23.805813,8.666319],[24.567369,8.229188],[25.114932,7.825104],[25.124131,7.500085],[25.796648,6.979316],[26.213418,6.546603],[26.465909,5.946717],[27.213409,5.550953],[27.374226,5.233944],[27.044065,5.127853],[26.402761,5.150875],[25.650455,5.256088],[25.278798,5.170408],[25.128833,4.927245],[24.805029,4.897247],[24.410531,5.108784],[23.297214,4.609693],[22.84148,4.710126],[22.704124,4.633051],[22.405124,4.02916],[21.659123,4.224342],[20.927591,4.322786],[20.290679,4.691678],[19.467784,5.031528],[18.932312,4.709506],[18.542982,4.201785],[18.453065,3.504386],[17.8099,3.560196],[17.133042,3.728197],[16.537058,3.198255],[16.012852,2.26764],[15.907381,2.557389],[15.862732,3.013537],[15.405396,3.335301],[15.03622,3.851367],[14.950953,4.210389],[14.478372,4.732605],[14.558936,5.030598],[14.459407,5.451761],[14.53656,6.226959],[14.776545,6.408498],[15.27946,7.421925]]]},"id":"CAF"},
+{"type":"Feature","properties":{"name":"Canada"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-63.6645,46.55001],[-62.9393,46.41587],[-62.01208,46.44314],[-62.50391,46.03339],[-62.87433,45.96818],[-64.1428,46.39265],[-64.39261,46.72747],[-64.01486,47.03601],[-63.6645,46.55001]]],[[[-61.806305,49.10506],[-62.29318,49.08717],[-63.58926,49.40069],[-64.51912,49.87304],[-64.17322,49.95718],[-62.85829,49.70641],[-61.835585,49.28855],[-61.806305,49.10506]]],[[[-123.510002,48.510011],[-124.012891,48.370846],[-125.655013,48.825005],[-125.954994,49.179996],[-126.850004,49.53],[-127.029993,49.814996],[-128.059336,49.994959],[-128.444584,50.539138],[-128.358414,50.770648],[-127.308581,50.552574],[-126.695001,50.400903],[-125.755007,50.295018],[-125.415002,49.950001],[-124.920768,49.475275],[-123.922509,49.062484],[-123.510002,48.510011]]],[[[-56.134036,50.68701],[-56.795882,49.812309],[-56.143105,50.150117],[-55.471492,49.935815],[-55.822401,49.587129],[-54.935143,49.313011],[-54.473775,49.556691],[-53.476549,49.249139],[-53.786014,48.516781],[-53.086134,48.687804],[-52.958648,48.157164],[-52.648099,47.535548],[-53.069158,46.655499],[-53.521456,46.618292],[-54.178936,46.807066],[-53.961869,47.625207],[-54.240482,47.752279],[-55.400773,46.884994],[-55.997481,46.91972],[-55.291219,47.389562],[-56.250799,47.632545],[-57.325229,47.572807],[-59.266015,47.603348],[-59.419494,47.899454],[-58.796586,48.251525],[-59.231625,48.523188],[-58.391805,49.125581],[-57.35869,50.718274],[-56.73865,51.287438],[-55.870977,51.632094],[-55.406974,51.588273],[-55.600218,51.317075],[-56.134036,50.68701]]],[[[-132.710008,54.040009],[-132.710009,54.040009],[-132.710008,54.040009],[-132.710008,54.040009],[-131.74999,54.120004],[-132.04948,52.984621],[-131.179043,52.180433],[-131.57783,52.182371],[-132.180428,52.639707],[-132.549992,53.100015],[-133.054611,53.411469],[-133.239664,53.85108],[-133.180004,54.169975],[-132.710008,54.040009]]],[[[-79.26582,62.158675],[-79.65752,61.63308],[-80.09956,61.7181],[-80.36215,62.01649],[-80.315395,62.085565],[-79.92939,62.3856],[-79.52002,62.36371],[-79.26582,62.158675]]],[[[-81.89825,62.7108],[-83.06857,62.15922],[-83.77462,62.18231],[-83.99367,62.4528],[-83.25048,62.91409],[-81.87699,62.90458],[-81.89825,62.7108]]],[[[-85.161308,65.657285],[-84.975764,65.217518],[-84.464012,65.371772],[-83.882626,65.109618],[-82.787577,64.766693],[-81.642014,64.455136],[-81.55344,63.979609],[-80.817361,64.057486],[-80.103451,63.725981],[-80.99102,63.411246],[-82.547178,63.651722],[-83.108798,64.101876],[-84.100417,63.569712],[-85.523405,63.052379],[-85.866769,63.637253],[-87.221983,63.541238],[-86.35276,64.035833],[-86.224886,64.822917],[-85.883848,65.738778],[-85.161308,65.657285]]],[[[-75.86588,67.14886],[-76.98687,67.09873],[-77.2364,67.58809],[-76.81166,68.14856],[-75.89521,68.28721],[-75.1145,68.01036],[-75.10333,67.58202],[-75.21597,67.44425],[-75.86588,67.14886]]],[[[-95.647681,69.10769],[-96.269521,68.75704],[-97.617401,69.06003],[-98.431801,68.9507],[-99.797401,69.40003],[-98.917401,69.71003],[-98.218261,70.14354],[-97.157401,69.86003],[-96.557401,69.68003],[-96.257401,69.49003],[-95.647681,69.10769]]],[[[-90.5471,69.49766],[-90.55151,68.47499],[-89.21515,69.25873],[-88.01966,68.61508],[-88.31749,67.87338],[-87.35017,67.19872],[-86.30607,67.92146],[-85.57664,68.78456],[-85.52197,69.88211],[-84.10081,69.80539],[-82.62258,69.65826],[-81.28043,69.16202],[-81.2202,68.66567],[-81.96436,68.13253],[-81.25928,67.59716],[-81.38653,67.11078],[-83.34456,66.41154],[-84.73542,66.2573],[-85.76943,66.55833],[-86.0676,66.05625],[-87.03143,65.21297],[-87.32324,64.77563],[-88.48296,64.09897],[-89.91444,64.03273],[-90.70398,63.61017],[-90.77004,62.96021],[-91.93342,62.83508],[-93.15698,62.02469],[-94.24153,60.89865],[-94.62931,60.11021],[-94.6846,58.94882],[-93.21502,58.78212],[-92.76462,57.84571],[-92.29703,57.08709],[-90.89769,57.28468],[-89.03953,56.85172],[-88.03978,56.47162],[-87.32421,55.99914],[-86.07121,55.72383],[-85.01181,55.3026],[-83.36055,55.24489],[-82.27285,55.14832],[-82.4362,54.28227],[-82.12502,53.27703],[-81.40075,52.15788],[-79.91289,51.20842],[-79.14301,51.53393],[-78.60191,52.56208],[-79.12421,54.14145],[-79.82958,54.66772],[-78.22874,55.13645],[-77.0956,55.83741],[-76.54137,56.53423],[-76.62319,57.20263],[-77.30226,58.05209],[-78.51688,58.80458],[-77.33676,59.85261],[-77.77272,60.75788],[-78.10687,62.31964],[-77.41067,62.55053],[-75.69621,62.2784],[-74.6682,62.18111],[-73.83988,62.4438],[-72.90853,62.10507],[-71.67708,61.52535],[-71.37369,61.13717],[-69.59042,61.06141],[-69.62033,60.22125],[-69.2879,58.95736],[-68.37455,58.80106],[-67.64976,58.21206],[-66.20178,58.76731],[-65.24517,59.87071],[-64.58352,60.33558],[-63.80475,59.4426],[-62.50236,58.16708],[-61.39655,56.96745],[-61.79866,56.33945],[-60.46853,55.77548],[-59.56962,55.20407],[-57.97508,54.94549],[-57.3332,54.6265],[-56.93689,53.78032],[-56.15811,53.64749],[-55.75632,53.27036],[-55.68338,52.14664],[-56.40916,51.7707],[-57.12691,51.41972],[-58.77482,51.0643],[-60.03309,50.24277],[-61.72366,50.08046],[-63.86251,50.29099],[-65.36331,50.2982],[-66.39905,50.22897],[-67.23631,49.51156],[-68.51114,49.06836],[-69.95362,47.74488],[-71.10458,46.82171],[-70.25522,46.98606],[-68.65,48.3],[-66.55243,49.1331],[-65.05626,49.23278],[-64.17099,48.74248],[-65.11545,48.07085],[-64.79854,46.99297],[-64.47219,46.23849],[-63.17329,45.73902],[-61.52072,45.88377],[-60.51815,47.00793],[-60.4486,46.28264],[-59.80287,45.9204],[-61.03988,45.26525],[-63.25471,44.67014],[-64.24656,44.26553],[-65.36406,43.54523],[-66.1234,43.61867],[-66.16173,44.46512],[-64.42549,45.29204],[-66.02605,45.25931],[-67.13741,45.13753],[-67.79134,45.70281],[-67.79046,47.06636],[-68.23444,47.35486],[-68.905,47.185],[-69.237216,47.447781],[-69.99997,46.69307],[-70.305,45.915],[-70.66,45.46],[-71.08482,45.30524],[-71.405,45.255],[-71.50506,45.0082],[-73.34783,45.00738],[-74.867,45.00048],[-75.31821,44.81645],[-76.375,44.09631],[-76.5,44.018459],[-76.820034,43.628784],[-77.737885,43.629056],[-78.72028,43.625089],[-79.171674,43.466339],[-79.01,43.27],[-78.92,42.965],[-78.939362,42.863611],[-80.247448,42.3662],[-81.277747,42.209026],[-82.439278,41.675105],[-82.690089,41.675105],[-83.02981,41.832796],[-83.142,41.975681],[-83.12,42.08],[-82.9,42.43],[-82.43,42.98],[-82.137642,43.571088],[-82.337763,44.44],[-82.550925,45.347517],[-83.592851,45.816894],[-83.469551,45.994686],[-83.616131,46.116927],[-83.890765,46.116927],[-84.091851,46.275419],[-84.14212,46.512226],[-84.3367,46.40877],[-84.6049,46.4396],[-84.543749,46.538684],[-84.779238,46.637102],[-84.87608,46.900083],[-85.652363,47.220219],[-86.461991,47.553338],[-87.439793,47.94],[-88.378114,48.302918],[-89.272917,48.019808],[-89.6,48.01],[-90.83,48.27],[-91.64,48.14],[-92.61,48.45],[-93.63087,48.60926],[-94.32914,48.67074],[-94.64,48.84],[-94.81758,49.38905],[-95.15609,49.38425],[-95.15907,49],[-97.22872,49.0007],[-100.65,49],[-104.04826,48.99986],[-107.05,49],[-110.05,49],[-113,49],[-116.04818,49],[-117.03121,49],[-120,49],[-122.84,49],[-122.97421,49.002538],[-124.91024,49.98456],[-125.62461,50.41656],[-127.43561,50.83061],[-127.99276,51.71583],[-127.85032,52.32961],[-129.12979,52.75538],[-129.30523,53.56159],[-130.51497,54.28757],[-130.53611,54.80278],[-129.98,55.285],[-130.00778,55.91583],[-131.70781,56.55212],[-132.73042,57.69289],[-133.35556,58.41028],[-134.27111,58.86111],[-134.945,59.27056],[-135.47583,59.78778],[-136.47972,59.46389],[-137.4525,58.905],[-138.34089,59.56211],[-139.039,60],[-140.013,60.27682],[-140.99778,60.30639],[-140.9925,66.00003],[-140.986,69.712],[-139.12052,69.47102],[-137.54636,68.99002],[-136.50358,68.89804],[-135.62576,69.31512],[-134.41464,69.62743],[-132.92925,69.50534],[-131.43136,69.94451],[-129.79471,70.19369],[-129.10773,69.77927],[-128.36156,70.01286],[-128.13817,70.48384],[-127.44712,70.37721],[-125.75632,69.48058],[-124.42483,70.1584],[-124.28968,69.39969],[-123.06108,69.56372],[-122.6835,69.85553],[-121.47226,69.79778],[-119.94288,69.37786],[-117.60268,69.01128],[-116.22643,68.84151],[-115.2469,68.90591],[-113.89794,68.3989],[-115.30489,67.90261],[-113.49727,67.68815],[-110.798,67.80612],[-109.94619,67.98104],[-108.8802,67.38144],[-107.79239,67.88736],[-108.81299,68.31164],[-108.16721,68.65392],[-106.95,68.7],[-106.15,68.8],[-105.34282,68.56122],[-104.33791,68.018],[-103.22115,68.09775],[-101.45433,67.64689],[-99.90195,67.80566],[-98.4432,67.78165],[-98.5586,68.40394],[-97.66948,68.57864],[-96.11991,68.23939],[-96.12588,67.29338],[-95.48943,68.0907],[-94.685,68.06383],[-94.23282,69.06903],[-95.30408,69.68571],[-96.47131,70.08976],[-96.39115,71.19482],[-95.2088,71.92053],[-93.88997,71.76015],[-92.87818,71.31869],[-91.51964,70.19129],[-92.40692,69.69997],[-90.5471,69.49766]]],[[[-114.16717,73.12145],[-114.66634,72.65277],[-112.44102,72.9554],[-111.05039,72.4504],[-109.92035,72.96113],[-109.00654,72.63335],[-108.18835,71.65089],[-107.68599,72.06548],[-108.39639,73.08953],[-107.51645,73.23598],[-106.52259,73.07601],[-105.40246,72.67259],[-104.77484,71.6984],[-104.46476,70.99297],[-102.78537,70.49776],[-100.98078,70.02432],[-101.08929,69.58447],[-102.73116,69.50402],[-102.09329,69.11962],[-102.43024,68.75282],[-104.24,68.91],[-105.96,69.18],[-107.12254,69.11922],[-109,68.78],[-111.534149,68.630059],[-113.3132,68.53554],[-113.85496,69.00744],[-115.22,69.28],[-116.10794,69.16821],[-117.34,69.96],[-116.67473,70.06655],[-115.13112,70.2373],[-113.72141,70.19237],[-112.4161,70.36638],[-114.35,70.6],[-116.48684,70.52045],[-117.9048,70.54056],[-118.43238,70.9092],[-116.11311,71.30918],[-117.65568,71.2952],[-119.40199,71.55859],[-118.56267,72.30785],[-117.86642,72.70594],[-115.18909,73.31459],[-114.16717,73.12145]]],[[[-104.5,73.42],[-105.38,72.76],[-106.94,73.46],[-106.6,73.6],[-105.26,73.64],[-104.5,73.42]]],[[[-76.34,73.102685],[-76.251404,72.826385],[-77.314438,72.855545],[-78.39167,72.876656],[-79.486252,72.742203],[-79.775833,72.802902],[-80.876099,73.333183],[-80.833885,73.693184],[-80.353058,73.75972],[-78.064438,73.651932],[-76.34,73.102685]]],[[[-86.562179,73.157447],[-85.774371,72.534126],[-84.850112,73.340278],[-82.31559,73.750951],[-80.600088,72.716544],[-80.748942,72.061907],[-78.770639,72.352173],[-77.824624,72.749617],[-75.605845,72.243678],[-74.228616,71.767144],[-74.099141,71.33084],[-72.242226,71.556925],[-71.200015,70.920013],[-68.786054,70.525024],[-67.91497,70.121948],[-66.969033,69.186087],[-68.805123,68.720198],[-66.449866,68.067163],[-64.862314,67.847539],[-63.424934,66.928473],[-61.851981,66.862121],[-62.163177,66.160251],[-63.918444,64.998669],[-65.14886,65.426033],[-66.721219,66.388041],[-68.015016,66.262726],[-68.141287,65.689789],[-67.089646,65.108455],[-65.73208,64.648406],[-65.320168,64.382737],[-64.669406,63.392927],[-65.013804,62.674185],[-66.275045,62.945099],[-68.783186,63.74567],[-67.369681,62.883966],[-66.328297,62.280075],[-66.165568,61.930897],[-68.877367,62.330149],[-71.023437,62.910708],[-72.235379,63.397836],[-71.886278,63.679989],[-73.378306,64.193963],[-74.834419,64.679076],[-74.818503,64.389093],[-77.70998,64.229542],[-78.555949,64.572906],[-77.897281,65.309192],[-76.018274,65.326969],[-73.959795,65.454765],[-74.293883,65.811771],[-73.944912,66.310578],[-72.651167,67.284576],[-72.92606,67.726926],[-73.311618,68.069437],[-74.843307,68.554627],[-76.869101,68.894736],[-76.228649,69.147769],[-77.28737,69.76954],[-78.168634,69.826488],[-78.957242,70.16688],[-79.492455,69.871808],[-81.305471,69.743185],[-84.944706,69.966634],[-87.060003,70.260001],[-88.681713,70.410741],[-89.51342,70.762038],[-88.467721,71.218186],[-89.888151,71.222552],[-90.20516,72.235074],[-89.436577,73.129464],[-88.408242,73.537889],[-85.826151,73.803816],[-86.562179,73.157447]]],[[[-100.35642,73.84389],[-99.16387,73.63339],[-97.38,73.76],[-97.12,73.47],[-98.05359,72.99052],[-96.54,72.56],[-96.72,71.66],[-98.35966,71.27285],[-99.32286,71.35639],[-100.01482,71.73827],[-102.5,72.51],[-102.48,72.83],[-100.43836,72.70588],[-101.54,73.36],[-100.35642,73.84389]]],[[[-93.196296,72.771992],[-94.269047,72.024596],[-95.409856,72.061881],[-96.033745,72.940277],[-96.018268,73.43743],[-95.495793,73.862417],[-94.503658,74.134907],[-92.420012,74.100025],[-90.509793,73.856732],[-92.003965,72.966244],[-93.196296,72.771992]]],[[[-120.46,71.383602],[-123.09219,70.90164],[-123.62,71.34],[-125.928949,71.868688],[-125.5,72.292261],[-124.80729,73.02256],[-123.94,73.68],[-124.91775,74.29275],[-121.53788,74.44893],[-120.10978,74.24135],[-117.55564,74.18577],[-116.58442,73.89607],[-115.51081,73.47519],[-116.76794,73.22292],[-119.22,72.52],[-120.46,71.82],[-120.46,71.383602]]],[[[-93.612756,74.979997],[-94.156909,74.592347],[-95.608681,74.666864],[-96.820932,74.927623],[-96.288587,75.377828],[-94.85082,75.647218],[-93.977747,75.29649],[-93.612756,74.979997]]],[[[-98.5,76.72],[-97.735585,76.25656],[-97.704415,75.74344],[-98.16,75],[-99.80874,74.89744],[-100.88366,75.05736],[-100.86292,75.64075],[-102.50209,75.5638],[-102.56552,76.3366],[-101.48973,76.30537],[-99.98349,76.64634],[-98.57699,76.58859],[-98.5,76.72]]],[[[-108.21141,76.20168],[-107.81943,75.84552],[-106.92893,76.01282],[-105.881,75.9694],[-105.70498,75.47951],[-106.31347,75.00527],[-109.7,74.85],[-112.22307,74.41696],[-113.74381,74.39427],[-113.87135,74.72029],[-111.79421,75.1625],[-116.31221,75.04343],[-117.7104,75.2222],[-116.34602,76.19903],[-115.40487,76.47887],[-112.59056,76.14134],[-110.81422,75.54919],[-109.0671,75.47321],[-110.49726,76.42982],[-109.5811,76.79417],[-108.54859,76.67832],[-108.21141,76.20168]]],[[[-94.684086,77.097878],[-93.573921,76.776296],[-91.605023,76.778518],[-90.741846,76.449597],[-90.969661,76.074013],[-89.822238,75.847774],[-89.187083,75.610166],[-87.838276,75.566189],[-86.379192,75.482421],[-84.789625,75.699204],[-82.753445,75.784315],[-81.128531,75.713983],[-80.057511,75.336849],[-79.833933,74.923127],[-80.457771,74.657304],[-81.948843,74.442459],[-83.228894,74.564028],[-86.097452,74.410032],[-88.15035,74.392307],[-89.764722,74.515555],[-92.422441,74.837758],[-92.768285,75.38682],[-92.889906,75.882655],[-93.893824,76.319244],[-95.962457,76.441381],[-97.121379,76.751078],[-96.745123,77.161389],[-94.684086,77.097878]]],[[[-116.198587,77.645287],[-116.335813,76.876962],[-117.106051,76.530032],[-118.040412,76.481172],[-119.899318,76.053213],[-121.499995,75.900019],[-122.854924,76.116543],[-122.854925,76.116543],[-121.157535,76.864508],[-119.103939,77.51222],[-117.570131,77.498319],[-116.198587,77.645287]]],[[[-93.840003,77.519997],[-94.295608,77.491343],[-96.169654,77.555111],[-96.436304,77.834629],[-94.422577,77.820005],[-93.720656,77.634331],[-93.840003,77.519997]]],[[[-110.186938,77.697015],[-112.051191,77.409229],[-113.534279,77.732207],[-112.724587,78.05105],[-111.264443,78.152956],[-109.854452,77.996325],[-110.186938,77.697015]]],[[[-109.663146,78.601973],[-110.881314,78.40692],[-112.542091,78.407902],[-112.525891,78.550555],[-111.50001,78.849994],[-110.963661,78.804441],[-109.663146,78.601973]]],[[[-95.830295,78.056941],[-97.309843,77.850597],[-98.124289,78.082857],[-98.552868,78.458105],[-98.631984,78.87193],[-97.337231,78.831984],[-96.754399,78.765813],[-95.559278,78.418315],[-95.830295,78.056941]]],[[[-100.060192,78.324754],[-99.670939,77.907545],[-101.30394,78.018985],[-102.949809,78.343229],[-105.176133,78.380332],[-104.210429,78.67742],[-105.41958,78.918336],[-105.492289,79.301594],[-103.529282,79.165349],[-100.825158,78.800462],[-100.060192,78.324754]]],[[[-87.02,79.66],[-85.81435,79.3369],[-87.18756,79.0393],[-89.03535,78.28723],[-90.80436,78.21533],[-92.87669,78.34333],[-93.95116,78.75099],[-93.93574,79.11373],[-93.14524,79.3801],[-94.974,79.37248],[-96.07614,79.70502],[-96.70972,80.15777],[-96.01644,80.60233],[-95.32345,80.90729],[-94.29843,80.97727],[-94.73542,81.20646],[-92.40984,81.25739],[-91.13289,80.72345],[-89.45,80.509322],[-87.81,80.32],[-87.02,79.66]]],[[[-68.5,83.106322],[-65.82735,83.02801],[-63.68,82.9],[-61.85,82.6286],[-61.89388,82.36165],[-64.334,81.92775],[-66.75342,81.72527],[-67.65755,81.50141],[-65.48031,81.50657],[-67.84,80.9],[-69.4697,80.61683],[-71.18,79.8],[-73.2428,79.63415],[-73.88,79.430162],[-76.90773,79.32309],[-75.52924,79.19766],[-76.22046,79.01907],[-75.39345,78.52581],[-76.34354,78.18296],[-77.88851,77.89991],[-78.36269,77.50859],[-79.75951,77.20968],[-79.61965,76.98336],[-77.91089,77.022045],[-77.88911,76.777955],[-80.56125,76.17812],[-83.17439,76.45403],[-86.11184,76.29901],[-87.6,76.42],[-89.49068,76.47239],[-89.6161,76.95213],[-87.76739,77.17833],[-88.26,77.9],[-87.65,77.970222],[-84.97634,77.53873],[-86.34,78.18],[-87.96192,78.37181],[-87.15198,78.75867],[-85.37868,78.9969],[-85.09495,79.34543],[-86.50734,79.73624],[-86.93179,80.25145],[-84.19844,80.20836],[-83.408696,80.1],[-81.84823,80.46442],[-84.1,80.58],[-87.59895,80.51627],[-89.36663,80.85569],[-90.2,81.26],[-91.36786,81.5531],[-91.58702,81.89429],[-90.1,82.085],[-88.93227,82.11751],[-86.97024,82.27961],[-85.5,82.652273],[-84.260005,82.6],[-83.18,82.32],[-82.42,82.86],[-81.1,83.02],[-79.30664,83.13056],[-76.25,83.172059],[-75.71878,83.06404],[-72.83153,83.23324],[-70.665765,83.169781],[-68.5,83.106322]]]]},"id":"CAN"},
+{"type":"Feature","properties":{"name":"Switzerland"},"geometry":{"type":"Polygon","coordinates":[[[9.594226,47.525058],[9.632932,47.347601],[9.47997,47.10281],[9.932448,46.920728],[10.442701,46.893546],[10.363378,46.483571],[9.922837,46.314899],[9.182882,46.440215],[8.966306,46.036932],[8.489952,46.005151],[8.31663,46.163642],[7.755992,45.82449],[7.273851,45.776948],[6.843593,45.991147],[6.5001,46.429673],[6.022609,46.27299],[6.037389,46.725779],[6.768714,47.287708],[6.736571,47.541801],[7.192202,47.449766],[7.466759,47.620582],[8.317301,47.61358],[8.522612,47.830828],[9.594226,47.525058]]]},"id":"CHE"},
+{"type":"Feature","properties":{"name":"Chile"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.63401,-52.63637],[-68.63335,-54.8695],[-67.56244,-54.87001],[-66.95992,-54.89681],[-67.29103,-55.30124],[-68.14863,-55.61183],[-68.639991,-55.580018],[-69.2321,-55.49906],[-69.95809,-55.19843],[-71.00568,-55.05383],[-72.2639,-54.49514],[-73.2852,-53.95752],[-74.66253,-52.83749],[-73.8381,-53.04743],[-72.43418,-53.7154],[-71.10773,-54.07433],[-70.59178,-53.61583],[-70.26748,-52.93123],[-69.34565,-52.5183],[-68.63401,-52.63637]]],[[[-68.219913,-21.494347],[-67.82818,-22.872919],[-67.106674,-22.735925],[-66.985234,-22.986349],[-67.328443,-24.025303],[-68.417653,-24.518555],[-68.386001,-26.185016],[-68.5948,-26.506909],[-68.295542,-26.89934],[-69.001235,-27.521214],[-69.65613,-28.459141],[-70.01355,-29.367923],[-69.919008,-30.336339],[-70.535069,-31.36501],[-70.074399,-33.09121],[-69.814777,-33.273886],[-69.817309,-34.193571],[-70.388049,-35.169688],[-70.364769,-36.005089],[-71.121881,-36.658124],[-71.118625,-37.576827],[-70.814664,-38.552995],[-71.413517,-38.916022],[-71.680761,-39.808164],[-71.915734,-40.832339],[-71.746804,-42.051386],[-72.148898,-42.254888],[-71.915424,-43.408565],[-71.464056,-43.787611],[-71.793623,-44.207172],[-71.329801,-44.407522],[-71.222779,-44.784243],[-71.659316,-44.973689],[-71.552009,-45.560733],[-71.917258,-46.884838],[-72.447355,-47.738533],[-72.331161,-48.244238],[-72.648247,-48.878618],[-73.415436,-49.318436],[-73.328051,-50.378785],[-72.975747,-50.74145],[-72.309974,-50.67701],[-72.329404,-51.425956],[-71.914804,-52.009022],[-69.498362,-52.142761],[-68.571545,-52.299444],[-69.461284,-52.291951],[-69.94278,-52.537931],[-70.845102,-52.899201],[-71.006332,-53.833252],[-71.429795,-53.856455],[-72.557943,-53.53141],[-73.702757,-52.835069],[-73.702757,-52.83507],[-74.946763,-52.262754],[-75.260026,-51.629355],[-74.976632,-51.043396],[-75.479754,-50.378372],[-75.608015,-48.673773],[-75.18277,-47.711919],[-74.126581,-46.939253],[-75.644395,-46.647643],[-74.692154,-45.763976],[-74.351709,-44.103044],[-73.240356,-44.454961],[-72.717804,-42.383356],[-73.3889,-42.117532],[-73.701336,-43.365776],[-74.331943,-43.224958],[-74.017957,-41.794813],[-73.677099,-39.942213],[-73.217593,-39.258689],[-73.505559,-38.282883],[-73.588061,-37.156285],[-73.166717,-37.12378],[-72.553137,-35.50884],[-71.861732,-33.909093],[-71.43845,-32.418899],[-71.668721,-30.920645],[-71.370083,-30.095682],[-71.489894,-28.861442],[-70.905124,-27.64038],[-70.724954,-25.705924],[-70.403966,-23.628997],[-70.091246,-21.393319],[-70.16442,-19.756468],[-70.372572,-18.347975],[-69.858444,-18.092694],[-69.590424,-17.580012],[-69.100247,-18.260125],[-68.966818,-18.981683],[-68.442225,-19.405068],[-68.757167,-20.372658],[-68.219913,-21.494347]]]]},"id":"CHL"},
+{"type":"Feature","properties":{"name":"China"},"geometry":{"type":"MultiPolygon","coordinates":[[[[110.339188,18.678395],[109.47521,18.197701],[108.655208,18.507682],[108.626217,19.367888],[109.119056,19.821039],[110.211599,20.101254],[110.786551,20.077534],[111.010051,19.69593],[110.570647,19.255879],[110.339188,18.678395]]],[[[127.657407,49.76027],[129.397818,49.4406],[130.582293,48.729687],[130.987282,47.790132],[132.506672,47.78897],[133.373596,48.183442],[135.026311,48.47823],[134.500814,47.57844],[134.112362,47.212467],[133.769644,46.116927],[133.097127,45.144066],[131.883454,45.321162],[131.025212,44.967953],[131.288555,44.11152],[131.144688,42.92999],[130.633866,42.903015],[130.640016,42.395009],[129.994267,42.985387],[129.596669,42.424982],[128.052215,41.994285],[128.208433,41.466772],[127.343783,41.503152],[126.869083,41.816569],[126.182045,41.107336],[125.079942,40.569824],[124.265625,39.928493],[122.86757,39.637788],[122.131388,39.170452],[121.054554,38.897471],[121.585995,39.360854],[121.376757,39.750261],[122.168595,40.422443],[121.640359,40.94639],[120.768629,40.593388],[119.639602,39.898056],[119.023464,39.252333],[118.042749,39.204274],[117.532702,38.737636],[118.059699,38.061476],[118.87815,37.897325],[118.911636,37.448464],[119.702802,37.156389],[120.823457,37.870428],[121.711259,37.481123],[122.357937,37.454484],[122.519995,36.930614],[121.104164,36.651329],[120.637009,36.11144],[119.664562,35.609791],[119.151208,34.909859],[120.227525,34.360332],[120.620369,33.376723],[121.229014,32.460319],[121.908146,31.692174],[121.891919,30.949352],[121.264257,30.676267],[121.503519,30.142915],[122.092114,29.83252],[121.938428,29.018022],[121.684439,28.225513],[121.125661,28.135673],[120.395473,27.053207],[119.585497,25.740781],[118.656871,24.547391],[117.281606,23.624501],[115.890735,22.782873],[114.763827,22.668074],[114.152547,22.22376],[113.80678,22.54834],[113.241078,22.051367],[111.843592,21.550494],[110.785466,21.397144],[110.444039,20.341033],[109.889861,20.282457],[109.627655,21.008227],[109.864488,21.395051],[108.522813,21.715212],[108.05018,21.55238],[107.04342,21.811899],[106.567273,22.218205],[106.725403,22.794268],[105.811247,22.976892],[105.329209,23.352063],[104.476858,22.81915],[103.504515,22.703757],[102.706992,22.708795],[102.170436,22.464753],[101.652018,22.318199],[101.80312,21.174367],[101.270026,21.201652],[101.180005,21.436573],[101.150033,21.849984],[100.416538,21.558839],[99.983489,21.742937],[99.240899,22.118314],[99.531992,22.949039],[98.898749,23.142722],[98.660262,24.063286],[97.60472,23.897405],[97.724609,25.083637],[98.671838,25.918703],[98.712094,26.743536],[98.68269,27.508812],[98.246231,27.747221],[97.911988,28.335945],[97.327114,28.261583],[96.248833,28.411031],[96.586591,28.83098],[96.117679,29.452802],[95.404802,29.031717],[94.56599,29.277438],[93.413348,28.640629],[92.503119,27.896876],[91.696657,27.771742],[91.258854,28.040614],[90.730514,28.064954],[90.015829,28.296439],[89.47581,28.042759],[88.814248,27.299316],[88.730326,28.086865],[88.120441,27.876542],[86.954517,27.974262],[85.82332,28.203576],[85.011638,28.642774],[84.23458,28.839894],[83.898993,29.320226],[83.337115,29.463732],[82.327513,30.115268],[81.525804,30.422717],[81.111256,30.183481],[79.721367,30.882715],[78.738894,31.515906],[78.458446,32.618164],[79.176129,32.48378],[79.208892,32.994395],[78.811086,33.506198],[78.912269,34.321936],[77.837451,35.49401],[76.192848,35.898403],[75.896897,36.666806],[75.158028,37.133031],[74.980002,37.41999],[74.829986,37.990007],[74.864816,38.378846],[74.257514,38.606507],[73.928852,38.505815],[73.675379,39.431237],[73.960013,39.660008],[73.822244,39.893973],[74.776862,40.366425],[75.467828,40.562072],[76.526368,40.427946],[76.904484,41.066486],[78.187197,41.185316],[78.543661,41.582243],[80.11943,42.123941],[80.25999,42.349999],[80.18015,42.920068],[80.866206,43.180362],[79.966106,44.917517],[81.947071,45.317027],[82.458926,45.53965],[83.180484,47.330031],[85.16429,47.000956],[85.720484,47.452969],[85.768233,48.455751],[86.598776,48.549182],[87.35997,49.214981],[87.751264,49.297198],[88.013832,48.599463],[88.854298,48.069082],[90.280826,47.693549],[90.970809,46.888146],[90.585768,45.719716],[90.94554,45.286073],[92.133891,45.115076],[93.480734,44.975472],[94.688929,44.352332],[95.306875,44.241331],[95.762455,43.319449],[96.349396,42.725635],[97.451757,42.74889],[99.515817,42.524691],[100.845866,42.663804],[101.83304,42.514873],[103.312278,41.907468],[104.522282,41.908347],[104.964994,41.59741],[106.129316,42.134328],[107.744773,42.481516],[109.243596,42.519446],[110.412103,42.871234],[111.129682,43.406834],[111.829588,43.743118],[111.667737,44.073176],[111.348377,44.457442],[111.873306,45.102079],[112.436062,45.011646],[113.463907,44.808893],[114.460332,45.339817],[115.985096,45.727235],[116.717868,46.388202],[117.421701,46.672733],[118.874326,46.805412],[119.66327,46.69268],[119.772824,47.048059],[118.866574,47.74706],[118.064143,48.06673],[117.295507,47.697709],[116.308953,47.85341],[115.742837,47.726545],[115.485282,48.135383],[116.191802,49.134598],[116.678801,49.888531],[117.879244,49.510983],[119.288461,50.142883],[119.279366,50.582908],[120.18205,51.643566],[120.738191,51.964115],[120.725789,52.516226],[120.177089,52.753886],[121.003085,53.251401],[122.245748,53.431726],[123.571507,53.458804],[125.068211,53.161045],[125.946349,52.792799],[126.564399,51.784255],[126.939157,51.353894],[127.287456,50.739797],[127.657407,49.76027]]]]},"id":"CHN"},
+{"type":"Feature","properties":{"name":"Ivory Coast"},"geometry":{"type":"Polygon","coordinates":[[[-2.856125,4.994476],[-3.311084,4.984296],[-4.00882,5.179813],[-4.649917,5.168264],[-5.834496,4.993701],[-6.528769,4.705088],[-7.518941,4.338288],[-7.712159,4.364566],[-7.635368,5.188159],[-7.539715,5.313345],[-7.570153,5.707352],[-7.993693,6.12619],[-8.311348,6.193033],[-8.60288,6.467564],[-8.385452,6.911801],[-8.485446,7.395208],[-8.439298,7.686043],[-8.280703,7.68718],[-8.221792,8.123329],[-8.299049,8.316444],[-8.203499,8.455453],[-7.8321,8.575704],[-8.079114,9.376224],[-8.309616,9.789532],[-8.229337,10.12902],[-8.029944,10.206535],[-7.89959,10.297382],[-7.622759,10.147236],[-6.850507,10.138994],[-6.666461,10.430811],[-6.493965,10.411303],[-6.205223,10.524061],[-6.050452,10.096361],[-5.816926,10.222555],[-5.404342,10.370737],[-4.954653,10.152714],[-4.779884,9.821985],[-4.330247,9.610835],[-3.980449,9.862344],[-3.511899,9.900326],[-2.827496,9.642461],[-2.56219,8.219628],[-2.983585,7.379705],[-3.24437,6.250472],[-2.810701,5.389051],[-2.856125,4.994476]]]},"id":"CIV"},
+{"type":"Feature","properties":{"name":"Cameroon"},"geometry":{"type":"Polygon","coordinates":[[[13.075822,2.267097],[12.951334,2.321616],[12.35938,2.192812],[11.751665,2.326758],[11.276449,2.261051],[9.649158,2.283866],[9.795196,3.073404],[9.404367,3.734527],[8.948116,3.904129],[8.744924,4.352215],[8.488816,4.495617],[8.500288,4.771983],[8.757533,5.479666],[9.233163,6.444491],[9.522706,6.453482],[10.118277,7.03877],[10.497375,7.055358],[11.058788,6.644427],[11.745774,6.981383],[11.839309,7.397042],[12.063946,7.799808],[12.218872,8.305824],[12.753672,8.717763],[12.955468,9.417772],[13.1676,9.640626],[13.308676,10.160362],[13.57295,10.798566],[14.415379,11.572369],[14.468192,11.904752],[14.577178,12.085361],[14.181336,12.483657],[14.213531,12.802035],[14.495787,12.859396],[14.893386,12.219048],[14.960152,11.555574],[14.923565,10.891325],[15.467873,9.982337],[14.909354,9.992129],[14.627201,9.920919],[14.171466,10.021378],[13.954218,9.549495],[14.544467,8.965861],[14.979996,8.796104],[15.120866,8.38215],[15.436092,7.692812],[15.27946,7.421925],[14.776545,6.408498],[14.53656,6.226959],[14.459407,5.451761],[14.558936,5.030598],[14.478372,4.732605],[14.950953,4.210389],[15.03622,3.851367],[15.405396,3.335301],[15.862732,3.013537],[15.907381,2.557389],[16.012852,2.26764],[15.940919,1.727673],[15.146342,1.964015],[14.337813,2.227875],[13.075822,2.267097]]]},"id":"CMR"},
+{"type":"Feature","properties":{"name":"Democratic Republic of the Congo"},"geometry":{"type":"Polygon","coordinates":[[[30.83386,3.509166],[30.773347,2.339883],[31.174149,2.204465],[30.85267,1.849396],[30.468508,1.583805],[30.086154,1.062313],[29.875779,0.59738],[29.819503,-0.20531],[29.587838,-0.587406],[29.579466,-1.341313],[29.291887,-1.620056],[29.254835,-2.21511],[29.117479,-2.292211],[29.024926,-2.839258],[29.276384,-3.293907],[29.339998,-4.499983],[29.519987,-5.419979],[29.419993,-5.939999],[29.620032,-6.520015],[30.199997,-7.079981],[30.740015,-8.340007],[30.346086,-8.238257],[29.002912,-8.407032],[28.734867,-8.526559],[28.449871,-9.164918],[28.673682,-9.605925],[28.49607,-10.789884],[28.372253,-11.793647],[28.642417,-11.971569],[29.341548,-12.360744],[29.616001,-12.178895],[29.699614,-13.257227],[28.934286,-13.248958],[28.523562,-12.698604],[28.155109,-12.272481],[27.388799,-12.132747],[27.16442,-11.608748],[26.553088,-11.92444],[25.75231,-11.784965],[25.418118,-11.330936],[24.78317,-11.238694],[24.314516,-11.262826],[24.257155,-10.951993],[23.912215,-10.926826],[23.456791,-10.867863],[22.837345,-11.017622],[22.402798,-10.993075],[22.155268,-11.084801],[22.208753,-9.894796],[21.875182,-9.523708],[21.801801,-8.908707],[21.949131,-8.305901],[21.746456,-7.920085],[21.728111,-7.290872],[20.514748,-7.299606],[20.601823,-6.939318],[20.091622,-6.94309],[20.037723,-7.116361],[19.417502,-7.155429],[19.166613,-7.738184],[19.016752,-7.988246],[18.464176,-7.847014],[18.134222,-7.987678],[17.47297,-8.068551],[17.089996,-7.545689],[16.860191,-7.222298],[16.57318,-6.622645],[16.326528,-5.87747],[13.375597,-5.864241],[13.024869,-5.984389],[12.735171,-5.965682],[12.322432,-6.100092],[12.182337,-5.789931],[12.436688,-5.684304],[12.468004,-5.248362],[12.631612,-4.991271],[12.995517,-4.781103],[13.25824,-4.882957],[13.600235,-4.500138],[14.144956,-4.510009],[14.209035,-4.793092],[14.582604,-4.970239],[15.170992,-4.343507],[15.75354,-3.855165],[16.00629,-3.535133],[15.972803,-2.712392],[16.407092,-1.740927],[16.865307,-1.225816],[17.523716,-0.74383],[17.638645,-0.424832],[17.663553,-0.058084],[17.82654,0.288923],[17.774192,0.855659],[17.898835,1.741832],[18.094276,2.365722],[18.393792,2.900443],[18.453065,3.504386],[18.542982,4.201785],[18.932312,4.709506],[19.467784,5.031528],[20.290679,4.691678],[20.927591,4.322786],[21.659123,4.224342],[22.405124,4.02916],[22.704124,4.633051],[22.84148,4.710126],[23.297214,4.609693],[24.410531,5.108784],[24.805029,4.897247],[25.128833,4.927245],[25.278798,5.170408],[25.650455,5.256088],[26.402761,5.150875],[27.044065,5.127853],[27.374226,5.233944],[27.979977,4.408413],[28.428994,4.287155],[28.696678,4.455077],[29.159078,4.389267],[29.715995,4.600805],[29.9535,4.173699],[30.83386,3.509166]]]},"id":"COD"},
+{"type":"Feature","properties":{"name":"Republic of the Congo"},"geometry":{"type":"Polygon","coordinates":[[[12.995517,-4.781103],[12.62076,-4.438023],[12.318608,-4.60623],[11.914963,-5.037987],[11.093773,-3.978827],[11.855122,-3.426871],[11.478039,-2.765619],[11.820964,-2.514161],[12.495703,-2.391688],[12.575284,-1.948511],[13.109619,-2.42874],[13.992407,-2.470805],[14.29921,-1.998276],[14.425456,-1.333407],[14.316418,-0.552627],[13.843321,0.038758],[14.276266,1.19693],[14.026669,1.395677],[13.282631,1.314184],[13.003114,1.830896],[13.075822,2.267097],[14.337813,2.227875],[15.146342,1.964015],[15.940919,1.727673],[16.012852,2.26764],[16.537058,3.198255],[17.133042,3.728197],[17.8099,3.560196],[18.453065,3.504386],[18.393792,2.900443],[18.094276,2.365722],[17.898835,1.741832],[17.774192,0.855659],[17.82654,0.288923],[17.663553,-0.058084],[17.638645,-0.424832],[17.523716,-0.74383],[16.865307,-1.225816],[16.407092,-1.740927],[15.972803,-2.712392],[16.00629,-3.535133],[15.75354,-3.855165],[15.170992,-4.343507],[14.582604,-4.970239],[14.209035,-4.793092],[14.144956,-4.510009],[13.600235,-4.500138],[13.25824,-4.882957],[12.995517,-4.781103]]]},"id":"COG"},
+{"type":"Feature","properties":{"name":"Colombia"},"geometry":{"type":"Polygon","coordinates":[[[-75.373223,-0.152032],[-75.801466,0.084801],[-76.292314,0.416047],[-76.57638,0.256936],[-77.424984,0.395687],[-77.668613,0.825893],[-77.855061,0.809925],[-78.855259,1.380924],[-78.990935,1.69137],[-78.617831,1.766404],[-78.662118,2.267355],[-78.42761,2.629556],[-77.931543,2.696606],[-77.510431,3.325017],[-77.12769,3.849636],[-77.496272,4.087606],[-77.307601,4.667984],[-77.533221,5.582812],[-77.318815,5.845354],[-77.476661,6.691116],[-77.881571,7.223771],[-77.753414,7.70984],[-77.431108,7.638061],[-77.242566,7.935278],[-77.474723,8.524286],[-77.353361,8.670505],[-76.836674,8.638749],[-76.086384,9.336821],[-75.6746,9.443248],[-75.664704,9.774003],[-75.480426,10.61899],[-74.906895,11.083045],[-74.276753,11.102036],[-74.197223,11.310473],[-73.414764,11.227015],[-72.627835,11.731972],[-72.238195,11.95555],[-71.75409,12.437303],[-71.399822,12.376041],[-71.137461,12.112982],[-71.331584,11.776284],[-71.973922,11.608672],[-72.227575,11.108702],[-72.614658,10.821975],[-72.905286,10.450344],[-73.027604,9.73677],[-73.304952,9.152],[-72.78873,9.085027],[-72.660495,8.625288],[-72.439862,8.405275],[-72.360901,8.002638],[-72.479679,7.632506],[-72.444487,7.423785],[-72.198352,7.340431],[-71.960176,6.991615],[-70.674234,7.087785],[-70.093313,6.960376],[-69.38948,6.099861],[-68.985319,6.206805],[-68.265052,6.153268],[-67.695087,6.267318],[-67.34144,6.095468],[-67.521532,5.55687],[-67.744697,5.221129],[-67.823012,4.503937],[-67.621836,3.839482],[-67.337564,3.542342],[-67.303173,3.318454],[-67.809938,2.820655],[-67.447092,2.600281],[-67.181294,2.250638],[-66.876326,1.253361],[-67.065048,1.130112],[-67.259998,1.719999],[-67.53781,2.037163],[-67.868565,1.692455],[-69.816973,1.714805],[-69.804597,1.089081],[-69.218638,0.985677],[-69.252434,0.602651],[-69.452396,0.706159],[-70.015566,0.541414],[-70.020656,-0.185156],[-69.577065,-0.549992],[-69.420486,-1.122619],[-69.444102,-1.556287],[-69.893635,-4.298187],[-70.394044,-3.766591],[-70.692682,-3.742872],[-70.047709,-2.725156],[-70.813476,-2.256865],[-71.413646,-2.342802],[-71.774761,-2.16979],[-72.325787,-2.434218],[-73.070392,-2.308954],[-73.659504,-1.260491],[-74.122395,-1.002833],[-74.441601,-0.53082],[-75.106625,-0.057205],[-75.373223,-0.152032]]]},"id":"COL"},
+{"type":"Feature","properties":{"name":"Costa Rica"},"geometry":{"type":"Polygon","coordinates":[[[-82.965783,8.225028],[-83.508437,8.446927],[-83.711474,8.656836],[-83.596313,8.830443],[-83.632642,9.051386],[-83.909886,9.290803],[-84.303402,9.487354],[-84.647644,9.615537],[-84.713351,9.908052],[-84.97566,10.086723],[-84.911375,9.795992],[-85.110923,9.55704],[-85.339488,9.834542],[-85.660787,9.933347],[-85.797445,10.134886],[-85.791709,10.439337],[-85.659314,10.754331],[-85.941725,10.895278],[-85.71254,11.088445],[-85.561852,11.217119],[-84.903003,10.952303],[-84.673069,11.082657],[-84.355931,10.999226],[-84.190179,10.79345],[-83.895054,10.726839],[-83.655612,10.938764],[-83.40232,10.395438],[-83.015677,9.992982],[-82.546196,9.566135],[-82.932891,9.476812],[-82.927155,9.07433],[-82.719183,8.925709],[-82.868657,8.807266],[-82.829771,8.626295],[-82.913176,8.423517],[-82.965783,8.225028]]]},"id":"CRI"},
+{"type":"Feature","properties":{"name":"Cuba"},"geometry":{"type":"Polygon","coordinates":[[[-82.268151,23.188611],[-81.404457,23.117271],[-80.618769,23.10598],[-79.679524,22.765303],[-79.281486,22.399202],[-78.347434,22.512166],[-77.993296,22.277194],[-77.146422,21.657851],[-76.523825,21.20682],[-76.19462,21.220565],[-75.598222,21.016624],[-75.67106,20.735091],[-74.933896,20.693905],[-74.178025,20.284628],[-74.296648,20.050379],[-74.961595,19.923435],[-75.63468,19.873774],[-76.323656,19.952891],[-77.755481,19.855481],[-77.085108,20.413354],[-77.492655,20.673105],[-78.137292,20.739949],[-78.482827,21.028613],[-78.719867,21.598114],[-79.285,21.559175],[-80.217475,21.827324],[-80.517535,22.037079],[-81.820943,22.192057],[-82.169992,22.387109],[-81.795002,22.636965],[-82.775898,22.68815],[-83.494459,22.168518],[-83.9088,22.154565],[-84.052151,21.910575],[-84.54703,21.801228],[-84.974911,21.896028],[-84.447062,22.20495],[-84.230357,22.565755],[-83.77824,22.788118],[-83.267548,22.983042],[-82.510436,23.078747],[-82.268151,23.188611]]]},"id":"CUB"},
+{"type":"Feature","properties":{"name":"Northern Cyprus"},"geometry":{"type":"Polygon","coordinates":[[[32.73178,35.140026],[32.802474,35.145504],[32.946961,35.386703],[33.667227,35.373216],[34.576474,35.671596],[33.900804,35.245756],[33.973617,35.058506],[33.86644,35.093595],[33.675392,35.017863],[33.525685,35.038688],[33.475817,35.000345],[33.455922,35.101424],[33.383833,35.162712],[33.190977,35.173125],[32.919572,35.087833],[32.73178,35.140026]]]},"id":"-99"},
+{"type":"Feature","properties":{"name":"Cyprus"},"geometry":{"type":"Polygon","coordinates":[[[33.973617,35.058506],[34.004881,34.978098],[32.979827,34.571869],[32.490296,34.701655],[32.256667,35.103232],[32.73178,35.140026],[32.919572,35.087833],[33.190977,35.173125],[33.383833,35.162712],[33.455922,35.101424],[33.475817,35.000345],[33.525685,35.038688],[33.675392,35.017863],[33.86644,35.093595],[33.973617,35.058506]]]},"id":"CYP"},
+{"type":"Feature","properties":{"name":"Czech Republic"},"geometry":{"type":"Polygon","coordinates":[[[16.960288,48.596982],[16.499283,48.785808],[16.029647,48.733899],[15.253416,49.039074],[14.901447,48.964402],[14.338898,48.555305],[13.595946,48.877172],[13.031329,49.307068],[12.521024,49.547415],[12.415191,49.969121],[12.240111,50.266338],[12.966837,50.484076],[13.338132,50.733234],[14.056228,50.926918],[14.307013,51.117268],[14.570718,51.002339],[15.016996,51.106674],[15.490972,50.78473],[16.238627,50.697733],[16.176253,50.422607],[16.719476,50.215747],[16.868769,50.473974],[17.554567,50.362146],[17.649445,50.049038],[18.392914,49.988629],[18.853144,49.49623],[18.554971,49.495015],[18.399994,49.315001],[18.170498,49.271515],[18.104973,49.043983],[17.913512,48.996493],[17.886485,48.903475],[17.545007,48.800019],[17.101985,48.816969],[16.960288,48.596982]]]},"id":"CZE"},
+{"type":"Feature","properties":{"name":"Germany"},"geometry":{"type":"Polygon","coordinates":[[[9.921906,54.983104],[9.93958,54.596642],[10.950112,54.363607],[10.939467,54.008693],[11.956252,54.196486],[12.51844,54.470371],[13.647467,54.075511],[14.119686,53.757029],[14.353315,53.248171],[14.074521,52.981263],[14.4376,52.62485],[14.685026,52.089947],[14.607098,51.745188],[15.016996,51.106674],[14.570718,51.002339],[14.307013,51.117268],[14.056228,50.926918],[13.338132,50.733234],[12.966837,50.484076],[12.240111,50.266338],[12.415191,49.969121],[12.521024,49.547415],[13.031329,49.307068],[13.595946,48.877172],[13.243357,48.416115],[12.884103,48.289146],[13.025851,47.637584],[12.932627,47.467646],[12.62076,47.672388],[12.141357,47.703083],[11.426414,47.523766],[10.544504,47.566399],[10.402084,47.302488],[9.896068,47.580197],[9.594226,47.525058],[8.522612,47.830828],[8.317301,47.61358],[7.466759,47.620582],[7.593676,48.333019],[8.099279,49.017784],[6.65823,49.201958],[6.18632,49.463803],[6.242751,49.902226],[6.043073,50.128052],[6.156658,50.803721],[5.988658,51.851616],[6.589397,51.852029],[6.84287,52.22844],[7.092053,53.144043],[6.90514,53.482162],[7.100425,53.693932],[7.936239,53.748296],[8.121706,53.527792],[8.800734,54.020786],[8.572118,54.395646],[8.526229,54.962744],[9.282049,54.830865],[9.921906,54.983104]]]},"id":"DEU"},
+{"type":"Feature","properties":{"name":"Djibouti"},"geometry":{"type":"Polygon","coordinates":[[[43.081226,12.699639],[43.317852,12.390148],[43.286381,11.974928],[42.715874,11.735641],[43.145305,11.46204],[42.776852,10.926879],[42.55493,11.10511],[42.31414,11.0342],[41.75557,11.05091],[41.73959,11.35511],[41.66176,11.6312],[42,12.1],[42.35156,12.54223],[42.779642,12.455416],[43.081226,12.699639]]]},"id":"DJI"},
+{"type":"Feature","properties":{"name":"Denmark"},"geometry":{"type":"MultiPolygon","coordinates":[[[[12.690006,55.609991],[12.089991,54.800015],[11.043543,55.364864],[10.903914,55.779955],[12.370904,56.111407],[12.690006,55.609991]]],[[[10.912182,56.458621],[10.667804,56.081383],[10.369993,56.190007],[9.649985,55.469999],[9.921906,54.983104],[9.282049,54.830865],[8.526229,54.962744],[8.120311,55.517723],[8.089977,56.540012],[8.256582,56.809969],[8.543438,57.110003],[9.424469,57.172066],[9.775559,57.447941],[10.580006,57.730017],[10.546106,57.215733],[10.25,56.890016],[10.369993,56.609982],[10.912182,56.458621]]]]},"id":"DNK"},
+{"type":"Feature","properties":{"name":"Dominican Republic"},"geometry":{"type":"Polygon","coordinates":[[[-71.712361,19.714456],[-71.587304,19.884911],[-70.806706,19.880286],[-70.214365,19.622885],[-69.950815,19.648],[-69.76925,19.293267],[-69.222126,19.313214],[-69.254346,19.015196],[-68.809412,18.979074],[-68.317943,18.612198],[-68.689316,18.205142],[-69.164946,18.422648],[-69.623988,18.380713],[-69.952934,18.428307],[-70.133233,18.245915],[-70.517137,18.184291],[-70.669298,18.426886],[-70.99995,18.283329],[-71.40021,17.598564],[-71.657662,17.757573],[-71.708305,18.044997],[-71.687738,18.31666],[-71.945112,18.6169],[-71.701303,18.785417],[-71.624873,19.169838],[-71.712361,19.714456]]]},"id":"DOM"},
+{"type":"Feature","properties":{"name":"Algeria"},"geometry":{"type":"Polygon","coordinates":[[[11.999506,23.471668],[8.572893,21.565661],[5.677566,19.601207],[4.267419,19.155265],[3.158133,19.057364],[3.146661,19.693579],[2.683588,19.85623],[2.060991,20.142233],[1.823228,20.610809],[-1.550055,22.792666],[-4.923337,24.974574],[-8.6844,27.395744],[-8.665124,27.589479],[-8.66559,27.656426],[-8.674116,28.841289],[-7.059228,29.579228],[-6.060632,29.7317],[-5.242129,30.000443],[-4.859646,30.501188],[-3.690441,30.896952],[-3.647498,31.637294],[-3.06898,31.724498],[-2.616605,32.094346],[-1.307899,32.262889],[-1.124551,32.651522],[-1.388049,32.864015],[-1.733455,33.919713],[-1.792986,34.527919],[-2.169914,35.168396],[-1.208603,35.714849],[-0.127454,35.888662],[0.503877,36.301273],[1.466919,36.605647],[3.161699,36.783905],[4.815758,36.865037],[5.32012,36.716519],[6.26182,37.110655],[7.330385,37.118381],[7.737078,36.885708],[8.420964,36.946427],[8.217824,36.433177],[8.376368,35.479876],[8.140981,34.655146],[7.524482,34.097376],[7.612642,33.344115],[8.430473,32.748337],[8.439103,32.506285],[9.055603,32.102692],[9.48214,30.307556],[9.805634,29.424638],[9.859998,28.95999],[9.683885,28.144174],[9.756128,27.688259],[9.629056,27.140953],[9.716286,26.512206],[9.319411,26.094325],[9.910693,25.365455],[9.948261,24.936954],[10.303847,24.379313],[10.771364,24.562532],[11.560669,24.097909],[11.999506,23.471668]]]},"id":"DZA"},
+{"type":"Feature","properties":{"name":"Ecuador"},"geometry":{"type":"Polygon","coordinates":[[[-80.302561,-3.404856],[-79.770293,-2.657512],[-79.986559,-2.220794],[-80.368784,-2.685159],[-80.967765,-2.246943],[-80.764806,-1.965048],[-80.933659,-1.057455],[-80.58337,-0.906663],[-80.399325,-0.283703],[-80.020898,0.36034],[-80.09061,0.768429],[-79.542762,0.982938],[-78.855259,1.380924],[-77.855061,0.809925],[-77.668613,0.825893],[-77.424984,0.395687],[-76.57638,0.256936],[-76.292314,0.416047],[-75.801466,0.084801],[-75.373223,-0.152032],[-75.233723,-0.911417],[-75.544996,-1.56161],[-76.635394,-2.608678],[-77.837905,-3.003021],[-78.450684,-3.873097],[-78.639897,-4.547784],[-79.205289,-4.959129],[-79.624979,-4.454198],[-80.028908,-4.346091],[-80.442242,-4.425724],[-80.469295,-4.059287],[-80.184015,-3.821162],[-80.302561,-3.404856]]]},"id":"ECU"},
+{"type":"Feature","properties":{"name":"Egypt"},"geometry":{"type":"Polygon","coordinates":[[[34.9226,29.50133],[34.64174,29.09942],[34.42655,28.34399],[34.15451,27.8233],[33.92136,27.6487],[33.58811,27.97136],[33.13676,28.41765],[32.42323,29.85108],[32.32046,29.76043],[32.73482,28.70523],[33.34876,27.69989],[34.10455,26.14227],[34.47387,25.59856],[34.79507,25.03375],[35.69241,23.92671],[35.49372,23.75237],[35.52598,23.10244],[36.69069,22.20485],[36.86623,22],[32.9,22],[29.02,22],[25,22],[25,25.6825],[25,29.238655],[24.70007,30.04419],[24.95762,30.6616],[24.80287,31.08929],[25.16482,31.56915],[26.49533,31.58568],[27.45762,31.32126],[28.45048,31.02577],[28.91353,30.87005],[29.68342,31.18686],[30.09503,31.4734],[30.97693,31.55586],[31.68796,31.4296],[31.96041,30.9336],[32.19247,31.26034],[32.99392,31.02407],[33.7734,30.96746],[34.26544,31.21936],[34.9226,29.50133]]]},"id":"EGY"},
+{"type":"Feature","properties":{"name":"Eritrea"},"geometry":{"type":"Polygon","coordinates":[[[42.35156,12.54223],[42.00975,12.86582],[41.59856,13.45209],[41.155194,13.77332],[40.8966,14.11864],[40.026219,14.519579],[39.34061,14.53155],[39.0994,14.74064],[38.51295,14.50547],[37.90607,14.95943],[37.59377,14.2131],[36.42951,14.42211],[36.323189,14.822481],[36.75386,16.291874],[36.85253,16.95655],[37.16747,17.26314],[37.904,17.42754],[38.41009,17.998307],[38.990623,16.840626],[39.26611,15.922723],[39.814294,15.435647],[41.179275,14.49108],[41.734952,13.921037],[42.276831,13.343992],[42.589576,13.000421],[43.081226,12.699639],[42.779642,12.455416],[42.35156,12.54223]]]},"id":"ERI"},
+{"type":"Feature","properties":{"name":"Spain"},"geometry":{"type":"Polygon","coordinates":[[[-9.034818,41.880571],[-8.984433,42.592775],[-9.392884,43.026625],[-7.97819,43.748338],[-6.754492,43.567909],[-5.411886,43.57424],[-4.347843,43.403449],[-3.517532,43.455901],[-1.901351,43.422802],[-1.502771,43.034014],[0.338047,42.579546],[0.701591,42.795734],[1.826793,42.343385],[2.985999,42.473015],[3.039484,41.89212],[2.091842,41.226089],[0.810525,41.014732],[0.721331,40.678318],[0.106692,40.123934],[-0.278711,39.309978],[0.111291,38.738514],[-0.467124,38.292366],[-0.683389,37.642354],[-1.438382,37.443064],[-2.146453,36.674144],[-3.415781,36.6589],[-4.368901,36.677839],[-4.995219,36.324708],[-5.37716,35.94685],[-5.866432,36.029817],[-6.236694,36.367677],[-6.520191,36.942913],[-7.453726,37.097788],[-7.537105,37.428904],[-7.166508,37.803894],[-7.029281,38.075764],[-7.374092,38.373059],[-7.098037,39.030073],[-7.498632,39.629571],[-7.066592,39.711892],[-7.026413,40.184524],[-6.86402,40.330872],[-6.851127,41.111083],[-6.389088,41.381815],[-6.668606,41.883387],[-7.251309,41.918346],[-7.422513,41.792075],[-8.013175,41.790886],[-8.263857,42.280469],[-8.671946,42.134689],[-9.034818,41.880571]]]},"id":"ESP"},
+{"type":"Feature","properties":{"name":"Estonia"},"geometry":{"type":"Polygon","coordinates":[[[24.312863,57.793424],[24.428928,58.383413],[24.061198,58.257375],[23.42656,58.612753],[23.339795,59.18724],[24.604214,59.465854],[25.864189,59.61109],[26.949136,59.445803],[27.981114,59.475388],[28.131699,59.300825],[27.420166,58.724581],[27.716686,57.791899],[27.288185,57.474528],[26.463532,57.476389],[25.60281,57.847529],[25.164594,57.970157],[24.312863,57.793424]]]},"id":"EST"},
+{"type":"Feature","properties":{"name":"Ethiopia"},"geometry":{"type":"Polygon","coordinates":[[[37.90607,14.95943],[38.51295,14.50547],[39.0994,14.74064],[39.34061,14.53155],[40.02625,14.51959],[40.8966,14.11864],[41.1552,13.77333],[41.59856,13.45209],[42.00975,12.86582],[42.35156,12.54223],[42,12.1],[41.66176,11.6312],[41.73959,11.35511],[41.75557,11.05091],[42.31414,11.0342],[42.55493,11.10511],[42.776852,10.926879],[42.55876,10.57258],[42.92812,10.02194],[43.29699,9.54048],[43.67875,9.18358],[46.94834,7.99688],[47.78942,8.003],[44.9636,5.00162],[43.66087,4.95755],[42.76967,4.25259],[42.12861,4.23413],[41.855083,3.918912],[41.1718,3.91909],[40.76848,4.25702],[39.85494,3.83879],[39.559384,3.42206],[38.89251,3.50074],[38.67114,3.61607],[38.43697,3.58851],[38.120915,3.598605],[36.855093,4.447864],[36.159079,4.447864],[35.817448,4.776966],[35.817448,5.338232],[35.298007,5.506],[34.70702,6.59422],[34.25032,6.82607],[34.0751,7.22595],[33.56829,7.71334],[32.95418,7.78497],[33.2948,8.35458],[33.8255,8.37916],[33.97498,8.68456],[33.96162,9.58358],[34.25745,10.63009],[34.73115,10.91017],[34.83163,11.31896],[35.26049,12.08286],[35.86363,12.57828],[36.27022,13.56333],[36.42951,14.42211],[37.59377,14.2131],[37.90607,14.95943]]]},"id":"ETH"},
+{"type":"Feature","properties":{"name":"Finland"},"geometry":{"type":"Polygon","coordinates":[[[28.59193,69.064777],[28.445944,68.364613],[29.977426,67.698297],[29.054589,66.944286],[30.21765,65.80598],[29.54443,64.948672],[30.444685,64.204453],[30.035872,63.552814],[31.516092,62.867687],[31.139991,62.357693],[30.211107,61.780028],[28.069998,60.503517],[26.255173,60.423961],[24.496624,60.057316],[22.869695,59.846373],[22.290764,60.391921],[21.322244,60.72017],[21.544866,61.705329],[21.059211,62.607393],[21.536029,63.189735],[22.442744,63.81781],[24.730512,64.902344],[25.398068,65.111427],[25.294043,65.534346],[23.903379,66.006927],[23.56588,66.396051],[23.539473,67.936009],[21.978535,68.616846],[20.645593,69.106247],[21.244936,69.370443],[22.356238,68.841741],[23.66205,68.891247],[24.735679,68.649557],[25.689213,69.092114],[26.179622,69.825299],[27.732292,70.164193],[29.015573,69.766491],[28.59193,69.064777]]]},"id":"FIN"},
+{"type":"Feature","properties":{"name":"Fiji"},"geometry":{"type":"MultiPolygon","coordinates":[[[[178.3736,-17.33992],[178.71806,-17.62846],[178.55271,-18.15059],[177.93266,-18.28799],[177.38146,-18.16432],[177.28504,-17.72465],[177.67087,-17.38114],[178.12557,-17.50481],[178.3736,-17.33992]]],[[[179.364143,-16.801354],[178.725059,-17.012042],[178.596839,-16.63915],[179.096609,-16.433984],[179.413509,-16.379054],[180,-16.067133],[180,-16.555217],[179.364143,-16.801354]]],[[[-179.917369,-16.501783],[-180,-16.555217],[-180,-16.067133],[-179.79332,-16.020882],[-179.917369,-16.501783]]]]},"id":"FJI"},
+{"type":"Feature","properties":{"name":"Falkland Islands"},"geometry":{"type":"Polygon","coordinates":[[[-61.2,-51.85],[-60,-51.25],[-59.15,-51.5],[-58.55,-51.1],[-57.75,-51.55],[-58.05,-51.9],[-59.4,-52.2],[-59.85,-51.85],[-60.7,-52.3],[-61.2,-51.85]]]},"id":"FLK"},
+{"type":"Feature","properties":{"name":"France"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-52.556425,2.504705],[-52.939657,2.124858],[-53.418465,2.053389],[-53.554839,2.334897],[-53.778521,2.376703],[-54.088063,2.105557],[-54.524754,2.311849],[-54.27123,2.738748],[-54.184284,3.194172],[-54.011504,3.62257],[-54.399542,4.212611],[-54.478633,4.896756],[-53.958045,5.756548],[-53.618453,5.646529],[-52.882141,5.409851],[-51.823343,4.565768],[-51.657797,4.156232],[-52.249338,3.241094],[-52.556425,2.504705]]],[[[9.560016,42.152492],[9.229752,41.380007],[8.775723,41.583612],[8.544213,42.256517],[8.746009,42.628122],[9.390001,43.009985],[9.560016,42.152492]]],[[[3.588184,50.378992],[4.286023,49.907497],[4.799222,49.985373],[5.674052,49.529484],[5.897759,49.442667],[6.18632,49.463803],[6.65823,49.201958],[8.099279,49.017784],[7.593676,48.333019],[7.466759,47.620582],[7.192202,47.449766],[6.736571,47.541801],[6.768714,47.287708],[6.037389,46.725779],[6.022609,46.27299],[6.5001,46.429673],[6.843593,45.991147],[6.802355,45.70858],[7.096652,45.333099],[6.749955,45.028518],[7.007562,44.254767],[7.549596,44.127901],[7.435185,43.693845],[6.529245,43.128892],[4.556963,43.399651],[3.100411,43.075201],[2.985999,42.473015],[1.826793,42.343385],[0.701591,42.795734],[0.338047,42.579546],[-1.502771,43.034014],[-1.901351,43.422802],[-1.384225,44.02261],[-1.193798,46.014918],[-2.225724,47.064363],[-2.963276,47.570327],[-4.491555,47.954954],[-4.59235,48.68416],[-3.295814,48.901692],[-1.616511,48.644421],[-1.933494,49.776342],[-0.989469,49.347376],[1.338761,50.127173],[1.639001,50.946606],[2.513573,51.148506],[2.658422,50.796848],[3.123252,50.780363],[3.588184,50.378992]]]]},"id":"FRA"},
+{"type":"Feature","properties":{"name":"Gabon"},"geometry":{"type":"Polygon","coordinates":[[[11.093773,-3.978827],[10.066135,-2.969483],[9.405245,-2.144313],[8.797996,-1.111301],[8.830087,-0.779074],[9.04842,-0.459351],[9.291351,0.268666],[9.492889,1.01012],[9.830284,1.067894],[11.285079,1.057662],[11.276449,2.261051],[11.751665,2.326758],[12.35938,2.192812],[12.951334,2.321616],[13.075822,2.267097],[13.003114,1.830896],[13.282631,1.314184],[14.026669,1.395677],[14.276266,1.19693],[13.843321,0.038758],[14.316418,-0.552627],[14.425456,-1.333407],[14.29921,-1.998276],[13.992407,-2.470805],[13.109619,-2.42874],[12.575284,-1.948511],[12.495703,-2.391688],[11.820964,-2.514161],[11.478039,-2.765619],[11.855122,-3.426871],[11.093773,-3.978827]]]},"id":"GAB"},
+{"type":"Feature","properties":{"name":"United Kingdom"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-5.661949,54.554603],[-6.197885,53.867565],[-6.95373,54.073702],[-7.572168,54.059956],[-7.366031,54.595841],[-7.572168,55.131622],[-6.733847,55.17286],[-5.661949,54.554603]]],[[[-3.005005,58.635],[-4.073828,57.553025],[-3.055002,57.690019],[-1.959281,57.6848],[-2.219988,56.870017],[-3.119003,55.973793],[-2.085009,55.909998],[-2.005676,55.804903],[-1.114991,54.624986],[-0.430485,54.464376],[0.184981,53.325014],[0.469977,52.929999],[1.681531,52.73952],[1.559988,52.099998],[1.050562,51.806761],[1.449865,51.289428],[0.550334,50.765739],[-0.787517,50.774989],[-2.489998,50.500019],[-2.956274,50.69688],[-3.617448,50.228356],[-4.542508,50.341837],[-5.245023,49.96],[-5.776567,50.159678],[-4.30999,51.210001],[-3.414851,51.426009],[-3.422719,51.426848],[-4.984367,51.593466],[-5.267296,51.9914],[-4.222347,52.301356],[-4.770013,52.840005],[-4.579999,53.495004],[-3.093831,53.404547],[-3.09208,53.404441],[-2.945009,53.985],[-3.614701,54.600937],[-3.630005,54.615013],[-4.844169,54.790971],[-5.082527,55.061601],[-4.719112,55.508473],[-5.047981,55.783986],[-5.586398,55.311146],[-5.644999,56.275015],[-6.149981,56.78501],[-5.786825,57.818848],[-5.009999,58.630013],[-4.211495,58.550845],[-3.005005,58.635]]]]},"id":"GBR"},
+{"type":"Feature","properties":{"name":"Georgia"},"geometry":{"type":"Polygon","coordinates":[[[41.554084,41.535656],[41.703171,41.962943],[41.45347,42.645123],[40.875469,43.013628],[40.321394,43.128634],[39.955009,43.434998],[40.076965,43.553104],[40.922185,43.382159],[42.394395,43.220308],[43.756017,42.740828],[43.9312,42.554974],[44.537623,42.711993],[45.470279,42.502781],[45.77641,42.092444],[46.404951,41.860675],[46.145432,41.722802],[46.637908,41.181673],[46.501637,41.064445],[45.962601,41.123873],[45.217426,41.411452],[44.97248,41.248129],[43.582746,41.092143],[42.619549,41.583173],[41.554084,41.535656]]]},"id":"GEO"},
+{"type":"Feature","properties":{"name":"Ghana"},"geometry":{"type":"Polygon","coordinates":[[[1.060122,5.928837],[-0.507638,5.343473],[-1.063625,5.000548],[-1.964707,4.710462],[-2.856125,4.994476],[-2.810701,5.389051],[-3.24437,6.250472],[-2.983585,7.379705],[-2.56219,8.219628],[-2.827496,9.642461],[-2.963896,10.395335],[-2.940409,10.96269],[-1.203358,11.009819],[-0.761576,10.93693],[-0.438702,11.098341],[0.023803,11.018682],[-0.049785,10.706918],[0.36758,10.191213],[0.365901,9.465004],[0.461192,8.677223],[0.712029,8.312465],[0.490957,7.411744],[0.570384,6.914359],[0.836931,6.279979],[1.060122,5.928837]]]},"id":"GHA"},
+{"type":"Feature","properties":{"name":"Guinea"},"geometry":{"type":"Polygon","coordinates":[[[-8.439298,7.686043],[-8.722124,7.711674],[-8.926065,7.309037],[-9.208786,7.313921],[-9.403348,7.526905],[-9.33728,7.928534],[-9.755342,8.541055],[-10.016567,8.428504],[-10.230094,8.406206],[-10.505477,8.348896],[-10.494315,8.715541],[-10.65477,8.977178],[-10.622395,9.26791],[-10.839152,9.688246],[-11.117481,10.045873],[-11.917277,10.046984],[-12.150338,9.858572],[-12.425929,9.835834],[-12.596719,9.620188],[-12.711958,9.342712],[-13.24655,8.903049],[-13.685154,9.494744],[-14.074045,9.886167],[-14.330076,10.01572],[-14.579699,10.214467],[-14.693232,10.656301],[-14.839554,10.876572],[-15.130311,11.040412],[-14.685687,11.527824],[-14.382192,11.509272],[-14.121406,11.677117],[-13.9008,11.678719],[-13.743161,11.811269],[-13.828272,12.142644],[-13.718744,12.247186],[-13.700476,12.586183],[-13.217818,12.575874],[-12.499051,12.33209],[-12.278599,12.35444],[-12.203565,12.465648],[-11.658301,12.386583],[-11.513943,12.442988],[-11.456169,12.076834],[-11.297574,12.077971],[-11.036556,12.211245],[-10.87083,12.177887],[-10.593224,11.923975],[-10.165214,11.844084],[-9.890993,12.060479],[-9.567912,12.194243],[-9.327616,12.334286],[-9.127474,12.30806],[-8.905265,12.088358],[-8.786099,11.812561],[-8.376305,11.393646],[-8.581305,11.136246],[-8.620321,10.810891],[-8.407311,10.909257],[-8.282357,10.792597],[-8.335377,10.494812],[-8.029944,10.206535],[-8.229337,10.12902],[-8.309616,9.789532],[-8.079114,9.376224],[-7.8321,8.575704],[-8.203499,8.455453],[-8.299049,8.316444],[-8.221792,8.123329],[-8.280703,7.68718],[-8.439298,7.686043]]]},"id":"GIN"},
+{"type":"Feature","properties":{"name":"Gambia"},"geometry":{"type":"Polygon","coordinates":[[[-16.841525,13.151394],[-16.713729,13.594959],[-15.624596,13.623587],[-15.39877,13.860369],[-15.081735,13.876492],[-14.687031,13.630357],[-14.376714,13.62568],[-14.046992,13.794068],[-13.844963,13.505042],[-14.277702,13.280585],[-14.712197,13.298207],[-15.141163,13.509512],[-15.511813,13.27857],[-15.691001,13.270353],[-15.931296,13.130284],[-16.841525,13.151394]]]},"id":"GMB"},
+{"type":"Feature","properties":{"name":"Guinea Bissau"},"geometry":{"type":"Polygon","coordinates":[[[-15.130311,11.040412],[-15.66418,11.458474],[-16.085214,11.524594],[-16.314787,11.806515],[-16.308947,11.958702],[-16.613838,12.170911],[-16.677452,12.384852],[-16.147717,12.547762],[-15.816574,12.515567],[-15.548477,12.62817],[-13.700476,12.586183],[-13.718744,12.247186],[-13.828272,12.142644],[-13.743161,11.811269],[-13.9008,11.678719],[-14.121406,11.677117],[-14.382192,11.509272],[-14.685687,11.527824],[-15.130311,11.040412]]]},"id":"GNB"},
+{"type":"Feature","properties":{"name":"Equatorial Guinea"},"geometry":{"type":"Polygon","coordinates":[[[9.492889,1.01012],[9.305613,1.160911],[9.649158,2.283866],[11.276449,2.261051],[11.285079,1.057662],[9.830284,1.067894],[9.492889,1.01012]]]},"id":"GNQ"},
+{"type":"Feature","properties":{"name":"Greece"},"geometry":{"type":"MultiPolygon","coordinates":[[[[23.69998,35.705004],[24.246665,35.368022],[25.025015,35.424996],[25.769208,35.354018],[25.745023,35.179998],[26.290003,35.29999],[26.164998,35.004995],[24.724982,34.919988],[24.735007,35.084991],[23.514978,35.279992],[23.69998,35.705004]]],[[[26.604196,41.562115],[26.294602,40.936261],[26.056942,40.824123],[25.447677,40.852545],[24.925848,40.947062],[23.714811,40.687129],[24.407999,40.124993],[23.899968,39.962006],[23.342999,39.960998],[22.813988,40.476005],[22.626299,40.256561],[22.849748,39.659311],[23.350027,39.190011],[22.973099,38.970903],[23.530016,38.510001],[24.025025,38.219993],[24.040011,37.655015],[23.115003,37.920011],[23.409972,37.409991],[22.774972,37.30501],[23.154225,36.422506],[22.490028,36.41],[21.670026,36.844986],[21.295011,37.644989],[21.120034,38.310323],[20.730032,38.769985],[20.217712,39.340235],[20.150016,39.624998],[20.615,40.110007],[20.674997,40.435],[20.99999,40.580004],[21.02004,40.842727],[21.674161,40.931275],[22.055378,41.149866],[22.597308,41.130487],[22.76177,41.3048],[22.952377,41.337994],[23.692074,41.309081],[24.492645,41.583896],[25.197201,41.234486],[26.106138,41.328899],[26.117042,41.826905],[26.604196,41.562115]]]]},"id":"GRC"},
+{"type":"Feature","properties":{"name":"Greenland"},"geometry":{"type":"Polygon","coordinates":[[[-46.76379,82.62796],[-43.40644,83.22516],[-39.89753,83.18018],[-38.62214,83.54905],[-35.08787,83.64513],[-27.10046,83.51966],[-20.84539,82.72669],[-22.69182,82.34165],[-26.51753,82.29765],[-31.9,82.2],[-31.39646,82.02154],[-27.85666,82.13178],[-24.84448,81.78697],[-22.90328,82.09317],[-22.07175,81.73449],[-23.16961,81.15271],[-20.62363,81.52462],[-15.76818,81.91245],[-12.77018,81.71885],[-12.20855,81.29154],[-16.28533,80.58004],[-16.85,80.35],[-20.04624,80.17708],[-17.73035,80.12912],[-18.9,79.4],[-19.70499,78.75128],[-19.67353,77.63859],[-18.47285,76.98565],[-20.03503,76.94434],[-21.67944,76.62795],[-19.83407,76.09808],[-19.59896,75.24838],[-20.66818,75.15585],[-19.37281,74.29561],[-21.59422,74.22382],[-20.43454,73.81713],[-20.76234,73.46436],[-22.17221,73.30955],[-23.56593,73.30663],[-22.31311,72.62928],[-22.29954,72.18409],[-24.27834,72.59788],[-24.79296,72.3302],[-23.44296,72.08016],[-22.13281,71.46898],[-21.75356,70.66369],[-23.53603,70.471],[-24.30702,70.85649],[-25.54341,71.43094],[-25.20135,70.75226],[-26.36276,70.22646],[-23.72742,70.18401],[-22.34902,70.12946],[-25.02927,69.2588],[-27.74737,68.47046],[-30.67371,68.12503],[-31.77665,68.12078],[-32.81105,67.73547],[-34.20196,66.67974],[-36.35284,65.9789],[-37.04378,65.93768],[-38.37505,65.69213],[-39.81222,65.45848],[-40.66899,64.83997],[-40.68281,64.13902],[-41.1887,63.48246],[-42.81938,62.68233],[-42.41666,61.90093],[-42.86619,61.07404],[-43.3784,60.09772],[-44.7875,60.03676],[-46.26364,60.85328],[-48.26294,60.85843],[-49.23308,61.40681],[-49.90039,62.38336],[-51.63325,63.62691],[-52.14014,64.27842],[-52.27659,65.1767],[-53.66166,66.09957],[-53.30161,66.8365],[-53.96911,67.18899],[-52.9804,68.35759],[-51.47536,68.72958],[-51.08041,69.14781],[-50.87122,69.9291],[-52.013585,69.574925],[-52.55792,69.42616],[-53.45629,69.283625],[-54.68336,69.61003],[-54.75001,70.28932],[-54.35884,70.821315],[-53.431315,70.835755],[-51.39014,70.56978],[-53.10937,71.20485],[-54.00422,71.54719],[-55,71.406537],[-55.83468,71.65444],[-54.71819,72.58625],[-55.32634,72.95861],[-56.12003,73.64977],[-57.32363,74.71026],[-58.59679,75.09861],[-58.58516,75.51727],[-61.26861,76.10238],[-63.39165,76.1752],[-66.06427,76.13486],[-68.50438,76.06141],[-69.66485,76.37975],[-71.40257,77.00857],[-68.77671,77.32312],[-66.76397,77.37595],[-71.04293,77.63595],[-73.297,78.04419],[-73.15938,78.43271],[-69.37345,78.91388],[-65.7107,79.39436],[-65.3239,79.75814],[-68.02298,80.11721],[-67.15129,80.51582],[-63.68925,81.21396],[-62.23444,81.3211],[-62.65116,81.77042],[-60.28249,82.03363],[-57.20744,82.19074],[-54.13442,82.19962],[-53.04328,81.88833],[-50.39061,82.43883],[-48.00386,82.06481],[-46.59984,81.985945],[-44.523,81.6607],[-46.9007,82.19979],[-46.76379,82.62796]]]},"id":"GRL"},
+{"type":"Feature","properties":{"name":"Guatemala"},"geometry":{"type":"Polygon","coordinates":[[[-90.095555,13.735338],[-90.608624,13.909771],[-91.23241,13.927832],[-91.689747,14.126218],[-92.22775,14.538829],[-92.20323,14.830103],[-92.087216,15.064585],[-92.229249,15.251447],[-91.74796,16.066565],[-90.464473,16.069562],[-90.438867,16.41011],[-90.600847,16.470778],[-90.711822,16.687483],[-91.08167,16.918477],[-91.453921,17.252177],[-91.002269,17.254658],[-91.00152,17.817595],[-90.067934,17.819326],[-89.14308,17.808319],[-89.150806,17.015577],[-89.229122,15.886938],[-88.930613,15.887273],[-88.604586,15.70638],[-88.518364,15.855389],[-88.225023,15.727722],[-88.68068,15.346247],[-89.154811,15.066419],[-89.22522,14.874286],[-89.145535,14.678019],[-89.353326,14.424133],[-89.587343,14.362586],[-89.534219,14.244816],[-89.721934,14.134228],[-90.064678,13.88197],[-90.095555,13.735338]]]},"id":"GTM"},
+{"type":"Feature","properties":{"name":"Guyana"},"geometry":{"type":"Polygon","coordinates":[[[-59.758285,8.367035],[-59.101684,7.999202],[-58.482962,7.347691],[-58.454876,6.832787],[-58.078103,6.809094],[-57.542219,6.321268],[-57.147436,5.97315],[-57.307246,5.073567],[-57.914289,4.812626],[-57.86021,4.576801],[-58.044694,4.060864],[-57.601569,3.334655],[-57.281433,3.333492],[-57.150098,2.768927],[-56.539386,1.899523],[-56.782704,1.863711],[-57.335823,1.948538],[-57.660971,1.682585],[-58.11345,1.507195],[-58.429477,1.463942],[-58.540013,1.268088],[-59.030862,1.317698],[-59.646044,1.786894],[-59.718546,2.24963],[-59.974525,2.755233],[-59.815413,3.606499],[-59.53804,3.958803],[-59.767406,4.423503],[-60.111002,4.574967],[-59.980959,5.014061],[-60.213683,5.244486],[-60.733574,5.200277],[-61.410303,5.959068],[-61.139415,6.234297],[-61.159336,6.696077],[-60.543999,6.856584],[-60.295668,7.043911],[-60.637973,7.415],[-60.550588,7.779603],[-59.758285,8.367035]]]},"id":"GUY"},
+{"type":"Feature","properties":{"name":"Honduras"},"geometry":{"type":"Polygon","coordinates":[[[-87.316654,12.984686],[-87.489409,13.297535],[-87.793111,13.38448],[-87.723503,13.78505],[-87.859515,13.893312],[-88.065343,13.964626],[-88.503998,13.845486],[-88.541231,13.980155],[-88.843073,14.140507],[-89.058512,14.340029],[-89.353326,14.424133],[-89.145535,14.678019],[-89.22522,14.874286],[-89.154811,15.066419],[-88.68068,15.346247],[-88.225023,15.727722],[-88.121153,15.688655],[-87.901813,15.864458],[-87.61568,15.878799],[-87.522921,15.797279],[-87.367762,15.84694],[-86.903191,15.756713],[-86.440946,15.782835],[-86.119234,15.893449],[-86.001954,16.005406],[-85.683317,15.953652],[-85.444004,15.885749],[-85.182444,15.909158],[-84.983722,15.995923],[-84.52698,15.857224],[-84.368256,15.835158],[-84.063055,15.648244],[-83.773977,15.424072],[-83.410381,15.270903],[-83.147219,14.995829],[-83.489989,15.016267],[-83.628585,14.880074],[-83.975721,14.749436],[-84.228342,14.748764],[-84.449336,14.621614],[-84.649582,14.666805],[-84.820037,14.819587],[-84.924501,14.790493],[-85.052787,14.551541],[-85.148751,14.560197],[-85.165365,14.35437],[-85.514413,14.079012],[-85.698665,13.960078],[-85.801295,13.836055],[-86.096264,14.038187],[-86.312142,13.771356],[-86.520708,13.778487],[-86.755087,13.754845],[-86.733822,13.263093],[-86.880557,13.254204],[-87.005769,13.025794],[-87.316654,12.984686]]]},"id":"HND"},
+{"type":"Feature","properties":{"name":"Croatia"},"geometry":{"type":"Polygon","coordinates":[[[18.829838,45.908878],[19.072769,45.521511],[19.390476,45.236516],[19.005486,44.860234],[18.553214,45.08159],[17.861783,45.06774],[17.002146,45.233777],[16.534939,45.211608],[16.318157,45.004127],[15.959367,45.233777],[15.750026,44.818712],[16.23966,44.351143],[16.456443,44.04124],[16.916156,43.667722],[17.297373,43.446341],[17.674922,43.028563],[18.56,42.65],[18.450016,42.479991],[17.50997,42.849995],[16.930006,43.209998],[16.015385,43.507215],[15.174454,44.243191],[15.37625,44.317915],[14.920309,44.738484],[14.901602,45.07606],[14.258748,45.233777],[13.952255,44.802124],[13.656976,45.136935],[13.679403,45.484149],[13.71506,45.500324],[14.411968,45.466166],[14.595109,45.634941],[14.935244,45.471695],[15.327675,45.452316],[15.323954,45.731783],[15.67153,45.834154],[15.768733,46.238108],[16.564808,46.503751],[16.882515,46.380632],[17.630066,45.951769],[18.456062,45.759481],[18.829838,45.908878]]]},"id":"HRV"},
+{"type":"Feature","properties":{"name":"Haiti"},"geometry":{"type":"Polygon","coordinates":[[[-73.189791,19.915684],[-72.579673,19.871501],[-71.712361,19.714456],[-71.624873,19.169838],[-71.701303,18.785417],[-71.945112,18.6169],[-71.687738,18.31666],[-71.708305,18.044997],[-72.372476,18.214961],[-72.844411,18.145611],[-73.454555,18.217906],[-73.922433,18.030993],[-74.458034,18.34255],[-74.369925,18.664908],[-73.449542,18.526053],[-72.694937,18.445799],[-72.334882,18.668422],[-72.79165,19.101625],[-72.784105,19.483591],[-73.415022,19.639551],[-73.189791,19.915684]]]},"id":"HTI"},
+{"type":"Feature","properties":{"name":"Hungary"},"geometry":{"type":"Polygon","coordinates":[[[16.202298,46.852386],[16.534268,47.496171],[16.340584,47.712902],[16.903754,47.714866],[16.979667,48.123497],[17.488473,47.867466],[17.857133,47.758429],[18.696513,47.880954],[18.777025,48.081768],[19.174365,48.111379],[19.661364,48.266615],[19.769471,48.202691],[20.239054,48.327567],[20.473562,48.56285],[20.801294,48.623854],[21.872236,48.319971],[22.085608,48.422264],[22.64082,48.15024],[22.710531,47.882194],[22.099768,47.672439],[21.626515,46.994238],[21.021952,46.316088],[20.220192,46.127469],[19.596045,46.17173],[18.829838,45.908878],[18.456062,45.759481],[17.630066,45.951769],[16.882515,46.380632],[16.564808,46.503751],[16.370505,46.841327],[16.202298,46.852386]]]},"id":"HUN"},
+{"type":"Feature","properties":{"name":"Indonesia"},"geometry":{"type":"MultiPolygon","coordinates":[[[[120.715609,-10.239581],[120.295014,-10.25865],[118.967808,-9.557969],[119.90031,-9.36134],[120.425756,-9.665921],[120.775502,-9.969675],[120.715609,-10.239581]]],[[[124.43595,-10.140001],[123.579982,-10.359987],[123.459989,-10.239995],[123.550009,-9.900016],[123.980009,-9.290027],[124.968682,-8.89279],[125.07002,-9.089987],[125.08852,-9.393173],[124.43595,-10.140001]]],[[[117.900018,-8.095681],[118.260616,-8.362383],[118.87846,-8.280683],[119.126507,-8.705825],[117.970402,-8.906639],[117.277731,-9.040895],[116.740141,-9.032937],[117.083737,-8.457158],[117.632024,-8.449303],[117.900018,-8.095681]]],[[[122.903537,-8.094234],[122.756983,-8.649808],[121.254491,-8.933666],[119.924391,-8.810418],[119.920929,-8.444859],[120.715092,-8.236965],[121.341669,-8.53674],[122.007365,-8.46062],[122.903537,-8.094234]]],[[[108.623479,-6.777674],[110.539227,-6.877358],[110.759576,-6.465186],[112.614811,-6.946036],[112.978768,-7.594213],[114.478935,-7.776528],[115.705527,-8.370807],[114.564511,-8.751817],[113.464734,-8.348947],[112.559672,-8.376181],[111.522061,-8.302129],[110.58615,-8.122605],[109.427667,-7.740664],[108.693655,-7.6416],[108.277763,-7.766657],[106.454102,-7.3549],[106.280624,-6.9249],[105.365486,-6.851416],[106.051646,-5.895919],[107.265009,-5.954985],[108.072091,-6.345762],[108.486846,-6.421985],[108.623479,-6.777674]]],[[[134.724624,-6.214401],[134.210134,-6.895238],[134.112776,-6.142467],[134.290336,-5.783058],[134.499625,-5.445042],[134.727002,-5.737582],[134.724624,-6.214401]]],[[[127.249215,-3.459065],[126.874923,-3.790983],[126.183802,-3.607376],[125.989034,-3.177273],[127.000651,-3.129318],[127.249215,-3.459065]]],[[[130.471344,-3.093764],[130.834836,-3.858472],[129.990547,-3.446301],[129.155249,-3.362637],[128.590684,-3.428679],[127.898891,-3.393436],[128.135879,-2.84365],[129.370998,-2.802154],[130.471344,-3.093764]]],[[[134.143368,-1.151867],[134.422627,-2.769185],[135.457603,-3.367753],[136.293314,-2.307042],[137.440738,-1.703513],[138.329727,-1.702686],[139.184921,-2.051296],[139.926684,-2.409052],[141.00021,-2.600151],[141.017057,-5.859022],[141.033852,-9.117893],[140.143415,-8.297168],[139.127767,-8.096043],[138.881477,-8.380935],[137.614474,-8.411683],[138.039099,-7.597882],[138.668621,-7.320225],[138.407914,-6.232849],[137.92784,-5.393366],[135.98925,-4.546544],[135.164598,-4.462931],[133.66288,-3.538853],[133.367705,-4.024819],[132.983956,-4.112979],[132.756941,-3.746283],[132.753789,-3.311787],[131.989804,-2.820551],[133.066845,-2.460418],[133.780031,-2.479848],[133.696212,-2.214542],[132.232373,-2.212526],[131.836222,-1.617162],[130.94284,-1.432522],[130.519558,-0.93772],[131.867538,-0.695461],[132.380116,-0.369538],[133.985548,-0.78021],[134.143368,-1.151867]]],[[[125.240501,1.419836],[124.437035,0.427881],[123.685505,0.235593],[122.723083,0.431137],[121.056725,0.381217],[120.183083,0.237247],[120.04087,-0.519658],[120.935905,-1.408906],[121.475821,-0.955962],[123.340565,-0.615673],[123.258399,-1.076213],[122.822715,-0.930951],[122.38853,-1.516858],[121.508274,-1.904483],[122.454572,-3.186058],[122.271896,-3.5295],[123.170963,-4.683693],[123.162333,-5.340604],[122.628515,-5.634591],[122.236394,-5.282933],[122.719569,-4.464172],[121.738234,-4.851331],[121.489463,-4.574553],[121.619171,-4.188478],[120.898182,-3.602105],[120.972389,-2.627643],[120.305453,-2.931604],[120.390047,-4.097579],[120.430717,-5.528241],[119.796543,-5.6734],[119.366906,-5.379878],[119.653606,-4.459417],[119.498835,-3.494412],[119.078344,-3.487022],[118.767769,-2.801999],[119.180974,-2.147104],[119.323394,-1.353147],[119.825999,0.154254],[120.035702,0.566477],[120.885779,1.309223],[121.666817,1.013944],[122.927567,0.875192],[124.077522,0.917102],[125.065989,1.643259],[125.240501,1.419836]]],[[[128.688249,1.132386],[128.635952,0.258486],[128.12017,0.356413],[127.968034,-0.252077],[128.379999,-0.780004],[128.100016,-0.899996],[127.696475,-0.266598],[127.39949,1.011722],[127.600512,1.810691],[127.932378,2.174596],[128.004156,1.628531],[128.594559,1.540811],[128.688249,1.132386]]],[[[117.875627,1.827641],[118.996747,0.902219],[117.811858,0.784242],[117.478339,0.102475],[117.521644,-0.803723],[116.560048,-1.487661],[116.533797,-2.483517],[116.148084,-4.012726],[116.000858,-3.657037],[114.864803,-4.106984],[114.468652,-3.495704],[113.755672,-3.43917],[113.256994,-3.118776],[112.068126,-3.478392],[111.703291,-2.994442],[111.04824,-3.049426],[110.223846,-2.934032],[110.070936,-1.592874],[109.571948,-1.314907],[109.091874,-0.459507],[108.952658,0.415375],[109.069136,1.341934],[109.66326,2.006467],[109.830227,1.338136],[110.514061,0.773131],[111.159138,0.976478],[111.797548,0.904441],[112.380252,1.410121],[112.859809,1.49779],[113.80585,1.217549],[114.621355,1.430688],[115.134037,2.821482],[115.519078,3.169238],[115.865517,4.306559],[117.015214,4.306094],[117.882035,4.137551],[117.313232,3.234428],[118.04833,2.28769],[117.875627,1.827641]]],[[[105.817655,-5.852356],[104.710384,-5.873285],[103.868213,-5.037315],[102.584261,-4.220259],[102.156173,-3.614146],[101.399113,-2.799777],[100.902503,-2.050262],[100.141981,-0.650348],[99.26374,0.183142],[98.970011,1.042882],[98.601351,1.823507],[97.699598,2.453184],[97.176942,3.308791],[96.424017,3.86886],[95.380876,4.970782],[95.293026,5.479821],[95.936863,5.439513],[97.484882,5.246321],[98.369169,4.26837],[99.142559,3.59035],[99.693998,3.174329],[100.641434,2.099381],[101.658012,2.083697],[102.498271,1.3987],[103.07684,0.561361],[103.838396,0.104542],[103.437645,-0.711946],[104.010789,-1.059212],[104.369991,-1.084843],[104.53949,-1.782372],[104.887893,-2.340425],[105.622111,-2.428844],[106.108593,-3.061777],[105.857446,-4.305525],[105.817655,-5.852356]]]]},"id":"IDN"},
+{"type":"Feature","properties":{"name":"India"},"geometry":{"type":"Polygon","coordinates":[[[77.837451,35.49401],[78.912269,34.321936],[78.811086,33.506198],[79.208892,32.994395],[79.176129,32.48378],[78.458446,32.618164],[78.738894,31.515906],[79.721367,30.882715],[81.111256,30.183481],[80.476721,29.729865],[80.088425,28.79447],[81.057203,28.416095],[81.999987,27.925479],[83.304249,27.364506],[84.675018,27.234901],[85.251779,26.726198],[86.024393,26.630985],[87.227472,26.397898],[88.060238,26.414615],[88.174804,26.810405],[88.043133,27.445819],[88.120441,27.876542],[88.730326,28.086865],[88.814248,27.299316],[88.835643,27.098966],[89.744528,26.719403],[90.373275,26.875724],[91.217513,26.808648],[92.033484,26.83831],[92.103712,27.452614],[91.696657,27.771742],[92.503119,27.896876],[93.413348,28.640629],[94.56599,29.277438],[95.404802,29.031717],[96.117679,29.452802],[96.586591,28.83098],[96.248833,28.411031],[97.327114,28.261583],[97.402561,27.882536],[97.051989,27.699059],[97.133999,27.083774],[96.419366,27.264589],[95.124768,26.573572],[95.155153,26.001307],[94.603249,25.162495],[94.552658,24.675238],[94.106742,23.850741],[93.325188,24.078556],[93.286327,23.043658],[93.060294,22.703111],[93.166128,22.27846],[92.672721,22.041239],[92.146035,23.627499],[91.869928,23.624346],[91.706475,22.985264],[91.158963,23.503527],[91.46773,24.072639],[91.915093,24.130414],[92.376202,24.976693],[91.799596,25.147432],[90.872211,25.132601],[89.920693,25.26975],[89.832481,25.965082],[89.355094,26.014407],[88.563049,26.446526],[88.209789,25.768066],[88.931554,25.238692],[88.306373,24.866079],[88.084422,24.501657],[88.69994,24.233715],[88.52977,23.631142],[88.876312,22.879146],[89.031961,22.055708],[88.888766,21.690588],[88.208497,21.703172],[86.975704,21.495562],[87.033169,20.743308],[86.499351,20.151638],[85.060266,19.478579],[83.941006,18.30201],[83.189217,17.671221],[82.192792,17.016636],[82.191242,16.556664],[81.692719,16.310219],[80.791999,15.951972],[80.324896,15.899185],[80.025069,15.136415],[80.233274,13.835771],[80.286294,13.006261],[79.862547,12.056215],[79.857999,10.357275],[79.340512,10.308854],[78.885345,9.546136],[79.18972,9.216544],[78.277941,8.933047],[77.941165,8.252959],[77.539898,7.965535],[76.592979,8.899276],[76.130061,10.29963],[75.746467,11.308251],[75.396101,11.781245],[74.864816,12.741936],[74.616717,13.992583],[74.443859,14.617222],[73.534199,15.990652],[73.119909,17.92857],[72.820909,19.208234],[72.824475,20.419503],[72.630533,21.356009],[71.175273,20.757441],[70.470459,20.877331],[69.16413,22.089298],[69.644928,22.450775],[69.349597,22.84318],[68.176645,23.691965],[68.842599,24.359134],[71.04324,24.356524],[70.844699,25.215102],[70.282873,25.722229],[70.168927,26.491872],[69.514393,26.940966],[70.616496,27.989196],[71.777666,27.91318],[72.823752,28.961592],[73.450638,29.976413],[74.42138,30.979815],[74.405929,31.692639],[75.258642,32.271105],[74.451559,32.7649],[74.104294,33.441473],[73.749948,34.317699],[74.240203,34.748887],[75.757061,34.504923],[76.871722,34.653544],[77.837451,35.49401]]]},"id":"IND"},
+{"type":"Feature","properties":{"name":"Ireland"},"geometry":{"type":"Polygon","coordinates":[[[-6.197885,53.867565],[-6.032985,53.153164],[-6.788857,52.260118],[-8.561617,51.669301],[-9.977086,51.820455],[-9.166283,52.864629],[-9.688525,53.881363],[-8.327987,54.664519],[-7.572168,55.131622],[-7.366031,54.595841],[-7.572168,54.059956],[-6.95373,54.073702],[-6.197885,53.867565]]]},"id":"IRL"},
+{"type":"Feature","properties":{"name":"Iran"},"geometry":{"type":"Polygon","coordinates":[[[53.921598,37.198918],[54.800304,37.392421],[55.511578,37.964117],[56.180375,37.935127],[56.619366,38.121394],[57.330434,38.029229],[58.436154,37.522309],[59.234762,37.412988],[60.377638,36.527383],[61.123071,36.491597],[61.210817,35.650072],[60.803193,34.404102],[60.52843,33.676446],[60.9637,33.528832],[60.536078,32.981269],[60.863655,32.18292],[60.941945,31.548075],[61.699314,31.379506],[61.781222,30.73585],[60.874248,29.829239],[61.369309,29.303276],[61.771868,28.699334],[62.72783,28.259645],[62.755426,27.378923],[63.233898,27.217047],[63.316632,26.756532],[61.874187,26.239975],[61.497363,25.078237],[59.616134,25.380157],[58.525761,25.609962],[57.397251,25.739902],[56.970766,26.966106],[56.492139,27.143305],[55.72371,26.964633],[54.71509,26.480658],[53.493097,26.812369],[52.483598,27.580849],[51.520763,27.86569],[50.852948,28.814521],[50.115009,30.147773],[49.57685,29.985715],[48.941333,30.31709],[48.567971,29.926778],[48.014568,30.452457],[48.004698,30.985137],[47.685286,30.984853],[47.849204,31.709176],[47.334661,32.469155],[46.109362,33.017287],[45.416691,33.967798],[45.64846,34.748138],[46.151788,35.093259],[46.07634,35.677383],[45.420618,35.977546],[44.77267,37.17045],[44.225756,37.971584],[44.421403,38.281281],[44.109225,39.428136],[44.79399,39.713003],[44.952688,39.335765],[45.457722,38.874139],[46.143623,38.741201],[46.50572,38.770605],[47.685079,39.508364],[48.060095,39.582235],[48.355529,39.288765],[48.010744,38.794015],[48.634375,38.270378],[48.883249,38.320245],[49.199612,37.582874],[50.147771,37.374567],[50.842354,36.872814],[52.264025,36.700422],[53.82579,36.965031],[53.921598,37.198918]]]},"id":"IRN"},
+{"type":"Feature","properties":{"name":"Iraq"},"geometry":{"type":"Polygon","coordinates":[[[45.420618,35.977546],[46.07634,35.677383],[46.151788,35.093259],[45.64846,34.748138],[45.416691,33.967798],[46.109362,33.017287],[47.334661,32.469155],[47.849204,31.709176],[47.685286,30.984853],[48.004698,30.985137],[48.014568,30.452457],[48.567971,29.926778],[47.974519,29.975819],[47.302622,30.05907],[46.568713,29.099025],[44.709499,29.178891],[41.889981,31.190009],[40.399994,31.889992],[39.195468,32.161009],[38.792341,33.378686],[41.006159,34.419372],[41.383965,35.628317],[41.289707,36.358815],[41.837064,36.605854],[42.349591,37.229873],[42.779126,37.385264],[43.942259,37.256228],[44.293452,37.001514],[44.772699,37.170445],[45.420618,35.977546]]]},"id":"IRQ"},
+{"type":"Feature","properties":{"name":"Iceland"},"geometry":{"type":"Polygon","coordinates":[[[-14.508695,66.455892],[-14.739637,65.808748],[-13.609732,65.126671],[-14.909834,64.364082],[-17.794438,63.678749],[-18.656246,63.496383],[-19.972755,63.643635],[-22.762972,63.960179],[-21.778484,64.402116],[-23.955044,64.89113],[-22.184403,65.084968],[-22.227423,65.378594],[-24.326184,65.611189],[-23.650515,66.262519],[-22.134922,66.410469],[-20.576284,65.732112],[-19.056842,66.276601],[-17.798624,65.993853],[-16.167819,66.526792],[-14.508695,66.455892]]]},"id":"ISL"},
+{"type":"Feature","properties":{"name":"Israel"},"geometry":{"type":"Polygon","coordinates":[[[35.719918,32.709192],[35.545665,32.393992],[35.18393,32.532511],[34.974641,31.866582],[35.225892,31.754341],[34.970507,31.616778],[34.927408,31.353435],[35.397561,31.489086],[35.420918,31.100066],[34.922603,29.501326],[34.265433,31.219361],[34.556372,31.548824],[34.488107,31.605539],[34.752587,32.072926],[34.955417,32.827376],[35.098457,33.080539],[35.126053,33.0909],[35.460709,33.08904],[35.552797,33.264275],[35.821101,33.277426],[35.836397,32.868123],[35.700798,32.716014],[35.719918,32.709192]]]},"id":"ISR"},
+{"type":"Feature","properties":{"name":"Italy"},"geometry":{"type":"MultiPolygon","coordinates":[[[[15.520376,38.231155],[15.160243,37.444046],[15.309898,37.134219],[15.099988,36.619987],[14.335229,36.996631],[13.826733,37.104531],[12.431004,37.61295],[12.570944,38.126381],[13.741156,38.034966],[14.761249,38.143874],[15.520376,38.231155]]],[[[9.210012,41.209991],[9.809975,40.500009],[9.669519,39.177376],[9.214818,39.240473],[8.806936,38.906618],[8.428302,39.171847],[8.388253,40.378311],[8.159998,40.950007],[8.709991,40.899984],[9.210012,41.209991]]],[[[12.376485,46.767559],[13.806475,46.509306],[13.69811,46.016778],[13.93763,45.591016],[13.141606,45.736692],[12.328581,45.381778],[12.383875,44.885374],[12.261453,44.600482],[12.589237,44.091366],[13.526906,43.587727],[14.029821,42.761008],[15.14257,41.95514],[15.926191,41.961315],[16.169897,41.740295],[15.889346,41.541082],[16.785002,41.179606],[17.519169,40.877143],[18.376687,40.355625],[18.480247,40.168866],[18.293385,39.810774],[17.73838,40.277671],[16.869596,40.442235],[16.448743,39.795401],[17.17149,39.4247],[17.052841,38.902871],[16.635088,38.843572],[16.100961,37.985899],[15.684087,37.908849],[15.687963,38.214593],[15.891981,38.750942],[16.109332,38.964547],[15.718814,39.544072],[15.413613,40.048357],[14.998496,40.172949],[14.703268,40.60455],[14.060672,40.786348],[13.627985,41.188287],[12.888082,41.25309],[12.106683,41.704535],[11.191906,42.355425],[10.511948,42.931463],[10.200029,43.920007],[9.702488,44.036279],[8.888946,44.366336],[8.428561,44.231228],[7.850767,43.767148],[7.435185,43.693845],[7.549596,44.127901],[7.007562,44.254767],[6.749955,45.028518],[7.096652,45.333099],[6.802355,45.70858],[6.843593,45.991147],[7.273851,45.776948],[7.755992,45.82449],[8.31663,46.163642],[8.489952,46.005151],[8.966306,46.036932],[9.182882,46.440215],[9.922837,46.314899],[10.363378,46.483571],[10.442701,46.893546],[11.048556,46.751359],[11.164828,46.941579],[12.153088,47.115393],[12.376485,46.767559]]]]},"id":"ITA"},
+{"type":"Feature","properties":{"name":"Jamaica"},"geometry":{"type":"Polygon","coordinates":[[[-77.569601,18.490525],[-76.896619,18.400867],[-76.365359,18.160701],[-76.199659,17.886867],[-76.902561,17.868238],[-77.206341,17.701116],[-77.766023,17.861597],[-78.337719,18.225968],[-78.217727,18.454533],[-77.797365,18.524218],[-77.569601,18.490525]]]},"id":"JAM"},
+{"type":"Feature","properties":{"name":"Jordan"},"geometry":{"type":"Polygon","coordinates":[[[35.545665,32.393992],[35.719918,32.709192],[36.834062,32.312938],[38.792341,33.378686],[39.195468,32.161009],[39.004886,32.010217],[37.002166,31.508413],[37.998849,30.5085],[37.66812,30.338665],[37.503582,30.003776],[36.740528,29.865283],[36.501214,29.505254],[36.068941,29.197495],[34.956037,29.356555],[34.922603,29.501326],[35.420918,31.100066],[35.397561,31.489086],[35.545252,31.782505],[35.545665,32.393992]]]},"id":"JOR"},
+{"type":"Feature","properties":{"name":"Japan"},"geometry":{"type":"MultiPolygon","coordinates":[[[[134.638428,34.149234],[134.766379,33.806335],[134.203416,33.201178],[133.79295,33.521985],[133.280268,33.28957],[133.014858,32.704567],[132.363115,32.989382],[132.371176,33.463642],[132.924373,34.060299],[133.492968,33.944621],[133.904106,34.364931],[134.638428,34.149234]]],[[[140.976388,37.142074],[140.59977,36.343983],[140.774074,35.842877],[140.253279,35.138114],[138.975528,34.6676],[137.217599,34.606286],[135.792983,33.464805],[135.120983,33.849071],[135.079435,34.596545],[133.340316,34.375938],[132.156771,33.904933],[130.986145,33.885761],[132.000036,33.149992],[131.33279,31.450355],[130.686318,31.029579],[130.20242,31.418238],[130.447676,32.319475],[129.814692,32.61031],[129.408463,33.296056],[130.353935,33.604151],[130.878451,34.232743],[131.884229,34.749714],[132.617673,35.433393],[134.608301,35.731618],[135.677538,35.527134],[136.723831,37.304984],[137.390612,36.827391],[138.857602,37.827485],[139.426405,38.215962],[140.05479,39.438807],[139.883379,40.563312],[140.305783,41.195005],[141.368973,41.37856],[141.914263,39.991616],[141.884601,39.180865],[140.959489,38.174001],[140.976388,37.142074]]],[[[143.910162,44.1741],[144.613427,43.960883],[145.320825,44.384733],[145.543137,43.262088],[144.059662,42.988358],[143.18385,41.995215],[141.611491,42.678791],[141.067286,41.584594],[139.955106,41.569556],[139.817544,42.563759],[140.312087,43.333273],[141.380549,43.388825],[141.671952,44.772125],[141.967645,45.551483],[143.14287,44.510358],[143.910162,44.1741]]]]},"id":"JPN"},
+{"type":"Feature","properties":{"name":"Kazakhstan"},"geometry":{"type":"Polygon","coordinates":[[[70.962315,42.266154],[70.388965,42.081308],[69.070027,41.384244],[68.632483,40.668681],[68.259896,40.662325],[67.985856,41.135991],[66.714047,41.168444],[66.510649,41.987644],[66.023392,41.994646],[66.098012,42.99766],[64.900824,43.728081],[63.185787,43.650075],[62.0133,43.504477],[61.05832,44.405817],[60.239972,44.784037],[58.689989,45.500014],[58.503127,45.586804],[55.928917,44.995858],[55.968191,41.308642],[55.455251,41.259859],[54.755345,42.043971],[54.079418,42.324109],[52.944293,42.116034],[52.50246,41.783316],[52.446339,42.027151],[52.692112,42.443895],[52.501426,42.792298],[51.342427,43.132975],[50.891292,44.031034],[50.339129,44.284016],[50.305643,44.609836],[51.278503,44.514854],[51.316899,45.245998],[52.16739,45.408391],[53.040876,45.259047],[53.220866,46.234646],[53.042737,46.853006],[52.042023,46.804637],[51.191945,47.048705],[50.034083,46.60899],[49.10116,46.39933],[48.593241,46.561034],[48.694734,47.075628],[48.057253,47.743753],[47.315231,47.715847],[46.466446,48.394152],[47.043672,49.152039],[46.751596,49.356006],[47.54948,50.454698],[48.577841,49.87476],[48.702382,50.605128],[50.766648,51.692762],[52.328724,51.718652],[54.532878,51.02624],[55.716941,50.621717],[56.777961,51.043551],[58.363291,51.063653],[59.642282,50.545442],[59.932807,50.842194],[61.337424,50.79907],[61.588003,51.272659],[59.967534,51.96042],[60.927269,52.447548],[60.739993,52.719986],[61.699986,52.979996],[60.978066,53.664993],[61.436591,54.006265],[65.178534,54.354228],[65.666876,54.601267],[68.1691,54.970392],[69.068167,55.38525],[70.865267,55.169734],[71.180131,54.133285],[72.22415,54.376655],[73.508516,54.035617],[73.425679,53.48981],[74.384845,53.546861],[76.8911,54.490524],[76.525179,54.177003],[77.800916,53.404415],[80.03556,50.864751],[80.568447,51.388336],[81.945986,50.812196],[83.383004,51.069183],[83.935115,50.889246],[84.416377,50.3114],[85.11556,50.117303],[85.54127,49.692859],[86.829357,49.826675],[87.35997,49.214981],[86.598776,48.549182],[85.768233,48.455751],[85.720484,47.452969],[85.16429,47.000956],[83.180484,47.330031],[82.458926,45.53965],[81.947071,45.317027],[79.966106,44.917517],[80.866206,43.180362],[80.18015,42.920068],[80.25999,42.349999],[79.643645,42.496683],[79.142177,42.856092],[77.658392,42.960686],[76.000354,42.988022],[75.636965,42.8779],[74.212866,43.298339],[73.645304,43.091272],[73.489758,42.500894],[71.844638,42.845395],[71.186281,42.704293],[70.962315,42.266154]]]},"id":"KAZ"},
+{"type":"Feature","properties":{"name":"Kenya"},"geometry":{"type":"Polygon","coordinates":[[[40.993,-0.85829],[41.58513,-1.68325],[40.88477,-2.08255],[40.63785,-2.49979],[40.26304,-2.57309],[40.12119,-3.27768],[39.80006,-3.68116],[39.60489,-4.34653],[39.20222,-4.67677],[37.7669,-3.67712],[37.69869,-3.09699],[34.07262,-1.05982],[33.903711,-0.95],[33.893569,0.109814],[34.18,0.515],[34.6721,1.17694],[35.03599,1.90584],[34.59607,3.05374],[34.47913,3.5556],[34.005,4.249885],[34.620196,4.847123],[35.298007,5.506],[35.817448,5.338232],[35.817448,4.776966],[36.159079,4.447864],[36.855093,4.447864],[38.120915,3.598605],[38.43697,3.58851],[38.67114,3.61607],[38.89251,3.50074],[39.559384,3.42206],[39.85494,3.83879],[40.76848,4.25702],[41.1718,3.91909],[41.855083,3.918912],[40.98105,2.78452],[40.993,-0.85829]]]},"id":"KEN"},
+{"type":"Feature","properties":{"name":"Kyrgyzstan"},"geometry":{"type":"Polygon","coordinates":[[[70.962315,42.266154],[71.186281,42.704293],[71.844638,42.845395],[73.489758,42.500894],[73.645304,43.091272],[74.212866,43.298339],[75.636965,42.8779],[76.000354,42.988022],[77.658392,42.960686],[79.142177,42.856092],[79.643645,42.496683],[80.25999,42.349999],[80.11943,42.123941],[78.543661,41.582243],[78.187197,41.185316],[76.904484,41.066486],[76.526368,40.427946],[75.467828,40.562072],[74.776862,40.366425],[73.822244,39.893973],[73.960013,39.660008],[73.675379,39.431237],[71.784694,39.279463],[70.549162,39.604198],[69.464887,39.526683],[69.55961,40.103211],[70.648019,39.935754],[71.014198,40.244366],[71.774875,40.145844],[73.055417,40.866033],[71.870115,41.3929],[71.157859,41.143587],[70.420022,41.519998],[71.259248,42.167711],[70.962315,42.266154]]]},"id":"KGZ"},
+{"type":"Feature","properties":{"name":"Cambodia"},"geometry":{"type":"Polygon","coordinates":[[[103.49728,10.632555],[103.09069,11.153661],[102.584932,12.186595],[102.348099,13.394247],[102.988422,14.225721],[104.281418,14.416743],[105.218777,14.273212],[106.043946,13.881091],[106.496373,14.570584],[107.382727,14.202441],[107.614548,13.535531],[107.491403,12.337206],[105.810524,11.567615],[106.24967,10.961812],[105.199915,10.88931],[104.334335,10.486544],[103.49728,10.632555]]]},"id":"KHM"},
+{"type":"Feature","properties":{"name":"South Korea"},"geometry":{"type":"Polygon","coordinates":[[[128.349716,38.612243],[129.21292,37.432392],[129.46045,36.784189],[129.468304,35.632141],[129.091377,35.082484],[128.18585,34.890377],[127.386519,34.475674],[126.485748,34.390046],[126.37392,34.93456],[126.559231,35.684541],[126.117398,36.725485],[126.860143,36.893924],[126.174759,37.749686],[126.237339,37.840378],[126.68372,37.804773],[127.073309,38.256115],[127.780035,38.304536],[128.205746,38.370397],[128.349716,38.612243]]]},"id":"KOR"},
+{"type":"Feature","properties":{"name":"Kosovo"},"geometry":{"type":"Polygon","coordinates":[[[20.76216,42.05186],[20.71731,41.84711],[20.59023,41.85541],[20.52295,42.21787],[20.28374,42.32025],[20.0707,42.58863],[20.25758,42.81275],[20.49679,42.88469],[20.63508,43.21671],[20.81448,43.27205],[20.95651,43.13094],[21.143395,43.068685],[21.27421,42.90959],[21.43866,42.86255],[21.63302,42.67717],[21.77505,42.6827],[21.66292,42.43922],[21.54332,42.32025],[21.576636,42.245224],[21.3527,42.2068],[20.76216,42.05186]]]},"id":"-99"},
+{"type":"Feature","properties":{"name":"Kuwait"},"geometry":{"type":"Polygon","coordinates":[[[47.974519,29.975819],[48.183189,29.534477],[48.093943,29.306299],[48.416094,28.552004],[47.708851,28.526063],[47.459822,29.002519],[46.568713,29.099025],[47.302622,30.05907],[47.974519,29.975819]]]},"id":"KWT"},
+{"type":"Feature","properties":{"name":"Laos"},"geometry":{"type":"Polygon","coordinates":[[[105.218777,14.273212],[105.544338,14.723934],[105.589039,15.570316],[104.779321,16.441865],[104.716947,17.428859],[103.956477,18.240954],[103.200192,18.309632],[102.998706,17.961695],[102.413005,17.932782],[102.113592,18.109102],[101.059548,17.512497],[101.035931,18.408928],[101.282015,19.462585],[100.606294,19.508344],[100.548881,20.109238],[100.115988,20.41785],[100.329101,20.786122],[101.180005,21.436573],[101.270026,21.201652],[101.80312,21.174367],[101.652018,22.318199],[102.170436,22.464753],[102.754896,21.675137],[103.203861,20.766562],[104.435,20.758733],[104.822574,19.886642],[104.183388,19.624668],[103.896532,19.265181],[105.094598,18.666975],[105.925762,17.485315],[106.556008,16.604284],[107.312706,15.908538],[107.564525,15.202173],[107.382727,14.202441],[106.496373,14.570584],[106.043946,13.881091],[105.218777,14.273212]]]},"id":"LAO"},
+{"type":"Feature","properties":{"name":"Lebanon"},"geometry":{"type":"Polygon","coordinates":[[[35.821101,33.277426],[35.552797,33.264275],[35.460709,33.08904],[35.126053,33.0909],[35.482207,33.90545],[35.979592,34.610058],[35.998403,34.644914],[36.448194,34.593935],[36.61175,34.201789],[36.06646,33.824912],[35.821101,33.277426]]]},"id":"LBN"},
+{"type":"Feature","properties":{"name":"Liberia"},"geometry":{"type":"Polygon","coordinates":[[[-7.712159,4.364566],[-7.974107,4.355755],[-9.004794,4.832419],[-9.91342,5.593561],[-10.765384,6.140711],[-11.438779,6.785917],[-11.199802,7.105846],[-11.146704,7.396706],[-10.695595,7.939464],[-10.230094,8.406206],[-10.016567,8.428504],[-9.755342,8.541055],[-9.33728,7.928534],[-9.403348,7.526905],[-9.208786,7.313921],[-8.926065,7.309037],[-8.722124,7.711674],[-8.439298,7.686043],[-8.485446,7.395208],[-8.385452,6.911801],[-8.60288,6.467564],[-8.311348,6.193033],[-7.993693,6.12619],[-7.570153,5.707352],[-7.539715,5.313345],[-7.635368,5.188159],[-7.712159,4.364566]]]},"id":"LBR"},
+{"type":"Feature","properties":{"name":"Libya"},"geometry":{"type":"Polygon","coordinates":[[[14.8513,22.86295],[14.143871,22.491289],[13.581425,23.040506],[11.999506,23.471668],[11.560669,24.097909],[10.771364,24.562532],[10.303847,24.379313],[9.948261,24.936954],[9.910693,25.365455],[9.319411,26.094325],[9.716286,26.512206],[9.629056,27.140953],[9.756128,27.688259],[9.683885,28.144174],[9.859998,28.95999],[9.805634,29.424638],[9.48214,30.307556],[9.970017,30.539325],[10.056575,30.961831],[9.950225,31.37607],[10.636901,31.761421],[10.94479,32.081815],[11.432253,32.368903],[11.488787,33.136996],[12.66331,32.79278],[13.08326,32.87882],[13.91868,32.71196],[15.24563,32.26508],[15.71394,31.37626],[16.61162,31.18218],[18.02109,30.76357],[19.08641,30.26639],[19.57404,30.52582],[20.05335,30.98576],[19.82033,31.75179],[20.13397,32.2382],[20.85452,32.7068],[21.54298,32.8432],[22.89576,32.63858],[23.2368,32.19149],[23.60913,32.18726],[23.9275,32.01667],[24.92114,31.89936],[25.16482,31.56915],[24.80287,31.08929],[24.95762,30.6616],[24.70007,30.04419],[25,29.238655],[25,25.6825],[25,22],[25,20.00304],[23.85,20],[23.83766,19.58047],[19.84926,21.49509],[15.86085,23.40972],[14.8513,22.86295]]]},"id":"LBY"},
+{"type":"Feature","properties":{"name":"Sri Lanka"},"geometry":{"type":"Polygon","coordinates":[[[81.787959,7.523055],[81.637322,6.481775],[81.21802,6.197141],[80.348357,5.96837],[79.872469,6.763463],[79.695167,8.200843],[80.147801,9.824078],[80.838818,9.268427],[81.304319,8.564206],[81.787959,7.523055]]]},"id":"LKA"},
+{"type":"Feature","properties":{"name":"Lesotho"},"geometry":{"type":"Polygon","coordinates":[[[28.978263,-28.955597],[29.325166,-29.257387],[29.018415,-29.743766],[28.8484,-30.070051],[28.291069,-30.226217],[28.107205,-30.545732],[27.749397,-30.645106],[26.999262,-29.875954],[27.532511,-29.242711],[28.074338,-28.851469],[28.5417,-28.647502],[28.978263,-28.955597]]]},"id":"LSO"},
+{"type":"Feature","properties":{"name":"Lithuania"},"geometry":{"type":"Polygon","coordinates":[[[22.731099,54.327537],[22.651052,54.582741],[22.757764,54.856574],[22.315724,55.015299],[21.268449,55.190482],[21.0558,56.031076],[22.201157,56.337802],[23.878264,56.273671],[24.860684,56.372528],[25.000934,56.164531],[25.533047,56.100297],[26.494331,55.615107],[26.588279,55.167176],[25.768433,54.846963],[25.536354,54.282423],[24.450684,53.905702],[23.484128,53.912498],[23.243987,54.220567],[22.731099,54.327537]]]},"id":"LTU"},
+{"type":"Feature","properties":{"name":"Luxembourg"},"geometry":{"type":"Polygon","coordinates":[[[6.043073,50.128052],[6.242751,49.902226],[6.18632,49.463803],[5.897759,49.442667],[5.674052,49.529484],[5.782417,50.090328],[6.043073,50.128052]]]},"id":"LUX"},
+{"type":"Feature","properties":{"name":"Latvia"},"geometry":{"type":"Polygon","coordinates":[[[21.0558,56.031076],[21.090424,56.783873],[21.581866,57.411871],[22.524341,57.753374],[23.318453,57.006236],[24.12073,57.025693],[24.312863,57.793424],[25.164594,57.970157],[25.60281,57.847529],[26.463532,57.476389],[27.288185,57.474528],[27.770016,57.244258],[27.855282,56.759326],[28.176709,56.16913],[27.10246,55.783314],[26.494331,55.615107],[25.533047,56.100297],[25.000934,56.164531],[24.860684,56.372528],[23.878264,56.273671],[22.201157,56.337802],[21.0558,56.031076]]]},"id":"LVA"},
+{"type":"Feature","properties":{"name":"Morocco"},"geometry":{"type":"Polygon","coordinates":[[[-5.193863,35.755182],[-4.591006,35.330712],[-3.640057,35.399855],[-2.604306,35.179093],[-2.169914,35.168396],[-1.792986,34.527919],[-1.733455,33.919713],[-1.388049,32.864015],[-1.124551,32.651522],[-1.307899,32.262889],[-2.616605,32.094346],[-3.06898,31.724498],[-3.647498,31.637294],[-3.690441,30.896952],[-4.859646,30.501188],[-5.242129,30.000443],[-6.060632,29.7317],[-7.059228,29.579228],[-8.674116,28.841289],[-8.66559,27.656426],[-8.817809,27.656426],[-8.817828,27.656426],[-8.794884,27.120696],[-9.413037,27.088476],[-9.735343,26.860945],[-10.189424,26.860945],[-10.551263,26.990808],[-11.392555,26.883424],[-11.71822,26.104092],[-12.030759,26.030866],[-12.500963,24.770116],[-13.89111,23.691009],[-14.221168,22.310163],[-14.630833,21.86094],[-14.750955,21.5006],[-17.002962,21.420734],[-17.020428,21.42231],[-16.973248,21.885745],[-16.589137,22.158234],[-16.261922,22.67934],[-16.326414,23.017768],[-15.982611,23.723358],[-15.426004,24.359134],[-15.089332,24.520261],[-14.824645,25.103533],[-14.800926,25.636265],[-14.43994,26.254418],[-13.773805,26.618892],[-13.139942,27.640148],[-13.121613,27.654148],[-12.618837,28.038186],[-11.688919,28.148644],[-10.900957,28.832142],[-10.399592,29.098586],[-9.564811,29.933574],[-9.814718,31.177736],[-9.434793,32.038096],[-9.300693,32.564679],[-8.657476,33.240245],[-7.654178,33.697065],[-6.912544,34.110476],[-6.244342,35.145865],[-5.929994,35.759988],[-5.193863,35.755182]]]},"id":"MAR"},
+{"type":"Feature","properties":{"name":"Moldova"},"geometry":{"type":"Polygon","coordinates":[[[26.619337,48.220726],[26.857824,48.368211],[27.522537,48.467119],[28.259547,48.155562],[28.670891,48.118149],[29.122698,47.849095],[29.050868,47.510227],[29.415135,47.346645],[29.559674,46.928583],[29.908852,46.674361],[29.83821,46.525326],[30.024659,46.423937],[29.759972,46.349988],[29.170654,46.379262],[29.072107,46.517678],[28.862972,46.437889],[28.933717,46.25883],[28.659987,45.939987],[28.485269,45.596907],[28.233554,45.488283],[28.054443,45.944586],[28.160018,46.371563],[28.12803,46.810476],[27.551166,47.405117],[27.233873,47.826771],[26.924176,48.123264],[26.619337,48.220726]]]},"id":"MDA"},
+{"type":"Feature","properties":{"name":"Madagascar"},"geometry":{"type":"Polygon","coordinates":[[[49.543519,-12.469833],[49.808981,-12.895285],[50.056511,-13.555761],[50.217431,-14.758789],[50.476537,-15.226512],[50.377111,-15.706069],[50.200275,-16.000263],[49.860606,-15.414253],[49.672607,-15.710204],[49.863344,-16.451037],[49.774564,-16.875042],[49.498612,-17.106036],[49.435619,-17.953064],[49.041792,-19.118781],[48.548541,-20.496888],[47.930749,-22.391501],[47.547723,-23.781959],[47.095761,-24.94163],[46.282478,-25.178463],[45.409508,-25.601434],[44.833574,-25.346101],[44.03972,-24.988345],[43.763768,-24.460677],[43.697778,-23.574116],[43.345654,-22.776904],[43.254187,-22.057413],[43.433298,-21.336475],[43.893683,-21.163307],[43.89637,-20.830459],[44.374325,-20.072366],[44.464397,-19.435454],[44.232422,-18.961995],[44.042976,-18.331387],[43.963084,-17.409945],[44.312469,-16.850496],[44.446517,-16.216219],[44.944937,-16.179374],[45.502732,-15.974373],[45.872994,-15.793454],[46.312243,-15.780018],[46.882183,-15.210182],[47.70513,-14.594303],[48.005215,-14.091233],[47.869047,-13.663869],[48.293828,-13.784068],[48.84506,-13.089175],[48.863509,-12.487868],[49.194651,-12.040557],[49.543519,-12.469833]]]},"id":"MDG"},
+{"type":"Feature","properties":{"name":"Mexico"},"geometry":{"type":"Polygon","coordinates":[[[-97.140008,25.869997],[-97.528072,24.992144],[-97.702946,24.272343],[-97.776042,22.93258],[-97.872367,22.444212],[-97.699044,21.898689],[-97.38896,21.411019],[-97.189333,20.635433],[-96.525576,19.890931],[-96.292127,19.320371],[-95.900885,18.828024],[-94.839063,18.562717],[-94.42573,18.144371],[-93.548651,18.423837],[-92.786114,18.524839],[-92.037348,18.704569],[-91.407903,18.876083],[-90.77187,19.28412],[-90.53359,19.867418],[-90.451476,20.707522],[-90.278618,20.999855],[-89.601321,21.261726],[-88.543866,21.493675],[-87.658417,21.458846],[-87.05189,21.543543],[-86.811982,21.331515],[-86.845908,20.849865],[-87.383291,20.255405],[-87.621054,19.646553],[-87.43675,19.472403],[-87.58656,19.04013],[-87.837191,18.259816],[-88.090664,18.516648],[-88.300031,18.499982],[-88.490123,18.486831],[-88.848344,17.883198],[-89.029857,18.001511],[-89.150909,17.955468],[-89.14308,17.808319],[-90.067934,17.819326],[-91.00152,17.817595],[-91.002269,17.254658],[-91.453921,17.252177],[-91.08167,16.918477],[-90.711822,16.687483],[-90.600847,16.470778],[-90.438867,16.41011],[-90.464473,16.069562],[-91.74796,16.066565],[-92.229249,15.251447],[-92.087216,15.064585],[-92.20323,14.830103],[-92.22775,14.538829],[-93.359464,15.61543],[-93.875169,15.940164],[-94.691656,16.200975],[-95.250227,16.128318],[-96.053382,15.752088],[-96.557434,15.653515],[-97.263592,15.917065],[-98.01303,16.107312],[-98.947676,16.566043],[-99.697397,16.706164],[-100.829499,17.171071],[-101.666089,17.649026],[-101.918528,17.91609],[-102.478132,17.975751],[-103.50099,18.292295],[-103.917527,18.748572],[-104.99201,19.316134],[-105.493038,19.946767],[-105.731396,20.434102],[-105.397773,20.531719],[-105.500661,20.816895],[-105.270752,21.076285],[-105.265817,21.422104],[-105.603161,21.871146],[-105.693414,22.26908],[-106.028716,22.773752],[-106.90998,23.767774],[-107.915449,24.548915],[-108.401905,25.172314],[-109.260199,25.580609],[-109.444089,25.824884],[-109.291644,26.442934],[-109.801458,26.676176],[-110.391732,27.162115],[-110.641019,27.859876],[-111.178919,27.941241],[-111.759607,28.467953],[-112.228235,28.954409],[-112.271824,29.266844],[-112.809594,30.021114],[-113.163811,30.786881],[-113.148669,31.170966],[-113.871881,31.567608],[-114.205737,31.524045],[-114.776451,31.799532],[-114.9367,31.393485],[-114.771232,30.913617],[-114.673899,30.162681],[-114.330974,29.750432],[-113.588875,29.061611],[-113.424053,28.826174],[-113.271969,28.754783],[-113.140039,28.411289],[-112.962298,28.42519],[-112.761587,27.780217],[-112.457911,27.525814],[-112.244952,27.171727],[-111.616489,26.662817],[-111.284675,25.73259],[-110.987819,25.294606],[-110.710007,24.826004],[-110.655049,24.298595],[-110.172856,24.265548],[-109.771847,23.811183],[-109.409104,23.364672],[-109.433392,23.185588],[-109.854219,22.818272],[-110.031392,22.823078],[-110.295071,23.430973],[-110.949501,24.000964],[-111.670568,24.484423],[-112.182036,24.738413],[-112.148989,25.470125],[-112.300711,26.012004],[-112.777297,26.32196],[-113.464671,26.768186],[-113.59673,26.63946],[-113.848937,26.900064],[-114.465747,27.14209],[-115.055142,27.722727],[-114.982253,27.7982],[-114.570366,27.741485],[-114.199329,28.115003],[-114.162018,28.566112],[-114.931842,29.279479],[-115.518654,29.556362],[-115.887365,30.180794],[-116.25835,30.836464],[-116.721526,31.635744],[-117.12776,32.53534],[-115.99135,32.61239],[-114.72139,32.72083],[-114.815,32.52528],[-113.30498,32.03914],[-111.02361,31.33472],[-109.035,31.34194],[-108.24194,31.34222],[-108.24,31.754854],[-106.50759,31.75452],[-106.1429,31.39995],[-105.63159,31.08383],[-105.03737,30.64402],[-104.70575,30.12173],[-104.45697,29.57196],[-103.94,29.27],[-103.11,28.97],[-102.48,29.76],[-101.6624,29.7793],[-100.9576,29.38071],[-100.45584,28.69612],[-100.11,28.11],[-99.52,27.54],[-99.3,26.84],[-99.02,26.37],[-98.24,26.06],[-97.53,25.84],[-97.140008,25.869997]]]},"id":"MEX"},
+{"type":"Feature","properties":{"name":"Macedonia"},"geometry":{"type":"Polygon","coordinates":[[[20.59023,41.85541],[20.71731,41.84711],[20.76216,42.05186],[21.3527,42.2068],[21.576636,42.245224],[21.91708,42.30364],[22.380526,42.32026],[22.881374,41.999297],[22.952377,41.337994],[22.76177,41.3048],[22.597308,41.130487],[22.055378,41.149866],[21.674161,40.931275],[21.02004,40.842727],[20.60518,41.08622],[20.46315,41.51509],[20.59023,41.85541]]]},"id":"MKD"},
+{"type":"Feature","properties":{"name":"Mali"},"geometry":{"type":"Polygon","coordinates":[[[-12.17075,14.616834],[-11.834208,14.799097],[-11.666078,15.388208],[-11.349095,15.411256],[-10.650791,15.132746],[-10.086846,15.330486],[-9.700255,15.264107],[-9.550238,15.486497],[-5.537744,15.50169],[-5.315277,16.201854],[-5.488523,16.325102],[-5.971129,20.640833],[-6.453787,24.956591],[-4.923337,24.974574],[-1.550055,22.792666],[1.823228,20.610809],[2.060991,20.142233],[2.683588,19.85623],[3.146661,19.693579],[3.158133,19.057364],[4.267419,19.155265],[4.27021,16.852227],[3.723422,16.184284],[3.638259,15.56812],[2.749993,15.409525],[1.385528,15.323561],[1.015783,14.968182],[0.374892,14.928908],[-0.266257,14.924309],[-0.515854,15.116158],[-1.066363,14.973815],[-2.001035,14.559008],[-2.191825,14.246418],[-2.967694,13.79815],[-3.103707,13.541267],[-3.522803,13.337662],[-4.006391,13.472485],[-4.280405,13.228444],[-4.427166,12.542646],[-5.220942,11.713859],[-5.197843,11.375146],[-5.470565,10.95127],[-5.404342,10.370737],[-5.816926,10.222555],[-6.050452,10.096361],[-6.205223,10.524061],[-6.493965,10.411303],[-6.666461,10.430811],[-6.850507,10.138994],[-7.622759,10.147236],[-7.89959,10.297382],[-8.029944,10.206535],[-8.335377,10.494812],[-8.282357,10.792597],[-8.407311,10.909257],[-8.620321,10.810891],[-8.581305,11.136246],[-8.376305,11.393646],[-8.786099,11.812561],[-8.905265,12.088358],[-9.127474,12.30806],[-9.327616,12.334286],[-9.567912,12.194243],[-9.890993,12.060479],[-10.165214,11.844084],[-10.593224,11.923975],[-10.87083,12.177887],[-11.036556,12.211245],[-11.297574,12.077971],[-11.456169,12.076834],[-11.513943,12.442988],[-11.467899,12.754519],[-11.553398,13.141214],[-11.927716,13.422075],[-12.124887,13.994727],[-12.17075,14.616834]]]},"id":"MLI"},
+{"type":"Feature","properties":{"name":"Myanmar"},"geometry":{"type":"Polygon","coordinates":[[[99.543309,20.186598],[98.959676,19.752981],[98.253724,19.708203],[97.797783,18.62708],[97.375896,18.445438],[97.859123,17.567946],[98.493761,16.837836],[98.903348,16.177824],[98.537376,15.308497],[98.192074,15.123703],[98.430819,14.622028],[99.097755,13.827503],[99.212012,13.269294],[99.196354,12.804748],[99.587286,11.892763],[99.038121,10.960546],[98.553551,9.93296],[98.457174,10.675266],[98.764546,11.441292],[98.428339,12.032987],[98.509574,13.122378],[98.103604,13.64046],[97.777732,14.837286],[97.597072,16.100568],[97.16454,16.928734],[96.505769,16.427241],[95.369352,15.71439],[94.808405,15.803454],[94.188804,16.037936],[94.533486,17.27724],[94.324817,18.213514],[93.540988,19.366493],[93.663255,19.726962],[93.078278,19.855145],[92.368554,20.670883],[92.303234,21.475485],[92.652257,21.324048],[92.672721,22.041239],[93.166128,22.27846],[93.060294,22.703111],[93.286327,23.043658],[93.325188,24.078556],[94.106742,23.850741],[94.552658,24.675238],[94.603249,25.162495],[95.155153,26.001307],[95.124768,26.573572],[96.419366,27.264589],[97.133999,27.083774],[97.051989,27.699059],[97.402561,27.882536],[97.327114,28.261583],[97.911988,28.335945],[98.246231,27.747221],[98.68269,27.508812],[98.712094,26.743536],[98.671838,25.918703],[97.724609,25.083637],[97.60472,23.897405],[98.660262,24.063286],[98.898749,23.142722],[99.531992,22.949039],[99.240899,22.118314],[99.983489,21.742937],[100.416538,21.558839],[101.150033,21.849984],[101.180005,21.436573],[100.329101,20.786122],[100.115988,20.41785],[99.543309,20.186598]]]},"id":"MMR"},
+{"type":"Feature","properties":{"name":"Montenegro"},"geometry":{"type":"Polygon","coordinates":[[[19.801613,42.500093],[19.738051,42.688247],[19.30449,42.19574],[19.37177,41.87755],[19.16246,41.95502],[18.88214,42.28151],[18.45,42.48],[18.56,42.65],[18.70648,43.20011],[19.03165,43.43253],[19.21852,43.52384],[19.48389,43.35229],[19.63,43.21378],[19.95857,43.10604],[20.3398,42.89852],[20.25758,42.81275],[20.0707,42.58863],[19.801613,42.500093]]]},"id":"MNE"},
+{"type":"Feature","properties":{"name":"Mongolia"},"geometry":{"type":"Polygon","coordinates":[[[87.751264,49.297198],[88.805567,49.470521],[90.713667,50.331812],[92.234712,50.802171],[93.104219,50.49529],[94.147566,50.480537],[94.815949,50.013433],[95.814028,49.977467],[97.259728,49.726061],[98.231762,50.422401],[97.82574,51.010995],[98.861491,52.047366],[99.981732,51.634006],[100.88948,51.516856],[102.065223,51.259921],[102.255909,50.510561],[103.676545,50.089966],[104.621552,50.275329],[105.886591,50.406019],[106.888804,50.274296],[107.868176,49.793705],[108.475167,49.282548],[109.402449,49.292961],[110.662011,49.130128],[111.581231,49.377968],[112.89774,49.543565],[114.362456,50.248303],[114.96211,50.140247],[115.485695,49.805177],[116.678801,49.888531],[116.191802,49.134598],[115.485282,48.135383],[115.742837,47.726545],[116.308953,47.85341],[117.295507,47.697709],[118.064143,48.06673],[118.866574,47.74706],[119.772824,47.048059],[119.66327,46.69268],[118.874326,46.805412],[117.421701,46.672733],[116.717868,46.388202],[115.985096,45.727235],[114.460332,45.339817],[113.463907,44.808893],[112.436062,45.011646],[111.873306,45.102079],[111.348377,44.457442],[111.667737,44.073176],[111.829588,43.743118],[111.129682,43.406834],[110.412103,42.871234],[109.243596,42.519446],[107.744773,42.481516],[106.129316,42.134328],[104.964994,41.59741],[104.522282,41.908347],[103.312278,41.907468],[101.83304,42.514873],[100.845866,42.663804],[99.515817,42.524691],[97.451757,42.74889],[96.349396,42.725635],[95.762455,43.319449],[95.306875,44.241331],[94.688929,44.352332],[93.480734,44.975472],[92.133891,45.115076],[90.94554,45.286073],[90.585768,45.719716],[90.970809,46.888146],[90.280826,47.693549],[88.854298,48.069082],[88.013832,48.599463],[87.751264,49.297198]]]},"id":"MNG"},
+{"type":"Feature","properties":{"name":"Mozambique"},"geometry":{"type":"Polygon","coordinates":[[[34.559989,-11.52002],[35.312398,-11.439146],[36.514082,-11.720938],[36.775151,-11.594537],[37.471284,-11.568751],[37.827645,-11.268769],[38.427557,-11.285202],[39.52103,-10.896854],[40.316589,-10.317096],[40.478387,-10.765441],[40.437253,-11.761711],[40.560811,-12.639177],[40.59962,-14.201975],[40.775475,-14.691764],[40.477251,-15.406294],[40.089264,-16.100774],[39.452559,-16.720891],[38.538351,-17.101023],[37.411133,-17.586368],[36.281279,-18.659688],[35.896497,-18.84226],[35.1984,-19.552811],[34.786383,-19.784012],[34.701893,-20.497043],[35.176127,-21.254361],[35.373428,-21.840837],[35.385848,-22.14],[35.562546,-22.09],[35.533935,-23.070788],[35.371774,-23.535359],[35.60747,-23.706563],[35.458746,-24.12261],[35.040735,-24.478351],[34.215824,-24.816314],[33.01321,-25.357573],[32.574632,-25.727318],[32.660363,-26.148584],[32.915955,-26.215867],[32.83012,-26.742192],[32.071665,-26.73382],[31.985779,-26.29178],[31.837778,-25.843332],[31.752408,-25.484284],[31.930589,-24.369417],[31.670398,-23.658969],[31.191409,-22.25151],[32.244988,-21.116489],[32.508693,-20.395292],[32.659743,-20.30429],[32.772708,-19.715592],[32.611994,-19.419383],[32.654886,-18.67209],[32.849861,-17.979057],[32.847639,-16.713398],[32.328239,-16.392074],[31.852041,-16.319417],[31.636498,-16.07199],[31.173064,-15.860944],[30.338955,-15.880839],[30.274256,-15.507787],[30.179481,-14.796099],[33.214025,-13.97186],[33.7897,-14.451831],[34.064825,-14.35995],[34.459633,-14.61301],[34.517666,-15.013709],[34.307291,-15.478641],[34.381292,-16.18356],[35.03381,-16.8013],[35.339063,-16.10744],[35.771905,-15.896859],[35.686845,-14.611046],[35.267956,-13.887834],[34.907151,-13.565425],[34.559989,-13.579998],[34.280006,-12.280025],[34.559989,-11.52002]]]},"id":"MOZ"},
+{"type":"Feature","properties":{"name":"Mauritania"},"geometry":{"type":"Polygon","coordinates":[[[-12.17075,14.616834],[-12.830658,15.303692],[-13.435738,16.039383],[-14.099521,16.304302],[-14.577348,16.598264],[-15.135737,16.587282],[-15.623666,16.369337],[-16.12069,16.455663],[-16.463098,16.135036],[-16.549708,16.673892],[-16.270552,17.166963],[-16.146347,18.108482],[-16.256883,19.096716],[-16.377651,19.593817],[-16.277838,20.092521],[-16.536324,20.567866],[-17.063423,20.999752],[-16.845194,21.333323],[-12.929102,21.327071],[-13.118754,22.77122],[-12.874222,23.284832],[-11.937224,23.374594],[-11.969419,25.933353],[-8.687294,25.881056],[-8.6844,27.395744],[-4.923337,24.974574],[-6.453787,24.956591],[-5.971129,20.640833],[-5.488523,16.325102],[-5.315277,16.201854],[-5.537744,15.50169],[-9.550238,15.486497],[-9.700255,15.264107],[-10.086846,15.330486],[-10.650791,15.132746],[-11.349095,15.411256],[-11.666078,15.388208],[-11.834208,14.799097],[-12.17075,14.616834]]]},"id":"MRT"},
+{"type":"Feature","properties":{"name":"Malawi"},"geometry":{"type":"Polygon","coordinates":[[[34.559989,-11.52002],[34.280006,-12.280025],[34.559989,-13.579998],[34.907151,-13.565425],[35.267956,-13.887834],[35.686845,-14.611046],[35.771905,-15.896859],[35.339063,-16.10744],[35.03381,-16.8013],[34.381292,-16.18356],[34.307291,-15.478641],[34.517666,-15.013709],[34.459633,-14.61301],[34.064825,-14.35995],[33.7897,-14.451831],[33.214025,-13.97186],[32.688165,-13.712858],[32.991764,-12.783871],[33.306422,-12.435778],[33.114289,-11.607198],[33.31531,-10.79655],[33.485688,-10.525559],[33.231388,-9.676722],[32.759375,-9.230599],[33.739729,-9.417151],[33.940838,-9.693674],[34.280006,-10.16],[34.559989,-11.52002]]]},"id":"MWI"},
+{"type":"Feature","properties":{"name":"Malaysia"},"geometry":{"type":"MultiPolygon","coordinates":[[[[101.075516,6.204867],[101.154219,5.691384],[101.814282,5.810808],[102.141187,6.221636],[102.371147,6.128205],[102.961705,5.524495],[103.381215,4.855001],[103.438575,4.181606],[103.332122,3.726698],[103.429429,3.382869],[103.502448,2.791019],[103.854674,2.515454],[104.247932,1.631141],[104.228811,1.293048],[103.519707,1.226334],[102.573615,1.967115],[101.390638,2.760814],[101.27354,3.270292],[100.695435,3.93914],[100.557408,4.76728],[100.196706,5.312493],[100.30626,6.040562],[100.085757,6.464489],[100.259596,6.642825],[101.075516,6.204867]]],[[[118.618321,4.478202],[117.882035,4.137551],[117.015214,4.306094],[115.865517,4.306559],[115.519078,3.169238],[115.134037,2.821482],[114.621355,1.430688],[113.80585,1.217549],[112.859809,1.49779],[112.380252,1.410121],[111.797548,0.904441],[111.159138,0.976478],[110.514061,0.773131],[109.830227,1.338136],[109.66326,2.006467],[110.396135,1.663775],[111.168853,1.850637],[111.370081,2.697303],[111.796928,2.885897],[112.995615,3.102395],[113.712935,3.893509],[114.204017,4.525874],[114.659596,4.007637],[114.869557,4.348314],[115.347461,4.316636],[115.4057,4.955228],[115.45071,5.44773],[116.220741,6.143191],[116.725103,6.924771],[117.129626,6.928053],[117.643393,6.422166],[117.689075,5.98749],[118.347691,5.708696],[119.181904,5.407836],[119.110694,5.016128],[118.439727,4.966519],[118.618321,4.478202]]]]},"id":"MYS"},
+{"type":"Feature","properties":{"name":"Namibia"},"geometry":{"type":"Polygon","coordinates":[[[16.344977,-28.576705],[15.601818,-27.821247],[15.210472,-27.090956],[14.989711,-26.117372],[14.743214,-25.39292],[14.408144,-23.853014],[14.385717,-22.656653],[14.257714,-22.111208],[13.868642,-21.699037],[13.352498,-20.872834],[12.826845,-19.673166],[12.608564,-19.045349],[11.794919,-18.069129],[11.734199,-17.301889],[12.215461,-17.111668],[12.814081,-16.941343],[13.462362,-16.971212],[14.058501,-17.423381],[14.209707,-17.353101],[18.263309,-17.309951],[18.956187,-17.789095],[21.377176,-17.930636],[23.215048,-17.523116],[24.033862,-17.295843],[24.682349,-17.353411],[25.07695,-17.578823],[25.084443,-17.661816],[24.520705,-17.887125],[24.217365,-17.889347],[23.579006,-18.281261],[23.196858,-17.869038],[21.65504,-18.219146],[20.910641,-18.252219],[20.881134,-21.814327],[19.895458,-21.849157],[19.895768,-24.76779],[19.894734,-28.461105],[19.002127,-28.972443],[18.464899,-29.045462],[17.836152,-28.856378],[17.387497,-28.783514],[17.218929,-28.355943],[16.824017,-28.082162],[16.344977,-28.576705]]]},"id":"NAM"},
+{"type":"Feature","properties":{"name":"New Caledonia"},"geometry":{"type":"Polygon","coordinates":[[[165.77999,-21.080005],[166.599991,-21.700019],[167.120011,-22.159991],[166.740035,-22.399976],[166.189732,-22.129708],[165.474375,-21.679607],[164.829815,-21.14982],[164.167995,-20.444747],[164.029606,-20.105646],[164.459967,-20.120012],[165.020036,-20.459991],[165.460009,-20.800022],[165.77999,-21.080005]]]},"id":"NCL"},
+{"type":"Feature","properties":{"name":"Niger"},"geometry":{"type":"Polygon","coordinates":[[[2.154474,11.94015],[2.177108,12.625018],[1.024103,12.851826],[0.993046,13.33575],[0.429928,13.988733],[0.295646,14.444235],[0.374892,14.928908],[1.015783,14.968182],[1.385528,15.323561],[2.749993,15.409525],[3.638259,15.56812],[3.723422,16.184284],[4.27021,16.852227],[4.267419,19.155265],[5.677566,19.601207],[8.572893,21.565661],[11.999506,23.471668],[13.581425,23.040506],[14.143871,22.491289],[14.8513,22.86295],[15.096888,21.308519],[15.471077,21.048457],[15.487148,20.730415],[15.903247,20.387619],[15.685741,19.95718],[15.300441,17.92795],[15.247731,16.627306],[13.972202,15.684366],[13.540394,14.367134],[13.956699,13.996691],[13.954477,13.353449],[14.595781,13.330427],[14.495787,12.859396],[14.213531,12.802035],[14.181336,12.483657],[13.995353,12.461565],[13.318702,13.556356],[13.083987,13.596147],[12.302071,13.037189],[11.527803,13.32898],[10.989593,13.387323],[10.701032,13.246918],[10.114814,13.277252],[9.524928,12.851102],[9.014933,12.826659],[7.804671,13.343527],[7.330747,13.098038],[6.820442,13.115091],[6.445426,13.492768],[5.443058,13.865924],[4.368344,13.747482],[4.107946,13.531216],[3.967283,12.956109],[3.680634,12.552903],[3.61118,11.660167],[2.848643,12.235636],[2.490164,12.233052],[2.154474,11.94015]]]},"id":"NER"},
+{"type":"Feature","properties":{"name":"Nigeria"},"geometry":{"type":"Polygon","coordinates":[[[8.500288,4.771983],[7.462108,4.412108],[7.082596,4.464689],[6.698072,4.240594],[5.898173,4.262453],[5.362805,4.887971],[5.033574,5.611802],[4.325607,6.270651],[3.57418,6.2583],[2.691702,6.258817],[2.749063,7.870734],[2.723793,8.506845],[2.912308,9.137608],[3.220352,9.444153],[3.705438,10.06321],[3.60007,10.332186],[3.797112,10.734746],[3.572216,11.327939],[3.61118,11.660167],[3.680634,12.552903],[3.967283,12.956109],[4.107946,13.531216],[4.368344,13.747482],[5.443058,13.865924],[6.445426,13.492768],[6.820442,13.115091],[7.330747,13.098038],[7.804671,13.343527],[9.014933,12.826659],[9.524928,12.851102],[10.114814,13.277252],[10.701032,13.246918],[10.989593,13.387323],[11.527803,13.32898],[12.302071,13.037189],[13.083987,13.596147],[13.318702,13.556356],[13.995353,12.461565],[14.181336,12.483657],[14.577178,12.085361],[14.468192,11.904752],[14.415379,11.572369],[13.57295,10.798566],[13.308676,10.160362],[13.1676,9.640626],[12.955468,9.417772],[12.753672,8.717763],[12.218872,8.305824],[12.063946,7.799808],[11.839309,7.397042],[11.745774,6.981383],[11.058788,6.644427],[10.497375,7.055358],[10.118277,7.03877],[9.522706,6.453482],[9.233163,6.444491],[8.757533,5.479666],[8.500288,4.771983]]]},"id":"NGA"},
+{"type":"Feature","properties":{"name":"Nicaragua"},"geometry":{"type":"Polygon","coordinates":[[[-85.71254,11.088445],[-86.058488,11.403439],[-86.52585,11.806877],[-86.745992,12.143962],[-87.167516,12.458258],[-87.668493,12.90991],[-87.557467,13.064552],[-87.392386,12.914018],[-87.316654,12.984686],[-87.005769,13.025794],[-86.880557,13.254204],[-86.733822,13.263093],[-86.755087,13.754845],[-86.520708,13.778487],[-86.312142,13.771356],[-86.096264,14.038187],[-85.801295,13.836055],[-85.698665,13.960078],[-85.514413,14.079012],[-85.165365,14.35437],[-85.148751,14.560197],[-85.052787,14.551541],[-84.924501,14.790493],[-84.820037,14.819587],[-84.649582,14.666805],[-84.449336,14.621614],[-84.228342,14.748764],[-83.975721,14.749436],[-83.628585,14.880074],[-83.489989,15.016267],[-83.147219,14.995829],[-83.233234,14.899866],[-83.284162,14.676624],[-83.182126,14.310703],[-83.4125,13.970078],[-83.519832,13.567699],[-83.552207,13.127054],[-83.498515,12.869292],[-83.473323,12.419087],[-83.626104,12.32085],[-83.719613,11.893124],[-83.650858,11.629032],[-83.85547,11.373311],[-83.808936,11.103044],[-83.655612,10.938764],[-83.895054,10.726839],[-84.190179,10.79345],[-84.355931,10.999226],[-84.673069,11.082657],[-84.903003,10.952303],[-85.561852,11.217119],[-85.71254,11.088445]]]},"id":"NIC"},
+{"type":"Feature","properties":{"name":"Netherlands"},"geometry":{"type":"Polygon","coordinates":[[[6.074183,53.510403],[6.90514,53.482162],[7.092053,53.144043],[6.84287,52.22844],[6.589397,51.852029],[5.988658,51.851616],[6.156658,50.803721],[5.606976,51.037298],[4.973991,51.475024],[4.047071,51.267259],[3.314971,51.345755],[3.830289,51.620545],[4.705997,53.091798],[6.074183,53.510403]]]},"id":"NLD"},
+{"type":"Feature","properties":{"name":"Norway"},"geometry":{"type":"MultiPolygon","coordinates":[[[[28.165547,71.185474],[31.293418,70.453788],[30.005435,70.186259],[31.101079,69.55808],[29.399581,69.156916],[28.59193,69.064777],[29.015573,69.766491],[27.732292,70.164193],[26.179622,69.825299],[25.689213,69.092114],[24.735679,68.649557],[23.66205,68.891247],[22.356238,68.841741],[21.244936,69.370443],[20.645593,69.106247],[20.025269,69.065139],[19.87856,68.407194],[17.993868,68.567391],[17.729182,68.010552],[16.768879,68.013937],[16.108712,67.302456],[15.108411,66.193867],[13.55569,64.787028],[13.919905,64.445421],[13.571916,64.049114],[12.579935,64.066219],[11.930569,63.128318],[11.992064,61.800362],[12.631147,61.293572],[12.300366,60.117933],[11.468272,59.432393],[11.027369,58.856149],[10.356557,59.469807],[8.382,58.313288],[7.048748,58.078884],[5.665835,58.588155],[5.308234,59.663232],[4.992078,61.970998],[5.9129,62.614473],[8.553411,63.454008],[10.527709,64.486038],[12.358347,65.879726],[14.761146,67.810642],[16.435927,68.563205],[19.184028,69.817444],[21.378416,70.255169],[23.023742,70.202072],[24.546543,71.030497],[26.37005,70.986262],[28.165547,71.185474]]],[[[24.72412,77.85385],[22.49032,77.44493],[20.72601,77.67704],[21.41611,77.93504],[20.8119,78.25463],[22.88426,78.45494],[23.28134,78.07954],[24.72412,77.85385]]],[[[18.25183,79.70175],[21.54383,78.95611],[19.02737,78.5626],[18.47172,77.82669],[17.59441,77.63796],[17.1182,76.80941],[15.91315,76.77045],[13.76259,77.38035],[14.66956,77.73565],[13.1706,78.02493],[11.22231,78.8693],[10.44453,79.65239],[13.17077,80.01046],[13.71852,79.66039],[15.14282,79.67431],[15.52255,80.01608],[16.99085,80.05086],[18.25183,79.70175]]],[[[25.447625,80.40734],[27.407506,80.056406],[25.924651,79.517834],[23.024466,79.400012],[20.075188,79.566823],[19.897266,79.842362],[18.462264,79.85988],[17.368015,80.318896],[20.455992,80.598156],[21.907945,80.357679],[22.919253,80.657144],[25.447625,80.40734]]]]},"id":"NOR"},
+{"type":"Feature","properties":{"name":"Nepal"},"geometry":{"type":"Polygon","coordinates":[[[88.120441,27.876542],[88.043133,27.445819],[88.174804,26.810405],[88.060238,26.414615],[87.227472,26.397898],[86.024393,26.630985],[85.251779,26.726198],[84.675018,27.234901],[83.304249,27.364506],[81.999987,27.925479],[81.057203,28.416095],[80.088425,28.79447],[80.476721,29.729865],[81.111256,30.183481],[81.525804,30.422717],[82.327513,30.115268],[83.337115,29.463732],[83.898993,29.320226],[84.23458,28.839894],[85.011638,28.642774],[85.82332,28.203576],[86.954517,27.974262],[88.120441,27.876542]]]},"id":"NPL"},
+{"type":"Feature","properties":{"name":"New Zealand"},"geometry":{"type":"MultiPolygon","coordinates":[[[[173.020375,-40.919052],[173.247234,-41.331999],[173.958405,-40.926701],[174.247587,-41.349155],[174.248517,-41.770008],[173.876447,-42.233184],[173.22274,-42.970038],[172.711246,-43.372288],[173.080113,-43.853344],[172.308584,-43.865694],[171.452925,-44.242519],[171.185138,-44.897104],[170.616697,-45.908929],[169.831422,-46.355775],[169.332331,-46.641235],[168.411354,-46.619945],[167.763745,-46.290197],[166.676886,-46.219917],[166.509144,-45.852705],[167.046424,-45.110941],[168.303763,-44.123973],[168.949409,-43.935819],[169.667815,-43.555326],[170.52492,-43.031688],[171.12509,-42.512754],[171.569714,-41.767424],[171.948709,-41.514417],[172.097227,-40.956104],[172.79858,-40.493962],[173.020375,-40.919052]]],[[[174.612009,-36.156397],[175.336616,-37.209098],[175.357596,-36.526194],[175.808887,-36.798942],[175.95849,-37.555382],[176.763195,-37.881253],[177.438813,-37.961248],[178.010354,-37.579825],[178.517094,-37.695373],[178.274731,-38.582813],[177.97046,-39.166343],[177.206993,-39.145776],[176.939981,-39.449736],[177.032946,-39.879943],[176.885824,-40.065978],[176.508017,-40.604808],[176.01244,-41.289624],[175.239567,-41.688308],[175.067898,-41.425895],[174.650973,-41.281821],[175.22763,-40.459236],[174.900157,-39.908933],[173.824047,-39.508854],[173.852262,-39.146602],[174.574802,-38.797683],[174.743474,-38.027808],[174.697017,-37.381129],[174.292028,-36.711092],[174.319004,-36.534824],[173.840997,-36.121981],[173.054171,-35.237125],[172.636005,-34.529107],[173.007042,-34.450662],[173.551298,-35.006183],[174.32939,-35.265496],[174.612009,-36.156397]]]]},"id":"NZL"},
+{"type":"Feature","properties":{"name":"Oman"},"geometry":{"type":"MultiPolygon","coordinates":[[[[58.861141,21.114035],[58.487986,20.428986],[58.034318,20.481437],[57.826373,20.243002],[57.665762,19.736005],[57.7887,19.06757],[57.694391,18.94471],[57.234264,18.947991],[56.609651,18.574267],[56.512189,18.087113],[56.283521,17.876067],[55.661492,17.884128],[55.269939,17.632309],[55.2749,17.228354],[54.791002,16.950697],[54.239253,17.044981],[53.570508,16.707663],[53.108573,16.651051],[52.782184,17.349742],[52.00001,19.000003],[54.999982,19.999994],[55.666659,22.000001],[55.208341,22.70833],[55.234489,23.110993],[55.525841,23.524869],[55.528632,23.933604],[55.981214,24.130543],[55.804119,24.269604],[55.886233,24.920831],[56.396847,24.924732],[56.84514,24.241673],[57.403453,23.878594],[58.136948,23.747931],[58.729211,23.565668],[59.180502,22.992395],[59.450098,22.660271],[59.80806,22.533612],[59.806148,22.310525],[59.442191,21.714541],[59.282408,21.433886],[58.861141,21.114035]]],[[[56.391421,25.895991],[56.261042,25.714606],[56.070821,26.055464],[56.362017,26.395934],[56.485679,26.309118],[56.391421,25.895991]]]]},"id":"OMN"},
+{"type":"Feature","properties":{"name":"Pakistan"},"geometry":{"type":"Polygon","coordinates":[[[75.158028,37.133031],[75.896897,36.666806],[76.192848,35.898403],[77.837451,35.49401],[76.871722,34.653544],[75.757061,34.504923],[74.240203,34.748887],[73.749948,34.317699],[74.104294,33.441473],[74.451559,32.7649],[75.258642,32.271105],[74.405929,31.692639],[74.42138,30.979815],[73.450638,29.976413],[72.823752,28.961592],[71.777666,27.91318],[70.616496,27.989196],[69.514393,26.940966],[70.168927,26.491872],[70.282873,25.722229],[70.844699,25.215102],[71.04324,24.356524],[68.842599,24.359134],[68.176645,23.691965],[67.443667,23.944844],[67.145442,24.663611],[66.372828,25.425141],[64.530408,25.237039],[62.905701,25.218409],[61.497363,25.078237],[61.874187,26.239975],[63.316632,26.756532],[63.233898,27.217047],[62.755426,27.378923],[62.72783,28.259645],[61.771868,28.699334],[61.369309,29.303276],[60.874248,29.829239],[62.549857,29.318572],[63.550261,29.468331],[64.148002,29.340819],[64.350419,29.560031],[65.046862,29.472181],[66.346473,29.887943],[66.381458,30.738899],[66.938891,31.304911],[67.683394,31.303154],[67.792689,31.58293],[68.556932,31.71331],[68.926677,31.620189],[69.317764,31.901412],[69.262522,32.501944],[69.687147,33.105499],[70.323594,33.358533],[69.930543,34.02012],[70.881803,33.988856],[71.156773,34.348911],[71.115019,34.733126],[71.613076,35.153203],[71.498768,35.650563],[71.262348,36.074388],[71.846292,36.509942],[72.920025,36.720007],[74.067552,36.836176],[74.575893,37.020841],[75.158028,37.133031]]]},"id":"PAK"},
+{"type":"Feature","properties":{"name":"Panama"},"geometry":{"type":"Polygon","coordinates":[[[-77.881571,7.223771],[-78.214936,7.512255],[-78.429161,8.052041],[-78.182096,8.319182],[-78.435465,8.387705],[-78.622121,8.718124],[-79.120307,8.996092],[-79.557877,8.932375],[-79.760578,8.584515],[-80.164481,8.333316],[-80.382659,8.298409],[-80.480689,8.090308],[-80.00369,7.547524],[-80.276671,7.419754],[-80.421158,7.271572],[-80.886401,7.220541],[-81.059543,7.817921],[-81.189716,7.647906],[-81.519515,7.70661],[-81.721311,8.108963],[-82.131441,8.175393],[-82.390934,8.292362],[-82.820081,8.290864],[-82.850958,8.073823],[-82.965783,8.225028],[-82.913176,8.423517],[-82.829771,8.626295],[-82.868657,8.807266],[-82.719183,8.925709],[-82.927155,9.07433],[-82.932891,9.476812],[-82.546196,9.566135],[-82.187123,9.207449],[-82.207586,8.995575],[-81.808567,8.950617],[-81.714154,9.031955],[-81.439287,8.786234],[-80.947302,8.858504],[-80.521901,9.111072],[-79.9146,9.312765],[-79.573303,9.61161],[-79.021192,9.552931],[-79.05845,9.454565],[-78.500888,9.420459],[-78.055928,9.24773],[-77.729514,8.946844],[-77.353361,8.670505],[-77.474723,8.524286],[-77.242566,7.935278],[-77.431108,7.638061],[-77.753414,7.70984],[-77.881571,7.223771]]]},"id":"PAN"},
+{"type":"Feature","properties":{"name":"Peru"},"geometry":{"type":"Polygon","coordinates":[[[-69.590424,-17.580012],[-69.858444,-18.092694],[-70.372572,-18.347975],[-71.37525,-17.773799],[-71.462041,-17.363488],[-73.44453,-16.359363],[-75.237883,-15.265683],[-76.009205,-14.649286],[-76.423469,-13.823187],[-76.259242,-13.535039],[-77.106192,-12.222716],[-78.092153,-10.377712],[-79.036953,-8.386568],[-79.44592,-7.930833],[-79.760578,-7.194341],[-80.537482,-6.541668],[-81.249996,-6.136834],[-80.926347,-5.690557],[-81.410943,-4.736765],[-81.09967,-4.036394],[-80.302561,-3.404856],[-80.184015,-3.821162],[-80.469295,-4.059287],[-80.442242,-4.425724],[-80.028908,-4.346091],[-79.624979,-4.454198],[-79.205289,-4.959129],[-78.639897,-4.547784],[-78.450684,-3.873097],[-77.837905,-3.003021],[-76.635394,-2.608678],[-75.544996,-1.56161],[-75.233723,-0.911417],[-75.373223,-0.152032],[-75.106625,-0.057205],[-74.441601,-0.53082],[-74.122395,-1.002833],[-73.659504,-1.260491],[-73.070392,-2.308954],[-72.325787,-2.434218],[-71.774761,-2.16979],[-71.413646,-2.342802],[-70.813476,-2.256865],[-70.047709,-2.725156],[-70.692682,-3.742872],[-70.394044,-3.766591],[-69.893635,-4.298187],[-70.794769,-4.251265],[-70.928843,-4.401591],[-71.748406,-4.593983],[-72.891928,-5.274561],[-72.964507,-5.741251],[-73.219711,-6.089189],[-73.120027,-6.629931],[-73.724487,-6.918595],[-73.723401,-7.340999],[-73.987235,-7.52383],[-73.571059,-8.424447],[-73.015383,-9.032833],[-73.226713,-9.462213],[-72.563033,-9.520194],[-72.184891,-10.053598],[-71.302412,-10.079436],[-70.481894,-9.490118],[-70.548686,-11.009147],[-70.093752,-11.123972],[-69.529678,-10.951734],[-68.66508,-12.5613],[-68.88008,-12.899729],[-68.929224,-13.602684],[-68.948887,-14.453639],[-69.339535,-14.953195],[-69.160347,-15.323974],[-69.389764,-15.660129],[-68.959635,-16.500698],[-69.590424,-17.580012]]]},"id":"PER"},
+{"type":"Feature","properties":{"name":"Philippines"},"geometry":{"type":"MultiPolygon","coordinates":[[[[126.376814,8.414706],[126.478513,7.750354],[126.537424,7.189381],[126.196773,6.274294],[125.831421,7.293715],[125.363852,6.786485],[125.683161,6.049657],[125.396512,5.581003],[124.219788,6.161355],[123.93872,6.885136],[124.243662,7.36061],[123.610212,7.833527],[123.296071,7.418876],[122.825506,7.457375],[122.085499,6.899424],[121.919928,7.192119],[122.312359,8.034962],[122.942398,8.316237],[123.487688,8.69301],[123.841154,8.240324],[124.60147,8.514158],[124.764612,8.960409],[125.471391,8.986997],[125.412118,9.760335],[126.222714,9.286074],[126.306637,8.782487],[126.376814,8.414706]]],[[[123.982438,10.278779],[123.623183,9.950091],[123.309921,9.318269],[122.995883,9.022189],[122.380055,9.713361],[122.586089,9.981045],[122.837081,10.261157],[122.947411,10.881868],[123.49885,10.940624],[123.337774,10.267384],[124.077936,11.232726],[123.982438,10.278779]]],[[[118.504581,9.316383],[117.174275,8.3675],[117.664477,9.066889],[118.386914,9.6845],[118.987342,10.376292],[119.511496,11.369668],[119.689677,10.554291],[119.029458,10.003653],[118.504581,9.316383]]],[[[121.883548,11.891755],[122.483821,11.582187],[123.120217,11.58366],[123.100838,11.165934],[122.637714,10.741308],[122.00261,10.441017],[121.967367,10.905691],[122.03837,11.415841],[121.883548,11.891755]]],[[[125.502552,12.162695],[125.783465,11.046122],[125.011884,11.311455],[125.032761,10.975816],[125.277449,10.358722],[124.801819,10.134679],[124.760168,10.837995],[124.459101,10.88993],[124.302522,11.495371],[124.891013,11.415583],[124.87799,11.79419],[124.266762,12.557761],[125.227116,12.535721],[125.502552,12.162695]]],[[[121.527394,13.06959],[121.26219,12.20556],[120.833896,12.704496],[120.323436,13.466413],[121.180128,13.429697],[121.527394,13.06959]]],[[[121.321308,18.504065],[121.937601,18.218552],[122.246006,18.47895],[122.336957,18.224883],[122.174279,17.810283],[122.515654,17.093505],[122.252311,16.262444],[121.662786,15.931018],[121.50507,15.124814],[121.728829,14.328376],[122.258925,14.218202],[122.701276,14.336541],[123.950295,13.782131],[123.855107,13.237771],[124.181289,12.997527],[124.077419,12.536677],[123.298035,13.027526],[122.928652,13.55292],[122.671355,13.185836],[122.03465,13.784482],[121.126385,13.636687],[120.628637,13.857656],[120.679384,14.271016],[120.991819,14.525393],[120.693336,14.756671],[120.564145,14.396279],[120.070429,14.970869],[119.920929,15.406347],[119.883773,16.363704],[120.286488,16.034629],[120.390047,17.599081],[120.715867,18.505227],[121.321308,18.504065]]]]},"id":"PHL"},
+{"type":"Feature","properties":{"name":"Papua New Guinea"},"geometry":{"type":"MultiPolygon","coordinates":[[[[155.880026,-6.819997],[155.599991,-6.919991],[155.166994,-6.535931],[154.729192,-5.900828],[154.514114,-5.139118],[154.652504,-5.042431],[154.759991,-5.339984],[155.062918,-5.566792],[155.547746,-6.200655],[156.019965,-6.540014],[155.880026,-6.819997]]],[[[151.982796,-5.478063],[151.459107,-5.56028],[151.30139,-5.840728],[150.754447,-6.083763],[150.241197,-6.317754],[149.709963,-6.316513],[148.890065,-6.02604],[148.318937,-5.747142],[148.401826,-5.437756],[149.298412,-5.583742],[149.845562,-5.505503],[149.99625,-5.026101],[150.139756,-5.001348],[150.236908,-5.53222],[150.807467,-5.455842],[151.089672,-5.113693],[151.647881,-4.757074],[151.537862,-4.167807],[152.136792,-4.14879],[152.338743,-4.312966],[152.318693,-4.867661],[151.982796,-5.478063]]],[[[147.191874,-7.388024],[148.084636,-8.044108],[148.734105,-9.104664],[149.306835,-9.071436],[149.266631,-9.514406],[150.038728,-9.684318],[149.738798,-9.872937],[150.801628,-10.293687],[150.690575,-10.582713],[150.028393,-10.652476],[149.78231,-10.393267],[148.923138,-10.280923],[147.913018,-10.130441],[147.135443,-9.492444],[146.567881,-8.942555],[146.048481,-8.067414],[144.744168,-7.630128],[143.897088,-7.91533],[143.286376,-8.245491],[143.413913,-8.983069],[142.628431,-9.326821],[142.068259,-9.159596],[141.033852,-9.117893],[141.017057,-5.859022],[141.00021,-2.600151],[142.735247,-3.289153],[144.583971,-3.861418],[145.27318,-4.373738],[145.829786,-4.876498],[145.981922,-5.465609],[147.648073,-6.083659],[147.891108,-6.614015],[146.970905,-6.721657],[147.191874,-7.388024]]],[[[153.140038,-4.499983],[152.827292,-4.766427],[152.638673,-4.176127],[152.406026,-3.789743],[151.953237,-3.462062],[151.384279,-3.035422],[150.66205,-2.741486],[150.939965,-2.500002],[151.479984,-2.779985],[151.820015,-2.999972],[152.239989,-3.240009],[152.640017,-3.659983],[153.019994,-3.980015],[153.140038,-4.499983]]]]},"id":"PNG"},
+{"type":"Feature","properties":{"name":"Poland"},"geometry":{"type":"Polygon","coordinates":[[[15.016996,51.106674],[14.607098,51.745188],[14.685026,52.089947],[14.4376,52.62485],[14.074521,52.981263],[14.353315,53.248171],[14.119686,53.757029],[14.8029,54.050706],[16.363477,54.513159],[17.622832,54.851536],[18.620859,54.682606],[18.696255,54.438719],[19.66064,54.426084],[20.892245,54.312525],[22.731099,54.327537],[23.243987,54.220567],[23.484128,53.912498],[23.527536,53.470122],[23.804935,53.089731],[23.799199,52.691099],[23.199494,52.486977],[23.508002,52.023647],[23.527071,51.578454],[24.029986,50.705407],[23.922757,50.424881],[23.426508,50.308506],[22.51845,49.476774],[22.776419,49.027395],[22.558138,49.085738],[21.607808,49.470107],[20.887955,49.328772],[20.415839,49.431453],[19.825023,49.217125],[19.320713,49.571574],[18.909575,49.435846],[18.853144,49.49623],[18.392914,49.988629],[17.649445,50.049038],[17.554567,50.362146],[16.868769,50.473974],[16.719476,50.215747],[16.176253,50.422607],[16.238627,50.697733],[15.490972,50.78473],[15.016996,51.106674]]]},"id":"POL"},
+{"type":"Feature","properties":{"name":"Puerto Rico"},"geometry":{"type":"Polygon","coordinates":[[[-66.282434,18.514762],[-65.771303,18.426679],[-65.591004,18.228035],[-65.847164,17.975906],[-66.599934,17.981823],[-67.184162,17.946553],[-67.242428,18.37446],[-67.100679,18.520601],[-66.282434,18.514762]]]},"id":"PRI"},
+{"type":"Feature","properties":{"name":"North Korea"},"geometry":{"type":"Polygon","coordinates":[[[130.640016,42.395009],[130.780007,42.220007],[130.400031,42.280004],[129.965949,41.941368],[129.667362,41.601104],[129.705189,40.882828],[129.188115,40.661808],[129.0104,40.485436],[128.633368,40.189847],[127.967414,40.025413],[127.533436,39.75685],[127.50212,39.323931],[127.385434,39.213472],[127.783343,39.050898],[128.349716,38.612243],[128.205746,38.370397],[127.780035,38.304536],[127.073309,38.256115],[126.68372,37.804773],[126.237339,37.840378],[126.174759,37.749686],[125.689104,37.94001],[125.568439,37.752089],[125.27533,37.669071],[125.240087,37.857224],[124.981033,37.948821],[124.712161,38.108346],[124.985994,38.548474],[125.221949,38.665857],[125.132859,38.848559],[125.38659,39.387958],[125.321116,39.551385],[124.737482,39.660344],[124.265625,39.928493],[125.079942,40.569824],[126.182045,41.107336],[126.869083,41.816569],[127.343783,41.503152],[128.208433,41.466772],[128.052215,41.994285],[129.596669,42.424982],[129.994267,42.985387],[130.640016,42.395009]]]},"id":"PRK"},
+{"type":"Feature","properties":{"name":"Portugal"},"geometry":{"type":"Polygon","coordinates":[[[-9.034818,41.880571],[-8.671946,42.134689],[-8.263857,42.280469],[-8.013175,41.790886],[-7.422513,41.792075],[-7.251309,41.918346],[-6.668606,41.883387],[-6.389088,41.381815],[-6.851127,41.111083],[-6.86402,40.330872],[-7.026413,40.184524],[-7.066592,39.711892],[-7.498632,39.629571],[-7.098037,39.030073],[-7.374092,38.373059],[-7.029281,38.075764],[-7.166508,37.803894],[-7.537105,37.428904],[-7.453726,37.097788],[-7.855613,36.838269],[-8.382816,36.97888],[-8.898857,36.868809],[-8.746101,37.651346],[-8.839998,38.266243],[-9.287464,38.358486],[-9.526571,38.737429],[-9.446989,39.392066],[-9.048305,39.755093],[-8.977353,40.159306],[-8.768684,40.760639],[-8.790853,41.184334],[-8.990789,41.543459],[-9.034818,41.880571]]]},"id":"PRT"},
+{"type":"Feature","properties":{"name":"Paraguay"},"geometry":{"type":"Polygon","coordinates":[[[-62.685057,-22.249029],[-62.291179,-21.051635],[-62.265961,-20.513735],[-61.786326,-19.633737],[-60.043565,-19.342747],[-59.115042,-19.356906],[-58.183471,-19.868399],[-58.166392,-20.176701],[-57.870674,-20.732688],[-57.937156,-22.090176],[-56.88151,-22.282154],[-56.473317,-22.0863],[-55.797958,-22.35693],[-55.610683,-22.655619],[-55.517639,-23.571998],[-55.400747,-23.956935],[-55.027902,-24.001274],[-54.652834,-23.839578],[-54.29296,-24.021014],[-54.293476,-24.5708],[-54.428946,-25.162185],[-54.625291,-25.739255],[-54.788795,-26.621786],[-55.695846,-27.387837],[-56.486702,-27.548499],[-57.60976,-27.395899],[-58.618174,-27.123719],[-57.63366,-25.603657],[-57.777217,-25.16234],[-58.807128,-24.771459],[-60.028966,-24.032796],[-60.846565,-23.880713],[-62.685057,-22.249029]]]},"id":"PRY"},
+{"type":"Feature","properties":{"name":"Qatar"},"geometry":{"type":"Polygon","coordinates":[[[50.810108,24.754743],[50.743911,25.482424],[51.013352,26.006992],[51.286462,26.114582],[51.589079,25.801113],[51.6067,25.21567],[51.389608,24.627386],[51.112415,24.556331],[50.810108,24.754743]]]},"id":"QAT"},
+{"type":"Feature","properties":{"name":"Romania"},"geometry":{"type":"Polygon","coordinates":[[[22.710531,47.882194],[23.142236,48.096341],[23.760958,47.985598],[24.402056,47.981878],[24.866317,47.737526],[25.207743,47.891056],[25.945941,47.987149],[26.19745,48.220881],[26.619337,48.220726],[26.924176,48.123264],[27.233873,47.826771],[27.551166,47.405117],[28.12803,46.810476],[28.160018,46.371563],[28.054443,45.944586],[28.233554,45.488283],[28.679779,45.304031],[29.149725,45.464925],[29.603289,45.293308],[29.626543,45.035391],[29.141612,44.82021],[28.837858,44.913874],[28.558081,43.707462],[27.970107,43.812468],[27.2424,44.175986],[26.065159,43.943494],[25.569272,43.688445],[24.100679,43.741051],[23.332302,43.897011],[22.944832,43.823785],[22.65715,44.234923],[22.474008,44.409228],[22.705726,44.578003],[22.459022,44.702517],[22.145088,44.478422],[21.562023,44.768947],[21.483526,45.18117],[20.874313,45.416375],[20.762175,45.734573],[20.220192,46.127469],[21.021952,46.316088],[21.626515,46.994238],[22.099768,47.672439],[22.710531,47.882194]]]},"id":"ROU"},
+{"type":"Feature","properties":{"name":"Russia"},"geometry":{"type":"MultiPolygon","coordinates":[[[[143.648007,50.7476],[144.654148,48.976391],[143.173928,49.306551],[142.558668,47.861575],[143.533492,46.836728],[143.505277,46.137908],[142.747701,46.740765],[142.09203,45.966755],[141.906925,46.805929],[142.018443,47.780133],[141.904445,48.859189],[142.1358,49.615163],[142.179983,50.952342],[141.594076,51.935435],[141.682546,53.301966],[142.606934,53.762145],[142.209749,54.225476],[142.654786,54.365881],[142.914616,53.704578],[143.260848,52.74076],[143.235268,51.75666],[143.648007,50.7476]]],[[[22.731099,54.327537],[20.892245,54.312525],[19.66064,54.426084],[19.888481,54.86616],[21.268449,55.190482],[22.315724,55.015299],[22.757764,54.856574],[22.651052,54.582741],[22.731099,54.327537]]],[[[-175.01425,66.58435],[-174.33983,66.33556],[-174.57182,67.06219],[-171.85731,66.91308],[-169.89958,65.97724],[-170.89107,65.54139],[-172.53025,65.43791],[-172.555,64.46079],[-172.95533,64.25269],[-173.89184,64.2826],[-174.65392,64.63125],[-175.98353,64.92288],[-176.20716,65.35667],[-177.22266,65.52024],[-178.35993,65.39052],[-178.90332,65.74044],[-178.68611,66.11211],[-179.88377,65.87456],[-179.43268,65.40411],[-180,64.979709],[-180,68.963636],[-177.55,68.2],[-174.92825,67.20589],[-175.01425,66.58435]]],[[[180,70.832199],[178.903425,70.78114],[178.7253,71.0988],[180,71.515714],[180,70.832199]]],[[[-178.69378,70.89302],[-180,70.832199],[-180,71.515714],[-179.871875,71.55762],[-179.02433,71.55553],[-177.577945,71.26948],[-177.663575,71.13277],[-178.69378,70.89302]]],[[[143.60385,73.21244],[142.08763,73.20544],[140.038155,73.31692],[139.86312,73.36983],[140.81171,73.76506],[142.06207,73.85758],[143.48283,73.47525],[143.60385,73.21244]]],[[[150.73167,75.08406],[149.575925,74.68892],[147.977465,74.778355],[146.11919,75.17298],[146.358485,75.49682],[148.22223,75.345845],[150.73167,75.08406]]],[[[145.086285,75.562625],[144.3,74.82],[140.61381,74.84768],[138.95544,74.61148],[136.97439,75.26167],[137.51176,75.94917],[138.831075,76.13676],[141.471615,76.09289],[145.086285,75.562625]]],[[[57.535693,70.720464],[56.944979,70.632743],[53.677375,70.762658],[53.412017,71.206662],[51.601895,71.474759],[51.455754,72.014881],[52.478275,72.229442],[52.444169,72.774731],[54.427614,73.627548],[53.50829,73.749814],[55.902459,74.627486],[55.631933,75.081412],[57.868644,75.60939],[61.170044,76.251883],[64.498368,76.439055],[66.210977,76.809782],[68.15706,76.939697],[68.852211,76.544811],[68.180573,76.233642],[64.637326,75.737755],[61.583508,75.260885],[58.477082,74.309056],[56.986786,73.333044],[55.419336,72.371268],[55.622838,71.540595],[57.535693,70.720464]]],[[[106.97013,76.97419],[107.24,76.48],[108.1538,76.72335],[111.07726,76.71],[113.33151,76.22224],[114.13417,75.84764],[113.88539,75.32779],[112.77918,75.03186],[110.15125,74.47673],[109.4,74.18],[110.64,74.04],[112.11919,73.78774],[113.01954,73.97693],[113.52958,73.33505],[113.96881,73.59488],[115.56782,73.75285],[118.77633,73.58772],[119.02,73.12],[123.20066,72.97122],[123.25777,73.73503],[125.38,73.56],[126.97644,73.56549],[128.59126,73.03871],[129.05157,72.39872],[128.46,71.98],[129.71599,71.19304],[131.28858,70.78699],[132.2535,71.8363],[133.85766,71.38642],[135.56193,71.65525],[137.49755,71.34763],[138.23409,71.62803],[139.86983,71.48783],[139.14791,72.41619],[140.46817,72.84941],[149.5,72.2],[150.35118,71.60643],[152.9689,70.84222],[157.00688,71.03141],[158.99779,70.86672],[159.83031,70.45324],[159.70866,69.72198],[160.94053,69.43728],[162.27907,69.64204],[164.05248,69.66823],[165.94037,69.47199],[167.83567,69.58269],[169.57763,68.6938],[170.81688,69.01363],[170.0082,69.65276],[170.45345,70.09703],[173.64391,69.81743],[175.72403,69.87725],[178.6,69.4],[180,68.963636],[180,64.979709],[179.99281,64.97433],[178.7072,64.53493],[177.41128,64.60821],[178.313,64.07593],[178.90825,63.25197],[179.37034,62.98262],[179.48636,62.56894],[179.22825,62.3041],[177.3643,62.5219],[174.56929,61.76915],[173.68013,61.65261],[172.15,60.95],[170.6985,60.33618],[170.33085,59.88177],[168.90046,60.57355],[166.29498,59.78855],[165.84,60.16],[164.87674,59.7316],[163.53929,59.86871],[163.21711,59.21101],[162.01733,58.24328],[162.05297,57.83912],[163.19191,57.61503],[163.05794,56.15924],[162.12958,56.12219],[161.70146,55.28568],[162.11749,54.85514],[160.36877,54.34433],[160.02173,53.20257],[158.53094,52.95868],[158.23118,51.94269],[156.78979,51.01105],[156.42,51.7],[155.99182,53.15895],[155.43366,55.38103],[155.91442,56.76792],[156.75815,57.3647],[156.81035,57.83204],[158.36433,58.05575],[160.15064,59.31477],[161.87204,60.343],[163.66969,61.1409],[164.47355,62.55061],[163.25842,62.46627],[162.65791,61.6425],[160.12148,60.54423],[159.30232,61.77396],[156.72068,61.43442],[154.21806,59.75818],[155.04375,59.14495],[152.81185,58.88385],[151.26573,58.78089],[151.33815,59.50396],[149.78371,59.65573],[148.54481,59.16448],[145.48722,59.33637],[142.19782,59.03998],[138.95848,57.08805],[135.12619,54.72959],[136.70171,54.60355],[137.19342,53.97732],[138.1647,53.75501],[138.80463,54.25455],[139.90151,54.18968],[141.34531,53.08957],[141.37923,52.23877],[140.59742,51.23967],[140.51308,50.04553],[140.06193,48.44671],[138.55472,46.99965],[138.21971,46.30795],[136.86232,45.1435],[135.51535,43.989],[134.86939,43.39821],[133.53687,42.81147],[132.90627,42.79849],[132.27807,43.28456],[130.93587,42.55274],[130.78,42.22],[130.64,42.395],[130.633866,42.903015],[131.144688,42.92999],[131.288555,44.11152],[131.02519,44.96796],[131.883454,45.321162],[133.09712,45.14409],[133.769644,46.116927],[134.11235,47.21248],[134.50081,47.57845],[135.026311,48.47823],[133.373596,48.183442],[132.50669,47.78896],[130.98726,47.79013],[130.582293,48.729687],[129.397818,49.4406],[127.6574,49.76027],[127.287456,50.739797],[126.939157,51.353894],[126.564399,51.784255],[125.946349,52.792799],[125.068211,53.161045],[123.57147,53.4588],[122.245748,53.431726],[121.003085,53.251401],[120.177089,52.753886],[120.725789,52.516226],[120.7382,51.96411],[120.18208,51.64355],[119.27939,50.58292],[119.288461,50.142883],[117.879244,49.510983],[116.678801,49.888531],[115.485695,49.805177],[114.96211,50.140247],[114.362456,50.248303],[112.89774,49.543565],[111.581231,49.377968],[110.662011,49.130128],[109.402449,49.292961],[108.475167,49.282548],[107.868176,49.793705],[106.888804,50.274296],[105.886591,50.406019],[104.62158,50.27532],[103.676545,50.089966],[102.25589,50.51056],[102.06521,51.25991],[100.88948,51.516856],[99.981732,51.634006],[98.861491,52.047366],[97.82574,51.010995],[98.231762,50.422401],[97.25976,49.72605],[95.81402,49.97746],[94.815949,50.013433],[94.147566,50.480537],[93.10421,50.49529],[92.234712,50.802171],[90.713667,50.331812],[88.805567,49.470521],[87.751264,49.297198],[87.35997,49.214981],[86.829357,49.826675],[85.54127,49.692859],[85.11556,50.117303],[84.416377,50.3114],[83.935115,50.889246],[83.383004,51.069183],[81.945986,50.812196],[80.568447,51.388336],[80.03556,50.864751],[77.800916,53.404415],[76.525179,54.177003],[76.8911,54.490524],[74.38482,53.54685],[73.425679,53.48981],[73.508516,54.035617],[72.22415,54.376655],[71.180131,54.133285],[70.865267,55.169734],[69.068167,55.38525],[68.1691,54.970392],[65.66687,54.60125],[65.178534,54.354228],[61.4366,54.00625],[60.978066,53.664993],[61.699986,52.979996],[60.739993,52.719986],[60.927269,52.447548],[59.967534,51.96042],[61.588003,51.272659],[61.337424,50.79907],[59.932807,50.842194],[59.642282,50.545442],[58.36332,51.06364],[56.77798,51.04355],[55.71694,50.62171],[54.532878,51.02624],[52.328724,51.718652],[50.766648,51.692762],[48.702382,50.605128],[48.577841,49.87476],[47.54948,50.454698],[46.751596,49.356006],[47.043672,49.152039],[46.466446,48.394152],[47.31524,47.71585],[48.05725,47.74377],[48.694734,47.075628],[48.59325,46.56104],[49.10116,46.39933],[48.64541,45.80629],[47.67591,45.64149],[46.68201,44.6092],[47.59094,43.66016],[47.49252,42.98658],[48.58437,41.80888],[47.987283,41.405819],[47.815666,41.151416],[47.373315,41.219732],[46.686071,41.827137],[46.404951,41.860675],[45.7764,42.09244],[45.470279,42.502781],[44.537623,42.711993],[43.93121,42.55496],[43.75599,42.74083],[42.3944,43.2203],[40.92219,43.38215],[40.076965,43.553104],[39.955009,43.434998],[38.68,44.28],[37.53912,44.65721],[36.67546,45.24469],[37.40317,45.40451],[38.23295,46.24087],[37.67372,46.63657],[39.14767,47.04475],[39.1212,47.26336],[38.223538,47.10219],[38.255112,47.5464],[38.77057,47.82562],[39.738278,47.898937],[39.89562,48.23241],[39.67465,48.78382],[40.080789,49.30743],[40.06904,49.60105],[38.594988,49.926462],[38.010631,49.915662],[37.39346,50.383953],[36.626168,50.225591],[35.356116,50.577197],[35.37791,50.77394],[35.022183,51.207572],[34.224816,51.255993],[34.141978,51.566413],[34.391731,51.768882],[33.7527,52.335075],[32.715761,52.238465],[32.412058,52.288695],[32.15944,52.06125],[31.78597,52.10168],[31.540018,52.742052],[31.305201,53.073996],[31.49764,53.16743],[32.304519,53.132726],[32.693643,53.351421],[32.405599,53.618045],[31.731273,53.794029],[31.791424,53.974639],[31.384472,54.157056],[30.757534,54.811771],[30.971836,55.081548],[30.873909,55.550976],[29.896294,55.789463],[29.371572,55.670091],[29.229513,55.918344],[28.176709,56.16913],[27.855282,56.759326],[27.770016,57.244258],[27.288185,57.474528],[27.716686,57.791899],[27.42015,58.72457],[28.131699,59.300825],[27.98112,59.47537],[29.1177,60.02805],[28.07,60.50352],[30.211107,61.780028],[31.139991,62.357693],[31.516092,62.867687],[30.035872,63.552814],[30.444685,64.204453],[29.54443,64.948672],[30.21765,65.80598],[29.054589,66.944286],[29.977426,67.698297],[28.445944,68.364613],[28.59193,69.064777],[29.39955,69.15692],[31.10108,69.55811],[32.13272,69.90595],[33.77547,69.30142],[36.51396,69.06342],[40.29234,67.9324],[41.05987,67.45713],[41.12595,66.79158],[40.01583,66.26618],[38.38295,65.99953],[33.91871,66.75961],[33.18444,66.63253],[34.81477,65.90015],[34.878574,65.436213],[34.94391,64.41437],[36.23129,64.10945],[37.01273,63.84983],[37.14197,64.33471],[36.539579,64.76446],[37.17604,65.14322],[39.59345,64.52079],[40.4356,64.76446],[39.7626,65.49682],[42.09309,66.47623],[43.01604,66.41858],[43.94975,66.06908],[44.53226,66.75634],[43.69839,67.35245],[44.18795,67.95051],[43.45282,68.57079],[46.25,68.25],[46.82134,67.68997],[45.55517,67.56652],[45.56202,67.01005],[46.34915,66.66767],[47.89416,66.88455],[48.13876,67.52238],[50.22766,67.99867],[53.71743,68.85738],[54.47171,68.80815],[53.48582,68.20131],[54.72628,68.09702],[55.44268,68.43866],[57.31702,68.46628],[58.802,68.88082],[59.94142,68.27844],[61.07784,68.94069],[60.03,69.52],[60.55,69.85],[63.504,69.54739],[64.888115,69.234835],[68.51216,68.09233],[69.18068,68.61563],[68.16444,69.14436],[68.13522,69.35649],[66.93008,69.45461],[67.25976,69.92873],[66.72492,70.70889],[66.69466,71.02897],[68.54006,71.9345],[69.19636,72.84336],[69.94,73.04],[72.58754,72.77629],[72.79603,72.22006],[71.84811,71.40898],[72.47011,71.09019],[72.79188,70.39114],[72.5647,69.02085],[73.66787,68.4079],[73.2387,67.7404],[71.28,66.32],[72.42301,66.17267],[72.82077,66.53267],[73.92099,66.78946],[74.18651,67.28429],[75.052,67.76047],[74.46926,68.32899],[74.93584,68.98918],[73.84236,69.07146],[73.60187,69.62763],[74.3998,70.63175],[73.1011,71.44717],[74.89082,72.12119],[74.65926,72.83227],[75.15801,72.85497],[75.68351,72.30056],[75.28898,71.33556],[76.35911,71.15287],[75.90313,71.87401],[77.57665,72.26717],[79.65202,72.32011],[81.5,71.75],[80.61071,72.58285],[80.51109,73.6482],[82.25,73.85],[84.65526,73.80591],[86.8223,73.93688],[86.00956,74.45967],[87.16682,75.11643],[88.31571,75.14393],[90.26,75.64],[92.90058,75.77333],[93.23421,76.0472],[95.86,76.14],[96.67821,75.91548],[98.92254,76.44689],[100.75967,76.43028],[101.03532,76.86189],[101.99084,77.28754],[104.3516,77.69792],[106.06664,77.37389],[104.705,77.1274],[106.97013,76.97419]]],[[[105.07547,78.30689],[99.43814,77.921],[101.2649,79.23399],[102.08635,79.34641],[102.837815,79.28129],[105.37243,78.71334],[105.07547,78.30689]]],[[[51.136187,80.54728],[49.793685,80.415428],[48.894411,80.339567],[48.754937,80.175468],[47.586119,80.010181],[46.502826,80.247247],[47.072455,80.559424],[44.846958,80.58981],[46.799139,80.771918],[48.318477,80.78401],[48.522806,80.514569],[49.09719,80.753986],[50.039768,80.918885],[51.522933,80.699726],[51.136187,80.54728]]],[[[99.93976,78.88094],[97.75794,78.7562],[94.97259,79.044745],[93.31288,79.4265],[92.5454,80.14379],[91.18107,80.34146],[93.77766,81.0246],[95.940895,81.2504],[97.88385,80.746975],[100.186655,79.780135],[99.93976,78.88094]]]]},"id":"RUS"},
+{"type":"Feature","properties":{"name":"Rwanda"},"geometry":{"type":"Polygon","coordinates":[[[30.419105,-1.134659],[30.816135,-1.698914],[30.758309,-2.28725],[30.469696,-2.413858],[29.938359,-2.348487],[29.632176,-2.917858],[29.024926,-2.839258],[29.117479,-2.292211],[29.254835,-2.21511],[29.291887,-1.620056],[29.579466,-1.341313],[29.821519,-1.443322],[30.419105,-1.134659]]]},"id":"RWA"},
+{"type":"Feature","properties":{"name":"Western Sahara"},"geometry":{"type":"Polygon","coordinates":[[[-8.794884,27.120696],[-8.817828,27.656426],[-8.66559,27.656426],[-8.665124,27.589479],[-8.6844,27.395744],[-8.687294,25.881056],[-11.969419,25.933353],[-11.937224,23.374594],[-12.874222,23.284832],[-13.118754,22.77122],[-12.929102,21.327071],[-16.845194,21.333323],[-17.063423,20.999752],[-17.020428,21.42231],[-17.002962,21.420734],[-14.750955,21.5006],[-14.630833,21.86094],[-14.221168,22.310163],[-13.89111,23.691009],[-12.500963,24.770116],[-12.030759,26.030866],[-11.71822,26.104092],[-11.392555,26.883424],[-10.551263,26.990808],[-10.189424,26.860945],[-9.735343,26.860945],[-9.413037,27.088476],[-8.794884,27.120696]]]},"id":"-99"},
+{"type":"Feature","properties":{"name":"Saudi Arabia"},"geometry":{"type":"Polygon","coordinates":[[[42.779332,16.347891],[42.649573,16.774635],[42.347989,17.075806],[42.270888,17.474722],[41.754382,17.833046],[41.221391,18.6716],[40.939341,19.486485],[40.247652,20.174635],[39.801685,20.338862],[39.139399,21.291905],[39.023696,21.986875],[39.066329,22.579656],[38.492772,23.688451],[38.02386,24.078686],[37.483635,24.285495],[37.154818,24.858483],[37.209491,25.084542],[36.931627,25.602959],[36.639604,25.826228],[36.249137,26.570136],[35.640182,27.37652],[35.130187,28.063352],[34.632336,28.058546],[34.787779,28.607427],[34.83222,28.957483],[34.956037,29.356555],[36.068941,29.197495],[36.501214,29.505254],[36.740528,29.865283],[37.503582,30.003776],[37.66812,30.338665],[37.998849,30.5085],[37.002166,31.508413],[39.004886,32.010217],[39.195468,32.161009],[40.399994,31.889992],[41.889981,31.190009],[44.709499,29.178891],[46.568713,29.099025],[47.459822,29.002519],[47.708851,28.526063],[48.416094,28.552004],[48.807595,27.689628],[49.299554,27.461218],[49.470914,27.109999],[50.152422,26.689663],[50.212935,26.277027],[50.113303,25.943972],[50.239859,25.60805],[50.527387,25.327808],[50.660557,24.999896],[50.810108,24.754743],[51.112415,24.556331],[51.389608,24.627386],[51.579519,24.245497],[51.617708,24.014219],[52.000733,23.001154],[55.006803,22.496948],[55.208341,22.70833],[55.666659,22.000001],[54.999982,19.999994],[52.00001,19.000003],[49.116672,18.616668],[48.183344,18.166669],[47.466695,17.116682],[47.000005,16.949999],[46.749994,17.283338],[46.366659,17.233315],[45.399999,17.333335],[45.216651,17.433329],[44.062613,17.410359],[43.791519,17.319977],[43.380794,17.579987],[43.115798,17.08844],[43.218375,16.66689],[42.779332,16.347891]]]},"id":"SAU"},
+{"type":"Feature","properties":{"name":"Sudan"},"geometry":{"type":"Polygon","coordinates":[[[33.963393,9.464285],[33.824963,9.484061],[33.842131,9.981915],[33.721959,10.325262],[33.206938,10.720112],[33.086766,11.441141],[33.206938,12.179338],[32.743419,12.248008],[32.67475,12.024832],[32.073892,11.97333],[32.314235,11.681484],[32.400072,11.080626],[31.850716,10.531271],[31.352862,9.810241],[30.837841,9.707237],[29.996639,10.290927],[29.618957,10.084919],[29.515953,9.793074],[29.000932,9.604232],[28.966597,9.398224],[27.97089,9.398224],[27.833551,9.604232],[27.112521,9.638567],[26.752006,9.466893],[26.477328,9.55273],[25.962307,10.136421],[25.790633,10.411099],[25.069604,10.27376],[24.794926,9.810241],[24.537415,8.917538],[24.194068,8.728696],[23.88698,8.61973],[23.805813,8.666319],[23.459013,8.954286],[23.394779,9.265068],[23.55725,9.681218],[23.554304,10.089255],[22.977544,10.714463],[22.864165,11.142395],[22.87622,11.38461],[22.50869,11.67936],[22.49762,12.26024],[22.28801,12.64605],[21.93681,12.58818],[22.03759,12.95546],[22.29658,13.37232],[22.18329,13.78648],[22.51202,14.09318],[22.30351,14.32682],[22.56795,14.94429],[23.02459,15.68072],[23.88689,15.61084],[23.83766,19.58047],[23.85,20],[25,20.00304],[25,22],[29.02,22],[32.9,22],[36.86623,22],[37.18872,21.01885],[36.96941,20.83744],[37.1147,19.80796],[37.48179,18.61409],[37.86276,18.36786],[38.41009,17.998307],[37.904,17.42754],[37.16747,17.26314],[36.85253,16.95655],[36.75389,16.29186],[36.32322,14.82249],[36.42951,14.42211],[36.27022,13.56333],[35.86363,12.57828],[35.26049,12.08286],[34.83163,11.31896],[34.73115,10.91017],[34.25745,10.63009],[33.96162,9.58358],[33.963393,9.464285]]]},"id":"SDN"},
+{"type":"Feature","properties":{"name":"South Sudan"},"geometry":{"type":"Polygon","coordinates":[[[33.963393,9.464285],[33.97498,8.68456],[33.8255,8.37916],[33.2948,8.35458],[32.95418,7.78497],[33.56829,7.71334],[34.0751,7.22595],[34.25032,6.82607],[34.70702,6.59422],[35.298007,5.506],[34.620196,4.847123],[34.005,4.249885],[33.39,3.79],[32.68642,3.79232],[31.88145,3.55827],[31.24556,3.7819],[30.83385,3.50917],[29.95349,4.1737],[29.715995,4.600805],[29.159078,4.389267],[28.696678,4.455077],[28.428994,4.287155],[27.979977,4.408413],[27.374226,5.233944],[27.213409,5.550953],[26.465909,5.946717],[26.213418,6.546603],[25.796648,6.979316],[25.124131,7.500085],[25.114932,7.825104],[24.567369,8.229188],[23.88698,8.61973],[24.194068,8.728696],[24.537415,8.917538],[24.794926,9.810241],[25.069604,10.27376],[25.790633,10.411099],[25.962307,10.136421],[26.477328,9.55273],[26.752006,9.466893],[27.112521,9.638567],[27.833551,9.604232],[27.97089,9.398224],[28.966597,9.398224],[29.000932,9.604232],[29.515953,9.793074],[29.618957,10.084919],[29.996639,10.290927],[30.837841,9.707237],[31.352862,9.810241],[31.850716,10.531271],[32.400072,11.080626],[32.314235,11.681484],[32.073892,11.97333],[32.67475,12.024832],[32.743419,12.248008],[33.206938,12.179338],[33.086766,11.441141],[33.206938,10.720112],[33.721959,10.325262],[33.842131,9.981915],[33.824963,9.484061],[33.963393,9.464285]]]},"id":"SDS"},
+{"type":"Feature","properties":{"name":"Senegal"},"geometry":{"type":"Polygon","coordinates":[[[-16.713729,13.594959],[-17.126107,14.373516],[-17.625043,14.729541],[-17.185173,14.919477],[-16.700706,15.621527],[-16.463098,16.135036],[-16.12069,16.455663],[-15.623666,16.369337],[-15.135737,16.587282],[-14.577348,16.598264],[-14.099521,16.304302],[-13.435738,16.039383],[-12.830658,15.303692],[-12.17075,14.616834],[-12.124887,13.994727],[-11.927716,13.422075],[-11.553398,13.141214],[-11.467899,12.754519],[-11.513943,12.442988],[-11.658301,12.386583],[-12.203565,12.465648],[-12.278599,12.35444],[-12.499051,12.33209],[-13.217818,12.575874],[-13.700476,12.586183],[-15.548477,12.62817],[-15.816574,12.515567],[-16.147717,12.547762],[-16.677452,12.384852],[-16.841525,13.151394],[-15.931296,13.130284],[-15.691001,13.270353],[-15.511813,13.27857],[-15.141163,13.509512],[-14.712197,13.298207],[-14.277702,13.280585],[-13.844963,13.505042],[-14.046992,13.794068],[-14.376714,13.62568],[-14.687031,13.630357],[-15.081735,13.876492],[-15.39877,13.860369],[-15.624596,13.623587],[-16.713729,13.594959]]]},"id":"SEN"},
+{"type":"Feature","properties":{"name":"Solomon Islands"},"geometry":{"type":"MultiPolygon","coordinates":[[[[162.119025,-10.482719],[162.398646,-10.826367],[161.700032,-10.820011],[161.319797,-10.204751],[161.917383,-10.446701],[162.119025,-10.482719]]],[[[160.852229,-9.872937],[160.462588,-9.89521],[159.849447,-9.794027],[159.640003,-9.63998],[159.702945,-9.24295],[160.362956,-9.400304],[160.688518,-9.610162],[160.852229,-9.872937]]],[[[161.679982,-9.599982],[161.529397,-9.784312],[160.788253,-8.917543],[160.579997,-8.320009],[160.920028,-8.320009],[161.280006,-9.120011],[161.679982,-9.599982]]],[[[159.875027,-8.33732],[159.917402,-8.53829],[159.133677,-8.114181],[158.586114,-7.754824],[158.21115,-7.421872],[158.359978,-7.320018],[158.820001,-7.560003],[159.640003,-8.020027],[159.875027,-8.33732]]],[[[157.538426,-7.34782],[157.33942,-7.404767],[156.90203,-7.176874],[156.491358,-6.765943],[156.542828,-6.599338],[157.14,-7.021638],[157.538426,-7.34782]]]]},"id":"SLB"},
+{"type":"Feature","properties":{"name":"Sierra Leone"},"geometry":{"type":"Polygon","coordinates":[[[-11.438779,6.785917],[-11.708195,6.860098],[-12.428099,7.262942],[-12.949049,7.798646],[-13.124025,8.163946],[-13.24655,8.903049],[-12.711958,9.342712],[-12.596719,9.620188],[-12.425929,9.835834],[-12.150338,9.858572],[-11.917277,10.046984],[-11.117481,10.045873],[-10.839152,9.688246],[-10.622395,9.26791],[-10.65477,8.977178],[-10.494315,8.715541],[-10.505477,8.348896],[-10.230094,8.406206],[-10.695595,7.939464],[-11.146704,7.396706],[-11.199802,7.105846],[-11.438779,6.785917]]]},"id":"SLE"},
+{"type":"Feature","properties":{"name":"El Salvador"},"geometry":{"type":"Polygon","coordinates":[[[-87.793111,13.38448],[-87.904112,13.149017],[-88.483302,13.163951],[-88.843228,13.259734],[-89.256743,13.458533],[-89.812394,13.520622],[-90.095555,13.735338],[-90.064678,13.88197],[-89.721934,14.134228],[-89.534219,14.244816],[-89.587343,14.362586],[-89.353326,14.424133],[-89.058512,14.340029],[-88.843073,14.140507],[-88.541231,13.980155],[-88.503998,13.845486],[-88.065343,13.964626],[-87.859515,13.893312],[-87.723503,13.78505],[-87.793111,13.38448]]]},"id":"SLV"},
+{"type":"Feature","properties":{"name":"Somaliland"},"geometry":{"type":"Polygon","coordinates":[[[48.93813,9.451749],[48.486736,8.837626],[47.78942,8.003],[46.948328,7.996877],[43.67875,9.18358],[43.296975,9.540477],[42.92812,10.02194],[42.55876,10.57258],[42.776852,10.926879],[43.145305,11.46204],[43.47066,11.27771],[43.666668,10.864169],[44.117804,10.445538],[44.614259,10.442205],[45.556941,10.698029],[46.645401,10.816549],[47.525658,11.127228],[48.021596,11.193064],[48.378784,11.375482],[48.948206,11.410622],[48.942005,11.394266],[48.938491,10.982327],[48.938233,9.9735],[48.93813,9.451749]]]},"id":"-99"},
+{"type":"Feature","properties":{"name":"Somalia"},"geometry":{"type":"Polygon","coordinates":[[[49.72862,11.5789],[50.25878,11.67957],[50.73202,12.0219],[51.1112,12.02464],[51.13387,11.74815],[51.04153,11.16651],[51.04531,10.6409],[50.83418,10.27972],[50.55239,9.19874],[50.07092,8.08173],[49.4527,6.80466],[48.59455,5.33911],[47.74079,4.2194],[46.56476,2.85529],[45.56399,2.04576],[44.06815,1.05283],[43.13597,0.2922],[42.04157,-0.91916],[41.81095,-1.44647],[41.58513,-1.68325],[40.993,-0.85829],[40.98105,2.78452],[41.855083,3.918912],[42.12861,4.23413],[42.76967,4.25259],[43.66087,4.95755],[44.9636,5.00162],[47.78942,8.003],[48.486736,8.837626],[48.93813,9.451749],[48.938233,9.9735],[48.938491,10.982327],[48.942005,11.394266],[48.948205,11.410617],[49.26776,11.43033],[49.72862,11.5789]]]},"id":"SOM"},
+{"type":"Feature","properties":{"name":"Republic of Serbia"},"geometry":{"type":"Polygon","coordinates":[[[20.874313,45.416375],[21.483526,45.18117],[21.562023,44.768947],[22.145088,44.478422],[22.459022,44.702517],[22.705726,44.578003],[22.474008,44.409228],[22.65715,44.234923],[22.410446,44.008063],[22.500157,43.642814],[22.986019,43.211161],[22.604801,42.898519],[22.436595,42.580321],[22.545012,42.461362],[22.380526,42.32026],[21.91708,42.30364],[21.576636,42.245224],[21.54332,42.32025],[21.66292,42.43922],[21.77505,42.6827],[21.63302,42.67717],[21.43866,42.86255],[21.27421,42.90959],[21.143395,43.068685],[20.95651,43.13094],[20.81448,43.27205],[20.63508,43.21671],[20.49679,42.88469],[20.25758,42.81275],[20.3398,42.89852],[19.95857,43.10604],[19.63,43.21378],[19.48389,43.35229],[19.21852,43.52384],[19.454,43.5681],[19.59976,44.03847],[19.11761,44.42307],[19.36803,44.863],[19.00548,44.86023],[19.390476,45.236516],[19.072769,45.521511],[18.82982,45.90888],[19.596045,46.17173],[20.220192,46.127469],[20.762175,45.734573],[20.874313,45.416375]]]},"id":"SRB"},
+{"type":"Feature","properties":{"name":"Suriname"},"geometry":{"type":"Polygon","coordinates":[[[-57.147436,5.97315],[-55.949318,5.772878],[-55.84178,5.953125],[-55.03325,6.025291],[-53.958045,5.756548],[-54.478633,4.896756],[-54.399542,4.212611],[-54.006931,3.620038],[-54.181726,3.18978],[-54.269705,2.732392],[-54.524754,2.311849],[-55.097587,2.523748],[-55.569755,2.421506],[-55.973322,2.510364],[-56.073342,2.220795],[-55.9056,2.021996],[-55.995698,1.817667],[-56.539386,1.899523],[-57.150098,2.768927],[-57.281433,3.333492],[-57.601569,3.334655],[-58.044694,4.060864],[-57.86021,4.576801],[-57.914289,4.812626],[-57.307246,5.073567],[-57.147436,5.97315]]]},"id":"SUR"},
+{"type":"Feature","properties":{"name":"Slovakia"},"geometry":{"type":"Polygon","coordinates":[[[18.853144,49.49623],[18.909575,49.435846],[19.320713,49.571574],[19.825023,49.217125],[20.415839,49.431453],[20.887955,49.328772],[21.607808,49.470107],[22.558138,49.085738],[22.280842,48.825392],[22.085608,48.422264],[21.872236,48.319971],[20.801294,48.623854],[20.473562,48.56285],[20.239054,48.327567],[19.769471,48.202691],[19.661364,48.266615],[19.174365,48.111379],[18.777025,48.081768],[18.696513,47.880954],[17.857133,47.758429],[17.488473,47.867466],[16.979667,48.123497],[16.879983,48.470013],[16.960288,48.596982],[17.101985,48.816969],[17.545007,48.800019],[17.886485,48.903475],[17.913512,48.996493],[18.104973,49.043983],[18.170498,49.271515],[18.399994,49.315001],[18.554971,49.495015],[18.853144,49.49623]]]},"id":"SVK"},
+{"type":"Feature","properties":{"name":"Slovenia"},"geometry":{"type":"Polygon","coordinates":[[[13.806475,46.509306],[14.632472,46.431817],[15.137092,46.658703],[16.011664,46.683611],[16.202298,46.852386],[16.370505,46.841327],[16.564808,46.503751],[15.768733,46.238108],[15.67153,45.834154],[15.323954,45.731783],[15.327675,45.452316],[14.935244,45.471695],[14.595109,45.634941],[14.411968,45.466166],[13.71506,45.500324],[13.93763,45.591016],[13.69811,46.016778],[13.806475,46.509306]]]},"id":"SVN"},
+{"type":"Feature","properties":{"name":"Sweden"},"geometry":{"type":"Polygon","coordinates":[[[22.183173,65.723741],[21.213517,65.026005],[21.369631,64.413588],[19.778876,63.609554],[17.847779,62.7494],[17.119555,61.341166],[17.831346,60.636583],[18.787722,60.081914],[17.869225,58.953766],[16.829185,58.719827],[16.44771,57.041118],[15.879786,56.104302],[14.666681,56.200885],[14.100721,55.407781],[12.942911,55.361737],[12.625101,56.30708],[11.787942,57.441817],[11.027369,58.856149],[11.468272,59.432393],[12.300366,60.117933],[12.631147,61.293572],[11.992064,61.800362],[11.930569,63.128318],[12.579935,64.066219],[13.571916,64.049114],[13.919905,64.445421],[13.55569,64.787028],[15.108411,66.193867],[16.108712,67.302456],[16.768879,68.013937],[17.729182,68.010552],[17.993868,68.567391],[19.87856,68.407194],[20.025269,69.065139],[20.645593,69.106247],[21.978535,68.616846],[23.539473,67.936009],[23.56588,66.396051],[23.903379,66.006927],[22.183173,65.723741]]]},"id":"SWE"},
+{"type":"Feature","properties":{"name":"Swaziland"},"geometry":{"type":"Polygon","coordinates":[[[32.071665,-26.73382],[31.86806,-27.177927],[31.282773,-27.285879],[30.685962,-26.743845],[30.676609,-26.398078],[30.949667,-26.022649],[31.04408,-25.731452],[31.333158,-25.660191],[31.837778,-25.843332],[31.985779,-26.29178],[32.071665,-26.73382]]]},"id":"SWZ"},
+{"type":"Feature","properties":{"name":"Syria"},"geometry":{"type":"Polygon","coordinates":[[[38.792341,33.378686],[36.834062,32.312938],[35.719918,32.709192],[35.700798,32.716014],[35.836397,32.868123],[35.821101,33.277426],[36.06646,33.824912],[36.61175,34.201789],[36.448194,34.593935],[35.998403,34.644914],[35.905023,35.410009],[36.149763,35.821535],[36.41755,36.040617],[36.685389,36.259699],[36.739494,36.81752],[37.066761,36.623036],[38.167727,36.90121],[38.699891,36.712927],[39.52258,36.716054],[40.673259,37.091276],[41.212089,37.074352],[42.349591,37.229873],[41.837064,36.605854],[41.289707,36.358815],[41.383965,35.628317],[41.006159,34.419372],[38.792341,33.378686]]]},"id":"SYR"},
+{"type":"Feature","properties":{"name":"Chad"},"geometry":{"type":"Polygon","coordinates":[[[14.495787,12.859396],[14.595781,13.330427],[13.954477,13.353449],[13.956699,13.996691],[13.540394,14.367134],[13.97217,15.68437],[15.247731,16.627306],[15.300441,17.92795],[15.685741,19.95718],[15.903247,20.387619],[15.487148,20.730415],[15.47106,21.04845],[15.096888,21.308519],[14.8513,22.86295],[15.86085,23.40972],[19.84926,21.49509],[23.83766,19.58047],[23.88689,15.61084],[23.02459,15.68072],[22.56795,14.94429],[22.30351,14.32682],[22.51202,14.09318],[22.18329,13.78648],[22.29658,13.37232],[22.03759,12.95546],[21.93681,12.58818],[22.28801,12.64605],[22.49762,12.26024],[22.50869,11.67936],[22.87622,11.38461],[22.864165,11.142395],[22.231129,10.971889],[21.723822,10.567056],[21.000868,9.475985],[20.059685,9.012706],[19.094008,9.074847],[18.81201,8.982915],[18.911022,8.630895],[18.389555,8.281304],[17.96493,7.890914],[16.705988,7.508328],[16.456185,7.734774],[16.290562,7.754307],[16.106232,7.497088],[15.27946,7.421925],[15.436092,7.692812],[15.120866,8.38215],[14.979996,8.796104],[14.544467,8.965861],[13.954218,9.549495],[14.171466,10.021378],[14.627201,9.920919],[14.909354,9.992129],[15.467873,9.982337],[14.923565,10.891325],[14.960152,11.555574],[14.89336,12.21905],[14.495787,12.859396]]]},"id":"TCD"},
+{"type":"Feature","properties":{"name":"Togo"},"geometry":{"type":"Polygon","coordinates":[[[1.865241,6.142158],[1.060122,5.928837],[0.836931,6.279979],[0.570384,6.914359],[0.490957,7.411744],[0.712029,8.312465],[0.461192,8.677223],[0.365901,9.465004],[0.36758,10.191213],[-0.049785,10.706918],[0.023803,11.018682],[0.899563,10.997339],[0.772336,10.470808],[1.077795,10.175607],[1.425061,9.825395],[1.463043,9.334624],[1.664478,9.12859],[1.618951,6.832038],[1.865241,6.142158]]]},"id":"TGO"},
+{"type":"Feature","properties":{"name":"Thailand"},"geometry":{"type":"Polygon","coordinates":[[[102.584932,12.186595],[101.687158,12.64574],[100.83181,12.627085],[100.978467,13.412722],[100.097797,13.406856],[100.018733,12.307001],[99.478921,10.846367],[99.153772,9.963061],[99.222399,9.239255],[99.873832,9.207862],[100.279647,8.295153],[100.459274,7.429573],[101.017328,6.856869],[101.623079,6.740622],[102.141187,6.221636],[101.814282,5.810808],[101.154219,5.691384],[101.075516,6.204867],[100.259596,6.642825],[100.085757,6.464489],[99.690691,6.848213],[99.519642,7.343454],[98.988253,7.907993],[98.503786,8.382305],[98.339662,7.794512],[98.150009,8.350007],[98.25915,8.973923],[98.553551,9.93296],[99.038121,10.960546],[99.587286,11.892763],[99.196354,12.804748],[99.212012,13.269294],[99.097755,13.827503],[98.430819,14.622028],[98.192074,15.123703],[98.537376,15.308497],[98.903348,16.177824],[98.493761,16.837836],[97.859123,17.567946],[97.375896,18.445438],[97.797783,18.62708],[98.253724,19.708203],[98.959676,19.752981],[99.543309,20.186598],[100.115988,20.41785],[100.548881,20.109238],[100.606294,19.508344],[101.282015,19.462585],[101.035931,18.408928],[101.059548,17.512497],[102.113592,18.109102],[102.413005,17.932782],[102.998706,17.961695],[103.200192,18.309632],[103.956477,18.240954],[104.716947,17.428859],[104.779321,16.441865],[105.589039,15.570316],[105.544338,14.723934],[105.218777,14.273212],[104.281418,14.416743],[102.988422,14.225721],[102.348099,13.394247],[102.584932,12.186595]]]},"id":"THA"},
+{"type":"Feature","properties":{"name":"Tajikistan"},"geometry":{"type":"Polygon","coordinates":[[[71.014198,40.244366],[70.648019,39.935754],[69.55961,40.103211],[69.464887,39.526683],[70.549162,39.604198],[71.784694,39.279463],[73.675379,39.431237],[73.928852,38.505815],[74.257514,38.606507],[74.864816,38.378846],[74.829986,37.990007],[74.980002,37.41999],[73.948696,37.421566],[73.260056,37.495257],[72.63689,37.047558],[72.193041,36.948288],[71.844638,36.738171],[71.448693,37.065645],[71.541918,37.905774],[71.239404,37.953265],[71.348131,38.258905],[70.806821,38.486282],[70.376304,38.138396],[70.270574,37.735165],[70.116578,37.588223],[69.518785,37.608997],[69.196273,37.151144],[68.859446,37.344336],[68.135562,37.023115],[67.83,37.144994],[68.392033,38.157025],[68.176025,38.901553],[67.44222,39.140144],[67.701429,39.580478],[68.536416,39.533453],[69.011633,40.086158],[69.329495,40.727824],[70.666622,40.960213],[70.45816,40.496495],[70.601407,40.218527],[71.014198,40.244366]]]},"id":"TJK"},
+{"type":"Feature","properties":{"name":"Turkmenistan"},"geometry":{"type":"Polygon","coordinates":[[[61.210817,35.650072],[61.123071,36.491597],[60.377638,36.527383],[59.234762,37.412988],[58.436154,37.522309],[57.330434,38.029229],[56.619366,38.121394],[56.180375,37.935127],[55.511578,37.964117],[54.800304,37.392421],[53.921598,37.198918],[53.735511,37.906136],[53.880929,38.952093],[53.101028,39.290574],[53.357808,39.975286],[52.693973,40.033629],[52.915251,40.876523],[53.858139,40.631034],[54.736845,40.951015],[54.008311,41.551211],[53.721713,42.123191],[52.91675,41.868117],[52.814689,41.135371],[52.50246,41.783316],[52.944293,42.116034],[54.079418,42.324109],[54.755345,42.043971],[55.455251,41.259859],[55.968191,41.308642],[57.096391,41.32231],[56.932215,41.826026],[57.78653,42.170553],[58.629011,42.751551],[59.976422,42.223082],[60.083341,41.425146],[60.465953,41.220327],[61.547179,41.26637],[61.882714,41.084857],[62.37426,40.053886],[63.518015,39.363257],[64.170223,38.892407],[65.215999,38.402695],[66.54615,37.974685],[66.518607,37.362784],[66.217385,37.39379],[65.745631,37.661164],[65.588948,37.305217],[64.746105,37.111818],[64.546479,36.312073],[63.982896,36.007957],[63.193538,35.857166],[62.984662,35.404041],[62.230651,35.270664],[61.210817,35.650072]]]},"id":"TKM"},
+{"type":"Feature","properties":{"name":"East Timor"},"geometry":{"type":"Polygon","coordinates":[[[124.968682,-8.89279],[125.086246,-8.656887],[125.947072,-8.432095],[126.644704,-8.398247],[126.957243,-8.273345],[127.335928,-8.397317],[126.967992,-8.668256],[125.925885,-9.106007],[125.08852,-9.393173],[125.07002,-9.089987],[124.968682,-8.89279]]]},"id":"TLS"},
+{"type":"Feature","properties":{"name":"Trinidad and Tobago"},"geometry":{"type":"Polygon","coordinates":[[[-61.68,10.76],[-61.105,10.89],[-60.895,10.855],[-60.935,10.11],[-61.77,10],[-61.95,10.09],[-61.66,10.365],[-61.68,10.76]]]},"id":"TTO"},
+{"type":"Feature","properties":{"name":"Tunisia"},"geometry":{"type":"Polygon","coordinates":[[[9.48214,30.307556],[9.055603,32.102692],[8.439103,32.506285],[8.430473,32.748337],[7.612642,33.344115],[7.524482,34.097376],[8.140981,34.655146],[8.376368,35.479876],[8.217824,36.433177],[8.420964,36.946427],[9.509994,37.349994],[10.210002,37.230002],[10.18065,36.724038],[11.028867,37.092103],[11.100026,36.899996],[10.600005,36.41],[10.593287,35.947444],[10.939519,35.698984],[10.807847,34.833507],[10.149593,34.330773],[10.339659,33.785742],[10.856836,33.76874],[11.108501,33.293343],[11.488787,33.136996],[11.432253,32.368903],[10.94479,32.081815],[10.636901,31.761421],[9.950225,31.37607],[10.056575,30.961831],[9.970017,30.539325],[9.48214,30.307556]]]},"id":"TUN"},
+{"type":"Feature","properties":{"name":"Turkey"},"geometry":{"type":"MultiPolygon","coordinates":[[[[36.913127,41.335358],[38.347665,40.948586],[39.512607,41.102763],[40.373433,41.013673],[41.554084,41.535656],[42.619549,41.583173],[43.582746,41.092143],[43.752658,40.740201],[43.656436,40.253564],[44.400009,40.005],[44.79399,39.713003],[44.109225,39.428136],[44.421403,38.281281],[44.225756,37.971584],[44.772699,37.170445],[44.293452,37.001514],[43.942259,37.256228],[42.779126,37.385264],[42.349591,37.229873],[41.212089,37.074352],[40.673259,37.091276],[39.52258,36.716054],[38.699891,36.712927],[38.167727,36.90121],[37.066761,36.623036],[36.739494,36.81752],[36.685389,36.259699],[36.41755,36.040617],[36.149763,35.821535],[35.782085,36.274995],[36.160822,36.650606],[35.550936,36.565443],[34.714553,36.795532],[34.026895,36.21996],[32.509158,36.107564],[31.699595,36.644275],[30.621625,36.677865],[30.391096,36.262981],[29.699976,36.144357],[28.732903,36.676831],[27.641187,36.658822],[27.048768,37.653361],[26.318218,38.208133],[26.8047,38.98576],[26.170785,39.463612],[27.28002,40.420014],[28.819978,40.460011],[29.240004,41.219991],[31.145934,41.087622],[32.347979,41.736264],[33.513283,42.01896],[35.167704,42.040225],[36.913127,41.335358]]],[[[27.192377,40.690566],[26.358009,40.151994],[26.043351,40.617754],[26.056942,40.824123],[26.294602,40.936261],[26.604196,41.562115],[26.117042,41.826905],[27.135739,42.141485],[27.99672,42.007359],[28.115525,41.622886],[28.988443,41.299934],[28.806438,41.054962],[27.619017,40.999823],[27.192377,40.690566]]]]},"id":"TUR"},
+{"type":"Feature","properties":{"name":"Taiwan"},"geometry":{"type":"Polygon","coordinates":[[[121.777818,24.394274],[121.175632,22.790857],[120.74708,21.970571],[120.220083,22.814861],[120.106189,23.556263],[120.69468,24.538451],[121.495044,25.295459],[121.951244,24.997596],[121.777818,24.394274]]]},"id":"TWN"},
+{"type":"Feature","properties":{"name":"United Republic of Tanzania"},"geometry":{"type":"Polygon","coordinates":[[[33.903711,-0.95],[34.07262,-1.05982],[37.69869,-3.09699],[37.7669,-3.67712],[39.20222,-4.67677],[38.74054,-5.90895],[38.79977,-6.47566],[39.44,-6.84],[39.47,-7.1],[39.19469,-7.7039],[39.25203,-8.00781],[39.18652,-8.48551],[39.53574,-9.11237],[39.9496,-10.0984],[40.31659,-10.3171],[39.521,-10.89688],[38.427557,-11.285202],[37.82764,-11.26879],[37.47129,-11.56876],[36.775151,-11.594537],[36.514082,-11.720938],[35.312398,-11.439146],[34.559989,-11.52002],[34.28,-10.16],[33.940838,-9.693674],[33.73972,-9.41715],[32.759375,-9.230599],[32.191865,-8.930359],[31.556348,-8.762049],[31.157751,-8.594579],[30.74,-8.34],[30.2,-7.08],[29.62,-6.52],[29.419993,-5.939999],[29.519987,-5.419979],[29.339998,-4.499983],[29.753512,-4.452389],[30.11632,-4.09012],[30.50554,-3.56858],[30.75224,-3.35931],[30.74301,-3.03431],[30.52766,-2.80762],[30.46967,-2.41383],[30.758309,-2.28725],[30.816135,-1.698914],[30.419105,-1.134659],[30.76986,-1.01455],[31.86617,-1.02736],[33.903711,-0.95]]]},"id":"TZA"},
+{"type":"Feature","properties":{"name":"Uganda"},"geometry":{"type":"Polygon","coordinates":[[[31.86617,-1.02736],[30.76986,-1.01455],[30.419105,-1.134659],[29.821519,-1.443322],[29.579466,-1.341313],[29.587838,-0.587406],[29.8195,-0.2053],[29.875779,0.59738],[30.086154,1.062313],[30.468508,1.583805],[30.85267,1.849396],[31.174149,2.204465],[30.77332,2.33989],[30.83385,3.50917],[31.24556,3.7819],[31.88145,3.55827],[32.68642,3.79232],[33.39,3.79],[34.005,4.249885],[34.47913,3.5556],[34.59607,3.05374],[35.03599,1.90584],[34.6721,1.17694],[34.18,0.515],[33.893569,0.109814],[33.903711,-0.95],[31.86617,-1.02736]]]},"id":"UGA"},
+{"type":"Feature","properties":{"name":"Ukraine"},"geometry":{"type":"Polygon","coordinates":[[[31.785998,52.101678],[32.159412,52.061267],[32.412058,52.288695],[32.715761,52.238465],[33.7527,52.335075],[34.391731,51.768882],[34.141978,51.566413],[34.224816,51.255993],[35.022183,51.207572],[35.377924,50.773955],[35.356116,50.577197],[36.626168,50.225591],[37.39346,50.383953],[38.010631,49.915662],[38.594988,49.926462],[40.069058,49.601055],[40.080789,49.30743],[39.674664,48.783818],[39.895632,48.232405],[39.738278,47.898937],[38.770585,47.825608],[38.255112,47.5464],[38.223538,47.10219],[37.425137,47.022221],[36.759855,46.6987],[35.823685,46.645964],[34.962342,46.273197],[35.020788,45.651219],[35.510009,45.409993],[36.529998,45.46999],[36.334713,45.113216],[35.239999,44.939996],[33.882511,44.361479],[33.326421,44.564877],[33.546924,45.034771],[32.454174,45.327466],[32.630804,45.519186],[33.588162,45.851569],[33.298567,46.080598],[31.74414,46.333348],[31.675307,46.706245],[30.748749,46.5831],[30.377609,46.03241],[29.603289,45.293308],[29.149725,45.464925],[28.679779,45.304031],[28.233554,45.488283],[28.485269,45.596907],[28.659987,45.939987],[28.933717,46.25883],[28.862972,46.437889],[29.072107,46.517678],[29.170654,46.379262],[29.759972,46.349988],[30.024659,46.423937],[29.83821,46.525326],[29.908852,46.674361],[29.559674,46.928583],[29.415135,47.346645],[29.050868,47.510227],[29.122698,47.849095],[28.670891,48.118149],[28.259547,48.155562],[27.522537,48.467119],[26.857824,48.368211],[26.619337,48.220726],[26.19745,48.220881],[25.945941,47.987149],[25.207743,47.891056],[24.866317,47.737526],[24.402056,47.981878],[23.760958,47.985598],[23.142236,48.096341],[22.710531,47.882194],[22.64082,48.15024],[22.085608,48.422264],[22.280842,48.825392],[22.558138,49.085738],[22.776419,49.027395],[22.51845,49.476774],[23.426508,50.308506],[23.922757,50.424881],[24.029986,50.705407],[23.527071,51.578454],[24.005078,51.617444],[24.553106,51.888461],[25.327788,51.910656],[26.337959,51.832289],[27.454066,51.592303],[28.241615,51.572227],[28.617613,51.427714],[28.992835,51.602044],[29.254938,51.368234],[30.157364,51.416138],[30.555117,51.319503],[30.619454,51.822806],[30.927549,52.042353],[31.785998,52.101678]]]},"id":"UKR"},
+{"type":"Feature","properties":{"name":"Uruguay"},"geometry":{"type":"Polygon","coordinates":[[[-57.625133,-30.216295],[-56.976026,-30.109686],[-55.973245,-30.883076],[-55.60151,-30.853879],[-54.572452,-31.494511],[-53.787952,-32.047243],[-53.209589,-32.727666],[-53.650544,-33.202004],[-53.373662,-33.768378],[-53.806426,-34.396815],[-54.935866,-34.952647],[-55.67409,-34.752659],[-56.215297,-34.859836],[-57.139685,-34.430456],[-57.817861,-34.462547],[-58.427074,-33.909454],[-58.349611,-33.263189],[-58.132648,-33.040567],[-58.14244,-32.044504],[-57.874937,-31.016556],[-57.625133,-30.216295]]]},"id":"URY"},
+{"type":"Feature","properties":{"name":"United States of America"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.54211,19.08348],[-155.68817,18.91619],[-155.93665,19.05939],[-155.90806,19.33888],[-156.07347,19.70294],[-156.02368,19.81422],[-155.85008,19.97729],[-155.91907,20.17395],[-155.86108,20.26721],[-155.78505,20.2487],[-155.40214,20.07975],[-155.22452,19.99302],[-155.06226,19.8591],[-154.80741,19.50871],[-154.83147,19.45328],[-155.22217,19.23972],[-155.54211,19.08348]]],[[[-156.07926,20.64397],[-156.41445,20.57241],[-156.58673,20.783],[-156.70167,20.8643],[-156.71055,20.92676],[-156.61258,21.01249],[-156.25711,20.91745],[-155.99566,20.76404],[-156.07926,20.64397]]],[[[-156.75824,21.17684],[-156.78933,21.06873],[-157.32521,21.09777],[-157.25027,21.21958],[-156.75824,21.17684]]],[[[-157.65283,21.32217],[-157.70703,21.26442],[-157.7786,21.27729],[-158.12667,21.31244],[-158.2538,21.53919],[-158.29265,21.57912],[-158.0252,21.71696],[-157.94161,21.65272],[-157.65283,21.32217]]],[[[-159.34512,21.982],[-159.46372,21.88299],[-159.80051,22.06533],[-159.74877,22.1382],[-159.5962,22.23618],[-159.36569,22.21494],[-159.34512,21.982]]],[[[-94.81758,49.38905],[-94.64,48.84],[-94.32914,48.67074],[-93.63087,48.60926],[-92.61,48.45],[-91.64,48.14],[-90.83,48.27],[-89.6,48.01],[-89.272917,48.019808],[-88.378114,48.302918],[-87.439793,47.94],[-86.461991,47.553338],[-85.652363,47.220219],[-84.87608,46.900083],[-84.779238,46.637102],[-84.543749,46.538684],[-84.6049,46.4396],[-84.3367,46.40877],[-84.14212,46.512226],[-84.091851,46.275419],[-83.890765,46.116927],[-83.616131,46.116927],[-83.469551,45.994686],[-83.592851,45.816894],[-82.550925,45.347517],[-82.337763,44.44],[-82.137642,43.571088],[-82.43,42.98],[-82.9,42.43],[-83.12,42.08],[-83.142,41.975681],[-83.02981,41.832796],[-82.690089,41.675105],[-82.439278,41.675105],[-81.277747,42.209026],[-80.247448,42.3662],[-78.939362,42.863611],[-78.92,42.965],[-79.01,43.27],[-79.171674,43.466339],[-78.72028,43.625089],[-77.737885,43.629056],[-76.820034,43.628784],[-76.5,44.018459],[-76.375,44.09631],[-75.31821,44.81645],[-74.867,45.00048],[-73.34783,45.00738],[-71.50506,45.0082],[-71.405,45.255],[-71.08482,45.30524],[-70.66,45.46],[-70.305,45.915],[-69.99997,46.69307],[-69.237216,47.447781],[-68.905,47.185],[-68.23444,47.35486],[-67.79046,47.06636],[-67.79134,45.70281],[-67.13741,45.13753],[-66.96466,44.8097],[-68.03252,44.3252],[-69.06,43.98],[-70.11617,43.68405],[-70.645476,43.090238],[-70.81489,42.8653],[-70.825,42.335],[-70.495,41.805],[-70.08,41.78],[-70.185,42.145],[-69.88497,41.92283],[-69.96503,41.63717],[-70.64,41.475],[-71.12039,41.49445],[-71.86,41.32],[-72.295,41.27],[-72.87643,41.22065],[-73.71,40.931102],[-72.24126,41.11948],[-71.945,40.93],[-73.345,40.63],[-73.982,40.628],[-73.952325,40.75075],[-74.25671,40.47351],[-73.96244,40.42763],[-74.17838,39.70926],[-74.90604,38.93954],[-74.98041,39.1964],[-75.20002,39.24845],[-75.52805,39.4985],[-75.32,38.96],[-75.071835,38.782032],[-75.05673,38.40412],[-75.37747,38.01551],[-75.94023,37.21689],[-76.03127,37.2566],[-75.72205,37.93705],[-76.23287,38.319215],[-76.35,39.15],[-76.542725,38.717615],[-76.32933,38.08326],[-76.989998,38.239992],[-76.30162,37.917945],[-76.25874,36.9664],[-75.9718,36.89726],[-75.86804,36.55125],[-75.72749,35.55074],[-76.36318,34.80854],[-77.397635,34.51201],[-78.05496,33.92547],[-78.55435,33.86133],[-79.06067,33.49395],[-79.20357,33.15839],[-80.301325,32.509355],[-80.86498,32.0333],[-81.33629,31.44049],[-81.49042,30.72999],[-81.31371,30.03552],[-80.98,29.18],[-80.535585,28.47213],[-80.53,28.04],[-80.056539,26.88],[-80.088015,26.205765],[-80.13156,25.816775],[-80.38103,25.20616],[-80.68,25.08],[-81.17213,25.20126],[-81.33,25.64],[-81.71,25.87],[-82.24,26.73],[-82.70515,27.49504],[-82.85526,27.88624],[-82.65,28.55],[-82.93,29.1],[-83.70959,29.93656],[-84.1,30.09],[-85.10882,29.63615],[-85.28784,29.68612],[-85.7731,30.15261],[-86.4,30.4],[-87.53036,30.27433],[-88.41782,30.3849],[-89.18049,30.31598],[-89.593831,30.159994],[-89.413735,29.89419],[-89.43,29.48864],[-89.21767,29.29108],[-89.40823,29.15961],[-89.77928,29.30714],[-90.15463,29.11743],[-90.880225,29.148535],[-91.626785,29.677],[-92.49906,29.5523],[-93.22637,29.78375],[-93.84842,29.71363],[-94.69,29.48],[-95.60026,28.73863],[-96.59404,28.30748],[-97.14,27.83],[-97.37,27.38],[-97.38,26.69],[-97.33,26.21],[-97.14,25.87],[-97.53,25.84],[-98.24,26.06],[-99.02,26.37],[-99.3,26.84],[-99.52,27.54],[-100.11,28.11],[-100.45584,28.69612],[-100.9576,29.38071],[-101.6624,29.7793],[-102.48,29.76],[-103.11,28.97],[-103.94,29.27],[-104.45697,29.57196],[-104.70575,30.12173],[-105.03737,30.64402],[-105.63159,31.08383],[-106.1429,31.39995],[-106.50759,31.75452],[-108.24,31.754854],[-108.24194,31.34222],[-109.035,31.34194],[-111.02361,31.33472],[-113.30498,32.03914],[-114.815,32.52528],[-114.72139,32.72083],[-115.99135,32.61239],[-117.12776,32.53534],[-117.295938,33.046225],[-117.944,33.621236],[-118.410602,33.740909],[-118.519895,34.027782],[-119.081,34.078],[-119.438841,34.348477],[-120.36778,34.44711],[-120.62286,34.60855],[-120.74433,35.15686],[-121.71457,36.16153],[-122.54747,37.55176],[-122.51201,37.78339],[-122.95319,38.11371],[-123.7272,38.95166],[-123.86517,39.76699],[-124.39807,40.3132],[-124.17886,41.14202],[-124.2137,41.99964],[-124.53284,42.76599],[-124.14214,43.70838],[-124.020535,44.615895],[-123.89893,45.52341],[-124.079635,46.86475],[-124.39567,47.72017],[-124.68721,48.184433],[-124.566101,48.379715],[-123.12,48.04],[-122.58736,47.096],[-122.34,47.36],[-122.5,48.18],[-122.84,49],[-120,49],[-117.03121,49],[-116.04818,49],[-113,49],[-110.05,49],[-107.05,49],[-104.04826,48.99986],[-100.65,49],[-97.22872,49.0007],[-95.15907,49],[-95.15609,49.38425],[-94.81758,49.38905]]],[[[-153.006314,57.115842],[-154.00509,56.734677],[-154.516403,56.992749],[-154.670993,57.461196],[-153.76278,57.816575],[-153.228729,57.968968],[-152.564791,57.901427],[-152.141147,57.591059],[-153.006314,57.115842]]],[[[-165.579164,59.909987],[-166.19277,59.754441],[-166.848337,59.941406],[-167.455277,60.213069],[-166.467792,60.38417],[-165.67443,60.293607],[-165.579164,59.909987]]],[[[-171.731657,63.782515],[-171.114434,63.592191],[-170.491112,63.694975],[-169.682505,63.431116],[-168.689439,63.297506],[-168.771941,63.188598],[-169.52944,62.976931],[-170.290556,63.194438],[-170.671386,63.375822],[-171.553063,63.317789],[-171.791111,63.405846],[-171.731657,63.782515]]],[[[-155.06779,71.147776],[-154.344165,70.696409],[-153.900006,70.889989],[-152.210006,70.829992],[-152.270002,70.600006],[-150.739992,70.430017],[-149.720003,70.53001],[-147.613362,70.214035],[-145.68999,70.12001],[-144.920011,69.989992],[-143.589446,70.152514],[-142.07251,69.851938],[-140.985988,69.711998],[-140.985988,69.711998],[-140.992499,66.000029],[-140.99777,60.306397],[-140.012998,60.276838],[-139.039,60.000007],[-138.34089,59.56211],[-137.4525,58.905],[-136.47972,59.46389],[-135.47583,59.78778],[-134.945,59.27056],[-134.27111,58.86111],[-133.355549,58.410285],[-132.73042,57.69289],[-131.70781,56.55212],[-130.00778,55.91583],[-129.979994,55.284998],[-130.53611,54.802753],[-131.085818,55.178906],[-131.967211,55.497776],[-132.250011,56.369996],[-133.539181,57.178887],[-134.078063,58.123068],[-135.038211,58.187715],[-136.628062,58.212209],[-137.800006,58.499995],[-139.867787,59.537762],[-140.825274,59.727517],[-142.574444,60.084447],[-143.958881,59.99918],[-145.925557,60.45861],[-147.114374,60.884656],[-148.224306,60.672989],[-148.018066,59.978329],[-148.570823,59.914173],[-149.727858,59.705658],[-150.608243,59.368211],[-151.716393,59.155821],[-151.859433,59.744984],[-151.409719,60.725803],[-150.346941,61.033588],[-150.621111,61.284425],[-151.895839,60.727198],[-152.57833,60.061657],[-154.019172,59.350279],[-153.287511,58.864728],[-154.232492,58.146374],[-155.307491,57.727795],[-156.308335,57.422774],[-156.556097,56.979985],[-158.117217,56.463608],[-158.433321,55.994154],[-159.603327,55.566686],[-160.28972,55.643581],[-161.223048,55.364735],[-162.237766,55.024187],[-163.069447,54.689737],[-164.785569,54.404173],[-164.942226,54.572225],[-163.84834,55.039431],[-162.870001,55.348043],[-161.804175,55.894986],[-160.563605,56.008055],[-160.07056,56.418055],[-158.684443,57.016675],[-158.461097,57.216921],[-157.72277,57.570001],[-157.550274,58.328326],[-157.041675,58.918885],[-158.194731,58.615802],[-158.517218,58.787781],[-159.058606,58.424186],[-159.711667,58.93139],[-159.981289,58.572549],[-160.355271,59.071123],[-161.355003,58.670838],[-161.968894,58.671665],[-162.054987,59.266925],[-161.874171,59.633621],[-162.518059,59.989724],[-163.818341,59.798056],[-164.662218,60.267484],[-165.346388,60.507496],[-165.350832,61.073895],[-166.121379,61.500019],[-165.734452,62.074997],[-164.919179,62.633076],[-164.562508,63.146378],[-163.753332,63.219449],[-163.067224,63.059459],[-162.260555,63.541936],[-161.53445,63.455817],[-160.772507,63.766108],[-160.958335,64.222799],[-161.518068,64.402788],[-160.777778,64.788604],[-161.391926,64.777235],[-162.45305,64.559445],[-162.757786,64.338605],[-163.546394,64.55916],[-164.96083,64.446945],[-166.425288,64.686672],[-166.845004,65.088896],[-168.11056,65.669997],[-166.705271,66.088318],[-164.47471,66.57666],[-163.652512,66.57666],[-163.788602,66.077207],[-161.677774,66.11612],[-162.489715,66.735565],[-163.719717,67.116395],[-164.430991,67.616338],[-165.390287,68.042772],[-166.764441,68.358877],[-166.204707,68.883031],[-164.430811,68.915535],[-163.168614,69.371115],[-162.930566,69.858062],[-161.908897,70.33333],[-160.934797,70.44769],[-159.039176,70.891642],[-158.119723,70.824721],[-156.580825,71.357764],[-155.06779,71.147776]]]]},"id":"USA"},
+{"type":"Feature","properties":{"name":"Uzbekistan"},"geometry":{"type":"Polygon","coordinates":[[[66.518607,37.362784],[66.54615,37.974685],[65.215999,38.402695],[64.170223,38.892407],[63.518015,39.363257],[62.37426,40.053886],[61.882714,41.084857],[61.547179,41.26637],[60.465953,41.220327],[60.083341,41.425146],[59.976422,42.223082],[58.629011,42.751551],[57.78653,42.170553],[56.932215,41.826026],[57.096391,41.32231],[55.968191,41.308642],[55.928917,44.995858],[58.503127,45.586804],[58.689989,45.500014],[60.239972,44.784037],[61.05832,44.405817],[62.0133,43.504477],[63.185787,43.650075],[64.900824,43.728081],[66.098012,42.99766],[66.023392,41.994646],[66.510649,41.987644],[66.714047,41.168444],[67.985856,41.135991],[68.259896,40.662325],[68.632483,40.668681],[69.070027,41.384244],[70.388965,42.081308],[70.962315,42.266154],[71.259248,42.167711],[70.420022,41.519998],[71.157859,41.143587],[71.870115,41.3929],[73.055417,40.866033],[71.774875,40.145844],[71.014198,40.244366],[70.601407,40.218527],[70.45816,40.496495],[70.666622,40.960213],[69.329495,40.727824],[69.011633,40.086158],[68.536416,39.533453],[67.701429,39.580478],[67.44222,39.140144],[68.176025,38.901553],[68.392033,38.157025],[67.83,37.144994],[67.075782,37.356144],[66.518607,37.362784]]]},"id":"UZB"},
+{"type":"Feature","properties":{"name":"Venezuela"},"geometry":{"type":"Polygon","coordinates":[[[-71.331584,11.776284],[-71.360006,11.539994],[-71.94705,11.423282],[-71.620868,10.96946],[-71.633064,10.446494],[-72.074174,9.865651],[-71.695644,9.072263],[-71.264559,9.137195],[-71.039999,9.859993],[-71.350084,10.211935],[-71.400623,10.968969],[-70.155299,11.375482],[-70.293843,11.846822],[-69.943245,12.162307],[-69.5843,11.459611],[-68.882999,11.443385],[-68.233271,10.885744],[-68.194127,10.554653],[-67.296249,10.545868],[-66.227864,10.648627],[-65.655238,10.200799],[-64.890452,10.077215],[-64.329479,10.389599],[-64.318007,10.641418],[-63.079322,10.701724],[-61.880946,10.715625],[-62.730119,10.420269],[-62.388512,9.948204],[-61.588767,9.873067],[-60.830597,9.38134],[-60.671252,8.580174],[-60.150096,8.602757],[-59.758285,8.367035],[-60.550588,7.779603],[-60.637973,7.415],[-60.295668,7.043911],[-60.543999,6.856584],[-61.159336,6.696077],[-61.139415,6.234297],[-61.410303,5.959068],[-60.733574,5.200277],[-60.601179,4.918098],[-60.966893,4.536468],[-62.08543,4.162124],[-62.804533,4.006965],[-63.093198,3.770571],[-63.888343,4.02053],[-64.628659,4.148481],[-64.816064,4.056445],[-64.368494,3.79721],[-64.408828,3.126786],[-64.269999,2.497006],[-63.422867,2.411068],[-63.368788,2.2009],[-64.083085,1.916369],[-64.199306,1.492855],[-64.611012,1.328731],[-65.354713,1.095282],[-65.548267,0.789254],[-66.325765,0.724452],[-66.876326,1.253361],[-67.181294,2.250638],[-67.447092,2.600281],[-67.809938,2.820655],[-67.303173,3.318454],[-67.337564,3.542342],[-67.621836,3.839482],[-67.823012,4.503937],[-67.744697,5.221129],[-67.521532,5.55687],[-67.34144,6.095468],[-67.695087,6.267318],[-68.265052,6.153268],[-68.985319,6.206805],[-69.38948,6.099861],[-70.093313,6.960376],[-70.674234,7.087785],[-71.960176,6.991615],[-72.198352,7.340431],[-72.444487,7.423785],[-72.479679,7.632506],[-72.360901,8.002638],[-72.439862,8.405275],[-72.660495,8.625288],[-72.78873,9.085027],[-73.304952,9.152],[-73.027604,9.73677],[-72.905286,10.450344],[-72.614658,10.821975],[-72.227575,11.108702],[-71.973922,11.608672],[-71.331584,11.776284]]]},"id":"VEN"},
+{"type":"Feature","properties":{"name":"Vietnam"},"geometry":{"type":"Polygon","coordinates":[[[108.05018,21.55238],[106.715068,20.696851],[105.881682,19.75205],[105.662006,19.058165],[106.426817,18.004121],[107.361954,16.697457],[108.269495,16.079742],[108.877107,15.276691],[109.33527,13.426028],[109.200136,11.666859],[108.36613,11.008321],[107.220929,10.364484],[106.405113,9.53084],[105.158264,8.59976],[104.795185,9.241038],[105.076202,9.918491],[104.334335,10.486544],[105.199915,10.88931],[106.24967,10.961812],[105.810524,11.567615],[107.491403,12.337206],[107.614548,13.535531],[107.382727,14.202441],[107.564525,15.202173],[107.312706,15.908538],[106.556008,16.604284],[105.925762,17.485315],[105.094598,18.666975],[103.896532,19.265181],[104.183388,19.624668],[104.822574,19.886642],[104.435,20.758733],[103.203861,20.766562],[102.754896,21.675137],[102.170436,22.464753],[102.706992,22.708795],[103.504515,22.703757],[104.476858,22.81915],[105.329209,23.352063],[105.811247,22.976892],[106.725403,22.794268],[106.567273,22.218205],[107.04342,21.811899],[108.05018,21.55238]]]},"id":"VNM"},
+{"type":"Feature","properties":{"name":"Vanuatu"},"geometry":{"type":"MultiPolygon","coordinates":[[[[167.844877,-16.466333],[167.515181,-16.59785],[167.180008,-16.159995],[167.216801,-15.891846],[167.844877,-16.466333]]],[[[167.107712,-14.93392],[167.270028,-15.740021],[167.001207,-15.614602],[166.793158,-15.668811],[166.649859,-15.392704],[166.629137,-14.626497],[167.107712,-14.93392]]]]},"id":"VUT"},
+{"type":"Feature","properties":{"name":"West Bank"},"geometry":{"type":"Polygon","coordinates":[[[35.545665,32.393992],[35.545252,31.782505],[35.397561,31.489086],[34.927408,31.353435],[34.970507,31.616778],[35.225892,31.754341],[34.974641,31.866582],[35.18393,32.532511],[35.545665,32.393992]]]},"id":"PSE"},
+{"type":"Feature","properties":{"name":"Yemen"},"geometry":{"type":"Polygon","coordinates":[[[53.108573,16.651051],[52.385206,16.382411],[52.191729,15.938433],[52.168165,15.59742],[51.172515,15.17525],[49.574576,14.708767],[48.679231,14.003202],[48.238947,13.94809],[47.938914,14.007233],[47.354454,13.59222],[46.717076,13.399699],[45.877593,13.347764],[45.62505,13.290946],[45.406459,13.026905],[45.144356,12.953938],[44.989533,12.699587],[44.494576,12.721653],[44.175113,12.58595],[43.482959,12.6368],[43.222871,13.22095],[43.251448,13.767584],[43.087944,14.06263],[42.892245,14.802249],[42.604873,15.213335],[42.805015,15.261963],[42.702438,15.718886],[42.823671,15.911742],[42.779332,16.347891],[43.218375,16.66689],[43.115798,17.08844],[43.380794,17.579987],[43.791519,17.319977],[44.062613,17.410359],[45.216651,17.433329],[45.399999,17.333335],[46.366659,17.233315],[46.749994,17.283338],[47.000005,16.949999],[47.466695,17.116682],[48.183344,18.166669],[49.116672,18.616668],[52.00001,19.000003],[52.782184,17.349742],[53.108573,16.651051]]]},"id":"YEM"},
+{"type":"Feature","properties":{"name":"South Africa"},"geometry":{"type":"Polygon","coordinates":[[[31.521001,-29.257387],[31.325561,-29.401978],[30.901763,-29.909957],[30.622813,-30.423776],[30.055716,-31.140269],[28.925553,-32.172041],[28.219756,-32.771953],[27.464608,-33.226964],[26.419452,-33.61495],[25.909664,-33.66704],[25.780628,-33.944646],[25.172862,-33.796851],[24.677853,-33.987176],[23.594043,-33.794474],[22.988189,-33.916431],[22.574157,-33.864083],[21.542799,-34.258839],[20.689053,-34.417175],[20.071261,-34.795137],[19.616405,-34.819166],[19.193278,-34.462599],[18.855315,-34.444306],[18.424643,-33.997873],[18.377411,-34.136521],[18.244499,-33.867752],[18.25008,-33.281431],[17.92519,-32.611291],[18.24791,-32.429131],[18.221762,-31.661633],[17.566918,-30.725721],[17.064416,-29.878641],[17.062918,-29.875954],[16.344977,-28.576705],[16.824017,-28.082162],[17.218929,-28.355943],[17.387497,-28.783514],[17.836152,-28.856378],[18.464899,-29.045462],[19.002127,-28.972443],[19.894734,-28.461105],[19.895768,-24.76779],[20.165726,-24.917962],[20.758609,-25.868136],[20.66647,-26.477453],[20.889609,-26.828543],[21.605896,-26.726534],[22.105969,-26.280256],[22.579532,-25.979448],[22.824271,-25.500459],[23.312097,-25.26869],[23.73357,-25.390129],[24.211267,-25.670216],[25.025171,-25.71967],[25.664666,-25.486816],[25.765849,-25.174845],[25.941652,-24.696373],[26.485753,-24.616327],[26.786407,-24.240691],[27.11941,-23.574323],[28.017236,-22.827754],[29.432188,-22.091313],[29.839037,-22.102216],[30.322883,-22.271612],[30.659865,-22.151567],[31.191409,-22.25151],[31.670398,-23.658969],[31.930589,-24.369417],[31.752408,-25.484284],[31.837778,-25.843332],[31.333158,-25.660191],[31.04408,-25.731452],[30.949667,-26.022649],[30.676609,-26.398078],[30.685962,-26.743845],[31.282773,-27.285879],[31.86806,-27.177927],[32.071665,-26.73382],[32.83012,-26.742192],[32.580265,-27.470158],[32.462133,-28.301011],[32.203389,-28.752405],[31.521001,-29.257387]],[[28.978263,-28.955597],[28.5417,-28.647502],[28.074338,-28.851469],[27.532511,-29.242711],[26.999262,-29.875954],[27.749397,-30.645106],[28.107205,-30.545732],[28.291069,-30.226217],[28.8484,-30.070051],[29.018415,-29.743766],[29.325166,-29.257387],[28.978263,-28.955597]]]},"id":"ZAF"},
+{"type":"Feature","properties":{"name":"Zambia"},"geometry":{"type":"Polygon","coordinates":[[[32.759375,-9.230599],[33.231388,-9.676722],[33.485688,-10.525559],[33.31531,-10.79655],[33.114289,-11.607198],[33.306422,-12.435778],[32.991764,-12.783871],[32.688165,-13.712858],[33.214025,-13.97186],[30.179481,-14.796099],[30.274256,-15.507787],[29.516834,-15.644678],[28.947463,-16.043051],[28.825869,-16.389749],[28.467906,-16.4684],[27.598243,-17.290831],[27.044427,-17.938026],[26.706773,-17.961229],[26.381935,-17.846042],[25.264226,-17.73654],[25.084443,-17.661816],[25.07695,-17.578823],[24.682349,-17.353411],[24.033862,-17.295843],[23.215048,-17.523116],[22.562478,-16.898451],[21.887843,-16.08031],[21.933886,-12.898437],[24.016137,-12.911046],[23.930922,-12.565848],[24.079905,-12.191297],[23.904154,-11.722282],[24.017894,-11.237298],[23.912215,-10.926826],[24.257155,-10.951993],[24.314516,-11.262826],[24.78317,-11.238694],[25.418118,-11.330936],[25.75231,-11.784965],[26.553088,-11.92444],[27.16442,-11.608748],[27.388799,-12.132747],[28.155109,-12.272481],[28.523562,-12.698604],[28.934286,-13.248958],[29.699614,-13.257227],[29.616001,-12.178895],[29.341548,-12.360744],[28.642417,-11.971569],[28.372253,-11.793647],[28.49607,-10.789884],[28.673682,-9.605925],[28.449871,-9.164918],[28.734867,-8.526559],[29.002912,-8.407032],[30.346086,-8.238257],[30.740015,-8.340007],[31.157751,-8.594579],[31.556348,-8.762049],[32.191865,-8.930359],[32.759375,-9.230599]]]},"id":"ZMB"},
+{"type":"Feature","properties":{"name":"Zimbabwe"},"geometry":{"type":"Polygon","coordinates":[[[31.191409,-22.25151],[30.659865,-22.151567],[30.322883,-22.271612],[29.839037,-22.102216],[29.432188,-22.091313],[28.794656,-21.639454],[28.02137,-21.485975],[27.727228,-20.851802],[27.724747,-20.499059],[27.296505,-20.39152],[26.164791,-19.293086],[25.850391,-18.714413],[25.649163,-18.536026],[25.264226,-17.73654],[26.381935,-17.846042],[26.706773,-17.961229],[27.044427,-17.938026],[27.598243,-17.290831],[28.467906,-16.4684],[28.825869,-16.389749],[28.947463,-16.043051],[29.516834,-15.644678],[30.274256,-15.507787],[30.338955,-15.880839],[31.173064,-15.860944],[31.636498,-16.07199],[31.852041,-16.319417],[32.328239,-16.392074],[32.847639,-16.713398],[32.849861,-17.979057],[32.654886,-18.67209],[32.611994,-19.419383],[32.772708,-19.715592],[32.659743,-20.30429],[32.508693,-20.395292],[32.244988,-21.116489],[31.191409,-22.25151]]]},"id":"ZWE"}
+]}
diff --git a/static/vendor/d3-2.8.1/examples/delaunay/delaunay.html b/static/vendor/d3-2.8.1/examples/delaunay/delaunay.html
new file mode 100755 (executable)
index 0000000..f49762b
--- /dev/null
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Delaunay Triangulation</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+@import url("../../lib/colorbrewer/colorbrewer.css");
+
+path {
+  stroke: #000;
+  stroke-width: .5px;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500;
+
+var vertices = d3.range(500).map(function(d) {
+  return [Math.random() * w, Math.random() * h];
+});
+
+var svg = d3.select("body")
+  .append("svg")
+    .attr("width", w)
+    .attr("height", h)
+    .attr("class", "PiYG");
+
+svg.append("g")
+  .selectAll("path")
+    .data(d3.geom.delaunay(vertices))
+  .enter().append("path")
+    .attr("class", function(d, i) { return "q" + (i % 9) + "-9"; })
+    .attr("d", function(d) { return "M" + d.join("L") + "Z"; });
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/donut/donut.html b/static/vendor/d3-2.8.1/examples/donut/donut.html
new file mode 100755 (executable)
index 0000000..c50743b
--- /dev/null
@@ -0,0 +1,123 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Donut Chart</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 400,
+    h = 400,
+    r1 = Math.min(w, h) / 2,
+    r0 = r1 * .6,
+    n = 10,
+    q = 0,
+    data0 = d3.range(n).map(Math.random),
+    data1 = d3.range(n).map(Math.random),
+    data,
+    color = d3.scale.category20(),
+    arc = d3.svg.arc(),
+    donut = d3.layout.pie().sort(null);
+
+var vis = d3.select("body")
+  .append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+vis.selectAll("g.arc")
+    .data(arcs(data0, data1))
+  .enter().append("g")
+    .attr("class", "arc")
+    .attr("transform", "translate(" + r1 + "," + r1 + ")")
+  .append("path")
+    .attr("fill", function(d, i) { return color(i); })
+    .attr("d", arc);
+
+window.addEventListener("keypress", swap, false);
+
+function arcs(data0, data1) {
+  var arcs0 = donut(data0),
+      arcs1 = donut(data1),
+      i = -1,
+      arc;
+  while (++i < n) {
+    arc = arcs0[i];
+    arc.innerRadius = r0;
+    arc.outerRadius = r1;
+    arc.next = arcs1[i];
+  }
+  return arcs0;
+}
+
+function swap() {
+  d3.selectAll("g.arc > path")
+      .data(++q & 1 ? arcs(data0, data1) : arcs(data1, data0))
+      .each(transitionSplit);
+}
+
+// 1. Wedges split into two rings.
+function transitionSplit(d, i) {
+  d3.select(this)
+    .transition().duration(1000)
+      .attrTween("d", tweenArc({
+        innerRadius: i & 1 ? r0 : (r0 + r1) / 2,
+        outerRadius: i & 1 ? (r0 + r1) / 2 : r1
+      }))
+      .each("end", transitionRotate);
+}
+
+// 2. Wedges translate to be centered on their final position.
+function transitionRotate(d, i) {
+  var a0 = d.next.startAngle + d.next.endAngle,
+      a1 = d.startAngle - d.endAngle;
+  d3.select(this)
+    .transition().duration(1000)
+      .attrTween("d", tweenArc({
+        startAngle: (a0 + a1) / 2,
+        endAngle: (a0 - a1) / 2
+      }))
+      .each("end", transitionResize);
+}
+
+// 3. Wedges then update their values, changing size.
+function transitionResize(d, i) {
+  d3.select(this)
+    .transition().duration(1000)
+      .attrTween("d", tweenArc({
+        startAngle: d.next.startAngle,
+        endAngle: d.next.endAngle
+      }))
+      .each("end", transitionUnite);
+}
+
+// 4. Wedges reunite into a single ring.
+function transitionUnite(d, i) {
+  d3.select(this)
+    .transition().duration(1000)
+      .attrTween("d", tweenArc({
+        innerRadius: r0,
+        outerRadius: r1
+      }));
+}
+
+function tweenArc(b) {
+  return function(a) {
+    var i = d3.interpolate(a, b);
+    for (var key in b) a[key] = b[key]; // update data
+    return function(t) {
+      return arc(i(t));
+    };
+  };
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/dot/dot.html b/static/vendor/d3-2.8.1/examples/dot/dot.html
new file mode 100755 (executable)
index 0000000..c8bfc32
--- /dev/null
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Dot Plot</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+path.dot {
+  fill: white;
+  stroke-width: 1.5px;
+}
+
+rect {
+  fill: none;
+  stroke: black;
+  shape-rendering: crispEdges;
+}
+
+.x line, .y line {
+  stroke: #ccc;
+  shape-rendering: crispEdges;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var data = d3.range(100).map(function(i) {
+  return {x: i / 99, y: Math.random()};
+});
+
+var w = 450,
+    h = 450,
+    p = 20,
+    x = d3.scale.linear().range([0, w]),
+    y = d3.scale.linear().range([h, 0]),
+    symbol = d3.scale.ordinal().range(d3.svg.symbolTypes),
+    color = d3.scale.category10();
+
+var vis = d3.select("body")
+  .append("svg")
+    .attr("width", w + p * 2)
+    .attr("height", h + p * 2)
+  .append("g")
+    .attr("transform", "translate(" + p + "," + p + ")");
+
+var xrule = vis.selectAll("g.x")
+    .data(x.ticks(10))
+  .enter().append("g")
+    .attr("class", "x");
+
+xrule.append("line")
+    .attr("x1", x)
+    .attr("x2", x)
+    .attr("y1", 0)
+    .attr("y2", h);
+
+xrule.append("text")
+    .attr("x", x)
+    .attr("y", h + 3)
+    .attr("dy", ".71em")
+    .attr("text-anchor", "middle")
+    .text(x.tickFormat(10));
+
+var yrule = vis.selectAll("g.y")
+    .data(y.ticks(10))
+  .enter().append("g")
+    .attr("class", "y");
+
+yrule.append("line")
+    .attr("x1", 0)
+    .attr("x2", w)
+    .attr("y1", y)
+    .attr("y2", y);
+
+yrule.append("text")
+    .attr("x", -3)
+    .attr("y", y)
+    .attr("dy", ".35em")
+    .attr("text-anchor", "end")
+    .text(y.tickFormat(10));
+
+vis.append("rect")
+    .attr("width", w)
+    .attr("height", h);
+
+vis.selectAll("path.dot")
+    .data(data)
+  .enter().append("path")
+    .attr("class", "dot")
+    .attr("stroke", function(d, i) { return color(i); })
+    .attr("transform", function(d) { return "translate(" + x(d.x) + "," + y(d.y) + ")"; })
+    .attr("d", d3.svg.symbol()
+    .type(function(d, i) { return symbol(i); }));
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/drag/drag.html b/static/vendor/d3-2.8.1/examples/drag/drag.html
new file mode 100755 (executable)
index 0000000..25d3d09
--- /dev/null
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+    <style type="text/css">
+
+svg {
+  border: solid 1px #aaa;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500,
+    r = 120;
+
+var drag = d3.behavior.drag()
+    .origin(Object)
+    .on("drag", dragmove);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+
+var circle = svg.append("circle")
+    .data([{x: w / 2, y: h / 2}])
+    .attr("r", r)
+    .attr("cx", function(d) { return d.x; })
+    .attr("cy", function(d) { return d.y; })
+    .call(drag);
+
+function dragmove(d) {
+  circle
+      .attr("cx", d.x = Math.max(r, Math.min(w - r, d3.event.x)))
+      .attr("cy", d.y = Math.max(r, Math.min(h - r, d3.event.y)));
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/force/README b/static/vendor/d3-2.8.1/examples/force/README
new file mode 100755 (executable)
index 0000000..9b336d4
--- /dev/null
@@ -0,0 +1,10 @@
+The miserables.json file contains the weighted network of coappearances of
+characters in Victor Hugo's novel /Les Miserables/. Nodes represent characters
+as indicated by the labels, and edges connect any pair of characters that
+appear in the same chapter of the book. The values on the edges are the number
+of such coappearances. The data on coappearances were taken from D. E. Knuth,
+"The Stanford GraphBase: A Platform for Combinatorial Computing",
+Addison-Wesley, Reading, MA (1993).
+
+The group labels were transcribed from "Finding and evaluating community
+structure in networks" by M. E. J. Newman and M. Girvan.
diff --git a/static/vendor/d3-2.8.1/examples/force/force-bounds.html b/static/vendor/d3-2.8.1/examples/force/force-bounds.html
new file mode 100755 (executable)
index 0000000..f3a2ffd
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Force-Directed Layout</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+circle {
+  stroke-width: 1.5px;
+}
+
+line {
+  stroke: #999;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500,
+    r = 6,
+    fill = d3.scale.category20();
+
+var force = d3.layout.force()
+    .gravity(.01)
+    .charge(-120)
+    .linkDistance(30)
+    .size([w, h]);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+d3.json("miserables.json", function(json) {
+  var link = svg.selectAll("line")
+      .data(json.links)
+    .enter().append("line");
+
+  var node = svg.selectAll("circle")
+      .data(json.nodes)
+    .enter().append("circle")
+      .attr("r", r - .75)
+      .style("fill", function(d) { return fill(d.group); })
+      .style("stroke", function(d) { return d3.rgb(fill(d.group)).darker(); })
+      .call(force.drag);
+
+  force
+      .nodes(json.nodes)
+      .links(json.links)
+      .on("tick", tick)
+      .start();
+
+  function tick() {
+    node.attr("cx", function(d) { return d.x = Math.max(r, Math.min(w - r, d.x)); })
+        .attr("cy", function(d) { return d.y = Math.max(r, Math.min(h - r, d.y)); });
+
+    link.attr("x1", function(d) { return d.source.x; })
+        .attr("y1", function(d) { return d.source.y; })
+        .attr("x2", function(d) { return d.target.x; })
+        .attr("y2", function(d) { return d.target.y; });
+  }
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/force/force-cluster.html b/static/vendor/d3-2.8.1/examples/force/force-cluster.html
new file mode 100755 (executable)
index 0000000..5a647cd
--- /dev/null
@@ -0,0 +1,247 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Clustered Network</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+svg {
+  border: 1px solid #ccc;
+}
+body {
+  font: 10px sans-serif;
+}
+circle.node {
+  fill: lightsteelblue;
+  stroke: #fff;
+  stroke-width: 1.5px;
+}
+path.hull {
+  fill: lightsteelblue;
+  fill-opacity: 0.3;
+}
+line.link {
+  stroke: #333;
+  stroke-opacity: 0.5;
+  pointer-events: none;
+}
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+var w = 960,     // svg width
+    h = 600,     // svg height
+    dr = 4,      // default point radius
+    off = 15,    // cluster hull offset
+    expand = {}, // expanded clusters
+    data, net, force, hullg, hull, linkg, link, nodeg, node,
+    curve = d3.svg.line().interpolate("cardinal-closed").tension(.85),
+    fill = d3.scale.category20();
+
+function noop() { return false; }
+
+function nodeid(n) {
+  return n.size ? "_g_"+n.group : n.name;
+}
+
+function linkid(l) {
+  var u = nodeid(l.source),
+      v = nodeid(l.target);
+  return u<v ? u+"|"+v : v+"|"+u;
+}
+
+function getGroup(n) { return n.group; }
+
+// constructs the network to visualize
+function network(data, prev, index, expand) {
+  expand = expand || {};
+  var gm = {},    // group map
+      nm = {},    // node map
+      lm = {},    // link map
+      gn = {},    // previous group nodes
+      gc = {},    // previous group centroids
+      nodes = [], // output nodes
+      links = []; // output links
+
+  // process previous nodes for reuse or centroid calculation
+  if (prev) {
+    prev.nodes.forEach(function(n) {
+      var i = index(n), o;
+      if (n.size > 0) {
+        gn[i] = n;
+        n.size = 0;
+      } else {
+        o = gc[i] || (gc[i] = {x:0,y:0,count:0});
+        o.x += n.x;
+        o.y += n.y;
+        o.count += 1;
+      }
+    });
+  }
+
+  // determine nodes
+  for (var k=0; k<data.nodes.length; ++k) {
+    var n = data.nodes[k],
+        i = index(n);
+
+    if (expand[i]) {
+      // the node should be directly visible
+      nm[n.name] = nodes.length;
+      nodes.push(n);
+      if (gn[i]) {
+        // place new nodes at cluster location (plus jitter)
+        n.x = gn[i].x + Math.random();
+        n.y = gn[i].y + Math.random();
+      }
+    } else {
+      // the node is part of a collapsed cluster
+      var l = gm[i] || (gm[i]=gn[i]) || (gm[i]={group:i, size:0, nodes:[]});
+      if (l.size == 0) {
+        // if new cluster, add to set and position at centroid of leaf nodes
+        nm[i] = nodes.length;
+        nodes.push(l);
+        if (gc[i]) {
+          l.x = gc[i].x / gc[i].count;
+          l.y = gc[i].y / gc[i].count;
+        }
+      }
+      l.size += 1;
+      l.nodes.push(n);
+    }
+  }
+
+  // determine links
+  for (k=0; k<data.links.length; ++k) {
+    var e = data.links[k],
+        u = index(e.source),
+        v = index(e.target);
+    u = expand[u] ? nm[e.source.name] : nm[u];
+    v = expand[v] ? nm[e.target.name] : nm[v];
+    var i = (u<v ? u+"|"+v : v+"|"+u),
+        l = lm[i] || (lm[i] = {source:u, target:v, size:0});
+    l.size += 1;
+  }
+  for (i in lm) { links.push(lm[i]); }
+
+  return {nodes: nodes, links: links};
+}
+
+function convexHulls(nodes, index, offset) {
+  var h = {};
+
+  // create point sets
+  for (var k=0; k<nodes.length; ++k) {
+    var n = nodes[k];
+    if (n.size) continue;
+    var i = index(n),
+        l = h[i] || (h[i] = []);
+    l.push([n.x-offset, n.y-offset]);
+    l.push([n.x-offset, n.y+offset]);
+    l.push([n.x+offset, n.y-offset]);
+    l.push([n.x+offset, n.y+offset]);
+  }
+
+  // create convex hulls
+  var hulls = [];
+  for (i in h) {
+    hulls.push({group: i, path: d3.geom.hull(h[i])});
+  }
+
+  return hulls;
+}
+
+function drawCluster(d) {
+  return curve(d.path); // 0.8
+}
+
+// --------------------------------------------------------
+
+var body = d3.select("body");
+
+var vis = body.append("svg")
+   .attr("width", w)
+   .attr("height", h);
+
+d3.json("miserables.json", function(json) {
+  data = json;
+  for (var i=0; i<data.links.length; ++i) {
+    o = data.links[i];
+    o.source = data.nodes[o.source];
+    o.target = data.nodes[o.target];
+  }
+
+  hullg = vis.append("g");
+  linkg = vis.append("g");
+  nodeg = vis.append("g");
+
+  init();
+
+  vis.attr("opacity", 1e-6)
+    .transition()
+      .duration(1000)
+      .attr("opacity", 1);
+});
+
+function init() {
+  if (force) force.stop();
+
+  net = network(data, net, getGroup, expand);
+
+  force = d3.layout.force()
+      .nodes(net.nodes)
+      .links(net.links)
+      .size([w, h])
+      .linkDistance(50)
+      .start();
+
+  hullg.selectAll("path.hull").remove();
+  hull = hullg.selectAll("path.hull")
+      .data(convexHulls(net.nodes, getGroup, off))
+    .enter().append("path")
+      .attr("class", "hull")
+      .attr("d", drawCluster)
+      .style("fill", function(d) { return fill(d.group); })
+      .on("dblclick", function(d) { expand[d.group] = false; init(); });
+
+  link = linkg.selectAll("line.link").data(net.links, linkid);
+  link.exit().remove();
+  link.enter().append("line")
+      .attr("class", "link")
+      .attr("x1", function(d) { return d.source.x; })
+      .attr("y1", function(d) { return d.source.y; })
+      .attr("x2", function(d) { return d.target.x; })
+      .attr("y2", function(d) { return d.target.y; })
+      .style("stroke-width", function(d) { return d.size || 1; });
+
+  node = nodeg.selectAll("circle.node").data(net.nodes, nodeid);
+  node.exit().remove();
+  node.enter().append("circle")
+      .attr("class", function(d) { return "node" + (d.size?"":" leaf"); })
+      .attr("r", function(d) { return d.size ? d.size + dr : dr+1; })
+      .attr("cx", function(d) { return d.x; })
+      .attr("cy", function(d) { return d.y; })
+      .style("fill", function(d) { return fill(d.group); })
+      .on("dblclick", function(d) {
+        if (d.size) { expand[d.group] = true; init(); }
+      });
+
+  node.call(force.drag);
+
+  force.on("tick", function() {
+    if (!hull.empty()) {
+      hull.data(convexHulls(net.nodes, getGroup, off))
+          .attr("d", drawCluster);
+    }
+
+    link.attr("x1", function(d) { return d.source.x; })
+        .attr("y1", function(d) { return d.source.y; })
+        .attr("x2", function(d) { return d.target.x; })
+        .attr("y2", function(d) { return d.target.y; });
+
+    node.attr("cx", function(d) { return d.x; })
+        .attr("cy", function(d) { return d.y; });
+  });
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/force/force-collapsible.html b/static/vendor/d3-2.8.1/examples/force/force-collapsible.html
new file mode 100755 (executable)
index 0000000..add0668
--- /dev/null
@@ -0,0 +1,142 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Force-Directed Graph</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+circle.node {
+  cursor: pointer;
+  stroke: #000;
+  stroke-width: .5px;
+}
+
+line.link {
+  fill: none;
+  stroke: #9ecae1;
+  stroke-width: 1.5px;
+}
+
+    </style>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500,
+    node,
+    link,
+    root;
+
+var force = d3.layout.force()
+    .on("tick", tick)
+    .charge(function(d) { return d._children ? -d.size / 100 : -30; })
+    .linkDistance(function(d) { return d.target._children ? 80 : 30; })
+    .size([w, h]);
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+d3.json("../data/flare.json", function(json) {
+  root = json;
+  root.fixed = true;
+  root.x = w / 2;
+  root.y = h / 2;
+  update();
+});
+
+function update() {
+  var nodes = flatten(root),
+      links = d3.layout.tree().links(nodes);
+
+  // Restart the force layout.
+  force
+      .nodes(nodes)
+      .links(links)
+      .start();
+
+  // Update the links…
+  link = vis.selectAll("line.link")
+      .data(links, function(d) { return d.target.id; });
+
+  // Enter any new links.
+  link.enter().insert("line", ".node")
+      .attr("class", "link")
+      .attr("x1", function(d) { return d.source.x; })
+      .attr("y1", function(d) { return d.source.y; })
+      .attr("x2", function(d) { return d.target.x; })
+      .attr("y2", function(d) { return d.target.y; });
+
+  // Exit any old links.
+  link.exit().remove();
+
+  // Update the nodes…
+  node = vis.selectAll("circle.node")
+      .data(nodes, function(d) { return d.id; })
+      .style("fill", color);
+
+  node.transition()
+      .attr("r", function(d) { return d.children ? 4.5 : Math.sqrt(d.size) / 10; });
+
+  // Enter any new nodes.
+  node.enter().append("circle")
+      .attr("class", "node")
+      .attr("cx", function(d) { return d.x; })
+      .attr("cy", function(d) { return d.y; })
+      .attr("r", function(d) { return d.children ? 4.5 : Math.sqrt(d.size) / 10; })
+      .style("fill", color)
+      .on("click", click)
+      .call(force.drag);
+
+  // Exit any old nodes.
+  node.exit().remove();
+}
+
+function tick() {
+  link.attr("x1", function(d) { return d.source.x; })
+      .attr("y1", function(d) { return d.source.y; })
+      .attr("x2", function(d) { return d.target.x; })
+      .attr("y2", function(d) { return d.target.y; });
+
+  node.attr("cx", function(d) { return d.x; })
+      .attr("cy", function(d) { return d.y; });
+}
+
+// Color leaf nodes orange, and packages white or blue.
+function color(d) {
+  return d._children ? "#3182bd" : d.children ? "#c6dbef" : "#fd8d3c";
+}
+
+// Toggle children on click.
+function click(d) {
+  if (d.children) {
+    d._children = d.children;
+    d.children = null;
+  } else {
+    d.children = d._children;
+    d._children = null;
+  }
+  update();
+}
+
+// Returns a list of all nodes under the root.
+function flatten(root) {
+  var nodes = [], i = 0;
+
+  function recurse(node) {
+    if (node.children) node.size = node.children.reduce(function(p, v) { return p + recurse(v); }, 0);
+    if (!node.id) node.id = ++i;
+    nodes.push(node);
+    return node.size;
+  }
+
+  root.size = recurse(root);
+  return nodes;
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/force/force-dynamic.html b/static/vendor/d3-2.8.1/examples/force/force-dynamic.html
new file mode 100755 (executable)
index 0000000..730499e
--- /dev/null
@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Force-Directed Layout (Dynamic)</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+rect {
+  fill: #fff;
+}
+
+.node {
+  fill: #000;
+}
+
+.cursor {
+  fill: none;
+  stroke: brown;
+  pointer-events: none;
+}
+
+.link {
+  stroke: #999;
+}
+
+    </style>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500,
+    fill = d3.scale.category20(),
+    nodes = [],
+    links = [];
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+vis.append("rect")
+    .attr("width", w)
+    .attr("height", h);
+
+var force = d3.layout.force()
+    .distance(30)
+    .nodes(nodes)
+    .links(links)
+    .size([w, h]);
+
+var cursor = vis.append("circle")
+    .attr("r", 30)
+    .attr("transform", "translate(-100,-100)")
+    .attr("class", "cursor");
+
+force.on("tick", function() {
+  vis.selectAll("line.link")
+      .attr("x1", function(d) { return d.source.x; })
+      .attr("y1", function(d) { return d.source.y; })
+      .attr("x2", function(d) { return d.target.x; })
+      .attr("y2", function(d) { return d.target.y; });
+
+  vis.selectAll("circle.node")
+      .attr("cx", function(d) { return d.x; })
+      .attr("cy", function(d) { return d.y; });
+});
+
+vis.on("mousemove", function() {
+  cursor.attr("transform", "translate(" + d3.mouse(this) + ")");
+});
+
+vis.on("mousedown", function() {
+  var point = d3.mouse(this),
+      node = {x: point[0], y: point[1]},
+      n = nodes.push(node);
+
+  // add links to any nearby nodes
+  nodes.forEach(function(target) {
+    var x = target.x - node.x,
+        y = target.y - node.y;
+    if (Math.sqrt(x * x + y * y) < 30) {
+      links.push({source: node, target: target});
+    }
+  });
+
+  restart();
+});
+
+restart();
+
+function restart() {
+  force.start();
+
+  vis.selectAll("line.link")
+      .data(links)
+    .enter().insert("line", "circle.node")
+      .attr("class", "link")
+      .attr("x1", function(d) { return d.source.x; })
+      .attr("y1", function(d) { return d.source.y; })
+      .attr("x2", function(d) { return d.target.x; })
+      .attr("y2", function(d) { return d.target.y; });
+
+  vis.selectAll("circle.node")
+      .data(nodes)
+    .enter().insert("circle", "circle.cursor")
+      .attr("class", "node")
+      .attr("cx", function(d) { return d.x; })
+      .attr("cy", function(d) { return d.y; })
+      .attr("r", 4.5)
+      .call(force.drag);
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/force/force-html.html b/static/vendor/d3-2.8.1/examples/force/force-html.html
new file mode 100755 (executable)
index 0000000..4f16114
--- /dev/null
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Force-Directed Layout</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+div.node {
+  border-radius: 6px;
+  width: 12px;
+  height: 12px;
+  margin: -6px 0 0 -6px;
+  position: absolute;
+}
+
+div.link {
+  position: absolute;
+  border-bottom: solid #999 1px;
+  height: 0;
+  -webkit-transform-origin: 0 0;
+  -moz-transform-origin: 0 0;
+  -ms-transform-origin: 0 0;
+  -o-transform-origin: 0 0;
+  transform-origin: 0 0;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500,
+    r = 6,
+    fill = d3.scale.category20();
+
+var force = d3.layout.force()
+    .charge(-120)
+    .linkDistance(30)
+    .size([w, h]);
+
+var vis = d3.select("body").append("div")
+    .style("width", w + "px")
+    .style("height", h + "px");
+
+d3.json("miserables.json", function(json) {
+  var link = vis.selectAll("div.link")
+      .data(json.links)
+    .enter().append("div")
+      .attr("class", "link");
+
+  var node = vis.selectAll("div.node")
+      .data(json.nodes)
+    .enter().append("div")
+      .attr("class", "node")
+      .style("background", function(d) { return fill(d.group); })
+      .style("border-color", function(d) { return d3.rgb(fill(d.group)).darker(); })
+      .call(force.drag);
+
+  force
+      .nodes(json.nodes)
+      .links(json.links)
+      .on("tick", tick)
+      .start();
+
+  function tick() {
+    node.style("left", function(d) { return (d.x = Math.max(r, Math.min(w - r, d.x))) + "px"; })
+        .style("top", function(d) { return (d.y = Math.max(r, Math.min(h - r, d.y))) + "px"; });
+
+    link.style("left", function(d) { return d.source.x + "px"; })
+        .style("top", function(d) { return d.source.y + "px"; })
+        .style("width", length)
+        .style("-webkit-transform", transform)
+        .style("-moz-transform", transform)
+        .style("-ms-transform", transform)
+        .style("-o-transform", transform)
+        .style("transform", transform);
+  }
+
+  function transform(d) {
+    return "rotate(" + Math.atan2(d.target.y - d.source.y, d.target.x - d.source.x) * 180 / Math.PI + "deg)";
+  }
+
+  function length(d) {
+    var dx = d.target.x - d.source.x,
+        dy = d.target.y - d.source.y;
+    return Math.sqrt(dx * dx + dy * dy) + "px";
+  }
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/force/force-map.html b/static/vendor/d3-2.8.1/examples/force/force-map.html
new file mode 100755 (executable)
index 0000000..04409f9
--- /dev/null
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Force-Directed Map</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+path {
+  fill: #ddd;
+  fill-opacity: .8;
+  stroke: #fff;
+  stroke-width: 1.5px;
+}
+
+line {
+  stroke: #999;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500;
+
+var path = d3.geo.path(),
+    force = d3.layout.force().size([w, h]);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+d3.json("../data/us-states.json", function(states) {
+  var nodes = [],
+      links = [];
+
+  states.features.forEach(function(d, i) {
+    if (d.id == "02" || d.id == "15" || d.id == "72") return;
+    var centroid = path.centroid(d);
+    centroid.x = centroid[0];
+    centroid.y = centroid[1];
+    centroid.feature = d;
+    nodes.push(centroid);
+  });
+
+  d3.geom.delaunay(nodes).forEach(function(d) {
+    links.push(edge(d[0], d[1]));
+    links.push(edge(d[1], d[2]));
+    links.push(edge(d[2], d[0]));
+  });
+
+  force
+      .gravity(0)
+      .charge(0)
+      .nodes(nodes)
+      .links(links)
+      .linkDistance(function(d) { return d.distance; })
+      .start();
+
+  var link = svg.selectAll("line")
+      .data(links)
+    .enter().append("line")
+      .attr("x1", function(d) { return d.source.x; })
+      .attr("y1", function(d) { return d.source.y; })
+      .attr("x2", function(d) { return d.target.x; })
+      .attr("y2", function(d) { return d.target.y; });
+
+  var node = svg.selectAll("g")
+      .data(nodes)
+    .enter().append("g")
+      .attr("transform", function(d) { return "translate(" + -d.x + "," + -d.y + ")"; })
+      .call(force.drag)
+    .append("path")
+      .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
+      .attr("d", function(d) { return path(d.feature); });
+
+  force.on("tick", function(e) {
+    link.attr("x1", function(d) { return d.source.x; })
+        .attr("y1", function(d) { return d.source.y; })
+        .attr("x2", function(d) { return d.target.x; })
+        .attr("y2", function(d) { return d.target.y; });
+
+    node.attr("transform", function(d) {
+      return "translate(" + d.x + "," + d.y + ")";
+    });
+  });
+});
+
+function edge(a, b) {
+  var dx = a[0] - b[0], dy = a[1] - b[1];
+  return {
+    source: a,
+    target: b,
+    distance: Math.sqrt(dx * dx + dy * dy)
+  };
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/force/force-multi-foci.html b/static/vendor/d3-2.8.1/examples/force/force-multi-foci.html
new file mode 100755 (executable)
index 0000000..fe4e484
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Force-Directed Layout (Multiple Foci)</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500,
+    fill = d3.scale.category10(),
+    nodes = d3.range(100).map(Object);
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+var force = d3.layout.force()
+    .nodes(nodes)
+    .links([])
+    .size([w, h])
+    .start();
+
+var node = vis.selectAll("circle.node")
+    .data(nodes)
+  .enter().append("circle")
+    .attr("class", "node")
+    .attr("cx", function(d) { return d.x; })
+    .attr("cy", function(d) { return d.y; })
+    .attr("r", 8)
+    .style("fill", function(d, i) { return fill(i & 3); })
+    .style("stroke", function(d, i) { return d3.rgb(fill(i & 3)).darker(2); })
+    .style("stroke-width", 1.5)
+    .call(force.drag);
+
+vis.style("opacity", 1e-6)
+  .transition()
+    .duration(1000)
+    .style("opacity", 1);
+
+force.on("tick", function(e) {
+
+  // Push different nodes in different directions for clustering.
+  var k = 6 * e.alpha;
+  nodes.forEach(function(o, i) {
+    o.x += i & 2 ? k : -k;
+    o.y += i & 1 ? k : -k;
+  });
+
+  node.attr("cx", function(d) { return d.x; })
+      .attr("cy", function(d) { return d.y; });
+});
+
+d3.select("body").on("click", function() {
+  nodes.forEach(function(o, i) {
+    o.x += (Math.random() - .5) * 40;
+    o.y += (Math.random() - .5) * 40;
+  });
+  force.resume();
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/force/force.css b/static/vendor/d3-2.8.1/examples/force/force.css
new file mode 100755 (executable)
index 0000000..88bce01
--- /dev/null
@@ -0,0 +1,9 @@
+circle.node {
+  stroke: #fff;
+  stroke-width: 1.5px;
+}
+
+line.link {
+  stroke: #999;
+  stroke-opacity: .6;
+}
diff --git a/static/vendor/d3-2.8.1/examples/force/force.html b/static/vendor/d3-2.8.1/examples/force/force.html
new file mode 100755 (executable)
index 0000000..f4fd7f9
--- /dev/null
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Force-Directed Layout</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="force.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="force.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/force/force.js b/static/vendor/d3-2.8.1/examples/force/force.js
new file mode 100755 (executable)
index 0000000..760f9ce
--- /dev/null
@@ -0,0 +1,47 @@
+var width = 960,
+    height = 500;
+
+var color = d3.scale.category20();
+
+var force = d3.layout.force()
+    .charge(-120)
+    .linkDistance(30)
+    .size([width, height]);
+
+var svg = d3.select("#chart").append("svg")
+    .attr("width", width)
+    .attr("height", height);
+
+d3.json("miserables.json", function(json) {
+  force
+      .nodes(json.nodes)
+      .links(json.links)
+      .start();
+
+  var link = svg.selectAll("line.link")
+      .data(json.links)
+    .enter().append("line")
+      .attr("class", "link")
+      .style("stroke-width", function(d) { return Math.sqrt(d.value); });
+
+  var node = svg.selectAll("circle.node")
+      .data(json.nodes)
+    .enter().append("circle")
+      .attr("class", "node")
+      .attr("r", 5)
+      .style("fill", function(d) { return color(d.group); })
+      .call(force.drag);
+
+  node.append("title")
+      .text(function(d) { return d.name; });
+
+  force.on("tick", function() {
+    link.attr("x1", function(d) { return d.source.x; })
+        .attr("y1", function(d) { return d.source.y; })
+        .attr("x2", function(d) { return d.target.x; })
+        .attr("y2", function(d) { return d.target.y; });
+
+    node.attr("cx", function(d) { return d.x; })
+        .attr("cy", function(d) { return d.y; });
+  });
+});
diff --git a/static/vendor/d3-2.8.1/examples/force/miserables.json b/static/vendor/d3-2.8.1/examples/force/miserables.json
new file mode 100755 (executable)
index 0000000..8ac8437
--- /dev/null
@@ -0,0 +1 @@
+{"nodes":[{"name":"Myriel","group":1},{"name":"Napoleon","group":1},{"name":"Mlle.Baptistine","group":1},{"name":"Mme.Magloire","group":1},{"name":"CountessdeLo","group":1},{"name":"Geborand","group":1},{"name":"Champtercier","group":1},{"name":"Cravatte","group":1},{"name":"Count","group":1},{"name":"OldMan","group":1},{"name":"Labarre","group":2},{"name":"Valjean","group":2},{"name":"Marguerite","group":3},{"name":"Mme.deR","group":2},{"name":"Isabeau","group":2},{"name":"Gervais","group":2},{"name":"Tholomyes","group":3},{"name":"Listolier","group":3},{"name":"Fameuil","group":3},{"name":"Blacheville","group":3},{"name":"Favourite","group":3},{"name":"Dahlia","group":3},{"name":"Zephine","group":3},{"name":"Fantine","group":3},{"name":"Mme.Thenardier","group":4},{"name":"Thenardier","group":4},{"name":"Cosette","group":5},{"name":"Javert","group":4},{"name":"Fauchelevent","group":0},{"name":"Bamatabois","group":2},{"name":"Perpetue","group":3},{"name":"Simplice","group":2},{"name":"Scaufflaire","group":2},{"name":"Woman1","group":2},{"name":"Judge","group":2},{"name":"Champmathieu","group":2},{"name":"Brevet","group":2},{"name":"Chenildieu","group":2},{"name":"Cochepaille","group":2},{"name":"Pontmercy","group":4},{"name":"Boulatruelle","group":6},{"name":"Eponine","group":4},{"name":"Anzelma","group":4},{"name":"Woman2","group":5},{"name":"MotherInnocent","group":0},{"name":"Gribier","group":0},{"name":"Jondrette","group":7},{"name":"Mme.Burgon","group":7},{"name":"Gavroche","group":8},{"name":"Gillenormand","group":5},{"name":"Magnon","group":5},{"name":"Mlle.Gillenormand","group":5},{"name":"Mme.Pontmercy","group":5},{"name":"Mlle.Vaubois","group":5},{"name":"Lt.Gillenormand","group":5},{"name":"Marius","group":8},{"name":"BaronessT","group":5},{"name":"Mabeuf","group":8},{"name":"Enjolras","group":8},{"name":"Combeferre","group":8},{"name":"Prouvaire","group":8},{"name":"Feuilly","group":8},{"name":"Courfeyrac","group":8},{"name":"Bahorel","group":8},{"name":"Bossuet","group":8},{"name":"Joly","group":8},{"name":"Grantaire","group":8},{"name":"MotherPlutarch","group":9},{"name":"Gueulemer","group":4},{"name":"Babet","group":4},{"name":"Claquesous","group":4},{"name":"Montparnasse","group":4},{"name":"Toussaint","group":5},{"name":"Child1","group":10},{"name":"Child2","group":10},{"name":"Brujon","group":4},{"name":"Mme.Hucheloup","group":8}],"links":[{"source":1,"target":0,"value":1},{"source":2,"target":0,"value":8},{"source":3,"target":0,"value":10},{"source":3,"target":2,"value":6},{"source":4,"target":0,"value":1},{"source":5,"target":0,"value":1},{"source":6,"target":0,"value":1},{"source":7,"target":0,"value":1},{"source":8,"target":0,"value":2},{"source":9,"target":0,"value":1},{"source":11,"target":10,"value":1},{"source":11,"target":3,"value":3},{"source":11,"target":2,"value":3},{"source":11,"target":0,"value":5},{"source":12,"target":11,"value":1},{"source":13,"target":11,"value":1},{"source":14,"target":11,"value":1},{"source":15,"target":11,"value":1},{"source":17,"target":16,"value":4},{"source":18,"target":16,"value":4},{"source":18,"target":17,"value":4},{"source":19,"target":16,"value":4},{"source":19,"target":17,"value":4},{"source":19,"target":18,"value":4},{"source":20,"target":16,"value":3},{"source":20,"target":17,"value":3},{"source":20,"target":18,"value":3},{"source":20,"target":19,"value":4},{"source":21,"target":16,"value":3},{"source":21,"target":17,"value":3},{"source":21,"target":18,"value":3},{"source":21,"target":19,"value":3},{"source":21,"target":20,"value":5},{"source":22,"target":16,"value":3},{"source":22,"target":17,"value":3},{"source":22,"target":18,"value":3},{"source":22,"target":19,"value":3},{"source":22,"target":20,"value":4},{"source":22,"target":21,"value":4},{"source":23,"target":16,"value":3},{"source":23,"target":17,"value":3},{"source":23,"target":18,"value":3},{"source":23,"target":19,"value":3},{"source":23,"target":20,"value":4},{"source":23,"target":21,"value":4},{"source":23,"target":22,"value":4},{"source":23,"target":12,"value":2},{"source":23,"target":11,"value":9},{"source":24,"target":23,"value":2},{"source":24,"target":11,"value":7},{"source":25,"target":24,"value":13},{"source":25,"target":23,"value":1},{"source":25,"target":11,"value":12},{"source":26,"target":24,"value":4},{"source":26,"target":11,"value":31},{"source":26,"target":16,"value":1},{"source":26,"target":25,"value":1},{"source":27,"target":11,"value":17},{"source":27,"target":23,"value":5},{"source":27,"target":25,"value":5},{"source":27,"target":24,"value":1},{"source":27,"target":26,"value":1},{"source":28,"target":11,"value":8},{"source":28,"target":27,"value":1},{"source":29,"target":23,"value":1},{"source":29,"target":27,"value":1},{"source":29,"target":11,"value":2},{"source":30,"target":23,"value":1},{"source":31,"target":30,"value":2},{"source":31,"target":11,"value":3},{"source":31,"target":23,"value":2},{"source":31,"target":27,"value":1},{"source":32,"target":11,"value":1},{"source":33,"target":11,"value":2},{"source":33,"target":27,"value":1},{"source":34,"target":11,"value":3},{"source":34,"target":29,"value":2},{"source":35,"target":11,"value":3},{"source":35,"target":34,"value":3},{"source":35,"target":29,"value":2},{"source":36,"target":34,"value":2},{"source":36,"target":35,"value":2},{"source":36,"target":11,"value":2},{"source":36,"target":29,"value":1},{"source":37,"target":34,"value":2},{"source":37,"target":35,"value":2},{"source":37,"target":36,"value":2},{"source":37,"target":11,"value":2},{"source":37,"target":29,"value":1},{"source":38,"target":34,"value":2},{"source":38,"target":35,"value":2},{"source":38,"target":36,"value":2},{"source":38,"target":37,"value":2},{"source":38,"target":11,"value":2},{"source":38,"target":29,"value":1},{"source":39,"target":25,"value":1},{"source":40,"target":25,"value":1},{"source":41,"target":24,"value":2},{"source":41,"target":25,"value":3},{"source":42,"target":41,"value":2},{"source":42,"target":25,"value":2},{"source":42,"target":24,"value":1},{"source":43,"target":11,"value":3},{"source":43,"target":26,"value":1},{"source":43,"target":27,"value":1},{"source":44,"target":28,"value":3},{"source":44,"target":11,"value":1},{"source":45,"target":28,"value":2},{"source":47,"target":46,"value":1},{"source":48,"target":47,"value":2},{"source":48,"target":25,"value":1},{"source":48,"target":27,"value":1},{"source":48,"target":11,"value":1},{"source":49,"target":26,"value":3},{"source":49,"target":11,"value":2},{"source":50,"target":49,"value":1},{"source":50,"target":24,"value":1},{"source":51,"target":49,"value":9},{"source":51,"target":26,"value":2},{"source":51,"target":11,"value":2},{"source":52,"target":51,"value":1},{"source":52,"target":39,"value":1},{"source":53,"target":51,"value":1},{"source":54,"target":51,"value":2},{"source":54,"target":49,"value":1},{"source":54,"target":26,"value":1},{"source":55,"target":51,"value":6},{"source":55,"target":49,"value":12},{"source":55,"target":39,"value":1},{"source":55,"target":54,"value":1},{"source":55,"target":26,"value":21},{"source":55,"target":11,"value":19},{"source":55,"target":16,"value":1},{"source":55,"target":25,"value":2},{"source":55,"target":41,"value":5},{"source":55,"target":48,"value":4},{"source":56,"target":49,"value":1},{"source":56,"target":55,"value":1},{"source":57,"target":55,"value":1},{"source":57,"target":41,"value":1},{"source":57,"target":48,"value":1},{"source":58,"target":55,"value":7},{"source":58,"target":48,"value":7},{"source":58,"target":27,"value":6},{"source":58,"target":57,"value":1},{"source":58,"target":11,"value":4},{"source":59,"target":58,"value":15},{"source":59,"target":55,"value":5},{"source":59,"target":48,"value":6},{"source":59,"target":57,"value":2},{"source":60,"target":48,"value":1},{"source":60,"target":58,"value":4},{"source":60,"target":59,"value":2},{"source":61,"target":48,"value":2},{"source":61,"target":58,"value":6},{"source":61,"target":60,"value":2},{"source":61,"target":59,"value":5},{"source":61,"target":57,"value":1},{"source":61,"target":55,"value":1},{"source":62,"target":55,"value":9},{"source":62,"target":58,"value":17},{"source":62,"target":59,"value":13},{"source":62,"target":48,"value":7},{"source":62,"target":57,"value":2},{"source":62,"target":41,"value":1},{"source":62,"target":61,"value":6},{"source":62,"target":60,"value":3},{"source":63,"target":59,"value":5},{"source":63,"target":48,"value":5},{"source":63,"target":62,"value":6},{"source":63,"target":57,"value":2},{"source":63,"target":58,"value":4},{"source":63,"target":61,"value":3},{"source":63,"target":60,"value":2},{"source":63,"target":55,"value":1},{"source":64,"target":55,"value":5},{"source":64,"target":62,"value":12},{"source":64,"target":48,"value":5},{"source":64,"target":63,"value":4},{"source":64,"target":58,"value":10},{"source":64,"target":61,"value":6},{"source":64,"target":60,"value":2},{"source":64,"target":59,"value":9},{"source":64,"target":57,"value":1},{"source":64,"target":11,"value":1},{"source":65,"target":63,"value":5},{"source":65,"target":64,"value":7},{"source":65,"target":48,"value":3},{"source":65,"target":62,"value":5},{"source":65,"target":58,"value":5},{"source":65,"target":61,"value":5},{"source":65,"target":60,"value":2},{"source":65,"target":59,"value":5},{"source":65,"target":57,"value":1},{"source":65,"target":55,"value":2},{"source":66,"target":64,"value":3},{"source":66,"target":58,"value":3},{"source":66,"target":59,"value":1},{"source":66,"target":62,"value":2},{"source":66,"target":65,"value":2},{"source":66,"target":48,"value":1},{"source":66,"target":63,"value":1},{"source":66,"target":61,"value":1},{"source":66,"target":60,"value":1},{"source":67,"target":57,"value":3},{"source":68,"target":25,"value":5},{"source":68,"target":11,"value":1},{"source":68,"target":24,"value":1},{"source":68,"target":27,"value":1},{"source":68,"target":48,"value":1},{"source":68,"target":41,"value":1},{"source":69,"target":25,"value":6},{"source":69,"target":68,"value":6},{"source":69,"target":11,"value":1},{"source":69,"target":24,"value":1},{"source":69,"target":27,"value":2},{"source":69,"target":48,"value":1},{"source":69,"target":41,"value":1},{"source":70,"target":25,"value":4},{"source":70,"target":69,"value":4},{"source":70,"target":68,"value":4},{"source":70,"target":11,"value":1},{"source":70,"target":24,"value":1},{"source":70,"target":27,"value":1},{"source":70,"target":41,"value":1},{"source":70,"target":58,"value":1},{"source":71,"target":27,"value":1},{"source":71,"target":69,"value":2},{"source":71,"target":68,"value":2},{"source":71,"target":70,"value":2},{"source":71,"target":11,"value":1},{"source":71,"target":48,"value":1},{"source":71,"target":41,"value":1},{"source":71,"target":25,"value":1},{"source":72,"target":26,"value":2},{"source":72,"target":27,"value":1},{"source":72,"target":11,"value":1},{"source":73,"target":48,"value":2},{"source":74,"target":48,"value":2},{"source":74,"target":73,"value":3},{"source":75,"target":69,"value":3},{"source":75,"target":68,"value":3},{"source":75,"target":25,"value":3},{"source":75,"target":48,"value":1},{"source":75,"target":41,"value":1},{"source":75,"target":70,"value":1},{"source":75,"target":71,"value":1},{"source":76,"target":64,"value":1},{"source":76,"target":65,"value":1},{"source":76,"target":66,"value":1},{"source":76,"target":63,"value":1},{"source":76,"target":62,"value":1},{"source":76,"target":48,"value":1},{"source":76,"target":58,"value":1}]}
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/examples/great-arc/great-arc.html b/static/vendor/d3-2.8.1/examples/great-arc/great-arc.html
new file mode 100755 (executable)
index 0000000..710238f
--- /dev/null
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Great Arc</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+#states path {
+  fill: #ddd;
+  stroke: #fff;
+}
+
+#arcs path {
+  fill: none;
+  stroke: #000;
+  stroke-width: .5px;
+  stroke-opacity: .2;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500;
+
+var projection = d3.geo.azimuthal()
+    .origin([-115, 50])
+    .scale(500);
+
+var path = d3.geo.path()
+    .projection(projection);
+
+var arc = d3.geo.greatArc();
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+var states = svg.append("g")
+    .attr("id", "states");
+
+var arcs = svg.append("g")
+    .attr("id", "arcs");
+
+d3.json("../data/us-states.json", function(collection) {
+  states.selectAll("path")
+      .data(collection.features)
+    .enter().append("path")
+      .attr("d", path);
+});
+
+d3.json("../data/us-state-centroids.json", function(collection) {
+  var links = [];
+
+  // Create a link between each state centroid.
+  collection.features.forEach(function(a) {
+    collection.features.forEach(function(b) {
+      if (a !== b) {
+        links.push({
+          source: a.geometry.coordinates,
+          target: b.geometry.coordinates
+        });
+      }
+    });
+  });
+
+  arcs.selectAll("path")
+      .data(links)
+    .enter().append("path")
+      .attr("d", function(d) { return path(arc(d)); });
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/hello-data-key.html b/static/vendor/d3-2.8.1/examples/hello-world/hello-data-key.html
new file mode 100755 (executable)
index 0000000..f535b41
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Hello, data!</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    Your lucky numbers are:<br>
+    <script type="text/javascript">
+
+var i = 0, data = [
+  {id: i++, value: 4},
+  {id: i++, value: 8},
+  {id: i++, value: 15},
+  {id: i++, value: 16},
+  {id: i++, value: 23},
+  {id: i++, value: 42}
+];
+
+transform();
+
+function transform() {
+  var t = d3.select("body")
+    .selectAll("span")
+      .data(data, function(d) { return d.id; });
+
+  t.enter().append("span")
+      .attr("id", function(d) { return "span-" + d.id; })
+    .append("svg")
+      .attr("width", 100)
+      .attr("height", 100)
+    .append("text")
+      .attr("x", "50%")
+      .attr("y", "50%")
+      .attr("dy", ".35em")
+      .attr("text-anchor", "middle")
+      .attr("fill", "white")
+      .attr("stroke", "black")
+      .attr("stroke-width", 1.5)
+      .style("font", "36pt Comic Sans MS")
+      .style("text-shadow", "3px 3px 3px rgba(0,0,0,.4)")
+      .text(function(d) { return d.value; });
+
+  t.select("text")
+      .text(function(d) { return d.value; });
+
+  t.exit().remove();
+}
+
+function refresh() {
+  data.shift();
+  data.push({id: i++ % 7, value: ~~(Math.random() * 100)});
+  transform();
+}
+
+window.addEventListener("keypress", refresh, false);
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/hello-data-nested-key.html b/static/vendor/d3-2.8.1/examples/hello-world/hello-data-nested-key.html
new file mode 100755 (executable)
index 0000000..0f9e26f
--- /dev/null
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Hello, data!</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body, td {
+  font: 14px Helvetica Neue;
+  text-rendering: optimizeLegibility;
+  margin: 1em;
+}
+
+table {
+  border-collapse: collapse;
+  margin-top: .5em;
+}
+
+td {
+  border: solid 1px #fff;
+  text-align: center;
+  width: 30px;
+  height: 30px;
+}
+
+    </style>
+  </head>
+  <body>
+    Your lucky numbers are:<br>
+    <table id="table"></table>
+    <script type="text/javascript">
+
+var data = [];
+
+for (var i = 0; i < 10; i++) {
+  for (var j = 0, a = []; j < 10; j++) {
+    a.push(~~(Math.random() * 100));
+  }
+  data.push(a);
+}
+
+transform();
+
+function transform() {
+  var t = d3.select("#table")
+    .selectAll("tr")
+      .data(data);
+
+  t.enter().append("tr")
+    .selectAll("td")
+      .data(function(d) { return d; })
+    .enter().append("td")
+      .style("background-color", function(d) { return "hsl(" + d + ",100%,50%)"; })
+      .text(function(d) { return d; });
+
+  t.selectAll("td")
+      .data(function(d) { return d; })
+      .style("background-color", function(d) { return "hsl(" + d + ",100%,50%)"; })
+      .text(function(d) { return d; });
+}
+
+function refresh() {
+  for (var i = 0; i < 10; i++) {
+    for (var j = 0; j < 10; j++) {
+      data[i][j] = (data[i][j] + 1) % 360;
+    }
+  }
+  transform();
+}
+
+window.addEventListener("keypress", refresh, false);
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/hello-data-nested.html b/static/vendor/d3-2.8.1/examples/hello-world/hello-data-nested.html
new file mode 100755 (executable)
index 0000000..e1d80fa
--- /dev/null
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Hello, data!</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body, td {
+  font: 14px Helvetica Neue;
+  text-rendering: optimizeLegibility;
+  margin: 1em;
+}
+
+table {
+  border-collapse: collapse;
+  margin-top: .5em;
+}
+
+td {
+  border: solid 1px #fff;
+  color: #ccc;
+  text-align: center;
+  width: 30px;
+  height: 30px;
+}
+
+    </style>
+  </head>
+  <body>
+    Your lucky numbers are:<br>
+    <table>
+      <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
+      <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
+      <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
+      <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
+      <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
+      <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
+      <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
+      <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
+      <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
+      <tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
+    </table>
+    <script type="text/javascript">
+
+var data = [];
+
+for (var i = 0; i < 10; i++) {
+  for (var j = 0, a = []; j < 10; j++) {
+    a.push(~~(Math.random() * 100));
+  }
+  data.push(a);
+}
+
+transform();
+
+function transform() {
+  d3.selectAll("tr")
+      .data(data)
+    .selectAll("td")
+      .data(function(d) { return d; })
+      .style("background-color", function(d) { return "hsl(0,50%," + d + "%)"; })
+      .text(function(d) { return d; });
+}
+
+function refresh() {
+  for (var i = 0; i < data.length; i++) {
+    var z = data[i], d = z.shift();
+    z.push(~~(Math.random() * 100));
+  }
+  transform();
+}
+
+window.addEventListener("keypress", refresh, false);
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/hello-data.html b/static/vendor/d3-2.8.1/examples/hello-world/hello-data.html
new file mode 100755 (executable)
index 0000000..30ee080
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Hello, data!</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    Your lucky numbers are:<br>
+    <span></span>
+    <span></span>
+    <span></span>
+    <span></span>
+    <span></span>
+    <script type="text/javascript">
+
+var data = [4, 8, 15, 16, 23, 42];
+
+d3.selectAll("span")
+    .data(data)
+  .append("svg")
+    .attr("width", 100)
+    .attr("height", 100)
+  .append("text")
+    .attr("x", "50%")
+    .attr("y", "50%")
+    .attr("dy", ".35em")
+    .attr("text-anchor", "middle")
+    .attr("fill", "white")
+    .attr("stroke", "black")
+    .attr("stroke-width", 1.5)
+    .style("font", "36pt Comic Sans MS")
+    .style("text-shadow", "3px 3px 3px rgba(0,0,0,.4)")
+    .text(function(d) { return d; });
+
+function refresh() {
+  for (var i = 0; i < data.length; i++) data[i] = (data[i] + 1) % 100;
+  d3.selectAll("text")
+      .data(data)
+      .text(function(d) { return d; });
+}
+
+window.addEventListener("keypress", refresh, false);
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/hello-event.html b/static/vendor/d3-2.8.1/examples/hello-world/hello-event.html
new file mode 100755 (executable)
index 0000000..e9916e9
--- /dev/null
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Hello, world!</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    Your lucky numbers are:<br>
+    <span></span>
+    <script type="text/javascript">
+
+var data = [4, 8, 15, 16, 23, 42];
+
+d3.select("span")
+  .selectAll("svg")
+    .data(data)
+  .enter().append("svg")
+    .attr("width", 100)
+    .attr("height", 100)
+  .append("text")
+    .attr("x", "50%")
+    .attr("y", "50%")
+    .attr("dy", ".35em")
+    .attr("text-anchor", "middle")
+    .attr("fill", "white")
+    .attr("stroke", "black")
+    .attr("stroke-width", 1.5)
+    .attr("cursor", "pointer")
+    .style("font", "36pt Comic Sans MS")
+    .style("text-shadow", "3px 3px 3px rgba(0,0,0,.4)")
+    .text(function(d) { return d; })
+    .on("click", click)
+    .on("mouseover", mouseover)
+    .on("mouseout", mouseout);
+
+function click(d, i) {
+  console.log("click", d, i);
+}
+
+function mouseover(d, i) {
+  d3.select(this)
+      .attr("fill", "brown")
+      .attr("stroke", "grey");
+}
+
+function mouseout(d, i) {
+  d3.select(this)
+      .attr("fill", "orange");
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/hello-node-key.html b/static/vendor/d3-2.8.1/examples/hello-world/hello-node-key.html
new file mode 100755 (executable)
index 0000000..649792e
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Hello, node!</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    Your lucky numbers are:<br>
+    <span value="42"></span>
+    <span value="4"></span>
+    <span value="8"></span>
+    <span value="15"></span>
+    <span value="16"></span>
+    <span value="23"></span>
+    <script type="text/javascript">
+
+var data = [4, 8, 15, 16, 23, 42];
+
+d3.selectAll("span")
+    .data(data, function(d) { return d || this.getAttribute("value"); })
+    .text(String);
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/hello-order.html b/static/vendor/d3-2.8.1/examples/hello-world/hello-order.html
new file mode 100755 (executable)
index 0000000..f6d685b
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+  </head>
+  <body>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript">
+
+var div = d3.select("body").selectAll("div")
+    .data(["a", "b", "f"])
+  .enter().append("div")
+    .text(String);
+
+var div = d3.select("body").selectAll("div")
+    .data(["a", "b", "c", "d", "e", "f"], String);
+
+div.enter().append("div")
+    .text(String);
+
+div.order();
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/hello-sort.html b/static/vendor/d3-2.8.1/examples/hello-world/hello-sort.html
new file mode 100755 (executable)
index 0000000..0481754
--- /dev/null
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Hello, sort!</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+html, body, svg {
+  font: 14px Helvetica Neue;
+  margin: 0;
+  width: 100%;
+  height: 100%;
+  display: block;
+}
+
+circle {
+  fill: steelblue;
+  fill-opacity: .8;
+  stroke: #fff;
+}
+
+div {
+  position: fixed;
+  top: 10px;
+  left: 10px;
+}
+
+    </style>
+  </head>
+  <body>
+    <div>
+      <input id="sort" type="checkbox" checked>
+      <label for="sort">Ascending</label>
+    </div>
+    <script type="text/javascript">
+
+d3.select("body")
+  .append("svg")
+    .attr("viewBox", "0 0 1000 1000");
+
+d3.select("#sort")
+    .on("change", sort);
+
+transform();
+
+function transform() {
+  var circle = d3.select("svg")
+    .selectAll("circle")
+      .data(d3.range(400).map(Math.random));
+
+  circle.enter().append("circle")
+      .attr("cx", function() { return 100 + Math.random() * 800; })
+      .attr("cy", function() { return 100 + Math.random() * 800; })
+      .attr("r", function(d) { return 50 * d; });
+
+  circle
+    .transition()
+      .duration(750)
+      .attr("r", function(d) { return 50 * d; });
+
+  sort();
+}
+
+function sort() {
+  d3.selectAll("circle")
+      .sort(d3.select("#sort").property("checked")
+      ? function(a, b) { return b - a; }
+      : function(a, b) { return a - b; });
+}
+
+window.addEventListener("keypress", transform, false);
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/hello-transform.html b/static/vendor/d3-2.8.1/examples/hello-world/hello-transform.html
new file mode 100755 (executable)
index 0000000..6ce6c61
--- /dev/null
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Hello, world!</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    Your lucky numbers are:<br>
+    <span></span>
+    <span></span>
+    <span></span>
+    <span></span>
+    <span></span>
+    <script type="text/javascript">
+
+d3.selectAll("span")
+  .append("svg")
+    .attr("width", 100)
+    .attr("height", 100)
+  .append("text")
+    .attr("x", "50%")
+    .attr("y", "50%")
+    .attr("dy", ".35em")
+    .attr("text-anchor", "middle")
+    .attr("fill", "white")
+    .attr("stroke", "black")
+    .attr("stroke-width", 1.5)
+    .style("font", "36pt Comic Sans MS")
+    .style("text-shadow", "3px 3px 3px rgba(0,0,0,.4)")
+    .text(function() { return ~~(Math.random() * 100); });
+
+function transform() {
+  d3.selectAll("text")
+      .text(function() { return ~~(Math.random() * 100); });
+}
+
+window.addEventListener("keypress", transform, false);
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/hello-transition-undefined.html b/static/vendor/d3-2.8.1/examples/hello-world/hello-transition-undefined.html
new file mode 100755 (executable)
index 0000000..f6385ba
--- /dev/null
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Hello, transition undefined!</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 14px Helvetica Neue;
+  text-rendering: optimizeLegibility;
+  margin: 1em;
+}
+
+div {
+  font-size: 42px;
+  margin-top: .5em;
+  text-align: right;
+}
+
+    </style>
+  </head>
+  <body>
+    Your lucky number is:<br>
+    <div>hello</div>
+    <script type="text/javascript">
+
+transform();
+
+function transform() {
+  d3.select("div")
+      .style("width", "0%")
+    .transition()
+      .ease("bounce")
+      .duration(2000)
+      .style("width", "100%")
+      .style("background-color", function() { return d3.hsl(180, Math.random(), .5); });
+}
+
+window.addEventListener("keypress", transform, false);
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/hello-transition.html b/static/vendor/d3-2.8.1/examples/hello-world/hello-transition.html
new file mode 100755 (executable)
index 0000000..aa17556
--- /dev/null
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Hello, transition!</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 14px Helvetica Neue;
+  text-rendering: optimizeLegibility;
+  margin: 1em;
+}
+
+div {
+  font-size: 42px;
+  margin-top: .5em;
+  background-color: steelblue;
+  color: white;
+  text-align: right;
+}
+
+    </style>
+  </head>
+  <body>
+    Your lucky number is:<br>
+    <div></div>
+    <script type="text/javascript">
+
+transform();
+
+function transform() {
+  d3.select("div")
+      .style("width", "0%")
+      .style("background-color", "steelblue")
+      .text("hello\u00a0")
+    .transition()
+      .ease("bounce")
+      .duration(2000)
+      .style("width", "100%")
+      .style("background-color", "brown");
+}
+
+window.addEventListener("keypress", transform, false);
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/hello-webkit-transition.html b/static/vendor/d3-2.8.1/examples/hello-world/hello-webkit-transition.html
new file mode 100755 (executable)
index 0000000..0fd943a
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Hello, data!</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 14px Helvetica Neue;
+  text-rendering: optimizeLegibility;
+  margin: 1em;
+}
+
+#cells {
+  position: relative;
+  margin-top: .5em;
+  height: 300px;
+  overflow: hidden;
+}
+
+.cell {
+  position: absolute;
+  background: steelblue;
+  color: white;
+  width: 28px;
+  text-align: center;
+  padding-top: 6px;
+  top: 300px;
+  bottom: 0;
+  background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(steelblue));
+  -webkit-transition-property: top, background-color;
+  -webkit-transition-duration: 500ms;
+  -webkit-transition-timing-function: ease, linear;
+}
+
+    </style>
+  </head>
+  <body>
+    Your lucky numbers are:<br>
+    <div id="cells"></div>
+    <script type="text/javascript">
+
+var n = 10;
+
+d3.select("#cells")
+  .selectAll("div")
+    .data(d3.range(n))
+  .enter().append("div")
+    .attr("class", "cell")
+    .style("left", function(i) { return i * 30; });
+
+function transform() {
+  d3.selectAll(".cell")
+      .data(d3.range(n).map(Math.random))
+      .style("top", function(d) { return (1 - d) * 300; })
+      .style("background-color", function(d) { return "rgb(" + ~~(d * 255) + ",50,100)"; })
+      .text(function(d) { return ~~(d * 100); });
+}
+
+window.addEventListener("keypress", transform, false);
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/select-enter-add.html b/static/vendor/d3-2.8.1/examples/hello-world/select-enter-add.html
new file mode 100755 (executable)
index 0000000..badbdd1
--- /dev/null
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Test - select > enter > append</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    <span></span>
+    <span></span>
+    <script type="text/javascript">
+
+var s = d3.select("body")
+  .selectAll("span")
+    .data("The test passed, hooray!".split(/\b/));
+
+// Add missing <span>s.
+s.enter().append("span")
+  .append("b")
+    .text(function(d) { return d; });
+
+// Add missing <b>s.
+s.selectAll("b")
+    .data(function(d) { return [d]; })
+  .enter().append("b")
+    .text(function(d) { return d; });
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/hello-world/selectAll-enter-add.html b/static/vendor/d3-2.8.1/examples/hello-world/selectAll-enter-add.html
new file mode 100755 (executable)
index 0000000..1030b1b
--- /dev/null
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Test - selectAll > enter > append</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    <span></span>
+    <script type="text/javascript">
+
+d3.select("body")
+  .selectAll("span")
+    .data(["Test", "passed."])
+    .text(function(d) { return d; })
+  .enter().append("span")
+    .text(function(d) { return d; });
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/histogram/histogram-chart.js b/static/vendor/d3-2.8.1/examples/histogram/histogram-chart.js
new file mode 100755 (executable)
index 0000000..33b27ff
--- /dev/null
@@ -0,0 +1,83 @@
+function histogramChart() {
+  var margin = {top: 0, right: 0, bottom: 20, left: 0},
+      width = 960,
+      height = 500;
+
+  var histogram = d3.layout.histogram(),
+      x = d3.scale.ordinal(),
+      y = d3.scale.linear(),
+      xAxis = d3.svg.axis().scale(x).orient("bottom").tickSize(6, 0);
+
+  function chart(selection) {
+    selection.each(function(data) {
+
+      // Compute the histogram.
+      data = histogram(data);
+
+      // Update the x-scale.
+      x   .domain(data.map(function(d) { return d.x; }))
+          .rangeRoundBands([0, width - margin.left - margin.right], .1);
+
+      // Update the y-scale.
+      y   .domain([0, d3.max(data, function(d) { return d.y; })])
+          .range([height - margin.top - margin.bottom, 0]);
+
+      // Select the svg element, if it exists.
+      var svg = d3.select(this).selectAll("svg").data([data]);
+
+      // Otherwise, create the skeletal chart.
+      var gEnter = svg.enter().append("svg").append("g");
+      gEnter.append("g").attr("class", "bars");
+      gEnter.append("g").attr("class", "x axis");
+
+      // Update the outer dimensions.
+      svg .attr("width", width)
+          .attr("height", height);
+
+      // Update the inner dimensions.
+      var g = svg.select("g")
+          .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
+
+      // Update the bars.
+      var bar = svg.select(".bars").selectAll(".bar").data(data);
+      bar.enter().append("rect");
+      bar.exit().remove();
+      bar .attr("width", x.rangeBand())
+          .attr("x", function(d) { return x(d.x); })
+          .attr("y", function(d) { return y(d.y); })
+          .attr("height", function(d) { return y.range()[0] - y(d.y); })
+          .order();
+
+      // Update the x-axis.
+      g.select(".x.axis")
+          .attr("transform", "translate(0," + y.range()[0] + ")")
+          .call(xAxis);
+    });
+  }
+
+  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;
+  };
+
+  // Expose the histogram's value, range and bins method.
+  d3.rebind(chart, histogram, "value", "range", "bins");
+
+  // Expose the x-axis' tickFormat method.
+  d3.rebind(chart, xAxis, "tickFormat");
+
+  return chart;
+}
diff --git a/static/vendor/d3-2.8.1/examples/histogram/histogram.html b/static/vendor/d3-2.8.1/examples/histogram/histogram.html
new file mode 100755 (executable)
index 0000000..e6abb00
--- /dev/null
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<style>
+
+.bars rect {
+  fill: steelblue;
+}
+
+.axis text {
+  font: 10px sans-serif;
+}
+
+.axis path, .axis line {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+</style>
+<body>
+<script src="d3.v2.js"></script>
+<script src="histogram-chart.js"></script>
+<script>
+
+d3.select("body")
+    .datum(irwinHallDistribution(10000, 10))
+  .call(histogramChart()
+    .bins(d3.scale.linear().ticks(20))
+    .tickFormat(d3.format(".02f")));
+
+function irwinHallDistribution(n, m) {
+  var distribution = [];
+  for (var i = 0; i < n; i++) {
+    for (var s = 0, j = 0; j < m; j++) {
+      s += Math.random();
+    }
+    distribution.push(s / m);
+  }
+  return distribution;
+}
+
+</script>
diff --git a/static/vendor/d3-2.8.1/examples/horizon/horizon.css b/static/vendor/d3-2.8.1/examples/horizon/horizon.css
new file mode 100755 (executable)
index 0000000..78340f9
--- /dev/null
@@ -0,0 +1,9 @@
+#controls {
+  position: relative;
+  width: 960px;
+}
+
+#bands {
+  position: absolute;
+  right: 0;
+}
diff --git a/static/vendor/d3-2.8.1/examples/horizon/horizon.html b/static/vendor/d3-2.8.1/examples/horizon/horizon.html
new file mode 100755 (executable)
index 0000000..f710f04
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Horizon Chart</title>
+    <link type="text/css" rel="stylesheet" href="../button.css"/>
+    <link type="text/css" rel="stylesheet" href="horizon.css"/>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <div id="controls">
+      <span id="mode">
+        <button class="first active">Offset</button
+        ><button class="last">Mirror</button>
+      </span>
+      <span id="bands">
+        <button class="first">&#x2212;</button
+        ><button class="last">+</button>
+      </span>
+    </div>
+    <script type="text/javascript" src="horizon.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/horizon/horizon.js b/static/vendor/d3-2.8.1/examples/horizon/horizon.js
new file mode 100755 (executable)
index 0000000..77ef5e1
--- /dev/null
@@ -0,0 +1,246 @@
+var w = 960,
+    h = 40;
+
+var chart = horizonChart()
+    .width(w)
+    .height(h)
+    .bands(5)
+    .mode("offset")
+    .interpolate("basis");
+
+var svg = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+d3.json("unemployment.json", function(data) {
+
+  // Offset so that positive is above-average and negative is below-average.
+  var mean = data.rate.reduce(function(p, v) { return p + v; }, 0) / data.rate.length;
+
+  // Transpose column values to rows.
+  data = data.rate.map(function(rate, i) {
+    return [Date.UTC(data.year[i], data.month[i] - 1), rate - mean];
+  });
+
+  // Render the chart.
+  svg.data([data]).call(chart);
+
+  // Enable mode buttons.
+  d3.selectAll("#mode button")
+      .data(["offset", "mirror"])
+      .on("click", function(m) {
+        svg.call(chart.duration(0).mode(m));
+        d3.selectAll("#mode button")
+            .classed("active", function(d) { return d == m; });
+      });
+
+  // Enable bands buttons.
+  d3.selectAll("#bands button")
+      .data([-1, 1])
+      .on("click", function bands(db) {
+        svg.call(chart.duration(1000).bands(Math.max(1, chart.bands() + db)));
+      });
+});
+
+// Implements a horizon layout, which is a variation of a single-series
+// area chart where the area is folded into multiple bands. Color is used to
+// encode band, allowing the size of the chart to be reduced significantly
+// without impeding readability. This layout algorithm is based on the work of
+// J. Heer, N. Kong and M. Agrawala in "Sizing the Horizon: The Effects of Chart
+// Size and Layering on the Graphical Perception of Time Series Visualizations",
+// CHI 2009. http://hci.stanford.edu/publications/2009/heer-horizon-chi09.pdf
+function horizonChart() {
+  var bands = 1, // between 1 and 5, typically
+      mode = "offset", // or mirror
+      interpolate = "linear", // or basis, monotone, step-before, etc.
+      x = horizonX,
+      y = horizonY,
+      w = 960,
+      h = 40,
+      nextId = 0,
+      area = d3.svg.area(),
+      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.
+      var x1 = d3.scale.linear().domain([xMin, xMax]).range([0, w]),
+          y1 = d3.scale.linear().domain([0, yMax]).range([0, h * bands]);
+
+      // Retrieve the old scales, if this is an update.
+      if (this.__chart__) {
+        x0 = this.__chart__.x;
+        y0 = this.__chart__.y;
+        id = this.__chart__.id;
+      } else {
+        x0 = d3.scale.linear().domain([0, Infinity]).range(x1.range());
+        y0 = d3.scale.linear().domain([0, Infinity]).range(y1.range());
+        id = ++nextId;
+      }
+
+      // We'll use a defs to store the area path and the clip path.
+      var defs = g.selectAll("defs")
+          .data([data]);
+
+      var defsEnter = defs.enter().append("svg:defs");
+
+      // The clip path is a simple rect.
+      defsEnter.append("svg:clipPath")
+          .attr("id", "horizon_clip" + id)
+        .append("svg:rect")
+          .attr("width", w)
+          .attr("height", h);
+
+      defs.select("rect").transition()
+          .duration(duration)
+          .attr("width", w)
+          .attr("height", h);
+
+      // The area path is rendered with our resuable d3.svg.area.
+      defsEnter.append("svg:path")
+          .attr("id", "horizon_path" + id)
+          .attr("d", area
+          .interpolate(interpolate)
+          .x(function(d) { return x0(d[0]); })
+          .y0(h * bands)
+          .y1(function(d) { return h * bands - y0(d[1]); }))
+        .transition()
+          .duration(duration)
+          .attr("d", area
+          .x(function(d) { return x1(d[0]); })
+          .y1(function(d) { return h * bands - y1(d[1]); }));
+
+      defs.select("path").transition()
+          .duration(duration)
+          .attr("d", area);
+
+      // We'll use a container to clip all horizon layers at once.
+      g.selectAll("g")
+          .data([null])
+        .enter().append("svg:g")
+          .attr("clip-path", "url(#horizon_clip" + id + ")");
+
+      // Define the transform function based on the mode.
+      var transform = 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 + ")"; };
+
+      // Instantiate each copy of the path with different transforms.
+      var u = g.select("g").selectAll("use")
+          .data(d3.range(-1, -bands - 1, -1).concat(d3.range(1, bands + 1)), Number);
+
+      // TODO don't fudge the enter transition
+      u.enter().append("svg:use")
+          .attr("xlink:href", "#horizon_path" + id)
+          .attr("transform", function(d) { return transform(d + (d > 0 ? 1 : -1)); })
+          .style("fill", color)
+        .transition()
+          .duration(duration)
+          .attr("transform", transform);
+
+      u.transition()
+          .duration(duration)
+          .attr("transform", transform)
+          .style("fill", color);
+
+      u.exit().transition()
+          .duration(duration)
+          .attr("transform", transform)
+          .remove();
+
+      // Stash the new scales.
+      this.__chart__ = {x: x1, y: y1, 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;
+};
+
+function horizonX(d) {
+  return d[0];
+}
+
+function horizonY(d) {
+  return d[1];
+}
diff --git a/static/vendor/d3-2.8.1/examples/horizon/unemployment.json b/static/vendor/d3-2.8.1/examples/horizon/unemployment.json
new file mode 100755 (executable)
index 0000000..78dbd11
--- /dev/null
@@ -0,0 +1 @@
+{"year":[2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2001,2001,2001,2001,2001,2001,2001,2001,2001,2001,2001,2001,2002,2002,2002,2002,2002,2002,2002,2002,2002,2002,2002,2002,2003,2003,2003,2003,2003,2003,2003,2003,2003,2003,2003,2003,2004,2004,2004,2004,2004,2004,2004,2004,2004,2004,2004,2004,2005,2005,2005,2005,2005,2005,2005,2005,2005,2005,2005,2005,2006,2006,2006,2006,2006,2006,2006,2006,2006,2006,2006,2006,2007,2007,2007,2007,2007,2007,2007,2007,2007,2007,2007,2007,2008,2008,2008,2008,2008,2008,2008,2008,2008,2008,2008,2008,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2009,2010,2010],"month":[1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,1,2],"rate":[4.5,4.4,4.3,3.7,3.8,4.1,4.2,4.1,3.8,3.6,3.7,3.7,4.7,4.6,4.5,4.2,4.1,4.7,4.7,4.9,4.7,5,5.3,5.4,6.3,6.1,6.1,5.7,5.5,6,5.9,5.7,5.4,5.3,5.6,5.7,6.5,6.4,6.2,5.8,5.8,6.5,6.3,6,5.8,5.6,5.6,5.4,6.3,6,6,5.4,5.3,5.8,5.7,5.4,5.1,5.1,5.2,5.1,5.7,5.8,5.4,4.9,4.9,5.2,5.2,4.9,4.8,4.6,4.8,4.6,5.1,5.1,4.8,4.5,4.4,4.8,5,4.6,4.4,4.1,4.3,4.3,5,4.9,4.5,4.3,4.3,4.7,4.9,4.6,4.5,4.4,4.5,4.8,5.4,5.2,5.2,4.8,5.2,5.7,6,6.1,6,6.1,6.5,7.1,8.5,8.9,9,8.6,9.1,9.7,9.7,9.6,9.5,9.5,9.4,9.7,10.6,10.4]}
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/examples/hull/hull.html b/static/vendor/d3-2.8.1/examples/hull/hull.html
new file mode 100755 (executable)
index 0000000..055b42a
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Convex Hull</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  border: solid 1px #aaa;
+  background: #eee;
+}
+
+path {
+  fill: lightsteelblue;
+  stroke: #000;
+}
+
+circle {
+  fill: #fff;
+  stroke: #000;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500;
+
+var vertices = d3.range(15).map(function(d) {
+  return [
+    w / 4 + Math.random() * w / 2,
+    h / 4 + Math.random() * h / 2
+  ];
+});
+
+var svg = d3.select("body")
+  .append("svg")
+    .attr("width", w)
+    .attr("height", h)
+    .attr("pointer-events", "all")
+    .on("mousemove", move)
+    .on("click", click);
+
+update();
+
+function update() {
+  svg.selectAll("path")
+      .data([d3.geom.hull(vertices)])
+      .attr("d", function(d) { return "M" + d.join("L") + "Z"; })
+         .enter().append("path")
+           .attr("d", function(d) { return "M" + d.join("L") + "Z"; });
+
+  svg.selectAll("circle")
+      .data(vertices.slice(1))
+    .enter().append("circle")
+      .attr("transform", function(d) { return "translate(" + d + ")"; })
+      .attr("r", 3);
+}
+
+function move() {
+  vertices[0] = d3.mouse(this);
+  update();
+}
+
+function click() {
+  vertices.push(d3.mouse(this));
+  update();
+}
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/kde/kde.css b/static/vendor/d3-2.8.1/examples/kde/kde.css
new file mode 100755 (executable)
index 0000000..101c69d
--- /dev/null
@@ -0,0 +1,9 @@
+body {
+  font: 10px sans-serif;
+}
+
+path {
+  stroke: #000;
+  stroke-width: 1.5px;
+  fill: none;
+}
diff --git a/static/vendor/d3-2.8.1/examples/kde/kde.html b/static/vendor/d3-2.8.1/examples/kde/kde.html
new file mode 100755 (executable)
index 0000000..28b629d
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Kernel Density Estimation</title>
+    <link rel="stylesheet" type="text/css" href="kde.css"/>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="../../lib/science/science.js"></script>
+    <script type="text/javascript" src="../../lib/science/science.stats.js"></script>
+  </head>
+  <body>
+    <script type="text/javascript" src="kde.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/kde/kde.js b/static/vendor/d3-2.8.1/examples/kde/kde.js
new file mode 100755 (executable)
index 0000000..91ef86a
--- /dev/null
@@ -0,0 +1,40 @@
+// Based on http://bl.ocks.org/900762 by John Firebaugh
+d3.json("../data/faithful.json", function(faithful) {
+  data = faithful;
+  var w = 800,
+      h = 400,
+      x = d3.scale.linear().domain([30, 110]).range([0, w]);
+      bins = d3.layout.histogram().frequency(false).bins(x.ticks(60))(data),
+      max = d3.max(bins, function(d) { return d.y; }),
+      y = d3.scale.linear().domain([0, .1]).range([0, h]),
+      kde = science.stats.kde().sample(data);
+
+  var vis = d3.select("body")
+    .append("svg")
+      .attr("width", w)
+      .attr("height", h);
+
+  var bars = vis.selectAll("g.bar")
+      .data(bins)
+    .enter().append("g")
+      .attr("class", "bar")
+      .attr("transform", function(d, i) {
+        return "translate(" + x(d.x) + "," + (h - y(d.y)) + ")";
+      });
+
+  bars.append("rect")
+      .attr("fill", "steelblue")
+      .attr("width", function(d) { return x(d.dx + 30) - 1; })
+      .attr("height", function(d) { return y(d.y); });
+
+  var line = d3.svg.line()
+      .x(function(d) { return x(d[0]); })
+      .y(function(d) { return h - y(d[1]); });
+
+  vis.selectAll("path")
+      .data(d3.values(science.stats.bandwidth))
+    .enter().append("path")
+      .attr("d", function(h) {
+        return line(kde.bandwidth(h)(d3.range(30, 110, .1)));
+      });
+});
diff --git a/static/vendor/d3-2.8.1/examples/line/line.css b/static/vendor/d3-2.8.1/examples/line/line.css
new file mode 100755 (executable)
index 0000000..9f7d796
--- /dev/null
@@ -0,0 +1,22 @@
+body {
+  font: 10px sans-serif;
+}
+
+.rule line {
+  stroke: #eee;
+  shape-rendering: crispEdges;
+}
+
+.rule line.axis {
+  stroke: #000;
+}
+
+.line {
+  fill: none;
+  stroke: steelblue;
+  stroke-width: 1.5px;
+}
+
+circle.line {
+  fill: #fff;
+}
diff --git a/static/vendor/d3-2.8.1/examples/line/line.html b/static/vendor/d3-2.8.1/examples/line/line.html
new file mode 100755 (executable)
index 0000000..49dbcd9
--- /dev/null
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Line Chart</title>
+    <link type="text/css" rel="stylesheet" href="line.css"/>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    <script type="text/javascript" src="line.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/line/line.js b/static/vendor/d3-2.8.1/examples/line/line.js
new file mode 100755 (executable)
index 0000000..1365ad7
--- /dev/null
@@ -0,0 +1,63 @@
+var data = d3.range(20).map(function(i) {
+  return {x: i / 19, y: (Math.sin(i / 3) + 1) / 2};
+});
+
+var w = 450,
+    h = 275,
+    p = 20,
+    x = d3.scale.linear().domain([0, 1]).range([0, w]),
+    y = d3.scale.linear().domain([0, 1]).range([h, 0]);
+
+var vis = d3.select("body")
+    .data([data])
+  .append("svg")
+    .attr("width", w + p * 2)
+    .attr("height", h + p * 2)
+  .append("g")
+    .attr("transform", "translate(" + p + "," + p + ")");
+
+var rules = vis.selectAll("g.rule")
+    .data(x.ticks(10))
+  .enter().append("g")
+    .attr("class", "rule");
+
+rules.append("line")
+    .attr("x1", x)
+    .attr("x2", x)
+    .attr("y1", 0)
+    .attr("y2", h - 1);
+
+rules.append("line")
+    .attr("class", function(d) { return d ? null : "axis"; })
+    .attr("y1", y)
+    .attr("y2", y)
+    .attr("x1", 0)
+    .attr("x2", w + 1);
+
+rules.append("text")
+    .attr("x", x)
+    .attr("y", h + 3)
+    .attr("dy", ".71em")
+    .attr("text-anchor", "middle")
+    .text(x.tickFormat(10));
+
+rules.append("text")
+    .attr("y", y)
+    .attr("x", -3)
+    .attr("dy", ".35em")
+    .attr("text-anchor", "end")
+    .text(y.tickFormat(10));
+
+vis.append("path")
+    .attr("class", "line")
+    .attr("d", d3.svg.line()
+    .x(function(d) { return x(d.x); })
+    .y(function(d) { return y(d.y); }));
+
+vis.selectAll("circle.line")
+    .data(data)
+  .enter().append("circle")
+    .attr("class", "line")
+    .attr("cx", function(d) { return x(d.x); })
+    .attr("cy", function(d) { return y(d.y); })
+    .attr("r", 3.5);
diff --git a/static/vendor/d3-2.8.1/examples/marimekko/marimekko.html b/static/vendor/d3-2.8.1/examples/marimekko/marimekko.html
new file mode 100755 (executable)
index 0000000..0ab56b8
--- /dev/null
@@ -0,0 +1,115 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Marimekko Chart</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+rect {
+  stroke: #000;
+}
+
+svg {
+  shape-rendering: crispEdges;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500,
+    m = 20,
+    x = d3.scale.linear().range([0, w - 3 * m]),
+    y = d3.scale.linear().range([0, h - 2 * m]),
+    z = d3.scale.category10(),
+    n = d3.format(",d"),
+    p = d3.format("%");
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+  .append("g")
+    .attr("transform", "translate(" + 2 * m + "," + m + ")");
+
+d3.json("marimekko.json", function(data) {
+  var offset = 0;
+
+  // Nest values by segment. We assume each segment+market is unique.
+  var segments = d3.nest()
+      .key(function(d) { return d.segment; })
+      .entries(data);
+
+  // Compute the total sum, the per-segment sum, and the per-market offset.
+  // You can use reduce rather than reduceRight to reverse the ordering.
+  // We also record a reference to the parent segment for each market.
+  var sum = segments.reduce(function(v, p) {
+    return (p.offset = v) + (p.sum = p.values.reduceRight(function(v, d) {
+      d.parent = p;
+      return (d.offset = v) + d.value;
+    }, 0));
+  }, 0);
+
+  // Add x-axis ticks.
+  var xtick = svg.selectAll(".x")
+      .data(x.ticks(10))
+    .enter().append("g")
+      .attr("class", "x")
+      .attr("transform", function(d) { return "translate(" + x(d) + "," + y(1) + ")"; });
+
+  xtick.append("line")
+      .attr("y2", 6)
+      .style("stroke", "#000");
+
+  xtick.append("text")
+      .attr("y", 8)
+      .attr("text-anchor", "middle")
+      .attr("dy", ".71em")
+      .text(p);
+
+  // Add y-axis ticks.
+  var ytick = svg.selectAll(".y")
+      .data(y.ticks(10))
+    .enter().append("g")
+      .attr("class", "y")
+      .attr("transform", function(d) { return "translate(0," + y(1 - d) + ")"; });
+
+  ytick.append("line")
+      .attr("x1", -6)
+      .style("stroke", "#000");
+
+  ytick.append("text")
+      .attr("x", -8)
+      .attr("text-anchor", "end")
+      .attr("dy", ".35em")
+      .text(p);
+
+  // Add a group for each segment.
+  var segments = svg.selectAll(".segment")
+      .data(segments)
+    .enter().append("g")
+      .attr("class", "segment")
+      .attr("xlink:title", function(d) { return d.key; })
+      .attr("transform", function(d) { return "translate(" + x(d.offset / sum) + ")"; });
+
+  // Add a rect for each market.
+  var markets = segments.selectAll(".market")
+      .data(function(d) { return d.values; })
+    .enter().append("a")
+      .attr("class", "market")
+      .attr("xlink:title", function(d) { return d.market + " " + d.parent.key + ": " + n(d.value); })
+    .append("rect")
+      .attr("y", function(d) { return y(d.offset / d.parent.sum); })
+      .attr("height", function(d) { return y(d.value / d.parent.sum); })
+      .attr("width", function(d) { return x(d.parent.sum / sum); })
+      .style("fill", function(d) { return z(d.market); });
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/marimekko/marimekko.json b/static/vendor/d3-2.8.1/examples/marimekko/marimekko.json
new file mode 100755 (executable)
index 0000000..113eb86
--- /dev/null
@@ -0,0 +1,18 @@
+[
+{"market": "Auburn, AL", "segment": "Almond lovers", "value": 3840},
+{"market": "Auburn, AL", "segment": "Berry buyers", "value": 1920},
+{"market": "Auburn, AL", "segment": "Carrots-n-more", "value": 960},
+{"market": "Auburn, AL", "segment": "Delicious-n-new", "value": 400},
+{"market": "Birmingham, AL", "segment": "Almond lovers", "value": 1600},
+{"market": "Birmingham, AL", "segment": "Berry buyers", "value": 1440},
+{"market": "Birmingham, AL", "segment": "Carrots-n-more", "value": 960},
+{"market": "Birmingham, AL", "segment": "Delicious-n-new", "value": 400},
+{"market": "Gainesville, FL", "segment": "Almond lovers", "value": 640},
+{"market": "Gainesville, FL", "segment": "Berry buyers", "value": 960},
+{"market": "Gainesville, FL", "segment": "Carrots-n-more", "value": 640},
+{"market": "Gainesville, FL", "segment": "Delicious-n-new", "value": 400},
+{"market": "Durham, NC", "segment": "Almond lovers", "value": 320},
+{"market": "Durham, NC", "segment": "Berry buyers", "value": 480},
+{"market": "Durham, NC", "segment": "Carrots-n-more", "value": 640},
+{"market": "Durham, NC", "segment": "Delicious-n-new", "value": 400}
+]
diff --git a/static/vendor/d3-2.8.1/examples/marker/marker.html b/static/vendor/d3-2.8.1/examples/marker/marker.html
new file mode 100755 (executable)
index 0000000..599b842
--- /dev/null
@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <title>Mobile Patent Suits</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+path.link {
+  fill: none;
+  stroke: #666;
+  stroke-width: 1.5px;
+}
+
+marker#licensing {
+  fill: green;
+}
+
+path.link.licensing {
+  stroke: green;
+}
+
+path.link.resolved {
+  stroke-dasharray: 0,2 1;
+}
+
+circle {
+  fill: #ccc;
+  stroke: #333;
+  stroke-width: 1.5px;
+}
+
+text {
+  font: 10px sans-serif;
+  pointer-events: none;
+}
+
+text.shadow {
+  stroke: #fff;
+  stroke-width: 3px;
+  stroke-opacity: .8;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+// http://blog.thomsonreuters.com/index.php/mobile-patent-suits-graphic-of-the-day/
+var links = [
+  {source: "Microsoft", target: "Amazon", type: "licensing"},
+  {source: "Microsoft", target: "HTC", type: "licensing"},
+  {source: "Samsung", target: "Apple", type: "suit"},
+  {source: "Motorola", target: "Apple", type: "suit"},
+  {source: "Nokia", target: "Apple", type: "resolved"},
+  {source: "HTC", target: "Apple", type: "suit"},
+  {source: "Kodak", target: "Apple", type: "suit"},
+  {source: "Microsoft", target: "Barnes & Noble", type: "suit"},
+  {source: "Microsoft", target: "Foxconn", type: "suit"},
+  {source: "Oracle", target: "Google", type: "suit"},
+  {source: "Apple", target: "HTC", type: "suit"},
+  {source: "Microsoft", target: "Inventec", type: "suit"},
+  {source: "Samsung", target: "Kodak", type: "resolved"},
+  {source: "LG", target: "Kodak", type: "resolved"},
+  {source: "RIM", target: "Kodak", type: "suit"},
+  {source: "Sony", target: "LG", type: "suit"},
+  {source: "Kodak", target: "LG", type: "resolved"},
+  {source: "Apple", target: "Nokia", type: "resolved"},
+  {source: "Qualcomm", target: "Nokia", type: "resolved"},
+  {source: "Apple", target: "Motorola", type: "suit"},
+  {source: "Microsoft", target: "Motorola", type: "suit"},
+  {source: "Motorola", target: "Microsoft", type: "suit"},
+  {source: "Huawei", target: "ZTE", type: "suit"},
+  {source: "Ericsson", target: "ZTE", type: "suit"},
+  {source: "Kodak", target: "Samsung", type: "resolved"},
+  {source: "Apple", target: "Samsung", type: "suit"},
+  {source: "Kodak", target: "RIM", type: "suit"},
+  {source: "Nokia", target: "Qualcomm", type: "suit"}
+];
+
+var nodes = {};
+
+// Compute the distinct nodes from the links.
+links.forEach(function(link) {
+  link.source = nodes[link.source] || (nodes[link.source] = {name: link.source});
+  link.target = nodes[link.target] || (nodes[link.target] = {name: link.target});
+});
+
+var w = 960,
+    h = 500;
+
+var force = d3.layout.force()
+    .nodes(d3.values(nodes))
+    .links(links)
+    .size([w, h])
+    .linkDistance(60)
+    .charge(-300)
+    .on("tick", tick)
+    .start();
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+// Per-type markers, as they don't inherit styles.
+svg.append("defs").selectAll("marker")
+    .data(["suit", "licensing", "resolved"])
+  .enter().append("marker")
+    .attr("id", String)
+    .attr("viewBox", "0 -5 10 10")
+    .attr("refX", 15)
+    .attr("refY", -1.5)
+    .attr("markerWidth", 6)
+    .attr("markerHeight", 6)
+    .attr("orient", "auto")
+  .append("path")
+    .attr("d", "M0,-5L10,0L0,5");
+
+var path = svg.append("g").selectAll("path")
+    .data(force.links())
+  .enter().append("path")
+    .attr("class", function(d) { return "link " + d.type; })
+    .attr("marker-end", function(d) { return "url(#" + d.type + ")"; });
+
+var circle = svg.append("g").selectAll("circle")
+    .data(force.nodes())
+  .enter().append("circle")
+    .attr("r", 6)
+    .call(force.drag);
+
+var text = svg.append("g").selectAll("g")
+    .data(force.nodes())
+  .enter().append("g");
+
+// A copy of the text with a thick white stroke for legibility.
+text.append("text")
+    .attr("x", 8)
+    .attr("y", ".31em")
+    .attr("class", "shadow")
+    .text(function(d) { return d.name; });
+
+text.append("text")
+    .attr("x", 8)
+    .attr("y", ".31em")
+    .text(function(d) { return d.name; });
+
+// Use elliptical arc path segments to doubly-encode directionality.
+function tick() {
+  path.attr("d", function(d) {
+    var dx = d.target.x - d.source.x,
+        dy = d.target.y - d.source.y,
+        dr = Math.sqrt(dx * dx + dy * dy);
+    return "M" + d.source.x + "," + d.source.y + "A" + dr + "," + dr + " 0 0,1 " + d.target.x + "," + d.target.y;
+  });
+
+  circle.attr("transform", function(d) {
+    return "translate(" + d.x + "," + d.y + ")";
+  });
+
+  text.attr("transform", function(d) {
+    return "translate(" + d.x + "," + d.y + ")";
+  });
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/mercator/mercator-zoom-constrained.html b/static/vendor/d3-2.8.1/examples/mercator/mercator-zoom-constrained.html
new file mode 100755 (executable)
index 0000000..aa6f0d3
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<style>
+
+.frame {
+  stroke: #000;
+  fill: none;
+  pointer-events: all;
+}
+
+.feature {
+  fill: #eee;
+  stroke: #ccc;
+}
+
+</style>
+<script src="../../d3.v2.js"></script>
+<body>
+<script>
+
+var margin = {top: 0, right: 0, bottom: 0, left: 0},
+    width = 960 - margin.left - margin.right,
+    height = 500 - margin.top - margin.bottom;
+
+var projection = d3.geo.mercator()
+    .scale(width)
+    .translate([width / 2, height / 2]);
+
+var path = d3.geo.path()
+    .projection(projection);
+
+var zoom = d3.behavior.zoom()
+    .translate(projection.translate())
+    .scale(projection.scale())
+    .scaleExtent([height, 8 * height])
+    .on("zoom", move);
+
+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 + ")")
+    .call(zoom);
+
+var g = svg.append("g"),
+    feature = g.selectAll(".feature");
+
+svg.append("rect")
+    .attr("class", "frame")
+    .attr("width", width)
+    .attr("height", height);
+
+d3.json("../data/world-countries.json", function(collection) {
+  feature = feature
+      .data(collection.features)
+    .enter().append("path")
+      .attr("class", "feature")
+      .attr("d", path);
+});
+
+function move() {
+  var t = d3.event.translate,
+      s = d3.event.scale;
+  t[0] = Math.max(-s / 2, Math.min(width + s / 2, t[0]));
+  t[1] = Math.max(-s / 2, Math.min(height + s / 2, t[1]));
+  zoom.translate(t);
+  projection.translate(t).scale(s);
+  feature.attr("d", path);
+}
+
+</script>
diff --git a/static/vendor/d3-2.8.1/examples/mercator/mercator-zoom.html b/static/vendor/d3-2.8.1/examples/mercator/mercator-zoom.html
new file mode 100755 (executable)
index 0000000..2db63c2
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<style>
+
+.frame {
+  stroke: #000;
+  fill: none;
+  pointer-events: all;
+}
+
+.feature {
+  fill: #eee;
+  stroke: #ccc;
+}
+
+</style>
+<script src="../../d3.v2.js"></script>
+<body>
+<script>
+
+var margin = {top: 0, right: 0, bottom: 0, left: 0},
+    width = 960 - margin.left - margin.right,
+    height = 500 - margin.top - margin.bottom;
+
+var projection = d3.geo.mercator()
+    .scale(width)
+    .translate([width / 2, height / 2]);
+
+var path = d3.geo.path()
+    .projection(projection);
+
+var zoom = d3.behavior.zoom()
+    .translate(projection.translate())
+    .scale(projection.scale())
+    .scaleExtent([height, 8 * height])
+    .on("zoom", move);
+
+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 + ")")
+    .call(zoom);
+
+var g = svg.append("g"),
+    feature = g.selectAll(".feature");
+
+svg.append("rect")
+    .attr("class", "frame")
+    .attr("width", width)
+    .attr("height", height);
+
+d3.json("../data/world-countries.json", function(collection) {
+  feature = feature
+      .data(collection.features)
+    .enter().append("path")
+      .attr("class", "feature")
+      .attr("d", path);
+});
+
+function move() {
+  projection.translate(d3.event.translate).scale(d3.event.scale);
+  feature.attr("d", path);
+}
+
+</script>
diff --git a/static/vendor/d3-2.8.1/examples/mercator/mercator.html b/static/vendor/d3-2.8.1/examples/mercator/mercator.html
new file mode 100755 (executable)
index 0000000..2db2a39
--- /dev/null
@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Mercator Projection</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="../../lib/jquery/jquery.min.js"></script>
+    <script type="text/javascript" src="../../lib/jquery-ui/jquery-ui.min.js"></script>
+    <style type="text/css">
+
+@import url("../../lib/jquery-ui/jquery-ui.css");
+
+body, .ui-widget {
+  font: 14px Helvetica Neue;
+}
+
+svg {
+  width: 960px;
+  height: 500px;
+  border: solid 1px #ccc;
+  background: #eee;
+}
+
+line {
+  stroke: brown;
+  stroke-dasharray: 4,2;
+}
+
+path {
+  fill: #ccc;
+  stroke: #fff;
+}
+
+div {
+  width: 960px;
+}
+
+    </style>
+  </head>
+  <body>
+    <h3>Mercator Projection</h3>
+    <script type="text/javascript">
+
+// Our projection.
+var xy = d3.geo.mercator(),
+    path = d3.geo.path().projection(xy);
+
+var states = d3.select("body")
+  .append("svg")
+  .append("g")
+    .attr("id", "states");
+
+var equator = d3.select("svg")
+  .append("line")
+    .attr("x1", "0%")
+    .attr("x2", "100%");
+
+d3.json("../data/world-countries.json", function(collection) {
+
+  states
+    .selectAll("path")
+      .data(collection.features)
+    .enter().append("path")
+      .attr("d", path)
+    .append("title")
+      .text(function(d) { return d.properties.name; });
+
+  equator
+      .attr("y1", xy([0, 0])[1])
+      .attr("y2", xy([0, 0])[1])
+});
+
+function refresh() {
+  states
+    .selectAll("path")
+      .attr("d", path);
+
+  equator
+      .attr("y1", xy([0, 0])[1])
+      .attr("y2", xy([0, 0])[1])
+
+  d3.select("#scale span")
+      .text(xy.scale());
+  d3.select("#translate-x span")
+      .text(xy.translate()[0]);
+  d3.select("#translate-y span")
+      .text(xy.translate()[1]);
+}
+
+    </script><p>
+    <div id="scale">scale: <span>500</span></div><p>
+    <div id="translate-x">translate.x: <span>480</span></div>
+    <div id="translate-y">translate.y: <span>250</span></div>
+    <script type="text/javascript">
+
+$("#scale").slider({
+  min: 0,
+  max: 3000,
+  value: 500,
+  slide: function(event, ui) {
+    xy.scale(ui.value);
+    refresh();
+  }
+});
+
+$("#translate-x").slider({
+  min: -2000,
+  max: 2000,
+  value: 480,
+  slide: function(event, ui) {
+    var translate = xy.translate();
+    translate[0] = ui.value;
+    xy.translate(translate);
+    refresh();
+  }
+});
+
+$("#translate-y").slider({
+  min: -2000,
+  max: 2000,
+  value: 250,
+  slide: function(event, ui) {
+    var translate = xy.translate();
+    translate[1] = ui.value;
+    xy.translate(translate);
+    refresh();
+  }
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/moire/moire.html b/static/vendor/d3-2.8.1/examples/moire/moire.html
new file mode 100755 (executable)
index 0000000..cb6f28f
--- /dev/null
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Moiré Patterns</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+circle {
+  fill: none;
+  stroke: #000;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500;
+
+var svg = d3.select("body")
+  .append("svg")
+    .attr("width", w)
+    .attr("height", h)
+    .attr("pointer-events", "all");
+
+svg.append("g")
+  .selectAll("circle")
+    .data(d3.range(110))
+  .enter().append("circle")
+    .attr("transform", "translate(" + w / 2 + "," + h / 2 + ")")
+    .attr("r", function(d) { return d * 5; });
+
+var circle = svg.append("g")
+  .selectAll("circle")
+    .data(d3.range(60))
+  .enter().append("circle")
+    .attr("transform", "translate(" + w / 2 + "," + h / 2 + ")")
+    .attr("r", function(d) { return d * 3; });
+
+svg.on("mousemove", function() {
+  var mouse = d3.mouse(this),
+      r = (Math.sqrt(mouse[0]) + 10) / 10;
+
+  circle
+      .attr("transform", "translate(" + mouse + ")")
+      .attr("r", function(d) { return d * r; });
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/mouse/mouse-html.html b/static/vendor/d3-2.8.1/examples/mouse/mouse-html.html
new file mode 100755 (executable)
index 0000000..731e2c6
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>HTML Mouse Test</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var body = d3.select("body"),
+    div = d3.select("body").append("div")
+        .style("width", "1000px")
+        .style("height", "500px")
+        .style("border", "solid black 1px")
+        .style("cursor", "crosshair"),
+    span = body.append("span");
+
+d3.select(window)
+    .on("mousemove", function() {
+      span.text(d3.mouse(div[0][0]));
+    });
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/node-canvas/us-counties.js b/static/vendor/d3-2.8.1/examples/node-canvas/us-counties.js
new file mode 100755 (executable)
index 0000000..686b4b8
--- /dev/null
@@ -0,0 +1,68 @@
+require("../../test/env");
+
+var fs = require("fs"),
+    util = require("util"),
+    Canvas = require("canvas");
+
+var w = 1920,
+    h = 1080;
+
+var projection = d3.geo.albersUsa()
+    .scale(2000)
+    .translate([w / 2, h / 2]);
+
+var path = d3.geo.path()
+    .projection(projection);
+
+var canvas = new Canvas(w, h),
+    context = canvas.getContext("2d");
+
+context.antialias = "none";
+context.lineWidth = 8;
+context.lineJoin = "round";
+
+d3.json(__dirname + "/../data/us-counties.json", function(collection) {
+  renderAll("stroke");
+  renderAll("fill");
+  fs.writeFile("us-counties.png", canvas.toBuffer());
+
+  function renderAll(action) {
+    collection.features.forEach(function(feature) {
+      var re = /[MLZ]/g,
+          d = path(feature),
+          i = 0,
+          m;
+
+      context[action + "Style"] = "#" + pad((+feature.id).toString(16));
+      context.beginPath();
+      re.lastIndex = 1;
+      while (m = re.exec(d)) render(m.index);
+      render();
+      context[action]();
+
+      function render(j) {
+        switch (d.charAt(i)) {
+          case "M": {
+            var p = d.substring(i + 1, j).split(",").map(Number);
+            context.moveTo(p[0], p[1]);
+            break;
+          }
+          case "L": {
+            var p = d.substring(i + 1, j).split(",").map(Number);
+            context.lineTo(p[0], p[1]);
+            break;
+          }
+          case "Z": {
+            context.closePath();
+            break;
+          }
+        }
+        i = j;
+      }
+    });
+  }
+});
+
+function pad(s) {
+  return s.length < 6 ? new Array(7 - s.length).join("0") + s : s;
+}
diff --git a/static/vendor/d3-2.8.1/examples/pack/pack.css b/static/vendor/d3-2.8.1/examples/pack/pack.css
new file mode 100755 (executable)
index 0000000..a315b97
--- /dev/null
@@ -0,0 +1,15 @@
+circle {
+  fill: rgb(31, 119, 180);
+  fill-opacity: .25;
+  stroke: rgb(31, 119, 180);
+  stroke-width: 1px;
+}
+
+.leaf circle {
+  fill: #ff7f0e;
+  fill-opacity: 1;
+}
+
+text {
+  font: 10px sans-serif;
+}
diff --git a/static/vendor/d3-2.8.1/examples/pack/pack.html b/static/vendor/d3-2.8.1/examples/pack/pack.html
new file mode 100755 (executable)
index 0000000..5d07b97
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Circle Packing</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="pack.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="pack.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/pack/pack.js b/static/vendor/d3-2.8.1/examples/pack/pack.js
new file mode 100755 (executable)
index 0000000..19eb1be
--- /dev/null
@@ -0,0 +1,33 @@
+var w = 960,
+    h = 960,
+    format = d3.format(",d");
+
+var pack = d3.layout.pack()
+    .size([w - 4, h - 4])
+    .value(function(d) { return d.size; });
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+    .attr("class", "pack")
+  .append("g")
+    .attr("transform", "translate(2, 2)");
+
+d3.json("../data/flare.json", function(json) {
+  var node = vis.data([json]).selectAll("g.node")
+      .data(pack.nodes)
+    .enter().append("g")
+      .attr("class", function(d) { return d.children ? "node" : "leaf node"; })
+      .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
+
+  node.append("title")
+      .text(function(d) { return d.name + (d.children ? "" : ": " + format(d.size)); });
+
+  node.append("circle")
+      .attr("r", function(d) { return d.r; });
+
+  node.filter(function(d) { return !d.children; }).append("text")
+      .attr("text-anchor", "middle")
+      .attr("dy", ".3em")
+      .text(function(d) { return d.name.substring(0, d.r / 3); });
+});
diff --git a/static/vendor/d3-2.8.1/examples/parallel/cars.csv b/static/vendor/d3-2.8.1/examples/parallel/cars.csv
new file mode 100755 (executable)
index 0000000..919ec59
--- /dev/null
@@ -0,0 +1,407 @@
+name,economy (mpg),cylinders,displacement (cc),power (hp),weight (lb),0-60 mph (s),year
+AMC Ambassador Brougham,13,8,360,175,3821,11,73
+AMC Ambassador DPL,15,8,390,190,3850,8.5,70
+AMC Ambassador SST,17,8,304,150,3672,11.5,72
+AMC Concord DL 6,20.2,6,232,90,3265,18.2,79
+AMC Concord DL,18.1,6,258,120,3410,15.1,78
+AMC Concord DL,23,4,151,,3035,20.5,82
+AMC Concord,19.4,6,232,90,3210,17.2,78
+AMC Concord,24.3,4,151,90,3003,20.1,80
+AMC Gremlin,18,6,232,100,2789,15,73
+AMC Gremlin,19,6,232,100,2634,13,71
+AMC Gremlin,20,6,232,100,2914,16,75
+AMC Gremlin,21,6,199,90,2648,15,70
+AMC Hornet Sportabout (Wagon),18,6,258,110,2962,13.5,71
+AMC Hornet,18,6,199,97,2774,15.5,70
+AMC Hornet,18,6,232,100,2945,16,73
+AMC Hornet,19,6,232,100,2901,16,74
+AMC Hornet,22.5,6,232,90,3085,17.6,76
+AMC Matador (Wagon),14,8,304,150,4257,15.5,74
+AMC Matador (Wagon),15,8,304,150,3892,12.5,72
+AMC Matador,14,8,304,150,3672,11.5,73
+AMC Matador,15,6,258,110,3730,19,75
+AMC Matador,15.5,8,304,120,3962,13.9,76
+AMC Matador,16,6,258,110,3632,18,74
+AMC Matador,18,6,232,100,3288,15.5,71
+AMC Pacer D/L,17.5,6,258,95,3193,17.8,76
+AMC Pacer,19,6,232,90,3211,17,75
+AMC Rebel SST (Wagon),,8,360,175,3850,11,70
+AMC Rebel SST,16,8,304,150,3433,12,70
+AMC Spirit DL,27.4,4,121,80,2670,15,79
+Audi 100 LS,20,4,114,91,2582,14,73
+Audi 100 LS,23,4,115,95,2694,15,75
+Audi 100 LS,24,4,107,90,2430,14.5,70
+Audi 4000,34.3,4,97,78,2188,15.8,80
+Audi 5000,20.3,5,131,103,2830,15.9,78
+Audi 5000S (Diesel),36.4,5,121,67,2950,19.9,80
+Audi Fox,29,4,98,83,2219,16.5,74
+BMW 2002,26,4,121,113,2234,12.5,70
+BMW 320i,21.5,4,121,110,2600,12.8,77
+Buick Century 350,13,8,350,175,4100,13,73
+Buick Century Limited,25,6,181,110,2945,16.4,82
+Buick Century Luxus (Wagon),13,8,350,150,4699,14.5,74
+Buick Century Special,20.6,6,231,105,3380,15.8,78
+Buick Century,17,6,231,110,3907,21,75
+Buick Century,22.4,6,231,110,3415,15.8,81
+Buick Electra 225 Custom,12,8,455,225,4951,11,73
+Buick Estate Wagon (Wagon),14,8,455,225,3086,10,70
+Buick Estate Wagon (Wagon),16.9,8,350,155,4360,14.9,79
+Buick Lesabre Custom,13,8,350,155,4502,13.5,72
+Buick Opel Isuzu Deluxe,30,4,111,80,2155,14.8,77
+Buick Regal Sport Coupe (Turbo),17.7,6,231,165,3445,13.4,78
+Buick Skyhawk,21,6,231,110,3039,15,75
+Buick Skylark 320,15,8,350,165,3693,11.5,70
+Buick Skylark Limited,28.4,4,151,90,2670,16,79
+Buick Skylark,20.5,6,231,105,3425,16.9,77
+Buick Skylark,26.6,4,151,84,2635,16.4,81
+Cadillac Eldorado,23,8,350,125,3900,17.4,79
+Cadillac Seville,16.5,8,350,180,4380,12.1,76
+Chevroelt Chevelle Malibu,16,6,250,105,3897,18.5,75
+Chevrolet Bel Air,15,8,350,145,4440,14,75
+Chevrolet Camaro,27,4,151,90,2950,17.3,82
+Chevrolet Caprice Classic,13,8,400,150,4464,12,73
+Chevrolet Caprice Classic,17,8,305,130,3840,15.4,79
+Chevrolet Caprice Classic,17.5,8,305,145,3880,12.5,77
+Chevrolet Cavalier 2-Door,34,4,112,88,2395,18,82
+Chevrolet Cavalier Wagon,27,4,112,88,2640,18.6,82
+Chevrolet Cavalier,28,4,112,88,2605,19.6,82
+Chevrolet Chevelle Concours (Wagon),,8,350,165,4142,11.5,70
+Chevrolet Chevelle Concours (Wagon),13,8,307,130,4098,14,72
+Chevrolet Chevelle Malibu Classic,16,6,250,100,3781,17,74
+Chevrolet Chevelle Malibu Classic,17.5,8,305,140,4215,13,76
+Chevrolet Chevelle Malibu,17,6,250,100,3329,15.5,71
+Chevrolet Chevelle Malibu,18,8,307,130,3504,12,70
+Chevrolet Chevette,29,4,85,52,2035,22.2,76
+Chevrolet Chevette,30,4,98,68,2155,16.5,78
+Chevrolet Chevette,30.5,4,98,63,2051,17,77
+Chevrolet Chevette,32.1,4,98,70,2120,15.5,80
+Chevrolet Citation,23.5,6,173,110,2725,12.6,81
+Chevrolet Citation,28,4,151,90,2678,16.5,80
+Chevrolet Citation,28.8,6,173,115,2595,11.3,79
+Chevrolet Concours,17.5,6,250,110,3520,16.4,77
+Chevrolet Impala,11,8,400,150,4997,14,73
+Chevrolet Impala,13,8,350,165,4274,12,72
+Chevrolet Impala,14,8,350,165,4209,12,71
+Chevrolet Impala,14,8,454,220,4354,9,70
+Chevrolet Malibu Classic (Wagon),19.2,8,267,125,3605,15,79
+Chevrolet Malibu,13,8,350,145,3988,13,73
+Chevrolet Malibu,20.5,6,200,95,3155,18.2,78
+Chevrolet Monte Carlo Landau,15.5,8,350,170,4165,11.4,77
+Chevrolet Monte Carlo Landau,19.2,8,305,145,3425,13.2,78
+Chevrolet Monte Carlo S,15,8,350,145,4082,13,73
+Chevrolet Monte Carlo,15,8,400,150,3761,9.5,70
+Chevrolet Monza 2+2,20,8,262,110,3221,13.5,75
+Chevrolet Nova Custom,16,6,250,100,3278,18,73
+Chevrolet Nova,15,6,250,100,3336,17,74
+Chevrolet Nova,18,6,250,105,3459,16,75
+Chevrolet Nova,22,6,250,105,3353,14.5,76
+Chevrolet Vega (Wagon),22,4,140,72,2408,19,71
+Chevrolet Vega 2300,28,4,140,90,2264,15.5,71
+Chevrolet Vega,20,4,140,90,2408,19.5,72
+Chevrolet Vega,21,4,140,72,2401,19.5,73
+Chevrolet Vega,25,4,140,75,2542,17,74
+Chevrolet Woody,24.5,4,98,60,2164,22.1,76
+Chevy C10,13,8,350,145,4055,12,76
+Chevy C20,10,8,307,200,4376,15,70
+Chevy S-10,31,4,119,82,2720,19.4,82
+Chrysler Cordoba,15.5,8,400,190,4325,12.2,77
+Chrysler Lebaron Medallion,26,4,156,92,2585,14.5,82
+Chrysler Lebaron Salon,17.6,6,225,85,3465,16.6,81
+Chrysler Lebaron Town & Country (Wagon),18.5,8,360,150,3940,13,79
+Chrysler New Yorker Brougham,13,8,440,215,4735,11,73
+Chrysler Newport Royal,13,8,400,190,4422,12.5,72
+Citroen DS-21 Pallas,,4,133,115,3090,17.5,70
+Datsun 1200,35,4,72,69,1613,18,71
+Datsun 200SX,23.9,4,119,97,2405,14.9,78
+Datsun 200SX,32.9,4,119,100,2615,14.8,81
+Datsun 210,31.8,4,85,65,2020,19.2,79
+Datsun 210,37,4,85,65,1975,19.4,81
+Datsun 210,40.8,4,85,65,2110,19.2,80
+Datsun 280ZX,32.7,6,168,132,2910,11.4,80
+Datsun 310 GX,38,4,91,67,1995,16.2,82
+Datsun 310,37.2,4,86,65,2019,16.4,80
+Datsun 510 (Wagon),28,4,97,92,2288,17,72
+Datsun 510 Hatchback,37,4,119,92,2434,15,80
+Datsun 510,27.2,4,119,97,2300,14.7,78
+Datsun 610,22,4,108,94,2379,16.5,73
+Datsun 710,24,4,119,97,2545,17,75
+Datsun 710,32,4,83,61,2003,19,74
+Datsun 810 Maxima,24.2,6,146,120,2930,13.8,81
+Datsun 810,22,6,146,97,2815,14.5,77
+Datsun B-210,32,4,85,70,1990,17,76
+Datsun B210 GX,39.4,4,85,70,2070,18.6,78
+Datsun B210,31,4,79,67,1950,19,74
+Datsun F-10 Hatchback,33.5,4,85,70,1945,16.8,77
+Datsun PL510,27,4,97,88,2130,14.5,70
+Datsun PL510,27,4,97,88,2130,14.5,71
+Dodge Aries SE,29,4,135,84,2525,16,82
+Dodge Aries Wagon (Wagon),25.8,4,156,92,2620,14.4,81
+Dodge Aspen 6,20.6,6,225,110,3360,16.6,79
+Dodge Aspen SE,20,6,225,100,3651,17.7,76
+Dodge Aspen,18.6,6,225,110,3620,18.7,78
+Dodge Aspen,19.1,6,225,90,3381,18.7,80
+Dodge Challenger SE,15,8,383,170,3563,10,70
+Dodge Charger 2.2,36,4,135,84,2370,13,82
+Dodge Colt (Wagon),28,4,98,80,2164,15,72
+Dodge Colt Hardtop,25,4,97.5,80,2126,17,72
+Dodge Colt Hatchback Custom,35.7,4,98,80,1915,14.4,79
+Dodge Colt M/M,33.5,4,98,83,2075,15.9,77
+Dodge Colt,26,4,98,79,2255,17.7,76
+Dodge Colt,27.9,4,156,105,2800,14.4,80
+Dodge Colt,28,4,90,75,2125,14.5,74
+Dodge Coronet Brougham,16,8,318,150,4190,13,76
+Dodge Coronet Custom (Wagon),14,8,318,150,4457,13.5,74
+Dodge Coronet Custom,15,8,318,150,3777,12.5,73
+Dodge D100,13,8,318,150,3755,14,76
+Dodge D200,11,8,318,210,4382,13.5,70
+Dodge Dart Custom,15,8,318,150,3399,11,73
+Dodge Diplomat,19.4,8,318,140,3735,13.2,78
+Dodge Magnum XE,17.5,8,318,140,4080,13.7,78
+Dodge Monaco (Wagon),12,8,383,180,4955,11.5,71
+Dodge Monaco Brougham,15.5,8,318,145,4140,13.7,77
+Dodge Omni,30.9,4,105,75,2230,14.5,78
+Dodge Rampage,32,4,135,84,2295,11.6,82
+Dodge St. Regis,18.2,8,318,135,3830,15.2,79
+Fiat 124 Sport Coupe,26,4,98,90,2265,15.5,73
+Fiat 124 TC,26,4,116,75,2246,14,74
+Fiat 124B,30,4,88,76,2065,14.5,71
+Fiat 128,24,4,90,75,2108,15.5,74
+Fiat 128,29,4,68,49,1867,19.5,73
+Fiat 131,28,4,107,86,2464,15.5,76
+Fiat Strada Custom,37.3,4,91,69,2130,14.7,79
+Fiat X1.9,31,4,79,67,2000,16,74
+Ford Capri II,25,4,140,92,2572,14.9,76
+Ford Country Squire (Wagon),13,8,400,170,4746,12,71
+Ford Country Squire (Wagon),15.5,8,351,142,4054,14.3,79
+Ford Country,12,8,400,167,4906,12.5,73
+Ford Escort 2H,29.9,4,98,65,2380,20.7,81
+Ford Escort 4W,34.4,4,98,65,2045,16.2,81
+Ford F108,13,8,302,130,3870,15,76
+Ford F250,10,8,360,215,4615,14,70
+Ford Fairmont (Auto),20.2,6,200,85,2965,15.8,78
+Ford Fairmont (Man),25.1,4,140,88,2720,15.4,78
+Ford Fairmont 4,22.3,4,140,88,2890,17.3,79
+Ford Fairmont Futura,24,4,140,92,2865,16.4,82
+Ford Fairmont,26.4,4,140,88,2870,18.1,80
+Ford Fiesta,36.1,4,98,66,1800,14.4,78
+Ford Futura,18.1,8,302,139,3205,11.2,78
+Ford Galaxie 500,14,8,351,153,4129,13,72
+Ford Galaxie 500,14,8,351,153,4154,13.5,71
+Ford Galaxie 500,15,8,429,198,4341,10,70
+Ford Gran Torino (Wagon),13,8,302,140,4294,16,72
+Ford Gran Torino (Wagon),14,8,302,140,4638,16,74
+Ford Gran Torino,14,8,302,137,4042,14.5,73
+Ford Gran Torino,14.5,8,351,152,4215,12.8,76
+Ford Gran Torino,16,8,302,140,4141,14,74
+Ford Granada Ghia,18,6,250,78,3574,21,76
+Ford Granada GL,20.2,6,200,88,3060,17.1,81
+Ford Granada L,22,6,232,112,2835,14.7,82
+Ford Granada,18.5,6,250,98,3525,19,77
+Ford LTD Landau,17.6,8,302,129,3725,13.4,79
+Ford LTD,13,8,351,158,4363,13,73
+Ford LTD,14,8,351,148,4657,13.5,75
+Ford Maverick,15,6,250,72,3158,19.5,75
+Ford Maverick,18,6,250,88,3021,16.5,73
+Ford Maverick,21,6,200,,2875,17,74
+Ford Maverick,21,6,200,85,2587,16,70
+Ford Maverick,24,6,200,81,3012,17.6,76
+Ford Mustang Boss 302,,8,302,140,3353,8,70
+Ford Mustang Cobra,23.6,4,140,,2905,14.3,80
+Ford Mustang GL,27,4,140,86,2790,15.6,82
+Ford Mustang II 2+2,25.5,4,140,89,2755,15.8,77
+Ford Mustang II,13,8,302,129,3169,12,75
+Ford Mustang,18,6,250,88,3139,14.5,71
+Ford Pinto (Wagon),22,4,122,86,2395,16,72
+Ford Pinto Runabout,21,4,122,86,2226,16.5,72
+Ford Pinto,18,6,171,97,2984,14.5,75
+Ford Pinto,19,4,122,85,2310,18.5,73
+Ford Pinto,23,4,140,83,2639,17,75
+Ford Pinto,25,4,98,,2046,19,71
+Ford Pinto,26,4,122,80,2451,16.5,74
+Ford Pinto,26.5,4,140,72,2565,13.6,76
+Ford Ranger,28,4,120,79,2625,18.6,82
+Ford Thunderbird,16,8,351,149,4335,14.5,77
+Ford Torino (Wagon),,8,351,153,4034,11,70
+Ford Torino 500,19,6,250,88,3302,15.5,71
+Ford Torino,17,8,302,140,3449,10.5,70
+Hi 1200D,9,8,304,193,4732,18.5,70
+Honda Accord CVCC,31.5,4,98,68,2045,18.5,77
+Honda Accord LX,29.5,4,98,68,2135,16.6,78
+Honda Accord,32.4,4,107,72,2290,17,80
+Honda Accord,36,4,107,75,2205,14.5,82
+Honda Civic (Auto),32,4,91,67,1965,15.7,82
+Honda Civic 1300,35.1,4,81,60,1760,16.1,81
+Honda Civic 1500 GL,44.6,4,91,67,1850,13.8,80
+Honda Civic CVCC,33,4,91,53,1795,17.5,75
+Honda Civic CVCC,36.1,4,91,60,1800,16.4,78
+Honda Civic,24,4,120,97,2489,15,74
+Honda Civic,33,4,91,53,1795,17.4,76
+Honda Civic,38,4,91,67,1965,15,82
+Honda Prelude,33.7,4,107,75,2210,14.4,81
+Maxda GLC Deluxe,34.1,4,86,65,1975,15.2,79
+Maxda RX-3,18,3,70,90,2124,13.5,73
+Mazda 626,31.3,4,120,75,2542,17.5,80
+Mazda 626,31.6,4,120,74,2635,18.3,81
+Mazda GLC 4,34.1,4,91,68,1985,16,81
+Mazda GLC Custom L,37,4,91,68,2025,18.2,82
+Mazda GLC Custom,31,4,91,68,1970,17.6,82
+Mazda GLC Deluxe,32.8,4,78,52,1985,19.4,78
+Mazda GLC,46.6,4,86,65,2110,17.9,80
+Mazda RX-2 Coupe,19,3,70,97,2330,13.5,72
+Mazda RX-4,21.5,3,80,110,2720,13.5,77
+Mazda RX-7 Gs,23.7,3,70,100,2420,12.5,80
+Mercedes-Benz 240D,30,4,146,67,3250,21.8,80
+Mercedes-Benz 280S,16.5,6,168,120,3820,16.7,76
+Mercedes-Benz 300D,25.4,5,183,77,3530,20.1,79
+Mercury Capri 2000,23,4,122,86,2220,14,71
+Mercury Capri V6,21,6,155,107,2472,14,73
+Mercury Cougar Brougham,15,8,302,130,4295,14.9,77
+Mercury Grand Marquis,16.5,8,351,138,3955,13.2,79
+Mercury Lynx L,36,4,98,70,2125,17.3,82
+Mercury Marquis Brougham,12,8,429,198,4952,11.5,73
+Mercury Marquis,11,8,429,208,4633,11,72
+Mercury Monarch Ghia,20.2,8,302,139,3570,12.8,78
+Mercury Monarch,15,6,250,72,3432,21,75
+Mercury Zephyr 6,19.8,6,200,85,2990,18.2,79
+Mercury Zephyr,20.8,6,200,85,3070,16.7,78
+Nissan Stanza XE,36,4,120,88,2160,14.5,82
+Oldsmobile Cutlass Ciera (Diesel),38,6,262,85,3015,17,82
+Oldsmobile Cutlass LS,26.6,8,350,105,3725,19,81
+Oldsmobile Cutlass Salon Brougham,19.9,8,260,110,3365,15.5,78
+Oldsmobile Cutlass Salon Brougham,23.9,8,260,90,3420,22.2,79
+Oldsmobile Cutlass Supreme,17,8,260,110,4060,19,77
+Oldsmobile Delta 88 Royale,12,8,350,160,4456,13.5,72
+Oldsmobile Omega Brougham,26.8,6,173,115,2700,12.9,79
+Oldsmobile Omega,11,8,350,180,3664,11,73
+Oldsmobile Starfire SX,23.8,4,151,85,2855,17.6,78
+Oldsmobile Vista Cruiser,12,8,350,180,4499,12.5,73
+Opel 1900,25,4,116,81,2220,16.9,76
+Opel 1900,28,4,116,90,2123,14,71
+Opel Manta,24,4,116,75,2158,15.5,73
+Opel Manta,26,4,97,78,2300,14.5,74
+Peugeot 304,30,4,79,70,2074,19.5,71
+Peugeot 504 (Wagon),21,4,120,87,2979,19.5,72
+Peugeot 504,19,4,120,88,3270,21.9,76
+Peugeot 504,23,4,120,88,2957,17,75
+Peugeot 504,25,4,110,87,2672,17.5,70
+Peugeot 504,27.2,4,141,71,3190,24.8,79
+Peugeot 505S Turbo Diesel,28.1,4,141,80,3230,20.4,81
+Peugeot 604SL,16.2,6,163,133,3410,15.8,78
+Plymouth Arrow GS,25.5,4,122,96,2300,15.5,77
+Plymouth Barracuda 340,14,8,340,160,3609,8,70
+Plymouth Champ,39,4,86,64,1875,16.4,81
+Plymouth Cricket,26,4,91,70,1955,20.5,71
+Plymouth Custom Suburb,13,8,360,170,4654,13,73
+Plymouth Duster,20,6,198,95,3102,16.5,74
+Plymouth Duster,22,6,198,95,2833,15.5,70
+Plymouth Duster,23,6,198,95,2904,16,73
+Plymouth Fury Gran Sedan,14,8,318,150,4237,14.5,73
+Plymouth Fury III,14,8,318,150,4096,13,71
+Plymouth Fury III,14,8,440,215,4312,8.5,70
+Plymouth Fury III,15,8,318,150,4135,13.5,72
+Plymouth Fury,18,6,225,95,3785,19,75
+Plymouth Grand Fury,16,8,318,150,4498,14.5,75
+Plymouth Horizon 4,34.7,4,105,63,2215,14.9,81
+Plymouth Horizon Miser,38,4,105,63,2125,14.7,82
+Plymouth Horizon TC3,34.5,4,105,70,2150,14.9,79
+Plymouth Horizon,34.2,4,105,70,2200,13.2,79
+Plymouth Reliant,27.2,4,135,84,2490,15.7,81
+Plymouth Reliant,30,4,135,84,2385,12.9,81
+Plymouth Sapporo,23.2,4,156,105,2745,16.7,78
+Plymouth Satellite (Wagon),,8,383,175,4166,10.5,70
+Plymouth Satellite Custom (Wagon),14,8,318,150,4077,14,72
+Plymouth Satellite Custom,16,6,225,105,3439,15.5,71
+Plymouth Satellite Sebring,18,6,225,105,3613,16.5,74
+Plymouth Satellite,18,8,318,150,3436,11,70
+Plymouth Valiant Custom,19,6,225,95,3264,16,75
+Plymouth Valiant,18,6,225,105,3121,16.5,73
+Plymouth Valiant,22,6,225,100,3233,15.4,76
+Plymouth Volare Custom,19,6,225,100,3630,17.7,77
+Plymouth Volare Premier V8,13,8,318,150,3940,13.2,76
+Plymouth Volare,20.5,6,225,100,3430,17.2,78
+Pontiac Astro,23,4,140,78,2592,18.5,75
+Pontiac Catalina Brougham,14,8,400,175,4464,11.5,71
+Pontiac Catalina,14,8,400,175,4385,12,72
+Pontiac Catalina,14,8,455,225,4425,10,70
+Pontiac Catalina,16,8,400,170,4668,11.5,75
+Pontiac Firebird,19,6,250,100,3282,15,71
+Pontiac Grand Prix Lj,16,8,400,180,4220,11.1,77
+Pontiac Grand Prix,16,8,400,230,4278,9.5,73
+Pontiac J2000 Se Hatchback,31,4,112,85,2575,16.2,82
+Pontiac Lemans V6,21.5,6,231,115,3245,15.4,79
+Pontiac Phoenix LJ,19.2,6,231,105,3535,19.2,78
+Pontiac Phoenix,27,4,151,90,2735,18,82
+Pontiac Phoenix,33.5,4,151,90,2556,13.2,79
+Pontiac Safari (Wagon),13,8,400,175,5140,12,71
+Pontiac Sunbird Coupe,24.5,4,151,88,2740,16,77
+Pontiac Ventura Sj,18.5,6,250,110,3645,16.2,76
+Renault 12 (Wagon),26,4,96,69,2189,18,72
+Renault 12TL,27,4,101,83,2202,15.3,76
+Renault 18I,34.5,4,100,,2320,15.8,81
+Renault 5 Gtl,36,4,79,58,1825,18.6,77
+Renault Lecar Deluxe,40.9,4,85,,1835,17.3,80
+Saab 900S,,4,121,110,2800,15.4,81
+Saab 99E,25,4,104,95,2375,17.5,70
+Saab 99GLE,21.6,4,121,115,2795,15.7,78
+Saab 99LE,24,4,121,110,2660,14,73
+Saab 99LE,25,4,121,115,2671,13.5,75
+Subaru DL,30,4,97,67,1985,16.4,77
+Subaru DL,33.8,4,97,67,2145,18,80
+Subaru,26,4,108,93,2391,15.5,74
+Subaru,32.3,4,97,67,2065,17.8,81
+Toyota Carina,20,4,97,88,2279,19,73
+Toyota Celica GT Liftback,21.1,4,134,95,2515,14.8,78
+Toyota Celica GT,32,4,144,96,2665,13.9,82
+Toyota Corolla 1200,31,4,71,65,1773,19,71
+Toyota Corolla 1200,32,4,71,65,1836,21,74
+Toyota Corolla 1600 (Wagon),27,4,97,88,2100,16.5,72
+Toyota Corolla Liftback,26,4,97,75,2265,18.2,77
+Toyota Corolla Tercel,38.1,4,89,60,1968,18.8,80
+Toyota Corolla,28,4,97,75,2155,16.4,76
+Toyota Corolla,29,4,97,75,2171,16,75
+Toyota Corolla,32.2,4,108,75,2265,15.2,80
+Toyota Corolla,32.4,4,108,75,2350,16.8,81
+Toyota Corolla,34,4,108,70,2245,16.9,82
+Toyota Corona Hardtop,24,4,113,95,2278,15.5,72
+Toyota Corona Liftback,29.8,4,134,90,2711,15.5,80
+Toyota Corona Mark II,24,4,113,95,2372,15,70
+Toyota Corona,24,4,134,96,2702,13.5,75
+Toyota Corona,25,4,113,95,2228,14,71
+Toyota Corona,27.5,4,134,95,2560,14.2,78
+Toyota Corona,31,4,76,52,1649,16.5,74
+Toyota Cressida,25.4,6,168,116,2900,12.6,81
+Toyota Mark II,19,6,156,108,2930,15.5,76
+Toyota Mark II,20,6,156,122,2807,13.5,73
+Toyota Starlet,39.1,4,79,58,1755,16.9,81
+Toyota Tercel,37.7,4,89,62,2050,17.3,81
+Toyouta Corona Mark II (Wagon),23,4,120,97,2506,14.5,72
+Triumph TR7 Coupe,35,4,122,88,2500,15.1,80
+Vokswagen Rabbit,29.8,4,89,62,1845,15.3,80
+Volkswagen 1131 Deluxe Sedan,26,4,97,46,1835,20.5,70
+Volkswagen 411 (Wagon),22,4,121,76,2511,18,72
+Volkswagen Dasher (Diesel),43.4,4,90,48,2335,23.7,80
+Volkswagen Dasher,25,4,90,71,2223,16.5,75
+Volkswagen Dasher,26,4,79,67,1963,15.5,74
+Volkswagen Dasher,30.5,4,97,78,2190,14.1,77
+Volkswagen Jetta,33,4,105,74,2190,14.2,81
+Volkswagen Model 111,27,4,97,60,1834,19,71
+Volkswagen Pickup,44,4,97,52,2130,24.6,82
+Volkswagen Rabbit C (Diesel),44.3,4,90,48,2085,21.7,80
+Volkswagen Rabbit Custom Diesel,43.1,4,90,48,1985,21.5,78
+Volkswagen Rabbit Custom,29,4,97,78,1940,14.5,77
+Volkswagen Rabbit Custom,31.9,4,89,71,1925,14,79
+Volkswagen Rabbit L,36,4,105,74,1980,15.3,82
+Volkswagen Rabbit,29,4,90,70,1937,14,75
+Volkswagen Rabbit,29,4,90,70,1937,14.2,76
+Volkswagen Rabbit,29.5,4,97,71,1825,12.2,76
+Volkswagen Rabbit,41.5,4,98,76,2144,14.7,80
+Volkswagen Scirocco,31.5,4,89,71,1990,14.9,78
+Volkswagen Super Beetle 117,,4,97,48,1978,20,71
+Volkswagen Super Beetle,26,4,97,46,1950,21,73
+Volkswagen Type 3,23,4,97,54,2254,23.5,72
+Volvo 144EA,19,4,121,112,2868,15.5,73
+Volvo 145E (Wagon),18,4,121,112,2933,14.5,72
+Volvo 244DL,22,4,121,98,2945,14.5,75
+Volvo 245,20,4,130,102,3150,15.7,76
+Volvo 264GL,17,6,163,125,3140,13.6,78
+Volvo Diesel,30.7,6,145,76,3160,19.6,81
diff --git a/static/vendor/d3-2.8.1/examples/parallel/parallel.html b/static/vendor/d3-2.8.1/examples/parallel/parallel.html
new file mode 100755 (executable)
index 0000000..61253a4
--- /dev/null
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+    <title>Parallel Coordinates</title>
+    <style type="text/css">
+
+svg {
+  font: 10px sans-serif;
+}
+
+.background path {
+  fill: none;
+  stroke: #ccc;
+  stroke-opacity: .4;
+  shape-rendering: crispEdges;
+}
+
+.foreground path {
+  fill: none;
+  stroke: steelblue;
+  stroke-opacity: .7;
+}
+
+.brush .extent {
+  fill-opacity: .3;
+  stroke: #fff;
+  shape-rendering: crispEdges;
+}
+
+.axis line, .axis path {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+.axis text {
+  text-shadow: 0 1px 0 #fff;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript">
+
+var m = [30, 10, 10, 10],
+    w = 960 - m[1] - m[3],
+    h = 500 - m[0] - m[2];
+
+var x = d3.scale.ordinal().rangePoints([0, w], 1),
+    y = {};
+
+var line = d3.svg.line(),
+    axis = d3.svg.axis().orient("left"),
+    background,
+    foreground;
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+d3.csv("cars.csv", function(cars) {
+
+  // Extract the list of dimensions and create a scale for each.
+  x.domain(dimensions = d3.keys(cars[0]).filter(function(d) {
+    return d != "name" && (y[d] = d3.scale.linear()
+        .domain(d3.extent(cars, function(p) { return +p[d]; }))
+        .range([h, 0]));
+  }));
+
+  // Add grey background lines for context.
+  background = svg.append("g")
+      .attr("class", "background")
+    .selectAll("path")
+      .data(cars)
+    .enter().append("path")
+      .attr("d", path);
+
+  // Add blue foreground lines for focus.
+  foreground = svg.append("g")
+      .attr("class", "foreground")
+    .selectAll("path")
+      .data(cars)
+    .enter().append("path")
+      .attr("d", path);
+
+  // Add a group element for each dimension.
+  var g = svg.selectAll(".dimension")
+      .data(dimensions)
+    .enter().append("g")
+      .attr("class", "dimension")
+      .attr("transform", function(d) { return "translate(" + x(d) + ")"; });
+
+  // Add an axis and title.
+  g.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.
+  g.append("g")
+      .attr("class", "brush")
+      .each(function(d) { d3.select(this).call(y[d].brush = d3.svg.brush().y(y[d]).on("brush", 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(); });
+  foreground.style("display", function(d) {
+    return actives.every(function(p, i) {
+      return extents[i][0] <= d[p] && d[p] <= extents[i][1];
+    }) ? null : "none";
+  });
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/partition/partition-icicle-zoom.html b/static/vendor/d3-2.8.1/examples/partition/partition-icicle-zoom.html
new file mode 100755 (executable)
index 0000000..e2ed75e
--- /dev/null
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Partition - Icicle</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+rect {
+  stroke: #fff;
+}
+
+    </style>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 250,
+    x = d3.scale.linear().range([0, w]),
+    y = d3.scale.linear().range([0, h]),
+    color = d3.scale.category20c();
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+var partition = d3.layout.partition()
+    .value(function(d) { return d.size; });
+
+d3.json("../data/flare.json", function(json) {
+  var rect = vis.data([json]).selectAll("rect")
+      .data(partition.nodes)
+    .enter().append("rect")
+      .attr("x", function(d) { return x(d.x); })
+      .attr("y", function(d) { return y(d.y); })
+      .attr("width", function(d) { return x(d.dx); })
+      .attr("height", function(d) { return y(d.dy); })
+      .attr("fill", function(d) { return color((d.children ? d : d.parent).name); })
+      .on("click", click);
+
+  function click(d) {
+    x.domain([d.x, d.x + d.dx]);
+    y.domain([d.y, 1]).range([d.y ? 20 : 0, h]);
+
+    rect.transition()
+      .duration(750)
+      .attr("x", function(d) { return x(d.x); })
+      .attr("y", function(d) { return y(d.y); })
+      .attr("width", function(d) { return x(d.x + d.dx) - x(d.x); })
+      .attr("height", function(d) { return y(d.y + d.dy) - y(d.y); });
+  }
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/partition/partition-icicle.html b/static/vendor/d3-2.8.1/examples/partition/partition-icicle.html
new file mode 100755 (executable)
index 0000000..98a9748
--- /dev/null
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Partition - Icicle</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+rect {
+  stroke: #fff;
+}
+
+    </style>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 250,
+    color = d3.scale.category20c();
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+var partition = d3.layout.partition()
+    .size([w, h])
+    .value(function(d) { return d.size; });
+
+d3.json("../data/flare.json", function(json) {
+  vis.data([json]).selectAll("rect")
+      .data(partition.nodes)
+    .enter().append("rect")
+      .attr("x", function(d) { return d.x; })
+      .attr("y", function(d) { return d.y; })
+      .attr("width", function(d) { return d.dx; })
+      .attr("height", function(d) { return d.dy; })
+      .style("fill", function(d) { return color((d.children ? d : d.parent).name); });
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/partition/partition-sunburst-zoom.html b/static/vendor/d3-2.8.1/examples/partition/partition-sunburst-zoom.html
new file mode 100755 (executable)
index 0000000..aef1880
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Partition - Sunburst</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+path {
+  stroke: #fff;
+  fill-rule: evenodd;
+}
+
+    </style>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 700,
+    r = Math.min(w, h) / 2,
+    x = d3.scale.linear().range([0, 2 * Math.PI]),
+    y = d3.scale.sqrt().range([0, r]),
+    color = d3.scale.category20c();
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+  .append("g")
+    .attr("transform", "translate(" + w / 2 + "," + h / 2 + ")");
+
+var partition = d3.layout.partition()
+    .value(function(d) { return d.size; });
+
+var arc = d3.svg.arc()
+    .startAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x))); })
+    .endAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx))); })
+    .innerRadius(function(d) { return Math.max(0, y(d.y)); })
+    .outerRadius(function(d) { return Math.max(0, y(d.y + d.dy)); });
+
+d3.json("../data/flare.json", function(json) {
+  var path = vis.data([json]).selectAll("path")
+      .data(partition.nodes)
+    .enter().append("path")
+      .attr("d", arc)
+      .style("fill", function(d) { return color((d.children ? d : d.parent).name); })
+      .on("click", click);
+
+  function click(d) {
+    path.transition()
+      .duration(750)
+      .attrTween("d", arcTween(d));
+  }
+});
+
+// Interpolate the scales!
+function arcTween(d) {
+  var xd = d3.interpolate(x.domain(), [d.x, d.x + d.dx]),
+      yd = d3.interpolate(y.domain(), [d.y, 1]),
+      yr = d3.interpolate(y.range(), [d.y ? 20 : 0, r]);
+  return function(d, i) {
+    return i
+        ? function(t) { return arc(d); }
+        : function(t) { x.domain(xd(t)); y.domain(yd(t)).range(yr(t)); return arc(d); };
+  };
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/partition/partition-sunburst.html b/static/vendor/d3-2.8.1/examples/partition/partition-sunburst.html
new file mode 100755 (executable)
index 0000000..250b308
--- /dev/null
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Partition - Sunburst</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="../button.css"/>
+  </head>
+  <body>
+    <div id="chart">
+      <button id="size" class="first">
+        Size
+      </button
+      ><button id="count" class="active last">
+        Count
+      </button><p>
+    </div>
+    <script type="text/javascript" src="partition-sunburst.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/partition/partition-sunburst.js b/static/vendor/d3-2.8.1/examples/partition/partition-sunburst.js
new file mode 100755 (executable)
index 0000000..f19f76d
--- /dev/null
@@ -0,0 +1,72 @@
+var w = 960,
+    h = 700,
+    r = Math.min(w, h) / 2,
+    color = d3.scale.category20c();
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+  .append("g")
+    .attr("transform", "translate(" + w / 2 + "," + h / 2 + ")");
+
+var partition = d3.layout.partition()
+    .sort(null)
+    .size([2 * Math.PI, r * r])
+    .value(function(d) { return 1; });
+
+var arc = d3.svg.arc()
+    .startAngle(function(d) { return d.x; })
+    .endAngle(function(d) { return d.x + d.dx; })
+    .innerRadius(function(d) { return Math.sqrt(d.y); })
+    .outerRadius(function(d) { return Math.sqrt(d.y + d.dy); });
+
+d3.json("../data/flare.json", function(json) {
+  var path = vis.data([json]).selectAll("path")
+      .data(partition.nodes)
+    .enter().append("path")
+      .attr("display", function(d) { return d.depth ? null : "none"; }) // hide inner ring
+      .attr("d", arc)
+      .attr("fill-rule", "evenodd")
+      .style("stroke", "#fff")
+      .style("fill", function(d) { return color((d.children ? d : d.parent).name); })
+      .each(stash);
+
+  d3.select("#size").on("click", function() {
+    path
+        .data(partition.value(function(d) { return d.size; }))
+      .transition()
+        .duration(1500)
+        .attrTween("d", arcTween);
+
+    d3.select("#size").classed("active", true);
+    d3.select("#count").classed("active", false);
+  });
+
+  d3.select("#count").on("click", function() {
+    path
+        .data(partition.value(function(d) { return 1; }))
+      .transition()
+        .duration(1500)
+        .attrTween("d", arcTween);
+
+    d3.select("#size").classed("active", false);
+    d3.select("#count").classed("active", true);
+  });
+});
+
+// Stash the old values for transition.
+function stash(d) {
+  d.x0 = d.x;
+  d.dx0 = d.dx;
+}
+
+// Interpolate the arcs in data space.
+function arcTween(a) {
+  var i = d3.interpolate({x: a.x0, dx: a.dx0}, a);
+  return function(t) {
+    var b = i(t);
+    a.x0 = b.x;
+    a.dx0 = b.dx;
+    return arc(b);
+  };
+}
diff --git a/static/vendor/d3-2.8.1/examples/pie/pie-transition.html b/static/vendor/d3-2.8.1/examples/pie/pie-transition.html
new file mode 100755 (executable)
index 0000000..677d48b
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Pie Chart</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 400,
+    h = 400,
+    r = Math.min(w, h) / 2,
+    data = d3.range(10).map(Math.random).sort(d3.descending),
+    color = d3.scale.category20(),
+    arc = d3.svg.arc().outerRadius(r),
+    donut = d3.layout.pie();
+
+var vis = d3.select("body").append("svg")
+    .data([data])
+    .attr("width", w)
+    .attr("height", h);
+
+var arcs = vis.selectAll("g.arc")
+    .data(donut)
+  .enter().append("g")
+    .attr("class", "arc")
+    .attr("transform", "translate(" + r + "," + r + ")");
+
+var paths = arcs.append("path")
+    .attr("fill", function(d, i) { return color(i); });
+
+paths.transition()
+    .ease("bounce")
+    .duration(2000)
+    .attrTween("d", tweenPie);
+
+paths.transition()
+    .ease("elastic")
+    .delay(function(d, i) { return 2000 + i * 50; })
+    .duration(750)
+    .attrTween("d", tweenDonut);
+
+function tweenPie(b) {
+  b.innerRadius = 0;
+  var i = d3.interpolate({startAngle: 0, endAngle: 0}, b);
+  return function(t) {
+    return arc(i(t));
+  };
+}
+
+function tweenDonut(b) {
+  b.innerRadius = r * .6;
+  var i = d3.interpolate({innerRadius: 0}, b);
+  return function(t) {
+    return arc(i(t));
+  };
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/pie/pie.html b/static/vendor/d3-2.8.1/examples/pie/pie.html
new file mode 100755 (executable)
index 0000000..be279c7
--- /dev/null
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Pie Chart</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 400,
+    h = 400,
+    r = Math.min(w, h) / 2,
+    data = d3.range(10).map(Math.random),
+    color = d3.scale.category20(),
+    donut = d3.layout.pie(),
+    arc = d3.svg.arc().innerRadius(r * .6).outerRadius(r);
+
+var vis = d3.select("body")
+  .append("svg")
+    .data([data])
+    .attr("width", w)
+    .attr("height", h);
+
+var arcs = vis.selectAll("g.arc")
+    .data(donut)
+  .enter().append("g")
+    .attr("class", "arc")
+    .attr("transform", "translate(" + r + "," + r + ")");
+
+arcs.append("path")
+    .attr("fill", function(d, i) { return color(i); })
+    .attr("d", arc);
+
+arcs.append("text")
+    .attr("transform", function(d) { return "translate(" + arc.centroid(d) + ")"; })
+    .attr("dy", ".35em")
+    .attr("text-anchor", "middle")
+    .attr("display", function(d) { return d.value > .15 ? null : "none"; })
+    .text(function(d, i) { return d.value.toFixed(2); });
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/population/population.css b/static/vendor/d3-2.8.1/examples/population/population.css
new file mode 100755 (executable)
index 0000000..9679fca
--- /dev/null
@@ -0,0 +1,28 @@
+svg {
+  font: 10px sans-serif;
+}
+
+text.title {
+  font: 300 78px Helvetica Neue;
+  fill: #666;
+}
+
+.rule line {
+  stroke: #fff;
+  stroke-opacity: .2;
+  shape-rendering: crispEdges;
+}
+
+.rule:first-child line {
+  stroke: #000;
+  stroke-opacity: 1;
+}
+
+rect {
+  fill-opacity: .6;
+  fill: #e377c2;
+}
+
+rect:first-child {
+  fill: #1f77b4;
+}
diff --git a/static/vendor/d3-2.8.1/examples/population/population.csv b/static/vendor/d3-2.8.1/examples/population/population.csv
new file mode 100755 (executable)
index 0000000..06aa28b
--- /dev/null
@@ -0,0 +1,571 @@
+year,age,sex,people
+1850,0,1,1483789
+1850,0,2,1450376
+1850,5,1,1411067
+1850,5,2,1359668
+1850,10,1,1260099
+1850,10,2,1216114
+1850,15,1,1077133
+1850,15,2,1110619
+1850,20,1,1017281
+1850,20,2,1003841
+1850,25,1,862547
+1850,25,2,799482
+1850,30,1,730638
+1850,30,2,639636
+1850,35,1,588487
+1850,35,2,505012
+1850,40,1,475911
+1850,40,2,428185
+1850,45,1,384211
+1850,45,2,341254
+1850,50,1,321343
+1850,50,2,286580
+1850,55,1,194080
+1850,55,2,187208
+1850,60,1,174976
+1850,60,2,162236
+1850,65,1,106827
+1850,65,2,105534
+1850,70,1,73677
+1850,70,2,71762
+1850,75,1,40834
+1850,75,2,40229
+1850,80,1,23449
+1850,80,2,22949
+1850,85,1,8186
+1850,85,2,10511
+1850,90,1,5259
+1850,90,2,6569
+1860,0,1,2120846
+1860,0,2,2092162
+1860,5,1,1804467
+1860,5,2,1778772
+1860,10,1,1612640
+1860,10,2,1540350
+1860,15,1,1438094
+1860,15,2,1495999
+1860,20,1,1351121
+1860,20,2,1370462
+1860,25,1,1217615
+1860,25,2,1116373
+1860,30,1,1043174
+1860,30,2,936055
+1860,35,1,866910
+1860,35,2,737136
+1860,40,1,699434
+1860,40,2,616826
+1860,45,1,552404
+1860,45,2,461739
+1860,50,1,456176
+1860,50,2,407305
+1860,55,1,292417
+1860,55,2,267224
+1860,60,1,260887
+1860,60,2,249735
+1860,65,1,149331
+1860,65,2,141405
+1860,70,1,98465
+1860,70,2,101778
+1860,75,1,56699
+1860,75,2,57597
+1860,80,1,29007
+1860,80,2,29506
+1860,85,1,10434
+1860,85,2,14053
+1860,90,1,7232
+1860,90,2,6622
+1870,0,1,2800083
+1870,0,2,2717102
+1870,5,1,2428469
+1870,5,2,2393680
+1870,10,1,2427341
+1870,10,2,2342670
+1870,15,1,1958390
+1870,15,2,2077248
+1870,20,1,1805303
+1870,20,2,1909382
+1870,25,1,1509059
+1870,25,2,1574285
+1870,30,1,1251534
+1870,30,2,1275629
+1870,35,1,1185336
+1870,35,2,1137490
+1870,40,1,968861
+1870,40,2,944401
+1870,45,1,852672
+1870,45,2,747916
+1870,50,1,736387
+1870,50,2,637801
+1870,55,1,486036
+1870,55,2,407819
+1870,60,1,399264
+1870,60,2,374801
+1870,65,1,260829
+1870,65,2,239080
+1870,70,1,173364
+1870,70,2,165501
+1870,75,1,86929
+1870,75,2,89540
+1870,80,1,47427
+1870,80,2,54190
+1870,85,1,15891
+1870,85,2,19302
+1870,90,1,8649
+1870,90,2,13068
+1880,0,1,3533662
+1880,0,2,3421597
+1880,5,1,3297503
+1880,5,2,3179142
+1880,10,1,2911924
+1880,10,2,2813550
+1880,15,1,2457734
+1880,15,2,2527818
+1880,20,1,2547780
+1880,20,2,2512803
+1880,25,1,2119393
+1880,25,2,1974241
+1880,30,1,1749107
+1880,30,2,1596772
+1880,35,1,1540772
+1880,35,2,1483717
+1880,40,1,1237347
+1880,40,2,1239435
+1880,45,1,1065973
+1880,45,2,1003711
+1880,50,1,964484
+1880,50,2,863012
+1880,55,1,679147
+1880,55,2,594843
+1880,60,1,580298
+1880,60,2,526956
+1880,65,1,369398
+1880,65,2,346303
+1880,70,1,255422
+1880,70,2,251860
+1880,75,1,141628
+1880,75,2,143513
+1880,80,1,67526
+1880,80,2,77290
+1880,85,1,22437
+1880,85,2,31227
+1880,90,1,10272
+1880,90,2,15451
+1900,0,1,4619544
+1900,0,2,4589196
+1900,5,1,4465783
+1900,5,2,4390483
+1900,10,1,4057669
+1900,10,2,4001749
+1900,15,1,3774846
+1900,15,2,3801743
+1900,20,1,3694038
+1900,20,2,3751061
+1900,25,1,3389280
+1900,25,2,3236056
+1900,30,1,2918964
+1900,30,2,2665174
+1900,35,1,2633883
+1900,35,2,2347737
+1900,40,1,2261070
+1900,40,2,2004987
+1900,45,1,1868413
+1900,45,2,1648025
+1900,50,1,1571038
+1900,50,2,1411981
+1900,55,1,1161908
+1900,55,2,1064632
+1900,60,1,916571
+1900,60,2,887508
+1900,65,1,672663
+1900,65,2,640212
+1900,70,1,454747
+1900,70,2,440007
+1900,75,1,268211
+1900,75,2,265879
+1900,80,1,127435
+1900,80,2,132449
+1900,85,1,44008
+1900,85,2,48614
+1900,90,1,15164
+1900,90,2,20093
+1910,0,1,5296823
+1910,0,2,5287477
+1910,5,1,4991803
+1910,5,2,4866139
+1910,10,1,4650747
+1910,10,2,4471887
+1910,15,1,4566154
+1910,15,2,4592269
+1910,20,1,4637632
+1910,20,2,4447683
+1910,25,1,4257755
+1910,25,2,3946153
+1910,30,1,3658125
+1910,30,2,3295220
+1910,35,1,3427518
+1910,35,2,3088990
+1910,40,1,2860229
+1910,40,2,2471267
+1910,45,1,2363801
+1910,45,2,2114930
+1910,50,1,2126516
+1910,50,2,1773592
+1910,55,1,1508358
+1910,55,2,1317651
+1910,60,1,1189421
+1910,60,2,1090697
+1910,65,1,850159
+1910,65,2,813868
+1910,70,1,557936
+1910,70,2,547623
+1910,75,1,322679
+1910,75,2,350900
+1910,80,1,161715
+1910,80,2,174315
+1910,85,1,59699
+1910,85,2,62725
+1910,90,1,23929
+1910,90,2,28965
+1920,0,1,5934792
+1920,0,2,5694244
+1920,5,1,5789008
+1920,5,2,5693960
+1920,10,1,5401156
+1920,10,2,5293057
+1920,15,1,4724365
+1920,15,2,4779936
+1920,20,1,4549411
+1920,20,2,4742632
+1920,25,1,4565066
+1920,25,2,4529382
+1920,30,1,4110771
+1920,30,2,3982426
+1920,35,1,4081543
+1920,35,2,3713810
+1920,40,1,3321923
+1920,40,2,3059757
+1920,45,1,3143891
+1920,45,2,2669089
+1920,50,1,2546035
+1920,50,2,2200491
+1920,55,1,1880975
+1920,55,2,1674672
+1920,60,1,1587549
+1920,60,2,1382877
+1920,65,1,1095956
+1920,65,2,989901
+1920,70,1,714618
+1920,70,2,690097
+1920,75,1,417292
+1920,75,2,439465
+1920,80,1,187000
+1920,80,2,211110
+1920,85,1,75991
+1920,85,2,92829
+1920,90,1,22398
+1920,90,2,32085
+1930,0,1,5875250
+1930,0,2,5662530
+1930,5,1,6542592
+1930,5,2,6129561
+1930,10,1,6064820
+1930,10,2,5986529
+1930,15,1,5709452
+1930,15,2,5769587
+1930,20,1,5305992
+1930,20,2,5565382
+1930,25,1,4929853
+1930,25,2,5050229
+1930,30,1,4424408
+1930,30,2,4455213
+1930,35,1,4576531
+1930,35,2,4593776
+1930,40,1,4075139
+1930,40,2,3754022
+1930,45,1,3633152
+1930,45,2,3396558
+1930,50,1,3128108
+1930,50,2,2809191
+1930,55,1,2434077
+1930,55,2,2298614
+1930,60,1,1927564
+1930,60,2,1783515
+1930,65,1,1397275
+1930,65,2,1307312
+1930,70,1,919045
+1930,70,2,918509
+1930,75,1,536375
+1930,75,2,522716
+1930,80,1,246708
+1930,80,2,283579
+1930,85,1,88978
+1930,85,2,109210
+1930,90,1,30338
+1930,90,2,43483
+1940,0,1,5294628
+1940,0,2,5124653
+1940,5,1,5468378
+1940,5,2,5359099
+1940,10,1,5960416
+1940,10,2,5868532
+1940,15,1,6165109
+1940,15,2,6193701
+1940,20,1,5682414
+1940,20,2,5896002
+1940,25,1,5438166
+1940,25,2,5664244
+1940,30,1,5040048
+1940,30,2,5171522
+1940,35,1,4724804
+1940,35,2,4791809
+1940,40,1,4437392
+1940,40,2,4394061
+1940,45,1,4190187
+1940,45,2,4050290
+1940,50,1,3785735
+1940,50,2,3488396
+1940,55,1,2972069
+1940,55,2,2810000
+1940,60,1,2370232
+1940,60,2,2317790
+1940,65,1,1897678
+1940,65,2,1911117
+1940,70,1,1280023
+1940,70,2,1287711
+1940,75,1,713875
+1940,75,2,764915
+1940,80,1,359418
+1940,80,2,414761
+1940,85,1,127303
+1940,85,2,152131
+1940,90,1,42263
+1940,90,2,58119
+1950,0,1,8211806
+1950,0,2,7862267
+1950,5,1,6706601
+1950,5,2,6450863
+1950,10,1,5629744
+1950,10,2,5430835
+1950,15,1,5264129
+1950,15,2,5288742
+1950,20,1,5573308
+1950,20,2,5854227
+1950,25,1,6007254
+1950,25,2,6317332
+1950,30,1,5676022
+1950,30,2,5895178
+1950,35,1,5511364
+1950,35,2,5696261
+1950,40,1,5076985
+1950,40,2,5199224
+1950,45,1,4533177
+1950,45,2,4595842
+1950,50,1,4199164
+1950,50,2,4147295
+1950,55,1,3667351
+1950,55,2,3595158
+1950,60,1,3035038
+1950,60,2,3009768
+1950,65,1,2421234
+1950,65,2,2548250
+1950,70,1,1627920
+1950,70,2,1786831
+1950,75,1,1006530
+1950,75,2,1148469
+1950,80,1,511727
+1950,80,2,637717
+1950,85,1,182821
+1950,85,2,242798
+1950,90,1,54836
+1950,90,2,90766
+1960,0,1,10374975
+1960,0,2,10146999
+1960,5,1,9495503
+1960,5,2,9250741
+1960,10,1,8563700
+1960,10,2,8310764
+1960,15,1,6620902
+1960,15,2,6617493
+1960,20,1,5268384
+1960,20,2,5513495
+1960,25,1,5311805
+1960,25,2,5548259
+1960,30,1,5801342
+1960,30,2,6090862
+1960,35,1,6063063
+1960,35,2,6431337
+1960,40,1,5657943
+1960,40,2,5940520
+1960,45,1,5345658
+1960,45,2,5516028
+1960,50,1,4763364
+1960,50,2,4928844
+1960,55,1,4170581
+1960,55,2,4402878
+1960,60,1,3405293
+1960,60,2,3723839
+1960,65,1,2859371
+1960,65,2,3268699
+1960,70,1,2115763
+1960,70,2,2516479
+1960,75,1,1308913
+1960,75,2,1641371
+1960,80,1,619923
+1960,80,2,856952
+1960,85,1,253245
+1960,85,2,384572
+1960,90,1,75908
+1960,90,2,135774
+1970,0,1,8685121
+1970,0,2,8326887
+1970,5,1,10411131
+1970,5,2,10003293
+1970,10,1,10756403
+1970,10,2,10343538
+1970,15,1,9605399
+1970,15,2,9414284
+1970,20,1,7729202
+1970,20,2,8341830
+1970,25,1,6539301
+1970,25,2,6903041
+1970,30,1,5519879
+1970,30,2,5851441
+1970,35,1,5396732
+1970,35,2,5708021
+1970,40,1,5718538
+1970,40,2,6129319
+1970,45,1,5794120
+1970,45,2,6198742
+1970,50,1,5298312
+1970,50,2,5783817
+1970,55,1,4762911
+1970,55,2,5222164
+1970,60,1,4037643
+1970,60,2,4577251
+1970,65,1,3142606
+1970,65,2,3894827
+1970,70,1,2340826
+1970,70,2,3138009
+1970,75,1,1599269
+1970,75,2,2293376
+1970,80,1,886155
+1970,80,2,1417553
+1970,85,1,371123
+1970,85,2,658511
+1970,90,1,186502
+1970,90,2,314929
+1980,0,1,8439366
+1980,0,2,8081854
+1980,5,1,8680730
+1980,5,2,8275881
+1980,10,1,9452338
+1980,10,2,9048483
+1980,15,1,10698856
+1980,15,2,10410271
+1980,20,1,10486776
+1980,20,2,10614947
+1980,25,1,9624053
+1980,25,2,9827903
+1980,30,1,8705835
+1980,30,2,8955225
+1980,35,1,6852069
+1980,35,2,7134239
+1980,40,1,5692148
+1980,40,2,5953910
+1980,45,1,5342469
+1980,45,2,5697543
+1980,50,1,5603709
+1980,50,2,6110117
+1980,55,1,5485098
+1980,55,2,6160229
+1980,60,1,4696140
+1980,60,2,5456885
+1980,65,1,3893510
+1980,65,2,4896947
+1980,70,1,2857774
+1980,70,2,3963441
+1980,75,1,1840438
+1980,75,2,2951759
+1980,80,1,1012886
+1980,80,2,1919292
+1980,85,1,472338
+1980,85,2,1023115
+1980,90,1,204148
+1980,90,2,499046
+1990,0,1,9307465
+1990,0,2,8894007
+1990,5,1,9274732
+1990,5,2,8799955
+1990,10,1,8782542
+1990,10,2,8337284
+1990,15,1,9020572
+1990,15,2,8590991
+1990,20,1,9436188
+1990,20,2,9152644
+1990,25,1,10658027
+1990,25,2,10587292
+1990,30,1,11028712
+1990,30,2,11105750
+1990,35,1,9853933
+1990,35,2,10038644
+1990,40,1,8712632
+1990,40,2,8928252
+1990,45,1,6848082
+1990,45,2,7115129
+1990,50,1,5553992
+1990,50,2,5899925
+1990,55,1,4981670
+1990,55,2,5460506
+1990,60,1,4953822
+1990,60,2,5663205
+1990,65,1,4538398
+1990,65,2,5594108
+1990,70,1,3429420
+1990,70,2,4610222
+1990,75,1,2344932
+1990,75,2,3723980
+1990,80,1,1342996
+1990,80,2,2545730
+1990,85,1,588790
+1990,85,2,1419494
+1990,90,1,238459
+1990,90,2,745146
+2000,0,1,9735380
+2000,0,2,9310714
+2000,5,1,10552146
+2000,5,2,10069564
+2000,10,1,10563233
+2000,10,2,10022524
+2000,15,1,10237419
+2000,15,2,9692669
+2000,20,1,9731315
+2000,20,2,9324244
+2000,25,1,9659493
+2000,25,2,9518507
+2000,30,1,10205879
+2000,30,2,10119296
+2000,35,1,11475182
+2000,35,2,11635647
+2000,40,1,11320252
+2000,40,2,11488578
+2000,45,1,9925006
+2000,45,2,10261253
+2000,50,1,8507934
+2000,50,2,8911133
+2000,55,1,6459082
+2000,55,2,6921268
+2000,60,1,5123399
+2000,60,2,5668961
+2000,65,1,4453623
+2000,65,2,4804784
+2000,70,1,3792145
+2000,70,2,5184855
+2000,75,1,2912655
+2000,75,2,4355644
+2000,80,1,1902638
+2000,80,2,3221898
+2000,85,1,970357
+2000,85,2,1981156
+2000,90,1,336303
+2000,90,2,1064581
diff --git a/static/vendor/d3-2.8.1/examples/population/population.html b/static/vendor/d3-2.8.1/examples/population/population.html
new file mode 100755 (executable)
index 0000000..fe04f7e
--- /dev/null
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>U.S. Population</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="population.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="population.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/population/population.js b/static/vendor/d3-2.8.1/examples/population/population.js
new file mode 100755 (executable)
index 0000000..11729f9
--- /dev/null
@@ -0,0 +1,126 @@
+var w = 960,
+    h = 500,
+    x = d3.scale.linear().range([0, w]),
+    y = d3.scale.linear().range([0, h - 40]);
+
+// An SVG element with a bottom-right origin.
+var svg = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+    .style("padding-right", "30px")
+  .append("g")
+    .attr("transform", "translate(" + x(1) + "," + (h - 20) + ")scale(-1,-1)");
+
+// A sliding container to hold the bars.
+var body = svg.append("g")
+    .attr("transform", "translate(0,0)");
+
+// A container to hold the y-axis rules.
+var rules = svg.append("g");
+
+// A label for the current year.
+var title = svg.append("text")
+    .attr("class", "title")
+    .attr("dy", ".71em")
+    .attr("transform", "translate(" + x(1) + "," + y(1) + ")scale(-1,-1)")
+    .text(2000);
+
+d3.csv("population.csv", function(data) {
+
+  // Convert strings to numbers.
+  data.forEach(function(d) {
+    d.people = +d.people;
+    d.year = +d.year;
+    d.age = +d.age;
+  });
+
+  // Compute the extent of the data set in age and years.
+  var age0 = 0,
+      age1 = d3.max(data, function(d) { return d.age; }),
+      year0 = d3.min(data, function(d) { return d.year; }),
+      year1 = d3.max(data, function(d) { return d.year; }),
+      year = year1;
+
+  // Update the scale domains.
+  x.domain([0, age1 + 5]);
+  y.domain([0, d3.max(data, function(d) { return d.people; })]);
+
+  // Add rules to show the population values.
+  rules = rules.selectAll(".rule")
+      .data(y.ticks(10))
+    .enter().append("g")
+      .attr("class", "rule")
+      .attr("transform", function(d) { return "translate(0," + y(d) + ")"; });
+
+  rules.append("line")
+      .attr("x2", w);
+
+  rules.append("text")
+      .attr("x", 6)
+      .attr("dy", ".35em")
+      .attr("transform", "rotate(180)")
+      .text(function(d) { return Math.round(d / 1e6) + "M"; });
+
+  // Add labeled rects for each birthyear.
+  var years = body.selectAll("g")
+      .data(d3.range(year0 - age1, year1 + 5, 5))
+    .enter().append("g")
+      .attr("transform", function(d) { return "translate(" + x(year1 - d) + ",0)"; });
+
+  years.selectAll("rect")
+      .data(d3.range(2))
+    .enter().append("rect")
+      .attr("x", 1)
+      .attr("width", x(5) - 2)
+      .attr("height", 1e-6);
+
+  years.append("text")
+      .attr("y", -6)
+      .attr("x", -x(5) / 2)
+      .attr("transform", "rotate(180)")
+      .attr("text-anchor", "middle")
+      .style("fill", "#fff")
+      .text(String);
+
+  // Add labels to show the age.
+  svg.append("g").selectAll("text")
+      .data(d3.range(0, age1 + 5, 5))
+    .enter().append("text")
+      .attr("text-anchor", "middle")
+      .attr("transform", function(d) { return "translate(" + (x(d) + x(5) / 2) + ",-4)scale(-1,-1)"; })
+      .attr("dy", ".71em")
+      .text(String);
+
+  // Nest by year then birthyear.
+  data = d3.nest()
+      .key(function(d) { return d.year; })
+      .key(function(d) { return d.year - d.age; })
+      .rollup(function(v) { return v.map(function(d) { return d.people; }); })
+      .map(data);
+
+  // Allow the arrow keys to change the displayed year.
+  d3.select(window).on("keydown", function() {
+    switch (d3.event.keyCode) {
+      case 37: year = Math.max(year0, year - 10); break;
+      case 39: year = Math.min(year1, year + 10); break;
+    }
+    redraw();
+  });
+
+  redraw();
+
+  function redraw() {
+    if (!(year in data)) return;
+    title.text(year);
+
+    body.transition()
+        .duration(750)
+        .attr("transform", function(d) { return "translate(" + x(year - year1) + ",0)"; });
+
+    years.selectAll("rect")
+        .data(function(d) { return data[year][d] || [0, 0]; })
+      .transition()
+        .duration(750)
+        .attr("height", y);
+  }
+});
diff --git a/static/vendor/d3-2.8.1/examples/qq/qq.css b/static/vendor/d3-2.8.1/examples/qq/qq.css
new file mode 100755 (executable)
index 0000000..d468098
--- /dev/null
@@ -0,0 +1,18 @@
+#chart {
+  font: 10px sans-serif;
+  width: 960px;
+  height: 310px;
+}
+
+.qq .box, .qq .tick line, .qq .quantile, .qq .diagonal {
+  stroke: #aaa;
+  fill: none;
+}
+
+.qq .quantile {
+  stroke: #000;
+}
+
+.qq g + g .y.tick {
+  display: none;
+}
diff --git a/static/vendor/d3-2.8.1/examples/qq/qq.html b/static/vendor/d3-2.8.1/examples/qq/qq.html
new file mode 100755 (executable)
index 0000000..f0657a7
--- /dev/null
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Q-Q Plots</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="../../lib/science/science.js"></script>
+    <script type="text/javascript" src="../../lib/science/science.stats.js"></script>
+    <link type="text/css" rel="stylesheet" href="../button.css"/>
+    <link type="text/css" rel="stylesheet" href="qq.css"/>
+  </head>
+  <body>
+    <div id="chart">
+      <button class="first last" onclick="transition()">
+        Update
+      </button>
+    </div>
+    <script type="text/javascript" src="stats.js"></script>
+    <script type="text/javascript" src="qq.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/qq/qq.js b/static/vendor/d3-2.8.1/examples/qq/qq.js
new file mode 100755 (executable)
index 0000000..4affda4
--- /dev/null
@@ -0,0 +1,310 @@
+var w = 280,
+    h = 280,
+    m = [10, 0, 20, 35], // top right bottom left
+    n = 10000; // number of samples to generate
+
+var chart = qqChart()
+    .width(w)
+    .height(h)
+    .domain([-.1, 1.1])
+    .tickFormat(function(d) { return ~~(d * 100); });
+
+var vis = d3.select("#chart").append("svg").append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+d3.json("turkers.json", function(turkers) {
+  var tm = science.stats.mean(turkers),
+      td = Math.sqrt(science.stats.variance(turkers)),
+      dd = [
+        [0.10306430789206111, 0.0036139086950272735, 0.30498647327844536],
+        [0.5924252668569606, 0.0462763685758622, 0.4340870312025223],
+        [0.9847627827855167, 2.352350767874714e-4, 0.2609264955190324]
+      ];
+
+  var g = vis.selectAll("g")
+      .data([{
+        x: d3.range(n).map(Math.random),
+        y: turkers,
+        label: "Uniform Distribution"
+      }, {
+        x: d3.range(n).map(normal1(tm, td)),
+        y: turkers,
+        label: "Gaussian (Normal) Distribution"
+      }, {
+        x: d3.range(n).map(normal3(dd)),
+        y: turkers,
+        label: "Mixture of 3 Gaussians"
+      }])
+    .enter().append("g")
+      .attr("class", "qq")
+      .attr("transform", function(d, i) { return "translate(" + (w + m[1] + m[3]) * i + ")"; });
+
+  g.append("rect")
+      .attr("class", "box")
+      .attr("width", w)
+      .attr("height", h);
+
+  g.call(chart);
+
+  g.append("text")
+      .attr("dy", "1.3em")
+      .attr("dx", ".6em")
+      .text(function(d) { return d.label; });
+
+  chart.duration(1000);
+
+  window.transition = function() {
+    g.datum(randomize).call(chart);
+  };
+});
+
+function randomize(d) {
+  d.y = d3.range(n).map(Math.random);
+  return d;
+}
+
+// Based on http://vis.stanford.edu/protovis/ex/qqplot.html
+function qqChart() {
+  var width = 1,
+      height = 1,
+      duration = 0,
+      domain = null,
+      tickFormat = null,
+      n = 100,
+      x = qqX,
+      y = qqY;
+
+  // For each small multiple…
+  function qq(g) {
+    g.each(function(d, i) {
+      var g = d3.select(this),
+          qx = qqQuantiles(n, x.call(this, d, i)),
+          qy = qqQuantiles(n, y.call(this, d, i)),
+          xd = domain && domain.call(this, d, i) || [d3.min(qx), d3.max(qx)], // new x-domain
+          yd = domain && domain.call(this, d, i) || [d3.min(qy), d3.max(qy)], // new y-domain
+          x0, // old x-scale
+          y0; // old y-scale
+
+      // Compute the new x-scale.
+      var x1 = d3.scale.linear()
+          .domain(xd)
+          .range([0, width]);
+
+      // Compute the new y-scale.
+      var y1 = d3.scale.linear()
+          .domain(yd)
+          .range([height, 0]);
+
+      // Retrieve the old scales, if this is an update.
+      if (this.__chart__) {
+        x0 = this.__chart__.x;
+        y0 = this.__chart__.y;
+      } else {
+        x0 = d3.scale.linear().domain([0, Infinity]).range(x1.range());
+        y0 = d3.scale.linear().domain([0, Infinity]).range(y1.range());
+      }
+
+      // Stash the new scales.
+      this.__chart__ = {x: x1, y: y1};
+
+      // Update diagonal line.
+      var diagonal = g.selectAll("line.diagonal")
+          .data([null]);
+
+      diagonal.enter().append("svg:line")
+          .attr("class", "diagonal")
+          .attr("x1", x1(yd[0]))
+          .attr("y1", y1(xd[0]))
+          .attr("x2", x1(yd[1]))
+          .attr("y2", y1(xd[1]));
+
+      diagonal.transition()
+          .duration(duration)
+          .attr("x1", x1(yd[0]))
+          .attr("y1", y1(xd[0]))
+          .attr("x2", x1(yd[1]))
+          .attr("y2", y1(xd[1]));
+
+      // Update quantile plots.
+      var circle = g.selectAll("circle")
+          .data(d3.range(n).map(function(i) {
+            return {x: qx[i], y: qy[i]};
+          }));
+
+      circle.enter().append("svg:circle")
+          .attr("class", "quantile")
+          .attr("r", 4.5)
+          .attr("cx", function(d) { return x0(d.x); })
+          .attr("cy", function(d) { return y0(d.y); })
+          .style("opacity", 1e-6)
+        .transition()
+          .duration(duration)
+          .attr("cx", function(d) { return x1(d.x); })
+          .attr("cy", function(d) { return y1(d.y); })
+          .style("opacity", 1);
+
+      circle.transition()
+          .duration(duration)
+          .attr("cx", function(d) { return x1(d.x); })
+          .attr("cy", function(d) { return y1(d.y); })
+          .style("opacity", 1);
+
+      circle.exit().transition()
+          .duration(duration)
+          .attr("cx", function(d) { return x1(d.x); })
+          .attr("cy", function(d) { return y1(d.y); })
+          .style("opacity", 1e-6)
+          .remove();
+
+      var xformat = tickFormat || x1.tickFormat(4),
+          yformat = tickFormat || y1.tickFormat(4),
+          tx = function(d) { return "translate(" + x1(d) + "," + height + ")"; },
+          ty = function(d) { return "translate(0," + y1(d) + ")"; };
+
+      // Update x-ticks.
+      var xtick = g.selectAll("g.x.tick")
+          .data(x1.ticks(4), function(d) {
+            return this.textContent || xformat(d);
+          });
+
+      var xtickEnter = xtick.enter().append("svg:g")
+          .attr("class", "x tick")
+          .attr("transform", function(d) { return "translate(" + x0(d) + "," + height + ")"; })
+          .style("opacity", 1e-6);
+
+      xtickEnter.append("svg:line")
+          .attr("y1", 0)
+          .attr("y2", -6);
+
+      xtickEnter.append("svg:text")
+          .attr("text-anchor", "middle")
+          .attr("dy", "1em")
+          .text(xformat);
+
+      // Transition the entering ticks to the new scale, x1.
+      xtickEnter.transition()
+          .duration(duration)
+          .attr("transform", tx)
+          .style("opacity", 1);
+
+      // Transition the updating ticks to the new scale, x1.
+      xtick.transition()
+          .duration(duration)
+          .attr("transform", tx)
+          .style("opacity", 1);
+
+      // Transition the exiting ticks to the new scale, x1.
+      xtick.exit().transition()
+          .duration(duration)
+          .attr("transform", tx)
+          .style("opacity", 1e-6)
+          .remove();
+
+      // Update ticks.
+      var ytick = g.selectAll("g.y.tick")
+          .data(y1.ticks(4), function(d) {
+            return this.textContent || yformat(d);
+          });
+
+      var ytickEnter = ytick.enter().append("svg:g")
+          .attr("class", "y tick")
+          .attr("transform", function(d) { return "translate(0," + y0(d) + ")"; })
+          .style("opacity", 1e-6);
+
+      ytickEnter.append("svg:line")
+          .attr("x1", 0)
+          .attr("x2", 6);
+
+      ytickEnter.append("svg:text")
+          .attr("text-anchor", "end")
+          .attr("dx", "-.5em")
+          .attr("dy", ".3em")
+          .text(yformat);
+
+      // Transition the entering ticks to the new scale, y1.
+      ytickEnter.transition()
+          .duration(duration)
+          .attr("transform", ty)
+          .style("opacity", 1);
+
+      // Transition the updating ticks to the new scale, y1.
+      ytick.transition()
+          .duration(duration)
+          .attr("transform", ty)
+          .style("opacity", 1);
+
+      // Transition the exiting ticks to the new scale, y1.
+      ytick.exit().transition()
+          .duration(duration)
+          .attr("transform", ty)
+          .style("opacity", 1e-6)
+          .remove();
+    });
+  }
+
+  qq.width = function(x) {
+    if (!arguments.length) return width;
+    width = x;
+    return qq;
+  };
+
+  qq.height = function(x) {
+    if (!arguments.length) return height;
+    height = x;
+    return qq;
+  };
+
+  qq.duration = function(x) {
+    if (!arguments.length) return duration;
+    duration = x;
+    return qq;
+  };
+
+  qq.domain = function(x) {
+    if (!arguments.length) return domain;
+    domain = x == null ? x : d3.functor(x);
+    return qq;
+  };
+
+  qq.count = function(z) {
+    if (!arguments.length) return n;
+    n = z;
+    return qq;
+  };
+
+  qq.x = function(z) {
+    if (!arguments.length) return x;
+    x = z;
+    return qq;
+  };
+
+  qq.y = function(z) {
+    if (!arguments.length) return y;
+    y = z;
+    return qq;
+  };
+
+  qq.tickFormat = function(x) {
+    if (!arguments.length) return tickFormat;
+    tickFormat = x;
+    return qq;
+  };
+
+  return qq;
+};
+
+function qqQuantiles(n, values) {
+  var m = values.length - 1;
+  values = values.slice().sort(d3.ascending);
+  return d3.range(n).map(function(i) {
+    return values[~~(i * m / n)];
+  });
+}
+
+function qqX(d) {
+  return d.x;
+}
+
+function qqY(d) {
+  return d.y;
+}
diff --git a/static/vendor/d3-2.8.1/examples/qq/stats.js b/static/vendor/d3-2.8.1/examples/qq/stats.js
new file mode 100755 (executable)
index 0000000..efcacde
--- /dev/null
@@ -0,0 +1,28 @@
+// Sample from a normal distribution with mean 0, stddev 1.
+function normal() {
+  var x = 0, y = 0, rds, c;
+  do {
+    x = Math.random() * 2 - 1;
+    y = Math.random() * 2 - 1;
+    rds = x * x + y * y;
+  } while (rds == 0 || rds > 1);
+  c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform
+  return x * c; // throw away extra sample y * c
+}
+
+// Simple 1D Gaussian (normal) distribution
+function normal1(mean, deviation) {
+  return function() {
+    return mean + deviation * normal();
+  };
+}
+
+// Gaussian Mixture Model (k=3) fit using E-M algorithm
+function normal3(dd) {
+  return function() {
+    var r = Math.random(),
+        i = r < dd[0][2] ? 0 : r < dd[0][2] + dd[1][2] ? 1 : 2,
+        d = dd[i];
+    return d[0] + Math.sqrt(d[1]) * normal();
+  }
+}
diff --git a/static/vendor/d3-2.8.1/examples/qq/turkers.json b/static/vendor/d3-2.8.1/examples/qq/turkers.json
new file mode 100755 (executable)
index 0000000..119b373
--- /dev/null
@@ -0,0 +1 @@
+[0.009259259,0.014285714,0.014285714,0.016666667,0.016666667,0.017857143,0.018518519,0.027777778,0.028571429,0.028571429,0.028571429,0.033333333,0.033333333,0.035714286,0.0375,0.041666667,0.041666667,0.041666667,0.041666667,0.042857143,0.042857143,0.042857143,0.05,0.055555556,0.069444444,0.083333333,0.083333333,0.083333333,0.083333333,0.083333333,0.083333333,0.085714286,0.1,0.1,0.101851852,0.104166667,0.111111111,0.111111111,0.114285714,0.114285714,0.116666667,0.12037037,0.125,0.125,0.128571429,0.133333333,0.138888889,0.141666667,0.142857143,0.142857143,0.15,0.152777778,0.158333333,0.166666667,0.171428571,0.183333333,0.185714286,0.185714286,0.1875,0.190140845,0.194444444,0.2,0.204545455,0.208333333,0.214285714,0.214285714,0.253521127,0.271428571,0.277777778,0.291666667,0.3,0.3,0.307017544,0.324074074,0.328571429,0.333333333,0.333333333,0.342857143,0.357142857,0.358333333,0.378787879,0.381355932,0.395833333,0.4,0.414285714,0.414285714,0.414285714,0.414285714,0.43,0.433333333,0.4375,0.445833333,0.450704225,0.453333333,0.458333333,0.466666667,0.476666667,0.494736842,0.5,0.516666667,0.533333333,0.55,0.557142857,0.56884058,0.569444444,0.571428571,0.585714286,0.61,0.622222222,0.657407407,0.666666667,0.678947368,0.685714286,0.685714286,0.69047619,0.7,0.7,0.7,0.711538462,0.763888889,0.771428571,0.788888889,0.8,0.8,0.808333333,0.824712644,0.828571429,0.836842105,0.839285714,0.839285714,0.84,0.842857143,0.842857143,0.842857143,0.85,0.859649123,0.869791667,0.871428571,0.871428571,0.892344498,0.914285714,0.928571429,0.933908046,0.953703704,0.973684211,0.975,0.981481481,0.983333333,0.985714286,0.985714286,0.985714286,0.985714286,0.985714286,0.985714286,0.985714286,0.985714286,0.985714286,0.985714286,0.985714286,0.985714286,0.985714286,0.985714286,0.987096774,0.990740741,0.991666667,0.992,0.994047619,0.996666667,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/examples/quadtree/quadtree.html b/static/vendor/d3-2.8.1/examples/quadtree/quadtree.html
new file mode 100755 (executable)
index 0000000..dd89cea
--- /dev/null
@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Quadtree</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  padding: 2px;
+}
+
+circle {
+  fill: lightsteelblue;
+  stroke: steelblue;
+  stroke-width: 1.5px;
+}
+
+rect {
+  fill: none;
+  stroke: #000;
+  stroke-opacity: .3;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 500;
+
+// Generate random points.
+var data = d3.range(500).map(function() {
+  return {
+    x: Math.random() * w,
+    y: Math.random() * w
+  };
+});
+
+// Generate a quadtree of the specified data.
+var quadtree = d3.geom.quadtree(data, 0, w);
+
+var vis = d3.select("body").append("svg")
+    .attr("width", w)
+    .attr("height", w)
+    .style("pointer-events", "all");
+
+vis.selectAll("rect")
+    .data(nodes(quadtree))
+  .enter().append("rect")
+    .attr("x", function(d) { return d.x; })
+    .attr("y", function(d) { return d.y; })
+    .attr("width", function(d) { return d.width; })
+    .attr("height", function(d) { return d.height; });
+
+vis.selectAll("circle")
+    .data(data)
+  .enter().append("circle")
+    .attr("cx", function(d) { return d.x; })
+    .attr("cy", function(d) { return d.y; })
+    .attr("r", 4.5);
+
+// Highlight selected nodes using the quadtree.
+vis.on("mousedown", function() {
+  var m0 = d3.mouse(this);
+
+  var rect = d3.select(this).append("rect")
+      .style("fill", "#999")
+      .style("fill-opacity", .5);
+
+  d3.select(window).on("mousemove", function() {
+    var m1 = d3.mouse(rect.node()),
+        x0 = Math.min(w, m0[0], m1[0]),
+        y0 = Math.min(w, m0[1], m1[1]),
+        x1 = Math.max(0, m0[0], m1[0]),
+        y1 = Math.max(0, m0[1], m1[1]);
+
+    data.forEach(function(d) { d.z = 0; })
+    find(quadtree, x0, y0, x1, y1).forEach(function(d) { d.z = 1; });
+    vis.selectAll("circle").style("fill", function(d) { return d.z ? "red" : null; });
+    rect.attr("x", x0).attr("y", y0).attr("width", x1 - x0).attr("height", y1 - y0);
+  });
+
+  d3.select(window).on("mouseup", function() {
+    rect.remove();
+    d3.select(window).on("mousemove", null).on("mouseup", null);
+  });
+
+  d3.event.preventDefault();
+});
+
+// Collapse the quadtree into an array of rectangles.
+function nodes(quadtree) {
+  var nodes = [];
+  quadtree.visit(function(node, x1, y1, x2, y2) {
+    nodes.push({x: x1, y: y1, width: x2 - x1, height: y2 - y1});
+  });
+  return nodes;
+}
+
+// Find the nodes within the specified rectangle.
+function find(quadtree, x0, y0, x3, y3) {
+  var points = [];
+  quadtree.visit(function(node, x1, y1, x2, y2) {
+    var p = node.point;
+    if (p && (p.x >= x0) && (p.x < x3) && (p.y >= y0) && (p.y < y3)) points.push(p);
+    return x1 >= x3 || y1 >= y3 || x2 < x0 || y2 < y0;
+  });
+  return points;
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/rollup/rollup.html b/static/vendor/d3-2.8.1/examples/rollup/rollup.html
new file mode 100755 (executable)
index 0000000..ee04923
--- /dev/null
@@ -0,0 +1,249 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>PivotGraph (Rollup) Layout</title>
+<style>
+
+body {
+  font-family: sans-serif;
+  font-size: 10px;
+}
+
+path {
+  fill: none;
+  stroke: #ccc;
+}
+
+circle {
+  fill: #fff;
+  stroke: steelblue;
+}
+
+</style>
+<body>
+<script src="../../d3.v2.js"></script>
+<script>
+
+var social = {
+  nodes: [
+    {gender: "M", group: 1},
+    {gender: "F", group: 2},
+    {gender: "M", group: 1},
+    {gender: "M", group: 2},
+    {gender: "F", group: 2},
+    {gender: "M", group: 1},
+    {gender: "F", group: 1},
+    {gender: "M", group: 2},
+    {gender: "F", group: 2},
+    {gender: "F", group: 2}
+  ],
+  links: [
+    {source: 0, target: 1},
+    {source: 1, target: 2},
+    {source: 2, target: 3},
+    {source: 2, target: 4},
+    {source: 2, target: 5},
+    {source: 2, target: 6},
+    {source: 2, target: 7},
+    {source: 5, target: 6},
+    {source: 6, target: 7},
+    {source: 5, target: 8},
+    {source: 8, target: 6},
+    {source: 6, target: 9}
+  ]
+};
+
+var w = 100,
+    h = 100,
+    p = 30,
+    x = d3.scale.ordinal().domain(social.nodes.map(fx)).range([0, w]),
+    y = d3.scale.ordinal().domain(social.nodes.map(fy)).range([0, h]);
+
+function fx(d) { return d.gender; }
+function fy(d) { return d.group; }
+
+var vis = d3.select("body").append("svg")
+    .attr("w", w + 2 * p)
+    .attr("h", h + 2 * p)
+  .append("g")
+    .attr("transform", "translate(" + [p, p] + ")");
+
+var layout = rollup()
+    .x(function(d) { return x(fx(d)); })
+    .y(function(d) { return y(fy(d)); });
+
+var g = layout(social);
+
+vis.selectAll("path")
+    .data(g.links)
+  .enter().append("path")
+    .style("stroke-width", function(d) { return d.value * 1.5; })
+    .attr("d", function(d) {
+      var tx = d.target.x,
+          sx = d.source.x,
+          ty = d.target.y,
+          sy = d.source.y,
+          dx = tx - sx,
+          dy = ty - sy,
+          dr = 2 * Math.sqrt(dx * dx + dy * dy);
+      return "M" + sx + "," + sy + "A" + dr + "," + dr + " 0 0,1 " + tx + "," + ty;
+    });
+
+vis.selectAll("circle")
+    .data(g.nodes)
+  .enter().append("circle")
+    .attr("r", function(d) { return Math.sqrt(d.nodes.length * 20); })
+    .attr("cx", function(d) { return d.x; })
+    .attr("cy", function(d) { return d.y; });
+
+vis.selectAll("text.x")
+    .data(x.domain())
+  .enter().append("text")
+    .attr("class", "x")
+    .attr("x", x)
+    .attr("y", -10)
+    .attr("text-anchor", "middle")
+    .text(String);
+
+vis.selectAll("text.y")
+    .data(y.domain())
+  .enter().append("text")
+    .attr("class", "y")
+    .attr("x", -10)
+    .attr("dy", ".3em")
+    .attr("y", y)
+    .attr("text-anchor", "end")
+    .text(String);
+
+function rollup() {
+  var directed = true,
+      x_ = rollupX,
+      y_ = rollupY,
+      nodes_ = rollupNodes,
+      links_ = rollupLinks,
+      linkValue = rollupLinkValue,
+      linkSource = rollupLinkSource,
+      linkTarget = rollupLinkTarget;
+
+  function rollup(d, i) {
+    var nodes = nodes_.call(this, d, i),
+        links = links_.call(this, d, i),
+        n = nodes.length,
+        m = links.length,
+        i = -1,
+        x = [],
+        y = [],
+        rnindex = 0,
+        rnodes = {},
+        rlinks = {};
+
+    // Compute rollup nodes.
+    while (++i < n) {
+      (d = nodes[i]).index = i;
+      x[i] = x_.call(this, d, i);
+      y[i] = y_.call(this, d, i);
+      var nodeId = id(i),
+          rn = rnodes[nodeId];
+      if (!rn) {
+        rn = rnodes[nodeId] = {
+          index: rnindex++,
+          x: x[i],
+          y: y[i],
+          nodes: []
+        };
+      }
+      rn.nodes.push(d);
+    }
+
+    // Compute rollup links.
+    i = -1; while (++i < m) {
+      var value = linkValue.call(this, d = links[i], i),
+          source = linkSource.call(this, d, i),
+          target = linkTarget.call(this, d, i),
+          rsource = rnodes[id(typeof source === "number" ? source : source.index)],
+          rtarget = rnodes[id(typeof target === "number" ? target : target.index)],
+          linkId = !directed && rsource.index > rtarget.index
+              ? rtarget.index + "," + rsource.index
+              : rsource.index + "," + rtarget.index,
+          rl = rlinks[linkId];
+      if (!rl) {
+        rl = rlinks[linkId] = {
+          source: rsource,
+          target: rtarget,
+          value: 0,
+          links: []
+        };
+      }
+      rl.links.push(links[i]);
+      rl.value += value;
+    }
+
+    return {
+      nodes: d3.values(rnodes),
+      links: d3.values(rlinks)
+    };
+
+    function id(i) {
+      return x[i] + "," + y[i];
+    }
+  }
+
+  rollup.x = function(x) {
+    if (!arguments.length) return x_;
+    x_ = x;
+    return rollup;
+  };
+
+  rollup.y = function(x) {
+    if (!arguments.length) return y_;
+    y_ = x;
+    return rollup;
+  };
+
+  rollup.nodes = function(x) {
+    if (!arguments.length) return nodes_;
+    nodes_ = x;
+    return rollup;
+  };
+
+  rollup.links = function(x) {
+    if (!arguments.length) return links_;
+    links_ = x;
+    return rollup;
+  };
+
+  rollup.linkSource = function(x) {
+    if (!arguments.length) return linkSource;
+    linkSource = x;
+    return rollup;
+  };
+
+  rollup.linkTarget = function(x) {
+    if (!arguments.length) return linkTarget;
+    linkTarget = x;
+    return rollup;
+  };
+
+  rollup.linkValue = function(x) {
+    if (!arguments.length) return linkValue;
+    linkValue = x;
+    return rollup;
+  };
+
+  rollup.directed = function(x) {
+    if (!arguments.length) return directed;
+    directed = x;
+    return rollup;
+  };
+
+  return rollup;
+
+  function rollupX(d) { return d.x; }
+  function rollupY(d) { return d.y; }
+  function rollupNodes(d) { return d.nodes; }
+  function rollupLinks(d) { return d.links; }
+  function rollupLinkValue(d) { return 1; }
+  function rollupLinkSource(d) { return d.source; }
+  function rollupLinkTarget(d) { return d.target; }
+}
+
+</script>
diff --git a/static/vendor/d3-2.8.1/examples/showreel/showreel.html b/static/vendor/d3-2.8.1/examples/showreel/showreel.html
new file mode 100755 (executable)
index 0000000..ae8c194
--- /dev/null
@@ -0,0 +1,656 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  border: solid 1px #000;
+  display: block;
+  margin: auto;
+  font-family: "Helvetica Neue";
+}
+
+.line {
+  fill: none;
+  stroke: #000;
+  stroke-width: 2px;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var m = [120, 60, 60, 60],
+    w = 1280 - m[1] - m[3],
+    h = 720 - m[0] - m[2];
+
+var x = d3.time.scale().range([0, w - 60]),
+    y = d3.scale.linear().range([h / 4 - 20, 0]),
+    duration = 1500,
+    delay = 500;
+
+var color = d3.scale.category10();
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+var stocks,
+    symbols;
+
+// A line generator, for the dark stroke.
+var line = d3.svg.line()
+    .interpolate("basis")
+    .x(function(d) { return x(d.date); })
+    .y(function(d) { return y(d.price); });
+
+// A line generator, for the dark stroke.
+var axis = d3.svg.line()
+    .interpolate("basis")
+    .x(function(d) { return x(d.date); })
+    .y(h);
+
+// A area generator, for the dark stroke.
+var area = d3.svg.area()
+    .interpolate("basis")
+    .x(function(d) { return x(d.date); })
+    .y0(h / 4 - 20)
+    .y1(function(d) { return y(d.price); });
+
+d3.csv("../data/stocks.csv", function(data) {
+  var parse = d3.time.format("%b %Y").parse,
+      filter = {AAPL: 1, AMZN: 1, MSFT: 1, IBM: 1};
+
+  stocks = data.filter(function(d) { return d.symbol in filter; });
+
+  // Nest stock values by symbol.
+  symbols = d3.nest()
+      .key(function(d) { return d.symbol; })
+      .entries(stocks);
+
+  // Parse dates and numbers. We assume values are sorted by date.
+  // Also compute the maximum price per symbol, needed for the y-domain.
+  symbols.forEach(function(s) {
+    s.values.forEach(function(d) { d.date = parse(d.date); d.price = +d.price; });
+    s.maxPrice = d3.max(s.values, function(d) { return d.price; });
+    s.sumPrice = d3.sum(s.values, function(d) { return d.price; });
+  });
+
+  // Sort by maximum price, descending.
+  symbols.sort(function(a, b) { return b.maxPrice - a.maxPrice; });
+
+  // Compute the minimum and maximum date across symbols.
+  x.domain([
+    d3.min(symbols, function(d) { return d.values[0].date; }),
+    d3.max(symbols, function(d) { return d.values[d.values.length - 1].date; })
+  ]);
+
+  var g = svg.selectAll("g")
+      .data(symbols)
+    .enter().append("g")
+      .attr("class", "symbol");
+
+  setTimeout(lines, duration);
+});
+
+function lines() {
+
+  var g = svg.selectAll(".symbol")
+      .attr("transform", function(d, i) { return "translate(0," + i * h / 4 + ")"; });
+
+  g.each(function(d) {
+    var e = d3.select(this);
+
+    e.append("path")
+        .attr("class", "line");
+
+    e.append("circle")
+        .attr("r", 5)
+        .style("fill", function(d) { return color(d.key); })
+        .style("stroke", "#000")
+        .style("stroke-width", "2px");
+
+    e.append("text")
+        .attr("x", 12)
+        .attr("dy", ".31em")
+        .text(d.key);
+  });
+
+  function draw(k) {
+    g.each(function(d) {
+      var e = d3.select(this);
+      y.domain([0, d.maxPrice]);
+
+      e.select("path")
+          .attr("d", function(d) { return line(d.values.slice(0, k + 1)); });
+
+      e.selectAll("circle, text")
+          .data(function(d) { return [d.values[k], d.values[k]]; })
+          .attr("transform", function(d) { return "translate(" + x(d.date) + "," + y(d.price) + ")"; });
+    });
+  }
+
+  var k = 1, n = symbols[0].values.length;
+  d3.timer(function() {
+    draw(k);
+    if ((k += 2) >= n - 1) {
+      draw(n - 1);
+      setTimeout(horizons, 500);
+      return true;
+    }
+  });
+}
+
+function horizons() {
+  svg.insert("defs", ".symbol")
+    .append("clipPath")
+      .attr("id", "clip")
+    .append("rect")
+      .attr("width", w)
+      .attr("height", h / 4 - 20);
+
+  var color = d3.scale.ordinal()
+      .range(["#c6dbef", "#9ecae1", "#6baed6"]);
+
+  var g = svg.selectAll(".symbol")
+      .attr("clip-path", "url(#clip)");
+
+  g.select("circle").transition()
+      .duration(duration)
+      .attr("transform", function(d) { return "translate(" + (w - 60) + "," + (-h / 4) + ")"; })
+      .remove();
+
+  g.select("text").transition()
+      .duration(duration)
+      .attr("transform", function(d) { return "translate(" + (w - 60) + "," + (h / 4 - 20) + ")"; })
+      .attr("dy", "0em");
+
+  g.each(function(d) {
+    y.domain([0, d.maxPrice]);
+
+    d3.select(this).selectAll(".area")
+        .data(d3.range(3))
+      .enter().insert("path", ".line")
+        .attr("class", "area")
+        .attr("transform", function(d) { return "translate(0," + (d * (h / 4 - 20)) + ")"; })
+        .attr("d", area(d.values))
+        .style("fill", function(d, i) { return color(i); })
+        .style("fill-opacity", 1e-6);
+
+    y.domain([0, d.maxPrice / 3]);
+
+    d3.select(this).selectAll(".line").transition()
+        .duration(duration)
+        .attr("d", line(d.values))
+        .style("stroke-opacity", 1e-6);
+
+    d3.select(this).selectAll(".area").transition()
+        .duration(duration)
+        .style("fill-opacity", 1)
+        .attr("d", area(d.values))
+        .each("end", function() { d3.select(this).style("fill-opacity", null); });
+  });
+
+  setTimeout(areas, duration + delay);
+}
+
+function areas() {
+  var g = svg.selectAll(".symbol");
+
+  axis
+      .y(h / 4 - 21);
+
+  g.select(".line")
+      .attr("d", function(d) { return axis(d.values); });
+
+  g.each(function(d) {
+    y.domain([0, d.maxPrice]);
+
+    d3.select(this).select(".line").transition()
+        .duration(duration)
+        .style("stroke-opacity", 1)
+        .each("end", function() { d3.select(this).style("stroke-opacity", null); });
+
+    d3.select(this).selectAll(".area")
+        .filter(function(d, i) { return i; })
+      .transition()
+        .duration(duration)
+        .style("fill-opacity", 1e-6)
+        .attr("d", area(d.values))
+        .remove();
+
+    d3.select(this).selectAll(".area")
+        .filter(function(d, i) { return !i; })
+      .transition()
+        .duration(duration)
+        .style("fill", color(d.key))
+        .attr("d", area(d.values));
+  });
+
+  svg.select("defs").transition()
+      .duration(duration)
+      .remove();
+
+  g.transition()
+      .duration(duration)
+      .each("end", function() { d3.select(this).attr("clip-path", null); });
+
+  setTimeout(stackedArea, duration + delay);
+}
+
+function stackedArea() {
+  var stack = d3.layout.stack()
+      .values(function(d) { return d.values; })
+      .x(function(d) { return d.date; })
+      .y(function(d) { return d.price; })
+      .out(function(d, y0, y) { d.price0 = y0; })
+      .order("reverse");
+
+  stack(symbols);
+
+  y
+      .domain([0, d3.max(symbols[0].values.map(function(d) { return d.price + d.price0; }))])
+      .range([h, 0]);
+
+  line
+      .y(function(d) { return y(d.price0); });
+
+  area
+      .y0(function(d) { return y(d.price0); })
+      .y1(function(d) { return y(d.price0 + d.price); });
+
+  var t = svg.selectAll(".symbol").transition()
+      .duration(duration)
+      .attr("transform", "translate(0,0)")
+      .each("end", function() { d3.select(this).attr("transform", null); });
+
+  t.select("path.area")
+      .attr("d", function(d) { return area(d.values); });
+
+  t.select("path.line")
+      .style("stroke-opacity", function(d, i) { return i < 3 ? 1e-6 : 1; })
+      .attr("d", function(d) { return line(d.values); });
+
+  t.select("text")
+      .attr("transform", function(d) { d = d.values[d.values.length - 1]; return "translate(" + (w - 60) + "," + y(d.price / 2 + d.price0) + ")"; });
+
+  setTimeout(streamgraph, duration + delay);
+}
+
+function streamgraph() {
+  var stack = d3.layout.stack()
+      .values(function(d) { return d.values; })
+      .x(function(d) { return d.date; })
+      .y(function(d) { return d.price; })
+      .out(function(d, y0, y) { d.price0 = y0; })
+      .order("reverse")
+      .offset("wiggle");
+
+  stack(symbols);
+
+  line
+      .y(function(d) { return y(d.price0); });
+
+  var t = svg.selectAll(".symbol").transition()
+      .duration(duration);
+
+  t.select("path.area")
+      .attr("d", function(d) { return area(d.values); });
+
+  t.select("path.line")
+      .style("stroke-opacity", 1e-6)
+      .attr("d", function(d) { return line(d.values); });
+
+  t.select("text")
+      .attr("transform", function(d) { d = d.values[d.values.length - 1]; return "translate(" + (w - 60) + "," + y(d.price / 2 + d.price0) + ")"; });
+
+  setTimeout(overlappingArea, duration + delay);
+}
+
+function overlappingArea() {
+  var g = svg.selectAll(".symbol");
+
+  line
+      .y(function(d) { return y(d.price0 + d.price); });
+
+  g.select(".line")
+      .attr("d", function(d) { return line(d.values); });
+
+  y
+      .domain([0, d3.max(symbols.map(function(d) { return d.maxPrice; }))])
+      .range([h, 0]);
+
+  area
+      .y0(h)
+      .y1(function(d) { return y(d.price); });
+
+  line
+      .y(function(d) { return y(d.price); });
+
+  var t = g.transition()
+      .duration(duration);
+
+  t.select(".line")
+      .style("stroke-opacity", 1)
+      .attr("d", function(d) { return line(d.values); });
+
+  t.select(".area")
+      .style("fill-opacity", .5)
+      .attr("d", function(d) { return area(d.values); });
+
+  t.select("text")
+      .attr("dy", ".31em")
+      .attr("transform", function(d) { d = d.values[d.values.length - 1]; return "translate(" + (w - 60) + "," + y(d.price) + ")"; });
+
+  svg.append("line")
+      .attr("class", "line")
+      .attr("x1", 0)
+      .attr("x2", w - 60)
+      .attr("y1", h)
+      .attr("y2", h)
+      .style("stroke-opacity", 1e-6)
+    .transition()
+      .duration(duration)
+      .style("stroke-opacity", 1);
+
+  setTimeout(groupedBar, duration + delay);
+}
+
+function groupedBar() {
+  x = d3.scale.ordinal()
+      .domain(symbols[0].values.map(function(d) { return d.date; }))
+      .rangeBands([0, w - 60], .1);
+
+  var x1 = d3.scale.ordinal()
+      .domain(symbols.map(function(d) { return d.key; }))
+      .rangeBands([0, x.rangeBand()]);
+
+  var g = svg.selectAll(".symbol");
+
+  var t = g.transition()
+      .duration(duration);
+
+  t.select(".line")
+      .style("stroke-opacity", 1e-6)
+      .remove();
+
+  t.select(".area")
+      .style("fill-opacity", 1e-6)
+      .remove();
+
+  g.each(function(p, j) {
+    d3.select(this).selectAll("rect")
+        .data(function(d) { return d.values; })
+      .enter().append("rect")
+        .attr("x", function(d) { return x(d.date) + x1(p.key); })
+        .attr("y", function(d) { return y(d.price); })
+        .attr("width", x1.rangeBand())
+        .attr("height", function(d) { return h - y(d.price); })
+        .style("fill", color(p.key))
+        .style("fill-opacity", 1e-6)
+      .transition()
+        .duration(duration)
+        .style("fill-opacity", 1);
+  });
+
+  setTimeout(stackedBar, duration + delay);
+}
+
+function stackedBar() {
+  x.rangeRoundBands([0, w - 60], .1);
+
+  var stack = d3.layout.stack()
+      .values(function(d) { return d.values; })
+      .x(function(d) { return d.date; })
+      .y(function(d) { return d.price; })
+      .out(function(d, y0, y) { d.price0 = y0; })
+      .order("reverse");
+
+  var g = svg.selectAll(".symbol");
+
+  stack(symbols);
+
+  y
+      .domain([0, d3.max(symbols[0].values.map(function(d) { return d.price + d.price0; }))])
+      .range([h, 0]);
+
+  var t = g.transition()
+      .duration(duration / 2);
+
+  t.select("text")
+      .delay(symbols[0].values.length * 10)
+      .attr("transform", function(d) { d = d.values[d.values.length - 1]; return "translate(" + (w - 60) + "," + y(d.price / 2 + d.price0) + ")"; });
+
+  t.selectAll("rect")
+      .delay(function(d, i) { return i * 10; })
+      .attr("y", function(d) { return y(d.price0 + d.price); })
+      .attr("height", function(d) { return h - y(d.price); })
+      .each("end", function() {
+        d3.select(this)
+            .style("stroke", "#fff")
+            .style("stroke-opacity", 1e-6)
+          .transition()
+            .duration(duration / 2)
+            .attr("x", function(d) { return x(d.date); })
+            .attr("width", x.rangeBand())
+            .style("stroke-opacity", 1);
+      });
+
+  setTimeout(transposeBar, duration + symbols[0].values.length * 10 + delay);
+}
+
+function transposeBar() {
+  x
+      .domain(symbols.map(function(d) { return d.key; }))
+      .rangeRoundBands([0, w], .2);
+
+  y
+      .domain([0, d3.max(symbols.map(function(d) { return d3.sum(d.values.map(function(d) { return d.price; })); }))]);
+
+  var stack = d3.layout.stack()
+      .x(function(d, i) { return i; })
+      .y(function(d) { return d.price; })
+      .out(function(d, y0, y) { d.price0 = y0; });
+
+  stack(d3.zip.apply(null, symbols.map(function(d) { return d.values; }))); // transpose!
+
+  var g = svg.selectAll(".symbol");
+
+  var t = g.transition()
+      .duration(duration / 2);
+
+  t.selectAll("rect")
+      .delay(function(d, i) { return i * 10; })
+      .attr("y", function(d) { return y(d.price0 + d.price) - 1; })
+      .attr("height", function(d) { return h - y(d.price) + 1; })
+      .attr("x", function(d) { return x(d.symbol); })
+      .attr("width", x.rangeBand())
+      .style("stroke-opacity", 1e-6);
+
+  t.select("text")
+      .attr("x", 0)
+      .attr("transform", function(d) { return "translate(" + (x(d.key) + x.rangeBand() / 2) + "," + h + ")"; })
+      .attr("dy", "1.31em")
+      .each("end", function() { d3.select(this).attr("x", null).attr("text-anchor", "middle"); });
+
+  svg.select("line").transition()
+      .duration(duration)
+      .attr("x2", w);
+
+  setTimeout(donut,  duration / 2 + symbols[0].values.length * 10 + delay);
+}
+
+function donut() {
+  var g = svg.selectAll(".symbol");
+
+  g.selectAll("rect").remove();
+
+  var pie = d3.layout.pie()
+      .value(function(d) { return d.sumPrice; });
+
+  var arc = d3.svg.arc();
+
+  g.append("path")
+      .style("fill", function(d) { return color(d.key); })
+      .data(function() { return pie(symbols); })
+    .transition()
+      .duration(duration)
+      .tween("arc", arcTween);
+
+  g.select("text").transition()
+      .duration(duration)
+      .attr("dy", ".31em");
+
+  svg.select("line").transition()
+      .duration(duration)
+      .attr("y1", 2 * h)
+      .attr("y2", 2 * h)
+      .remove();
+
+  function arcTween(d) {
+    var path = d3.select(this),
+        text = d3.select(this.parentNode.appendChild(this.previousSibling)),
+        x0 = x(d.data.key),
+        y0 = h - y(d.data.sumPrice);
+
+    return function(t) {
+      var r = h / 2 / Math.min(1, t + 1e-3),
+          a = Math.cos(t * Math.PI / 2),
+          xx = (-r + (a) * (x0 + x.rangeBand()) + (1 - a) * (w + h) / 2),
+          yy = ((a) * h + (1 - a) * h / 2),
+          f = {
+            innerRadius: r - x.rangeBand() / (2 - a),
+            outerRadius: r,
+            startAngle: a * (Math.PI / 2 - y0 / r) + (1 - a) * d.startAngle,
+            endAngle: a * (Math.PI / 2) + (1 - a) * d.endAngle
+          };
+
+      path.attr("transform", "translate(" + xx + "," + yy + ")");
+      path.attr("d", arc(f));
+      text.attr("transform", "translate(" + arc.centroid(f) + ")translate(" + xx + "," + yy + ")rotate(" + ((f.startAngle + f.endAngle) / 2 + 3 * Math.PI / 2) * 180 / Math.PI + ")");
+    };
+  }
+
+  setTimeout(donutExplode, duration + delay);
+}
+
+/*
+function donutTransition() {
+  var r0 = h / 2 - x.rangeBand() / 2,
+      r1 = h / 2,
+      pie1 = d3.layout.pie().value(function(d) { return d.sumPrice; })(symbols),
+      pie2 = d3.layout.pie().value(function(d) { return d.maxPrice; })(symbols),
+      arc = d3.svg.arc();
+
+  svg.selectAll(".symbol path")
+      .datum(function(d, i) {
+        d = pie1[i];
+        d.innerRadius = r0;
+        d.outerRadius = r1;
+        d.next = pie2[i];
+        return d;
+      })
+      .each(transitionSplit);
+
+  function transitionSplit(d, i) {
+    d3.select(this).transition()
+        .duration(duration / 2)
+        .tween("arc", tweenArc({
+          innerRadius: i & 1 ? r0 : (r0 + r1) / 2,
+          outerRadius: i & 1 ? (r0 + r1) / 2 : r1
+        }))
+        .each("end", transitionRotate);
+  }
+
+  function transitionRotate(d, i) {
+    var a0 = d.next.startAngle + d.next.endAngle,
+        a1 = d.startAngle - d.endAngle;
+    d3.select(this).transition()
+        .duration(duration / 2)
+        .tween("arc", tweenArc({
+          startAngle: (a0 + a1) / 2,
+          endAngle: (a0 - a1) / 2
+        }))
+        .each("end", transitionResize);
+  }
+
+  function transitionResize(d, i) {
+    d3.select(this).transition()
+        .duration(duration / 2)
+        .tween("arc", tweenArc({
+          startAngle: d.next.startAngle,
+          endAngle: d.next.endAngle
+        }))
+        .each("end", transitionUnite);
+  }
+
+  function transitionUnite(d, i) {
+    d3.select(this).transition()
+        .duration(duration / 2)
+        .tween("arc", tweenArc({
+          innerRadius: r0,
+          outerRadius: r1
+        }));
+  }
+
+  function tweenArc(b) {
+    return function(a) {
+      var path = d3.select(this),
+          text = d3.select(this.nextSibling),
+          i = d3.interpolate(a, b);
+      for (var key in b) a[key] = b[key]; // update data
+      return function(t) {
+        var a = i(t);
+        path.attr("d", arc(a));
+        text.attr("transform", "translate(" + arc.centroid(a) + ")translate(" + w / 2 + "," + h / 2 +")rotate(" + ((a.startAngle + a.endAngle) / 2 + 3 * Math.PI / 2) * 180 / Math.PI + ")");
+      };
+    }
+  }
+
+  setTimeout(donutExplode, 2 * duration + delay);
+}
+*/
+
+function donutExplode() {
+  var r0a = h / 2 - x.rangeBand() / 2,
+      r1a = h / 2,
+      r0b = 2 * h - x.rangeBand() / 2,
+      r1b = 2 * h,
+      arc = d3.svg.arc();
+
+  svg.selectAll(".symbol path")
+      .each(transitionExplode);
+
+  function transitionExplode(d, i) {
+    d.innerRadius = r0a;
+    d.outerRadius = r1a;
+    d3.select(this).transition()
+        .duration(duration / 2)
+        .tween("arc", tweenArc({
+          innerRadius: r0b,
+          outerRadius: r1b
+        }));
+  }
+
+  function tweenArc(b) {
+    return function(a) {
+      var path = d3.select(this),
+          text = d3.select(this.nextSibling),
+          i = d3.interpolate(a, b);
+      for (var key in b) a[key] = b[key]; // update data
+      return function(t) {
+        var a = i(t);
+        path.attr("d", arc(a));
+        text.attr("transform", "translate(" + arc.centroid(a) + ")translate(" + w / 2 + "," + h / 2 +")rotate(" + ((a.startAngle + a.endAngle) / 2 + 3 * Math.PI / 2) * 180 / Math.PI + ")");
+      };
+    }
+  }
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/sizzle/sizzle.html b/static/vendor/d3-2.8.1/examples/sizzle/sizzle.html
new file mode 100755 (executable)
index 0000000..cd5e119
--- /dev/null
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Sizzle</title>
+    <script type="text/javascript" src="../../lib/sizzle/sizzle.js"></script>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  margin: 2em;
+  text-align: center;
+  font: 300 36px helvetica neue;
+}
+
+    </style>
+  </head>
+  <body>
+    Sizzle.js disabled.
+    <script type="text/javascript">
+
+// The :first pseudo-class is a custom Sizzle extension.
+d3.select("body:first")
+    .html("Sizzle.js enabled!");
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/sort/sort.css b/static/vendor/d3-2.8.1/examples/sort/sort.css
new file mode 100755 (executable)
index 0000000..30da362
--- /dev/null
@@ -0,0 +1,4 @@
+line {
+  stroke: #000;
+  stroke-width: 1.5px;
+}
diff --git a/static/vendor/d3-2.8.1/examples/sort/sort.html b/static/vendor/d3-2.8.1/examples/sort/sort.html
new file mode 100755 (executable)
index 0000000..347b3e5
--- /dev/null
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Merge Sort</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="sort.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="sort.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/sort/sort.js b/static/vendor/d3-2.8.1/examples/sort/sort.js
new file mode 100755 (executable)
index 0000000..7a09307
--- /dev/null
@@ -0,0 +1,112 @@
+// Based on http://vis.stanford.edu/protovis/ex/sort.html
+// Based on work by Robert Sedgewick
+
+var w = 960,
+    h = 50,
+    n = 240,
+    x = d3.scale.linear().domain([0, n]).range([h, w - h]),
+    a = d3.scale.linear().domain([0, n - 1]).range([90 + 60, 270 - 60]),
+    data = shuffle(d3.range(n)),
+    duration = 250;
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+var line = vis.selectAll("line")
+    .data(data)
+  .enter().append("line")
+    .attr("x1", 0)
+    .attr("y1", 0)
+    .attr("x2", 0)
+    .attr("y2", h)
+    .attr("transform", transform);
+
+start();
+
+// Start the animation!
+function start() {
+  var passes = mergesort(data).reverse();
+
+  update();
+
+  function update() {
+    var pass = passes.pop();
+
+    line.data(pass, Number)
+      .transition()
+        .duration(duration)
+        .attr("transform", transform);
+
+    if (passes.length) {
+      setTimeout(update, duration);
+    } else {
+      shuffle(data);
+      setTimeout(start, duration + 4000);
+    }
+  }
+}
+
+function transform(d, i) {
+  return "translate(" + x(i) + "," + h + ")rotate(" + a(d) + ")";
+}
+
+// Fisher-Yates shuffle
+function shuffle(array) {
+  var i = array.length, j, t;
+  while (--i > 0) {
+    j = ~~(Math.random() * (i + 1));
+    t = array[j];
+    array[j] = array[i];
+    array[i] = t;
+  }
+  return array;
+}
+
+//
+// Sorts the specified array using bottom-up mergesort, returning an array of
+// arrays representing the state of the specified array after each insertion for
+// each parallel pass. The first pass is performed at size = 2.
+//
+function mergesort(array) {
+  var passes = [],
+      i,
+      j,
+      n = array.length,
+      m = 1;
+
+  // double the size each pass
+  while (m < array.length) {
+    i = j = 0; while (i < array.length) j += merge(i, i += m, i += m);
+    if (j) passes.push(array.slice());
+    else m <<= 1;
+  }
+
+  // Merges two adjacent sorted arrays in-place.
+  function merge(start, middle, end) {
+    middle = Math.min(array.length, middle);
+    end = Math.min(array.length, end);
+    for (; start < middle; start++) {
+      if (array[start] > array[middle]) {
+        var v = array[start];
+        array[start] = array[middle];
+        insert(middle, end, v);
+        return true;
+      }
+    }
+    return false;
+  }
+
+  // Inserts the value v into the subarray specified by start and end.
+  function insert(start, end, v) {
+    while (start + 1 < end && array[start + 1] < v) {
+      var tmp = array[start];
+      array[start] = array[start + 1];
+      array[start + 1] = tmp;
+      start++;
+    }
+    array[start] = v;
+  }
+
+  return passes;
+}
diff --git a/static/vendor/d3-2.8.1/examples/spline/spline.css b/static/vendor/d3-2.8.1/examples/spline/spline.css
new file mode 100755 (executable)
index 0000000..a294c2a
--- /dev/null
@@ -0,0 +1,30 @@
+body {
+  font: 13px sans-serif;
+}
+
+#chart svg {
+  width: 960px;
+  height: 500px;
+  border: solid 1px #ccc;
+}
+
+rect {
+  fill: #fff;
+}
+
+circle, .line {
+  fill: none;
+  stroke: steelblue;
+  stroke-width: 1.5px;
+}
+
+circle {
+  fill: #fff;
+  fill-opacity: .2;
+  cursor: move;
+}
+
+circle.selected {
+  fill: #ff7f0e;
+  stroke: #ff7f0e;
+}
diff --git a/static/vendor/d3-2.8.1/examples/spline/spline.html b/static/vendor/d3-2.8.1/examples/spline/spline.html
new file mode 100755 (executable)
index 0000000..6398c59
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Spline Editor</title>
+    <link type="text/css" rel="stylesheet" href="spline.css"/>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <label for="interpolate">Interpolate:</label>
+    <select id="interpolate"></select>
+    <script type="text/javascript" src="spline.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/spline/spline.js b/static/vendor/d3-2.8.1/examples/spline/spline.js
new file mode 100755 (executable)
index 0000000..0163d5b
--- /dev/null
@@ -0,0 +1,110 @@
+var w = 960,
+    h = 500,
+    line = d3.svg.line(),
+    points = d3.range(1, 5).map(function(i) { return [i * w / 5, 50 + Math.random() * (h - 100)]; }),
+    dragged = null,
+    selected = points[0];
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+vis.append("rect")
+    .attr("width", w)
+    .attr("height", h)
+    .on("mousedown", function() {
+      points.push(selected = dragged = d3.mouse(vis.node()));
+      update();
+    });
+
+vis.append("path")
+    .data([points])
+    .attr("class", "line")
+    .call(update);
+
+d3.select(window)
+    .on("mousemove", mousemove)
+    .on("mouseup", mouseup)
+    .on("keydown", keydown);
+
+// Add interpolator dropdown
+d3.select("#interpolate")
+    .on("change", function() {
+      line.interpolate(this.value);
+      update();
+    })
+  .selectAll("option")
+    .data([
+      "linear",
+      "step-before",
+      "step-after",
+      "basis",
+      "basis-open",
+      "basis-closed",
+      "cardinal",
+      "cardinal-open",
+      "cardinal-closed",
+      "monotone"
+    ])
+  .enter().append("option")
+    .attr("value", String)
+    .text(String);
+
+function update() {
+  vis.select("path").attr("d", line);
+
+  var circle = vis.selectAll("circle")
+      .data(points, function(d) { return d; });
+
+  circle.enter().append("circle")
+      .attr("r", 1e-6)
+      .on("mousedown", function(d) {
+        selected = dragged = d;
+        update();
+      })
+    .transition()
+      .duration(750)
+      .ease("elastic")
+      .attr("r", 6.5);
+
+  circle
+      .classed("selected", function(d) { return d === selected; })
+      .attr("cx", function(d) { return d[0]; })
+      .attr("cy", function(d) { return d[1]; });
+
+  circle.exit().remove();
+
+  if (d3.event) {
+    d3.event.preventDefault();
+    d3.event.stopPropagation();
+  }
+}
+
+
+function mousemove() {
+  if (!dragged) return;
+  var m = d3.mouse(vis.node());
+  dragged[0] = Math.max(0, Math.min(w, m[0]));
+  dragged[1] = Math.max(0, Math.min(h, m[1]));
+  update();
+}
+
+function mouseup() {
+  if (!dragged) return;
+  mousemove();
+  dragged = null;
+}
+
+function keydown() {
+  if (!selected) return;
+  switch (d3.event.keyCode) {
+    case 8: // backspace
+    case 46: { // delete
+      var i = points.indexOf(selected);
+      points.splice(i, 1);
+      selected = points.length ? points[i > 0 ? i - 1 : 0] : null;
+      update();
+      break;
+    }
+  }
+}
diff --git a/static/vendor/d3-2.8.1/examples/splom/flowers.json b/static/vendor/d3-2.8.1/examples/splom/flowers.json
new file mode 100755 (executable)
index 0000000..2efd419
--- /dev/null
@@ -0,0 +1 @@
+{"traits":["sepalLength","sepalWidth","petalLength","petalWidth"],"species":["setosa","versicolor","virginica"],"values":[{"sepalLength":5.1,"sepalWidth":3.5,"petalLength":1.4,"petalWidth":0.2,"species":"setosa"},{"sepalLength":4.9,"sepalWidth":3.0,"petalLength":1.4,"petalWidth":0.2,"species":"setosa"},{"sepalLength":4.7,"sepalWidth":3.2,"petalLength":1.3,"petalWidth":0.2,"species":"setosa"},{"sepalLength":4.6,"sepalWidth":3.1,"petalLength":1.5,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.0,"sepalWidth":3.6,"petalLength":1.4,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.4,"sepalWidth":3.9,"petalLength":1.7,"petalWidth":0.4,"species":"setosa"},{"sepalLength":4.6,"sepalWidth":3.4,"petalLength":1.4,"petalWidth":0.3,"species":"setosa"},{"sepalLength":5.0,"sepalWidth":3.4,"petalLength":1.5,"petalWidth":0.2,"species":"setosa"},{"sepalLength":4.4,"sepalWidth":2.9,"petalLength":1.4,"petalWidth":0.2,"species":"setosa"},{"sepalLength":4.9,"sepalWidth":3.1,"petalLength":1.5,"petalWidth":0.1,"species":"setosa"},{"sepalLength":5.4,"sepalWidth":3.7,"petalLength":1.5,"petalWidth":0.2,"species":"setosa"},{"sepalLength":4.8,"sepalWidth":3.4,"petalLength":1.6,"petalWidth":0.2,"species":"setosa"},{"sepalLength":4.8,"sepalWidth":3.0,"petalLength":1.4,"petalWidth":0.1,"species":"setosa"},{"sepalLength":4.3,"sepalWidth":3.0,"petalLength":1.1,"petalWidth":0.1,"species":"setosa"},{"sepalLength":5.8,"sepalWidth":4.0,"petalLength":1.2,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.7,"sepalWidth":4.4,"petalLength":1.5,"petalWidth":0.4,"species":"setosa"},{"sepalLength":5.4,"sepalWidth":3.9,"petalLength":1.3,"petalWidth":0.4,"species":"setosa"},{"sepalLength":5.1,"sepalWidth":3.5,"petalLength":1.4,"petalWidth":0.3,"species":"setosa"},{"sepalLength":5.7,"sepalWidth":3.8,"petalLength":1.7,"petalWidth":0.3,"species":"setosa"},{"sepalLength":5.1,"sepalWidth":3.8,"petalLength":1.5,"petalWidth":0.3,"species":"setosa"},{"sepalLength":5.4,"sepalWidth":3.4,"petalLength":1.7,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.1,"sepalWidth":3.7,"petalLength":1.5,"petalWidth":0.4,"species":"setosa"},{"sepalLength":4.6,"sepalWidth":3.6,"petalLength":1.0,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.1,"sepalWidth":3.3,"petalLength":1.7,"petalWidth":0.5,"species":"setosa"},{"sepalLength":4.8,"sepalWidth":3.4,"petalLength":1.9,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.0,"sepalWidth":3.0,"petalLength":1.6,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.0,"sepalWidth":3.4,"petalLength":1.6,"petalWidth":0.4,"species":"setosa"},{"sepalLength":5.2,"sepalWidth":3.5,"petalLength":1.5,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.2,"sepalWidth":3.4,"petalLength":1.4,"petalWidth":0.2,"species":"setosa"},{"sepalLength":4.7,"sepalWidth":3.2,"petalLength":1.6,"petalWidth":0.2,"species":"setosa"},{"sepalLength":4.8,"sepalWidth":3.1,"petalLength":1.6,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.4,"sepalWidth":3.4,"petalLength":1.5,"petalWidth":0.4,"species":"setosa"},{"sepalLength":5.2,"sepalWidth":4.1,"petalLength":1.5,"petalWidth":0.1,"species":"setosa"},{"sepalLength":5.5,"sepalWidth":4.2,"petalLength":1.4,"petalWidth":0.2,"species":"setosa"},{"sepalLength":4.9,"sepalWidth":3.1,"petalLength":1.5,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.0,"sepalWidth":3.2,"petalLength":1.2,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.5,"sepalWidth":3.5,"petalLength":1.3,"petalWidth":0.2,"species":"setosa"},{"sepalLength":4.9,"sepalWidth":3.6,"petalLength":1.4,"petalWidth":0.1,"species":"setosa"},{"sepalLength":4.4,"sepalWidth":3.0,"petalLength":1.3,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.1,"sepalWidth":3.4,"petalLength":1.5,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.0,"sepalWidth":3.5,"petalLength":1.3,"petalWidth":0.3,"species":"setosa"},{"sepalLength":4.5,"sepalWidth":2.3,"petalLength":1.3,"petalWidth":0.3,"species":"setosa"},{"sepalLength":4.4,"sepalWidth":3.2,"petalLength":1.3,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.0,"sepalWidth":3.5,"petalLength":1.6,"petalWidth":0.6,"species":"setosa"},{"sepalLength":5.1,"sepalWidth":3.8,"petalLength":1.9,"petalWidth":0.4,"species":"setosa"},{"sepalLength":4.8,"sepalWidth":3.0,"petalLength":1.4,"petalWidth":0.3,"species":"setosa"},{"sepalLength":5.1,"sepalWidth":3.8,"petalLength":1.6,"petalWidth":0.2,"species":"setosa"},{"sepalLength":4.6,"sepalWidth":3.2,"petalLength":1.4,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.3,"sepalWidth":3.7,"petalLength":1.5,"petalWidth":0.2,"species":"setosa"},{"sepalLength":5.0,"sepalWidth":3.3,"petalLength":1.4,"petalWidth":0.2,"species":"setosa"},{"sepalLength":7.0,"sepalWidth":3.2,"petalLength":4.7,"petalWidth":1.4,"species":"versicolor"},{"sepalLength":6.4,"sepalWidth":3.2,"petalLength":4.5,"petalWidth":1.5,"species":"versicolor"},{"sepalLength":6.9,"sepalWidth":3.1,"petalLength":4.9,"petalWidth":1.5,"species":"versicolor"},{"sepalLength":5.5,"sepalWidth":2.3,"petalLength":4.0,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":6.5,"sepalWidth":2.8,"petalLength":4.6,"petalWidth":1.5,"species":"versicolor"},{"sepalLength":5.7,"sepalWidth":2.8,"petalLength":4.5,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":6.3,"sepalWidth":3.3,"petalLength":4.7,"petalWidth":1.6,"species":"versicolor"},{"sepalLength":4.9,"sepalWidth":2.4,"petalLength":3.3,"petalWidth":1.0,"species":"versicolor"},{"sepalLength":6.6,"sepalWidth":2.9,"petalLength":4.6,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":5.2,"sepalWidth":2.7,"petalLength":3.9,"petalWidth":1.4,"species":"versicolor"},{"sepalLength":5.0,"sepalWidth":2.0,"petalLength":3.5,"petalWidth":1.0,"species":"versicolor"},{"sepalLength":5.9,"sepalWidth":3.0,"petalLength":4.2,"petalWidth":1.5,"species":"versicolor"},{"sepalLength":6.0,"sepalWidth":2.2,"petalLength":4.0,"petalWidth":1.0,"species":"versicolor"},{"sepalLength":6.1,"sepalWidth":2.9,"petalLength":4.7,"petalWidth":1.4,"species":"versicolor"},{"sepalLength":5.6,"sepalWidth":2.9,"petalLength":3.6,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":6.7,"sepalWidth":3.1,"petalLength":4.4,"petalWidth":1.4,"species":"versicolor"},{"sepalLength":5.6,"sepalWidth":3.0,"petalLength":4.5,"petalWidth":1.5,"species":"versicolor"},{"sepalLength":5.8,"sepalWidth":2.7,"petalLength":4.1,"petalWidth":1.0,"species":"versicolor"},{"sepalLength":6.2,"sepalWidth":2.2,"petalLength":4.5,"petalWidth":1.5,"species":"versicolor"},{"sepalLength":5.6,"sepalWidth":2.5,"petalLength":3.9,"petalWidth":1.1,"species":"versicolor"},{"sepalLength":5.9,"sepalWidth":3.2,"petalLength":4.8,"petalWidth":1.8,"species":"versicolor"},{"sepalLength":6.1,"sepalWidth":2.8,"petalLength":4.0,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":6.3,"sepalWidth":2.5,"petalLength":4.9,"petalWidth":1.5,"species":"versicolor"},{"sepalLength":6.1,"sepalWidth":2.8,"petalLength":4.7,"petalWidth":1.2,"species":"versicolor"},{"sepalLength":6.4,"sepalWidth":2.9,"petalLength":4.3,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":6.6,"sepalWidth":3.0,"petalLength":4.4,"petalWidth":1.4,"species":"versicolor"},{"sepalLength":6.8,"sepalWidth":2.8,"petalLength":4.8,"petalWidth":1.4,"species":"versicolor"},{"sepalLength":6.7,"sepalWidth":3.0,"petalLength":5.0,"petalWidth":1.7,"species":"versicolor"},{"sepalLength":6.0,"sepalWidth":2.9,"petalLength":4.5,"petalWidth":1.5,"species":"versicolor"},{"sepalLength":5.7,"sepalWidth":2.6,"petalLength":3.5,"petalWidth":1.0,"species":"versicolor"},{"sepalLength":5.5,"sepalWidth":2.4,"petalLength":3.8,"petalWidth":1.1,"species":"versicolor"},{"sepalLength":5.5,"sepalWidth":2.4,"petalLength":3.7,"petalWidth":1.0,"species":"versicolor"},{"sepalLength":5.8,"sepalWidth":2.7,"petalLength":3.9,"petalWidth":1.2,"species":"versicolor"},{"sepalLength":6.0,"sepalWidth":2.7,"petalLength":5.1,"petalWidth":1.6,"species":"versicolor"},{"sepalLength":5.4,"sepalWidth":3.0,"petalLength":4.5,"petalWidth":1.5,"species":"versicolor"},{"sepalLength":6.0,"sepalWidth":3.4,"petalLength":4.5,"petalWidth":1.6,"species":"versicolor"},{"sepalLength":6.7,"sepalWidth":3.1,"petalLength":4.7,"petalWidth":1.5,"species":"versicolor"},{"sepalLength":6.3,"sepalWidth":2.3,"petalLength":4.4,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":5.6,"sepalWidth":3.0,"petalLength":4.1,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":5.5,"sepalWidth":2.5,"petalLength":4.0,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":5.5,"sepalWidth":2.6,"petalLength":4.4,"petalWidth":1.2,"species":"versicolor"},{"sepalLength":6.1,"sepalWidth":3.0,"petalLength":4.6,"petalWidth":1.4,"species":"versicolor"},{"sepalLength":5.8,"sepalWidth":2.6,"petalLength":4.0,"petalWidth":1.2,"species":"versicolor"},{"sepalLength":5.0,"sepalWidth":2.3,"petalLength":3.3,"petalWidth":1.0,"species":"versicolor"},{"sepalLength":5.6,"sepalWidth":2.7,"petalLength":4.2,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":5.7,"sepalWidth":3.0,"petalLength":4.2,"petalWidth":1.2,"species":"versicolor"},{"sepalLength":5.7,"sepalWidth":2.9,"petalLength":4.2,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":6.2,"sepalWidth":2.9,"petalLength":4.3,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":5.1,"sepalWidth":2.5,"petalLength":3.0,"petalWidth":1.1,"species":"versicolor"},{"sepalLength":5.7,"sepalWidth":2.8,"petalLength":4.1,"petalWidth":1.3,"species":"versicolor"},{"sepalLength":6.3,"sepalWidth":3.3,"petalLength":6.0,"petalWidth":2.5,"species":"virginica"},{"sepalLength":5.8,"sepalWidth":2.7,"petalLength":5.1,"petalWidth":1.9,"species":"virginica"},{"sepalLength":7.1,"sepalWidth":3.0,"petalLength":5.9,"petalWidth":2.1,"species":"virginica"},{"sepalLength":6.3,"sepalWidth":2.9,"petalLength":5.6,"petalWidth":1.8,"species":"virginica"},{"sepalLength":6.5,"sepalWidth":3.0,"petalLength":5.8,"petalWidth":2.2,"species":"virginica"},{"sepalLength":7.6,"sepalWidth":3.0,"petalLength":6.6,"petalWidth":2.1,"species":"virginica"},{"sepalLength":4.9,"sepalWidth":2.5,"petalLength":4.5,"petalWidth":1.7,"species":"virginica"},{"sepalLength":7.3,"sepalWidth":2.9,"petalLength":6.3,"petalWidth":1.8,"species":"virginica"},{"sepalLength":6.7,"sepalWidth":2.5,"petalLength":5.8,"petalWidth":1.8,"species":"virginica"},{"sepalLength":7.2,"sepalWidth":3.6,"petalLength":6.1,"petalWidth":2.5,"species":"virginica"},{"sepalLength":6.5,"sepalWidth":3.2,"petalLength":5.1,"petalWidth":2.0,"species":"virginica"},{"sepalLength":6.4,"sepalWidth":2.7,"petalLength":5.3,"petalWidth":1.9,"species":"virginica"},{"sepalLength":6.8,"sepalWidth":3.0,"petalLength":5.5,"petalWidth":2.1,"species":"virginica"},{"sepalLength":5.7,"sepalWidth":2.5,"petalLength":5.0,"petalWidth":2.0,"species":"virginica"},{"sepalLength":5.8,"sepalWidth":2.8,"petalLength":5.1,"petalWidth":2.4,"species":"virginica"},{"sepalLength":6.4,"sepalWidth":3.2,"petalLength":5.3,"petalWidth":2.3,"species":"virginica"},{"sepalLength":6.5,"sepalWidth":3.0,"petalLength":5.5,"petalWidth":1.8,"species":"virginica"},{"sepalLength":7.7,"sepalWidth":3.8,"petalLength":6.7,"petalWidth":2.2,"species":"virginica"},{"sepalLength":7.7,"sepalWidth":2.6,"petalLength":6.9,"petalWidth":2.3,"species":"virginica"},{"sepalLength":6.0,"sepalWidth":2.2,"petalLength":5.0,"petalWidth":1.5,"species":"virginica"},{"sepalLength":6.9,"sepalWidth":3.2,"petalLength":5.7,"petalWidth":2.3,"species":"virginica"},{"sepalLength":5.6,"sepalWidth":2.8,"petalLength":4.9,"petalWidth":2.0,"species":"virginica"},{"sepalLength":7.7,"sepalWidth":2.8,"petalLength":6.7,"petalWidth":2.0,"species":"virginica"},{"sepalLength":6.3,"sepalWidth":2.7,"petalLength":4.9,"petalWidth":1.8,"species":"virginica"},{"sepalLength":6.7,"sepalWidth":3.3,"petalLength":5.7,"petalWidth":2.1,"species":"virginica"},{"sepalLength":7.2,"sepalWidth":3.2,"petalLength":6.0,"petalWidth":1.8,"species":"virginica"},{"sepalLength":6.2,"sepalWidth":2.8,"petalLength":4.8,"petalWidth":1.8,"species":"virginica"},{"sepalLength":6.1,"sepalWidth":3.0,"petalLength":4.9,"petalWidth":1.8,"species":"virginica"},{"sepalLength":6.4,"sepalWidth":2.8,"petalLength":5.6,"petalWidth":2.1,"species":"virginica"},{"sepalLength":7.2,"sepalWidth":3.0,"petalLength":5.8,"petalWidth":1.6,"species":"virginica"},{"sepalLength":7.4,"sepalWidth":2.8,"petalLength":6.1,"petalWidth":1.9,"species":"virginica"},{"sepalLength":7.9,"sepalWidth":3.8,"petalLength":6.4,"petalWidth":2.0,"species":"virginica"},{"sepalLength":6.4,"sepalWidth":2.8,"petalLength":5.6,"petalWidth":2.2,"species":"virginica"},{"sepalLength":6.3,"sepalWidth":2.8,"petalLength":5.1,"petalWidth":1.5,"species":"virginica"},{"sepalLength":6.1,"sepalWidth":2.6,"petalLength":5.6,"petalWidth":1.4,"species":"virginica"},{"sepalLength":7.7,"sepalWidth":3.0,"petalLength":6.1,"petalWidth":2.3,"species":"virginica"},{"sepalLength":6.3,"sepalWidth":3.4,"petalLength":5.6,"petalWidth":2.4,"species":"virginica"},{"sepalLength":6.4,"sepalWidth":3.1,"petalLength":5.5,"petalWidth":1.8,"species":"virginica"},{"sepalLength":6.0,"sepalWidth":3.0,"petalLength":4.8,"petalWidth":1.8,"species":"virginica"},{"sepalLength":6.9,"sepalWidth":3.1,"petalLength":5.4,"petalWidth":2.1,"species":"virginica"},{"sepalLength":6.7,"sepalWidth":3.1,"petalLength":5.6,"petalWidth":2.4,"species":"virginica"},{"sepalLength":6.9,"sepalWidth":3.1,"petalLength":5.1,"petalWidth":2.3,"species":"virginica"},{"sepalLength":5.8,"sepalWidth":2.7,"petalLength":5.1,"petalWidth":1.9,"species":"virginica"},{"sepalLength":6.8,"sepalWidth":3.2,"petalLength":5.9,"petalWidth":2.3,"species":"virginica"},{"sepalLength":6.7,"sepalWidth":3.3,"petalLength":5.7,"petalWidth":2.5,"species":"virginica"},{"sepalLength":6.7,"sepalWidth":3.0,"petalLength":5.2,"petalWidth":2.3,"species":"virginica"},{"sepalLength":6.3,"sepalWidth":2.5,"petalLength":5.0,"petalWidth":1.9,"species":"virginica"},{"sepalLength":6.5,"sepalWidth":3.0,"petalLength":5.2,"petalWidth":2.0,"species":"virginica"},{"sepalLength":6.2,"sepalWidth":3.4,"petalLength":5.4,"petalWidth":2.3,"species":"virginica"},{"sepalLength":5.9,"sepalWidth":3.0,"petalLength":5.1,"petalWidth":1.8,"species":"virginica"}]}
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/examples/splom/splom.css b/static/vendor/d3-2.8.1/examples/splom/splom.css
new file mode 100755 (executable)
index 0000000..3976077
--- /dev/null
@@ -0,0 +1,49 @@
+svg {
+  font: 10px sans-serif;
+}
+
+.axis {
+  shape-rendering: crispEdges;
+}
+
+.axis line {
+  stroke: #ddd;
+  stroke-width: .5px;
+}
+
+.axis path {
+  display: none;
+}
+
+rect.extent {
+  fill: #000;
+  fill-opacity: .125;
+  stroke: #fff;
+}
+
+rect.frame {
+  fill: #fff;
+  fill-opacity: .7;
+  stroke: #aaa;
+}
+
+circle {
+  fill: #ccc;
+  fill-opacity: .5;
+}
+
+.cell text {
+  pointer-events: none;
+}
+
+.setosa {
+  fill: #800;
+}
+
+.versicolor {
+  fill: #080;
+}
+
+.virginica {
+  fill: #008;
+}
diff --git a/static/vendor/d3-2.8.1/examples/splom/splom.html b/static/vendor/d3-2.8.1/examples/splom/splom.html
new file mode 100755 (executable)
index 0000000..b13e459
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Scatterplot Matrix</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="splom.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="splom.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/splom/splom.js b/static/vendor/d3-2.8.1/examples/splom/splom.js
new file mode 100755 (executable)
index 0000000..165a562
--- /dev/null
@@ -0,0 +1,119 @@
+d3.json("flowers.json", function(flower) {
+
+  // Size parameters.
+  var size = 150,
+      padding = 19.5,
+      n = flower.traits.length;
+
+  // Position scales.
+  var x = {}, y = {};
+  flower.traits.forEach(function(trait) {
+    var value = function(d) { return d[trait]; },
+        domain = [d3.min(flower.values, value), d3.max(flower.values, value)],
+        range = [padding / 2, size - padding / 2];
+    x[trait] = d3.scale.linear().domain(domain).range(range);
+    y[trait] = d3.scale.linear().domain(domain).range(range.slice().reverse());
+  });
+
+  // Axes.
+  var axis = d3.svg.axis()
+      .ticks(5)
+      .tickSize(size * n);
+
+  // Brush.
+  var brush = d3.svg.brush()
+      .on("brushstart", brushstart)
+      .on("brush", brush)
+      .on("brushend", brushend);
+
+  // Root panel.
+  var svg = d3.select("#chart").append("svg")
+      .attr("width", size * n + padding)
+      .attr("height", size * n + padding);
+
+  // X-axis.
+  svg.selectAll("g.x.axis")
+      .data(flower.traits)
+    .enter().append("g")
+      .attr("class", "x axis")
+      .attr("transform", function(d, i) { return "translate(" + i * size + ",0)"; })
+      .each(function(d) { d3.select(this).call(axis.scale(x[d]).orient("bottom")); });
+
+  // Y-axis.
+  svg.selectAll("g.y.axis")
+      .data(flower.traits)
+    .enter().append("g")
+      .attr("class", "y axis")
+      .attr("transform", function(d, i) { return "translate(0," + i * size + ")"; })
+      .each(function(d) { d3.select(this).call(axis.scale(y[d]).orient("right")); });
+
+  // Cell and plot.
+  var cell = svg.selectAll("g.cell")
+      .data(cross(flower.traits, flower.traits))
+    .enter().append("g")
+      .attr("class", "cell")
+      .attr("transform", function(d) { return "translate(" + d.i * size + "," + d.j * size + ")"; })
+      .each(plot);
+
+  // Titles for the diagonal.
+  cell.filter(function(d) { return d.i == d.j; }).append("text")
+      .attr("x", padding)
+      .attr("y", padding)
+      .attr("dy", ".71em")
+      .text(function(d) { return d.x; });
+
+  function plot(p) {
+    var cell = d3.select(this);
+
+    // Plot frame.
+    cell.append("rect")
+        .attr("class", "frame")
+        .attr("x", padding / 2)
+        .attr("y", padding / 2)
+        .attr("width", size - padding)
+        .attr("height", size - padding);
+
+    // Plot dots.
+    cell.selectAll("circle")
+        .data(flower.values)
+      .enter().append("circle")
+        .attr("class", function(d) { return d.species; })
+        .attr("cx", function(d) { return x[p.x](d[p.x]); })
+        .attr("cy", function(d) { return y[p.y](d[p.y]); })
+        .attr("r", 3);
+
+    // Plot brush.
+    cell.call(brush.x(x[p.x]).y(y[p.y]));
+  }
+
+  // Clear the previously-active brush, if any.
+  function brushstart(p) {
+    if (brush.data !== p) {
+      cell.call(brush.clear());
+      brush.x(x[p.x]).y(y[p.y]).data = p;
+    }
+  }
+
+  // Highlight the selected circles.
+  function brush(p) {
+    var e = brush.extent();
+    svg.selectAll("circle").attr("class", function(d) {
+      return e[0][0] <= d[p.x] && d[p.x] <= e[1][0]
+          && e[0][1] <= d[p.y] && d[p.y] <= e[1][1]
+          ? d.species : null;
+    });
+  }
+
+  // If the brush is empty, select all circles.
+  function brushend() {
+    if (brush.empty()) svg.selectAll("circle").attr("class", function(d) {
+      return d.species;
+    });
+  }
+
+  function cross(a, b) {
+    var c = [], n = a.length, m = b.length, i, j;
+    for (i = -1; ++i < n;) for (j = -1; ++j < m;) c.push({x: a[i], i: i, y: b[j], j: j});
+    return c;
+  }
+});
diff --git a/static/vendor/d3-2.8.1/examples/stream/stack.css b/static/vendor/d3-2.8.1/examples/stream/stack.css
new file mode 100755 (executable)
index 0000000..581a5c0
--- /dev/null
@@ -0,0 +1,7 @@
+#chart {
+  font: 10px sans-serif;
+}
+
+line {
+  stroke: black;
+}
diff --git a/static/vendor/d3-2.8.1/examples/stream/stack.html b/static/vendor/d3-2.8.1/examples/stream/stack.html
new file mode 100755 (executable)
index 0000000..f64b736
--- /dev/null
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Stacked Bar Chart</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="stream_layers.js"></script>
+    <link type="text/css" rel="stylesheet" href="../button.css"/>
+    <link type="text/css" rel="stylesheet" href="stack.css"/>
+  </head>
+  <body>
+    <div id="chart">
+      <button id="group" class="first" onclick="transitionGroup()">
+        Group
+      </button
+      ><button id="stack" class="active last" onclick="transitionStack()">
+        Stack
+      </button><p>
+    </div>
+    <script type="text/javascript" src="stack.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/stream/stack.js b/static/vendor/d3-2.8.1/examples/stream/stack.js
new file mode 100755 (executable)
index 0000000..1f2a556
--- /dev/null
@@ -0,0 +1,119 @@
+var n = 4, // number of layers
+    m = 64, // number of samples per layer
+    data = d3.layout.stack()(stream_layers(n, m, .1)),
+    color = d3.interpolateRgb("#aad", "#556");
+
+var p = 20,
+    w = 960,
+    h = 500 - .5 - p,
+    mx = m,
+    my = d3.max(data, function(d) {
+      return d3.max(d, function(d) {
+        return d.y0 + d.y;
+      });
+    }),
+    mz = d3.max(data, function(d) {
+      return d3.max(d, function(d) {
+        return d.y;
+      });
+    }),
+    x = function(d) { return d.x * w / mx; },
+    y0 = function(d) { return h - d.y0 * h / my; },
+    y1 = function(d) { return h - (d.y + d.y0) * h / my; },
+    y2 = function(d) { return d.y * h / mz; }; // or `my` to not rescale
+
+var vis = d3.select("#chart")
+  .append("svg")
+    .attr("width", w)
+    .attr("height", h + p);
+
+var layers = vis.selectAll("g.layer")
+    .data(data)
+  .enter().append("g")
+    .style("fill", function(d, i) { return color(i / (n - 1)); })
+    .attr("class", "layer");
+
+var bars = layers.selectAll("g.bar")
+    .data(function(d) { return d; })
+  .enter().append("g")
+    .attr("class", "bar")
+    .attr("transform", function(d) { return "translate(" + x(d) + ",0)"; });
+
+bars.append("rect")
+    .attr("width", x({x: .9}))
+    .attr("x", 0)
+    .attr("y", h)
+    .attr("height", 0)
+  .transition()
+    .delay(function(d, i) { return i * 10; })
+    .attr("y", y1)
+    .attr("height", function(d) { return y0(d) - y1(d); });
+
+var labels = vis.selectAll("text.label")
+    .data(data[0])
+  .enter().append("text")
+    .attr("class", "label")
+    .attr("x", x)
+    .attr("y", h + 6)
+    .attr("dx", x({x: .45}))
+    .attr("dy", ".71em")
+    .attr("text-anchor", "middle")
+    .text(function(d, i) { return i; });
+
+vis.append("line")
+    .attr("x1", 0)
+    .attr("x2", w - x({x: .1}))
+    .attr("y1", h)
+    .attr("y2", h);
+
+function transitionGroup() {
+  var group = d3.selectAll("#chart");
+
+  group.select("#group")
+      .attr("class", "first active");
+
+  group.select("#stack")
+      .attr("class", "last");
+
+  group.selectAll("g.layer rect")
+    .transition()
+      .duration(500)
+      .delay(function(d, i) { return (i % m) * 10; })
+      .attr("x", function(d, i) { return x({x: .9 * ~~(i / m) / n}); })
+      .attr("width", x({x: .9 / n}))
+      .each("end", transitionEnd);
+
+  function transitionEnd() {
+    d3.select(this)
+      .transition()
+        .duration(500)
+        .attr("y", function(d) { return h - y2(d); })
+        .attr("height", y2);
+  }
+}
+
+function transitionStack() {
+  var stack = d3.select("#chart");
+
+  stack.select("#group")
+      .attr("class", "first");
+
+  stack.select("#stack")
+      .attr("class", "last active");
+
+  stack.selectAll("g.layer rect")
+    .transition()
+      .duration(500)
+      .delay(function(d, i) { return (i % m) * 10; })
+      .attr("y", y1)
+      .attr("height", function(d) { return y0(d) - y1(d); })
+      .each("end", transitionEnd);
+
+  function transitionEnd() {
+    d3.select(this)
+      .transition()
+        .duration(500)
+        .attr("x", 0)
+        .attr("width", x({x: .9}));
+  }
+}
diff --git a/static/vendor/d3-2.8.1/examples/stream/stream.css b/static/vendor/d3-2.8.1/examples/stream/stream.css
new file mode 100755 (executable)
index 0000000..a81d164
--- /dev/null
@@ -0,0 +1,3 @@
+#chart {
+  font: 10px sans-serif;
+}
diff --git a/static/vendor/d3-2.8.1/examples/stream/stream.html b/static/vendor/d3-2.8.1/examples/stream/stream.html
new file mode 100755 (executable)
index 0000000..59d2fba
--- /dev/null
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Streamgraph</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="stream_layers.js"></script>
+    <link type="text/css" rel="stylesheet" href="../button.css"/>
+    <link type="text/css" rel="stylesheet" href="stream.css"/>
+  </head>
+  <body>
+    <div id="chart">
+      <button class="first last" onclick="transition()">
+        Update
+      </button><p>
+    </div>
+    <script type="text/javascript" src="stream.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/stream/stream.js b/static/vendor/d3-2.8.1/examples/stream/stream.js
new file mode 100755 (executable)
index 0000000..ac60b91
--- /dev/null
@@ -0,0 +1,42 @@
+var n = 20, // number of layers
+    m = 200, // number of samples per layer
+    data0 = d3.layout.stack().offset("wiggle")(stream_layers(n, m)),
+    data1 = d3.layout.stack().offset("wiggle")(stream_layers(n, m)),
+    color = d3.interpolateRgb("#aad", "#556");
+
+var w = 960,
+    h = 500,
+    mx = m - 1,
+    my = d3.max(data0.concat(data1), function(d) {
+      return d3.max(d, function(d) {
+        return d.y0 + d.y;
+      });
+    });
+
+var area = d3.svg.area()
+    .x(function(d) { return d.x * w / mx; })
+    .y0(function(d) { return h - d.y0 * h / my; })
+    .y1(function(d) { return h - (d.y + d.y0) * h / my; });
+
+var vis = d3.select("#chart")
+  .append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+vis.selectAll("path")
+    .data(data0)
+  .enter().append("path")
+    .style("fill", function() { return color(Math.random()); })
+    .attr("d", area);
+
+function transition() {
+  d3.selectAll("path")
+      .data(function() {
+        var d = data1;
+        data1 = data0;
+        return data0 = d;
+      })
+    .transition()
+      .duration(2500)
+      .attr("d", area);
+}
diff --git a/static/vendor/d3-2.8.1/examples/stream/stream_layers.js b/static/vendor/d3-2.8.1/examples/stream/stream_layers.js
new file mode 100755 (executable)
index 0000000..13cacdb
--- /dev/null
@@ -0,0 +1,33 @@
+/* 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/static/vendor/d3-2.8.1/examples/superformula/dot.html b/static/vendor/d3-2.8.1/examples/superformula/dot.html
new file mode 100755 (executable)
index 0000000..df39970
--- /dev/null
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Dot Plot</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="superformula.js"></script>
+    <style type="text/css">
+
+body {
+  font: 10px sans-serif;
+}
+
+path.dot {
+  fill: white;
+  stroke-width: 1.5px;
+}
+
+rect {
+  fill: none;
+  stroke: black;
+  shape-rendering: crispEdges;
+}
+
+.x line, .y line {
+  stroke: #ccc;
+  shape-rendering: crispEdges;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var data = d3.range(100).map(function(i) {
+  return {x: i / 99, y: Math.random()};
+});
+
+var w = 450,
+    h = 450,
+    p = 20,
+    x = d3.scale.linear().range([0, w]),
+    y = d3.scale.linear().range([h, 0]),
+    type = d3.scale.ordinal().range(superformulaTypes),
+    color = d3.scale.category10();
+
+var vis = d3.select("body")
+  .append("svg")
+    .attr("width", w + p * 2)
+    .attr("height", h + p * 2)
+  .append("g")
+    .attr("transform", "translate(" + p + "," + p + ")");
+
+var xrule = vis.selectAll("g.x")
+    .data(x.ticks(10))
+  .enter().append("g")
+    .attr("class", "x");
+
+xrule.append("line")
+    .attr("x1", x)
+    .attr("x2", x)
+    .attr("y1", 0)
+    .attr("y2", h);
+
+xrule.append("text")
+    .attr("x", x)
+    .attr("y", h + 3)
+    .attr("dy", ".71em")
+    .attr("text-anchor", "middle")
+    .text(x.tickFormat(10));
+
+var yrule = vis.selectAll("g.y")
+    .data(y.ticks(10))
+  .enter().append("g")
+    .attr("class", "y");
+
+yrule.append("line")
+    .attr("x1", 0)
+    .attr("x2", w)
+    .attr("y1", y)
+    .attr("y2", y);
+
+yrule.append("text")
+    .attr("x", -3)
+    .attr("y", y)
+    .attr("dy", ".35em")
+    .attr("text-anchor", "end")
+    .text(y.tickFormat(10));
+
+vis.append("rect")
+    .attr("width", w)
+    .attr("height", h);
+
+vis.selectAll("path.dot")
+    .data(data)
+  .enter().append("path")
+    .attr("class", "dot")
+    .attr("stroke", function(d, i) { return color(i); })
+    .attr("transform", function(d) { return "translate(" + x(d.x) + "," + y(d.y) + ")"; })
+    .attr("d", superformula()
+    .type(function(d, i) { return type(i); }));
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/superformula/explorer.html b/static/vendor/d3-2.8.1/examples/superformula/explorer.html
new file mode 100755 (executable)
index 0000000..a292d83
--- /dev/null
@@ -0,0 +1,120 @@
+<!DOCTYPE html>
+  <html>
+  <head>
+    <title>Superformula</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="superformula.js"></script>
+    <style type="text/css">
+
+path {
+  stroke-width: 1.5px;
+  stroke: #666;
+  fill: #ddd;
+}
+
+#controls {
+  position: absolute;
+  width: 240px;
+  font: 10px sans-serif;
+}
+
+#controls span, #controls label {
+  position: relative;
+  top: -5px;
+  padding: 5px;
+  display: inline-block;
+  width: 20px;
+}
+
+#controls button {
+  font: 10px sans-serif;
+  padding: 5px;
+  width: 70px;
+}
+
+    </style>
+  </head>
+  <body>
+    <div id="controls"></div>
+    <script type="text/javascript">
+
+var types = {
+  asterisk: {m: 12, n1: .3, n2: 0, n3: 10, a: 1, b: 1},
+  bean: {m: 2, n1: 1, n2: 4, n3: 8, a: 1, b: 1},
+  butterfly: {m: 3, n1: 1, n2: 6, n3: 2, a: .6, b: 1},
+  circle: {m: 4, n1: 2, n2: 2, n3: 2, a: 1, b: 1},
+  clover: {m: 6, n1: .3, n2: 0, n3: 10, a: 1, b: 1},
+  cloverFour: {m: 8, n1: 10, n2: -1, n3: -8, a: 1, b: 1},
+  cross: {m: 8, n1: 1.3, n2: .01, n3: 8, a: 1, b: 1},
+  diamond: {m: 4, n1: 1, n2: 1, n3: 1, a: 1, b: 1},
+  drop: {m: 1, n1: .5, n2: .5, n3: .5, a: 1, b: 1},
+  ellipse: {m: 4, n1: 2, n2: 2, n3: 2, a: 9, b: 6},
+  gear: {m: 19, n1: 100, n2: 50, n3: 50, a: 1, b: 1},
+  heart: {m: 1, n1: .8, n2: 1, n3: -8, a: 1, b: .18},
+  heptagon: {m: 7, n1: 1000, n2: 400, n3: 400, a: 1, b: 1},
+  hexagon: {m: 6, n1: 1000, n2: 400, n3: 400, a: 1, b: 1},
+  malteseCross: {m: 8, n1: .9, n2: .1, n3: 100, a: 1, b: 1},
+  pentagon: {m: 5, n1: 1000, n2: 600, n3: 600, a: 1, b: 1},
+  rectangle: {m: 4, n1: 100, n2: 100, n3: 100, a: 2, b: 1},
+  roundedStar: {m: 5, n1: 2, n2: 7, n3: 7, a: 1, b: 1},
+  square: {m: 4, n1: 100, n2: 100, n3: 100, a: 1, b: 1},
+  star: {m: 5, n1: 30, n2: 100, n3: 100, a: 1, b: 1},
+  triangle: {m: 3, n1: 100, n2: 200, n3: 200, a: 1, b: 1}
+};
+
+var format = d3.format(".4n"),
+    scale = d3.scale.linear().domain([-10, 20, 1000]).range([0, 800, 1000]);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", 960)
+    .attr("height", 500);
+
+var shape = superformula()
+    .type("asterisk")
+    .size(100000)
+    .segments(3600);
+
+var path = svg.append("path")
+    .attr("class", "big")
+    .attr("transform", "translate(480,250)")
+    .attr("d", shape);
+
+var control = d3.select("#controls").selectAll("div")
+    .data(d3.entries(types.asterisk))
+  .enter().append("div")
+    .attr("id", function(d) { return d.key; });
+
+control.append("label")
+    .text(function(d) { return d.key; });
+
+control.append("input")
+    .attr("type", "range")
+    .attr("max", 1000)
+    .attr("min", 0)
+    .property("value", function(d) { return scale(d.value); })
+    .on("change", function(d) {
+      var v = scale.invert(this.value);
+      path.attr("d", shape.param(d.key, v));
+      d3.select(this.nextSibling).text(format(v));
+    });
+
+control.append("span")
+    .text(function(d) { return format(d.value); });
+
+var types = d3.select("#controls").append("div").selectAll("button")
+    .data(d3.entries(types))
+  .enter().append("button")
+    .text(function(d) { return d.key; })
+    .on("click", function(d) {
+      for (var param in d.value) {
+        var control = d3.select("#" + param);
+        control.select("input").property("value", scale(d.value[param]));
+        control.select("span").text(format(d.value[param]));
+        shape.param(param, d.value[param]);
+      }
+      path.attr("d", shape);
+    });
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/superformula/superformula.html b/static/vendor/d3-2.8.1/examples/superformula/superformula.html
new file mode 100755 (executable)
index 0000000..dc5dd3d
--- /dev/null
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+  <html>
+  <head>
+    <title>Superformula</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <script type="text/javascript" src="superformula.js"></script>
+    <style type="text/css">
+
+path {
+  stroke-width: 1.5px;
+}
+
+path.small {
+  fill: steelblue;
+}
+
+path.big {
+  stroke: #666;
+  fill: #ddd;
+}
+
+path.small:hover {
+  stroke: steelblue;
+  fill: lightsteelblue;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var size = 1000;
+
+var x = d3.scale.ordinal()
+    .domain(superformulaTypes)
+    .rangePoints([0, 960], 1);
+
+var svg = d3.select("body").append("svg")
+    .attr("width", 960)
+    .attr("height", 500);
+
+var small = superformula()
+    .type(String)
+    .size(size);
+
+var big = superformula()
+    .type("square")
+    .size(size * 50)
+    .segments(360);
+
+svg.selectAll("a")
+    .data(superformulaTypes)
+  .enter().append("a")
+    .attr("xlink:title", String)
+    .attr("transform", function(d, i) { return "translate("+ x(d) + ",40)"; })
+  .append("path")
+    .attr("class", "small")
+    .attr("d", small)
+    .on("mousedown", function() { d3.select(this).style("fill", "aliceblue"); })
+    .on("mouseup", function() { d3.select(this).style("fill", null); })
+    .on("click", function(d) { d3.select(".big").transition().duration(500).attr("d", big.type(d)); });
+
+svg.append("path")
+    .attr("class", "big")
+    .attr("transform", "translate(450,250)")
+    .attr("d", big);
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/superformula/superformula.js b/static/vendor/d3-2.8.1/examples/superformula/superformula.js
new file mode 100755 (executable)
index 0000000..cebb25c
--- /dev/null
@@ -0,0 +1,98 @@
+(function() {
+  var _symbol = d3.svg.symbol(),
+      _line = d3.svg.line();
+
+  superformula = function() {
+    var type = _symbol.type(),
+        size = _symbol.size(),
+        segments = size,
+        params = {};
+
+    function superformula(d, i) {
+      var n, p = _superformulaTypes[type.call(this, d, i)];
+      for (n in params) p[n] = params[n].call(this, d, i);
+      return _superformulaPath(p, segments.call(this, d, i), Math.sqrt(size.call(this, d, i)));
+    }
+
+    superformula.type = function(x) {
+      if (!arguments.length) return type;
+      type = d3.functor(x);
+      return superformula;
+    };
+
+    superformula.param = function(name, value) {
+      if (arguments.length < 2) return params[name];
+      params[name] = d3.functor(value);
+      return superformula;
+    };
+
+    // size of superformula in square pixels
+    superformula.size = function(x) {
+      if (!arguments.length) return size;
+      size = d3.functor(x);
+      return superformula;
+    };
+
+    // number of discrete line segments
+    superformula.segments = function(x) {
+      if (!arguments.length) return segments;
+      segments = d3.functor(x);
+      return superformula;
+    };
+
+    return superformula;
+  };
+
+  function _superformulaPath(params, n, diameter) {
+    var i = -1,
+        dt = 2 * Math.PI / n,
+        t,
+        r = 0,
+        x,
+        y,
+        points = [];
+
+    while (++i < n) {
+      t = params.m * (i * dt - Math.PI) / 4;
+      t = Math.pow(Math.abs(Math.pow(Math.abs(Math.cos(t) / params.a), params.n2)
+        + Math.pow(Math.abs(Math.sin(t) / params.b), params.n3)), -1 / params.n1);
+      if (t > r) r = t;
+      points.push(t);
+    }
+
+    r = diameter * Math.SQRT1_2 / r;
+    i = -1; while (++i < n) {
+      x = (t = points[i] * r) * Math.cos(i * dt);
+      y = t * Math.sin(i * dt);
+      points[i] = [Math.abs(x) < 1e-6 ? 0 : x, Math.abs(y) < 1e-6 ? 0 : y];
+    }
+
+    return _line(points) + "Z";
+  }
+
+  var _superformulaTypes = {
+    asterisk: {m: 12, n1: .3, n2: 0, n3: 10, a: 1, b: 1},
+    bean: {m: 2, n1: 1, n2: 4, n3: 8, a: 1, b: 1},
+    butterfly: {m: 3, n1: 1, n2: 6, n3: 2, a: .6, b: 1},
+    circle: {m: 4, n1: 2, n2: 2, n3: 2, a: 1, b: 1},
+    clover: {m: 6, n1: .3, n2: 0, n3: 10, a: 1, b: 1},
+    cloverFour: {m: 8, n1: 10, n2: -1, n3: -8, a: 1, b: 1},
+    cross: {m: 8, n1: 1.3, n2: .01, n3: 8, a: 1, b: 1},
+    diamond: {m: 4, n1: 1, n2: 1, n3: 1, a: 1, b: 1},
+    drop: {m: 1, n1: .5, n2: .5, n3: .5, a: 1, b: 1},
+    ellipse: {m: 4, n1: 2, n2: 2, n3: 2, a: 9, b: 6},
+    gear: {m: 19, n1: 100, n2: 50, n3: 50, a: 1, b: 1},
+    heart: {m: 1, n1: .8, n2: 1, n3: -8, a: 1, b: .18},
+    heptagon: {m: 7, n1: 1000, n2: 400, n3: 400, a: 1, b: 1},
+    hexagon: {m: 6, n1: 1000, n2: 400, n3: 400, a: 1, b: 1},
+    malteseCross: {m: 8, n1: .9, n2: .1, n3: 100, a: 1, b: 1},
+    pentagon: {m: 5, n1: 1000, n2: 600, n3: 600, a: 1, b: 1},
+    rectangle: {m: 4, n1: 100, n2: 100, n3: 100, a: 2, b: 1},
+    roundedStar: {m: 5, n1: 2, n2: 7, n3: 7, a: 1, b: 1},
+    square: {m: 4, n1: 100, n2: 100, n3: 100, a: 1, b: 1},
+    star: {m: 5, n1: 30, n2: 100, n3: 100, a: 1, b: 1},
+    triangle: {m: 3, n1: 100, n2: 200, n3: 200, a: 1, b: 1}
+  };
+
+  superformulaTypes = d3.keys(_superformulaTypes);
+})();
diff --git a/static/vendor/d3-2.8.1/examples/symbol-map/symbol-map.html b/static/vendor/d3-2.8.1/examples/symbol-map/symbol-map.html
new file mode 100755 (executable)
index 0000000..e249e91
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>U.S. States</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+svg {
+  width: 960px;
+  height: 500px;
+}
+
+#states path, #state-centroids circle {
+  fill: #ccc;
+  stroke: #fff;
+  stroke-width: 1.5px;
+}
+
+#state-centroids circle {
+  fill: steelblue;
+  fill-opacity: .8;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+// The radius scale for the centroids.
+var r = d3.scale.sqrt()
+    .domain([0, 1e6])
+    .range([0, 10]);
+
+// Our projection.
+var xy = d3.geo.albersUsa();
+
+var svg = d3.select("body").append("svg");
+svg.append("g").attr("id", "states");
+svg.append("g").attr("id", "state-centroids");
+
+d3.json("../data/us-states.json", function(collection) {
+  svg.select("#states")
+    .selectAll("path")
+      .data(collection.features)
+    .enter().append("path")
+      .attr("d", d3.geo.path().projection(xy));
+});
+
+d3.json("../data/us-state-centroids.json", function(collection) {
+  svg.select("#state-centroids")
+    .selectAll("circle")
+      .data(collection.features
+      .sort(function(a, b) { return b.properties.population - a.properties.population; }))
+    .enter().append("circle")
+      .attr("transform", function(d) { return "translate(" + xy(d.geometry.coordinates) + ")"; })
+      .attr("r", 0)
+    .transition()
+      .duration(1000)
+      .delay(function(d, i) { return i * 50; })
+      .attr("r", function(d) { return r(d.properties.population); });
+});
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/touch/touch.html b/static/vendor/d3-2.8.1/examples/touch/touch.html
new file mode 100755 (executable)
index 0000000..0a06545
--- /dev/null
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta name="viewport" content="initial-scale=1,maximum-scale=1"/>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+html, body {
+  height: 100%;
+}
+
+body {
+  margin: 0;
+}
+
+svg {
+  display: block;
+  overflow: hidden;
+  width: 100%;
+  height: 100%;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var color = d3.scale.category10();
+
+var svg = d3.select("body").append("svg");
+
+d3.select("body")
+    .on("touchstart", touch)
+    .on("touchmove", touch)
+    .on("touchend", touch);
+
+function touch() {
+  d3.event.preventDefault();
+
+  var circle = svg.selectAll("circle.touch")
+      .data(d3.touches(svg.node()), function(d) { return d.identifier; })
+      .attr("cx", function(d) { return d[0]; })
+      .attr("cy", function(d) { return d[1]; });
+
+  circle.enter().append("circle")
+      .attr("class", "touch")
+      .attr("cx", function(d) { return d[0]; })
+      .attr("cy", function(d) { return d[1]; })
+      .style("fill", function(d) { return color(d.identifier); })
+      .attr("r", 1e-6)
+    .transition()
+      .duration(500)
+      .ease("elastic")
+      .attr("r", 48);
+
+  circle.exit()
+      .attr("class", null)
+    .transition()
+      .attr("r", 1e-6)
+      .remove();
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/transform/test.html b/static/vendor/d3-2.8.1/examples/transform/test.html
new file mode 100755 (executable)
index 0000000..d36fadf
--- /dev/null
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+    <title>Transform Test</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+      th, td { border: solid #ccc 1px; }
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var outcome = d3.select("body").append("p");
+
+var g = d3.select("body").append("svg")
+    .attr("width", 10)
+    .attr("height", 10)
+  .append("g");
+
+var results = d3.select("body").append("table")
+    .style("display", "none");
+results.append("tr").selectAll("th")
+    .data(["Expected", "Actual", "Expected matrix", "Actual matrix"])
+  .enter().append("th").text(String);
+
+var el = g[0][0],
+    v,
+    m,
+    a,
+    b,
+    failures = 0;
+
+for (var tx = -10; tx <= 10; tx += 5) {
+  for (var ty = -10; ty <= 10; ty += 5) {
+    for (var r = -180; r <= 180; r += 15) {
+      for (var skx = -45; skx <= 45; skx += 45) {
+        for (var sx = -2; sx <= 2; sx++) {
+          for (var sy = -2; sy <= 2; sy++) {
+            v = "translate(" + tx + "," + ty + ")rotate(" + r + ")skewX(" + skx + ")scale(" + sx + "," + sy + ")";
+            g.attr("transform", v);
+            a = matrix(el);
+            g.attr("transform", d3.transform(v));
+            b = matrix(el);
+            if (!deepEqual(a, b, 1e-6)) {
+              failures++;
+              results
+                  .style("display", null)
+                .append("tr").selectAll("td")
+                  .data([v, d3.transform(v), a, b])
+                .enter().append("td").text(String);
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+outcome.text(failures ? failures + " failures" : "Success!");
+
+function matrix(el) {
+  var t = el.transform.baseVal.consolidate();
+  if (t) {
+    var m = t.matrix;
+    return [m.a, m.b, m.c, m.d, m.e, m.f];
+  }
+  return null;
+}
+
+function deepEqual(actual, expected, epsilon) {
+  epsilon = epsilon || 0;
+  if (actual === expected) return true;
+  if (actual == null || expected == null) return false;
+  if (actual.length !== expected.length) return false;
+
+  for (var i = 0; i < actual.length; i++) {
+    if (Math.abs(actual[i] - expected[i]) > epsilon) return false;
+  }
+  return true;
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/transform/transform.html b/static/vendor/d3-2.8.1/examples/transform/transform.html
new file mode 100755 (executable)
index 0000000..a1e73d2
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+    <title>Transform Transitions</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+body {
+  margin: 0;
+}
+
+rect {
+  stroke: #fff;
+  stroke-width: .05px;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500,
+    z = 20,
+    x = w / z,
+    y = h / z;
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w)
+    .attr("height", h);
+
+svg.selectAll("rect")
+    .data(d3.range(x * y))
+  .enter().append("rect")
+    .attr("transform", translate)
+    .attr("width", z)
+    .attr("height", z)
+    .style("fill", d3.scale.linear().domain([0, x * y]).range(["brown", "steelblue"]))
+    .on("mouseover", mouseover);
+
+function translate(d) {
+  return "translate(" + (d % x) * z + "," + Math.floor(d / x) * z + ")";
+}
+
+function mouseover(d) {
+  this.parentNode.appendChild(this);
+  d3.select(this).transition()
+      .duration(750)
+      .attr("transform", "translate(480,480)scale(23)rotate(180)")
+    .transition()
+      .delay(1500)
+      .attr("transform", "translate(240,240)scale(0)rotate(180)")
+      .style("fill-opacity", 0)
+      .remove();
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/tree/tree-dynamic.html b/static/vendor/d3-2.8.1/examples/tree/tree-dynamic.html
new file mode 100755 (executable)
index 0000000..68880a9
--- /dev/null
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Node-Link Tree</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+.node {
+  stroke: #fff;
+  stroke-width: 2px;
+}
+
+.link {
+  fill: none;
+  stroke: #000;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript">
+
+var w = 960,
+    h = 500,
+    root = {},
+    data = [root],
+    tree = d3.layout.tree().size([w - 20, h - 20]),
+    diagonal = d3.svg.diagonal(),
+    duration = 750,
+    timer = setInterval(update, duration);
+
+var vis = d3.select("body").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+  .append("g")
+    .attr("transform", "translate(10, 10)");
+
+vis.selectAll("circle")
+    .data(tree(root))
+  .enter().append("circle")
+    .attr("class", "node")
+    .attr("r", 3.5)
+    .attr("cx", x)
+    .attr("cy", y);
+
+function update() {
+  if (data.length >= 500) return clearInterval(timer);
+
+  // Add a new datum to a random parent.
+  var d = {id: data.length}, parent = data[~~(Math.random() * data.length)];
+  if (parent.children) parent.children.push(d); else parent.children = [d];
+  data.push(d);
+
+  // Compute the new tree layout. We'll stash the old layout in the data.
+  var nodes = tree.nodes(root);
+
+  // Update the nodes…
+  var node = vis.selectAll("circle.node")
+      .data(nodes, function(d) { return d.id; });
+
+  // Enter any new nodes at the parent's previous position.
+  node.enter().append("circle")
+      .attr("class", "node")
+      .attr("r", 3.5)
+      .attr("cx", function(d) { return d.parent.x0; })
+      .attr("cy", function(d) { return d.parent.y0; });
+
+  // Transition nodes to their new position.
+  node.transition()
+      .duration(duration)
+      .attr("cx", x)
+      .attr("cy", y);
+
+  // Update the links…
+  var link = vis.selectAll("path.link")
+      .data(tree.links(nodes), function(d) { return d.target.id; });
+
+  // Enter any new links at the parent's previous position.
+  link.enter().insert("path", "circle")
+      .attr("class", "link")
+      .attr("d", function(d) {
+        var o = {x: d.source.x0, y: d.source.y0};
+        return diagonal({source: o, target: o});
+      });
+
+  // Transition links to their new position.
+  link.transition()
+      .duration(duration)
+      .attr("d", diagonal);
+}
+
+function x(d) {
+  return d.x0 = d.x;
+}
+
+function y(d) {
+  return d.y0 = d.y;
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/tree/tree-interactive.html b/static/vendor/d3-2.8.1/examples/tree/tree-interactive.html
new file mode 100755 (executable)
index 0000000..dba5f86
--- /dev/null
@@ -0,0 +1,168 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Node-Link Tree</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+.node circle {
+  cursor: pointer;
+  fill: #fff;
+  stroke: steelblue;
+  stroke-width: 1.5px;
+}
+
+.node text {
+  font: 10px sans-serif;
+}
+
+path.link {
+  fill: none;
+  stroke: #ccc;
+  stroke-width: 1.5px;
+}
+
+    </style>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript">
+
+var m = [20, 120, 20, 120],
+    w = 1280 - m[1] - m[3],
+    h = 800 - m[0] - m[2],
+    i = 0,
+    duration = 500,
+    root;
+
+var tree = d3.layout.tree()
+    .size([h, w]);
+
+var diagonal = d3.svg.diagonal()
+    .projection(function(d) { return [d.y, d.x]; });
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w + m[1] + m[3])
+    .attr("height", h + m[0] + m[2])
+  .append("g")
+    .attr("transform", "translate(" + m[3] + "," + m[0] + ")");
+
+d3.json("../data/flare.json", function(json) {
+  root = json;
+  root.x0 = h / 2;
+  root.y0 = 0;
+
+  function collapse(d) {
+    if (d.children) {
+      d._children = d.children;
+      d._children.forEach(collapse);
+      d.children = null;
+    }
+  }
+
+  root.children.forEach(collapse);
+  update(root);
+});
+
+function update(source) {
+
+  // Compute the new tree layout.
+  var nodes = tree.nodes(root).reverse();
+
+  // Normalize for fixed-depth.
+  nodes.forEach(function(d) { d.y = d.depth * 180; });
+
+  // Update the nodes…
+  var node = vis.selectAll("g.node")
+      .data(nodes, function(d) { return d.id || (d.id = ++i); });
+
+  // Enter any new nodes at the parent's previous position.
+  var nodeEnter = node.enter().append("g")
+      .attr("class", "node")
+      .attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; })
+      .on("click", click);
+
+  nodeEnter.append("circle")
+      .attr("r", 1e-6)
+      .style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; });
+
+  nodeEnter.append("text")
+      .attr("x", function(d) { return d.children || d._children ? -10 : 10; })
+      .attr("dy", ".35em")
+      .attr("text-anchor", function(d) { return d.children || d._children ? "end" : "start"; })
+      .text(function(d) { return d.name; })
+      .style("fill-opacity", 1e-6);
+
+  // Transition nodes to their new position.
+  var nodeUpdate = node.transition()
+      .duration(duration)
+      .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; });
+
+  nodeUpdate.select("circle")
+      .attr("r", 4.5)
+      .style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; });
+
+  nodeUpdate.select("text")
+      .style("fill-opacity", 1);
+
+  // Transition exiting nodes to the parent's new position.
+  var nodeExit = node.exit().transition()
+      .duration(duration)
+      .attr("transform", function(d) { return "translate(" + source.y + "," + source.x + ")"; })
+      .remove();
+
+  nodeExit.select("circle")
+      .attr("r", 1e-6);
+
+  nodeExit.select("text")
+      .style("fill-opacity", 1e-6);
+
+  // Update the links…
+  var link = vis.selectAll("path.link")
+      .data(tree.links(nodes), function(d) { return d.target.id; });
+
+  // Enter any new links at the parent's previous position.
+  link.enter().insert("path", "g")
+      .attr("class", "link")
+      .attr("d", function(d) {
+        var o = {x: source.x0, y: source.y0};
+        return diagonal({source: o, target: o});
+      });
+
+  // Transition links to their new position.
+  link.transition()
+      .duration(duration)
+      .attr("d", diagonal);
+
+  // Transition exiting nodes to the parent's new position.
+  link.exit().transition()
+      .duration(duration)
+      .attr("d", function(d) {
+        var o = {x: source.x, y: source.y};
+        return diagonal({source: o, target: o});
+      })
+      .remove();
+
+  // Stash the old positions for transition.
+  nodes.forEach(function(d) {
+    d.x0 = d.x;
+    d.y0 = d.y;
+  });
+}
+
+// Toggle children on click.
+function click(d) {
+  if (d.children) {
+    d._children = d.children;
+    d.children = null;
+  } else {
+    d.children = d._children;
+    d._children = null;
+  }
+  update(d);
+}
+
+    </script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/tree/tree-radial.html b/static/vendor/d3-2.8.1/examples/tree/tree-radial.html
new file mode 100755 (executable)
index 0000000..4c627f4
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Node-Link Tree (Radial)</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="tree.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="tree-radial.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/tree/tree-radial.js b/static/vendor/d3-2.8.1/examples/tree/tree-radial.js
new file mode 100755 (executable)
index 0000000..50acf6b
--- /dev/null
@@ -0,0 +1,40 @@
+var r = 960 / 2;
+
+var tree = d3.layout.tree()
+    .size([360, r - 120])
+    .separation(function(a, b) { return (a.parent == b.parent ? 1 : 2) / a.depth; });
+
+var diagonal = d3.svg.diagonal.radial()
+    .projection(function(d) { return [d.y, d.x / 180 * Math.PI]; });
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", r * 2)
+    .attr("height", r * 2 - 150)
+  .append("g")
+    .attr("transform", "translate(" + r + "," + r + ")");
+
+d3.json("../data/flare.json", function(json) {
+  var nodes = tree.nodes(json);
+
+  var link = vis.selectAll("path.link")
+      .data(tree.links(nodes))
+    .enter().append("path")
+      .attr("class", "link")
+      .attr("d", diagonal);
+
+  var node = vis.selectAll("g.node")
+      .data(nodes)
+    .enter().append("g")
+      .attr("class", "node")
+      .attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")"; })
+
+  node.append("circle")
+      .attr("r", 4.5);
+
+  node.append("text")
+      .attr("dx", function(d) { return d.x < 180 ? 8 : -8; })
+      .attr("dy", ".31em")
+      .attr("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; })
+      .attr("transform", function(d) { return d.x < 180 ? null : "rotate(180)"; })
+      .text(function(d) { return d.name; });
+});
diff --git a/static/vendor/d3-2.8.1/examples/tree/tree.css b/static/vendor/d3-2.8.1/examples/tree/tree.css
new file mode 100755 (executable)
index 0000000..5e8c974
--- /dev/null
@@ -0,0 +1,15 @@
+.node circle {
+  fill: #fff;
+  stroke: steelblue;
+  stroke-width: 1.5px;
+}
+
+.node {
+  font: 10px sans-serif;
+}
+
+.link {
+  fill: none;
+  stroke: #ccc;
+  stroke-width: 1.5px;
+}
diff --git a/static/vendor/d3-2.8.1/examples/tree/tree.html b/static/vendor/d3-2.8.1/examples/tree/tree.html
new file mode 100755 (executable)
index 0000000..acb7a27
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Node-Link Tree</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="tree.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="tree.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/tree/tree.js b/static/vendor/d3-2.8.1/examples/tree/tree.js
new file mode 100755 (executable)
index 0000000..d1e8a64
--- /dev/null
@@ -0,0 +1,39 @@
+var w = 960,
+    h = 2000;
+
+var tree = d3.layout.tree()
+    .size([h, w - 160]);
+
+var diagonal = d3.svg.diagonal()
+    .projection(function(d) { return [d.y, d.x]; });
+
+var vis = d3.select("#chart").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+  .append("g")
+    .attr("transform", "translate(40, 0)");
+
+d3.json("../data/flare.json", function(json) {
+  var nodes = tree.nodes(json);
+
+  var link = vis.selectAll("path.link")
+      .data(tree.links(nodes))
+    .enter().append("path")
+      .attr("class", "link")
+      .attr("d", diagonal);
+
+  var node = vis.selectAll("g.node")
+      .data(nodes)
+    .enter().append("g")
+      .attr("class", "node")
+      .attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })
+
+  node.append("circle")
+      .attr("r", 4.5);
+
+  node.append("text")
+      .attr("dx", function(d) { return d.children ? -8 : 8; })
+      .attr("dy", 3)
+      .attr("text-anchor", function(d) { return d.children ? "end" : "start"; })
+      .text(function(d) { return d.name; });
+});
diff --git a/static/vendor/d3-2.8.1/examples/treemap/treemap-svg.html b/static/vendor/d3-2.8.1/examples/treemap/treemap-svg.html
new file mode 100755 (executable)
index 0000000..91189d4
--- /dev/null
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <style type="text/css">
+
+rect {
+  fill: none;
+  stroke: #fff;
+}
+
+text {
+  font: 10px sans-serif;
+}
+
+    </style>
+  </head>
+  <body>
+    <script type="text/javascript" src="treemap-svg.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/treemap/treemap-svg.js b/static/vendor/d3-2.8.1/examples/treemap/treemap-svg.js
new file mode 100755 (executable)
index 0000000..b40b619
--- /dev/null
@@ -0,0 +1,34 @@
+var w = 960,
+    h = 500,
+    color = d3.scale.category20c();
+
+var treemap = d3.layout.treemap()
+    .padding(4)
+    .size([w, h])
+    .value(function(d) { return d.size; });
+
+var svg = d3.select("body").append("svg")
+    .attr("width", w)
+    .attr("height", h)
+  .append("g")
+    .attr("transform", "translate(-.5,-.5)");
+
+d3.json("../data/flare.json", function(json) {
+  var cell = svg.data([json]).selectAll("g")
+      .data(treemap)
+    .enter().append("g")
+      .attr("class", "cell")
+      .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
+
+  cell.append("rect")
+      .attr("width", function(d) { return d.dx; })
+      .attr("height", function(d) { return d.dy; })
+      .style("fill", function(d) { return d.children ? color(d.data.name) : null; });
+
+  cell.append("text")
+      .attr("x", function(d) { return d.dx / 2; })
+      .attr("y", function(d) { return d.dy / 2; })
+      .attr("dy", ".35em")
+      .attr("text-anchor", "middle")
+      .text(function(d) { return d.children ? null : d.data.name; });
+});
diff --git a/static/vendor/d3-2.8.1/examples/treemap/treemap.css b/static/vendor/d3-2.8.1/examples/treemap/treemap.css
new file mode 100755 (executable)
index 0000000..2096179
--- /dev/null
@@ -0,0 +1,8 @@
+.cell {
+  border: solid 1px white;
+  font: 10px sans-serif;
+  line-height: 12px;
+  overflow: hidden;
+  position: absolute;
+  text-indent: 2px;
+}
diff --git a/static/vendor/d3-2.8.1/examples/treemap/treemap.html b/static/vendor/d3-2.8.1/examples/treemap/treemap.html
new file mode 100755 (executable)
index 0000000..7e6ec29
--- /dev/null
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Treemap</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="treemap.css"/>
+    <link type="text/css" rel="stylesheet" href="../button.css"/>
+  </head>
+  <body>
+    <div id="chart">
+      <button id="size" class="first active">
+        Size
+      </button
+      ><button id="count" class="last">
+        Count
+      </button><p>
+    </div>
+    <script type="text/javascript" src="treemap.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/treemap/treemap.js b/static/vendor/d3-2.8.1/examples/treemap/treemap.js
new file mode 100755 (executable)
index 0000000..d90f790
--- /dev/null
@@ -0,0 +1,53 @@
+var w = 960,
+    h = 500,
+    color = d3.scale.category20c();
+
+var treemap = d3.layout.treemap()
+    .size([w, h])
+    .sticky(true)
+    .value(function(d) { return d.size; });
+
+var div = d3.select("#chart").append("div")
+    .style("position", "relative")
+    .style("width", w + "px")
+    .style("height", h + "px");
+
+d3.json("../data/flare.json", function(json) {
+  div.data([json]).selectAll("div")
+      .data(treemap.nodes)
+    .enter().append("div")
+      .attr("class", "cell")
+      .style("background", function(d) { return d.children ? color(d.name) : null; })
+      .call(cell)
+      .text(function(d) { return d.children ? null : d.name; });
+
+  d3.select("#size").on("click", function() {
+    div.selectAll("div")
+        .data(treemap.value(function(d) { return d.size; }))
+      .transition()
+        .duration(1500)
+        .call(cell);
+
+    d3.select("#size").classed("active", true);
+    d3.select("#count").classed("active", false);
+  });
+
+  d3.select("#count").on("click", function() {
+    div.selectAll("div")
+        .data(treemap.value(function(d) { return 1; }))
+      .transition()
+        .duration(1500)
+        .call(cell);
+
+    d3.select("#size").classed("active", false);
+    d3.select("#count").classed("active", true);
+  });
+});
+
+function cell() {
+  this
+      .style("left", function(d) { return d.x + "px"; })
+      .style("top", function(d) { return d.y + "px"; })
+      .style("width", function(d) { return Math.max(0, d.dx - 1) + "px"; })
+      .style("height", function(d) { return Math.max(0, d.dy - 1) + "px"; });
+}
diff --git a/static/vendor/d3-2.8.1/examples/voroboids/boid.js b/static/vendor/d3-2.8.1/examples/voroboids/boid.js
new file mode 100755 (executable)
index 0000000..0033c89
--- /dev/null
@@ -0,0 +1,235 @@
+// Boid flocking based on http://harry.me/2011/02/17/neat-algorithms---flocking
+var boid = (function() {
+  function boid() {
+    var position = [0, 0],
+        velocity = [0, 0],
+        gravityCenter = null,
+        neighborRadius = 50,
+        maxForce = .1,
+        maxSpeed = 1,
+        separationWeight = 2,
+        alignmentWeight = 1,
+        cohesionWeight = 1,
+        desiredSeparation = 10;
+
+    function boid(neighbors) {
+      var accel = flock(neighbors);
+      d3_ai_boidWrap(position);
+      velocity[0] += accel[0];
+      velocity[1] += accel[1];
+      if (gravityCenter) {
+        var g = d3_ai_boidGravity(gravityCenter, position, neighborRadius);
+        velocity[0] += g[0];
+        velocity[1] += g[1];
+      }
+      d3_ai_boidLimit(velocity, maxSpeed);
+      position[0] += velocity[0];
+      position[1] += velocity[1];
+      return position;
+    }
+
+    function flock(neighbors) {
+      var separation = [0, 0],
+          alignment = [0, 0],
+          cohesion = [0, 0],
+          separationCount = 0,
+          alignmentCount = 0,
+          cohesionCount = 0,
+          i = -1,
+          l = neighbors.length;
+      while (++i < l) {
+        var n = neighbors[i];
+        if (n === this) continue;
+        var npos = n.position(),
+            d = d3_ai_boidDistance(position, npos);
+        if (d > 0) {
+          if (d < desiredSeparation) {
+            var tmp = d3_ai_boidNormalize(d3_ai_boidSubtract(position.slice(), npos));
+            separation[0] += tmp[0] / d;
+            separation[1] += tmp[1] / d;
+            separationCount++;
+          }
+          if (d < neighborRadius) {
+            var nvel = n.velocity();
+            alignment[0] += nvel[0];
+            alignment[1] += nvel[1];
+            alignmentCount++;
+            cohesion[0] += npos[0];
+            cohesion[1] += npos[1];
+            cohesionCount++;
+          }
+        }
+      }
+
+      if (separationCount > 0) {
+        separation[0] /= separationCount;
+        separation[1] /= separationCount;
+      }
+
+      if (alignmentCount > 0) {
+        alignment[0] /= alignmentCount;
+        alignment[1] /= alignmentCount;
+      }
+      d3_ai_boidLimit(alignment, maxForce);
+
+      if (cohesionCount > 0) {
+        cohesion[0] /= cohesionCount;
+        cohesion[1] /= cohesionCount;
+      } else {
+        cohesion = position.slice();
+      }
+      cohesion = steerTo(cohesion);
+
+      return [
+        separation[0] * separationWeight +
+         alignment[0] * alignmentWeight +
+          cohesion[0] * cohesionWeight,
+        separation[1] * separationWeight +
+         alignment[1] * alignmentWeight +
+          cohesion[1] * cohesionWeight
+      ];
+    }
+
+    function steerTo(target) {
+      var desired = d3_ai_boidSubtract(target, position),
+          d = d3_ai_boidMagnitude(desired);
+
+      if (d > 0) {
+        d3_ai_boidNormalize(desired);
+
+        // Two options for desired vector magnitude (1 -- based on distance, 2 -- maxspeed)
+        var mul = maxSpeed * (d < 100 ? d / 100 : 1);
+        desired[0] *= mul;
+        desired[1] *= mul;
+
+        // Steering = Desired minus Velocity
+        var steer = d3_ai_boidSubtract(desired, velocity);
+        d3_ai_boidLimit(steer, maxForce)  // Limit to maximum steering force
+      } else {
+        steer = [0, 0];
+      }
+      return steer;
+    }
+
+    boid.position = function(x) {
+      if (!arguments.length) return position;
+      position = x;
+      return boid;
+    }
+
+    boid.velocity = function(x) {
+      if (!arguments.length) return velocity;
+      velocity = x;
+      return boid;
+    }
+
+    boid.gravityCenter = function(x) {
+      if (!arguments.length) return gravityCenter;
+      gravityCenter = x;
+      return boid;
+    }
+
+    boid.neighborRadius = function(x) {
+      if (!arguments.length) return neighborRadius;
+      neighborRadius = x;
+      return boid;
+    }
+
+    boid.maxForce = function(x) {
+      if (!arguments.length) return maxForce;
+      maxForce = x;
+      return boid;
+    }
+
+    boid.maxSpeed = function(x) {
+      if (!arguments.length) return maxSpeed;
+      maxSpeed = x;
+      return boid;
+    }
+
+    boid.separationWeight = function(x) {
+      if (!arguments.length) return separationWeight;
+      separationWeight = x;
+      return boid;
+    }
+
+    boid.alignmentWeight = function(x) {
+      if (!arguments.length) return alignmentWeight;
+      alignmentWeight = x;
+      return boid;
+    }
+
+    boid.cohesionWeight = function(x) {
+      if (!arguments.length) return cohesionWeight;
+      cohesionWeight = x;
+      return boid;
+    }
+
+    boid.desiredSeparation = function(x) {
+      if (!arguments.length) return desiredSeparation;
+      desiredSeparation = x;
+      return boid;
+    }
+
+    return boid;
+  }
+
+  function d3_ai_boidNormalize(a) {
+    var m = d3_ai_boidMagnitude(a);
+    if (m > 0) {
+      a[0] /= m;
+      a[1] /= m;
+    }
+    return a;
+  }
+
+  function d3_ai_boidWrap(position) {
+    if (position[0] > w) position[0] = 0;
+    else if (position[0] < 0) position[0] = w;
+    if (position[1] > h) position[1] = 0;
+    else if (position[1] < 0) position[1] = h;
+  }
+
+  function d3_ai_boidGravity(center, position, neighborRadius) {
+    if (center[0] != null) {
+      var m = d3_ai_boidSubtract(center.slice(), position),
+          d = d3_ai_boidMagnitude(m) - 10;
+      if (d > 0 && d < neighborRadius * 5) {
+        d3_ai_boidNormalize(m);
+        m[0] /= d;
+        m[1] /= d;
+        return m;
+      }
+    }
+    return [0, 0];
+  }
+
+  function d3_ai_boidDistance(a, b) {
+    var dx = a[0] - b[0],
+        dy = a[1] - b[1];
+    if (dx > w / 2) dx = w - dx;
+    if (dy > h / 2) dy = h - dy;
+    return Math.sqrt(dx * dx + dy * dy);
+  }
+
+  function d3_ai_boidSubtract(a, b) {
+    a[0] -= b[0];
+    a[1] -= b[1];
+    return a;
+  }
+
+  function d3_ai_boidMagnitude(v) {
+    return Math.sqrt(v[0] * v[0] + v[1] * v[1]);
+  }
+
+  function d3_ai_boidLimit(a, max) {
+    if (d3_ai_boidMagnitude(a) > max) {
+      d3_ai_boidNormalize(a);
+      a[0] *= max;
+      a[1] *= max;
+    }
+    return a;
+  }
+
+  return boid;
+})();
diff --git a/static/vendor/d3-2.8.1/examples/voroboids/voroboids.css b/static/vendor/d3-2.8.1/examples/voroboids/voroboids.css
new file mode 100755 (executable)
index 0000000..7a6ae38
--- /dev/null
@@ -0,0 +1,15 @@
+svg {
+  display: block;
+  border: solid 1px #666;
+  overflow: hidden;
+}
+
+path {
+  stroke: #000;
+  stroke-width: .5px;
+}
+
+circle {
+  fill: none;
+  stroke: #fff;
+}
diff --git a/static/vendor/d3-2.8.1/examples/voroboids/voroboids.html b/static/vendor/d3-2.8.1/examples/voroboids/voroboids.html
new file mode 100755 (executable)
index 0000000..a92216f
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Voroboids</title>
+    <link type="text/css" rel="stylesheet" href="voroboids.css"/>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+  </head>
+  <body>
+    <div id="vis"></div>
+    <script type="text/javascript" src="boid.js"></script>
+    <script type="text/javascript" src="voroboids.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/voroboids/voroboids.js b/static/vendor/d3-2.8.1/examples/voroboids/voroboids.js
new file mode 100755 (executable)
index 0000000..2d9801d
--- /dev/null
@@ -0,0 +1,65 @@
+var w = 960,
+    h = 500,
+    mouse = [null, null],
+    fill = d3.scale.linear().domain([0, 1e4]).range(["brown", "steelblue"]);
+
+// Initialise boids.
+var boids = d3.range(100).map(function() {
+  return boid()
+      .position([Math.random() * w, Math.random() * h])
+      .velocity([Math.random() * 2 - 1, Math.random() * 2 - 1])
+      .gravityCenter(mouse);
+});
+
+// Compute initial positions.
+var vertices = boids.map(function(boid) {
+  return boid(boids);
+});
+
+d3.select(window).on("blur", nullGravity);
+
+var svg = d3.select("#vis")
+  .append("svg")
+    .attr("width", w)
+    .attr("height", h)
+    .attr("class", "PiYG")
+    .on("mousemove", function() {
+      var m = d3.mouse(this);
+      mouse[0] = m[0];
+      mouse[1] = m[1];
+    })
+    .on("mouseout", nullGravity);
+
+svg.selectAll("path")
+    .data(d3.geom.voronoi(vertices))
+  .enter().append("path")
+    .attr("class", function(d, i) { return i ? "q" + (i % 9) + "-9" : null; })
+    .attr("d", function(d) { return "M" + d.join("L") + "Z"; });
+
+svg.selectAll("circle")
+    .data(vertices)
+  .enter().append("circle")
+    .attr("transform", function(d) { return "translate(" + d + ")"; })
+    .attr("r", 2);
+
+d3.timer(function() {
+  // Update boid positions.
+  boids.forEach(function(boid, i) {
+    vertices[i] = boid(boids);
+  });
+
+  // Update circle positions.
+  svg.selectAll("circle")
+      .data(vertices)
+      .attr("transform", function(d) { return "translate(" + d + ")"; });
+
+  // Update voronoi diagram.
+  svg.selectAll("path")
+      .data(d3.geom.voronoi(vertices))
+      .attr("d", function(d) { return "M" + d.join("L") + "Z"; })
+      .style("fill", function(d) { return fill((d3.geom.polygon(d).area())); });
+});
+
+function nullGravity() {
+  mouse[0] = mouse[1] = null;
+}
diff --git a/static/vendor/d3-2.8.1/examples/voronoi/voronoi.css b/static/vendor/d3-2.8.1/examples/voronoi/voronoi.css
new file mode 100755 (executable)
index 0000000..c85fa02
--- /dev/null
@@ -0,0 +1,16 @@
+svg {
+  border: solid 1px #666;
+  overflow: hidden;
+}
+
+path {
+  fill: yellow;
+  stroke: #000;
+  stroke-width: .5px;
+}
+
+circle {
+  fill: #ccc;
+  stroke: #000;
+  pointer-events: none;
+}
diff --git a/static/vendor/d3-2.8.1/examples/voronoi/voronoi.html b/static/vendor/d3-2.8.1/examples/voronoi/voronoi.html
new file mode 100755 (executable)
index 0000000..9903bba
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <title>Voronoi Tesselation</title>
+    <script type="text/javascript" src="../../d3.v2.js"></script>
+    <link type="text/css" rel="stylesheet" href="../../lib/colorbrewer/colorbrewer.css"/>
+    <link type="text/css" rel="stylesheet" href="voronoi.css"/>
+  </head>
+  <body>
+    <div id="chart"></div>
+    <script type="text/javascript" src="voronoi.js"></script>
+  </body>
+</html>
diff --git a/static/vendor/d3-2.8.1/examples/voronoi/voronoi.js b/static/vendor/d3-2.8.1/examples/voronoi/voronoi.js
new file mode 100755 (executable)
index 0000000..76e5d71
--- /dev/null
@@ -0,0 +1,34 @@
+var w = 960,
+    h = 500;
+
+var vertices = d3.range(100).map(function(d) {
+  return [Math.random() * w, Math.random() * h];
+});
+
+var svg = d3.select("#chart")
+  .append("svg")
+    .attr("width", w)
+    .attr("height", h)
+    .attr("class", "PiYG")
+    .on("mousemove", update);
+
+svg.selectAll("path")
+    .data(d3.geom.voronoi(vertices))
+  .enter().append("path")
+    .attr("class", function(d, i) { return i ? "q" + (i % 9) + "-9" : null; })
+    .attr("d", function(d) { return "M" + d.join("L") + "Z"; });
+
+svg.selectAll("circle")
+    .data(vertices.slice(1))
+  .enter().append("circle")
+    .attr("transform", function(d) { return "translate(" + d + ")"; })
+    .attr("r", 2);
+
+function update() {
+  vertices[0] = d3.mouse(this);
+  svg.selectAll("path")
+      .data(d3.geom.voronoi(vertices)
+      .map(function(d) { return "M" + d.join("L") + "Z"; }))
+      .filter(function(d) { return this.getAttribute("d") != d; })
+      .attr("d", function(d) { return d; });
+}
diff --git a/static/vendor/d3-2.8.1/examples/zoom-pan/zoom-pan-transform.html b/static/vendor/d3-2.8.1/examples/zoom-pan/zoom-pan-transform.html
new file mode 100755 (executable)
index 0000000..9651358
--- /dev/null
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Zoom + Pan</title>
+<script src="../../d3.v2.js"></script>
+<style>
+
+svg {
+  font: 10px sans-serif;
+  shape-rendering: crispEdges;
+}
+
+rect {
+  fill: #ddd;
+}
+
+.axis path, .axis line {
+  fill: none;
+  stroke: #fff;
+}
+
+</style>
+<body>
+<script>
+
+var margin = {top: 0, right: 0, bottom: 12, left: 24},
+    width = 960 - margin.left - margin.right,
+    height = 500 - margin.top - margin.bottom;
+
+var x = d3.scale.linear()
+    .domain([-width / 2, width / 2])
+    .range([0, width]);
+
+var y = d3.scale.linear()
+    .domain([-height / 2, height / 2])
+    .range([height, 0]);
+
+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 + ")")
+    .call(d3.behavior.zoom().scaleExtent([1, 8]).on("zoom", zoom))
+  .append("g");
+
+svg.append("rect")
+    .attr("width", width)
+    .attr("height", height);
+
+svg.append("g")
+    .attr("class", "x axis")
+    .attr("transform", "translate(0," + height + ")")
+    .call(d3.svg.axis().scale(x).tickSize(-height).orient("bottom"));
+
+svg.append("g")
+    .attr("class", "y axis")
+    .call(d3.svg.axis().scale(y).ticks(5).tickSize(-width).orient("left"));
+
+function zoom() {
+  svg.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
+}
+
+</script>
diff --git a/static/vendor/d3-2.8.1/examples/zoom-pan/zoom-pan.html b/static/vendor/d3-2.8.1/examples/zoom-pan/zoom-pan.html
new file mode 100755 (executable)
index 0000000..4acea66
--- /dev/null
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Zoom + Pan</title>
+<script src="../../d3.v2.js"></script>
+<style>
+
+svg {
+  font: 10px sans-serif;
+  shape-rendering: crispEdges;
+}
+
+rect {
+  fill: #ddd;
+}
+
+.axis path, .axis line {
+  fill: none;
+  stroke: #fff;
+}
+
+</style>
+<body>
+<script>
+
+var margin = {top: 0, right: 0, bottom: 12, left: 24},
+    width = 960 - margin.left - margin.right,
+    height = 500 - margin.top - margin.bottom;
+
+var x = d3.scale.linear()
+    .domain([-width / 2, width / 2])
+    .range([0, width]);
+
+var y = d3.scale.linear()
+    .domain([-height / 2, height / 2])
+    .range([height, 0]);
+
+var xAxis = d3.svg.axis()
+    .scale(x)
+    .orient("bottom")
+    .tickSize(-height);
+
+var yAxis = d3.svg.axis()
+    .scale(y)
+    .orient("left")
+    .ticks(5)
+    .tickSize(-width);
+
+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 + ")")
+    .call(d3.behavior.zoom().x(x).y(y).scaleExtent([1, 8]).on("zoom", zoom));
+
+svg.append("rect")
+    .attr("width", width)
+    .attr("height", height);
+
+svg.append("g")
+    .attr("class", "x axis")
+    .attr("transform", "translate(0," + height + ")")
+    .call(xAxis);
+
+svg.append("g")
+    .attr("class", "y axis")
+    .call(yAxis);
+
+function zoom() {
+  svg.select(".x.axis").call(xAxis);
+  svg.select(".y.axis").call(yAxis);
+}
+
+</script>
diff --git a/static/vendor/d3-2.8.1/examples/zoom/sp500.csv b/static/vendor/d3-2.8.1/examples/zoom/sp500.csv
new file mode 100755 (executable)
index 0000000..94f6312
--- /dev/null
@@ -0,0 +1,124 @@
+date,price
+Jan 2000,1394.46
+Feb 2000,1366.42
+Mar 2000,1498.58
+Apr 2000,1452.43
+May 2000,1420.6
+Jun 2000,1454.6
+Jul 2000,1430.83
+Aug 2000,1517.68
+Sep 2000,1436.51
+Oct 2000,1429.4
+Nov 2000,1314.95
+Dec 2000,1320.28
+Jan 2001,1366.01
+Feb 2001,1239.94
+Mar 2001,1160.33
+Apr 2001,1249.46
+May 2001,1255.82
+Jun 2001,1224.38
+Jul 2001,1211.23
+Aug 2001,1133.58
+Sep 2001,1040.94
+Oct 2001,1059.78
+Nov 2001,1139.45
+Dec 2001,1148.08
+Jan 2002,1130.2
+Feb 2002,1106.73
+Mar 2002,1147.39
+Apr 2002,1076.92
+May 2002,1067.14
+Jun 2002,989.82
+Jul 2002,911.62
+Aug 2002,916.07
+Sep 2002,815.28
+Oct 2002,885.76
+Nov 2002,936.31
+Dec 2002,879.82
+Jan 2003,855.7
+Feb 2003,841.15
+Mar 2003,848.18
+Apr 2003,916.92
+May 2003,963.59
+Jun 2003,974.5
+Jul 2003,990.31
+Aug 2003,1008.01
+Sep 2003,995.97
+Oct 2003,1050.71
+Nov 2003,1058.2
+Dec 2003,1111.92
+Jan 2004,1131.13
+Feb 2004,1144.94
+Mar 2004,1126.21
+Apr 2004,1107.3
+May 2004,1120.68
+Jun 2004,1140.84
+Jul 2004,1101.72
+Aug 2004,1104.24
+Sep 2004,1114.58
+Oct 2004,1130.2
+Nov 2004,1173.82
+Dec 2004,1211.92
+Jan 2005,1181.27
+Feb 2005,1203.6
+Mar 2005,1180.59
+Apr 2005,1156.85
+May 2005,1191.5
+Jun 2005,1191.33
+Jul 2005,1234.18
+Aug 2005,1220.33
+Sep 2005,1228.81
+Oct 2005,1207.01
+Nov 2005,1249.48
+Dec 2005,1248.29
+Jan 2006,1280.08
+Feb 2006,1280.66
+Mar 2006,1294.87
+Apr 2006,1310.61
+May 2006,1270.09
+Jun 2006,1270.2
+Jul 2006,1276.66
+Aug 2006,1303.82
+Sep 2006,1335.85
+Oct 2006,1377.94
+Nov 2006,1400.63
+Dec 2006,1418.3
+Jan 2007,1438.24
+Feb 2007,1406.82
+Mar 2007,1420.86
+Apr 2007,1482.37
+May 2007,1530.62
+Jun 2007,1503.35
+Jul 2007,1455.27
+Aug 2007,1473.99
+Sep 2007,1526.75
+Oct 2007,1549.38
+Nov 2007,1481.14
+Dec 2007,1468.36
+Jan 2008,1378.55
+Feb 2008,1330.63
+Mar 2008,1322.7
+Apr 2008,1385.59
+May 2008,1400.38
+Jun 2008,1280
+Jul 2008,1267.38
+Aug 2008,1282.83
+Sep 2008,1166.36
+Oct 2008,968.75
+Nov 2008,896.24
+Dec 2008,903.25
+Jan 2009,825.88
+Feb 2009,735.09
+Mar 2009,797.87
+Apr 2009,872.81
+May 2009,919.14
+Jun 2009,919.32
+Jul 2009,987.48
+Aug 2009,1020.62
+Sep 2009,1057.08
+Oct 2009,1036.19
+Nov 2009,1095.63
+Dec 2009,1115.1
+Jan 2010,1073.87
+Feb 2010,1104.49
+Mar 2010,1140.45
diff --git a/static/vendor/d3-2.8.1/examples/zoom/zoom.html b/static/vendor/d3-2.8.1/examples/zoom/zoom.html
new file mode 100755 (executable)
index 0000000..9dee55b
--- /dev/null
@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<style>
+
+svg {
+  font: 10px sans-serif;
+}
+
+path {
+  fill: steelblue;
+}
+
+.axis path, .axis line {
+  fill: none;
+  stroke: #000;
+  shape-rendering: crispEdges;
+}
+
+.brush .extent {
+  stroke: #fff;
+  fill-opacity: .125;
+  shape-rendering: crispEdges;
+}
+
+
+</style>
+<body>
+<script src="../../d3.v2.js"></script>
+<script>
+
+var margin = {top: 10, right: 10, bottom: 100, left: 40},
+    margin2 = {top: 430, right: 10, bottom: 20, left: 40},
+    width = 960 - margin.left - margin.right,
+    height = 500 - margin.top - margin.bottom,
+    height2 = 500 - margin2.top - margin2.bottom;
+
+var formatDate = d3.time.format("%b %Y");
+
+var x = d3.time.scale().range([0, width]),
+    x2 = d3.time.scale().range([0, width]),
+    y = d3.scale.linear().range([height, 0]),
+    y2 = d3.scale.linear().range([height2, 0]);
+
+var xAxis = d3.svg.axis().scale(x).orient("bottom"),
+    xAxis2 = d3.svg.axis().scale(x2).orient("bottom"),
+    yAxis = d3.svg.axis().scale(y).orient("left");
+
+var brush = d3.svg.brush()
+    .x(x2)
+    .on("brush", brush);
+
+var area = d3.svg.area()
+    .interpolate("monotone")
+    .x(function(d) { return x(d.date); })
+    .y0(height)
+    .y1(function(d) { return y(d.price); });
+
+var area2 = d3.svg.area()
+    .interpolate("monotone")
+    .x(function(d) { return x2(d.date); })
+    .y0(height2)
+    .y1(function(d) { return y2(d.price); });
+
+var svg = d3.select("body").append("svg")
+    .attr("width", width + margin.left + margin.right)
+    .attr("height", height + margin.top + margin.bottom);
+
+svg.append("defs").append("clipPath")
+    .attr("id", "clip")
+  .append("rect")
+    .attr("width", width)
+    .attr("height", height);
+
+var focus = svg.append("g")
+    .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
+
+var context = svg.append("g")
+    .attr("transform", "translate(" + margin2.left + "," + margin2.top + ")");
+
+d3.csv("sp500.csv", function(data) {
+
+  data.forEach(function(d) {
+    d.date = formatDate.parse(d.date);
+    d.price = +d.price;
+  });
+
+  x.domain(d3.extent(data.map(function(d) { return d.date; })));
+  y.domain([0, d3.max(data.map(function(d) { return d.price; }))]);
+  x2.domain(x.domain());
+  y2.domain(y.domain());
+
+  focus.append("path")
+      .data([data])
+      .attr("clip-path", "url(#clip)")
+      .attr("d", area);
+
+  focus.append("g")
+      .attr("class", "x axis")
+      .attr("transform", "translate(0," + height + ")")
+      .call(xAxis);
+
+  focus.append("g")
+      .attr("class", "y axis")
+      .call(yAxis);
+
+  context.append("path")
+      .data([data])
+      .attr("d", area2);
+
+  context.append("g")
+      .attr("class", "x axis")
+      .attr("transform", "translate(0," + height2 + ")")
+      .call(xAxis2);
+
+  context.append("g")
+      .attr("class", "x brush")
+      .call(brush)
+    .selectAll("rect")
+      .attr("y", -6)
+      .attr("height", height2 + 7);
+});
+
+function brush() {
+  x.domain(brush.empty() ? x2.domain() : brush.extent());
+  focus.select("path").attr("d", area);
+  focus.select(".x.axis").call(xAxis);
+}
+
+</script>
diff --git a/static/vendor/d3-2.8.1/index.js b/static/vendor/d3-2.8.1/index.js
new file mode 100755 (executable)
index 0000000..fef4b53
--- /dev/null
@@ -0,0 +1,21 @@
+var self = this,
+    globals = ["document", "window", "navigator", "CSSStyleDeclaration", "d3"],
+    globalValues = {};
+
+globals.forEach(function(global) {
+  if (global in self) globalValues[global] = self[global];
+});
+
+document = require("jsdom").jsdom("<html><head></head><body></body></html>");
+window = document.createWindow();
+navigator = window.navigator;
+CSSStyleDeclaration = window.CSSStyleDeclaration;
+
+require("./d3.v2");
+
+module.exports = d3;
+
+globals.forEach(function(global) {
+  if (global in globalValues) self[global] = globalValues[global];
+  else delete self[global];
+});
diff --git a/static/vendor/d3-2.8.1/lib/colorbrewer/LICENSE b/static/vendor/d3-2.8.1/lib/colorbrewer/LICENSE
new file mode 100755 (executable)
index 0000000..2ac775d
--- /dev/null
@@ -0,0 +1,38 @@
+Apache-Style Software License for ColorBrewer software and ColorBrewer Color
+Schemes
+
+Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State
+University.
+
+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.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions as source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. The end-user documentation included with the redistribution, if any, must
+include the following acknowledgment: "This product includes color
+specifications and designs developed by Cynthia Brewer
+(http://colorbrewer.org/)." Alternately, this acknowledgment may appear in the
+software itself, if and wherever such third-party acknowledgments normally
+appear.
+
+4. The name "ColorBrewer" must not be used to endorse or promote products
+derived from this software without prior written permission. For written
+permission, please contact Cynthia Brewer at cbrewer@psu.edu.
+
+5. Products derived from this software may not be called "ColorBrewer", nor
+may "ColorBrewer" appear in their name, without prior written permission of
+Cynthia Brewer.
diff --git a/static/vendor/d3-2.8.1/lib/colorbrewer/colorbrewer.css b/static/vendor/d3-2.8.1/lib/colorbrewer/colorbrewer.css
new file mode 100755 (executable)
index 0000000..de8f8ba
--- /dev/null
@@ -0,0 +1,1327 @@
+/*
+ * This product includes color specifications and designs developed by Cynthia
+ * Brewer (http://colorbrewer.org/).
+ */
+.YlGn .q0-3{fill:rgb(247,252,185)}
+.YlGn .q1-3{fill:rgb(173,221,142)}
+.YlGn .q2-3{fill:rgb(49,163,84)}
+.YlGn .q0-4{fill:rgb(255,255,204)}
+.YlGn .q1-4{fill:rgb(194,230,153)}
+.YlGn .q2-4{fill:rgb(120,198,121)}
+.YlGn .q3-4{fill:rgb(35,132,67)}
+.YlGn .q0-5{fill:rgb(255,255,204)}
+.YlGn .q1-5{fill:rgb(194,230,153)}
+.YlGn .q2-5{fill:rgb(120,198,121)}
+.YlGn .q3-5{fill:rgb(49,163,84)}
+.YlGn .q4-5{fill:rgb(0,104,55)}
+.YlGn .q0-6{fill:rgb(255,255,204)}
+.YlGn .q1-6{fill:rgb(217,240,163)}
+.YlGn .q2-6{fill:rgb(173,221,142)}
+.YlGn .q3-6{fill:rgb(120,198,121)}
+.YlGn .q4-6{fill:rgb(49,163,84)}
+.YlGn .q5-6{fill:rgb(0,104,55)}
+.YlGn .q0-7{fill:rgb(255,255,204)}
+.YlGn .q1-7{fill:rgb(217,240,163)}
+.YlGn .q2-7{fill:rgb(173,221,142)}
+.YlGn .q3-7{fill:rgb(120,198,121)}
+.YlGn .q4-7{fill:rgb(65,171,93)}
+.YlGn .q5-7{fill:rgb(35,132,67)}
+.YlGn .q6-7{fill:rgb(0,90,50)}
+.YlGn .q0-8{fill:rgb(255,255,229)}
+.YlGn .q1-8{fill:rgb(247,252,185)}
+.YlGn .q2-8{fill:rgb(217,240,163)}
+.YlGn .q3-8{fill:rgb(173,221,142)}
+.YlGn .q4-8{fill:rgb(120,198,121)}
+.YlGn .q5-8{fill:rgb(65,171,93)}
+.YlGn .q6-8{fill:rgb(35,132,67)}
+.YlGn .q7-8{fill:rgb(0,90,50)}
+.YlGn .q0-9{fill:rgb(255,255,229)}
+.YlGn .q1-9{fill:rgb(247,252,185)}
+.YlGn .q2-9{fill:rgb(217,240,163)}
+.YlGn .q3-9{fill:rgb(173,221,142)}
+.YlGn .q4-9{fill:rgb(120,198,121)}
+.YlGn .q5-9{fill:rgb(65,171,93)}
+.YlGn .q6-9{fill:rgb(35,132,67)}
+.YlGn .q7-9{fill:rgb(0,104,55)}
+.YlGn .q8-9{fill:rgb(0,69,41)}
+.YlGnBu .q0-3{fill:rgb(237,248,177)}
+.YlGnBu .q1-3{fill:rgb(127,205,187)}
+.YlGnBu .q2-3{fill:rgb(44,127,184)}
+.YlGnBu .q0-4{fill:rgb(255,255,204)}
+.YlGnBu .q1-4{fill:rgb(161,218,180)}
+.YlGnBu .q2-4{fill:rgb(65,182,196)}
+.YlGnBu .q3-4{fill:rgb(34,94,168)}
+.YlGnBu .q0-5{fill:rgb(255,255,204)}
+.YlGnBu .q1-5{fill:rgb(161,218,180)}
+.YlGnBu .q2-5{fill:rgb(65,182,196)}
+.YlGnBu .q3-5{fill:rgb(44,127,184)}
+.YlGnBu .q4-5{fill:rgb(37,52,148)}
+.YlGnBu .q0-6{fill:rgb(255,255,204)}
+.YlGnBu .q1-6{fill:rgb(199,233,180)}
+.YlGnBu .q2-6{fill:rgb(127,205,187)}
+.YlGnBu .q3-6{fill:rgb(65,182,196)}
+.YlGnBu .q4-6{fill:rgb(44,127,184)}
+.YlGnBu .q5-6{fill:rgb(37,52,148)}
+.YlGnBu .q0-7{fill:rgb(255,255,204)}
+.YlGnBu .q1-7{fill:rgb(199,233,180)}
+.YlGnBu .q2-7{fill:rgb(127,205,187)}
+.YlGnBu .q3-7{fill:rgb(65,182,196)}
+.YlGnBu .q4-7{fill:rgb(29,145,192)}
+.YlGnBu .q5-7{fill:rgb(34,94,168)}
+.YlGnBu .q6-7{fill:rgb(12,44,132)}
+.YlGnBu .q0-8{fill:rgb(255,255,217)}
+.YlGnBu .q1-8{fill:rgb(237,248,177)}
+.YlGnBu .q2-8{fill:rgb(199,233,180)}
+.YlGnBu .q3-8{fill:rgb(127,205,187)}
+.YlGnBu .q4-8{fill:rgb(65,182,196)}
+.YlGnBu .q5-8{fill:rgb(29,145,192)}
+.YlGnBu .q6-8{fill:rgb(34,94,168)}
+.YlGnBu .q7-8{fill:rgb(12,44,132)}
+.YlGnBu .q0-9{fill:rgb(255,255,217)}
+.YlGnBu .q1-9{fill:rgb(237,248,177)}
+.YlGnBu .q2-9{fill:rgb(199,233,180)}
+.YlGnBu .q3-9{fill:rgb(127,205,187)}
+.YlGnBu .q4-9{fill:rgb(65,182,196)}
+.YlGnBu .q5-9{fill:rgb(29,145,192)}
+.YlGnBu .q6-9{fill:rgb(34,94,168)}
+.YlGnBu .q7-9{fill:rgb(37,52,148)}
+.YlGnBu .q8-9{fill:rgb(8,29,88)}
+.GnBu .q0-3{fill:rgb(224,243,219)}
+.GnBu .q1-3{fill:rgb(168,221,181)}
+.GnBu .q2-3{fill:rgb(67,162,202)}
+.GnBu .q0-4{fill:rgb(240,249,232)}
+.GnBu .q1-4{fill:rgb(186,228,188)}
+.GnBu .q2-4{fill:rgb(123,204,196)}
+.GnBu .q3-4{fill:rgb(43,140,190)}
+.GnBu .q0-5{fill:rgb(240,249,232)}
+.GnBu .q1-5{fill:rgb(186,228,188)}
+.GnBu .q2-5{fill:rgb(123,204,196)}
+.GnBu .q3-5{fill:rgb(67,162,202)}
+.GnBu .q4-5{fill:rgb(8,104,172)}
+.GnBu .q0-6{fill:rgb(240,249,232)}
+.GnBu .q1-6{fill:rgb(204,235,197)}
+.GnBu .q2-6{fill:rgb(168,221,181)}
+.GnBu .q3-6{fill:rgb(123,204,196)}
+.GnBu .q4-6{fill:rgb(67,162,202)}
+.GnBu .q5-6{fill:rgb(8,104,172)}
+.GnBu .q0-7{fill:rgb(240,249,232)}
+.GnBu .q1-7{fill:rgb(204,235,197)}
+.GnBu .q2-7{fill:rgb(168,221,181)}
+.GnBu .q3-7{fill:rgb(123,204,196)}
+.GnBu .q4-7{fill:rgb(78,179,211)}
+.GnBu .q5-7{fill:rgb(43,140,190)}
+.GnBu .q6-7{fill:rgb(8,88,158)}
+.GnBu .q0-8{fill:rgb(247,252,240)}
+.GnBu .q1-8{fill:rgb(224,243,219)}
+.GnBu .q2-8{fill:rgb(204,235,197)}
+.GnBu .q3-8{fill:rgb(168,221,181)}
+.GnBu .q4-8{fill:rgb(123,204,196)}
+.GnBu .q5-8{fill:rgb(78,179,211)}
+.GnBu .q6-8{fill:rgb(43,140,190)}
+.GnBu .q7-8{fill:rgb(8,88,158)}
+.GnBu .q0-9{fill:rgb(247,252,240)}
+.GnBu .q1-9{fill:rgb(224,243,219)}
+.GnBu .q2-9{fill:rgb(204,235,197)}
+.GnBu .q3-9{fill:rgb(168,221,181)}
+.GnBu .q4-9{fill:rgb(123,204,196)}
+.GnBu .q5-9{fill:rgb(78,179,211)}
+.GnBu .q6-9{fill:rgb(43,140,190)}
+.GnBu .q7-9{fill:rgb(8,104,172)}
+.GnBu .q8-9{fill:rgb(8,64,129)}
+.BuGn .q0-3{fill:rgb(229,245,249)}
+.BuGn .q1-3{fill:rgb(153,216,201)}
+.BuGn .q2-3{fill:rgb(44,162,95)}
+.BuGn .q0-4{fill:rgb(237,248,251)}
+.BuGn .q1-4{fill:rgb(178,226,226)}
+.BuGn .q2-4{fill:rgb(102,194,164)}
+.BuGn .q3-4{fill:rgb(35,139,69)}
+.BuGn .q0-5{fill:rgb(237,248,251)}
+.BuGn .q1-5{fill:rgb(178,226,226)}
+.BuGn .q2-5{fill:rgb(102,194,164)}
+.BuGn .q3-5{fill:rgb(44,162,95)}
+.BuGn .q4-5{fill:rgb(0,109,44)}
+.BuGn .q0-6{fill:rgb(237,248,251)}
+.BuGn .q1-6{fill:rgb(204,236,230)}
+.BuGn .q2-6{fill:rgb(153,216,201)}
+.BuGn .q3-6{fill:rgb(102,194,164)}
+.BuGn .q4-6{fill:rgb(44,162,95)}
+.BuGn .q5-6{fill:rgb(0,109,44)}
+.BuGn .q0-7{fill:rgb(237,248,251)}
+.BuGn .q1-7{fill:rgb(204,236,230)}
+.BuGn .q2-7{fill:rgb(153,216,201)}
+.BuGn .q3-7{fill:rgb(102,194,164)}
+.BuGn .q4-7{fill:rgb(65,174,118)}
+.BuGn .q5-7{fill:rgb(35,139,69)}
+.BuGn .q6-7{fill:rgb(0,88,36)}
+.BuGn .q0-8{fill:rgb(247,252,253)}
+.BuGn .q1-8{fill:rgb(229,245,249)}
+.BuGn .q2-8{fill:rgb(204,236,230)}
+.BuGn .q3-8{fill:rgb(153,216,201)}
+.BuGn .q4-8{fill:rgb(102,194,164)}
+.BuGn .q5-8{fill:rgb(65,174,118)}
+.BuGn .q6-8{fill:rgb(35,139,69)}
+.BuGn .q7-8{fill:rgb(0,88,36)}
+.BuGn .q0-9{fill:rgb(247,252,253)}
+.BuGn .q1-9{fill:rgb(229,245,249)}
+.BuGn .q2-9{fill:rgb(204,236,230)}
+.BuGn .q3-9{fill:rgb(153,216,201)}
+.BuGn .q4-9{fill:rgb(102,194,164)}
+.BuGn .q5-9{fill:rgb(65,174,118)}
+.BuGn .q6-9{fill:rgb(35,139,69)}
+.BuGn .q7-9{fill:rgb(0,109,44)}
+.BuGn .q8-9{fill:rgb(0,68,27)}
+.PuBuGn .q0-3{fill:rgb(236,226,240)}
+.PuBuGn .q1-3{fill:rgb(166,189,219)}
+.PuBuGn .q2-3{fill:rgb(28,144,153)}
+.PuBuGn .q0-4{fill:rgb(246,239,247)}
+.PuBuGn .q1-4{fill:rgb(189,201,225)}
+.PuBuGn .q2-4{fill:rgb(103,169,207)}
+.PuBuGn .q3-4{fill:rgb(2,129,138)}
+.PuBuGn .q0-5{fill:rgb(246,239,247)}
+.PuBuGn .q1-5{fill:rgb(189,201,225)}
+.PuBuGn .q2-5{fill:rgb(103,169,207)}
+.PuBuGn .q3-5{fill:rgb(28,144,153)}
+.PuBuGn .q4-5{fill:rgb(1,108,89)}
+.PuBuGn .q0-6{fill:rgb(246,239,247)}
+.PuBuGn .q1-6{fill:rgb(208,209,230)}
+.PuBuGn .q2-6{fill:rgb(166,189,219)}
+.PuBuGn .q3-6{fill:rgb(103,169,207)}
+.PuBuGn .q4-6{fill:rgb(28,144,153)}
+.PuBuGn .q5-6{fill:rgb(1,108,89)}
+.PuBuGn .q0-7{fill:rgb(246,239,247)}
+.PuBuGn .q1-7{fill:rgb(208,209,230)}
+.PuBuGn .q2-7{fill:rgb(166,189,219)}
+.PuBuGn .q3-7{fill:rgb(103,169,207)}
+.PuBuGn .q4-7{fill:rgb(54,144,192)}
+.PuBuGn .q5-7{fill:rgb(2,129,138)}
+.PuBuGn .q6-7{fill:rgb(1,100,80)}
+.PuBuGn .q0-8{fill:rgb(255,247,251)}
+.PuBuGn .q1-8{fill:rgb(236,226,240)}
+.PuBuGn .q2-8{fill:rgb(208,209,230)}
+.PuBuGn .q3-8{fill:rgb(166,189,219)}
+.PuBuGn .q4-8{fill:rgb(103,169,207)}
+.PuBuGn .q5-8{fill:rgb(54,144,192)}
+.PuBuGn .q6-8{fill:rgb(2,129,138)}
+.PuBuGn .q7-8{fill:rgb(1,100,80)}
+.PuBuGn .q0-9{fill:rgb(255,247,251)}
+.PuBuGn .q1-9{fill:rgb(236,226,240)}
+.PuBuGn .q2-9{fill:rgb(208,209,230)}
+.PuBuGn .q3-9{fill:rgb(166,189,219)}
+.PuBuGn .q4-9{fill:rgb(103,169,207)}
+.PuBuGn .q5-9{fill:rgb(54,144,192)}
+.PuBuGn .q6-9{fill:rgb(2,129,138)}
+.PuBuGn .q7-9{fill:rgb(1,108,89)}
+.PuBuGn .q8-9{fill:rgb(1,70,54)}
+.PuBu .q0-3{fill:rgb(236,231,242)}
+.PuBu .q1-3{fill:rgb(166,189,219)}
+.PuBu .q2-3{fill:rgb(43,140,190)}
+.PuBu .q0-4{fill:rgb(241,238,246)}
+.PuBu .q1-4{fill:rgb(189,201,225)}
+.PuBu .q2-4{fill:rgb(116,169,207)}
+.PuBu .q3-4{fill:rgb(5,112,176)}
+.PuBu .q0-5{fill:rgb(241,238,246)}
+.PuBu .q1-5{fill:rgb(189,201,225)}
+.PuBu .q2-5{fill:rgb(116,169,207)}
+.PuBu .q3-5{fill:rgb(43,140,190)}
+.PuBu .q4-5{fill:rgb(4,90,141)}
+.PuBu .q0-6{fill:rgb(241,238,246)}
+.PuBu .q1-6{fill:rgb(208,209,230)}
+.PuBu .q2-6{fill:rgb(166,189,219)}
+.PuBu .q3-6{fill:rgb(116,169,207)}
+.PuBu .q4-6{fill:rgb(43,140,190)}
+.PuBu .q5-6{fill:rgb(4,90,141)}
+.PuBu .q0-7{fill:rgb(241,238,246)}
+.PuBu .q1-7{fill:rgb(208,209,230)}
+.PuBu .q2-7{fill:rgb(166,189,219)}
+.PuBu .q3-7{fill:rgb(116,169,207)}
+.PuBu .q4-7{fill:rgb(54,144,192)}
+.PuBu .q5-7{fill:rgb(5,112,176)}
+.PuBu .q6-7{fill:rgb(3,78,123)}
+.PuBu .q0-8{fill:rgb(255,247,251)}
+.PuBu .q1-8{fill:rgb(236,231,242)}
+.PuBu .q2-8{fill:rgb(208,209,230)}
+.PuBu .q3-8{fill:rgb(166,189,219)}
+.PuBu .q4-8{fill:rgb(116,169,207)}
+.PuBu .q5-8{fill:rgb(54,144,192)}
+.PuBu .q6-8{fill:rgb(5,112,176)}
+.PuBu .q7-8{fill:rgb(3,78,123)}
+.PuBu .q0-9{fill:rgb(255,247,251)}
+.PuBu .q1-9{fill:rgb(236,231,242)}
+.PuBu .q2-9{fill:rgb(208,209,230)}
+.PuBu .q3-9{fill:rgb(166,189,219)}
+.PuBu .q4-9{fill:rgb(116,169,207)}
+.PuBu .q5-9{fill:rgb(54,144,192)}
+.PuBu .q6-9{fill:rgb(5,112,176)}
+.PuBu .q7-9{fill:rgb(4,90,141)}
+.PuBu .q8-9{fill:rgb(2,56,88)}
+.BuPu .q0-3{fill:rgb(224,236,244)}
+.BuPu .q1-3{fill:rgb(158,188,218)}
+.BuPu .q2-3{fill:rgb(136,86,167)}
+.BuPu .q0-4{fill:rgb(237,248,251)}
+.BuPu .q1-4{fill:rgb(179,205,227)}
+.BuPu .q2-4{fill:rgb(140,150,198)}
+.BuPu .q3-4{fill:rgb(136,65,157)}
+.BuPu .q0-5{fill:rgb(237,248,251)}
+.BuPu .q1-5{fill:rgb(179,205,227)}
+.BuPu .q2-5{fill:rgb(140,150,198)}
+.BuPu .q3-5{fill:rgb(136,86,167)}
+.BuPu .q4-5{fill:rgb(129,15,124)}
+.BuPu .q0-6{fill:rgb(237,248,251)}
+.BuPu .q1-6{fill:rgb(191,211,230)}
+.BuPu .q2-6{fill:rgb(158,188,218)}
+.BuPu .q3-6{fill:rgb(140,150,198)}
+.BuPu .q4-6{fill:rgb(136,86,167)}
+.BuPu .q5-6{fill:rgb(129,15,124)}
+.BuPu .q0-7{fill:rgb(237,248,251)}
+.BuPu .q1-7{fill:rgb(191,211,230)}
+.BuPu .q2-7{fill:rgb(158,188,218)}
+.BuPu .q3-7{fill:rgb(140,150,198)}
+.BuPu .q4-7{fill:rgb(140,107,177)}
+.BuPu .q5-7{fill:rgb(136,65,157)}
+.BuPu .q6-7{fill:rgb(110,1,107)}
+.BuPu .q0-8{fill:rgb(247,252,253)}
+.BuPu .q1-8{fill:rgb(224,236,244)}
+.BuPu .q2-8{fill:rgb(191,211,230)}
+.BuPu .q3-8{fill:rgb(158,188,218)}
+.BuPu .q4-8{fill:rgb(140,150,198)}
+.BuPu .q5-8{fill:rgb(140,107,177)}
+.BuPu .q6-8{fill:rgb(136,65,157)}
+.BuPu .q7-8{fill:rgb(110,1,107)}
+.BuPu .q0-9{fill:rgb(247,252,253)}
+.BuPu .q1-9{fill:rgb(224,236,244)}
+.BuPu .q2-9{fill:rgb(191,211,230)}
+.BuPu .q3-9{fill:rgb(158,188,218)}
+.BuPu .q4-9{fill:rgb(140,150,198)}
+.BuPu .q5-9{fill:rgb(140,107,177)}
+.BuPu .q6-9{fill:rgb(136,65,157)}
+.BuPu .q7-9{fill:rgb(129,15,124)}
+.BuPu .q8-9{fill:rgb(77,0,75)}
+.RdPu .q0-3{fill:rgb(253,224,221)}
+.RdPu .q1-3{fill:rgb(250,159,181)}
+.RdPu .q2-3{fill:rgb(197,27,138)}
+.RdPu .q0-4{fill:rgb(254,235,226)}
+.RdPu .q1-4{fill:rgb(251,180,185)}
+.RdPu .q2-4{fill:rgb(247,104,161)}
+.RdPu .q3-4{fill:rgb(174,1,126)}
+.RdPu .q0-5{fill:rgb(254,235,226)}
+.RdPu .q1-5{fill:rgb(251,180,185)}
+.RdPu .q2-5{fill:rgb(247,104,161)}
+.RdPu .q3-5{fill:rgb(197,27,138)}
+.RdPu .q4-5{fill:rgb(122,1,119)}
+.RdPu .q0-6{fill:rgb(254,235,226)}
+.RdPu .q1-6{fill:rgb(252,197,192)}
+.RdPu .q2-6{fill:rgb(250,159,181)}
+.RdPu .q3-6{fill:rgb(247,104,161)}
+.RdPu .q4-6{fill:rgb(197,27,138)}
+.RdPu .q5-6{fill:rgb(122,1,119)}
+.RdPu .q0-7{fill:rgb(254,235,226)}
+.RdPu .q1-7{fill:rgb(252,197,192)}
+.RdPu .q2-7{fill:rgb(250,159,181)}
+.RdPu .q3-7{fill:rgb(247,104,161)}
+.RdPu .q4-7{fill:rgb(221,52,151)}
+.RdPu .q5-7{fill:rgb(174,1,126)}
+.RdPu .q6-7{fill:rgb(122,1,119)}
+.RdPu .q0-8{fill:rgb(255,247,243)}
+.RdPu .q1-8{fill:rgb(253,224,221)}
+.RdPu .q2-8{fill:rgb(252,197,192)}
+.RdPu .q3-8{fill:rgb(250,159,181)}
+.RdPu .q4-8{fill:rgb(247,104,161)}
+.RdPu .q5-8{fill:rgb(221,52,151)}
+.RdPu .q6-8{fill:rgb(174,1,126)}
+.RdPu .q7-8{fill:rgb(122,1,119)}
+.RdPu .q0-9{fill:rgb(255,247,243)}
+.RdPu .q1-9{fill:rgb(253,224,221)}
+.RdPu .q2-9{fill:rgb(252,197,192)}
+.RdPu .q3-9{fill:rgb(250,159,181)}
+.RdPu .q4-9{fill:rgb(247,104,161)}
+.RdPu .q5-9{fill:rgb(221,52,151)}
+.RdPu .q6-9{fill:rgb(174,1,126)}
+.RdPu .q7-9{fill:rgb(122,1,119)}
+.RdPu .q8-9{fill:rgb(73,0,106)}
+.PuRd .q0-3{fill:rgb(231,225,239)}
+.PuRd .q1-3{fill:rgb(201,148,199)}
+.PuRd .q2-3{fill:rgb(221,28,119)}
+.PuRd .q0-4{fill:rgb(241,238,246)}
+.PuRd .q1-4{fill:rgb(215,181,216)}
+.PuRd .q2-4{fill:rgb(223,101,176)}
+.PuRd .q3-4{fill:rgb(206,18,86)}
+.PuRd .q0-5{fill:rgb(241,238,246)}
+.PuRd .q1-5{fill:rgb(215,181,216)}
+.PuRd .q2-5{fill:rgb(223,101,176)}
+.PuRd .q3-5{fill:rgb(221,28,119)}
+.PuRd .q4-5{fill:rgb(152,0,67)}
+.PuRd .q0-6{fill:rgb(241,238,246)}
+.PuRd .q1-6{fill:rgb(212,185,218)}
+.PuRd .q2-6{fill:rgb(201,148,199)}
+.PuRd .q3-6{fill:rgb(223,101,176)}
+.PuRd .q4-6{fill:rgb(221,28,119)}
+.PuRd .q5-6{fill:rgb(152,0,67)}
+.PuRd .q0-7{fill:rgb(241,238,246)}
+.PuRd .q1-7{fill:rgb(212,185,218)}
+.PuRd .q2-7{fill:rgb(201,148,199)}
+.PuRd .q3-7{fill:rgb(223,101,176)}
+.PuRd .q4-7{fill:rgb(231,41,138)}
+.PuRd .q5-7{fill:rgb(206,18,86)}
+.PuRd .q6-7{fill:rgb(145,0,63)}
+.PuRd .q0-8{fill:rgb(247,244,249)}
+.PuRd .q1-8{fill:rgb(231,225,239)}
+.PuRd .q2-8{fill:rgb(212,185,218)}
+.PuRd .q3-8{fill:rgb(201,148,199)}
+.PuRd .q4-8{fill:rgb(223,101,176)}
+.PuRd .q5-8{fill:rgb(231,41,138)}
+.PuRd .q6-8{fill:rgb(206,18,86)}
+.PuRd .q7-8{fill:rgb(145,0,63)}
+.PuRd .q0-9{fill:rgb(247,244,249)}
+.PuRd .q1-9{fill:rgb(231,225,239)}
+.PuRd .q2-9{fill:rgb(212,185,218)}
+.PuRd .q3-9{fill:rgb(201,148,199)}
+.PuRd .q4-9{fill:rgb(223,101,176)}
+.PuRd .q5-9{fill:rgb(231,41,138)}
+.PuRd .q6-9{fill:rgb(206,18,86)}
+.PuRd .q7-9{fill:rgb(152,0,67)}
+.PuRd .q8-9{fill:rgb(103,0,31)}
+.OrRd .q0-3{fill:rgb(254,232,200)}
+.OrRd .q1-3{fill:rgb(253,187,132)}
+.OrRd .q2-3{fill:rgb(227,74,51)}
+.OrRd .q0-4{fill:rgb(254,240,217)}
+.OrRd .q1-4{fill:rgb(253,204,138)}
+.OrRd .q2-4{fill:rgb(252,141,89)}
+.OrRd .q3-4{fill:rgb(215,48,31)}
+.OrRd .q0-5{fill:rgb(254,240,217)}
+.OrRd .q1-5{fill:rgb(253,204,138)}
+.OrRd .q2-5{fill:rgb(252,141,89)}
+.OrRd .q3-5{fill:rgb(227,74,51)}
+.OrRd .q4-5{fill:rgb(179,0,0)}
+.OrRd .q0-6{fill:rgb(254,240,217)}
+.OrRd .q1-6{fill:rgb(253,212,158)}
+.OrRd .q2-6{fill:rgb(253,187,132)}
+.OrRd .q3-6{fill:rgb(252,141,89)}
+.OrRd .q4-6{fill:rgb(227,74,51)}
+.OrRd .q5-6{fill:rgb(179,0,0)}
+.OrRd .q0-7{fill:rgb(254,240,217)}
+.OrRd .q1-7{fill:rgb(253,212,158)}
+.OrRd .q2-7{fill:rgb(253,187,132)}
+.OrRd .q3-7{fill:rgb(252,141,89)}
+.OrRd .q4-7{fill:rgb(239,101,72)}
+.OrRd .q5-7{fill:rgb(215,48,31)}
+.OrRd .q6-7{fill:rgb(153,0,0)}
+.OrRd .q0-8{fill:rgb(255,247,236)}
+.OrRd .q1-8{fill:rgb(254,232,200)}
+.OrRd .q2-8{fill:rgb(253,212,158)}
+.OrRd .q3-8{fill:rgb(253,187,132)}
+.OrRd .q4-8{fill:rgb(252,141,89)}
+.OrRd .q5-8{fill:rgb(239,101,72)}
+.OrRd .q6-8{fill:rgb(215,48,31)}
+.OrRd .q7-8{fill:rgb(153,0,0)}
+.OrRd .q0-9{fill:rgb(255,247,236)}
+.OrRd .q1-9{fill:rgb(254,232,200)}
+.OrRd .q2-9{fill:rgb(253,212,158)}
+.OrRd .q3-9{fill:rgb(253,187,132)}
+.OrRd .q4-9{fill:rgb(252,141,89)}
+.OrRd .q5-9{fill:rgb(239,101,72)}
+.OrRd .q6-9{fill:rgb(215,48,31)}
+.OrRd .q7-9{fill:rgb(179,0,0)}
+.OrRd .q8-9{fill:rgb(127,0,0)}
+.YlOrRd .q0-3{fill:rgb(255,237,160)}
+.YlOrRd .q1-3{fill:rgb(254,178,76)}
+.YlOrRd .q2-3{fill:rgb(240,59,32)}
+.YlOrRd .q0-4{fill:rgb(255,255,178)}
+.YlOrRd .q1-4{fill:rgb(254,204,92)}
+.YlOrRd .q2-4{fill:rgb(253,141,60)}
+.YlOrRd .q3-4{fill:rgb(227,26,28)}
+.YlOrRd .q0-5{fill:rgb(255,255,178)}
+.YlOrRd .q1-5{fill:rgb(254,204,92)}
+.YlOrRd .q2-5{fill:rgb(253,141,60)}
+.YlOrRd .q3-5{fill:rgb(240,59,32)}
+.YlOrRd .q4-5{fill:rgb(189,0,38)}
+.YlOrRd .q0-6{fill:rgb(255,255,178)}
+.YlOrRd .q1-6{fill:rgb(254,217,118)}
+.YlOrRd .q2-6{fill:rgb(254,178,76)}
+.YlOrRd .q3-6{fill:rgb(253,141,60)}
+.YlOrRd .q4-6{fill:rgb(240,59,32)}
+.YlOrRd .q5-6{fill:rgb(189,0,38)}
+.YlOrRd .q0-7{fill:rgb(255,255,178)}
+.YlOrRd .q1-7{fill:rgb(254,217,118)}
+.YlOrRd .q2-7{fill:rgb(254,178,76)}
+.YlOrRd .q3-7{fill:rgb(253,141,60)}
+.YlOrRd .q4-7{fill:rgb(252,78,42)}
+.YlOrRd .q5-7{fill:rgb(227,26,28)}
+.YlOrRd .q6-7{fill:rgb(177,0,38)}
+.YlOrRd .q0-8{fill:rgb(255,255,204)}
+.YlOrRd .q1-8{fill:rgb(255,237,160)}
+.YlOrRd .q2-8{fill:rgb(254,217,118)}
+.YlOrRd .q3-8{fill:rgb(254,178,76)}
+.YlOrRd .q4-8{fill:rgb(253,141,60)}
+.YlOrRd .q5-8{fill:rgb(252,78,42)}
+.YlOrRd .q6-8{fill:rgb(227,26,28)}
+.YlOrRd .q7-8{fill:rgb(177,0,38)}
+.YlOrRd .q0-9{fill:rgb(255,255,204)}
+.YlOrRd .q1-9{fill:rgb(255,237,160)}
+.YlOrRd .q2-9{fill:rgb(254,217,118)}
+.YlOrRd .q3-9{fill:rgb(254,178,76)}
+.YlOrRd .q4-9{fill:rgb(253,141,60)}
+.YlOrRd .q5-9{fill:rgb(252,78,42)}
+.YlOrRd .q6-9{fill:rgb(227,26,28)}
+.YlOrRd .q7-9{fill:rgb(189,0,38)}
+.YlOrRd .q8-9{fill:rgb(128,0,38)}
+.YlOrBr .q0-3{fill:rgb(255,247,188)}
+.YlOrBr .q1-3{fill:rgb(254,196,79)}
+.YlOrBr .q2-3{fill:rgb(217,95,14)}
+.YlOrBr .q0-4{fill:rgb(255,255,212)}
+.YlOrBr .q1-4{fill:rgb(254,217,142)}
+.YlOrBr .q2-4{fill:rgb(254,153,41)}
+.YlOrBr .q3-4{fill:rgb(204,76,2)}
+.YlOrBr .q0-5{fill:rgb(255,255,212)}
+.YlOrBr .q1-5{fill:rgb(254,217,142)}
+.YlOrBr .q2-5{fill:rgb(254,153,41)}
+.YlOrBr .q3-5{fill:rgb(217,95,14)}
+.YlOrBr .q4-5{fill:rgb(153,52,4)}
+.YlOrBr .q0-6{fill:rgb(255,255,212)}
+.YlOrBr .q1-6{fill:rgb(254,227,145)}
+.YlOrBr .q2-6{fill:rgb(254,196,79)}
+.YlOrBr .q3-6{fill:rgb(254,153,41)}
+.YlOrBr .q4-6{fill:rgb(217,95,14)}
+.YlOrBr .q5-6{fill:rgb(153,52,4)}
+.YlOrBr .q0-7{fill:rgb(255,255,212)}
+.YlOrBr .q1-7{fill:rgb(254,227,145)}
+.YlOrBr .q2-7{fill:rgb(254,196,79)}
+.YlOrBr .q3-7{fill:rgb(254,153,41)}
+.YlOrBr .q4-7{fill:rgb(236,112,20)}
+.YlOrBr .q5-7{fill:rgb(204,76,2)}
+.YlOrBr .q6-7{fill:rgb(140,45,4)}
+.YlOrBr .q0-8{fill:rgb(255,255,229)}
+.YlOrBr .q1-8{fill:rgb(255,247,188)}
+.YlOrBr .q2-8{fill:rgb(254,227,145)}
+.YlOrBr .q3-8{fill:rgb(254,196,79)}
+.YlOrBr .q4-8{fill:rgb(254,153,41)}
+.YlOrBr .q5-8{fill:rgb(236,112,20)}
+.YlOrBr .q6-8{fill:rgb(204,76,2)}
+.YlOrBr .q7-8{fill:rgb(140,45,4)}
+.YlOrBr .q0-9{fill:rgb(255,255,229)}
+.YlOrBr .q1-9{fill:rgb(255,247,188)}
+.YlOrBr .q2-9{fill:rgb(254,227,145)}
+.YlOrBr .q3-9{fill:rgb(254,196,79)}
+.YlOrBr .q4-9{fill:rgb(254,153,41)}
+.YlOrBr .q5-9{fill:rgb(236,112,20)}
+.YlOrBr .q6-9{fill:rgb(204,76,2)}
+.YlOrBr .q7-9{fill:rgb(153,52,4)}
+.YlOrBr .q8-9{fill:rgb(102,37,6)}
+.Purples .q0-3{fill:rgb(239,237,245)}
+.Purples .q1-3{fill:rgb(188,189,220)}
+.Purples .q2-3{fill:rgb(117,107,177)}
+.Purples .q0-4{fill:rgb(242,240,247)}
+.Purples .q1-4{fill:rgb(203,201,226)}
+.Purples .q2-4{fill:rgb(158,154,200)}
+.Purples .q3-4{fill:rgb(106,81,163)}
+.Purples .q0-5{fill:rgb(242,240,247)}
+.Purples .q1-5{fill:rgb(203,201,226)}
+.Purples .q2-5{fill:rgb(158,154,200)}
+.Purples .q3-5{fill:rgb(117,107,177)}
+.Purples .q4-5{fill:rgb(84,39,143)}
+.Purples .q0-6{fill:rgb(242,240,247)}
+.Purples .q1-6{fill:rgb(218,218,235)}
+.Purples .q2-6{fill:rgb(188,189,220)}
+.Purples .q3-6{fill:rgb(158,154,200)}
+.Purples .q4-6{fill:rgb(117,107,177)}
+.Purples .q5-6{fill:rgb(84,39,143)}
+.Purples .q0-7{fill:rgb(242,240,247)}
+.Purples .q1-7{fill:rgb(218,218,235)}
+.Purples .q2-7{fill:rgb(188,189,220)}
+.Purples .q3-7{fill:rgb(158,154,200)}
+.Purples .q4-7{fill:rgb(128,125,186)}
+.Purples .q5-7{fill:rgb(106,81,163)}
+.Purples .q6-7{fill:rgb(74,20,134)}
+.Purples .q0-8{fill:rgb(252,251,253)}
+.Purples .q1-8{fill:rgb(239,237,245)}
+.Purples .q2-8{fill:rgb(218,218,235)}
+.Purples .q3-8{fill:rgb(188,189,220)}
+.Purples .q4-8{fill:rgb(158,154,200)}
+.Purples .q5-8{fill:rgb(128,125,186)}
+.Purples .q6-8{fill:rgb(106,81,163)}
+.Purples .q7-8{fill:rgb(74,20,134)}
+.Purples .q0-9{fill:rgb(252,251,253)}
+.Purples .q1-9{fill:rgb(239,237,245)}
+.Purples .q2-9{fill:rgb(218,218,235)}
+.Purples .q3-9{fill:rgb(188,189,220)}
+.Purples .q4-9{fill:rgb(158,154,200)}
+.Purples .q5-9{fill:rgb(128,125,186)}
+.Purples .q6-9{fill:rgb(106,81,163)}
+.Purples .q7-9{fill:rgb(84,39,143)}
+.Purples .q8-9{fill:rgb(63,0,125)}
+.Blues .q0-3{fill:rgb(222,235,247)}
+.Blues .q1-3{fill:rgb(158,202,225)}
+.Blues .q2-3{fill:rgb(49,130,189)}
+.Blues .q0-4{fill:rgb(239,243,255)}
+.Blues .q1-4{fill:rgb(189,215,231)}
+.Blues .q2-4{fill:rgb(107,174,214)}
+.Blues .q3-4{fill:rgb(33,113,181)}
+.Blues .q0-5{fill:rgb(239,243,255)}
+.Blues .q1-5{fill:rgb(189,215,231)}
+.Blues .q2-5{fill:rgb(107,174,214)}
+.Blues .q3-5{fill:rgb(49,130,189)}
+.Blues .q4-5{fill:rgb(8,81,156)}
+.Blues .q0-6{fill:rgb(239,243,255)}
+.Blues .q1-6{fill:rgb(198,219,239)}
+.Blues .q2-6{fill:rgb(158,202,225)}
+.Blues .q3-6{fill:rgb(107,174,214)}
+.Blues .q4-6{fill:rgb(49,130,189)}
+.Blues .q5-6{fill:rgb(8,81,156)}
+.Blues .q0-7{fill:rgb(239,243,255)}
+.Blues .q1-7{fill:rgb(198,219,239)}
+.Blues .q2-7{fill:rgb(158,202,225)}
+.Blues .q3-7{fill:rgb(107,174,214)}
+.Blues .q4-7{fill:rgb(66,146,198)}
+.Blues .q5-7{fill:rgb(33,113,181)}
+.Blues .q6-7{fill:rgb(8,69,148)}
+.Blues .q0-8{fill:rgb(247,251,255)}
+.Blues .q1-8{fill:rgb(222,235,247)}
+.Blues .q2-8{fill:rgb(198,219,239)}
+.Blues .q3-8{fill:rgb(158,202,225)}
+.Blues .q4-8{fill:rgb(107,174,214)}
+.Blues .q5-8{fill:rgb(66,146,198)}
+.Blues .q6-8{fill:rgb(33,113,181)}
+.Blues .q7-8{fill:rgb(8,69,148)}
+.Blues .q0-9{fill:rgb(247,251,255)}
+.Blues .q1-9{fill:rgb(222,235,247)}
+.Blues .q2-9{fill:rgb(198,219,239)}
+.Blues .q3-9{fill:rgb(158,202,225)}
+.Blues .q4-9{fill:rgb(107,174,214)}
+.Blues .q5-9{fill:rgb(66,146,198)}
+.Blues .q6-9{fill:rgb(33,113,181)}
+.Blues .q7-9{fill:rgb(8,81,156)}
+.Blues .q8-9{fill:rgb(8,48,107)}
+.Greens .q0-3{fill:rgb(229,245,224)}
+.Greens .q1-3{fill:rgb(161,217,155)}
+.Greens .q2-3{fill:rgb(49,163,84)}
+.Greens .q0-4{fill:rgb(237,248,233)}
+.Greens .q1-4{fill:rgb(186,228,179)}
+.Greens .q2-4{fill:rgb(116,196,118)}
+.Greens .q3-4{fill:rgb(35,139,69)}
+.Greens .q0-5{fill:rgb(237,248,233)}
+.Greens .q1-5{fill:rgb(186,228,179)}
+.Greens .q2-5{fill:rgb(116,196,118)}
+.Greens .q3-5{fill:rgb(49,163,84)}
+.Greens .q4-5{fill:rgb(0,109,44)}
+.Greens .q0-6{fill:rgb(237,248,233)}
+.Greens .q1-6{fill:rgb(199,233,192)}
+.Greens .q2-6{fill:rgb(161,217,155)}
+.Greens .q3-6{fill:rgb(116,196,118)}
+.Greens .q4-6{fill:rgb(49,163,84)}
+.Greens .q5-6{fill:rgb(0,109,44)}
+.Greens .q0-7{fill:rgb(237,248,233)}
+.Greens .q1-7{fill:rgb(199,233,192)}
+.Greens .q2-7{fill:rgb(161,217,155)}
+.Greens .q3-7{fill:rgb(116,196,118)}
+.Greens .q4-7{fill:rgb(65,171,93)}
+.Greens .q5-7{fill:rgb(35,139,69)}
+.Greens .q6-7{fill:rgb(0,90,50)}
+.Greens .q0-8{fill:rgb(247,252,245)}
+.Greens .q1-8{fill:rgb(229,245,224)}
+.Greens .q2-8{fill:rgb(199,233,192)}
+.Greens .q3-8{fill:rgb(161,217,155)}
+.Greens .q4-8{fill:rgb(116,196,118)}
+.Greens .q5-8{fill:rgb(65,171,93)}
+.Greens .q6-8{fill:rgb(35,139,69)}
+.Greens .q7-8{fill:rgb(0,90,50)}
+.Greens .q0-9{fill:rgb(247,252,245)}
+.Greens .q1-9{fill:rgb(229,245,224)}
+.Greens .q2-9{fill:rgb(199,233,192)}
+.Greens .q3-9{fill:rgb(161,217,155)}
+.Greens .q4-9{fill:rgb(116,196,118)}
+.Greens .q5-9{fill:rgb(65,171,93)}
+.Greens .q6-9{fill:rgb(35,139,69)}
+.Greens .q7-9{fill:rgb(0,109,44)}
+.Greens .q8-9{fill:rgb(0,68,27)}
+.Oranges .q0-3{fill:rgb(254,230,206)}
+.Oranges .q1-3{fill:rgb(253,174,107)}
+.Oranges .q2-3{fill:rgb(230,85,13)}
+.Oranges .q0-4{fill:rgb(254,237,222)}
+.Oranges .q1-4{fill:rgb(253,190,133)}
+.Oranges .q2-4{fill:rgb(253,141,60)}
+.Oranges .q3-4{fill:rgb(217,71,1)}
+.Oranges .q0-5{fill:rgb(254,237,222)}
+.Oranges .q1-5{fill:rgb(253,190,133)}
+.Oranges .q2-5{fill:rgb(253,141,60)}
+.Oranges .q3-5{fill:rgb(230,85,13)}
+.Oranges .q4-5{fill:rgb(166,54,3)}
+.Oranges .q0-6{fill:rgb(254,237,222)}
+.Oranges .q1-6{fill:rgb(253,208,162)}
+.Oranges .q2-6{fill:rgb(253,174,107)}
+.Oranges .q3-6{fill:rgb(253,141,60)}
+.Oranges .q4-6{fill:rgb(230,85,13)}
+.Oranges .q5-6{fill:rgb(166,54,3)}
+.Oranges .q0-7{fill:rgb(254,237,222)}
+.Oranges .q1-7{fill:rgb(253,208,162)}
+.Oranges .q2-7{fill:rgb(253,174,107)}
+.Oranges .q3-7{fill:rgb(253,141,60)}
+.Oranges .q4-7{fill:rgb(241,105,19)}
+.Oranges .q5-7{fill:rgb(217,72,1)}
+.Oranges .q6-7{fill:rgb(140,45,4)}
+.Oranges .q0-8{fill:rgb(255,245,235)}
+.Oranges .q1-8{fill:rgb(254,230,206)}
+.Oranges .q2-8{fill:rgb(253,208,162)}
+.Oranges .q3-8{fill:rgb(253,174,107)}
+.Oranges .q4-8{fill:rgb(253,141,60)}
+.Oranges .q5-8{fill:rgb(241,105,19)}
+.Oranges .q6-8{fill:rgb(217,72,1)}
+.Oranges .q7-8{fill:rgb(140,45,4)}
+.Oranges .q0-9{fill:rgb(255,245,235)}
+.Oranges .q1-9{fill:rgb(254,230,206)}
+.Oranges .q2-9{fill:rgb(253,208,162)}
+.Oranges .q3-9{fill:rgb(253,174,107)}
+.Oranges .q4-9{fill:rgb(253,141,60)}
+.Oranges .q5-9{fill:rgb(241,105,19)}
+.Oranges .q6-9{fill:rgb(217,72,1)}
+.Oranges .q7-9{fill:rgb(166,54,3)}
+.Oranges .q8-9{fill:rgb(127,39,4)}
+.Reds .q0-3{fill:rgb(254,224,210)}
+.Reds .q1-3{fill:rgb(252,146,114)}
+.Reds .q2-3{fill:rgb(222,45,38)}
+.Reds .q0-4{fill:rgb(254,229,217)}
+.Reds .q1-4{fill:rgb(252,174,145)}
+.Reds .q2-4{fill:rgb(251,106,74)}
+.Reds .q3-4{fill:rgb(203,24,29)}
+.Reds .q0-5{fill:rgb(254,229,217)}
+.Reds .q1-5{fill:rgb(252,174,145)}
+.Reds .q2-5{fill:rgb(251,106,74)}
+.Reds .q3-5{fill:rgb(222,45,38)}
+.Reds .q4-5{fill:rgb(165,15,21)}
+.Reds .q0-6{fill:rgb(254,229,217)}
+.Reds .q1-6{fill:rgb(252,187,161)}
+.Reds .q2-6{fill:rgb(252,146,114)}
+.Reds .q3-6{fill:rgb(251,106,74)}
+.Reds .q4-6{fill:rgb(222,45,38)}
+.Reds .q5-6{fill:rgb(165,15,21)}
+.Reds .q0-7{fill:rgb(254,229,217)}
+.Reds .q1-7{fill:rgb(252,187,161)}
+.Reds .q2-7{fill:rgb(252,146,114)}
+.Reds .q3-7{fill:rgb(251,106,74)}
+.Reds .q4-7{fill:rgb(239,59,44)}
+.Reds .q5-7{fill:rgb(203,24,29)}
+.Reds .q6-7{fill:rgb(153,0,13)}
+.Reds .q0-8{fill:rgb(255,245,240)}
+.Reds .q1-8{fill:rgb(254,224,210)}
+.Reds .q2-8{fill:rgb(252,187,161)}
+.Reds .q3-8{fill:rgb(252,146,114)}
+.Reds .q4-8{fill:rgb(251,106,74)}
+.Reds .q5-8{fill:rgb(239,59,44)}
+.Reds .q6-8{fill:rgb(203,24,29)}
+.Reds .q7-8{fill:rgb(153,0,13)}
+.Reds .q0-9{fill:rgb(255,245,240)}
+.Reds .q1-9{fill:rgb(254,224,210)}
+.Reds .q2-9{fill:rgb(252,187,161)}
+.Reds .q3-9{fill:rgb(252,146,114)}
+.Reds .q4-9{fill:rgb(251,106,74)}
+.Reds .q5-9{fill:rgb(239,59,44)}
+.Reds .q6-9{fill:rgb(203,24,29)}
+.Reds .q7-9{fill:rgb(165,15,21)}
+.Reds .q8-9{fill:rgb(103,0,13)}
+.Greys .q0-3{fill:rgb(240,240,240)}
+.Greys .q1-3{fill:rgb(189,189,189)}
+.Greys .q2-3{fill:rgb(99,99,99)}
+.Greys .q0-4{fill:rgb(247,247,247)}
+.Greys .q1-4{fill:rgb(204,204,204)}
+.Greys .q2-4{fill:rgb(150,150,150)}
+.Greys .q3-4{fill:rgb(82,82,82)}
+.Greys .q0-5{fill:rgb(247,247,247)}
+.Greys .q1-5{fill:rgb(204,204,204)}
+.Greys .q2-5{fill:rgb(150,150,150)}
+.Greys .q3-5{fill:rgb(99,99,99)}
+.Greys .q4-5{fill:rgb(37,37,37)}
+.Greys .q0-6{fill:rgb(247,247,247)}
+.Greys .q1-6{fill:rgb(217,217,217)}
+.Greys .q2-6{fill:rgb(189,189,189)}
+.Greys .q3-6{fill:rgb(150,150,150)}
+.Greys .q4-6{fill:rgb(99,99,99)}
+.Greys .q5-6{fill:rgb(37,37,37)}
+.Greys .q0-7{fill:rgb(247,247,247)}
+.Greys .q1-7{fill:rgb(217,217,217)}
+.Greys .q2-7{fill:rgb(189,189,189)}
+.Greys .q3-7{fill:rgb(150,150,150)}
+.Greys .q4-7{fill:rgb(115,115,115)}
+.Greys .q5-7{fill:rgb(82,82,82)}
+.Greys .q6-7{fill:rgb(37,37,37)}
+.Greys .q0-8{fill:rgb(255,255,255)}
+.Greys .q1-8{fill:rgb(240,240,240)}
+.Greys .q2-8{fill:rgb(217,217,217)}
+.Greys .q3-8{fill:rgb(189,189,189)}
+.Greys .q4-8{fill:rgb(150,150,150)}
+.Greys .q5-8{fill:rgb(115,115,115)}
+.Greys .q6-8{fill:rgb(82,82,82)}
+.Greys .q7-8{fill:rgb(37,37,37)}
+.Greys .q0-9{fill:rgb(255,255,255)}
+.Greys .q1-9{fill:rgb(240,240,240)}
+.Greys .q2-9{fill:rgb(217,217,217)}
+.Greys .q3-9{fill:rgb(189,189,189)}
+.Greys .q4-9{fill:rgb(150,150,150)}
+.Greys .q5-9{fill:rgb(115,115,115)}
+.Greys .q6-9{fill:rgb(82,82,82)}
+.Greys .q7-9{fill:rgb(37,37,37)}
+.Greys .q8-9{fill:rgb(0,0,0)}
+.PuOr .q0-3{fill:rgb(241,163,64)}
+.PuOr .q1-3{fill:rgb(247,247,247)}
+.PuOr .q2-3{fill:rgb(153,142,195)}
+.PuOr .q0-4{fill:rgb(230,97,1)}
+.PuOr .q1-4{fill:rgb(253,184,99)}
+.PuOr .q2-4{fill:rgb(178,171,210)}
+.PuOr .q3-4{fill:rgb(94,60,153)}
+.PuOr .q0-5{fill:rgb(230,97,1)}
+.PuOr .q1-5{fill:rgb(253,184,99)}
+.PuOr .q2-5{fill:rgb(247,247,247)}
+.PuOr .q3-5{fill:rgb(178,171,210)}
+.PuOr .q4-5{fill:rgb(94,60,153)}
+.PuOr .q0-6{fill:rgb(179,88,6)}
+.PuOr .q1-6{fill:rgb(241,163,64)}
+.PuOr .q2-6{fill:rgb(254,224,182)}
+.PuOr .q3-6{fill:rgb(216,218,235)}
+.PuOr .q4-6{fill:rgb(153,142,195)}
+.PuOr .q5-6{fill:rgb(84,39,136)}
+.PuOr .q0-7{fill:rgb(179,88,6)}
+.PuOr .q1-7{fill:rgb(241,163,64)}
+.PuOr .q2-7{fill:rgb(254,224,182)}
+.PuOr .q3-7{fill:rgb(247,247,247)}
+.PuOr .q4-7{fill:rgb(216,218,235)}
+.PuOr .q5-7{fill:rgb(153,142,195)}
+.PuOr .q6-7{fill:rgb(84,39,136)}
+.PuOr .q0-8{fill:rgb(179,88,6)}
+.PuOr .q1-8{fill:rgb(224,130,20)}
+.PuOr .q2-8{fill:rgb(253,184,99)}
+.PuOr .q3-8{fill:rgb(254,224,182)}
+.PuOr .q4-8{fill:rgb(216,218,235)}
+.PuOr .q5-8{fill:rgb(178,171,210)}
+.PuOr .q6-8{fill:rgb(128,115,172)}
+.PuOr .q7-8{fill:rgb(84,39,136)}
+.PuOr .q0-9{fill:rgb(179,88,6)}
+.PuOr .q1-9{fill:rgb(224,130,20)}
+.PuOr .q2-9{fill:rgb(253,184,99)}
+.PuOr .q3-9{fill:rgb(254,224,182)}
+.PuOr .q4-9{fill:rgb(247,247,247)}
+.PuOr .q5-9{fill:rgb(216,218,235)}
+.PuOr .q6-9{fill:rgb(178,171,210)}
+.PuOr .q7-9{fill:rgb(128,115,172)}
+.PuOr .q8-9{fill:rgb(84,39,136)}
+.PuOr .q0-10{fill:rgb(127,59,8)}
+.PuOr .q1-10{fill:rgb(179,88,6)}
+.PuOr .q2-10{fill:rgb(224,130,20)}
+.PuOr .q3-10{fill:rgb(253,184,99)}
+.PuOr .q4-10{fill:rgb(254,224,182)}
+.PuOr .q5-10{fill:rgb(216,218,235)}
+.PuOr .q6-10{fill:rgb(178,171,210)}
+.PuOr .q7-10{fill:rgb(128,115,172)}
+.PuOr .q8-10{fill:rgb(84,39,136)}
+.PuOr .q9-10{fill:rgb(45,0,75)}
+.PuOr .q0-11{fill:rgb(127,59,8)}
+.PuOr .q1-11{fill:rgb(179,88,6)}
+.PuOr .q2-11{fill:rgb(224,130,20)}
+.PuOr .q3-11{fill:rgb(253,184,99)}
+.PuOr .q4-11{fill:rgb(254,224,182)}
+.PuOr .q5-11{fill:rgb(247,247,247)}
+.PuOr .q6-11{fill:rgb(216,218,235)}
+.PuOr .q7-11{fill:rgb(178,171,210)}
+.PuOr .q8-11{fill:rgb(128,115,172)}
+.PuOr .q9-11{fill:rgb(84,39,136)}
+.PuOr .q10-11{fill:rgb(45,0,75)}
+.BrBG .q0-3{fill:rgb(216,179,101)}
+.BrBG .q1-3{fill:rgb(245,245,245)}
+.BrBG .q2-3{fill:rgb(90,180,172)}
+.BrBG .q0-4{fill:rgb(166,97,26)}
+.BrBG .q1-4{fill:rgb(223,194,125)}
+.BrBG .q2-4{fill:rgb(128,205,193)}
+.BrBG .q3-4{fill:rgb(1,133,113)}
+.BrBG .q0-5{fill:rgb(166,97,26)}
+.BrBG .q1-5{fill:rgb(223,194,125)}
+.BrBG .q2-5{fill:rgb(245,245,245)}
+.BrBG .q3-5{fill:rgb(128,205,193)}
+.BrBG .q4-5{fill:rgb(1,133,113)}
+.BrBG .q0-6{fill:rgb(140,81,10)}
+.BrBG .q1-6{fill:rgb(216,179,101)}
+.BrBG .q2-6{fill:rgb(246,232,195)}
+.BrBG .q3-6{fill:rgb(199,234,229)}
+.BrBG .q4-6{fill:rgb(90,180,172)}
+.BrBG .q5-6{fill:rgb(1,102,94)}
+.BrBG .q0-7{fill:rgb(140,81,10)}
+.BrBG .q1-7{fill:rgb(216,179,101)}
+.BrBG .q2-7{fill:rgb(246,232,195)}
+.BrBG .q3-7{fill:rgb(245,245,245)}
+.BrBG .q4-7{fill:rgb(199,234,229)}
+.BrBG .q5-7{fill:rgb(90,180,172)}
+.BrBG .q6-7{fill:rgb(1,102,94)}
+.BrBG .q0-8{fill:rgb(140,81,10)}
+.BrBG .q1-8{fill:rgb(191,129,45)}
+.BrBG .q2-8{fill:rgb(223,194,125)}
+.BrBG .q3-8{fill:rgb(246,232,195)}
+.BrBG .q4-8{fill:rgb(199,234,229)}
+.BrBG .q5-8{fill:rgb(128,205,193)}
+.BrBG .q6-8{fill:rgb(53,151,143)}
+.BrBG .q7-8{fill:rgb(1,102,94)}
+.BrBG .q0-9{fill:rgb(140,81,10)}
+.BrBG .q1-9{fill:rgb(191,129,45)}
+.BrBG .q2-9{fill:rgb(223,194,125)}
+.BrBG .q3-9{fill:rgb(246,232,195)}
+.BrBG .q4-9{fill:rgb(245,245,245)}
+.BrBG .q5-9{fill:rgb(199,234,229)}
+.BrBG .q6-9{fill:rgb(128,205,193)}
+.BrBG .q7-9{fill:rgb(53,151,143)}
+.BrBG .q8-9{fill:rgb(1,102,94)}
+.BrBG .q0-10{fill:rgb(84,48,5)}
+.BrBG .q1-10{fill:rgb(140,81,10)}
+.BrBG .q2-10{fill:rgb(191,129,45)}
+.BrBG .q3-10{fill:rgb(223,194,125)}
+.BrBG .q4-10{fill:rgb(246,232,195)}
+.BrBG .q5-10{fill:rgb(199,234,229)}
+.BrBG .q6-10{fill:rgb(128,205,193)}
+.BrBG .q7-10{fill:rgb(53,151,143)}
+.BrBG .q8-10{fill:rgb(1,102,94)}
+.BrBG .q9-10{fill:rgb(0,60,48)}
+.BrBG .q0-11{fill:rgb(84,48,5)}
+.BrBG .q1-11{fill:rgb(140,81,10)}
+.BrBG .q2-11{fill:rgb(191,129,45)}
+.BrBG .q3-11{fill:rgb(223,194,125)}
+.BrBG .q4-11{fill:rgb(246,232,195)}
+.BrBG .q5-11{fill:rgb(245,245,245)}
+.BrBG .q6-11{fill:rgb(199,234,229)}
+.BrBG .q7-11{fill:rgb(128,205,193)}
+.BrBG .q8-11{fill:rgb(53,151,143)}
+.BrBG .q9-11{fill:rgb(1,102,94)}
+.BrBG .q10-11{fill:rgb(0,60,48)}
+.PRGn .q0-3{fill:rgb(175,141,195)}
+.PRGn .q1-3{fill:rgb(247,247,247)}
+.PRGn .q2-3{fill:rgb(127,191,123)}
+.PRGn .q0-4{fill:rgb(123,50,148)}
+.PRGn .q1-4{fill:rgb(194,165,207)}
+.PRGn .q2-4{fill:rgb(166,219,160)}
+.PRGn .q3-4{fill:rgb(0,136,55)}
+.PRGn .q0-5{fill:rgb(123,50,148)}
+.PRGn .q1-5{fill:rgb(194,165,207)}
+.PRGn .q2-5{fill:rgb(247,247,247)}
+.PRGn .q3-5{fill:rgb(166,219,160)}
+.PRGn .q4-5{fill:rgb(0,136,55)}
+.PRGn .q0-6{fill:rgb(118,42,131)}
+.PRGn .q1-6{fill:rgb(175,141,195)}
+.PRGn .q2-6{fill:rgb(231,212,232)}
+.PRGn .q3-6{fill:rgb(217,240,211)}
+.PRGn .q4-6{fill:rgb(127,191,123)}
+.PRGn .q5-6{fill:rgb(27,120,55)}
+.PRGn .q0-7{fill:rgb(118,42,131)}
+.PRGn .q1-7{fill:rgb(175,141,195)}
+.PRGn .q2-7{fill:rgb(231,212,232)}
+.PRGn .q3-7{fill:rgb(247,247,247)}
+.PRGn .q4-7{fill:rgb(217,240,211)}
+.PRGn .q5-7{fill:rgb(127,191,123)}
+.PRGn .q6-7{fill:rgb(27,120,55)}
+.PRGn .q0-8{fill:rgb(118,42,131)}
+.PRGn .q1-8{fill:rgb(153,112,171)}
+.PRGn .q2-8{fill:rgb(194,165,207)}
+.PRGn .q3-8{fill:rgb(231,212,232)}
+.PRGn .q4-8{fill:rgb(217,240,211)}
+.PRGn .q5-8{fill:rgb(166,219,160)}
+.PRGn .q6-8{fill:rgb(90,174,97)}
+.PRGn .q7-8{fill:rgb(27,120,55)}
+.PRGn .q0-9{fill:rgb(118,42,131)}
+.PRGn .q1-9{fill:rgb(153,112,171)}
+.PRGn .q2-9{fill:rgb(194,165,207)}
+.PRGn .q3-9{fill:rgb(231,212,232)}
+.PRGn .q4-9{fill:rgb(247,247,247)}
+.PRGn .q5-9{fill:rgb(217,240,211)}
+.PRGn .q6-9{fill:rgb(166,219,160)}
+.PRGn .q7-9{fill:rgb(90,174,97)}
+.PRGn .q8-9{fill:rgb(27,120,55)}
+.PRGn .q0-10{fill:rgb(64,0,75)}
+.PRGn .q1-10{fill:rgb(118,42,131)}
+.PRGn .q2-10{fill:rgb(153,112,171)}
+.PRGn .q3-10{fill:rgb(194,165,207)}
+.PRGn .q4-10{fill:rgb(231,212,232)}
+.PRGn .q5-10{fill:rgb(217,240,211)}
+.PRGn .q6-10{fill:rgb(166,219,160)}
+.PRGn .q7-10{fill:rgb(90,174,97)}
+.PRGn .q8-10{fill:rgb(27,120,55)}
+.PRGn .q9-10{fill:rgb(0,68,27)}
+.PRGn .q0-11{fill:rgb(64,0,75)}
+.PRGn .q1-11{fill:rgb(118,42,131)}
+.PRGn .q2-11{fill:rgb(153,112,171)}
+.PRGn .q3-11{fill:rgb(194,165,207)}
+.PRGn .q4-11{fill:rgb(231,212,232)}
+.PRGn .q5-11{fill:rgb(247,247,247)}
+.PRGn .q6-11{fill:rgb(217,240,211)}
+.PRGn .q7-11{fill:rgb(166,219,160)}
+.PRGn .q8-11{fill:rgb(90,174,97)}
+.PRGn .q9-11{fill:rgb(27,120,55)}
+.PRGn .q10-11{fill:rgb(0,68,27)}
+.PiYG .q0-3{fill:rgb(233,163,201)}
+.PiYG .q1-3{fill:rgb(247,247,247)}
+.PiYG .q2-3{fill:rgb(161,215,106)}
+.PiYG .q0-4{fill:rgb(208,28,139)}
+.PiYG .q1-4{fill:rgb(241,182,218)}
+.PiYG .q2-4{fill:rgb(184,225,134)}
+.PiYG .q3-4{fill:rgb(77,172,38)}
+.PiYG .q0-5{fill:rgb(208,28,139)}
+.PiYG .q1-5{fill:rgb(241,182,218)}
+.PiYG .q2-5{fill:rgb(247,247,247)}
+.PiYG .q3-5{fill:rgb(184,225,134)}
+.PiYG .q4-5{fill:rgb(77,172,38)}
+.PiYG .q0-6{fill:rgb(197,27,125)}
+.PiYG .q1-6{fill:rgb(233,163,201)}
+.PiYG .q2-6{fill:rgb(253,224,239)}
+.PiYG .q3-6{fill:rgb(230,245,208)}
+.PiYG .q4-6{fill:rgb(161,215,106)}
+.PiYG .q5-6{fill:rgb(77,146,33)}
+.PiYG .q0-7{fill:rgb(197,27,125)}
+.PiYG .q1-7{fill:rgb(233,163,201)}
+.PiYG .q2-7{fill:rgb(253,224,239)}
+.PiYG .q3-7{fill:rgb(247,247,247)}
+.PiYG .q4-7{fill:rgb(230,245,208)}
+.PiYG .q5-7{fill:rgb(161,215,106)}
+.PiYG .q6-7{fill:rgb(77,146,33)}
+.PiYG .q0-8{fill:rgb(197,27,125)}
+.PiYG .q1-8{fill:rgb(222,119,174)}
+.PiYG .q2-8{fill:rgb(241,182,218)}
+.PiYG .q3-8{fill:rgb(253,224,239)}
+.PiYG .q4-8{fill:rgb(230,245,208)}
+.PiYG .q5-8{fill:rgb(184,225,134)}
+.PiYG .q6-8{fill:rgb(127,188,65)}
+.PiYG .q7-8{fill:rgb(77,146,33)}
+.PiYG .q0-9{fill:rgb(197,27,125)}
+.PiYG .q1-9{fill:rgb(222,119,174)}
+.PiYG .q2-9{fill:rgb(241,182,218)}
+.PiYG .q3-9{fill:rgb(253,224,239)}
+.PiYG .q4-9{fill:rgb(247,247,247)}
+.PiYG .q5-9{fill:rgb(230,245,208)}
+.PiYG .q6-9{fill:rgb(184,225,134)}
+.PiYG .q7-9{fill:rgb(127,188,65)}
+.PiYG .q8-9{fill:rgb(77,146,33)}
+.PiYG .q0-10{fill:rgb(142,1,82)}
+.PiYG .q1-10{fill:rgb(197,27,125)}
+.PiYG .q2-10{fill:rgb(222,119,174)}
+.PiYG .q3-10{fill:rgb(241,182,218)}
+.PiYG .q4-10{fill:rgb(253,224,239)}
+.PiYG .q5-10{fill:rgb(230,245,208)}
+.PiYG .q6-10{fill:rgb(184,225,134)}
+.PiYG .q7-10{fill:rgb(127,188,65)}
+.PiYG .q8-10{fill:rgb(77,146,33)}
+.PiYG .q9-10{fill:rgb(39,100,25)}
+.PiYG .q0-11{fill:rgb(142,1,82)}
+.PiYG .q1-11{fill:rgb(197,27,125)}
+.PiYG .q2-11{fill:rgb(222,119,174)}
+.PiYG .q3-11{fill:rgb(241,182,218)}
+.PiYG .q4-11{fill:rgb(253,224,239)}
+.PiYG .q5-11{fill:rgb(247,247,247)}
+.PiYG .q6-11{fill:rgb(230,245,208)}
+.PiYG .q7-11{fill:rgb(184,225,134)}
+.PiYG .q8-11{fill:rgb(127,188,65)}
+.PiYG .q9-11{fill:rgb(77,146,33)}
+.PiYG .q10-11{fill:rgb(39,100,25)}
+.RdBu .q0-3{fill:rgb(239,138,98)}
+.RdBu .q1-3{fill:rgb(247,247,247)}
+.RdBu .q2-3{fill:rgb(103,169,207)}
+.RdBu .q0-4{fill:rgb(202,0,32)}
+.RdBu .q1-4{fill:rgb(244,165,130)}
+.RdBu .q2-4{fill:rgb(146,197,222)}
+.RdBu .q3-4{fill:rgb(5,113,176)}
+.RdBu .q0-5{fill:rgb(202,0,32)}
+.RdBu .q1-5{fill:rgb(244,165,130)}
+.RdBu .q2-5{fill:rgb(247,247,247)}
+.RdBu .q3-5{fill:rgb(146,197,222)}
+.RdBu .q4-5{fill:rgb(5,113,176)}
+.RdBu .q0-6{fill:rgb(178,24,43)}
+.RdBu .q1-6{fill:rgb(239,138,98)}
+.RdBu .q2-6{fill:rgb(253,219,199)}
+.RdBu .q3-6{fill:rgb(209,229,240)}
+.RdBu .q4-6{fill:rgb(103,169,207)}
+.RdBu .q5-6{fill:rgb(33,102,172)}
+.RdBu .q0-7{fill:rgb(178,24,43)}
+.RdBu .q1-7{fill:rgb(239,138,98)}
+.RdBu .q2-7{fill:rgb(253,219,199)}
+.RdBu .q3-7{fill:rgb(247,247,247)}
+.RdBu .q4-7{fill:rgb(209,229,240)}
+.RdBu .q5-7{fill:rgb(103,169,207)}
+.RdBu .q6-7{fill:rgb(33,102,172)}
+.RdBu .q0-8{fill:rgb(178,24,43)}
+.RdBu .q1-8{fill:rgb(214,96,77)}
+.RdBu .q2-8{fill:rgb(244,165,130)}
+.RdBu .q3-8{fill:rgb(253,219,199)}
+.RdBu .q4-8{fill:rgb(209,229,240)}
+.RdBu .q5-8{fill:rgb(146,197,222)}
+.RdBu .q6-8{fill:rgb(67,147,195)}
+.RdBu .q7-8{fill:rgb(33,102,172)}
+.RdBu .q0-9{fill:rgb(178,24,43)}
+.RdBu .q1-9{fill:rgb(214,96,77)}
+.RdBu .q2-9{fill:rgb(244,165,130)}
+.RdBu .q3-9{fill:rgb(253,219,199)}
+.RdBu .q4-9{fill:rgb(247,247,247)}
+.RdBu .q5-9{fill:rgb(209,229,240)}
+.RdBu .q6-9{fill:rgb(146,197,222)}
+.RdBu .q7-9{fill:rgb(67,147,195)}
+.RdBu .q8-9{fill:rgb(33,102,172)}
+.RdBu .q0-10{fill:rgb(103,0,31)}
+.RdBu .q1-10{fill:rgb(178,24,43)}
+.RdBu .q2-10{fill:rgb(214,96,77)}
+.RdBu .q3-10{fill:rgb(244,165,130)}
+.RdBu .q4-10{fill:rgb(253,219,199)}
+.RdBu .q5-10{fill:rgb(209,229,240)}
+.RdBu .q6-10{fill:rgb(146,197,222)}
+.RdBu .q7-10{fill:rgb(67,147,195)}
+.RdBu .q8-10{fill:rgb(33,102,172)}
+.RdBu .q9-10{fill:rgb(5,48,97)}
+.RdBu .q0-11{fill:rgb(103,0,31)}
+.RdBu .q1-11{fill:rgb(178,24,43)}
+.RdBu .q2-11{fill:rgb(214,96,77)}
+.RdBu .q3-11{fill:rgb(244,165,130)}
+.RdBu .q4-11{fill:rgb(253,219,199)}
+.RdBu .q5-11{fill:rgb(247,247,247)}
+.RdBu .q6-11{fill:rgb(209,229,240)}
+.RdBu .q7-11{fill:rgb(146,197,222)}
+.RdBu .q8-11{fill:rgb(67,147,195)}
+.RdBu .q9-11{fill:rgb(33,102,172)}
+.RdBu .q10-11{fill:rgb(5,48,97)}
+.RdGy .q0-3{fill:rgb(239,138,98)}
+.RdGy .q1-3{fill:rgb(255,255,255)}
+.RdGy .q2-3{fill:rgb(153,153,153)}
+.RdGy .q0-4{fill:rgb(202,0,32)}
+.RdGy .q1-4{fill:rgb(244,165,130)}
+.RdGy .q2-4{fill:rgb(186,186,186)}
+.RdGy .q3-4{fill:rgb(64,64,64)}
+.RdGy .q0-5{fill:rgb(202,0,32)}
+.RdGy .q1-5{fill:rgb(244,165,130)}
+.RdGy .q2-5{fill:rgb(255,255,255)}
+.RdGy .q3-5{fill:rgb(186,186,186)}
+.RdGy .q4-5{fill:rgb(64,64,64)}
+.RdGy .q0-6{fill:rgb(178,24,43)}
+.RdGy .q1-6{fill:rgb(239,138,98)}
+.RdGy .q2-6{fill:rgb(253,219,199)}
+.RdGy .q3-6{fill:rgb(224,224,224)}
+.RdGy .q4-6{fill:rgb(153,153,153)}
+.RdGy .q5-6{fill:rgb(77,77,77)}
+.RdGy .q0-7{fill:rgb(178,24,43)}
+.RdGy .q1-7{fill:rgb(239,138,98)}
+.RdGy .q2-7{fill:rgb(253,219,199)}
+.RdGy .q3-7{fill:rgb(255,255,255)}
+.RdGy .q4-7{fill:rgb(224,224,224)}
+.RdGy .q5-7{fill:rgb(153,153,153)}
+.RdGy .q6-7{fill:rgb(77,77,77)}
+.RdGy .q0-8{fill:rgb(178,24,43)}
+.RdGy .q1-8{fill:rgb(214,96,77)}
+.RdGy .q2-8{fill:rgb(244,165,130)}
+.RdGy .q3-8{fill:rgb(253,219,199)}
+.RdGy .q4-8{fill:rgb(224,224,224)}
+.RdGy .q5-8{fill:rgb(186,186,186)}
+.RdGy .q6-8{fill:rgb(135,135,135)}
+.RdGy .q7-8{fill:rgb(77,77,77)}
+.RdGy .q0-9{fill:rgb(178,24,43)}
+.RdGy .q1-9{fill:rgb(214,96,77)}
+.RdGy .q2-9{fill:rgb(244,165,130)}
+.RdGy .q3-9{fill:rgb(253,219,199)}
+.RdGy .q4-9{fill:rgb(255,255,255)}
+.RdGy .q5-9{fill:rgb(224,224,224)}
+.RdGy .q6-9{fill:rgb(186,186,186)}
+.RdGy .q7-9{fill:rgb(135,135,135)}
+.RdGy .q8-9{fill:rgb(77,77,77)}
+.RdGy .q0-10{fill:rgb(103,0,31)}
+.RdGy .q1-10{fill:rgb(178,24,43)}
+.RdGy .q2-10{fill:rgb(214,96,77)}
+.RdGy .q3-10{fill:rgb(244,165,130)}
+.RdGy .q4-10{fill:rgb(253,219,199)}
+.RdGy .q5-10{fill:rgb(224,224,224)}
+.RdGy .q6-10{fill:rgb(186,186,186)}
+.RdGy .q7-10{fill:rgb(135,135,135)}
+.RdGy .q8-10{fill:rgb(77,77,77)}
+.RdGy .q9-10{fill:rgb(26,26,26)}
+.RdGy .q0-11{fill:rgb(103,0,31)}
+.RdGy .q1-11{fill:rgb(178,24,43)}
+.RdGy .q2-11{fill:rgb(214,96,77)}
+.RdGy .q3-11{fill:rgb(244,165,130)}
+.RdGy .q4-11{fill:rgb(253,219,199)}
+.RdGy .q5-11{fill:rgb(255,255,255)}
+.RdGy .q6-11{fill:rgb(224,224,224)}
+.RdGy .q7-11{fill:rgb(186,186,186)}
+.RdGy .q8-11{fill:rgb(135,135,135)}
+.RdGy .q9-11{fill:rgb(77,77,77)}
+.RdGy .q10-11{fill:rgb(26,26,26)}
+.RdYlBu .q0-3{fill:rgb(252,141,89)}
+.RdYlBu .q1-3{fill:rgb(255,255,191)}
+.RdYlBu .q2-3{fill:rgb(145,191,219)}
+.RdYlBu .q0-4{fill:rgb(215,25,28)}
+.RdYlBu .q1-4{fill:rgb(253,174,97)}
+.RdYlBu .q2-4{fill:rgb(171,217,233)}
+.RdYlBu .q3-4{fill:rgb(44,123,182)}
+.RdYlBu .q0-5{fill:rgb(215,25,28)}
+.RdYlBu .q1-5{fill:rgb(253,174,97)}
+.RdYlBu .q2-5{fill:rgb(255,255,191)}
+.RdYlBu .q3-5{fill:rgb(171,217,233)}
+.RdYlBu .q4-5{fill:rgb(44,123,182)}
+.RdYlBu .q0-6{fill:rgb(215,48,39)}
+.RdYlBu .q1-6{fill:rgb(252,141,89)}
+.RdYlBu .q2-6{fill:rgb(254,224,144)}
+.RdYlBu .q3-6{fill:rgb(224,243,248)}
+.RdYlBu .q4-6{fill:rgb(145,191,219)}
+.RdYlBu .q5-6{fill:rgb(69,117,180)}
+.RdYlBu .q0-7{fill:rgb(215,48,39)}
+.RdYlBu .q1-7{fill:rgb(252,141,89)}
+.RdYlBu .q2-7{fill:rgb(254,224,144)}
+.RdYlBu .q3-7{fill:rgb(255,255,191)}
+.RdYlBu .q4-7{fill:rgb(224,243,248)}
+.RdYlBu .q5-7{fill:rgb(145,191,219)}
+.RdYlBu .q6-7{fill:rgb(69,117,180)}
+.RdYlBu .q0-8{fill:rgb(215,48,39)}
+.RdYlBu .q1-8{fill:rgb(244,109,67)}
+.RdYlBu .q2-8{fill:rgb(253,174,97)}
+.RdYlBu .q3-8{fill:rgb(254,224,144)}
+.RdYlBu .q4-8{fill:rgb(224,243,248)}
+.RdYlBu .q5-8{fill:rgb(171,217,233)}
+.RdYlBu .q6-8{fill:rgb(116,173,209)}
+.RdYlBu .q7-8{fill:rgb(69,117,180)}
+.RdYlBu .q0-9{fill:rgb(215,48,39)}
+.RdYlBu .q1-9{fill:rgb(244,109,67)}
+.RdYlBu .q2-9{fill:rgb(253,174,97)}
+.RdYlBu .q3-9{fill:rgb(254,224,144)}
+.RdYlBu .q4-9{fill:rgb(255,255,191)}
+.RdYlBu .q5-9{fill:rgb(224,243,248)}
+.RdYlBu .q6-9{fill:rgb(171,217,233)}
+.RdYlBu .q7-9{fill:rgb(116,173,209)}
+.RdYlBu .q8-9{fill:rgb(69,117,180)}
+.RdYlBu .q0-10{fill:rgb(165,0,38)}
+.RdYlBu .q1-10{fill:rgb(215,48,39)}
+.RdYlBu .q2-10{fill:rgb(244,109,67)}
+.RdYlBu .q3-10{fill:rgb(253,174,97)}
+.RdYlBu .q4-10{fill:rgb(254,224,144)}
+.RdYlBu .q5-10{fill:rgb(224,243,248)}
+.RdYlBu .q6-10{fill:rgb(171,217,233)}
+.RdYlBu .q7-10{fill:rgb(116,173,209)}
+.RdYlBu .q8-10{fill:rgb(69,117,180)}
+.RdYlBu .q9-10{fill:rgb(49,54,149)}
+.RdYlBu .q0-11{fill:rgb(165,0,38)}
+.RdYlBu .q1-11{fill:rgb(215,48,39)}
+.RdYlBu .q2-11{fill:rgb(244,109,67)}
+.RdYlBu .q3-11{fill:rgb(253,174,97)}
+.RdYlBu .q4-11{fill:rgb(254,224,144)}
+.RdYlBu .q5-11{fill:rgb(255,255,191)}
+.RdYlBu .q6-11{fill:rgb(224,243,248)}
+.RdYlBu .q7-11{fill:rgb(171,217,233)}
+.RdYlBu .q8-11{fill:rgb(116,173,209)}
+.RdYlBu .q9-11{fill:rgb(69,117,180)}
+.RdYlBu .q10-11{fill:rgb(49,54,149)}
+.Spectral .q0-3{fill:rgb(252,141,89)}
+.Spectral .q1-3{fill:rgb(255,255,191)}
+.Spectral .q2-3{fill:rgb(153,213,148)}
+.Spectral .q0-4{fill:rgb(215,25,28)}
+.Spectral .q1-4{fill:rgb(253,174,97)}
+.Spectral .q2-4{fill:rgb(171,221,164)}
+.Spectral .q3-4{fill:rgb(43,131,186)}
+.Spectral .q0-5{fill:rgb(215,25,28)}
+.Spectral .q1-5{fill:rgb(253,174,97)}
+.Spectral .q2-5{fill:rgb(255,255,191)}
+.Spectral .q3-5{fill:rgb(171,221,164)}
+.Spectral .q4-5{fill:rgb(43,131,186)}
+.Spectral .q0-6{fill:rgb(213,62,79)}
+.Spectral .q1-6{fill:rgb(252,141,89)}
+.Spectral .q2-6{fill:rgb(254,224,139)}
+.Spectral .q3-6{fill:rgb(230,245,152)}
+.Spectral .q4-6{fill:rgb(153,213,148)}
+.Spectral .q5-6{fill:rgb(50,136,189)}
+.Spectral .q0-7{fill:rgb(213,62,79)}
+.Spectral .q1-7{fill:rgb(252,141,89)}
+.Spectral .q2-7{fill:rgb(254,224,139)}
+.Spectral .q3-7{fill:rgb(255,255,191)}
+.Spectral .q4-7{fill:rgb(230,245,152)}
+.Spectral .q5-7{fill:rgb(153,213,148)}
+.Spectral .q6-7{fill:rgb(50,136,189)}
+.Spectral .q0-8{fill:rgb(213,62,79)}
+.Spectral .q1-8{fill:rgb(244,109,67)}
+.Spectral .q2-8{fill:rgb(253,174,97)}
+.Spectral .q3-8{fill:rgb(254,224,139)}
+.Spectral .q4-8{fill:rgb(230,245,152)}
+.Spectral .q5-8{fill:rgb(171,221,164)}
+.Spectral .q6-8{fill:rgb(102,194,165)}
+.Spectral .q7-8{fill:rgb(50,136,189)}
+.Spectral .q0-9{fill:rgb(213,62,79)}
+.Spectral .q1-9{fill:rgb(244,109,67)}
+.Spectral .q2-9{fill:rgb(253,174,97)}
+.Spectral .q3-9{fill:rgb(254,224,139)}
+.Spectral .q4-9{fill:rgb(255,255,191)}
+.Spectral .q5-9{fill:rgb(230,245,152)}
+.Spectral .q6-9{fill:rgb(171,221,164)}
+.Spectral .q7-9{fill:rgb(102,194,165)}
+.Spectral .q8-9{fill:rgb(50,136,189)}
+.Spectral .q0-10{fill:rgb(158,1,66)}
+.Spectral .q1-10{fill:rgb(213,62,79)}
+.Spectral .q2-10{fill:rgb(244,109,67)}
+.Spectral .q3-10{fill:rgb(253,174,97)}
+.Spectral .q4-10{fill:rgb(254,224,139)}
+.Spectral .q5-10{fill:rgb(230,245,152)}
+.Spectral .q6-10{fill:rgb(171,221,164)}
+.Spectral .q7-10{fill:rgb(102,194,165)}
+.Spectral .q8-10{fill:rgb(50,136,189)}
+.Spectral .q9-10{fill:rgb(94,79,162)}
+.Spectral .q0-11{fill:rgb(158,1,66)}
+.Spectral .q1-11{fill:rgb(213,62,79)}
+.Spectral .q2-11{fill:rgb(244,109,67)}
+.Spectral .q3-11{fill:rgb(253,174,97)}
+.Spectral .q4-11{fill:rgb(254,224,139)}
+.Spectral .q5-11{fill:rgb(255,255,191)}
+.Spectral .q6-11{fill:rgb(230,245,152)}
+.Spectral .q7-11{fill:rgb(171,221,164)}
+.Spectral .q8-11{fill:rgb(102,194,165)}
+.Spectral .q9-11{fill:rgb(50,136,189)}
+.Spectral .q10-11{fill:rgb(94,79,162)}
+.RdYlGn .q0-3{fill:rgb(252,141,89)}
+.RdYlGn .q1-3{fill:rgb(255,255,191)}
+.RdYlGn .q2-3{fill:rgb(145,207,96)}
+.RdYlGn .q0-4{fill:rgb(215,25,28)}
+.RdYlGn .q1-4{fill:rgb(253,174,97)}
+.RdYlGn .q2-4{fill:rgb(166,217,106)}
+.RdYlGn .q3-4{fill:rgb(26,150,65)}
+.RdYlGn .q0-5{fill:rgb(215,25,28)}
+.RdYlGn .q1-5{fill:rgb(253,174,97)}
+.RdYlGn .q2-5{fill:rgb(255,255,191)}
+.RdYlGn .q3-5{fill:rgb(166,217,106)}
+.RdYlGn .q4-5{fill:rgb(26,150,65)}
+.RdYlGn .q0-6{fill:rgb(215,48,39)}
+.RdYlGn .q1-6{fill:rgb(252,141,89)}
+.RdYlGn .q2-6{fill:rgb(254,224,139)}
+.RdYlGn .q3-6{fill:rgb(217,239,139)}
+.RdYlGn .q4-6{fill:rgb(145,207,96)}
+.RdYlGn .q5-6{fill:rgb(26,152,80)}
+.RdYlGn .q0-7{fill:rgb(215,48,39)}
+.RdYlGn .q1-7{fill:rgb(252,141,89)}
+.RdYlGn .q2-7{fill:rgb(254,224,139)}
+.RdYlGn .q3-7{fill:rgb(255,255,191)}
+.RdYlGn .q4-7{fill:rgb(217,239,139)}
+.RdYlGn .q5-7{fill:rgb(145,207,96)}
+.RdYlGn .q6-7{fill:rgb(26,152,80)}
+.RdYlGn .q0-8{fill:rgb(215,48,39)}
+.RdYlGn .q1-8{fill:rgb(244,109,67)}
+.RdYlGn .q2-8{fill:rgb(253,174,97)}
+.RdYlGn .q3-8{fill:rgb(254,224,139)}
+.RdYlGn .q4-8{fill:rgb(217,239,139)}
+.RdYlGn .q5-8{fill:rgb(166,217,106)}
+.RdYlGn .q6-8{fill:rgb(102,189,99)}
+.RdYlGn .q7-8{fill:rgb(26,152,80)}
+.RdYlGn .q0-9{fill:rgb(215,48,39)}
+.RdYlGn .q1-9{fill:rgb(244,109,67)}
+.RdYlGn .q2-9{fill:rgb(253,174,97)}
+.RdYlGn .q3-9{fill:rgb(254,224,139)}
+.RdYlGn .q4-9{fill:rgb(255,255,191)}
+.RdYlGn .q5-9{fill:rgb(217,239,139)}
+.RdYlGn .q6-9{fill:rgb(166,217,106)}
+.RdYlGn .q7-9{fill:rgb(102,189,99)}
+.RdYlGn .q8-9{fill:rgb(26,152,80)}
+.RdYlGn .q0-10{fill:rgb(165,0,38)}
+.RdYlGn .q1-10{fill:rgb(215,48,39)}
+.RdYlGn .q2-10{fill:rgb(244,109,67)}
+.RdYlGn .q3-10{fill:rgb(253,174,97)}
+.RdYlGn .q4-10{fill:rgb(254,224,139)}
+.RdYlGn .q5-10{fill:rgb(217,239,139)}
+.RdYlGn .q6-10{fill:rgb(166,217,106)}
+.RdYlGn .q7-10{fill:rgb(102,189,99)}
+.RdYlGn .q8-10{fill:rgb(26,152,80)}
+.RdYlGn .q9-10{fill:rgb(0,104,55)}
+.RdYlGn .q0-11{fill:rgb(165,0,38)}
+.RdYlGn .q1-11{fill:rgb(215,48,39)}
+.RdYlGn .q2-11{fill:rgb(244,109,67)}
+.RdYlGn .q3-11{fill:rgb(253,174,97)}
+.RdYlGn .q4-11{fill:rgb(254,224,139)}
+.RdYlGn .q5-11{fill:rgb(255,255,191)}
+.RdYlGn .q6-11{fill:rgb(217,239,139)}
+.RdYlGn .q7-11{fill:rgb(166,217,106)}
+.RdYlGn .q8-11{fill:rgb(102,189,99)}
+.RdYlGn .q9-11{fill:rgb(26,152,80)}
+.RdYlGn .q10-11{fill:rgb(0,104,55)}
diff --git a/static/vendor/d3-2.8.1/lib/colorbrewer/colorbrewer.js b/static/vendor/d3-2.8.1/lib/colorbrewer/colorbrewer.js
new file mode 100755 (executable)
index 0000000..e468640
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * This product includes color specifications and designs developed by Cynthia
+ * Brewer (http://colorbrewer.org/).
+ */
+var colorbrewer = {
+YlGn:{3:["rgb(247,252,185)","rgb(173,221,142)","rgb(49,163,84)"],4:["rgb(255,255,204)","rgb(194,230,153)","rgb(120,198,121)","rgb(35,132,67)"],5:["rgb(255,255,204)","rgb(194,230,153)","rgb(120,198,121)","rgb(49,163,84)","rgb(0,104,55)"],6:["rgb(255,255,204)","rgb(217,240,163)","rgb(173,221,142)","rgb(120,198,121)","rgb(49,163,84)","rgb(0,104,55)"],7:["rgb(255,255,204)","rgb(217,240,163)","rgb(173,221,142)","rgb(120,198,121)","rgb(65,171,93)","rgb(35,132,67)","rgb(0,90,50)"],8:["rgb(255,255,229)","rgb(247,252,185)","rgb(217,240,163)","rgb(173,221,142)","rgb(120,198,121)","rgb(65,171,93)","rgb(35,132,67)","rgb(0,90,50)"],9:["rgb(255,255,229)","rgb(247,252,185)","rgb(217,240,163)","rgb(173,221,142)","rgb(120,198,121)","rgb(65,171,93)","rgb(35,132,67)","rgb(0,104,55)","rgb(0,69,41)"]},
+YlGnBu:{3:["rgb(237,248,177)","rgb(127,205,187)","rgb(44,127,184)"],4:["rgb(255,255,204)","rgb(161,218,180)","rgb(65,182,196)","rgb(34,94,168)"],5:["rgb(255,255,204)","rgb(161,218,180)","rgb(65,182,196)","rgb(44,127,184)","rgb(37,52,148)"],6:["rgb(255,255,204)","rgb(199,233,180)","rgb(127,205,187)","rgb(65,182,196)","rgb(44,127,184)","rgb(37,52,148)"],7:["rgb(255,255,204)","rgb(199,233,180)","rgb(127,205,187)","rgb(65,182,196)","rgb(29,145,192)","rgb(34,94,168)","rgb(12,44,132)"],8:["rgb(255,255,217)","rgb(237,248,177)","rgb(199,233,180)","rgb(127,205,187)","rgb(65,182,196)","rgb(29,145,192)","rgb(34,94,168)","rgb(12,44,132)"],9:["rgb(255,255,217)","rgb(237,248,177)","rgb(199,233,180)","rgb(127,205,187)","rgb(65,182,196)","rgb(29,145,192)","rgb(34,94,168)","rgb(37,52,148)","rgb(8,29,88)"]},
+GnBu:{3:["rgb(224,243,219)","rgb(168,221,181)","rgb(67,162,202)"],4:["rgb(240,249,232)","rgb(186,228,188)","rgb(123,204,196)","rgb(43,140,190)"],5:["rgb(240,249,232)","rgb(186,228,188)","rgb(123,204,196)","rgb(67,162,202)","rgb(8,104,172)"],6:["rgb(240,249,232)","rgb(204,235,197)","rgb(168,221,181)","rgb(123,204,196)","rgb(67,162,202)","rgb(8,104,172)"],7:["rgb(240,249,232)","rgb(204,235,197)","rgb(168,221,181)","rgb(123,204,196)","rgb(78,179,211)","rgb(43,140,190)","rgb(8,88,158)"],8:["rgb(247,252,240)","rgb(224,243,219)","rgb(204,235,197)","rgb(168,221,181)","rgb(123,204,196)","rgb(78,179,211)","rgb(43,140,190)","rgb(8,88,158)"],9:["rgb(247,252,240)","rgb(224,243,219)","rgb(204,235,197)","rgb(168,221,181)","rgb(123,204,196)","rgb(78,179,211)","rgb(43,140,190)","rgb(8,104,172)","rgb(8,64,129)"]},
+BuGn:{3:["rgb(229,245,249)","rgb(153,216,201)","rgb(44,162,95)"],4:["rgb(237,248,251)","rgb(178,226,226)","rgb(102,194,164)","rgb(35,139,69)"],5:["rgb(237,248,251)","rgb(178,226,226)","rgb(102,194,164)","rgb(44,162,95)","rgb(0,109,44)"],6:["rgb(237,248,251)","rgb(204,236,230)","rgb(153,216,201)","rgb(102,194,164)","rgb(44,162,95)","rgb(0,109,44)"],7:["rgb(237,248,251)","rgb(204,236,230)","rgb(153,216,201)","rgb(102,194,164)","rgb(65,174,118)","rgb(35,139,69)","rgb(0,88,36)"],8:["rgb(247,252,253)","rgb(229,245,249)","rgb(204,236,230)","rgb(153,216,201)","rgb(102,194,164)","rgb(65,174,118)","rgb(35,139,69)","rgb(0,88,36)"],9:["rgb(247,252,253)","rgb(229,245,249)","rgb(204,236,230)","rgb(153,216,201)","rgb(102,194,164)","rgb(65,174,118)","rgb(35,139,69)","rgb(0,109,44)","rgb(0,68,27)"]},
+PuBuGn:{3:["rgb(236,226,240)","rgb(166,189,219)","rgb(28,144,153)"],4:["rgb(246,239,247)","rgb(189,201,225)","rgb(103,169,207)","rgb(2,129,138)"],5:["rgb(246,239,247)","rgb(189,201,225)","rgb(103,169,207)","rgb(28,144,153)","rgb(1,108,89)"],6:["rgb(246,239,247)","rgb(208,209,230)","rgb(166,189,219)","rgb(103,169,207)","rgb(28,144,153)","rgb(1,108,89)"],7:["rgb(246,239,247)","rgb(208,209,230)","rgb(166,189,219)","rgb(103,169,207)","rgb(54,144,192)","rgb(2,129,138)","rgb(1,100,80)"],8:["rgb(255,247,251)","rgb(236,226,240)","rgb(208,209,230)","rgb(166,189,219)","rgb(103,169,207)","rgb(54,144,192)","rgb(2,129,138)","rgb(1,100,80)"],9:["rgb(255,247,251)","rgb(236,226,240)","rgb(208,209,230)","rgb(166,189,219)","rgb(103,169,207)","rgb(54,144,192)","rgb(2,129,138)","rgb(1,108,89)","rgb(1,70,54)"]},
+PuBu:{3:["rgb(236,231,242)","rgb(166,189,219)","rgb(43,140,190)"],4:["rgb(241,238,246)","rgb(189,201,225)","rgb(116,169,207)","rgb(5,112,176)"],5:["rgb(241,238,246)","rgb(189,201,225)","rgb(116,169,207)","rgb(43,140,190)","rgb(4,90,141)"],6:["rgb(241,238,246)","rgb(208,209,230)","rgb(166,189,219)","rgb(116,169,207)","rgb(43,140,190)","rgb(4,90,141)"],7:["rgb(241,238,246)","rgb(208,209,230)","rgb(166,189,219)","rgb(116,169,207)","rgb(54,144,192)","rgb(5,112,176)","rgb(3,78,123)"],8:["rgb(255,247,251)","rgb(236,231,242)","rgb(208,209,230)","rgb(166,189,219)","rgb(116,169,207)","rgb(54,144,192)","rgb(5,112,176)","rgb(3,78,123)"],9:["rgb(255,247,251)","rgb(236,231,242)","rgb(208,209,230)","rgb(166,189,219)","rgb(116,169,207)","rgb(54,144,192)","rgb(5,112,176)","rgb(4,90,141)","rgb(2,56,88)"]},
+BuPu:{3:["rgb(224,236,244)","rgb(158,188,218)","rgb(136,86,167)"],4:["rgb(237,248,251)","rgb(179,205,227)","rgb(140,150,198)","rgb(136,65,157)"],5:["rgb(237,248,251)","rgb(179,205,227)","rgb(140,150,198)","rgb(136,86,167)","rgb(129,15,124)"],6:["rgb(237,248,251)","rgb(191,211,230)","rgb(158,188,218)","rgb(140,150,198)","rgb(136,86,167)","rgb(129,15,124)"],7:["rgb(237,248,251)","rgb(191,211,230)","rgb(158,188,218)","rgb(140,150,198)","rgb(140,107,177)","rgb(136,65,157)","rgb(110,1,107)"],8:["rgb(247,252,253)","rgb(224,236,244)","rgb(191,211,230)","rgb(158,188,218)","rgb(140,150,198)","rgb(140,107,177)","rgb(136,65,157)","rgb(110,1,107)"],9:["rgb(247,252,253)","rgb(224,236,244)","rgb(191,211,230)","rgb(158,188,218)","rgb(140,150,198)","rgb(140,107,177)","rgb(136,65,157)","rgb(129,15,124)","rgb(77,0,75)"]},
+RdPu:{3:["rgb(253,224,221)","rgb(250,159,181)","rgb(197,27,138)"],4:["rgb(254,235,226)","rgb(251,180,185)","rgb(247,104,161)","rgb(174,1,126)"],5:["rgb(254,235,226)","rgb(251,180,185)","rgb(247,104,161)","rgb(197,27,138)","rgb(122,1,119)"],6:["rgb(254,235,226)","rgb(252,197,192)","rgb(250,159,181)","rgb(247,104,161)","rgb(197,27,138)","rgb(122,1,119)"],7:["rgb(254,235,226)","rgb(252,197,192)","rgb(250,159,181)","rgb(247,104,161)","rgb(221,52,151)","rgb(174,1,126)","rgb(122,1,119)"],8:["rgb(255,247,243)","rgb(253,224,221)","rgb(252,197,192)","rgb(250,159,181)","rgb(247,104,161)","rgb(221,52,151)","rgb(174,1,126)","rgb(122,1,119)"],9:["rgb(255,247,243)","rgb(253,224,221)","rgb(252,197,192)","rgb(250,159,181)","rgb(247,104,161)","rgb(221,52,151)","rgb(174,1,126)","rgb(122,1,119)","rgb(73,0,106)"]},
+PuRd:{3:["rgb(231,225,239)","rgb(201,148,199)","rgb(221,28,119)"],4:["rgb(241,238,246)","rgb(215,181,216)","rgb(223,101,176)","rgb(206,18,86)"],5:["rgb(241,238,246)","rgb(215,181,216)","rgb(223,101,176)","rgb(221,28,119)","rgb(152,0,67)"],6:["rgb(241,238,246)","rgb(212,185,218)","rgb(201,148,199)","rgb(223,101,176)","rgb(221,28,119)","rgb(152,0,67)"],7:["rgb(241,238,246)","rgb(212,185,218)","rgb(201,148,199)","rgb(223,101,176)","rgb(231,41,138)","rgb(206,18,86)","rgb(145,0,63)"],8:["rgb(247,244,249)","rgb(231,225,239)","rgb(212,185,218)","rgb(201,148,199)","rgb(223,101,176)","rgb(231,41,138)","rgb(206,18,86)","rgb(145,0,63)"],9:["rgb(247,244,249)","rgb(231,225,239)","rgb(212,185,218)","rgb(201,148,199)","rgb(223,101,176)","rgb(231,41,138)","rgb(206,18,86)","rgb(152,0,67)","rgb(103,0,31)"]},
+OrRd:{3:["rgb(254,232,200)","rgb(253,187,132)","rgb(227,74,51)"],4:["rgb(254,240,217)","rgb(253,204,138)","rgb(252,141,89)","rgb(215,48,31)"],5:["rgb(254,240,217)","rgb(253,204,138)","rgb(252,141,89)","rgb(227,74,51)","rgb(179,0,0)"],6:["rgb(254,240,217)","rgb(253,212,158)","rgb(253,187,132)","rgb(252,141,89)","rgb(227,74,51)","rgb(179,0,0)"],7:["rgb(254,240,217)","rgb(253,212,158)","rgb(253,187,132)","rgb(252,141,89)","rgb(239,101,72)","rgb(215,48,31)","rgb(153,0,0)"],8:["rgb(255,247,236)","rgb(254,232,200)","rgb(253,212,158)","rgb(253,187,132)","rgb(252,141,89)","rgb(239,101,72)","rgb(215,48,31)","rgb(153,0,0)"],9:["rgb(255,247,236)","rgb(254,232,200)","rgb(253,212,158)","rgb(253,187,132)","rgb(252,141,89)","rgb(239,101,72)","rgb(215,48,31)","rgb(179,0,0)","rgb(127,0,0)"]},
+YlOrRd:{3:["rgb(255,237,160)","rgb(254,178,76)","rgb(240,59,32)"],4:["rgb(255,255,178)","rgb(254,204,92)","rgb(253,141,60)","rgb(227,26,28)"],5:["rgb(255,255,178)","rgb(254,204,92)","rgb(253,141,60)","rgb(240,59,32)","rgb(189,0,38)"],6:["rgb(255,255,178)","rgb(254,217,118)","rgb(254,178,76)","rgb(253,141,60)","rgb(240,59,32)","rgb(189,0,38)"],7:["rgb(255,255,178)","rgb(254,217,118)","rgb(254,178,76)","rgb(253,141,60)","rgb(252,78,42)","rgb(227,26,28)","rgb(177,0,38)"],8:["rgb(255,255,204)","rgb(255,237,160)","rgb(254,217,118)","rgb(254,178,76)","rgb(253,141,60)","rgb(252,78,42)","rgb(227,26,28)","rgb(177,0,38)"],9:["rgb(255,255,204)","rgb(255,237,160)","rgb(254,217,118)","rgb(254,178,76)","rgb(253,141,60)","rgb(252,78,42)","rgb(227,26,28)","rgb(189,0,38)","rgb(128,0,38)"]},
+YlOrBr:{3:["rgb(255,247,188)","rgb(254,196,79)","rgb(217,95,14)"],4:["rgb(255,255,212)","rgb(254,217,142)","rgb(254,153,41)","rgb(204,76,2)"],5:["rgb(255,255,212)","rgb(254,217,142)","rgb(254,153,41)","rgb(217,95,14)","rgb(153,52,4)"],6:["rgb(255,255,212)","rgb(254,227,145)","rgb(254,196,79)","rgb(254,153,41)","rgb(217,95,14)","rgb(153,52,4)"],7:["rgb(255,255,212)","rgb(254,227,145)","rgb(254,196,79)","rgb(254,153,41)","rgb(236,112,20)","rgb(204,76,2)","rgb(140,45,4)"],8:["rgb(255,255,229)","rgb(255,247,188)","rgb(254,227,145)","rgb(254,196,79)","rgb(254,153,41)","rgb(236,112,20)","rgb(204,76,2)","rgb(140,45,4)"],9:["rgb(255,255,229)","rgb(255,247,188)","rgb(254,227,145)","rgb(254,196,79)","rgb(254,153,41)","rgb(236,112,20)","rgb(204,76,2)","rgb(153,52,4)","rgb(102,37,6)"]},
+Purples:{3:["rgb(239,237,245)","rgb(188,189,220)","rgb(117,107,177)"],4:["rgb(242,240,247)","rgb(203,201,226)","rgb(158,154,200)","rgb(106,81,163)"],5:["rgb(242,240,247)","rgb(203,201,226)","rgb(158,154,200)","rgb(117,107,177)","rgb(84,39,143)"],6:["rgb(242,240,247)","rgb(218,218,235)","rgb(188,189,220)","rgb(158,154,200)","rgb(117,107,177)","rgb(84,39,143)"],7:["rgb(242,240,247)","rgb(218,218,235)","rgb(188,189,220)","rgb(158,154,200)","rgb(128,125,186)","rgb(106,81,163)","rgb(74,20,134)"],8:["rgb(252,251,253)","rgb(239,237,245)","rgb(218,218,235)","rgb(188,189,220)","rgb(158,154,200)","rgb(128,125,186)","rgb(106,81,163)","rgb(74,20,134)"],9:["rgb(252,251,253)","rgb(239,237,245)","rgb(218,218,235)","rgb(188,189,220)","rgb(158,154,200)","rgb(128,125,186)","rgb(106,81,163)","rgb(84,39,143)","rgb(63,0,125)"]},
+Blues:{3:["rgb(222,235,247)","rgb(158,202,225)","rgb(49,130,189)"],4:["rgb(239,243,255)","rgb(189,215,231)","rgb(107,174,214)","rgb(33,113,181)"],5:["rgb(239,243,255)","rgb(189,215,231)","rgb(107,174,214)","rgb(49,130,189)","rgb(8,81,156)"],6:["rgb(239,243,255)","rgb(198,219,239)","rgb(158,202,225)","rgb(107,174,214)","rgb(49,130,189)","rgb(8,81,156)"],7:["rgb(239,243,255)","rgb(198,219,239)","rgb(158,202,225)","rgb(107,174,214)","rgb(66,146,198)","rgb(33,113,181)","rgb(8,69,148)"],8:["rgb(247,251,255)","rgb(222,235,247)","rgb(198,219,239)","rgb(158,202,225)","rgb(107,174,214)","rgb(66,146,198)","rgb(33,113,181)","rgb(8,69,148)"],9:["rgb(247,251,255)","rgb(222,235,247)","rgb(198,219,239)","rgb(158,202,225)","rgb(107,174,214)","rgb(66,146,198)","rgb(33,113,181)","rgb(8,81,156)","rgb(8,48,107)"]},
+Greens:{3:["rgb(229,245,224)","rgb(161,217,155)","rgb(49,163,84)"],4:["rgb(237,248,233)","rgb(186,228,179)","rgb(116,196,118)","rgb(35,139,69)"],5:["rgb(237,248,233)","rgb(186,228,179)","rgb(116,196,118)","rgb(49,163,84)","rgb(0,109,44)"],6:["rgb(237,248,233)","rgb(199,233,192)","rgb(161,217,155)","rgb(116,196,118)","rgb(49,163,84)","rgb(0,109,44)"],7:["rgb(237,248,233)","rgb(199,233,192)","rgb(161,217,155)","rgb(116,196,118)","rgb(65,171,93)","rgb(35,139,69)","rgb(0,90,50)"],8:["rgb(247,252,245)","rgb(229,245,224)","rgb(199,233,192)","rgb(161,217,155)","rgb(116,196,118)","rgb(65,171,93)","rgb(35,139,69)","rgb(0,90,50)"],9:["rgb(247,252,245)","rgb(229,245,224)","rgb(199,233,192)","rgb(161,217,155)","rgb(116,196,118)","rgb(65,171,93)","rgb(35,139,69)","rgb(0,109,44)","rgb(0,68,27)"]},
+Oranges:{3:["rgb(254,230,206)","rgb(253,174,107)","rgb(230,85,13)"],4:["rgb(254,237,222)","rgb(253,190,133)","rgb(253,141,60)","rgb(217,71,1)"],5:["rgb(254,237,222)","rgb(253,190,133)","rgb(253,141,60)","rgb(230,85,13)","rgb(166,54,3)"],6:["rgb(254,237,222)","rgb(253,208,162)","rgb(253,174,107)","rgb(253,141,60)","rgb(230,85,13)","rgb(166,54,3)"],7:["rgb(254,237,222)","rgb(253,208,162)","rgb(253,174,107)","rgb(253,141,60)","rgb(241,105,19)","rgb(217,72,1)","rgb(140,45,4)"],8:["rgb(255,245,235)","rgb(254,230,206)","rgb(253,208,162)","rgb(253,174,107)","rgb(253,141,60)","rgb(241,105,19)","rgb(217,72,1)","rgb(140,45,4)"],9:["rgb(255,245,235)","rgb(254,230,206)","rgb(253,208,162)","rgb(253,174,107)","rgb(253,141,60)","rgb(241,105,19)","rgb(217,72,1)","rgb(166,54,3)","rgb(127,39,4)"]},
+Reds:{3:["rgb(254,224,210)","rgb(252,146,114)","rgb(222,45,38)"],4:["rgb(254,229,217)","rgb(252,174,145)","rgb(251,106,74)","rgb(203,24,29)"],5:["rgb(254,229,217)","rgb(252,174,145)","rgb(251,106,74)","rgb(222,45,38)","rgb(165,15,21)"],6:["rgb(254,229,217)","rgb(252,187,161)","rgb(252,146,114)","rgb(251,106,74)","rgb(222,45,38)","rgb(165,15,21)"],7:["rgb(254,229,217)","rgb(252,187,161)","rgb(252,146,114)","rgb(251,106,74)","rgb(239,59,44)","rgb(203,24,29)","rgb(153,0,13)"],8:["rgb(255,245,240)","rgb(254,224,210)","rgb(252,187,161)","rgb(252,146,114)","rgb(251,106,74)","rgb(239,59,44)","rgb(203,24,29)","rgb(153,0,13)"],9:["rgb(255,245,240)","rgb(254,224,210)","rgb(252,187,161)","rgb(252,146,114)","rgb(251,106,74)","rgb(239,59,44)","rgb(203,24,29)","rgb(165,15,21)","rgb(103,0,13)"]},
+Greys:{3:["rgb(240,240,240)","rgb(189,189,189)","rgb(99,99,99)"],4:["rgb(247,247,247)","rgb(204,204,204)","rgb(150,150,150)","rgb(82,82,82)"],5:["rgb(247,247,247)","rgb(204,204,204)","rgb(150,150,150)","rgb(99,99,99)","rgb(37,37,37)"],6:["rgb(247,247,247)","rgb(217,217,217)","rgb(189,189,189)","rgb(150,150,150)","rgb(99,99,99)","rgb(37,37,37)"],7:["rgb(247,247,247)","rgb(217,217,217)","rgb(189,189,189)","rgb(150,150,150)","rgb(115,115,115)","rgb(82,82,82)","rgb(37,37,37)"],8:["rgb(255,255,255)","rgb(240,240,240)","rgb(217,217,217)","rgb(189,189,189)","rgb(150,150,150)","rgb(115,115,115)","rgb(82,82,82)","rgb(37,37,37)"],9:["rgb(255,255,255)","rgb(240,240,240)","rgb(217,217,217)","rgb(189,189,189)","rgb(150,150,150)","rgb(115,115,115)","rgb(82,82,82)","rgb(37,37,37)","rgb(0,0,0)"]},
+PuOr:{3:["rgb(241,163,64)","rgb(247,247,247)","rgb(153,142,195)"],4:["rgb(230,97,1)","rgb(253,184,99)","rgb(178,171,210)","rgb(94,60,153)"],5:["rgb(230,97,1)","rgb(253,184,99)","rgb(247,247,247)","rgb(178,171,210)","rgb(94,60,153)"],6:["rgb(179,88,6)","rgb(241,163,64)","rgb(254,224,182)","rgb(216,218,235)","rgb(153,142,195)","rgb(84,39,136)"],7:["rgb(179,88,6)","rgb(241,163,64)","rgb(254,224,182)","rgb(247,247,247)","rgb(216,218,235)","rgb(153,142,195)","rgb(84,39,136)"],8:["rgb(179,88,6)","rgb(224,130,20)","rgb(253,184,99)","rgb(254,224,182)","rgb(216,218,235)","rgb(178,171,210)","rgb(128,115,172)","rgb(84,39,136)"],9:["rgb(179,88,6)","rgb(224,130,20)","rgb(253,184,99)","rgb(254,224,182)","rgb(247,247,247)","rgb(216,218,235)","rgb(178,171,210)","rgb(128,115,172)","rgb(84,39,136)"],10:["rgb(127,59,8)","rgb(179,88,6)","rgb(224,130,20)","rgb(253,184,99)","rgb(254,224,182)","rgb(216,218,235)","rgb(178,171,210)","rgb(128,115,172)","rgb(84,39,136)","rgb(45,0,75)"],11:["rgb(127,59,8)","rgb(179,88,6)","rgb(224,130,20)","rgb(253,184,99)","rgb(254,224,182)","rgb(247,247,247)","rgb(216,218,235)","rgb(178,171,210)","rgb(128,115,172)","rgb(84,39,136)","rgb(45,0,75)"]},
+BrBG:{3:["rgb(216,179,101)","rgb(245,245,245)","rgb(90,180,172)"],4:["rgb(166,97,26)","rgb(223,194,125)","rgb(128,205,193)","rgb(1,133,113)"],5:["rgb(166,97,26)","rgb(223,194,125)","rgb(245,245,245)","rgb(128,205,193)","rgb(1,133,113)"],6:["rgb(140,81,10)","rgb(216,179,101)","rgb(246,232,195)","rgb(199,234,229)","rgb(90,180,172)","rgb(1,102,94)"],7:["rgb(140,81,10)","rgb(216,179,101)","rgb(246,232,195)","rgb(245,245,245)","rgb(199,234,229)","rgb(90,180,172)","rgb(1,102,94)"],8:["rgb(140,81,10)","rgb(191,129,45)","rgb(223,194,125)","rgb(246,232,195)","rgb(199,234,229)","rgb(128,205,193)","rgb(53,151,143)","rgb(1,102,94)"],9:["rgb(140,81,10)","rgb(191,129,45)","rgb(223,194,125)","rgb(246,232,195)","rgb(245,245,245)","rgb(199,234,229)","rgb(128,205,193)","rgb(53,151,143)","rgb(1,102,94)"],10:["rgb(84,48,5)","rgb(140,81,10)","rgb(191,129,45)","rgb(223,194,125)","rgb(246,232,195)","rgb(199,234,229)","rgb(128,205,193)","rgb(53,151,143)","rgb(1,102,94)","rgb(0,60,48)"],11:["rgb(84,48,5)","rgb(140,81,10)","rgb(191,129,45)","rgb(223,194,125)","rgb(246,232,195)","rgb(245,245,245)","rgb(199,234,229)","rgb(128,205,193)","rgb(53,151,143)","rgb(1,102,94)","rgb(0,60,48)"]},
+PRGn:{3:["rgb(175,141,195)","rgb(247,247,247)","rgb(127,191,123)"],4:["rgb(123,50,148)","rgb(194,165,207)","rgb(166,219,160)","rgb(0,136,55)"],5:["rgb(123,50,148)","rgb(194,165,207)","rgb(247,247,247)","rgb(166,219,160)","rgb(0,136,55)"],6:["rgb(118,42,131)","rgb(175,141,195)","rgb(231,212,232)","rgb(217,240,211)","rgb(127,191,123)","rgb(27,120,55)"],7:["rgb(118,42,131)","rgb(175,141,195)","rgb(231,212,232)","rgb(247,247,247)","rgb(217,240,211)","rgb(127,191,123)","rgb(27,120,55)"],8:["rgb(118,42,131)","rgb(153,112,171)","rgb(194,165,207)","rgb(231,212,232)","rgb(217,240,211)","rgb(166,219,160)","rgb(90,174,97)","rgb(27,120,55)"],9:["rgb(118,42,131)","rgb(153,112,171)","rgb(194,165,207)","rgb(231,212,232)","rgb(247,247,247)","rgb(217,240,211)","rgb(166,219,160)","rgb(90,174,97)","rgb(27,120,55)"],10:["rgb(64,0,75)","rgb(118,42,131)","rgb(153,112,171)","rgb(194,165,207)","rgb(231,212,232)","rgb(217,240,211)","rgb(166,219,160)","rgb(90,174,97)","rgb(27,120,55)","rgb(0,68,27)"],11:["rgb(64,0,75)","rgb(118,42,131)","rgb(153,112,171)","rgb(194,165,207)","rgb(231,212,232)","rgb(247,247,247)","rgb(217,240,211)","rgb(166,219,160)","rgb(90,174,97)","rgb(27,120,55)","rgb(0,68,27)"]},
+PiYG:{3:["rgb(233,163,201)","rgb(247,247,247)","rgb(161,215,106)"],4:["rgb(208,28,139)","rgb(241,182,218)","rgb(184,225,134)","rgb(77,172,38)"],5:["rgb(208,28,139)","rgb(241,182,218)","rgb(247,247,247)","rgb(184,225,134)","rgb(77,172,38)"],6:["rgb(197,27,125)","rgb(233,163,201)","rgb(253,224,239)","rgb(230,245,208)","rgb(161,215,106)","rgb(77,146,33)"],7:["rgb(197,27,125)","rgb(233,163,201)","rgb(253,224,239)","rgb(247,247,247)","rgb(230,245,208)","rgb(161,215,106)","rgb(77,146,33)"],8:["rgb(197,27,125)","rgb(222,119,174)","rgb(241,182,218)","rgb(253,224,239)","rgb(230,245,208)","rgb(184,225,134)","rgb(127,188,65)","rgb(77,146,33)"],9:["rgb(197,27,125)","rgb(222,119,174)","rgb(241,182,218)","rgb(253,224,239)","rgb(247,247,247)","rgb(230,245,208)","rgb(184,225,134)","rgb(127,188,65)","rgb(77,146,33)"],10:["rgb(142,1,82)","rgb(197,27,125)","rgb(222,119,174)","rgb(241,182,218)","rgb(253,224,239)","rgb(230,245,208)","rgb(184,225,134)","rgb(127,188,65)","rgb(77,146,33)","rgb(39,100,25)"],11:["rgb(142,1,82)","rgb(197,27,125)","rgb(222,119,174)","rgb(241,182,218)","rgb(253,224,239)","rgb(247,247,247)","rgb(230,245,208)","rgb(184,225,134)","rgb(127,188,65)","rgb(77,146,33)","rgb(39,100,25)"]},
+RdBu:{3:["rgb(239,138,98)","rgb(247,247,247)","rgb(103,169,207)"],4:["rgb(202,0,32)","rgb(244,165,130)","rgb(146,197,222)","rgb(5,113,176)"],5:["rgb(202,0,32)","rgb(244,165,130)","rgb(247,247,247)","rgb(146,197,222)","rgb(5,113,176)"],6:["rgb(178,24,43)","rgb(239,138,98)","rgb(253,219,199)","rgb(209,229,240)","rgb(103,169,207)","rgb(33,102,172)"],7:["rgb(178,24,43)","rgb(239,138,98)","rgb(253,219,199)","rgb(247,247,247)","rgb(209,229,240)","rgb(103,169,207)","rgb(33,102,172)"],8:["rgb(178,24,43)","rgb(214,96,77)","rgb(244,165,130)","rgb(253,219,199)","rgb(209,229,240)","rgb(146,197,222)","rgb(67,147,195)","rgb(33,102,172)"],9:["rgb(178,24,43)","rgb(214,96,77)","rgb(244,165,130)","rgb(253,219,199)","rgb(247,247,247)","rgb(209,229,240)","rgb(146,197,222)","rgb(67,147,195)","rgb(33,102,172)"],10:["rgb(103,0,31)","rgb(178,24,43)","rgb(214,96,77)","rgb(244,165,130)","rgb(253,219,199)","rgb(209,229,240)","rgb(146,197,222)","rgb(67,147,195)","rgb(33,102,172)","rgb(5,48,97)"],11:["rgb(103,0,31)","rgb(178,24,43)","rgb(214,96,77)","rgb(244,165,130)","rgb(253,219,199)","rgb(247,247,247)","rgb(209,229,240)","rgb(146,197,222)","rgb(67,147,195)","rgb(33,102,172)","rgb(5,48,97)"]},
+RdGy:{3:["rgb(239,138,98)","rgb(255,255,255)","rgb(153,153,153)"],4:["rgb(202,0,32)","rgb(244,165,130)","rgb(186,186,186)","rgb(64,64,64)"],5:["rgb(202,0,32)","rgb(244,165,130)","rgb(255,255,255)","rgb(186,186,186)","rgb(64,64,64)"],6:["rgb(178,24,43)","rgb(239,138,98)","rgb(253,219,199)","rgb(224,224,224)","rgb(153,153,153)","rgb(77,77,77)"],7:["rgb(178,24,43)","rgb(239,138,98)","rgb(253,219,199)","rgb(255,255,255)","rgb(224,224,224)","rgb(153,153,153)","rgb(77,77,77)"],8:["rgb(178,24,43)","rgb(214,96,77)","rgb(244,165,130)","rgb(253,219,199)","rgb(224,224,224)","rgb(186,186,186)","rgb(135,135,135)","rgb(77,77,77)"],9:["rgb(178,24,43)","rgb(214,96,77)","rgb(244,165,130)","rgb(253,219,199)","rgb(255,255,255)","rgb(224,224,224)","rgb(186,186,186)","rgb(135,135,135)","rgb(77,77,77)"],10:["rgb(103,0,31)","rgb(178,24,43)","rgb(214,96,77)","rgb(244,165,130)","rgb(253,219,199)","rgb(224,224,224)","rgb(186,186,186)","rgb(135,135,135)","rgb(77,77,77)","rgb(26,26,26)"],11:["rgb(103,0,31)","rgb(178,24,43)","rgb(214,96,77)","rgb(244,165,130)","rgb(253,219,199)","rgb(255,255,255)","rgb(224,224,224)","rgb(186,186,186)","rgb(135,135,135)","rgb(77,77,77)","rgb(26,26,26)"]},
+RdYlBu:{3:["rgb(252,141,89)","rgb(255,255,191)","rgb(145,191,219)"],4:["rgb(215,25,28)","rgb(253,174,97)","rgb(171,217,233)","rgb(44,123,182)"],5:["rgb(215,25,28)","rgb(253,174,97)","rgb(255,255,191)","rgb(171,217,233)","rgb(44,123,182)"],6:["rgb(215,48,39)","rgb(252,141,89)","rgb(254,224,144)","rgb(224,243,248)","rgb(145,191,219)","rgb(69,117,180)"],7:["rgb(215,48,39)","rgb(252,141,89)","rgb(254,224,144)","rgb(255,255,191)","rgb(224,243,248)","rgb(145,191,219)","rgb(69,117,180)"],8:["rgb(215,48,39)","rgb(244,109,67)","rgb(253,174,97)","rgb(254,224,144)","rgb(224,243,248)","rgb(171,217,233)","rgb(116,173,209)","rgb(69,117,180)"],9:["rgb(215,48,39)","rgb(244,109,67)","rgb(253,174,97)","rgb(254,224,144)","rgb(255,255,191)","rgb(224,243,248)","rgb(171,217,233)","rgb(116,173,209)","rgb(69,117,180)"],10:["rgb(165,0,38)","rgb(215,48,39)","rgb(244,109,67)","rgb(253,174,97)","rgb(254,224,144)","rgb(224,243,248)","rgb(171,217,233)","rgb(116,173,209)","rgb(69,117,180)","rgb(49,54,149)"],11:["rgb(165,0,38)","rgb(215,48,39)","rgb(244,109,67)","rgb(253,174,97)","rgb(254,224,144)","rgb(255,255,191)","rgb(224,243,248)","rgb(171,217,233)","rgb(116,173,209)","rgb(69,117,180)","rgb(49,54,149)"]},
+Spectral:{3:["rgb(252,141,89)","rgb(255,255,191)","rgb(153,213,148)"],4:["rgb(215,25,28)","rgb(253,174,97)","rgb(171,221,164)","rgb(43,131,186)"],5:["rgb(215,25,28)","rgb(253,174,97)","rgb(255,255,191)","rgb(171,221,164)","rgb(43,131,186)"],6:["rgb(213,62,79)","rgb(252,141,89)","rgb(254,224,139)","rgb(230,245,152)","rgb(153,213,148)","rgb(50,136,189)"],7:["rgb(213,62,79)","rgb(252,141,89)","rgb(254,224,139)","rgb(255,255,191)","rgb(230,245,152)","rgb(153,213,148)","rgb(50,136,189)"],8:["rgb(213,62,79)","rgb(244,109,67)","rgb(253,174,97)","rgb(254,224,139)","rgb(230,245,152)","rgb(171,221,164)","rgb(102,194,165)","rgb(50,136,189)"],9:["rgb(213,62,79)","rgb(244,109,67)","rgb(253,174,97)","rgb(254,224,139)","rgb(255,255,191)","rgb(230,245,152)","rgb(171,221,164)","rgb(102,194,165)","rgb(50,136,189)"],10:["rgb(158,1,66)","rgb(213,62,79)","rgb(244,109,67)","rgb(253,174,97)","rgb(254,224,139)","rgb(230,245,152)","rgb(171,221,164)","rgb(102,194,165)","rgb(50,136,189)","rgb(94,79,162)"],11:["rgb(158,1,66)","rgb(213,62,79)","rgb(244,109,67)","rgb(253,174,97)","rgb(254,224,139)","rgb(255,255,191)","rgb(230,245,152)","rgb(171,221,164)","rgb(102,194,165)","rgb(50,136,189)","rgb(94,79,162)"]},
+RdYlGn:{3:["rgb(252,141,89)","rgb(255,255,191)","rgb(145,207,96)"],4:["rgb(215,25,28)","rgb(253,174,97)","rgb(166,217,106)","rgb(26,150,65)"],5:["rgb(215,25,28)","rgb(253,174,97)","rgb(255,255,191)","rgb(166,217,106)","rgb(26,150,65)"],6:["rgb(215,48,39)","rgb(252,141,89)","rgb(254,224,139)","rgb(217,239,139)","rgb(145,207,96)","rgb(26,152,80)"],7:["rgb(215,48,39)","rgb(252,141,89)","rgb(254,224,139)","rgb(255,255,191)","rgb(217,239,139)","rgb(145,207,96)","rgb(26,152,80)"],8:["rgb(215,48,39)","rgb(244,109,67)","rgb(253,174,97)","rgb(254,224,139)","rgb(217,239,139)","rgb(166,217,106)","rgb(102,189,99)","rgb(26,152,80)"],9:["rgb(215,48,39)","rgb(244,109,67)","rgb(253,174,97)","rgb(254,224,139)","rgb(255,255,191)","rgb(217,239,139)","rgb(166,217,106)","rgb(102,189,99)","rgb(26,152,80)"],10:["rgb(165,0,38)","rgb(215,48,39)","rgb(244,109,67)","rgb(253,174,97)","rgb(254,224,139)","rgb(217,239,139)","rgb(166,217,106)","rgb(102,189,99)","rgb(26,152,80)","rgb(0,104,55)"],11:["rgb(165,0,38)","rgb(215,48,39)","rgb(244,109,67)","rgb(253,174,97)","rgb(254,224,139)","rgb(255,255,191)","rgb(217,239,139)","rgb(166,217,106)","rgb(102,189,99)","rgb(26,152,80)","rgb(0,104,55)"]}};
diff --git a/static/vendor/d3-2.8.1/lib/jit/LICENSE b/static/vendor/d3-2.8.1/lib/jit/LICENSE
new file mode 100755 (executable)
index 0000000..e55999e
--- /dev/null
@@ -0,0 +1,27 @@
+Copyright (c) 2010, Nicolas Garcia Belmonte
+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.
+
+* Neither the name of the organization nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY NICOLAS GARCIA BELMONTE ``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 NICOLAS GARCIA BELMONTE 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/static/vendor/d3-2.8.1/lib/jquery-ui/LICENSE b/static/vendor/d3-2.8.1/lib/jquery-ui/LICENSE
new file mode 100755 (executable)
index 0000000..2585de2
--- /dev/null
@@ -0,0 +1,25 @@
+Copyright (c) 2010 Paul Bakaus, http://jqueryui.com/
+
+This software consists of voluntary contributions made by many
+individuals (AUTHORS.txt, http://jqueryui.com/about) For exact
+contribution history, see the revision history and logs, available
+at http://jquery-ui.googlecode.com/svn/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png
new file mode 100755 (executable)
index 0000000..954e22d
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png
new file mode 100755 (executable)
index 0000000..64ece57
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_flat_10_000000_40x100.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_flat_10_000000_40x100.png
new file mode 100755 (executable)
index 0000000..abdc010
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_flat_10_000000_40x100.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png
new file mode 100755 (executable)
index 0000000..9b383f4
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png
new file mode 100755 (executable)
index 0000000..a23baad
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100755 (executable)
index 0000000..42ccba2
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png
new file mode 100755 (executable)
index 0000000..39d5824
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
new file mode 100755 (executable)
index 0000000..f127367
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
new file mode 100755 (executable)
index 0000000..359397a
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_222222_256x240.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_222222_256x240.png
new file mode 100755 (executable)
index 0000000..b273ff1
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_222222_256x240.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_228ef1_256x240.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_228ef1_256x240.png
new file mode 100755 (executable)
index 0000000..a641a37
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_228ef1_256x240.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ef8c08_256x240.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ef8c08_256x240.png
new file mode 100755 (executable)
index 0000000..85e63e9
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ef8c08_256x240.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ffd27a_256x240.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ffd27a_256x240.png
new file mode 100755 (executable)
index 0000000..e117eff
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ffd27a_256x240.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ffffff_256x240.png b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ffffff_256x240.png
new file mode 100755 (executable)
index 0000000..42f8f99
Binary files /dev/null and b/static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ffffff_256x240.png differ
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/jquery-ui.css b/static/vendor/d3-2.8.1/lib/jquery-ui/jquery-ui.css
new file mode 100755 (executable)
index 0000000..7f1ea36
--- /dev/null
@@ -0,0 +1,318 @@
+/*
+ * jQuery UI CSS Framework 1.8.6
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.6
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
+.ui-widget-content a { color: #333333; }
+.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-right {  -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
+.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*
+ * jQuery UI Slider 1.8.6
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/lib/jquery-ui/jquery-ui.min.js b/static/vendor/d3-2.8.1/lib/jquery-ui/jquery-ui.min.js
new file mode 100755 (executable)
index 0000000..2e175e7
--- /dev/null
@@ -0,0 +1,83 @@
+/*!
+ * jQuery UI 1.8.6
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.6",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,
+NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,
+"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");
+if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f,
+"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,
+d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}});
+c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&
+b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);
+;/*!
+ * jQuery UI Widget 1.8.6
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)b(d).triggerHandler("remove");k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,
+a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.charAt(0)==="_")return h;
+e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,
+this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},
+widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},
+enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+;/*!
+ * jQuery UI Mouse 1.8.6
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ *     jquery.ui.widget.js
+ */
+(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&&
+this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();
+return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&
+this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-
+a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+;/*
+ * jQuery UI Slider 1.8.6
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.mouse.js
+ *     jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options;this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");b.disabled&&this.element.addClass("ui-slider-disabled ui-disabled");
+this.range=d([]);if(b.range){if(b.range===true){this.range=d("<div></div>");if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}else this.range=d("<div></div>");this.range.appendTo(this.element).addClass("ui-slider-range");if(b.range==="min"||b.range==="max")this.range.addClass("ui-slider-range-"+b.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle");
+if(b.values&&b.values.length)for(;d(".ui-slider-handle",this.element).length<b.values.length;)d("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();
+else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!a.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e=
+false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");h=a._start(c,f);if(h===false)return}break}i=a.options.step;h=a.options.values&&a.options.values.length?(g=a.values(f)):(g=a.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=a._valueMin();break;case d.ui.keyCode.END:g=a._valueMax();break;case d.ui.keyCode.PAGE_UP:g=a._trimAlignValue(h+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=a._trimAlignValue(h-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h===
+a._valueMax())return;g=a._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===a._valueMin())return;g=a._trimAlignValue(h-i);break}a._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(c,e);a._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");
+this._mouseDestroy();return this},_mouseCapture:function(a){var b=this.options,c,e,f,h,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(b.range===true&&this.values(1)===b.min){g+=1;f=d(this.handles[g])}if(this._start(a,
+g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();b=f.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-f.width()/2,top:a.pageY-b.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b=
+this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b=
+this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);
+c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var e;if(this.options.values&&this.options.values.length){e=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>e||b===1&&c<e))c=e;if(c!==this.values(b)){e=this.values();e[b]=c;a=this._trigger("slide",a,{handle:this.handles[b],value:c,values:e});this.values(b?0:1);a!==false&&this.values(b,c,true)}}else if(c!==this.value()){a=this._trigger("slide",a,{handle:this.handles[b],value:c});
+a!==false&&this.value(c)}},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value=
+this._trimAlignValue(a);this._refreshValue();this._change(null,0)}return this._value()},values:function(a,b){var c,e,f;if(arguments.length>1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f<c.length;f+=1){c[f]=this._trimAlignValue(e[f]);this._change(null,f)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(a):this.value();
+else return this._values()},_setOption:function(a,b){var c,e=0;if(d.isArray(this.options.values))e=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":if(b){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation();
+this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<e;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a)},_values:function(a){var b,c;if(arguments.length){b=this.options.values[a];
+return b=this._trimAlignValue(b)}else{b=this.options.values.slice();for(c=0;c<b.length;c+=1)b[c]=this._trimAlignValue(b[c]);return b}},_trimAlignValue:function(a){if(a<this._valueMin())return this._valueMin();if(a>this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=a%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a=
+this.options.range,b=this.options,c=this,e=!this._animateOff?b.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},b.animate);if(k===1)c.range[e?"animate":"css"]({width:f-
+g+"%"},{queue:false,duration:b.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},b.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:b.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},
+b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.6"})})(jQuery);
+;
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/lib/jquery/LICENSE b/static/vendor/d3-2.8.1/lib/jquery/LICENSE
new file mode 100755 (executable)
index 0000000..ea33691
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (c) 2010 John Resig, http://jquery.com/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/static/vendor/d3-2.8.1/lib/jquery/jquery.js b/static/vendor/d3-2.8.1/lib/jquery/jquery.js
new file mode 100755 (executable)
index 0000000..ad9a79c
--- /dev/null
@@ -0,0 +1,6883 @@
+/*!
+ * jQuery JavaScript Library v1.4.3
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Oct 14 23:10:06 2010 -0400
+ */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+               // The jQuery object is actually just the init constructor 'enhanced'
+               return new jQuery.fn.init( selector, context );
+       },
+
+       // Map over jQuery in case of overwrite
+       _jQuery = window.jQuery,
+
+       // Map over the $ in case of overwrite
+       _$ = window.$,
+
+       // A central reference to the root jQuery(document)
+       rootjQuery,
+
+       // A simple way to check for HTML strings or ID strings
+       // (both of which we optimize for)
+       quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,
+
+       // Is it a simple selector
+       isSimple = /^.[^:#\[\.,]*$/,
+
+       // Check if a string has a non-whitespace character in it
+       rnotwhite = /\S/,
+       rwhite = /\s/,
+
+       // Used for trimming whitespace
+       trimLeft = /^\s+/,
+       trimRight = /\s+$/,
+
+       // Check for non-word characters
+       rnonword = /\W/,
+
+       // Check for digits
+       rdigit = /\d/,
+
+       // Match a standalone tag
+       rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+       // JSON RegExp
+       rvalidchars = /^[\],:{}\s]*$/,
+       rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+       rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+       rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+       // Useragent RegExp
+       rwebkit = /(webkit)[ \/]([\w.]+)/,
+       ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+       rmsie = /(msie) ([\w.]+)/,
+       rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+       // Keep a UserAgent string for use with jQuery.browser
+       userAgent = navigator.userAgent,
+
+       // For matching the engine and version of the browser
+       browserMatch,
+       
+       // Has the ready events already been bound?
+       readyBound = false,
+       
+       // The functions to execute on DOM ready
+       readyList = [],
+
+       // The ready event handler
+       DOMContentLoaded,
+
+       // Save a reference to some core methods
+       toString = Object.prototype.toString,
+       hasOwn = Object.prototype.hasOwnProperty,
+       push = Array.prototype.push,
+       slice = Array.prototype.slice,
+       trim = String.prototype.trim,
+       indexOf = Array.prototype.indexOf,
+       
+       // [[Class]] -> type pairs
+       class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+       init: function( selector, context ) {
+               var match, elem, ret, doc;
+
+               // Handle $(""), $(null), or $(undefined)
+               if ( !selector ) {
+                       return this;
+               }
+
+               // Handle $(DOMElement)
+               if ( selector.nodeType ) {
+                       this.context = this[0] = selector;
+                       this.length = 1;
+                       return this;
+               }
+               
+               // The body element only exists once, optimize finding it
+               if ( selector === "body" && !context && document.body ) {
+                       this.context = document;
+                       this[0] = document.body;
+                       this.selector = "body";
+                       this.length = 1;
+                       return this;
+               }
+
+               // Handle HTML strings
+               if ( typeof selector === "string" ) {
+                       // Are we dealing with HTML string or an ID?
+                       match = quickExpr.exec( selector );
+
+                       // Verify a match, and that no context was specified for #id
+                       if ( match && (match[1] || !context) ) {
+
+                               // HANDLE: $(html) -> $(array)
+                               if ( match[1] ) {
+                                       doc = (context ? context.ownerDocument || context : document);
+
+                                       // If a single string is passed in and it's a single tag
+                                       // just do a createElement and skip the rest
+                                       ret = rsingleTag.exec( selector );
+
+                                       if ( ret ) {
+                                               if ( jQuery.isPlainObject( context ) ) {
+                                                       selector = [ document.createElement( ret[1] ) ];
+                                                       jQuery.fn.attr.call( selector, context, true );
+
+                                               } else {
+                                                       selector = [ doc.createElement( ret[1] ) ];
+                                               }
+
+                                       } else {
+                                               ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+                                               selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
+                                       }
+                                       
+                                       return jQuery.merge( this, selector );
+                                       
+                               // HANDLE: $("#id")
+                               } else {
+                                       elem = document.getElementById( match[2] );
+
+                                       // Check parentNode to catch when Blackberry 4.6 returns
+                                       // nodes that are no longer in the document #6963
+                                       if ( elem && elem.parentNode ) {
+                                               // Handle the case where IE and Opera return items
+                                               // by name instead of ID
+                                               if ( elem.id !== match[2] ) {
+                                                       return rootjQuery.find( selector );
+                                               }
+
+                                               // Otherwise, we inject the element directly into the jQuery object
+                                               this.length = 1;
+                                               this[0] = elem;
+                                       }
+
+                                       this.context = document;
+                                       this.selector = selector;
+                                       return this;
+                               }
+
+                       // HANDLE: $("TAG")
+                       } else if ( !context && !rnonword.test( selector ) ) {
+                               this.selector = selector;
+                               this.context = document;
+                               selector = document.getElementsByTagName( selector );
+                               return jQuery.merge( this, selector );
+
+                       // HANDLE: $(expr, $(...))
+                       } else if ( !context || context.jquery ) {
+                               return (context || rootjQuery).find( selector );
+
+                       // HANDLE: $(expr, context)
+                       // (which is just equivalent to: $(context).find(expr)
+                       } else {
+                               return jQuery( context ).find( selector );
+                       }
+
+               // HANDLE: $(function)
+               // Shortcut for document ready
+               } else if ( jQuery.isFunction( selector ) ) {
+                       return rootjQuery.ready( selector );
+               }
+
+               if (selector.selector !== undefined) {
+                       this.selector = selector.selector;
+                       this.context = selector.context;
+               }
+
+               return jQuery.makeArray( selector, this );
+       },
+
+       // Start with an empty selector
+       selector: "",
+
+       // The current version of jQuery being used
+       jquery: "1.4.3",
+
+       // The default length of a jQuery object is 0
+       length: 0,
+
+       // The number of elements contained in the matched element set
+       size: function() {
+               return this.length;
+       },
+
+       toArray: function() {
+               return slice.call( this, 0 );
+       },
+
+       // Get the Nth element in the matched element set OR
+       // Get the whole matched element set as a clean array
+       get: function( num ) {
+               return num == null ?
+
+                       // Return a 'clean' array
+                       this.toArray() :
+
+                       // Return just the object
+                       ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
+       },
+
+       // Take an array of elements and push it onto the stack
+       // (returning the new matched element set)
+       pushStack: function( elems, name, selector ) {
+               // Build a new jQuery matched element set
+               var ret = jQuery();
+
+               if ( jQuery.isArray( elems ) ) {
+                       push.apply( ret, elems );
+               
+               } else {
+                       jQuery.merge( ret, elems );
+               }
+
+               // Add the old object onto the stack (as a reference)
+               ret.prevObject = this;
+
+               ret.context = this.context;
+
+               if ( name === "find" ) {
+                       ret.selector = this.selector + (this.selector ? " " : "") + selector;
+               } else if ( name ) {
+                       ret.selector = this.selector + "." + name + "(" + selector + ")";
+               }
+
+               // Return the newly-formed element set
+               return ret;
+       },
+
+       // Execute a callback for every element in the matched set.
+       // (You can seed the arguments with an array of args, but this is
+       // only used internally.)
+       each: function( callback, args ) {
+               return jQuery.each( this, callback, args );
+       },
+       
+       ready: function( fn ) {
+               // Attach the listeners
+               jQuery.bindReady();
+
+               // If the DOM is already ready
+               if ( jQuery.isReady ) {
+                       // Execute the function immediately
+                       fn.call( document, jQuery );
+
+               // Otherwise, remember the function for later
+               } else if ( readyList ) {
+                       // Add the function to the wait list
+                       readyList.push( fn );
+               }
+
+               return this;
+       },
+       
+       eq: function( i ) {
+               return i === -1 ?
+                       this.slice( i ) :
+                       this.slice( i, +i + 1 );
+       },
+
+       first: function() {
+               return this.eq( 0 );
+       },
+
+       last: function() {
+               return this.eq( -1 );
+       },
+
+       slice: function() {
+               return this.pushStack( slice.apply( this, arguments ),
+                       "slice", slice.call(arguments).join(",") );
+       },
+
+       map: function( callback ) {
+               return this.pushStack( jQuery.map(this, function( elem, i ) {
+                       return callback.call( elem, i, elem );
+               }));
+       },
+       
+       end: function() {
+               return this.prevObject || jQuery(null);
+       },
+
+       // For internal use only.
+       // Behaves like an Array's method, not like a jQuery method.
+       push: push,
+       sort: [].sort,
+       splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+       // copy reference to target object
+       var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy, copyIsArray;
+
+       // Handle a deep copy situation
+       if ( typeof target === "boolean" ) {
+               deep = target;
+               target = arguments[1] || {};
+               // skip the boolean and the target
+               i = 2;
+       }
+
+       // Handle case when target is a string or something (possible in deep copy)
+       if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+               target = {};
+       }
+
+       // extend jQuery itself if only one argument is passed
+       if ( length === i ) {
+               target = this;
+               --i;
+       }
+
+       for ( ; i < length; i++ ) {
+               // Only deal with non-null/undefined values
+               if ( (options = arguments[ i ]) != null ) {
+                       // Extend the base object
+                       for ( name in options ) {
+                               src = target[ name ];
+                               copy = options[ name ];
+
+                               // Prevent never-ending loop
+                               if ( target === copy ) {
+                                       continue;
+                               }
+
+                               // Recurse if we're merging plain objects or arrays
+                               if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+                                       if ( copyIsArray ) {
+                                               copyIsArray = false;
+                                               clone = src && jQuery.isArray(src) ? src : [];
+
+                                       } else {
+                                               clone = src && jQuery.isPlainObject(src) ? src : {};
+                                       }
+
+                                       // Never move original objects, clone them
+                                       target[ name ] = jQuery.extend( deep, clone, copy );
+
+                               // Don't bring in undefined values
+                               } else if ( copy !== undefined ) {
+                                       target[ name ] = copy;
+                               }
+                       }
+               }
+       }
+
+       // Return the modified object
+       return target;
+};
+
+jQuery.extend({
+       noConflict: function( deep ) {
+               window.$ = _$;
+
+               if ( deep ) {
+                       window.jQuery = _jQuery;
+               }
+
+               return jQuery;
+       },
+       
+       // Is the DOM ready to be used? Set to true once it occurs.
+       isReady: false,
+
+       // A counter to track how many items to wait for before
+       // the ready event fires. See #6781
+       readyWait: 1,
+       
+       // Handle when the DOM is ready
+       ready: function( wait ) {
+               // A third-party is pushing the ready event forwards
+               if ( wait === true ) {
+                       jQuery.readyWait--;
+               }
+
+               // Make sure that the DOM is not already loaded
+               if ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {
+                       // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+                       if ( !document.body ) {
+                               return setTimeout( jQuery.ready, 1 );
+                       }
+
+                       // Remember that the DOM is ready
+                       jQuery.isReady = true;
+
+                       // If a normal DOM Ready event fired, decrement, and wait if need be
+                       if ( wait !== true && --jQuery.readyWait > 0 ) {
+                               return;
+                       }
+
+                       // If there are functions bound, to execute
+                       if ( readyList ) {
+                               // Execute all of them
+                               var fn, i = 0;
+                               while ( (fn = readyList[ i++ ]) ) {
+                                       fn.call( document, jQuery );
+                               }
+
+                               // Reset the list of functions
+                               readyList = null;
+                       }
+
+                       // Trigger any bound ready events
+                       if ( jQuery.fn.triggerHandler ) {
+                               jQuery( document ).triggerHandler( "ready" );
+                       }
+               }
+       },
+       
+       bindReady: function() {
+               if ( readyBound ) {
+                       return;
+               }
+
+               readyBound = true;
+
+               // Catch cases where $(document).ready() is called after the
+               // browser event has already occurred.
+               if ( document.readyState === "complete" ) {
+                       // Handle it asynchronously to allow scripts the opportunity to delay ready
+                       return setTimeout( jQuery.ready, 1 );
+               }
+
+               // Mozilla, Opera and webkit nightlies currently support this event
+               if ( document.addEventListener ) {
+                       // Use the handy event callback
+                       document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+                       
+                       // A fallback to window.onload, that will always work
+                       window.addEventListener( "load", jQuery.ready, false );
+
+               // If IE event model is used
+               } else if ( document.attachEvent ) {
+                       // ensure firing before onload,
+                       // maybe late but safe also for iframes
+                       document.attachEvent("onreadystatechange", DOMContentLoaded);
+                       
+                       // A fallback to window.onload, that will always work
+                       window.attachEvent( "onload", jQuery.ready );
+
+                       // If IE and not a frame
+                       // continually check to see if the document is ready
+                       var toplevel = false;
+
+                       try {
+                               toplevel = window.frameElement == null;
+                       } catch(e) {}
+
+                       if ( document.documentElement.doScroll && toplevel ) {
+                               doScrollCheck();
+                       }
+               }
+       },
+
+       // See test/unit/core.js for details concerning isFunction.
+       // Since version 1.3, DOM methods and functions like alert
+       // aren't supported. They return false on IE (#2968).
+       isFunction: function( obj ) {
+               return jQuery.type(obj) === "function";
+       },
+
+       isArray: Array.isArray || function( obj ) {
+               return jQuery.type(obj) === "array";
+       },
+
+       // A crude way of determining if an object is a window
+       isWindow: function( obj ) {
+               return obj && typeof obj === "object" && "setInterval" in obj;
+       },
+
+       isNaN: function( obj ) {
+               return obj == null || !rdigit.test( obj ) || isNaN( obj );
+       },
+
+       type: function( obj ) {
+               return obj == null ?
+                       String( obj ) :
+                       class2type[ toString.call(obj) ] || "object";
+       },
+
+       isPlainObject: function( obj ) {
+               // Must be an Object.
+               // Because of IE, we also have to check the presence of the constructor property.
+               // Make sure that DOM nodes and window objects don't pass through, as well
+               if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+                       return false;
+               }
+               
+               // Not own constructor property must be Object
+               if ( obj.constructor &&
+                       !hasOwn.call(obj, "constructor") &&
+                       !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+                       return false;
+               }
+               
+               // Own properties are enumerated firstly, so to speed up,
+               // if last one is own, then all properties are own.
+       
+               var key;
+               for ( key in obj ) {}
+               
+               return key === undefined || hasOwn.call( obj, key );
+       },
+
+       isEmptyObject: function( obj ) {
+               for ( var name in obj ) {
+                       return false;
+               }
+               return true;
+       },
+       
+       error: function( msg ) {
+               throw msg;
+       },
+       
+       parseJSON: function( data ) {
+               if ( typeof data !== "string" || !data ) {
+                       return null;
+               }
+
+               // Make sure leading/trailing whitespace is removed (IE can't handle it)
+               data = jQuery.trim( data );
+               
+               // Make sure the incoming data is actual JSON
+               // Logic borrowed from http://json.org/json2.js
+               if ( rvalidchars.test(data.replace(rvalidescape, "@")
+                       .replace(rvalidtokens, "]")
+                       .replace(rvalidbraces, "")) ) {
+
+                       // Try to use the native JSON parser first
+                       return window.JSON && window.JSON.parse ?
+                               window.JSON.parse( data ) :
+                               (new Function("return " + data))();
+
+               } else {
+                       jQuery.error( "Invalid JSON: " + data );
+               }
+       },
+
+       noop: function() {},
+
+       // Evalulates a script in a global context
+       globalEval: function( data ) {
+               if ( data && rnotwhite.test(data) ) {
+                       // Inspired by code by Andrea Giammarchi
+                       // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+                       var head = document.getElementsByTagName("head")[0] || document.documentElement,
+                               script = document.createElement("script");
+
+                       script.type = "text/javascript";
+
+                       if ( jQuery.support.scriptEval ) {
+                               script.appendChild( document.createTextNode( data ) );
+                       } else {
+                               script.text = data;
+                       }
+
+                       // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+                       // This arises when a base node is used (#2709).
+                       head.insertBefore( script, head.firstChild );
+                       head.removeChild( script );
+               }
+       },
+
+       nodeName: function( elem, name ) {
+               return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+       },
+
+       // args is for internal usage only
+       each: function( object, callback, args ) {
+               var name, i = 0,
+                       length = object.length,
+                       isObj = length === undefined || jQuery.isFunction(object);
+
+               if ( args ) {
+                       if ( isObj ) {
+                               for ( name in object ) {
+                                       if ( callback.apply( object[ name ], args ) === false ) {
+                                               break;
+                                       }
+                               }
+                       } else {
+                               for ( ; i < length; ) {
+                                       if ( callback.apply( object[ i++ ], args ) === false ) {
+                                               break;
+                                       }
+                               }
+                       }
+
+               // A special, fast, case for the most common use of each
+               } else {
+                       if ( isObj ) {
+                               for ( name in object ) {
+                                       if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+                                               break;
+                                       }
+                               }
+                       } else {
+                               for ( var value = object[0];
+                                       i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
+                       }
+               }
+
+               return object;
+       },
+
+       // Use native String.trim function wherever possible
+       trim: trim ?
+               function( text ) {
+                       return text == null ?
+                               "" :
+                               trim.call( text );
+               } :
+
+               // Otherwise use our own trimming functionality
+               function( text ) {
+                       return text == null ?
+                               "" :
+                               text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+               },
+
+       // results is for internal usage only
+       makeArray: function( array, results ) {
+               var ret = results || [];
+
+               if ( array != null ) {
+                       // The window, strings (and functions) also have 'length'
+                       // The extra typeof function check is to prevent crashes
+                       // in Safari 2 (See: #3039)
+                       // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+                       var type = jQuery.type(array);
+
+                       if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
+                               push.call( ret, array );
+                       } else {
+                               jQuery.merge( ret, array );
+                       }
+               }
+
+               return ret;
+       },
+
+       inArray: function( elem, array ) {
+               if ( array.indexOf ) {
+                       return array.indexOf( elem );
+               }
+
+               for ( var i = 0, length = array.length; i < length; i++ ) {
+                       if ( array[ i ] === elem ) {
+                               return i;
+                       }
+               }
+
+               return -1;
+       },
+
+       merge: function( first, second ) {
+               var i = first.length, j = 0;
+
+               if ( typeof second.length === "number" ) {
+                       for ( var l = second.length; j < l; j++ ) {
+                               first[ i++ ] = second[ j ];
+                       }
+               
+               } else {
+                       while ( second[j] !== undefined ) {
+                               first[ i++ ] = second[ j++ ];
+                       }
+               }
+
+               first.length = i;
+
+               return first;
+       },
+
+       grep: function( elems, callback, inv ) {
+               var ret = [], retVal;
+               inv = !!inv;
+
+               // Go through the array, only saving the items
+               // that pass the validator function
+               for ( var i = 0, length = elems.length; i < length; i++ ) {
+                       retVal = !!callback( elems[ i ], i );
+                       if ( inv !== retVal ) {
+                               ret.push( elems[ i ] );
+                       }
+               }
+
+               return ret;
+       },
+
+       // arg is for internal usage only
+       map: function( elems, callback, arg ) {
+               var ret = [], value;
+
+               // Go through the array, translating each of the items to their
+               // new value (or values).
+               for ( var i = 0, length = elems.length; i < length; i++ ) {
+                       value = callback( elems[ i ], i, arg );
+
+                       if ( value != null ) {
+                               ret[ ret.length ] = value;
+                       }
+               }
+
+               return ret.concat.apply( [], ret );
+       },
+
+       // A global GUID counter for objects
+       guid: 1,
+
+       proxy: function( fn, proxy, thisObject ) {
+               if ( arguments.length === 2 ) {
+                       if ( typeof proxy === "string" ) {
+                               thisObject = fn;
+                               fn = thisObject[ proxy ];
+                               proxy = undefined;
+
+                       } else if ( proxy && !jQuery.isFunction( proxy ) ) {
+                               thisObject = proxy;
+                               proxy = undefined;
+                       }
+               }
+
+               if ( !proxy && fn ) {
+                       proxy = function() {
+                               return fn.apply( thisObject || this, arguments );
+                       };
+               }
+
+               // Set the guid of unique handler to the same of original handler, so it can be removed
+               if ( fn ) {
+                       proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+               }
+
+               // So proxy can be declared as an argument
+               return proxy;
+       },
+
+       // Mutifunctional method to get and set values to a collection
+       // The value/s can be optionally by executed if its a function
+       access: function( elems, key, value, exec, fn, pass ) {
+               var length = elems.length;
+       
+               // Setting many attributes
+               if ( typeof key === "object" ) {
+                       for ( var k in key ) {
+                               jQuery.access( elems, k, key[k], exec, fn, value );
+                       }
+                       return elems;
+               }
+       
+               // Setting one attribute
+               if ( value !== undefined ) {
+                       // Optionally, function values get executed if exec is true
+                       exec = !pass && exec && jQuery.isFunction(value);
+               
+                       for ( var i = 0; i < length; i++ ) {
+                               fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+                       }
+               
+                       return elems;
+               }
+       
+               // Getting an attribute
+               return length ? fn( elems[0], key ) : undefined;
+       },
+
+       now: function() {
+               return (new Date()).getTime();
+       },
+
+       // Use of jQuery.browser is frowned upon.
+       // More details: http://docs.jquery.com/Utilities/jQuery.browser
+       uaMatch: function( ua ) {
+               ua = ua.toLowerCase();
+
+               var match = rwebkit.exec( ua ) ||
+                       ropera.exec( ua ) ||
+                       rmsie.exec( ua ) ||
+                       ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+                       [];
+
+               return { browser: match[1] || "", version: match[2] || "0" };
+       },
+
+       browser: {}
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+       class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+       jQuery.browser[ browserMatch.browser ] = true;
+       jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+       jQuery.browser.safari = true;
+}
+
+if ( indexOf ) {
+       jQuery.inArray = function( elem, array ) {
+               return indexOf.call( array, elem );
+       };
+}
+
+// Verify that \s matches non-breaking spaces
+// (IE fails on this test)
+if ( !rwhite.test( "\xA0" ) ) {
+       trimLeft = /^[\s\xA0]+/;
+       trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+       DOMContentLoaded = function() {
+               document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+               jQuery.ready();
+       };
+
+} else if ( document.attachEvent ) {
+       DOMContentLoaded = function() {
+               // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+               if ( document.readyState === "complete" ) {
+                       document.detachEvent( "onreadystatechange", DOMContentLoaded );
+                       jQuery.ready();
+               }
+       };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+       if ( jQuery.isReady ) {
+               return;
+       }
+
+       try {
+               // If IE is used, use the trick by Diego Perini
+               // http://javascript.nwbox.com/IEContentLoaded/
+               document.documentElement.doScroll("left");
+       } catch(e) {
+               setTimeout( doScrollCheck, 1 );
+               return;
+       }
+
+       // and execute any waiting functions
+       jQuery.ready();
+}
+
+// Expose jQuery to the global object
+return (window.jQuery = window.$ = jQuery);
+
+})();
+
+
+(function() {
+
+       jQuery.support = {};
+
+       var root = document.documentElement,
+               script = document.createElement("script"),
+               div = document.createElement("div"),
+               id = "script" + jQuery.now();
+
+       div.style.display = "none";
+       div.innerHTML = "   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+       var all = div.getElementsByTagName("*"),
+               a = div.getElementsByTagName("a")[0],
+               select = document.createElement("select"),
+               opt = select.appendChild( document.createElement("option") );
+
+       // Can't get basic test support
+       if ( !all || !all.length || !a ) {
+               return;
+       }
+
+       jQuery.support = {
+               // IE strips leading whitespace when .innerHTML is used
+               leadingWhitespace: div.firstChild.nodeType === 3,
+
+               // Make sure that tbody elements aren't automatically inserted
+               // IE will insert them into empty tables
+               tbody: !div.getElementsByTagName("tbody").length,
+
+               // Make sure that link elements get serialized correctly by innerHTML
+               // This requires a wrapper element in IE
+               htmlSerialize: !!div.getElementsByTagName("link").length,
+
+               // Get the style information from getAttribute
+               // (IE uses .cssText insted)
+               style: /red/.test( a.getAttribute("style") ),
+
+               // Make sure that URLs aren't manipulated
+               // (IE normalizes it by default)
+               hrefNormalized: a.getAttribute("href") === "/a",
+
+               // Make sure that element opacity exists
+               // (IE uses filter instead)
+               // Use a regex to work around a WebKit issue. See #5145
+               opacity: /^0.55$/.test( a.style.opacity ),
+
+               // Verify style float existence
+               // (IE uses styleFloat instead of cssFloat)
+               cssFloat: !!a.style.cssFloat,
+
+               // Make sure that if no value is specified for a checkbox
+               // that it defaults to "on".
+               // (WebKit defaults to "" instead)
+               checkOn: div.getElementsByTagName("input")[0].value === "on",
+
+               // Make sure that a selected-by-default option has a working selected property.
+               // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+               optSelected: opt.selected,
+
+               // Will be defined later
+               optDisabled: false,
+               checkClone: false,
+               scriptEval: false,
+               noCloneEvent: true,
+               boxModel: null,
+               inlineBlockNeedsLayout: false,
+               shrinkWrapBlocks: false,
+               reliableHiddenOffsets: true
+       };
+
+       // Make sure that the options inside disabled selects aren't marked as disabled
+       // (WebKit marks them as diabled)
+       select.disabled = true;
+       jQuery.support.optDisabled = !opt.disabled;
+
+       script.type = "text/javascript";
+       try {
+               script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+       } catch(e) {}
+
+       root.insertBefore( script, root.firstChild );
+
+       // Make sure that the execution of code works by injecting a script
+       // tag with appendChild/createTextNode
+       // (IE doesn't support this, fails, and uses .text instead)
+       if ( window[ id ] ) {
+               jQuery.support.scriptEval = true;
+               delete window[ id ];
+       }
+
+       root.removeChild( script );
+
+       if ( div.attachEvent && div.fireEvent ) {
+               div.attachEvent("onclick", function click() {
+                       // Cloning a node shouldn't copy over any
+                       // bound event handlers (IE does this)
+                       jQuery.support.noCloneEvent = false;
+                       div.detachEvent("onclick", click);
+               });
+               div.cloneNode(true).fireEvent("onclick");
+       }
+
+       div = document.createElement("div");
+       div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
+
+       var fragment = document.createDocumentFragment();
+       fragment.appendChild( div.firstChild );
+
+       // WebKit doesn't clone checked state correctly in fragments
+       jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
+
+       // Figure out if the W3C box model works as expected
+       // document.body must exist before we can do this
+       jQuery(function() {
+               var div = document.createElement("div");
+               div.style.width = div.style.paddingLeft = "1px";
+
+               document.body.appendChild( div );
+               jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+
+               if ( "zoom" in div.style ) {
+                       // Check if natively block-level elements act like inline-block
+                       // elements when setting their display to 'inline' and giving
+                       // them layout
+                       // (IE < 8 does this)
+                       div.style.display = "inline";
+                       div.style.zoom = 1;
+                       jQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;
+
+                       // Check if elements with layout shrink-wrap their children
+                       // (IE 6 does this)
+                       div.style.display = "";
+                       div.innerHTML = "<div style='width:4px;'></div>";
+                       jQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;
+               }
+
+               div.innerHTML = "<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";
+               var tds = div.getElementsByTagName("td");
+
+               // Check if table cells still have offsetWidth/Height when they are set
+               // to display:none and there are still other visible table cells in a
+               // table row; if so, offsetWidth/Height are not reliable for use when
+               // determining if an element has been hidden directly using
+               // display:none (it is still safe to use offsets if a parent element is
+               // hidden; don safety goggles and see bug #4512 for more information).
+               // (only IE 8 fails this test)
+               jQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;
+
+               tds[0].style.display = "";
+               tds[1].style.display = "none";
+
+               // Check if empty table cells still have offsetWidth/Height
+               // (IE < 8 fail this test)
+               jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;
+               div.innerHTML = "";
+
+               document.body.removeChild( div ).style.display = "none";
+               div = tds = null;
+       });
+
+       // Technique from Juriy Zaytsev
+       // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+       var eventSupported = function( eventName ) {
+               var el = document.createElement("div");
+               eventName = "on" + eventName;
+
+               var isSupported = (eventName in el);
+               if ( !isSupported ) {
+                       el.setAttribute(eventName, "return;");
+                       isSupported = typeof el[eventName] === "function";
+               }
+               el = null;
+
+               return isSupported;
+       };
+
+       jQuery.support.submitBubbles = eventSupported("submit");
+       jQuery.support.changeBubbles = eventSupported("change");
+
+       // release memory in IE
+       root = script = div = all = a = null;
+})();
+
+jQuery.props = {
+       "for": "htmlFor",
+       "class": "className",
+       readonly: "readOnly",
+       maxlength: "maxLength",
+       cellspacing: "cellSpacing",
+       rowspan: "rowSpan",
+       colspan: "colSpan",
+       tabindex: "tabIndex",
+       usemap: "useMap",
+       frameborder: "frameBorder"
+};
+
+
+
+
+var windowData = {},
+       rbrace = /^(?:\{.*\}|\[.*\])$/;
+
+jQuery.extend({
+       cache: {},
+
+       // Please use with caution
+       uuid: 0,
+
+       // Unique for each copy of jQuery on the page   
+       expando: "jQuery" + jQuery.now(),
+
+       // The following elements throw uncatchable exceptions if you
+       // attempt to add expando properties to them.
+       noData: {
+               "embed": true,
+               // Ban all objects except for Flash (which handle expandos)
+               "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+               "applet": true
+       },
+
+       data: function( elem, name, data ) {
+               if ( !jQuery.acceptData( elem ) ) {
+                       return;
+               }
+
+               elem = elem == window ?
+                       windowData :
+                       elem;
+
+               var isNode = elem.nodeType,
+                       id = isNode ? elem[ jQuery.expando ] : null,
+                       cache = jQuery.cache, thisCache;
+
+               if ( isNode && !id && typeof name === "string" && data === undefined ) {
+                       return;
+               }
+
+               // Get the data from the object directly
+               if ( !isNode ) {
+                       cache = elem;
+
+               // Compute a unique ID for the element
+               } else if ( !id ) {
+                       elem[ jQuery.expando ] = id = ++jQuery.uuid;
+               }
+
+               // Avoid generating a new cache unless none exists and we
+               // want to manipulate it.
+               if ( typeof name === "object" ) {
+                       if ( isNode ) {
+                               cache[ id ] = jQuery.extend(cache[ id ], name);
+
+                       } else {
+                               jQuery.extend( cache, name );
+                       }
+
+               } else if ( isNode && !cache[ id ] ) {
+                       cache[ id ] = {};
+               }
+
+               thisCache = isNode ? cache[ id ] : cache;
+
+               // Prevent overriding the named cache with undefined values
+               if ( data !== undefined ) {
+                       thisCache[ name ] = data;
+               }
+
+               return typeof name === "string" ? thisCache[ name ] : thisCache;
+       },
+
+       removeData: function( elem, name ) {
+               if ( !jQuery.acceptData( elem ) ) {
+                       return;
+               }
+
+               elem = elem == window ?
+                       windowData :
+                       elem;
+
+               var isNode = elem.nodeType,
+                       id = isNode ? elem[ jQuery.expando ] : elem,
+                       cache = jQuery.cache,
+                       thisCache = isNode ? cache[ id ] : id;
+
+               // If we want to remove a specific section of the element's data
+               if ( name ) {
+                       if ( thisCache ) {
+                               // Remove the section of cache data
+                               delete thisCache[ name ];
+
+                               // If we've removed all the data, remove the element's cache
+                               if ( isNode && jQuery.isEmptyObject(thisCache) ) {
+                                       jQuery.removeData( elem );
+                               }
+                       }
+
+               // Otherwise, we want to remove all of the element's data
+               } else {
+                       if ( isNode && jQuery.support.deleteExpando ) {
+                               delete elem[ jQuery.expando ];
+
+                       } else if ( elem.removeAttribute ) {
+                               elem.removeAttribute( jQuery.expando );
+
+                       // Completely remove the data cache
+                       } else if ( isNode ) {
+                               delete cache[ id ];
+
+                       // Remove all fields from the object
+                       } else {
+                               for ( var n in elem ) {
+                                       delete elem[ n ];
+                               }
+                       }
+               }
+       },
+
+       // A method for determining if a DOM node can handle the data expando
+       acceptData: function( elem ) {
+               if ( elem.nodeName ) {
+                       var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+                       if ( match ) {
+                               return !(match === true || elem.getAttribute("classid") !== match);
+                       }
+               }
+
+               return true;
+       }
+});
+
+jQuery.fn.extend({
+       data: function( key, value ) {
+               if ( typeof key === "undefined" ) {
+                       return this.length ? jQuery.data( this[0] ) : null;
+
+               } else if ( typeof key === "object" ) {
+                       return this.each(function() {
+                               jQuery.data( this, key );
+                       });
+               }
+
+               var parts = key.split(".");
+               parts[1] = parts[1] ? "." + parts[1] : "";
+
+               if ( value === undefined ) {
+                       var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+                       // Try to fetch any internally stored data first
+                       if ( data === undefined && this.length ) {
+                               data = jQuery.data( this[0], key );
+
+                               // If nothing was found internally, try to fetch any
+                               // data from the HTML5 data-* attribute
+                               if ( data === undefined && this[0].nodeType === 1 ) {
+                                       data = this[0].getAttribute( "data-" + key );
+
+                                       if ( typeof data === "string" ) {
+                                               try {
+                                                       data = data === "true" ? true :
+                                                               data === "false" ? false :
+                                                               data === "null" ? null :
+                                                               !jQuery.isNaN( data ) ? parseFloat( data ) :
+                                                               rbrace.test( data ) ? jQuery.parseJSON( data ) :
+                                                               data;
+                                               } catch( e ) {}
+
+                                       } else {
+                                               data = undefined;
+                                       }
+                               }
+                       }
+
+                       return data === undefined && parts[1] ?
+                               this.data( parts[0] ) :
+                               data;
+
+               } else {
+                       return this.each(function() {
+                               var $this = jQuery( this ), args = [ parts[0], value ];
+
+                               $this.triggerHandler( "setData" + parts[1] + "!", args );
+                               jQuery.data( this, key, value );
+                               $this.triggerHandler( "changeData" + parts[1] + "!", args );
+                       });
+               }
+       },
+
+       removeData: function( key ) {
+               return this.each(function() {
+                       jQuery.removeData( this, key );
+               });
+       }
+});
+
+
+
+
+jQuery.extend({
+       queue: function( elem, type, data ) {
+               if ( !elem ) {
+                       return;
+               }
+
+               type = (type || "fx") + "queue";
+               var q = jQuery.data( elem, type );
+
+               // Speed up dequeue by getting out quickly if this is just a lookup
+               if ( !data ) {
+                       return q || [];
+               }
+
+               if ( !q || jQuery.isArray(data) ) {
+                       q = jQuery.data( elem, type, jQuery.makeArray(data) );
+
+               } else {
+                       q.push( data );
+               }
+
+               return q;
+       },
+
+       dequeue: function( elem, type ) {
+               type = type || "fx";
+
+               var queue = jQuery.queue( elem, type ), fn = queue.shift();
+
+               // If the fx queue is dequeued, always remove the progress sentinel
+               if ( fn === "inprogress" ) {
+                       fn = queue.shift();
+               }
+
+               if ( fn ) {
+                       // Add a progress sentinel to prevent the fx queue from being
+                       // automatically dequeued
+                       if ( type === "fx" ) {
+                               queue.unshift("inprogress");
+                       }
+
+                       fn.call(elem, function() {
+                               jQuery.dequeue(elem, type);
+                       });
+               }
+       }
+});
+
+jQuery.fn.extend({
+       queue: function( type, data ) {
+               if ( typeof type !== "string" ) {
+                       data = type;
+                       type = "fx";
+               }
+
+               if ( data === undefined ) {
+                       return jQuery.queue( this[0], type );
+               }
+               return this.each(function( i ) {
+                       var queue = jQuery.queue( this, type, data );
+
+                       if ( type === "fx" && queue[0] !== "inprogress" ) {
+                               jQuery.dequeue( this, type );
+                       }
+               });
+       },
+       dequeue: function( type ) {
+               return this.each(function() {
+                       jQuery.dequeue( this, type );
+               });
+       },
+
+       // Based off of the plugin by Clint Helfers, with permission.
+       // http://blindsignals.com/index.php/2009/07/jquery-delay/
+       delay: function( time, type ) {
+               time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+               type = type || "fx";
+
+               return this.queue( type, function() {
+                       var elem = this;
+                       setTimeout(function() {
+                               jQuery.dequeue( elem, type );
+                       }, time );
+               });
+       },
+
+       clearQueue: function( type ) {
+               return this.queue( type || "fx", [] );
+       }
+});
+
+
+
+
+var rclass = /[\n\t]/g,
+       rspaces = /\s+/,
+       rreturn = /\r/g,
+       rspecialurl = /^(?:href|src|style)$/,
+       rtype = /^(?:button|input)$/i,
+       rfocusable = /^(?:button|input|object|select|textarea)$/i,
+       rclickable = /^a(?:rea)?$/i,
+       rradiocheck = /^(?:radio|checkbox)$/i;
+
+jQuery.fn.extend({
+       attr: function( name, value ) {
+               return jQuery.access( this, name, value, true, jQuery.attr );
+       },
+
+       removeAttr: function( name, fn ) {
+               return this.each(function(){
+                       jQuery.attr( this, name, "" );
+                       if ( this.nodeType === 1 ) {
+                               this.removeAttribute( name );
+                       }
+               });
+       },
+
+       addClass: function( value ) {
+               if ( jQuery.isFunction(value) ) {
+                       return this.each(function(i) {
+                               var self = jQuery(this);
+                               self.addClass( value.call(this, i, self.attr("class")) );
+                       });
+               }
+
+               if ( value && typeof value === "string" ) {
+                       var classNames = (value || "").split( rspaces );
+
+                       for ( var i = 0, l = this.length; i < l; i++ ) {
+                               var elem = this[i];
+
+                               if ( elem.nodeType === 1 ) {
+                                       if ( !elem.className ) {
+                                               elem.className = value;
+
+                                       } else {
+                                               var className = " " + elem.className + " ", setClass = elem.className;
+                                               for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+                                                       if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
+                                                               setClass += " " + classNames[c];
+                                                       }
+                                               }
+                                               elem.className = jQuery.trim( setClass );
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       removeClass: function( value ) {
+               if ( jQuery.isFunction(value) ) {
+                       return this.each(function(i) {
+                               var self = jQuery(this);
+                               self.removeClass( value.call(this, i, self.attr("class")) );
+                       });
+               }
+
+               if ( (value && typeof value === "string") || value === undefined ) {
+                       var classNames = (value || "").split( rspaces );
+
+                       for ( var i = 0, l = this.length; i < l; i++ ) {
+                               var elem = this[i];
+
+                               if ( elem.nodeType === 1 && elem.className ) {
+                                       if ( value ) {
+                                               var className = (" " + elem.className + " ").replace(rclass, " ");
+                                               for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+                                                       className = className.replace(" " + classNames[c] + " ", " ");
+                                               }
+                                               elem.className = jQuery.trim( className );
+
+                                       } else {
+                                               elem.className = "";
+                                       }
+                               }
+                       }
+               }
+
+               return this;
+       },
+
+       toggleClass: function( value, stateVal ) {
+               var type = typeof value, isBool = typeof stateVal === "boolean";
+
+               if ( jQuery.isFunction( value ) ) {
+                       return this.each(function(i) {
+                               var self = jQuery(this);
+                               self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
+                       });
+               }
+
+               return this.each(function() {
+                       if ( type === "string" ) {
+                               // toggle individual class names
+                               var className, i = 0, self = jQuery(this),
+                                       state = stateVal,
+                                       classNames = value.split( rspaces );
+
+                               while ( (className = classNames[ i++ ]) ) {
+                                       // check each className given, space seperated list
+                                       state = isBool ? state : !self.hasClass( className );
+                                       self[ state ? "addClass" : "removeClass" ]( className );
+                               }
+
+                       } else if ( type === "undefined" || type === "boolean" ) {
+                               if ( this.className ) {
+                                       // store className if set
+                                       jQuery.data( this, "__className__", this.className );
+                               }
+
+                               // toggle whole className
+                               this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
+                       }
+               });
+       },
+
+       hasClass: function( selector ) {
+               var className = " " + selector + " ";
+               for ( var i = 0, l = this.length; i < l; i++ ) {
+                       if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+                               return true;
+                       }
+               }
+
+               return false;
+       },
+
+       val: function( value ) {
+               if ( !arguments.length ) {
+                       var elem = this[0];
+
+                       if ( elem ) {
+                               if ( jQuery.nodeName( elem, "option" ) ) {
+                                       // attributes.value is undefined in Blackberry 4.7 but
+                                       // uses .value. See #6932
+                                       var val = elem.attributes.value;
+                                       return !val || val.specified ? elem.value : elem.text;
+                               }
+
+                               // We need to handle select boxes special
+                               if ( jQuery.nodeName( elem, "select" ) ) {
+                                       var index = elem.selectedIndex,
+                                               values = [],
+                                               options = elem.options,
+                                               one = elem.type === "select-one";
+
+                                       // Nothing was selected
+                                       if ( index < 0 ) {
+                                               return null;
+                                       }
+
+                                       // Loop through all the selected options
+                                       for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+                                               var option = options[ i ];
+
+                                               // Don't return options that are disabled or in a disabled optgroup
+                                               if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && 
+                                                               (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+                                                       // Get the specific value for the option
+                                                       value = jQuery(option).val();
+
+                                                       // We don't need an array for one selects
+                                                       if ( one ) {
+                                                               return value;
+                                                       }
+
+                                                       // Multi-Selects return an array
+                                                       values.push( value );
+                                               }
+                                       }
+
+                                       return values;
+                               }
+
+                               // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+                               if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
+                                       return elem.getAttribute("value") === null ? "on" : elem.value;
+                               }
+                               
+
+                               // Everything else, we just grab the value
+                               return (elem.value || "").replace(rreturn, "");
+
+                       }
+
+                       return undefined;
+               }
+
+               var isFunction = jQuery.isFunction(value);
+
+               return this.each(function(i) {
+                       var self = jQuery(this), val = value;
+
+                       if ( this.nodeType !== 1 ) {
+                               return;
+                       }
+
+                       if ( isFunction ) {
+                               val = value.call(this, i, self.val());
+                       }
+
+                       // Treat null/undefined as ""; convert numbers to string
+                       if ( val == null ) {
+                               val = "";
+                       } else if ( typeof val === "number" ) {
+                               val += "";
+                       } else if ( jQuery.isArray(val) ) {
+                               val = jQuery.map(val, function (value) {
+                                       return value == null ? "" : value + "";
+                               });
+                       }
+
+                       if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
+                               this.checked = jQuery.inArray( self.val(), val ) >= 0;
+
+                       } else if ( jQuery.nodeName( this, "select" ) ) {
+                               var values = jQuery.makeArray(val);
+
+                               jQuery( "option", this ).each(function() {
+                                       this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+                               });
+
+                               if ( !values.length ) {
+                                       this.selectedIndex = -1;
+                               }
+
+                       } else {
+                               this.value = val;
+                       }
+               });
+       }
+});
+
+jQuery.extend({
+       attrFn: {
+               val: true,
+               css: true,
+               html: true,
+               text: true,
+               data: true,
+               width: true,
+               height: true,
+               offset: true
+       },
+               
+       attr: function( elem, name, value, pass ) {
+               // don't set attributes on text and comment nodes
+               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return undefined;
+               }
+
+               if ( pass && name in jQuery.attrFn ) {
+                       return jQuery(elem)[name](value);
+               }
+
+               var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
+                       // Whether we are setting (or getting)
+                       set = value !== undefined;
+
+               // Try to normalize/fix the name
+               name = notxml && jQuery.props[ name ] || name;
+
+               // Only do all the following if this is a node (faster for style)
+               if ( elem.nodeType === 1 ) {
+                       // These attributes require special treatment
+                       var special = rspecialurl.test( name );
+
+                       // Safari mis-reports the default selected property of an option
+                       // Accessing the parent's selectedIndex property fixes it
+                       if ( name === "selected" && !jQuery.support.optSelected ) {
+                               var parent = elem.parentNode;
+                               if ( parent ) {
+                                       parent.selectedIndex;
+       
+                                       // Make sure that it also works with optgroups, see #5701
+                                       if ( parent.parentNode ) {
+                                               parent.parentNode.selectedIndex;
+                                       }
+                               }
+                       }
+
+                       // If applicable, access the attribute via the DOM 0 way
+                       // 'in' checks fail in Blackberry 4.7 #6931
+                       if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {
+                               if ( set ) {
+                                       // We can't allow the type property to be changed (since it causes problems in IE)
+                                       if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
+                                               jQuery.error( "type property can't be changed" );
+                                       }
+
+                                       if ( value === null ) {
+                                               if ( elem.nodeType === 1 ) {
+                                                       elem.removeAttribute( name );
+                                               }
+
+                                       } else {
+                                               elem[ name ] = value;
+                                       }
+                               }
+
+                               // browsers index elements by id/name on forms, give priority to attributes.
+                               if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
+                                       return elem.getAttributeNode( name ).nodeValue;
+                               }
+
+                               // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+                               // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+                               if ( name === "tabIndex" ) {
+                                       var attributeNode = elem.getAttributeNode( "tabIndex" );
+
+                                       return attributeNode && attributeNode.specified ?
+                                               attributeNode.value :
+                                               rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+                                                       0 :
+                                                       undefined;
+                               }
+
+                               return elem[ name ];
+                       }
+
+                       if ( !jQuery.support.style && notxml && name === "style" ) {
+                               if ( set ) {
+                                       elem.style.cssText = "" + value;
+                               }
+
+                               return elem.style.cssText;
+                       }
+
+                       if ( set ) {
+                               // convert the value to a string (all browsers do this but IE) see #1070
+                               elem.setAttribute( name, "" + value );
+                       }
+
+                       // Ensure that missing attributes return undefined
+                       // Blackberry 4.7 returns "" from getAttribute #6938
+                       if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {
+                               return undefined;
+                       }
+
+                       var attr = !jQuery.support.hrefNormalized && notxml && special ?
+                                       // Some attributes require a special call on IE
+                                       elem.getAttribute( name, 2 ) :
+                                       elem.getAttribute( name );
+
+                       // Non-existent attributes return null, we normalize to undefined
+                       return attr === null ? undefined : attr;
+               }
+       }
+});
+
+
+
+
+var rnamespaces = /\.(.*)$/,
+       rformElems = /^(?:textarea|input|select)$/i,
+       rperiod = /\./g,
+       rspace = / /g,
+       rescape = /[^\w\s.|`]/g,
+       fcleanup = function( nm ) {
+               return nm.replace(rescape, "\\$&");
+       },
+       focusCounts = { focusin: 0, focusout: 0 };
+
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+       // Bind an event to an element
+       // Original by Dean Edwards
+       add: function( elem, types, handler, data ) {
+               if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return;
+               }
+
+               // For whatever reason, IE has trouble passing the window object
+               // around, causing it to be cloned in the process
+               if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {
+                       elem = window;
+               }
+
+               if ( handler === false ) {
+                       handler = returnFalse;
+               }
+
+               var handleObjIn, handleObj;
+
+               if ( handler.handler ) {
+                       handleObjIn = handler;
+                       handler = handleObjIn.handler;
+               }
+
+               // Make sure that the function being executed has a unique ID
+               if ( !handler.guid ) {
+                       handler.guid = jQuery.guid++;
+               }
+
+               // Init the element's event structure
+               var elemData = jQuery.data( elem );
+
+               // If no elemData is found then we must be trying to bind to one of the
+               // banned noData elements
+               if ( !elemData ) {
+                       return;
+               }
+
+               // Use a key less likely to result in collisions for plain JS objects.
+               // Fixes bug #7150.
+               var eventKey = elem.nodeType ? "events" : "__events__",
+                       events = elemData[ eventKey ],
+                       eventHandle = elemData.handle;
+                       
+               if ( typeof events === "function" ) {
+                       // On plain objects events is a fn that holds the the data
+                       // which prevents this data from being JSON serialized
+                       // the function does not need to be called, it just contains the data
+                       eventHandle = events.handle;
+                       events = events.events;
+
+               } else if ( !events ) {
+                       if ( !elem.nodeType ) {
+                               // On plain objects, create a fn that acts as the holder
+                               // of the values to avoid JSON serialization of event data
+                               elemData[ eventKey ] = elemData = function(){};
+                       }
+
+                       elemData.events = events = {};
+               }
+
+               if ( !eventHandle ) {
+                       elemData.handle = eventHandle = function() {
+                               // Handle the second event of a trigger and when
+                               // an event is called after a page has unloaded
+                               return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+                                       jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+                                       undefined;
+                       };
+               }
+
+               // Add elem as a property of the handle function
+               // This is to prevent a memory leak with non-native events in IE.
+               eventHandle.elem = elem;
+
+               // Handle multiple events separated by a space
+               // jQuery(...).bind("mouseover mouseout", fn);
+               types = types.split(" ");
+
+               var type, i = 0, namespaces;
+
+               while ( (type = types[ i++ ]) ) {
+                       handleObj = handleObjIn ?
+                               jQuery.extend({}, handleObjIn) :
+                               { handler: handler, data: data };
+
+                       // Namespaced event handlers
+                       if ( type.indexOf(".") > -1 ) {
+                               namespaces = type.split(".");
+                               type = namespaces.shift();
+                               handleObj.namespace = namespaces.slice(0).sort().join(".");
+
+                       } else {
+                               namespaces = [];
+                               handleObj.namespace = "";
+                       }
+
+                       handleObj.type = type;
+                       if ( !handleObj.guid ) {
+                               handleObj.guid = handler.guid;
+                       }
+
+                       // Get the current list of functions bound to this event
+                       var handlers = events[ type ],
+                               special = jQuery.event.special[ type ] || {};
+
+                       // Init the event handler queue
+                       if ( !handlers ) {
+                               handlers = events[ type ] = [];
+
+                               // Check for a special event handler
+                               // Only use addEventListener/attachEvent if the special
+                               // events handler returns false
+                               if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+                                       // Bind the global event handler to the element
+                                       if ( elem.addEventListener ) {
+                                               elem.addEventListener( type, eventHandle, false );
+
+                                       } else if ( elem.attachEvent ) {
+                                               elem.attachEvent( "on" + type, eventHandle );
+                                       }
+                               }
+                       }
+                       
+                       if ( special.add ) { 
+                               special.add.call( elem, handleObj ); 
+
+                               if ( !handleObj.handler.guid ) {
+                                       handleObj.handler.guid = handler.guid;
+                               }
+                       }
+
+                       // Add the function to the element's handler list
+                       handlers.push( handleObj );
+
+                       // Keep track of which events have been used, for global triggering
+                       jQuery.event.global[ type ] = true;
+               }
+
+               // Nullify elem to prevent memory leaks in IE
+               elem = null;
+       },
+
+       global: {},
+
+       // Detach an event or set of events from an element
+       remove: function( elem, types, handler, pos ) {
+               // don't do events on text and comment nodes
+               if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+                       return;
+               }
+
+               if ( handler === false ) {
+                       handler = returnFalse;
+               }
+
+               var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
+                       eventKey = elem.nodeType ? "events" : "__events__",
+                       elemData = jQuery.data( elem ),
+                       events = elemData && elemData[ eventKey ];
+
+               if ( !elemData || !events ) {
+                       return;
+               }
+               
+               if ( typeof events === "function" ) {
+                       elemData = events;
+                       events = events.events;
+               }
+
+               // types is actually an event object here
+               if ( types && types.type ) {
+                       handler = types.handler;
+                       types = types.type;
+               }
+
+               // Unbind all events for the element
+               if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
+                       types = types || "";
+
+                       for ( type in events ) {
+                               jQuery.event.remove( elem, type + types );
+                       }
+
+                       return;
+               }
+
+               // Handle multiple events separated by a space
+               // jQuery(...).unbind("mouseover mouseout", fn);
+               types = types.split(" ");
+
+               while ( (type = types[ i++ ]) ) {
+                       origType = type;
+                       handleObj = null;
+                       all = type.indexOf(".") < 0;
+                       namespaces = [];
+
+                       if ( !all ) {
+                               // Namespaced event handlers
+                               namespaces = type.split(".");
+                               type = namespaces.shift();
+
+                               namespace = new RegExp("(^|\\.)" + 
+                                       jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
+                       }
+
+                       eventType = events[ type ];
+
+                       if ( !eventType ) {
+                               continue;
+                       }
+
+                       if ( !handler ) {
+                               for ( j = 0; j < eventType.length; j++ ) {
+                                       handleObj = eventType[ j ];
+
+                                       if ( all || namespace.test( handleObj.namespace ) ) {
+                                               jQuery.event.remove( elem, origType, handleObj.handler, j );
+                                               eventType.splice( j--, 1 );
+                                       }
+                               }
+
+                               continue;
+                       }
+
+                       special = jQuery.event.special[ type ] || {};
+
+                       for ( j = pos || 0; j < eventType.length; j++ ) {
+                               handleObj = eventType[ j ];
+
+                               if ( handler.guid === handleObj.guid ) {
+                                       // remove the given handler for the given type
+                                       if ( all || namespace.test( handleObj.namespace ) ) {
+                                               if ( pos == null ) {
+                                                       eventType.splice( j--, 1 );
+                                               }
+
+                                               if ( special.remove ) {
+                                                       special.remove.call( elem, handleObj );
+                                               }
+                                       }
+
+                                       if ( pos != null ) {
+                                               break;
+                                       }
+                               }
+                       }
+
+                       // remove generic event handler if no more handlers exist
+                       if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
+                               if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+                                       jQuery.removeEvent( elem, type, elemData.handle );
+                               }
+
+                               ret = null;
+                               delete events[ type ];
+                       }
+               }
+
+               // Remove the expando if it's no longer used
+               if ( jQuery.isEmptyObject( events ) ) {
+                       var handle = elemData.handle;
+                       if ( handle ) {
+                               handle.elem = null;
+                       }
+
+                       delete elemData.events;
+                       delete elemData.handle;
+
+                       if ( typeof elemData === "function" ) {
+                               jQuery.removeData( elem, eventKey );
+
+                       } else if ( jQuery.isEmptyObject( elemData ) ) {
+                               jQuery.removeData( elem );
+                       }
+               }
+       },
+
+       // bubbling is internal
+       trigger: function( event, data, elem /*, bubbling */ ) {
+               // Event object or event type
+               var type = event.type || event,
+                       bubbling = arguments[3];
+
+               if ( !bubbling ) {
+                       event = typeof event === "object" ?
+                               // jQuery.Event object
+                               event[ jQuery.expando ] ? event :
+                               // Object literal
+                               jQuery.extend( jQuery.Event(type), event ) :
+                               // Just the event type (string)
+                               jQuery.Event(type);
+
+                       if ( type.indexOf("!") >= 0 ) {
+                               event.type = type = type.slice(0, -1);
+                               event.exclusive = true;
+                       }
+
+                       // Handle a global trigger
+                       if ( !elem ) {
+                               // Don't bubble custom events when global (to avoid too much overhead)
+                               event.stopPropagation();
+
+                               // Only trigger if we've ever bound an event for it
+                               if ( jQuery.event.global[ type ] ) {
+                                       jQuery.each( jQuery.cache, function() {
+                                               if ( this.events && this.events[type] ) {
+                                                       jQuery.event.trigger( event, data, this.handle.elem );
+                                               }
+                                       });
+                               }
+                       }
+
+                       // Handle triggering a single element
+
+                       // don't do events on text and comment nodes
+                       if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+                               return undefined;
+                       }
+
+                       // Clean up in case it is reused
+                       event.result = undefined;
+                       event.target = elem;
+
+                       // Clone the incoming data, if any
+                       data = jQuery.makeArray( data );
+                       data.unshift( event );
+               }
+
+               event.currentTarget = elem;
+
+               // Trigger the event, it is assumed that "handle" is a function
+               var handle = elem.nodeType ?
+                       jQuery.data( elem, "handle" ) :
+                       (jQuery.data( elem, "__events__" ) || {}).handle;
+
+               if ( handle ) {
+                       handle.apply( elem, data );
+               }
+
+               var parent = elem.parentNode || elem.ownerDocument;
+
+               // Trigger an inline bound script
+               try {
+                       if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
+                               if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
+                                       event.result = false;
+                                       event.preventDefault();
+                               }
+                       }
+
+               // prevent IE from throwing an error for some elements with some event types, see #3533
+               } catch (inlineError) {}
+
+               if ( !event.isPropagationStopped() && parent ) {
+                       jQuery.event.trigger( event, data, parent, true );
+
+               } else if ( !event.isDefaultPrevented() ) {
+                       var target = event.target, old, targetType = type.replace(rnamespaces, ""),
+                               isClick = jQuery.nodeName(target, "a") && targetType === "click",
+                               special = jQuery.event.special[ targetType ] || {};
+
+                       if ( (!special._default || special._default.call( elem, event ) === false) && 
+                               !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
+
+                               try {
+                                       if ( target[ targetType ] ) {
+                                               // Make sure that we don't accidentally re-trigger the onFOO events
+                                               old = target[ "on" + targetType ];
+
+                                               if ( old ) {
+                                                       target[ "on" + targetType ] = null;
+                                               }
+
+                                               jQuery.event.triggered = true;
+                                               target[ targetType ]();
+                                       }
+
+                               // prevent IE from throwing an error for some elements with some event types, see #3533
+                               } catch (triggerError) {}
+
+                               if ( old ) {
+                                       target[ "on" + targetType ] = old;
+                               }
+
+                               jQuery.event.triggered = false;
+                       }
+               }
+       },
+
+       handle: function( event ) {
+               var all, handlers, namespaces, namespace_sort = [], namespace_re, events, args = jQuery.makeArray( arguments );
+
+               event = args[0] = jQuery.event.fix( event || window.event );
+               event.currentTarget = this;
+
+               // Namespaced event handlers
+               all = event.type.indexOf(".") < 0 && !event.exclusive;
+
+               if ( !all ) {
+                       namespaces = event.type.split(".");
+                       event.type = namespaces.shift();
+                       namespace_sort = namespaces.slice(0).sort();
+                       namespace_re = new RegExp("(^|\\.)" + namespace_sort.join("\\.(?:.*\\.)?") + "(\\.|$)");
+               }
+
+               event.namespace = event.namespace || namespace_sort.join(".");
+
+               events = jQuery.data(this, this.nodeType ? "events" : "__events__");
+
+               if ( typeof events === "function" ) {
+                       events = events.events;
+               }
+
+               handlers = (events || {})[ event.type ];
+
+               if ( events && handlers ) {
+                       // Clone the handlers to prevent manipulation
+                       handlers = handlers.slice(0);
+
+                       for ( var j = 0, l = handlers.length; j < l; j++ ) {
+                               var handleObj = handlers[ j ];
+
+                               // Filter the functions by class
+                               if ( all || namespace_re.test( handleObj.namespace ) ) {
+                                       // Pass in a reference to the handler function itself
+                                       // So that we can later remove it
+                                       event.handler = handleObj.handler;
+                                       event.data = handleObj.data;
+                                       event.handleObj = handleObj;
+       
+                                       var ret = handleObj.handler.apply( this, args );
+
+                                       if ( ret !== undefined ) {
+                                               event.result = ret;
+                                               if ( ret === false ) {
+                                                       event.preventDefault();
+                                                       event.stopPropagation();
+                                               }
+                                       }
+
+                                       if ( event.isImmediatePropagationStopped() ) {
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               return event.result;
+       },
+
+       props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+       fix: function( event ) {
+               if ( event[ jQuery.expando ] ) {
+                       return event;
+               }
+
+               // store a copy of the original event object
+               // and "clone" to set read-only properties
+               var originalEvent = event;
+               event = jQuery.Event( originalEvent );
+
+               for ( var i = this.props.length, prop; i; ) {
+                       prop = this.props[ --i ];
+                       event[ prop ] = originalEvent[ prop ];
+               }
+
+               // Fix target property, if necessary
+               if ( !event.target ) {
+                       event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+               }
+
+               // check if target is a textnode (safari)
+               if ( event.target.nodeType === 3 ) {
+                       event.target = event.target.parentNode;
+               }
+
+               // Add relatedTarget, if necessary
+               if ( !event.relatedTarget && event.fromElement ) {
+                       event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
+               }
+
+               // Calculate pageX/Y if missing and clientX/Y available
+               if ( event.pageX == null && event.clientX != null ) {
+                       var doc = document.documentElement, body = document.body;
+                       event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+                       event.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);
+               }
+
+               // Add which for key events
+               if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
+                       event.which = event.charCode != null ? event.charCode : event.keyCode;
+               }
+
+               // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+               if ( !event.metaKey && event.ctrlKey ) {
+                       event.metaKey = event.ctrlKey;
+               }
+
+               // Add which for click: 1 === left; 2 === middle; 3 === right
+               // Note: button is not normalized, so don't use it
+               if ( !event.which && event.button !== undefined ) {
+                       event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+               }
+
+               return event;
+       },
+
+       // Deprecated, use jQuery.guid instead
+       guid: 1E8,
+
+       // Deprecated, use jQuery.proxy instead
+       proxy: jQuery.proxy,
+
+       special: {
+               ready: {
+                       // Make sure the ready event is setup
+                       setup: jQuery.bindReady,
+                       teardown: jQuery.noop
+               },
+
+               live: {
+                       add: function( handleObj ) {
+                               jQuery.event.add( this,
+                                       liveConvert( handleObj.origType, handleObj.selector ),
+                                       jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); 
+                       },
+
+                       remove: function( handleObj ) {
+                               jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );
+                       }
+               },
+
+               beforeunload: {
+                       setup: function( data, namespaces, eventHandle ) {
+                               // We only want to do this special case on windows
+                               if ( jQuery.isWindow( this ) ) {
+                                       this.onbeforeunload = eventHandle;
+                               }
+                       },
+
+                       teardown: function( namespaces, eventHandle ) {
+                               if ( this.onbeforeunload === eventHandle ) {
+                                       this.onbeforeunload = null;
+                               }
+                       }
+               }
+       }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+       function( elem, type, handle ) {
+               if ( elem.removeEventListener ) {
+                       elem.removeEventListener( type, handle, false );
+               }
+       } : 
+       function( elem, type, handle ) {
+               if ( elem.detachEvent ) {
+                       elem.detachEvent( "on" + type, handle );
+               }
+       };
+
+jQuery.Event = function( src ) {
+       // Allow instantiation without the 'new' keyword
+       if ( !this.preventDefault ) {
+               return new jQuery.Event( src );
+       }
+
+       // Event object
+       if ( src && src.type ) {
+               this.originalEvent = src;
+               this.type = src.type;
+       // Event type
+       } else {
+               this.type = src;
+       }
+
+       // timeStamp is buggy for some events on Firefox(#3843)
+       // So we won't rely on the native value
+       this.timeStamp = jQuery.now();
+
+       // Mark it as fixed
+       this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+       return false;
+}
+function returnTrue() {
+       return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+       preventDefault: function() {
+               this.isDefaultPrevented = returnTrue;
+
+               var e = this.originalEvent;
+               if ( !e ) {
+                       return;
+               }
+               
+               // if preventDefault exists run it on the original event
+               if ( e.preventDefault ) {
+                       e.preventDefault();
+
+               // otherwise set the returnValue property of the original event to false (IE)
+               } else {
+                       e.returnValue = false;
+               }
+       },
+       stopPropagation: function() {
+               this.isPropagationStopped = returnTrue;
+
+               var e = this.originalEvent;
+               if ( !e ) {
+                       return;
+               }
+               // if stopPropagation exists run it on the original event
+               if ( e.stopPropagation ) {
+                       e.stopPropagation();
+               }
+               // otherwise set the cancelBubble property of the original event to true (IE)
+               e.cancelBubble = true;
+       },
+       stopImmediatePropagation: function() {
+               this.isImmediatePropagationStopped = returnTrue;
+               this.stopPropagation();
+       },
+       isDefaultPrevented: returnFalse,
+       isPropagationStopped: returnFalse,
+       isImmediatePropagationStopped: returnFalse
+};
+
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function( event ) {
+       // Check if mouse(over|out) are still within the same parent element
+       var parent = event.relatedTarget;
+
+       // Firefox sometimes assigns relatedTarget a XUL element
+       // which we cannot access the parentNode property of
+       try {
+               // Traverse up the tree
+               while ( parent && parent !== this ) {
+                       parent = parent.parentNode;
+               }
+
+               if ( parent !== this ) {
+                       // set the correct event type
+                       event.type = event.data;
+
+                       // handle event if we actually just moused on to a non sub-element
+                       jQuery.event.handle.apply( this, arguments );
+               }
+
+       // assuming we've left the element since we most likely mousedover a xul element
+       } catch(e) { }
+},
+
+// In case of event delegation, we only need to rename the event.type,
+// liveHandler will take care of the rest.
+delegate = function( event ) {
+       event.type = event.data;
+       jQuery.event.handle.apply( this, arguments );
+};
+
+// Create mouseenter and mouseleave events
+jQuery.each({
+       mouseenter: "mouseover",
+       mouseleave: "mouseout"
+}, function( orig, fix ) {
+       jQuery.event.special[ orig ] = {
+               setup: function( data ) {
+                       jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
+               },
+               teardown: function( data ) {
+                       jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
+               }
+       };
+});
+
+// submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+       jQuery.event.special.submit = {
+               setup: function( data, namespaces ) {
+                       if ( this.nodeName.toLowerCase() !== "form" ) {
+                               jQuery.event.add(this, "click.specialSubmit", function( e ) {
+                                       var elem = e.target, type = elem.type;
+
+                                       if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
+                                               e.liveFired = undefined;
+                                               return trigger( "submit", this, arguments );
+                                       }
+                               });
+        
+                               jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
+                                       var elem = e.target, type = elem.type;
+
+                                       if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
+                                               e.liveFired = undefined;
+                                               return trigger( "submit", this, arguments );
+                                       }
+                               });
+
+                       } else {
+                               return false;
+                       }
+               },
+
+               teardown: function( namespaces ) {
+                       jQuery.event.remove( this, ".specialSubmit" );
+               }
+       };
+
+}
+
+// change delegation, happens here so we have bind.
+if ( !jQuery.support.changeBubbles ) {
+
+       var changeFilters,
+
+       getVal = function( elem ) {
+               var type = elem.type, val = elem.value;
+
+               if ( type === "radio" || type === "checkbox" ) {
+                       val = elem.checked;
+
+               } else if ( type === "select-multiple" ) {
+                       val = elem.selectedIndex > -1 ?
+                               jQuery.map( elem.options, function( elem ) {
+                                       return elem.selected;
+                               }).join("-") :
+                               "";
+
+               } else if ( elem.nodeName.toLowerCase() === "select" ) {
+                       val = elem.selectedIndex;
+               }
+
+               return val;
+       },
+
+       testChange = function testChange( e ) {
+               var elem = e.target, data, val;
+
+               if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {
+                       return;
+               }
+
+               data = jQuery.data( elem, "_change_data" );
+               val = getVal(elem);
+
+               // the current data will be also retrieved by beforeactivate
+               if ( e.type !== "focusout" || elem.type !== "radio" ) {
+                       jQuery.data( elem, "_change_data", val );
+               }
+               
+               if ( data === undefined || val === data ) {
+                       return;
+               }
+
+               if ( data != null || val ) {
+                       e.type = "change";
+                       e.liveFired = undefined;
+                       return jQuery.event.trigger( e, arguments[1], elem );
+               }
+       };
+
+       jQuery.event.special.change = {
+               filters: {
+                       focusout: testChange, 
+
+                       beforedeactivate: testChange,
+
+                       click: function( e ) {
+                               var elem = e.target, type = elem.type;
+
+                               if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
+                                       return testChange.call( this, e );
+                               }
+                       },
+
+                       // Change has to be called before submit
+                       // Keydown will be called before keypress, which is used in submit-event delegation
+                       keydown: function( e ) {
+                               var elem = e.target, type = elem.type;
+
+                               if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
+                                       (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
+                                       type === "select-multiple" ) {
+                                       return testChange.call( this, e );
+                               }
+                       },
+
+                       // Beforeactivate happens also before the previous element is blurred
+                       // with this event you can't trigger a change event, but you can store
+                       // information
+                       beforeactivate: function( e ) {
+                               var elem = e.target;
+                               jQuery.data( elem, "_change_data", getVal(elem) );
+                       }
+               },
+
+               setup: function( data, namespaces ) {
+                       if ( this.type === "file" ) {
+                               return false;
+                       }
+
+                       for ( var type in changeFilters ) {
+                               jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
+                       }
+
+                       return rformElems.test( this.nodeName );
+               },
+
+               teardown: function( namespaces ) {
+                       jQuery.event.remove( this, ".specialChange" );
+
+                       return rformElems.test( this.nodeName );
+               }
+       };
+
+       changeFilters = jQuery.event.special.change.filters;
+
+       // Handle when the input is .focus()'d
+       changeFilters.focus = changeFilters.beforeactivate;
+}
+
+function trigger( type, elem, args ) {
+       args[0].type = type;
+       return jQuery.event.handle.apply( elem, args );
+}
+
+// Create "bubbling" focus and blur events
+if ( document.addEventListener ) {
+       jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+               jQuery.event.special[ fix ] = {
+                       setup: function() {
+                               if ( focusCounts[fix]++ === 0 ) {
+                                       document.addEventListener( orig, handler, true );
+                               }
+                       }, 
+                       teardown: function() { 
+                               if ( --focusCounts[fix] === 0 ) {
+                                       document.removeEventListener( orig, handler, true );
+                               }
+                       }
+               };
+
+               function handler( e ) { 
+                       e = jQuery.event.fix( e );
+                       e.type = fix;
+                       return jQuery.event.trigger( e, null, e.target );
+               }
+       });
+}
+
+jQuery.each(["bind", "one"], function( i, name ) {
+       jQuery.fn[ name ] = function( type, data, fn ) {
+               // Handle object literals
+               if ( typeof type === "object" ) {
+                       for ( var key in type ) {
+                               this[ name ](key, data, type[key], fn);
+                       }
+                       return this;
+               }
+               
+               if ( jQuery.isFunction( data ) || data === false ) {
+                       fn = data;
+                       data = undefined;
+               }
+
+               var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
+                       jQuery( this ).unbind( event, handler );
+                       return fn.apply( this, arguments );
+               }) : fn;
+
+               if ( type === "unload" && name !== "one" ) {
+                       this.one( type, data, fn );
+
+               } else {
+                       for ( var i = 0, l = this.length; i < l; i++ ) {
+                               jQuery.event.add( this[i], type, handler, data );
+                       }
+               }
+
+               return this;
+       };
+});
+
+jQuery.fn.extend({
+       unbind: function( type, fn ) {
+               // Handle object literals
+               if ( typeof type === "object" && !type.preventDefault ) {
+                       for ( var key in type ) {
+                               this.unbind(key, type[key]);
+                       }
+
+               } else {
+                       for ( var i = 0, l = this.length; i < l; i++ ) {
+                               jQuery.event.remove( this[i], type, fn );
+                       }
+               }
+
+               return this;
+       },
+       
+       delegate: function( selector, types, data, fn ) {
+               return this.live( types, data, fn, selector );
+       },
+       
+       undelegate: function( selector, types, fn ) {
+               if ( arguments.length === 0 ) {
+                               return this.unbind( "live" );
+               
+               } else {
+                       return this.die( types, null, fn, selector );
+               }
+       },
+       
+       trigger: function( type, data ) {
+               return this.each(function() {
+                       jQuery.event.trigger( type, data, this );
+               });
+       },
+
+       triggerHandler: function( type, data ) {
+               if ( this[0] ) {
+                       var event = jQuery.Event( type );
+                       event.preventDefault();
+                       event.stopPropagation();
+                       jQuery.event.trigger( event, data, this[0] );
+                       return event.result;
+               }
+       },
+
+       toggle: function( fn ) {
+               // Save reference to arguments for access in closure
+               var args = arguments, i = 1;
+
+               // link all the functions, so any of them can unbind this click handler
+               while ( i < args.length ) {
+                       jQuery.proxy( fn, args[ i++ ] );
+               }
+
+               return this.click( jQuery.proxy( fn, function( event ) {
+                       // Figure out which function to execute
+                       var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+                       jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+                       // Make sure that clicks stop
+                       event.preventDefault();
+
+                       // and execute the function
+                       return args[ lastToggle ].apply( this, arguments ) || false;
+               }));
+       },
+
+       hover: function( fnOver, fnOut ) {
+               return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+       }
+});
+
+var liveMap = {
+       focus: "focusin",
+       blur: "focusout",
+       mouseenter: "mouseover",
+       mouseleave: "mouseout"
+};
+
+jQuery.each(["live", "die"], function( i, name ) {
+       jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
+               var type, i = 0, match, namespaces, preType,
+                       selector = origSelector || this.selector,
+                       context = origSelector ? this : jQuery( this.context );
+               
+               if ( typeof types === "object" && !types.preventDefault ) {
+                       for ( var key in types ) {
+                               context[ name ]( key, data, types[key], selector );
+                       }
+                       
+                       return this;
+               }
+
+               if ( jQuery.isFunction( data ) ) {
+                       fn = data;
+                       data = undefined;
+               }
+
+               types = (types || "").split(" ");
+
+               while ( (type = types[ i++ ]) != null ) {
+                       match = rnamespaces.exec( type );
+                       namespaces = "";
+
+                       if ( match )  {
+                               namespaces = match[0];
+                               type = type.replace( rnamespaces, "" );
+                       }
+
+                       if ( type === "hover" ) {
+                               types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
+                               continue;
+                       }
+
+                       preType = type;
+
+                       if ( type === "focus" || type === "blur" ) {
+                               types.push( liveMap[ type ] + namespaces );
+                               type = type + namespaces;
+
+                       } else {
+                               type = (liveMap[ type ] || type) + namespaces;
+                       }
+
+                       if ( name === "live" ) {
+                               // bind live handler
+                               for ( var j = 0, l = context.length; j < l; j++ ) {
+                                       jQuery.event.add( context[j], "live." + liveConvert( type, selector ),
+                                               { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
+                               }
+
+                       } else {
+                               // unbind live handler
+                               context.unbind( "live." + liveConvert( type, selector ), fn );
+                       }
+               }
+               
+               return this;
+       };
+});
+
+function liveHandler( event ) {
+       var stop, maxLevel, elems = [], selectors = [],
+               related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
+               events = jQuery.data( this, this.nodeType ? "events" : "__events__" );
+
+       if ( typeof events === "function" ) {
+               events = events.events;
+       }
+
+       // Make sure we avoid non-left-click bubbling in Firefox (#3861)
+       if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) {
+               return;
+       }
+
+       if ( event.namespace ) {
+               namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
+       }
+
+       event.liveFired = this;
+
+       var live = events.live.slice(0);
+
+       for ( j = 0; j < live.length; j++ ) {
+               handleObj = live[j];
+
+               if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
+                       selectors.push( handleObj.selector );
+
+               } else {
+                       live.splice( j--, 1 );
+               }
+       }
+
+       match = jQuery( event.target ).closest( selectors, event.currentTarget );
+
+       for ( i = 0, l = match.length; i < l; i++ ) {
+               close = match[i];
+
+               for ( j = 0; j < live.length; j++ ) {
+                       handleObj = live[j];
+
+                       if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) ) {
+                               elem = close.elem;
+                               related = null;
+
+                               // Those two events require additional checking
+                               if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
+                                       event.type = handleObj.preType;
+                                       related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
+                               }
+
+                               if ( !related || related !== elem ) {
+                                       elems.push({ elem: elem, handleObj: handleObj, level: close.level });
+                               }
+                       }
+               }
+       }
+
+       for ( i = 0, l = elems.length; i < l; i++ ) {
+               match = elems[i];
+
+               if ( maxLevel && match.level > maxLevel ) {
+                       break;
+               }
+
+               event.currentTarget = match.elem;
+               event.data = match.handleObj.data;
+               event.handleObj = match.handleObj;
+
+               ret = match.handleObj.origHandler.apply( match.elem, arguments );
+
+               if ( ret === false || event.isPropagationStopped() ) {
+                       maxLevel = match.level;
+
+                       if ( ret === false ) {
+                               stop = false;
+                       }
+               }
+       }
+
+       return stop;
+}
+
+function liveConvert( type, selector ) {
+       return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspace, "&");
+}
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+       "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+       "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
+
+       // Handle event binding
+       jQuery.fn[ name ] = function( data, fn ) {
+               if ( fn == null ) {
+                       fn = data;
+                       data = null;
+               }
+
+               return arguments.length > 0 ?
+                       this.bind( name, data, fn ) :
+                       this.trigger( name );
+       };
+
+       if ( jQuery.attrFn ) {
+               jQuery.attrFn[ name ] = true;
+       }
+});
+
+// Prevent memory leaks in IE
+// Window isn't included so as not to unbind existing unload events
+// More info:
+//  - http://isaacschlueter.com/2006/10/msie-memory-leaks/
+if ( window.attachEvent && !window.addEventListener ) {
+       jQuery(window).bind("unload", function() {
+               for ( var id in jQuery.cache ) {
+                       if ( jQuery.cache[ id ].handle ) {
+                               // Try/Catch is to handle iframes being unloaded, see #4280
+                               try {
+                                       jQuery.event.remove( jQuery.cache[ id ].handle.elem );
+                               } catch(e) {}
+                       }
+               }
+       });
+}
+
+
+/*!
+ * Sizzle CSS Selector Engine - v1.0
+ *  Copyright 2009, The Dojo Foundation
+ *  Released under the MIT, BSD, and GPL Licenses.
+ *  More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+       done = 0,
+       toString = Object.prototype.toString,
+       hasDuplicate = false,
+       baseHasDuplicate = true;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+//   Thus far that includes Google Chrome.
+[0, 0].sort(function(){
+       baseHasDuplicate = false;
+       return 0;
+});
+
+var Sizzle = function(selector, context, results, seed) {
+       results = results || [];
+       context = context || document;
+
+       var origContext = context;
+
+       if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+               return [];
+       }
+       
+       if ( !selector || typeof selector !== "string" ) {
+               return results;
+       }
+
+       var parts = [], m, set, checkSet, extra, prune = true, contextXML = Sizzle.isXML(context),
+               soFar = selector, ret, cur, pop, i;
+       
+       // Reset the position of the chunker regexp (start from head)
+       do {
+               chunker.exec("");
+               m = chunker.exec(soFar);
+
+               if ( m ) {
+                       soFar = m[3];
+               
+                       parts.push( m[1] );
+               
+                       if ( m[2] ) {
+                               extra = m[3];
+                               break;
+                       }
+               }
+       } while ( m );
+
+       if ( parts.length > 1 && origPOS.exec( selector ) ) {
+               if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+                       set = posProcess( parts[0] + parts[1], context );
+               } else {
+                       set = Expr.relative[ parts[0] ] ?
+                               [ context ] :
+                               Sizzle( parts.shift(), context );
+
+                       while ( parts.length ) {
+                               selector = parts.shift();
+
+                               if ( Expr.relative[ selector ] ) {
+                                       selector += parts.shift();
+                               }
+                               
+                               set = posProcess( selector, set );
+                       }
+               }
+       } else {
+               // Take a shortcut and set the context if the root selector is an ID
+               // (but not if it'll be faster if the inner selector is an ID)
+               if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+                               Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+                       ret = Sizzle.find( parts.shift(), context, contextXML );
+                       context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
+               }
+
+               if ( context ) {
+                       ret = seed ?
+                               { expr: parts.pop(), set: makeArray(seed) } :
+                               Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+                       set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
+
+                       if ( parts.length > 0 ) {
+                               checkSet = makeArray(set);
+                       } else {
+                               prune = false;
+                       }
+
+                       while ( parts.length ) {
+                               cur = parts.pop();
+                               pop = cur;
+
+                               if ( !Expr.relative[ cur ] ) {
+                                       cur = "";
+                               } else {
+                                       pop = parts.pop();
+                               }
+
+                               if ( pop == null ) {
+                                       pop = context;
+                               }
+
+                               Expr.relative[ cur ]( checkSet, pop, contextXML );
+                       }
+               } else {
+                       checkSet = parts = [];
+               }
+       }
+
+       if ( !checkSet ) {
+               checkSet = set;
+       }
+
+       if ( !checkSet ) {
+               Sizzle.error( cur || selector );
+       }
+
+       if ( toString.call(checkSet) === "[object Array]" ) {
+               if ( !prune ) {
+                       results.push.apply( results, checkSet );
+               } else if ( context && context.nodeType === 1 ) {
+                       for ( i = 0; checkSet[i] != null; i++ ) {
+                               if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+                                       results.push( set[i] );
+                               }
+                       }
+               } else {
+                       for ( i = 0; checkSet[i] != null; i++ ) {
+                               if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+                                       results.push( set[i] );
+                               }
+                       }
+               }
+       } else {
+               makeArray( checkSet, results );
+       }
+
+       if ( extra ) {
+               Sizzle( extra, origContext, results, seed );
+               Sizzle.uniqueSort( results );
+       }
+
+       return results;
+};
+
+Sizzle.uniqueSort = function(results){
+       if ( sortOrder ) {
+               hasDuplicate = baseHasDuplicate;
+               results.sort(sortOrder);
+
+               if ( hasDuplicate ) {
+                       for ( var i = 1; i < results.length; i++ ) {
+                               if ( results[i] === results[i-1] ) {
+                                       results.splice(i--, 1);
+                               }
+                       }
+               }
+       }
+
+       return results;
+};
+
+Sizzle.matches = function(expr, set){
+       return Sizzle(expr, null, null, set);
+};
+
+Sizzle.matchesSelector = function(node, expr){
+       return Sizzle(expr, null, null, [node]).length > 0;
+};
+
+Sizzle.find = function(expr, context, isXML){
+       var set;
+
+       if ( !expr ) {
+               return [];
+       }
+
+       for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+               var type = Expr.order[i], match;
+               
+               if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+                       var left = match[1];
+                       match.splice(1,1);
+
+                       if ( left.substr( left.length - 1 ) !== "\\" ) {
+                               match[1] = (match[1] || "").replace(/\\/g, "");
+                               set = Expr.find[ type ]( match, context, isXML );
+                               if ( set != null ) {
+                                       expr = expr.replace( Expr.match[ type ], "" );
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       if ( !set ) {
+               set = context.getElementsByTagName("*");
+       }
+
+       return {set: set, expr: expr};
+};
+
+Sizzle.filter = function(expr, set, inplace, not){
+       var old = expr, result = [], curLoop = set, match, anyFound,
+               isXMLFilter = set && set[0] && Sizzle.isXML(set[0]);
+
+       while ( expr && set.length ) {
+               for ( var type in Expr.filter ) {
+                       if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+                               var filter = Expr.filter[ type ], found, item, left = match[1];
+                               anyFound = false;
+
+                               match.splice(1,1);
+
+                               if ( left.substr( left.length - 1 ) === "\\" ) {
+                                       continue;
+                               }
+
+                               if ( curLoop === result ) {
+                                       result = [];
+                               }
+
+                               if ( Expr.preFilter[ type ] ) {
+                                       match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+                                       if ( !match ) {
+                                               anyFound = found = true;
+                                       } else if ( match === true ) {
+                                               continue;
+                                       }
+                               }
+
+                               if ( match ) {
+                                       for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+                                               if ( item ) {
+                                                       found = filter( item, match, i, curLoop );
+                                                       var pass = not ^ !!found;
+
+                                                       if ( inplace && found != null ) {
+                                                               if ( pass ) {
+                                                                       anyFound = true;
+                                                               } else {
+                                                                       curLoop[i] = false;
+                                                               }
+                                                       } else if ( pass ) {
+                                                               result.push( item );
+                                                               anyFound = true;
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               if ( found !== undefined ) {
+                                       if ( !inplace ) {
+                                               curLoop = result;
+                                       }
+
+                                       expr = expr.replace( Expr.match[ type ], "" );
+
+                                       if ( !anyFound ) {
+                                               return [];
+                                       }
+
+                                       break;
+                               }
+                       }
+               }
+
+               // Improper expression
+               if ( expr === old ) {
+                       if ( anyFound == null ) {
+                               Sizzle.error( expr );
+                       } else {
+                               break;
+                       }
+               }
+
+               old = expr;
+       }
+
+       return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+       throw "Syntax error, unrecognized expression: " + msg;
+};
+
+var Expr = Sizzle.selectors = {
+       order: [ "ID", "NAME", "TAG" ],
+       match: {
+               ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+               CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+               NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+               ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+               TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+               CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
+               POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+               PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+       },
+       leftMatch: {},
+       attrMap: {
+               "class": "className",
+               "for": "htmlFor"
+       },
+       attrHandle: {
+               href: function(elem){
+                       return elem.getAttribute("href");
+               }
+       },
+       relative: {
+               "+": function(checkSet, part){
+                       var isPartStr = typeof part === "string",
+                               isTag = isPartStr && !/\W/.test(part),
+                               isPartStrNotTag = isPartStr && !isTag;
+
+                       if ( isTag ) {
+                               part = part.toLowerCase();
+                       }
+
+                       for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+                               if ( (elem = checkSet[i]) ) {
+                                       while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+                                       checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+                                               elem || false :
+                                               elem === part;
+                               }
+                       }
+
+                       if ( isPartStrNotTag ) {
+                               Sizzle.filter( part, checkSet, true );
+                       }
+               },
+               ">": function(checkSet, part){
+                       var isPartStr = typeof part === "string",
+                               elem, i = 0, l = checkSet.length;
+
+                       if ( isPartStr && !/\W/.test(part) ) {
+                               part = part.toLowerCase();
+
+                               for ( ; i < l; i++ ) {
+                                       elem = checkSet[i];
+                                       if ( elem ) {
+                                               var parent = elem.parentNode;
+                                               checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+                                       }
+                               }
+                       } else {
+                               for ( ; i < l; i++ ) {
+                                       elem = checkSet[i];
+                                       if ( elem ) {
+                                               checkSet[i] = isPartStr ?
+                                                       elem.parentNode :
+                                                       elem.parentNode === part;
+                                       }
+                               }
+
+                               if ( isPartStr ) {
+                                       Sizzle.filter( part, checkSet, true );
+                               }
+                       }
+               },
+               "": function(checkSet, part, isXML){
+                       var doneName = done++, checkFn = dirCheck, nodeCheck;
+
+                       if ( typeof part === "string" && !/\W/.test(part) ) {
+                               part = part.toLowerCase();
+                               nodeCheck = part;
+                               checkFn = dirNodeCheck;
+                       }
+
+                       checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
+               },
+               "~": function(checkSet, part, isXML){
+                       var doneName = done++, checkFn = dirCheck, nodeCheck;
+
+                       if ( typeof part === "string" && !/\W/.test(part) ) {
+                               part = part.toLowerCase();
+                               nodeCheck = part;
+                               checkFn = dirNodeCheck;
+                       }
+
+                       checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
+               }
+       },
+       find: {
+               ID: function(match, context, isXML){
+                       if ( typeof context.getElementById !== "undefined" && !isXML ) {
+                               var m = context.getElementById(match[1]);
+                               // Check parentNode to catch when Blackberry 4.6 returns
+                               // nodes that are no longer in the document #6963
+                               return m && m.parentNode ? [m] : [];
+                       }
+               },
+               NAME: function(match, context){
+                       if ( typeof context.getElementsByName !== "undefined" ) {
+                               var ret = [], results = context.getElementsByName(match[1]);
+
+                               for ( var i = 0, l = results.length; i < l; i++ ) {
+                                       if ( results[i].getAttribute("name") === match[1] ) {
+                                               ret.push( results[i] );
+                                       }
+                               }
+
+                               return ret.length === 0 ? null : ret;
+                       }
+               },
+               TAG: function(match, context){
+                       return context.getElementsByTagName(match[1]);
+               }
+       },
+       preFilter: {
+               CLASS: function(match, curLoop, inplace, result, not, isXML){
+                       match = " " + match[1].replace(/\\/g, "") + " ";
+
+                       if ( isXML ) {
+                               return match;
+                       }
+
+                       for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+                               if ( elem ) {
+                                       if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
+                                               if ( !inplace ) {
+                                                       result.push( elem );
+                                               }
+                                       } else if ( inplace ) {
+                                               curLoop[i] = false;
+                                       }
+                               }
+                       }
+
+                       return false;
+               },
+               ID: function(match){
+                       return match[1].replace(/\\/g, "");
+               },
+               TAG: function(match, curLoop){
+                       return match[1].toLowerCase();
+               },
+               CHILD: function(match){
+                       if ( match[1] === "nth" ) {
+                               // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+                               var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+                                       match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+                                       !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+                               // calculate the numbers (first)n+(last) including if they are negative
+                               match[2] = (test[1] + (test[2] || 1)) - 0;
+                               match[3] = test[3] - 0;
+                       }
+
+                       // TODO: Move to normal caching system
+                       match[0] = done++;
+
+                       return match;
+               },
+               ATTR: function(match, curLoop, inplace, result, not, isXML){
+                       var name = match[1].replace(/\\/g, "");
+                       
+                       if ( !isXML && Expr.attrMap[name] ) {
+                               match[1] = Expr.attrMap[name];
+                       }
+
+                       if ( match[2] === "~=" ) {
+                               match[4] = " " + match[4] + " ";
+                       }
+
+                       return match;
+               },
+               PSEUDO: function(match, curLoop, inplace, result, not){
+                       if ( match[1] === "not" ) {
+                               // If we're dealing with a complex expression, or a simple one
+                               if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+                                       match[3] = Sizzle(match[3], null, null, curLoop);
+                               } else {
+                                       var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+                                       if ( !inplace ) {
+                                               result.push.apply( result, ret );
+                                       }
+                                       return false;
+                               }
+                       } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+                               return true;
+                       }
+                       
+                       return match;
+               },
+               POS: function(match){
+                       match.unshift( true );
+                       return match;
+               }
+       },
+       filters: {
+               enabled: function(elem){
+                       return elem.disabled === false && elem.type !== "hidden";
+               },
+               disabled: function(elem){
+                       return elem.disabled === true;
+               },
+               checked: function(elem){
+                       return elem.checked === true;
+               },
+               selected: function(elem){
+                       // Accessing this property makes selected-by-default
+                       // options in Safari work properly
+                       elem.parentNode.selectedIndex;
+                       return elem.selected === true;
+               },
+               parent: function(elem){
+                       return !!elem.firstChild;
+               },
+               empty: function(elem){
+                       return !elem.firstChild;
+               },
+               has: function(elem, i, match){
+                       return !!Sizzle( match[3], elem ).length;
+               },
+               header: function(elem){
+                       return (/h\d/i).test( elem.nodeName );
+               },
+               text: function(elem){
+                       return "text" === elem.type;
+               },
+               radio: function(elem){
+                       return "radio" === elem.type;
+               },
+               checkbox: function(elem){
+                       return "checkbox" === elem.type;
+               },
+               file: function(elem){
+                       return "file" === elem.type;
+               },
+               password: function(elem){
+                       return "password" === elem.type;
+               },
+               submit: function(elem){
+                       return "submit" === elem.type;
+               },
+               image: function(elem){
+                       return "image" === elem.type;
+               },
+               reset: function(elem){
+                       return "reset" === elem.type;
+               },
+               button: function(elem){
+                       return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
+               },
+               input: function(elem){
+                       return (/input|select|textarea|button/i).test(elem.nodeName);
+               }
+       },
+       setFilters: {
+               first: function(elem, i){
+                       return i === 0;
+               },
+               last: function(elem, i, match, array){
+                       return i === array.length - 1;
+               },
+               even: function(elem, i){
+                       return i % 2 === 0;
+               },
+               odd: function(elem, i){
+                       return i % 2 === 1;
+               },
+               lt: function(elem, i, match){
+                       return i < match[3] - 0;
+               },
+               gt: function(elem, i, match){
+                       return i > match[3] - 0;
+               },
+               nth: function(elem, i, match){
+                       return match[3] - 0 === i;
+               },
+               eq: function(elem, i, match){
+                       return match[3] - 0 === i;
+               }
+       },
+       filter: {
+               PSEUDO: function(elem, match, i, array){
+                       var name = match[1], filter = Expr.filters[ name ];
+
+                       if ( filter ) {
+                               return filter( elem, i, match, array );
+                       } else if ( name === "contains" ) {
+                               return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
+                       } else if ( name === "not" ) {
+                               var not = match[3];
+
+                               for ( var j = 0, l = not.length; j < l; j++ ) {
+                                       if ( not[j] === elem ) {
+                                               return false;
+                                       }
+                               }
+
+                               return true;
+                       } else {
+                               Sizzle.error( "Syntax error, unrecognized expression: " + name );
+                       }
+               },
+               CHILD: function(elem, match){
+                       var type = match[1], node = elem;
+                       switch (type) {
+                               case 'only':
+                               case 'first':
+                                       while ( (node = node.previousSibling) )  {
+                                               if ( node.nodeType === 1 ) { 
+                                                       return false; 
+                                               }
+                                       }
+                                       if ( type === "first" ) { 
+                                               return true; 
+                                       }
+                                       node = elem;
+                               case 'last':
+                                       while ( (node = node.nextSibling) )      {
+                                               if ( node.nodeType === 1 ) { 
+                                                       return false; 
+                                               }
+                                       }
+                                       return true;
+                               case 'nth':
+                                       var first = match[2], last = match[3];
+
+                                       if ( first === 1 && last === 0 ) {
+                                               return true;
+                                       }
+                                       
+                                       var doneName = match[0],
+                                               parent = elem.parentNode;
+       
+                                       if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+                                               var count = 0;
+                                               for ( node = parent.firstChild; node; node = node.nextSibling ) {
+                                                       if ( node.nodeType === 1 ) {
+                                                               node.nodeIndex = ++count;
+                                                       }
+                                               } 
+                                               parent.sizcache = doneName;
+                                       }
+                                       
+                                       var diff = elem.nodeIndex - last;
+                                       if ( first === 0 ) {
+                                               return diff === 0;
+                                       } else {
+                                               return ( diff % first === 0 && diff / first >= 0 );
+                                       }
+                       }
+               },
+               ID: function(elem, match){
+                       return elem.nodeType === 1 && elem.getAttribute("id") === match;
+               },
+               TAG: function(elem, match){
+                       return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
+               },
+               CLASS: function(elem, match){
+                       return (" " + (elem.className || elem.getAttribute("class")) + " ")
+                               .indexOf( match ) > -1;
+               },
+               ATTR: function(elem, match){
+                       var name = match[1],
+                               result = Expr.attrHandle[ name ] ?
+                                       Expr.attrHandle[ name ]( elem ) :
+                                       elem[ name ] != null ?
+                                               elem[ name ] :
+                                               elem.getAttribute( name ),
+                               value = result + "",
+                               type = match[2],
+                               check = match[4];
+
+                       return result == null ?
+                               type === "!=" :
+                               type === "=" ?
+                               value === check :
+                               type === "*=" ?
+                               value.indexOf(check) >= 0 :
+                               type === "~=" ?
+                               (" " + value + " ").indexOf(check) >= 0 :
+                               !check ?
+                               value && result !== false :
+                               type === "!=" ?
+                               value !== check :
+                               type === "^=" ?
+                               value.indexOf(check) === 0 :
+                               type === "$=" ?
+                               value.substr(value.length - check.length) === check :
+                               type === "|=" ?
+                               value === check || value.substr(0, check.length + 1) === check + "-" :
+                               false;
+               },
+               POS: function(elem, match, i, array){
+                       var name = match[2], filter = Expr.setFilters[ name ];
+
+                       if ( filter ) {
+                               return filter( elem, i, match, array );
+                       }
+               }
+       }
+};
+
+var origPOS = Expr.match.POS,
+       fescape = function(all, num){
+               return "\\" + (num - 0 + 1);
+       };
+
+for ( var type in Expr.match ) {
+       Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+       Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+
+var makeArray = function(array, results) {
+       array = Array.prototype.slice.call( array, 0 );
+
+       if ( results ) {
+               results.push.apply( results, array );
+               return results;
+       }
+       
+       return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+       Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch(e){
+       makeArray = function(array, results) {
+               var ret = results || [], i = 0;
+
+               if ( toString.call(array) === "[object Array]" ) {
+                       Array.prototype.push.apply( ret, array );
+               } else {
+                       if ( typeof array.length === "number" ) {
+                               for ( var l = array.length; i < l; i++ ) {
+                                       ret.push( array[i] );
+                               }
+                       } else {
+                               for ( ; array[i]; i++ ) {
+                                       ret.push( array[i] );
+                               }
+                       }
+               }
+
+               return ret;
+       };
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+       sortOrder = function( a, b ) {
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+                       return a.compareDocumentPosition ? -1 : 1;
+               }
+
+               return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+       };
+} else {
+       sortOrder = function( a, b ) {
+               var ap = [], bp = [], aup = a.parentNode, bup = b.parentNode,
+                       cur = aup, al, bl;
+
+               // The nodes are identical, we can exit early
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+
+               // If the nodes are siblings (or identical) we can do a quick check
+               } else if ( aup === bup ) {
+                       return siblingCheck( a, b );
+
+               // If no parents were found then the nodes are disconnected
+               } else if ( !aup ) {
+                       return -1;
+
+               } else if ( !bup ) {
+                       return 1;
+               }
+
+               // Otherwise they're somewhere else in the tree so we need
+               // to build up a full list of the parentNodes for comparison
+               while ( cur ) {
+                       ap.unshift( cur );
+                       cur = cur.parentNode;
+               }
+
+               cur = bup;
+
+               while ( cur ) {
+                       bp.unshift( cur );
+                       cur = cur.parentNode;
+               }
+
+               al = ap.length;
+               bl = bp.length;
+
+               // Start walking down the tree looking for a discrepancy
+               for ( var i = 0; i < al && i < bl; i++ ) {
+                       if ( ap[i] !== bp[i] ) {
+                               return siblingCheck( ap[i], bp[i] );
+                       }
+               }
+
+               // We ended someplace up the tree so do a sibling check
+               return i === al ?
+                       siblingCheck( a, bp[i], -1 ) :
+                       siblingCheck( ap[i], b, 1 );
+       };
+
+       siblingCheck = function( a, b, ret ) {
+               if ( a === b ) {
+                       return ret;
+               }
+
+               var cur = a.nextSibling;
+
+               while ( cur ) {
+                       if ( cur === b ) {
+                               return -1;
+                       }
+
+                       cur = cur.nextSibling;
+               }
+
+               return 1;
+       };
+}
+
+// Utility function for retreiving the text value of an array of DOM nodes
+Sizzle.getText = function( elems ) {
+       var ret = "", elem;
+
+       for ( var i = 0; elems[i]; i++ ) {
+               elem = elems[i];
+
+               // Get the text from text nodes and CDATA nodes
+               if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+                       ret += elem.nodeValue;
+
+               // Traverse everything else, except comment nodes
+               } else if ( elem.nodeType !== 8 ) {
+                       ret += Sizzle.getText( elem.childNodes );
+               }
+       }
+
+       return ret;
+};
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+       // We're going to inject a fake input element with a specified name
+       var form = document.createElement("div"),
+               id = "script" + (new Date()).getTime();
+       form.innerHTML = "<a name='" + id + "'/>";
+
+       // Inject it into the root element, check its status, and remove it quickly
+       var root = document.documentElement;
+       root.insertBefore( form, root.firstChild );
+
+       // The workaround has to do additional checks after a getElementById
+       // Which slows things down for other browsers (hence the branching)
+       if ( document.getElementById( id ) ) {
+               Expr.find.ID = function(match, context, isXML){
+                       if ( typeof context.getElementById !== "undefined" && !isXML ) {
+                               var m = context.getElementById(match[1]);
+                               return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
+                       }
+               };
+
+               Expr.filter.ID = function(elem, match){
+                       var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+                       return elem.nodeType === 1 && node && node.nodeValue === match;
+               };
+       }
+
+       root.removeChild( form );
+       root = form = null; // release memory in IE
+})();
+
+(function(){
+       // Check to see if the browser returns only elements
+       // when doing getElementsByTagName("*")
+
+       // Create a fake element
+       var div = document.createElement("div");
+       div.appendChild( document.createComment("") );
+
+       // Make sure no comments are found
+       if ( div.getElementsByTagName("*").length > 0 ) {
+               Expr.find.TAG = function(match, context){
+                       var results = context.getElementsByTagName(match[1]);
+
+                       // Filter out possible comments
+                       if ( match[1] === "*" ) {
+                               var tmp = [];
+
+                               for ( var i = 0; results[i]; i++ ) {
+                                       if ( results[i].nodeType === 1 ) {
+                                               tmp.push( results[i] );
+                                       }
+                               }
+
+                               results = tmp;
+                       }
+
+                       return results;
+               };
+       }
+
+       // Check to see if an attribute returns normalized href attributes
+       div.innerHTML = "<a href='#'></a>";
+       if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+                       div.firstChild.getAttribute("href") !== "#" ) {
+               Expr.attrHandle.href = function(elem){
+                       return elem.getAttribute("href", 2);
+               };
+       }
+
+       div = null; // release memory in IE
+})();
+
+if ( document.querySelectorAll ) {
+       (function(){
+               var oldSizzle = Sizzle, div = document.createElement("div");
+               div.innerHTML = "<p class='TEST'></p>";
+
+               // Safari can't handle uppercase or unicode characters when
+               // in quirks mode.
+               if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+                       return;
+               }
+       
+               Sizzle = function(query, context, extra, seed){
+                       context = context || document;
+
+                       // Only use querySelectorAll on non-XML documents
+                       // (ID selectors don't work in non-HTML documents)
+                       if ( !seed && !Sizzle.isXML(context) ) {
+                               if ( context.nodeType === 9 ) {
+                                       try {
+                                               return makeArray( context.querySelectorAll(query), extra );
+                                       } catch(qsaError) {}
+
+                               // qSA works strangely on Element-rooted queries
+                               // We can work around this by specifying an extra ID on the root
+                               // and working up from there (Thanks to Andrew Dupont for the technique)
+                               // IE 8 doesn't work on object elements
+                               } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+                                       var old = context.id, id = context.id = "__sizzle__";
+
+                                       try {
+                                               return makeArray( context.querySelectorAll( "#" + id + " " + query ), extra );
+
+                                       } catch(pseudoError) {
+                                       } finally {
+                                               if ( old ) {
+                                                       context.id = old;
+
+                                               } else {
+                                                       context.removeAttribute( "id" );
+                                               }
+                                       }
+                               }
+                       }
+               
+                       return oldSizzle(query, context, extra, seed);
+               };
+
+               for ( var prop in oldSizzle ) {
+                       Sizzle[ prop ] = oldSizzle[ prop ];
+               }
+
+               div = null; // release memory in IE
+       })();
+}
+
+(function(){
+       var html = document.documentElement,
+               matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,
+               pseudoWorks = false;
+
+       try {
+               // This should fail with an exception
+               // Gecko does not error, returns false instead
+               matches.call( document.documentElement, ":sizzle" );
+       
+       } catch( pseudoError ) {
+               pseudoWorks = true;
+       }
+
+       if ( matches ) {
+               Sizzle.matchesSelector = function( node, expr ) {
+                               try { 
+                                       if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) ) {
+                                               return matches.call( node, expr );
+                                       }
+                               } catch(e) {}
+
+                               return Sizzle(expr, null, null, [node]).length > 0;
+               };
+       }
+})();
+
+(function(){
+       var div = document.createElement("div");
+
+       div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+       // Opera can't find a second classname (in 9.6)
+       // Also, make sure that getElementsByClassName actually exists
+       if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+               return;
+       }
+
+       // Safari caches class attributes, doesn't catch changes (in 3.2)
+       div.lastChild.className = "e";
+
+       if ( div.getElementsByClassName("e").length === 1 ) {
+               return;
+       }
+       
+       Expr.order.splice(1, 0, "CLASS");
+       Expr.find.CLASS = function(match, context, isXML) {
+               if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+                       return context.getElementsByClassName(match[1]);
+               }
+       };
+
+       div = null; // release memory in IE
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+       for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+               var elem = checkSet[i];
+               if ( elem ) {
+                       elem = elem[dir];
+                       var match = false;
+
+                       while ( elem ) {
+                               if ( elem.sizcache === doneName ) {
+                                       match = checkSet[elem.sizset];
+                                       break;
+                               }
+
+                               if ( elem.nodeType === 1 && !isXML ){
+                                       elem.sizcache = doneName;
+                                       elem.sizset = i;
+                               }
+
+                               if ( elem.nodeName.toLowerCase() === cur ) {
+                                       match = elem;
+                                       break;
+                               }
+
+                               elem = elem[dir];
+                       }
+
+                       checkSet[i] = match;
+               }
+       }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+       for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+               var elem = checkSet[i];
+               if ( elem ) {
+                       elem = elem[dir];
+                       var match = false;
+
+                       while ( elem ) {
+                               if ( elem.sizcache === doneName ) {
+                                       match = checkSet[elem.sizset];
+                                       break;
+                               }
+
+                               if ( elem.nodeType === 1 ) {
+                                       if ( !isXML ) {
+                                               elem.sizcache = doneName;
+                                               elem.sizset = i;
+                                       }
+                                       if ( typeof cur !== "string" ) {
+                                               if ( elem === cur ) {
+                                                       match = true;
+                                                       break;
+                                               }
+
+                                       } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+                                               match = elem;
+                                               break;
+                                       }
+                               }
+
+                               elem = elem[dir];
+                       }
+
+                       checkSet[i] = match;
+               }
+       }
+}
+
+Sizzle.contains = document.documentElement.contains ? function(a, b){
+       return a !== b && (a.contains ? a.contains(b) : true);
+} : function(a, b){
+       return !!(a.compareDocumentPosition(b) & 16);
+};
+
+Sizzle.isXML = function(elem){
+       // documentElement is verified for cases where it doesn't yet exist
+       // (such as loading iframes in IE - #4833) 
+       var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+       return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function(selector, context){
+       var tmpSet = [], later = "", match,
+               root = context.nodeType ? [context] : context;
+
+       // Position selectors must be done after the filter
+       // And so must :not(positional) so we move all PSEUDOs to the end
+       while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+               later += match[0];
+               selector = selector.replace( Expr.match.PSEUDO, "" );
+       }
+
+       selector = Expr.relative[selector] ? selector + "*" : selector;
+
+       for ( var i = 0, l = root.length; i < l; i++ ) {
+               Sizzle( selector, root[i], tmpSet );
+       }
+
+       return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})();
+
+
+var runtil = /Until$/,
+       rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+       // Note: This RegExp should be improved, or likely pulled from Sizzle
+       rmultiselector = /,/,
+       isSimple = /^.[^:#\[\.,]*$/,
+       slice = Array.prototype.slice,
+       POS = jQuery.expr.match.POS;
+
+jQuery.fn.extend({
+       find: function( selector ) {
+               var ret = this.pushStack( "", "find", selector ), length = 0;
+
+               for ( var i = 0, l = this.length; i < l; i++ ) {
+                       length = ret.length;
+                       jQuery.find( selector, this[i], ret );
+
+                       if ( i > 0 ) {
+                               // Make sure that the results are unique
+                               for ( var n = length; n < ret.length; n++ ) {
+                                       for ( var r = 0; r < length; r++ ) {
+                                               if ( ret[r] === ret[n] ) {
+                                                       ret.splice(n--, 1);
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               return ret;
+       },
+
+       has: function( target ) {
+               var targets = jQuery( target );
+               return this.filter(function() {
+                       for ( var i = 0, l = targets.length; i < l; i++ ) {
+                               if ( jQuery.contains( this, targets[i] ) ) {
+                                       return true;
+                               }
+                       }
+               });
+       },
+
+       not: function( selector ) {
+               return this.pushStack( winnow(this, selector, false), "not", selector);
+       },
+
+       filter: function( selector ) {
+               return this.pushStack( winnow(this, selector, true), "filter", selector );
+       },
+       
+       is: function( selector ) {
+               return !!selector && jQuery.filter( selector, this ).length > 0;
+       },
+
+       closest: function( selectors, context ) {
+               var ret = [], i, l, cur = this[0];
+
+               if ( jQuery.isArray( selectors ) ) {
+                       var match, matches = {}, selector, level = 1;
+
+                       if ( cur && selectors.length ) {
+                               for ( i = 0, l = selectors.length; i < l; i++ ) {
+                                       selector = selectors[i];
+
+                                       if ( !matches[selector] ) {
+                                               matches[selector] = jQuery.expr.match.POS.test( selector ) ? 
+                                                       jQuery( selector, context || this.context ) :
+                                                       selector;
+                                       }
+                               }
+
+                               while ( cur && cur.ownerDocument && cur !== context ) {
+                                       for ( selector in matches ) {
+                                               match = matches[selector];
+
+                                               if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
+                                                       ret.push({ selector: selector, elem: cur, level: level });
+                                               }
+                                       }
+
+                                       cur = cur.parentNode;
+                                       level++;
+                               }
+                       }
+
+                       return ret;
+               }
+
+               var pos = POS.test( selectors ) ? 
+                       jQuery( selectors, context || this.context ) : null;
+
+               for ( i = 0, l = this.length; i < l; i++ ) {
+                       cur = this[i];
+
+                       while ( cur ) {
+                               if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+                                       ret.push( cur );
+                                       break;
+
+                               } else {
+                                       cur = cur.parentNode;
+                                       if ( !cur || !cur.ownerDocument || cur === context ) {
+                                               break;
+                                       }
+                               }
+                       }
+               }
+
+               ret = ret.length > 1 ? jQuery.unique(ret) : ret;
+               
+               return this.pushStack( ret, "closest", selectors );
+       },
+       
+       // Determine the position of an element within
+       // the matched set of elements
+       index: function( elem ) {
+               if ( !elem || typeof elem === "string" ) {
+                       return jQuery.inArray( this[0],
+                               // If it receives a string, the selector is used
+                               // If it receives nothing, the siblings are used
+                               elem ? jQuery( elem ) : this.parent().children() );
+               }
+               // Locate the position of the desired element
+               return jQuery.inArray(
+                       // If it receives a jQuery object, the first element is used
+                       elem.jquery ? elem[0] : elem, this );
+       },
+
+       add: function( selector, context ) {
+               var set = typeof selector === "string" ?
+                               jQuery( selector, context || this.context ) :
+                               jQuery.makeArray( selector ),
+                       all = jQuery.merge( this.get(), set );
+
+               return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+                       all :
+                       jQuery.unique( all ) );
+       },
+
+       andSelf: function() {
+               return this.add( this.prevObject );
+       }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+       return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+       parent: function( elem ) {
+               var parent = elem.parentNode;
+               return parent && parent.nodeType !== 11 ? parent : null;
+       },
+       parents: function( elem ) {
+               return jQuery.dir( elem, "parentNode" );
+       },
+       parentsUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "parentNode", until );
+       },
+       next: function( elem ) {
+               return jQuery.nth( elem, 2, "nextSibling" );
+       },
+       prev: function( elem ) {
+               return jQuery.nth( elem, 2, "previousSibling" );
+       },
+       nextAll: function( elem ) {
+               return jQuery.dir( elem, "nextSibling" );
+       },
+       prevAll: function( elem ) {
+               return jQuery.dir( elem, "previousSibling" );
+       },
+       nextUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "nextSibling", until );
+       },
+       prevUntil: function( elem, i, until ) {
+               return jQuery.dir( elem, "previousSibling", until );
+       },
+       siblings: function( elem ) {
+               return jQuery.sibling( elem.parentNode.firstChild, elem );
+       },
+       children: function( elem ) {
+               return jQuery.sibling( elem.firstChild );
+       },
+       contents: function( elem ) {
+               return jQuery.nodeName( elem, "iframe" ) ?
+                       elem.contentDocument || elem.contentWindow.document :
+                       jQuery.makeArray( elem.childNodes );
+       }
+}, function( name, fn ) {
+       jQuery.fn[ name ] = function( until, selector ) {
+               var ret = jQuery.map( this, fn, until );
+               
+               if ( !runtil.test( name ) ) {
+                       selector = until;
+               }
+
+               if ( selector && typeof selector === "string" ) {
+                       ret = jQuery.filter( selector, ret );
+               }
+
+               ret = this.length > 1 ? jQuery.unique( ret ) : ret;
+
+               if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+                       ret = ret.reverse();
+               }
+
+               return this.pushStack( ret, name, slice.call(arguments).join(",") );
+       };
+});
+
+jQuery.extend({
+       filter: function( expr, elems, not ) {
+               if ( not ) {
+                       expr = ":not(" + expr + ")";
+               }
+
+               return elems.length === 1 ?
+                       jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+                       jQuery.find.matches(expr, elems);
+       },
+       
+       dir: function( elem, dir, until ) {
+               var matched = [], cur = elem[dir];
+               while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+                       if ( cur.nodeType === 1 ) {
+                               matched.push( cur );
+                       }
+                       cur = cur[dir];
+               }
+               return matched;
+       },
+
+       nth: function( cur, result, dir, elem ) {
+               result = result || 1;
+               var num = 0;
+
+               for ( ; cur; cur = cur[dir] ) {
+                       if ( cur.nodeType === 1 && ++num === result ) {
+                               break;
+                       }
+               }
+
+               return cur;
+       },
+
+       sibling: function( n, elem ) {
+               var r = [];
+
+               for ( ; n; n = n.nextSibling ) {
+                       if ( n.nodeType === 1 && n !== elem ) {
+                               r.push( n );
+                       }
+               }
+
+               return r;
+       }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+       if ( jQuery.isFunction( qualifier ) ) {
+               return jQuery.grep(elements, function( elem, i ) {
+                       var retVal = !!qualifier.call( elem, i, elem );
+                       return retVal === keep;
+               });
+
+       } else if ( qualifier.nodeType ) {
+               return jQuery.grep(elements, function( elem, i ) {
+                       return (elem === qualifier) === keep;
+               });
+
+       } else if ( typeof qualifier === "string" ) {
+               var filtered = jQuery.grep(elements, function( elem ) {
+                       return elem.nodeType === 1;
+               });
+
+               if ( isSimple.test( qualifier ) ) {
+                       return jQuery.filter(qualifier, filtered, !keep);
+               } else {
+                       qualifier = jQuery.filter( qualifier, filtered );
+               }
+       }
+
+       return jQuery.grep(elements, function( elem, i ) {
+               return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+       });
+}
+
+
+
+
+var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+       rleadingWhitespace = /^\s+/,
+       rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+       rtagName = /<([\w:]+)/,
+       rtbody = /<tbody/i,
+       rhtml = /<|&#?\w+;/,
+       rnocache = /<(?:script|object|embed|option|style)/i,
+       rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,  // checked="checked" or checked (html5)
+       raction = /\=([^="'>\s]+\/)>/g,
+       wrapMap = {
+               option: [ 1, "<select multiple='multiple'>", "</select>" ],
+               legend: [ 1, "<fieldset>", "</fieldset>" ],
+               thead: [ 1, "<table>", "</table>" ],
+               tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+               td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+               col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+               area: [ 1, "<map>", "</map>" ],
+               _default: [ 0, "", "" ]
+       };
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+       wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+       text: function( text ) {
+               if ( jQuery.isFunction(text) ) {
+                       return this.each(function(i) {
+                               var self = jQuery(this);
+                               self.text( text.call(this, i, self.text()) );
+                       });
+               }
+
+               if ( typeof text !== "object" && text !== undefined ) {
+                       return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+               }
+
+               return jQuery.text( this );
+       },
+
+       wrapAll: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each(function(i) {
+                               jQuery(this).wrapAll( html.call(this, i) );
+                       });
+               }
+
+               if ( this[0] ) {
+                       // The elements to wrap the target around
+                       var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+                       if ( this[0].parentNode ) {
+                               wrap.insertBefore( this[0] );
+                       }
+
+                       wrap.map(function() {
+                               var elem = this;
+
+                               while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+                                       elem = elem.firstChild;
+                               }
+
+                               return elem;
+                       }).append(this);
+               }
+
+               return this;
+       },
+
+       wrapInner: function( html ) {
+               if ( jQuery.isFunction( html ) ) {
+                       return this.each(function(i) {
+                               jQuery(this).wrapInner( html.call(this, i) );
+                       });
+               }
+
+               return this.each(function() {
+                       var self = jQuery( this ), contents = self.contents();
+
+                       if ( contents.length ) {
+                               contents.wrapAll( html );
+
+                       } else {
+                               self.append( html );
+                       }
+               });
+       },
+
+       wrap: function( html ) {
+               return this.each(function() {
+                       jQuery( this ).wrapAll( html );
+               });
+       },
+
+       unwrap: function() {
+               return this.parent().each(function() {
+                       if ( !jQuery.nodeName( this, "body" ) ) {
+                               jQuery( this ).replaceWith( this.childNodes );
+                       }
+               }).end();
+       },
+
+       append: function() {
+               return this.domManip(arguments, true, function( elem ) {
+                       if ( this.nodeType === 1 ) {
+                               this.appendChild( elem );
+                       }
+               });
+       },
+
+       prepend: function() {
+               return this.domManip(arguments, true, function( elem ) {
+                       if ( this.nodeType === 1 ) {
+                               this.insertBefore( elem, this.firstChild );
+                       }
+               });
+       },
+
+       before: function() {
+               if ( this[0] && this[0].parentNode ) {
+                       return this.domManip(arguments, false, function( elem ) {
+                               this.parentNode.insertBefore( elem, this );
+                       });
+               } else if ( arguments.length ) {
+                       var set = jQuery(arguments[0]);
+                       set.push.apply( set, this.toArray() );
+                       return this.pushStack( set, "before", arguments );
+               }
+       },
+
+       after: function() {
+               if ( this[0] && this[0].parentNode ) {
+                       return this.domManip(arguments, false, function( elem ) {
+                               this.parentNode.insertBefore( elem, this.nextSibling );
+                       });
+               } else if ( arguments.length ) {
+                       var set = this.pushStack( this, "after", arguments );
+                       set.push.apply( set, jQuery(arguments[0]).toArray() );
+                       return set;
+               }
+       },
+       
+       // keepData is for internal use only--do not document
+       remove: function( selector, keepData ) {
+               for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+                       if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+                               if ( !keepData && elem.nodeType === 1 ) {
+                                       jQuery.cleanData( elem.getElementsByTagName("*") );
+                                       jQuery.cleanData( [ elem ] );
+                               }
+
+                               if ( elem.parentNode ) {
+                                        elem.parentNode.removeChild( elem );
+                               }
+                       }
+               }
+               
+               return this;
+       },
+
+       empty: function() {
+               for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+                       // Remove element nodes and prevent memory leaks
+                       if ( elem.nodeType === 1 ) {
+                               jQuery.cleanData( elem.getElementsByTagName("*") );
+                       }
+
+                       // Remove any remaining nodes
+                       while ( elem.firstChild ) {
+                               elem.removeChild( elem.firstChild );
+                       }
+               }
+               
+               return this;
+       },
+
+       clone: function( events ) {
+               // Do the clone
+               var ret = this.map(function() {
+                       if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
+                               // IE copies events bound via attachEvent when
+                               // using cloneNode. Calling detachEvent on the
+                               // clone will also remove the events from the orignal
+                               // In order to get around this, we use innerHTML.
+                               // Unfortunately, this means some modifications to
+                               // attributes in IE that are actually only stored
+                               // as properties will not be copied (such as the
+                               // the name attribute on an input).
+                               var html = this.outerHTML, ownerDocument = this.ownerDocument;
+                               if ( !html ) {
+                                       var div = ownerDocument.createElement("div");
+                                       div.appendChild( this.cloneNode(true) );
+                                       html = div.innerHTML;
+                               }
+
+                               return jQuery.clean([html.replace(rinlinejQuery, "")
+                                       // Handle the case in IE 8 where action=/test/> self-closes a tag
+                                       .replace(raction, '="$1">')
+                                       .replace(rleadingWhitespace, "")], ownerDocument)[0];
+                       } else {
+                               return this.cloneNode(true);
+                       }
+               });
+
+               // Copy the events from the original to the clone
+               if ( events === true ) {
+                       cloneCopyEvent( this, ret );
+                       cloneCopyEvent( this.find("*"), ret.find("*") );
+               }
+
+               // Return the cloned set
+               return ret;
+       },
+
+       html: function( value ) {
+               if ( value === undefined ) {
+                       return this[0] && this[0].nodeType === 1 ?
+                               this[0].innerHTML.replace(rinlinejQuery, "") :
+                               null;
+
+               // See if we can take a shortcut and just use innerHTML
+               } else if ( typeof value === "string" && !rnocache.test( value ) &&
+                       (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+                       !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+
+                       value = value.replace(rxhtmlTag, "<$1></$2>");
+
+                       try {
+                               for ( var i = 0, l = this.length; i < l; i++ ) {
+                                       // Remove element nodes and prevent memory leaks
+                                       if ( this[i].nodeType === 1 ) {
+                                               jQuery.cleanData( this[i].getElementsByTagName("*") );
+                                               this[i].innerHTML = value;
+                                       }
+                               }
+
+                       // If using innerHTML throws an exception, use the fallback method
+                       } catch(e) {
+                               this.empty().append( value );
+                       }
+
+               } else if ( jQuery.isFunction( value ) ) {
+                       this.each(function(i){
+                               var self = jQuery(this);
+                               self.html( value.call(this, i, self.html()) );
+                       });
+
+               } else {
+                       this.empty().append( value );
+               }
+
+               return this;
+       },
+
+       replaceWith: function( value ) {
+               if ( this[0] && this[0].parentNode ) {
+                       // Make sure that the elements are removed from the DOM before they are inserted
+                       // this can help fix replacing a parent with child elements
+                       if ( jQuery.isFunction( value ) ) {
+                               return this.each(function(i) {
+                                       var self = jQuery(this), old = self.html();
+                                       self.replaceWith( value.call( this, i, old ) );
+                               });
+                       }
+
+                       if ( typeof value !== "string" ) {
+                               value = jQuery(value).detach();
+                       }
+
+                       return this.each(function() {
+                               var next = this.nextSibling, parent = this.parentNode;
+
+                               jQuery(this).remove();
+
+                               if ( next ) {
+                                       jQuery(next).before( value );
+                               } else {
+                                       jQuery(parent).append( value );
+                               }
+                       });
+               } else {
+                       return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
+               }
+       },
+
+       detach: function( selector ) {
+               return this.remove( selector, true );
+       },
+
+       domManip: function( args, table, callback ) {
+               var results, first, value = args[0], scripts = [], fragment, parent;
+
+               // We can't cloneNode fragments that contain checked, in WebKit
+               if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+                       return this.each(function() {
+                               jQuery(this).domManip( args, table, callback, true );
+                       });
+               }
+
+               if ( jQuery.isFunction(value) ) {
+                       return this.each(function(i) {
+                               var self = jQuery(this);
+                               args[0] = value.call(this, i, table ? self.html() : undefined);
+                               self.domManip( args, table, callback );
+                       });
+               }
+
+               if ( this[0] ) {
+                       parent = value && value.parentNode;
+
+                       // If we're in a fragment, just use that instead of building a new one
+                       if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+                               results = { fragment: parent };
+
+                       } else {
+                               results = jQuery.buildFragment( args, this, scripts );
+                       }
+                       
+                       fragment = results.fragment;
+                       
+                       if ( fragment.childNodes.length === 1 ) {
+                               first = fragment = fragment.firstChild;
+                       } else {
+                               first = fragment.firstChild;
+                       }
+
+                       if ( first ) {
+                               table = table && jQuery.nodeName( first, "tr" );
+
+                               for ( var i = 0, l = this.length; i < l; i++ ) {
+                                       callback.call(
+                                               table ?
+                                                       root(this[i], first) :
+                                                       this[i],
+                                               i > 0 || results.cacheable || this.length > 1  ?
+                                                       fragment.cloneNode(true) :
+                                                       fragment
+                                       );
+                               }
+                       }
+
+                       if ( scripts.length ) {
+                               jQuery.each( scripts, evalScript );
+                       }
+               }
+
+               return this;
+       }
+});
+
+function root( elem, cur ) {
+       return jQuery.nodeName(elem, "table") ?
+               (elem.getElementsByTagName("tbody")[0] ||
+               elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+               elem;
+}
+
+function cloneCopyEvent(orig, ret) {
+       var i = 0;
+
+       ret.each(function() {
+               if ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {
+                       return;
+               }
+
+               var oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;
+
+               if ( events ) {
+                       delete curData.handle;
+                       curData.events = {};
+
+                       for ( var type in events ) {
+                               for ( var handler in events[ type ] ) {
+                                       jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
+                               }
+                       }
+               }
+       });
+}
+
+jQuery.buildFragment = function( args, nodes, scripts ) {
+       var fragment, cacheable, cacheresults,
+               doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
+
+       // Only cache "small" (1/2 KB) strings that are associated with the main document
+       // Cloning options loses the selected state, so don't cache them
+       // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+       // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+       if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
+               !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+
+               cacheable = true;
+               cacheresults = jQuery.fragments[ args[0] ];
+               if ( cacheresults ) {
+                       if ( cacheresults !== 1 ) {
+                               fragment = cacheresults;
+                       }
+               }
+       }
+
+       if ( !fragment ) {
+               fragment = doc.createDocumentFragment();
+               jQuery.clean( args, doc, fragment, scripts );
+       }
+
+       if ( cacheable ) {
+               jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
+       }
+
+       return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+       appendTo: "append",
+       prependTo: "prepend",
+       insertBefore: "before",
+       insertAfter: "after",
+       replaceAll: "replaceWith"
+}, function( name, original ) {
+       jQuery.fn[ name ] = function( selector ) {
+               var ret = [], insert = jQuery( selector ),
+                       parent = this.length === 1 && this[0].parentNode;
+               
+               if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+                       insert[ original ]( this[0] );
+                       return this;
+                       
+               } else {
+                       for ( var i = 0, l = insert.length; i < l; i++ ) {
+                               var elems = (i > 0 ? this.clone(true) : this).get();
+                               jQuery( insert[i] )[ original ]( elems );
+                               ret = ret.concat( elems );
+                       }
+               
+                       return this.pushStack( ret, name, insert.selector );
+               }
+       };
+});
+
+jQuery.extend({
+       clean: function( elems, context, fragment, scripts ) {
+               context = context || document;
+
+               // !context.createElement fails in IE with an error but returns typeof 'object'
+               if ( typeof context.createElement === "undefined" ) {
+                       context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+               }
+
+               var ret = [];
+
+               for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+                       if ( typeof elem === "number" ) {
+                               elem += "";
+                       }
+
+                       if ( !elem ) {
+                               continue;
+                       }
+
+                       // Convert html string into DOM nodes
+                       if ( typeof elem === "string" && !rhtml.test( elem ) ) {
+                               elem = context.createTextNode( elem );
+
+                       } else if ( typeof elem === "string" ) {
+                               // Fix "XHTML"-style tags in all browsers
+                               elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+                               // Trim whitespace, otherwise indexOf won't work as expected
+                               var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+                                       wrap = wrapMap[ tag ] || wrapMap._default,
+                                       depth = wrap[0],
+                                       div = context.createElement("div");
+
+                               // Go to html and back, then peel off extra wrappers
+                               div.innerHTML = wrap[1] + elem + wrap[2];
+
+                               // Move to the right depth
+                               while ( depth-- ) {
+                                       div = div.lastChild;
+                               }
+
+                               // Remove IE's autoinserted <tbody> from table fragments
+                               if ( !jQuery.support.tbody ) {
+
+                                       // String was a <table>, *may* have spurious <tbody>
+                                       var hasBody = rtbody.test(elem),
+                                               tbody = tag === "table" && !hasBody ?
+                                                       div.firstChild && div.firstChild.childNodes :
+
+                                                       // String was a bare <thead> or <tfoot>
+                                                       wrap[1] === "<table>" && !hasBody ?
+                                                               div.childNodes :
+                                                               [];
+
+                                       for ( var j = tbody.length - 1; j >= 0 ; --j ) {
+                                               if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+                                                       tbody[ j ].parentNode.removeChild( tbody[ j ] );
+                                               }
+                                       }
+
+                               }
+
+                               // IE completely kills leading whitespace when innerHTML is used
+                               if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+                                       div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+                               }
+
+                               elem = div.childNodes;
+                       }
+
+                       if ( elem.nodeType ) {
+                               ret.push( elem );
+                       } else {
+                               ret = jQuery.merge( ret, elem );
+                       }
+               }
+
+               if ( fragment ) {
+                       for ( i = 0; ret[i]; i++ ) {
+                               if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+                                       scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+                               
+                               } else {
+                                       if ( ret[i].nodeType === 1 ) {
+                                               ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+                                       }
+                                       fragment.appendChild( ret[i] );
+                               }
+                       }
+               }
+
+               return ret;
+       },
+       
+       cleanData: function( elems ) {
+               var data, id, cache = jQuery.cache,
+                       special = jQuery.event.special,
+                       deleteExpando = jQuery.support.deleteExpando;
+               
+               for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+                       if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+                               continue;
+                       }
+
+                       id = elem[ jQuery.expando ];
+                       
+                       if ( id ) {
+                               data = cache[ id ];
+                               
+                               if ( data && data.events ) {
+                                       for ( var type in data.events ) {
+                                               if ( special[ type ] ) {
+                                                       jQuery.event.remove( elem, type );
+
+                                               } else {
+                                                       jQuery.removeEvent( elem, type, data.handle );
+                                               }
+                                       }
+                               }
+                               
+                               if ( deleteExpando ) {
+                                       delete elem[ jQuery.expando ];
+
+                               } else if ( elem.removeAttribute ) {
+                                       elem.removeAttribute( jQuery.expando );
+                               }
+                               
+                               delete cache[ id ];
+                       }
+               }
+       }
+});
+
+function evalScript( i, elem ) {
+       if ( elem.src ) {
+               jQuery.ajax({
+                       url: elem.src,
+                       async: false,
+                       dataType: "script"
+               });
+       } else {
+               jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+       }
+
+       if ( elem.parentNode ) {
+               elem.parentNode.removeChild( elem );
+       }
+}
+
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
+       ropacity = /opacity=([^)]*)/,
+       rdashAlpha = /-([a-z])/ig,
+       rupper = /([A-Z])/g,
+       rnumpx = /^-?\d+(?:px)?$/i,
+       rnum = /^-?\d/,
+
+       cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+       cssWidth = [ "Left", "Right" ],
+       cssHeight = [ "Top", "Bottom" ],
+       curCSS,
+
+       // cache check for defaultView.getComputedStyle
+       getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
+
+       fcamelCase = function( all, letter ) {
+               return letter.toUpperCase();
+       };
+
+jQuery.fn.css = function( name, value ) {
+       // Setting 'undefined' is a no-op
+       if ( arguments.length === 2 && value === undefined ) {
+               return this;
+       }
+
+       return jQuery.access( this, name, value, true, function( elem, name, value ) {
+               return value !== undefined ?
+                       jQuery.style( elem, name, value ) :
+                       jQuery.css( elem, name );
+       });
+};
+
+jQuery.extend({
+       // Add in style property hooks for overriding the default
+       // behavior of getting and setting a style property
+       cssHooks: {
+               opacity: {
+                       get: function( elem, computed ) {
+                               if ( computed ) {
+                                       // We should always get a number back from opacity
+                                       var ret = curCSS( elem, "opacity", "opacity" );
+                                       return ret === "" ? "1" : ret;
+
+                               } else {
+                                       return elem.style.opacity;
+                               }
+                       }
+               }
+       },
+
+       // Exclude the following css properties to add px
+       cssNumber: {
+               "zIndex": true,
+               "fontWeight": true,
+               "opacity": true,
+               "zoom": true,
+               "lineHeight": true
+       },
+
+       // Add in properties whose names you wish to fix before
+       // setting or getting the value
+       cssProps: {
+               // normalize float css property
+               "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+       },
+
+       // Get and set the style property on a DOM Node
+       style: function( elem, name, value, extra ) {
+               // Don't set styles on text and comment nodes
+               if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+                       return;
+               }
+
+               // Make sure that we're working with the right name
+               var ret, origName = jQuery.camelCase( name ),
+                       style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+               name = jQuery.cssProps[ origName ] || origName;
+
+               // Check if we're setting a value
+               if ( value !== undefined ) {
+                       // Make sure that NaN and null values aren't set. See: #7116
+                       if ( typeof value === "number" && isNaN( value ) || value == null ) {
+                               return;
+                       }
+
+                       // If a number was passed in, add 'px' to the (except for certain CSS properties)
+                       if ( typeof value === "number" && !jQuery.cssNumber[ origName ] ) {
+                               value += "px";
+                       }
+
+                       // If a hook was provided, use that value, otherwise just set the specified value
+                       if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+                               // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+                               // Fixes bug #5509
+                               try {
+                                       style[ name ] = value;
+                               } catch(e) {}
+                       }
+
+               } else {
+                       // If a hook was provided get the non-computed value from there
+                       if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+                               return ret;
+                       }
+
+                       // Otherwise just get the value from the style object
+                       return style[ name ];
+               }
+       },
+
+       css: function( elem, name, extra ) {
+               // Make sure that we're working with the right name
+               var ret, origName = jQuery.camelCase( name ),
+                       hooks = jQuery.cssHooks[ origName ];
+
+               name = jQuery.cssProps[ origName ] || origName;
+
+               // If a hook was provided get the computed value from there
+               if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+                       return ret;
+
+               // Otherwise, if a way to get the computed value exists, use that
+               } else if ( curCSS ) {
+                       return curCSS( elem, name, origName );
+               }
+       },
+
+       // A method for quickly swapping in/out CSS properties to get correct calculations
+       swap: function( elem, options, callback ) {
+               var old = {};
+
+               // Remember the old values, and insert the new ones
+               for ( var name in options ) {
+                       old[ name ] = elem.style[ name ];
+                       elem.style[ name ] = options[ name ];
+               }
+
+               callback.call( elem );
+
+               // Revert the old values
+               for ( name in options ) {
+                       elem.style[ name ] = old[ name ];
+               }
+       },
+
+       camelCase: function( string ) {
+               return string.replace( rdashAlpha, fcamelCase );
+       }
+});
+
+// DEPRECATED, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
+
+jQuery.each(["height", "width"], function( i, name ) {
+       jQuery.cssHooks[ name ] = {
+               get: function( elem, computed, extra ) {
+                       var val;
+
+                       if ( computed ) {
+                               if ( elem.offsetWidth !== 0 ) {
+                                       val = getWH( elem, name, extra );
+
+                               } else {
+                                       jQuery.swap( elem, cssShow, function() {
+                                               val = getWH( elem, name, extra );
+                                       });
+                               }
+
+                               return val + "px";
+                       }
+               },
+
+               set: function( elem, value ) {
+                       if ( rnumpx.test( value ) ) {
+                               // ignore negative width and height values #1599
+                               value = parseFloat(value);
+
+                               if ( value >= 0 ) {
+                                       return value + "px";
+                               }
+
+                       } else {
+                               return value;
+                       }
+               }
+       };
+});
+
+if ( !jQuery.support.opacity ) {
+       jQuery.cssHooks.opacity = {
+               get: function( elem, computed ) {
+                       // IE uses filters for opacity
+                       return ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "") ?
+                               (parseFloat(RegExp.$1) / 100) + "" :
+                               computed ? "1" : "";
+               },
+
+               set: function( elem, value ) {
+                       var style = elem.style;
+
+                       // IE has trouble with opacity if it does not have layout
+                       // Force it by setting the zoom level
+                       style.zoom = 1;
+
+                       // Set the alpha filter to set the opacity
+                       var opacity = jQuery.isNaN(value) ?
+                               "" :
+                               "alpha(opacity=" + value * 100 + ")",
+                               filter = style.filter || "";
+
+                       style.filter = ralpha.test(filter) ?
+                               filter.replace(ralpha, opacity) :
+                               style.filter + ' ' + opacity;
+               }
+       };
+}
+
+if ( getComputedStyle ) {
+       curCSS = function( elem, newName, name ) {
+               var ret, defaultView, computedStyle;
+
+               name = name.replace( rupper, "-$1" ).toLowerCase();
+
+               if ( !(defaultView = elem.ownerDocument.defaultView) ) {
+                       return undefined;
+               }
+
+               if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+                       ret = computedStyle.getPropertyValue( name );
+                       if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+                               ret = jQuery.style( elem, name );
+                       }
+               }
+
+               return ret;
+       };
+
+} else if ( document.documentElement.currentStyle ) {
+       curCSS = function( elem, name ) {
+               var left, rsLeft, ret = elem.currentStyle && elem.currentStyle[ name ], style = elem.style;
+
+               // From the awesome hack by Dean Edwards
+               // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+               // If we're not dealing with a regular pixel number
+               // but a number that has a weird ending, we need to convert it to pixels
+               if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+                       // Remember the original values
+                       left = style.left;
+                       rsLeft = elem.runtimeStyle.left;
+
+                       // Put in the new values to get a computed value out
+                       elem.runtimeStyle.left = elem.currentStyle.left;
+                       style.left = name === "fontSize" ? "1em" : (ret || 0);
+                       ret = style.pixelLeft + "px";
+
+                       // Revert the changed values
+                       style.left = left;
+                       elem.runtimeStyle.left = rsLeft;
+               }
+
+               return ret;
+       };
+}
+
+function getWH( elem, name, extra ) {
+       var which = name === "width" ? cssWidth : cssHeight,
+               val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
+
+       if ( extra === "border" ) {
+               return val;
+       }
+
+       jQuery.each( which, function() {
+               if ( !extra ) {
+                       val -= parseFloat(jQuery.css( elem, "padding" + this )) || 0;
+               }
+
+               if ( extra === "margin" ) {
+                       val += parseFloat(jQuery.css( elem, "margin" + this )) || 0;
+
+               } else {
+                       val -= parseFloat(jQuery.css( elem, "border" + this + "Width" )) || 0;
+               }
+       });
+
+       return val;
+}
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+       jQuery.expr.filters.hidden = function( elem ) {
+               var width = elem.offsetWidth, height = elem.offsetHeight;
+
+               return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, "display" )) === "none");
+       };
+
+       jQuery.expr.filters.visible = function( elem ) {
+               return !jQuery.expr.filters.hidden( elem );
+       };
+}
+
+
+
+
+var jsc = jQuery.now(),
+       rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+       rselectTextarea = /^(?:select|textarea)/i,
+       rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+       rnoContent = /^(?:GET|HEAD|DELETE)$/,
+       rbracket = /\[\]$/,
+       jsre = /\=\?(&|$)/,
+       rquery = /\?/,
+       rts = /([?&])_=[^&]*/,
+       rurl = /^(\w+:)?\/\/([^\/?#]+)/,
+       r20 = /%20/g,
+       rhash = /#.*$/,
+
+       // Keep a copy of the old load method
+       _load = jQuery.fn.load;
+
+jQuery.fn.extend({
+       load: function( url, params, callback ) {
+               if ( typeof url !== "string" && _load ) {
+                       return _load.apply( this, arguments );
+
+               // Don't do a request if no elements are being requested
+               } else if ( !this.length ) {
+                       return this;
+               }
+
+               var off = url.indexOf(" ");
+               if ( off >= 0 ) {
+                       var selector = url.slice(off, url.length);
+                       url = url.slice(0, off);
+               }
+
+               // Default to a GET request
+               var type = "GET";
+
+               // If the second parameter was provided
+               if ( params ) {
+                       // If it's a function
+                       if ( jQuery.isFunction( params ) ) {
+                               // We assume that it's the callback
+                               callback = params;
+                               params = null;
+
+                       // Otherwise, build a param string
+                       } else if ( typeof params === "object" ) {
+                               params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+                               type = "POST";
+                       }
+               }
+
+               var self = this;
+
+               // Request the remote document
+               jQuery.ajax({
+                       url: url,
+                       type: type,
+                       dataType: "html",
+                       data: params,
+                       complete: function( res, status ) {
+                               // If successful, inject the HTML into all the matched elements
+                               if ( status === "success" || status === "notmodified" ) {
+                                       // See if a selector was specified
+                                       self.html( selector ?
+                                               // Create a dummy div to hold the results
+                                               jQuery("<div>")
+                                                       // inject the contents of the document in, removing the scripts
+                                                       // to avoid any 'Permission Denied' errors in IE
+                                                       .append(res.responseText.replace(rscript, ""))
+
+                                                       // Locate the specified elements
+                                                       .find(selector) :
+
+                                               // If not, just inject the full result
+                                               res.responseText );
+                               }
+
+                               if ( callback ) {
+                                       self.each( callback, [res.responseText, status, res] );
+                               }
+                       }
+               });
+
+               return this;
+       },
+
+       serialize: function() {
+               return jQuery.param(this.serializeArray());
+       },
+
+       serializeArray: function() {
+               return this.map(function() {
+                       return this.elements ? jQuery.makeArray(this.elements) : this;
+               })
+               .filter(function() {
+                       return this.name && !this.disabled &&
+                               (this.checked || rselectTextarea.test(this.nodeName) ||
+                                       rinput.test(this.type));
+               })
+               .map(function( i, elem ) {
+                       var val = jQuery(this).val();
+
+                       return val == null ?
+                               null :
+                               jQuery.isArray(val) ?
+                                       jQuery.map( val, function( val, i ) {
+                                               return { name: elem.name, value: val };
+                                       }) :
+                                       { name: elem.name, value: val };
+               }).get();
+       }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o ) {
+       jQuery.fn[o] = function( f ) {
+               return this.bind(o, f);
+       };
+});
+
+jQuery.extend({
+       get: function( url, data, callback, type ) {
+               // shift arguments if data argument was omited
+               if ( jQuery.isFunction( data ) ) {
+                       type = type || callback;
+                       callback = data;
+                       data = null;
+               }
+
+               return jQuery.ajax({
+                       type: "GET",
+                       url: url,
+                       data: data,
+                       success: callback,
+                       dataType: type
+               });
+       },
+
+       getScript: function( url, callback ) {
+               return jQuery.get(url, null, callback, "script");
+       },
+
+       getJSON: function( url, data, callback ) {
+               return jQuery.get(url, data, callback, "json");
+       },
+
+       post: function( url, data, callback, type ) {
+               // shift arguments if data argument was omited
+               if ( jQuery.isFunction( data ) ) {
+                       type = type || callback;
+                       callback = data;
+                       data = {};
+               }
+
+               return jQuery.ajax({
+                       type: "POST",
+                       url: url,
+                       data: data,
+                       success: callback,
+                       dataType: type
+               });
+       },
+
+       ajaxSetup: function( settings ) {
+               jQuery.extend( jQuery.ajaxSettings, settings );
+       },
+
+       ajaxSettings: {
+               url: location.href,
+               global: true,
+               type: "GET",
+               contentType: "application/x-www-form-urlencoded",
+               processData: true,
+               async: true,
+               /*
+               timeout: 0,
+               data: null,
+               username: null,
+               password: null,
+               traditional: false,
+               */
+               // This function can be overriden by calling jQuery.ajaxSetup
+               xhr: function() {
+                       return new window.XMLHttpRequest();
+               },
+               accepts: {
+                       xml: "application/xml, text/xml",
+                       html: "text/html",
+                       script: "text/javascript, application/javascript",
+                       json: "application/json, text/javascript",
+                       text: "text/plain",
+                       _default: "*/*"
+               }
+       },
+
+       ajax: function( origSettings ) {
+               var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings),
+                       jsonp, status, data, type = s.type.toUpperCase(), noContent = rnoContent.test(type);
+
+               s.url = s.url.replace( rhash, "" );
+
+               // Use original (not extended) context object if it was provided
+               s.context = origSettings && origSettings.context != null ? origSettings.context : s;
+
+               // convert data if not already a string
+               if ( s.data && s.processData && typeof s.data !== "string" ) {
+                       s.data = jQuery.param( s.data, s.traditional );
+               }
+
+               // Handle JSONP Parameter Callbacks
+               if ( s.dataType === "jsonp" ) {
+                       if ( type === "GET" ) {
+                               if ( !jsre.test( s.url ) ) {
+                                       s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+                               }
+                       } else if ( !s.data || !jsre.test(s.data) ) {
+                               s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+                       }
+                       s.dataType = "json";
+               }
+
+               // Build temporary JSONP function
+               if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
+                       jsonp = s.jsonpCallback || ("jsonp" + jsc++);
+
+                       // Replace the =? sequence both in the query string and the data
+                       if ( s.data ) {
+                               s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+                       }
+
+                       s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+                       // We need to make sure
+                       // that a JSONP style response is executed properly
+                       s.dataType = "script";
+
+                       // Handle JSONP-style loading
+                       var customJsonp = window[ jsonp ];
+
+                       window[ jsonp ] = function( tmp ) {
+                               data = tmp;
+                               jQuery.handleSuccess( s, xhr, status, data );
+                               jQuery.handleComplete( s, xhr, status, data );
+
+                               if ( jQuery.isFunction( customJsonp ) ) {
+                                       customJsonp( tmp );
+
+                               } else {
+                                       // Garbage collect
+                                       window[ jsonp ] = undefined;
+
+                                       try {
+                                               delete window[ jsonp ];
+                                       } catch( jsonpError ) {}
+                               }
+                               
+                               if ( head ) {
+                                       head.removeChild( script );
+                               }
+                       };
+               }
+
+               if ( s.dataType === "script" && s.cache === null ) {
+                       s.cache = false;
+               }
+
+               if ( s.cache === false && type === "GET" ) {
+                       var ts = jQuery.now();
+
+                       // try replacing _= if it is there
+                       var ret = s.url.replace(rts, "$1_=" + ts);
+
+                       // if nothing was replaced, add timestamp to the end
+                       s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
+               }
+
+               // If data is available, append data to url for get requests
+               if ( s.data && type === "GET" ) {
+                       s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
+               }
+
+               // Watch for a new set of requests
+               if ( s.global && jQuery.active++ === 0 ) {
+                       jQuery.event.trigger( "ajaxStart" );
+               }
+
+               // Matches an absolute URL, and saves the domain
+               var parts = rurl.exec( s.url ),
+                       remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
+
+               // If we're requesting a remote document
+               // and trying to load JSON or Script with a GET
+               if ( s.dataType === "script" && type === "GET" && remote ) {
+                       var head = document.getElementsByTagName("head")[0] || document.documentElement;
+                       var script = document.createElement("script");
+                       if ( s.scriptCharset ) {
+                               script.charset = s.scriptCharset;
+                       }
+                       script.src = s.url;
+
+                       // Handle Script loading
+                       if ( !jsonp ) {
+                               var done = false;
+
+                               // Attach handlers for all browsers
+                               script.onload = script.onreadystatechange = function() {
+                                       if ( !done && (!this.readyState ||
+                                                       this.readyState === "loaded" || this.readyState === "complete") ) {
+                                               done = true;
+                                               jQuery.handleSuccess( s, xhr, status, data );
+                                               jQuery.handleComplete( s, xhr, status, data );
+
+                                               // Handle memory leak in IE
+                                               script.onload = script.onreadystatechange = null;
+                                               if ( head && script.parentNode ) {
+                                                       head.removeChild( script );
+                                               }
+                                       }
+                               };
+                       }
+
+                       // Use insertBefore instead of appendChild  to circumvent an IE6 bug.
+                       // This arises when a base node is used (#2709 and #4378).
+                       head.insertBefore( script, head.firstChild );
+
+                       // We handle everything using the script element injection
+                       return undefined;
+               }
+
+               var requestDone = false;
+
+               // Create the request object
+               var xhr = s.xhr();
+
+               if ( !xhr ) {
+                       return;
+               }
+
+               // Open the socket
+               // Passing null username, generates a login popup on Opera (#2865)
+               if ( s.username ) {
+                       xhr.open(type, s.url, s.async, s.username, s.password);
+               } else {
+                       xhr.open(type, s.url, s.async);
+               }
+
+               // Need an extra try/catch for cross domain requests in Firefox 3
+               try {
+                       // Set content-type if data specified and content-body is valid for this type
+                       if ( (s.data != null && !noContent) || (origSettings && origSettings.contentType) ) {
+                               xhr.setRequestHeader("Content-Type", s.contentType);
+                       }
+
+                       // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+                       if ( s.ifModified ) {
+                               if ( jQuery.lastModified[s.url] ) {
+                                       xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
+                               }
+
+                               if ( jQuery.etag[s.url] ) {
+                                       xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
+                               }
+                       }
+
+                       // Set header so the called script knows that it's an XMLHttpRequest
+                       // Only send the header if it's not a remote XHR
+                       if ( !remote ) {
+                               xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+                       }
+
+                       // Set the Accepts header for the server, depending on the dataType
+                       xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
+                               s.accepts[ s.dataType ] + ", */*; q=0.01" :
+                               s.accepts._default );
+               } catch( headerError ) {}
+
+               // Allow custom headers/mimetypes and early abort
+               if ( s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false ) {
+                       // Handle the global AJAX counter
+                       if ( s.global && jQuery.active-- === 1 ) {
+                               jQuery.event.trigger( "ajaxStop" );
+                       }
+
+                       // close opended socket
+                       xhr.abort();
+                       return false;
+               }
+
+               if ( s.global ) {
+                       jQuery.triggerGlobal( s, "ajaxSend", [xhr, s] );
+               }
+
+               // Wait for a response to come back
+               var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
+                       // The request was aborted
+                       if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
+                               // Opera doesn't call onreadystatechange before this point
+                               // so we simulate the call
+                               if ( !requestDone ) {
+                                       jQuery.handleComplete( s, xhr, status, data );
+                               }
+
+                               requestDone = true;
+                               if ( xhr ) {
+                                       xhr.onreadystatechange = jQuery.noop;
+                               }
+
+                       // The transfer is complete and the data is available, or the request timed out
+                       } else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
+                               requestDone = true;
+                               xhr.onreadystatechange = jQuery.noop;
+
+                               status = isTimeout === "timeout" ?
+                                       "timeout" :
+                                       !jQuery.httpSuccess( xhr ) ?
+                                               "error" :
+                                               s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
+                                                       "notmodified" :
+                                                       "success";
+
+                               var errMsg;
+
+                               if ( status === "success" ) {
+                                       // Watch for, and catch, XML document parse errors
+                                       try {
+                                               // process the data (runs the xml through httpData regardless of callback)
+                                               data = jQuery.httpData( xhr, s.dataType, s );
+                                       } catch( parserError ) {
+                                               status = "parsererror";
+                                               errMsg = parserError;
+                                       }
+                               }
+
+                               // Make sure that the request was successful or notmodified
+                               if ( status === "success" || status === "notmodified" ) {
+                                       // JSONP handles its own success callback
+                                       if ( !jsonp ) {
+                                               jQuery.handleSuccess( s, xhr, status, data );
+                                       }
+                               } else {
+                                       jQuery.handleError( s, xhr, status, errMsg );
+                               }
+
+                               // Fire the complete handlers
+                               if ( !jsonp ) {
+                                       jQuery.handleComplete( s, xhr, status, data );
+                               }
+
+                               if ( isTimeout === "timeout" ) {
+                                       xhr.abort();
+                               }
+
+                               // Stop memory leaks
+                               if ( s.async ) {
+                                       xhr = null;
+                               }
+                       }
+               };
+
+               // Override the abort handler, if we can (IE 6 doesn't allow it, but that's OK)
+               // Opera doesn't fire onreadystatechange at all on abort
+               try {
+                       var oldAbort = xhr.abort;
+                       xhr.abort = function() {
+                               // xhr.abort in IE7 is not a native JS function
+                               // and does not have a call property
+                               if ( xhr && oldAbort.call ) {
+                                       oldAbort.call( xhr );
+                               }
+
+                               onreadystatechange( "abort" );
+                       };
+               } catch( abortError ) {}
+
+               // Timeout checker
+               if ( s.async && s.timeout > 0 ) {
+                       setTimeout(function() {
+                               // Check to see if the request is still happening
+                               if ( xhr && !requestDone ) {
+                                       onreadystatechange( "timeout" );
+                               }
+                       }, s.timeout);
+               }
+
+               // Send the data
+               try {
+                       xhr.send( noContent || s.data == null ? null : s.data );
+
+               } catch( sendError ) {
+                       jQuery.handleError( s, xhr, null, sendError );
+
+                       // Fire the complete handlers
+                       jQuery.handleComplete( s, xhr, status, data );
+               }
+
+               // firefox 1.5 doesn't fire statechange for sync requests
+               if ( !s.async ) {
+                       onreadystatechange();
+               }
+
+               // return XMLHttpRequest to allow aborting the request etc.
+               return xhr;
+       },
+
+       // Serialize an array of form elements or a set of
+       // key/values into a query string
+       param: function( a, traditional ) {
+               var s = [], add = function( key, value ) {
+                       // If value is a function, invoke it and return its value
+                       value = jQuery.isFunction(value) ? value() : value;
+                       s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
+               };
+               
+               // Set traditional to true for jQuery <= 1.3.2 behavior.
+               if ( traditional === undefined ) {
+                       traditional = jQuery.ajaxSettings.traditional;
+               }
+               
+               // If an array was passed in, assume that it is an array of form elements.
+               if ( jQuery.isArray(a) || a.jquery ) {
+                       // Serialize the form elements
+                       jQuery.each( a, function() {
+                               add( this.name, this.value );
+                       });
+                       
+               } else {
+                       // If traditional, encode the "old" way (the way 1.3.2 or older
+                       // did it), otherwise encode params recursively.
+                       for ( var prefix in a ) {
+                               buildParams( prefix, a[prefix], traditional, add );
+                       }
+               }
+
+               // Return the resulting serialization
+               return s.join("&").replace(r20, "+");
+       }
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+       if ( jQuery.isArray(obj) && obj.length ) {
+               // Serialize array item.
+               jQuery.each( obj, function( i, v ) {
+                       if ( traditional || rbracket.test( prefix ) ) {
+                               // Treat each array item as a scalar.
+                               add( prefix, v );
+
+                       } else {
+                               // If array item is non-scalar (array or object), encode its
+                               // numeric index to resolve deserialization ambiguity issues.
+                               // Note that rack (as of 1.0.0) can't currently deserialize
+                               // nested arrays properly, and attempting to do so may cause
+                               // a server error. Possible fixes are to modify rack's
+                               // deserialization algorithm or to provide an option or flag
+                               // to force array serialization to be shallow.
+                               buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+                       }
+               });
+                       
+       } else if ( !traditional && obj != null && typeof obj === "object" ) {
+               if ( jQuery.isEmptyObject( obj ) ) {
+                       add( prefix, "" );
+
+               // Serialize object item.
+               } else {
+                       jQuery.each( obj, function( k, v ) {
+                               buildParams( prefix + "[" + k + "]", v, traditional, add );
+                       });
+               }
+                                       
+       } else {
+               // Serialize scalar item.
+               add( prefix, obj );
+       }
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+       // Counter for holding the number of active queries
+       active: 0,
+
+       // Last-Modified header cache for next request
+       lastModified: {},
+       etag: {},
+
+       handleError: function( s, xhr, status, e ) {
+               // If a local callback was specified, fire it
+               if ( s.error ) {
+                       s.error.call( s.context, xhr, status, e );
+               }
+
+               // Fire the global callback
+               if ( s.global ) {
+                       jQuery.triggerGlobal( s, "ajaxError", [xhr, s, e] );
+               }
+       },
+
+       handleSuccess: function( s, xhr, status, data ) {
+               // If a local callback was specified, fire it and pass it the data
+               if ( s.success ) {
+                       s.success.call( s.context, data, status, xhr );
+               }
+
+               // Fire the global callback
+               if ( s.global ) {
+                       jQuery.triggerGlobal( s, "ajaxSuccess", [xhr, s] );
+               }
+       },
+
+       handleComplete: function( s, xhr, status ) {
+               // Process result
+               if ( s.complete ) {
+                       s.complete.call( s.context, xhr, status );
+               }
+
+               // The request was completed
+               if ( s.global ) {
+                       jQuery.triggerGlobal( s, "ajaxComplete", [xhr, s] );
+               }
+
+               // Handle the global AJAX counter
+               if ( s.global && jQuery.active-- === 1 ) {
+                       jQuery.event.trigger( "ajaxStop" );
+               }
+       },
+               
+       triggerGlobal: function( s, type, args ) {
+               (s.context && s.context.url == null ? jQuery(s.context) : jQuery.event).trigger(type, args);
+       },
+
+       // Determines if an XMLHttpRequest was successful or not
+       httpSuccess: function( xhr ) {
+               try {
+                       // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
+                       return !xhr.status && location.protocol === "file:" ||
+                               xhr.status >= 200 && xhr.status < 300 ||
+                               xhr.status === 304 || xhr.status === 1223;
+               } catch(e) {}
+
+               return false;
+       },
+
+       // Determines if an XMLHttpRequest returns NotModified
+       httpNotModified: function( xhr, url ) {
+               var lastModified = xhr.getResponseHeader("Last-Modified"),
+                       etag = xhr.getResponseHeader("Etag");
+
+               if ( lastModified ) {
+                       jQuery.lastModified[url] = lastModified;
+               }
+
+               if ( etag ) {
+                       jQuery.etag[url] = etag;
+               }
+
+               return xhr.status === 304;
+       },
+
+       httpData: function( xhr, type, s ) {
+               var ct = xhr.getResponseHeader("content-type") || "",
+                       xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
+                       data = xml ? xhr.responseXML : xhr.responseText;
+
+               if ( xml && data.documentElement.nodeName === "parsererror" ) {
+                       jQuery.error( "parsererror" );
+               }
+
+               // Allow a pre-filtering function to sanitize the response
+               // s is checked to keep backwards compatibility
+               if ( s && s.dataFilter ) {
+                       data = s.dataFilter( data, type );
+               }
+
+               // The filter can actually parse the response
+               if ( typeof data === "string" ) {
+                       // Get the JavaScript object, if JSON is used.
+                       if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
+                               data = jQuery.parseJSON( data );
+
+                       // If the type is "script", eval it in global context
+                       } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
+                               jQuery.globalEval( data );
+                       }
+               }
+
+               return data;
+       }
+
+});
+
+/*
+ * Create the request object; Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+if ( window.ActiveXObject ) {
+       jQuery.ajaxSettings.xhr = function() {
+               if ( window.location.protocol !== "file:" ) {
+                       try {
+                               return new window.XMLHttpRequest();
+                       } catch(xhrError) {}
+               }
+
+               try {
+                       return new window.ActiveXObject("Microsoft.XMLHTTP");
+               } catch(activeError) {}
+       };
+}
+
+// Does this browser support XHR requests?
+jQuery.support.ajax = !!jQuery.ajaxSettings.xhr();
+
+
+
+
+var elemdisplay = {},
+       rfxtypes = /^(?:toggle|show|hide)$/,
+       rfxnum = /^([+\-]=)?([\d+.\-]+)(.*)$/,
+       timerId,
+       fxAttrs = [
+               // height animations
+               [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+               // width animations
+               [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+               // opacity animations
+               [ "opacity" ]
+       ];
+
+jQuery.fn.extend({
+       show: function( speed, easing, callback ) {
+               if ( speed || speed === 0 ) {
+                       return this.animate( genFx("show", 3), speed, easing, callback);
+               } else {
+                       for ( var i = 0, j = this.length; i < j; i++ ) {
+                               // Reset the inline display of this element to learn if it is
+                               // being hidden by cascaded rules or not
+                               if ( !jQuery.data(this[i], "olddisplay") && this[i].style.display === "none" ) {
+                                       this[i].style.display = "";
+                               }
+
+                               // Set elements which have been overridden with display: none
+                               // in a stylesheet to whatever the default browser style is
+                               // for such an element
+                               if ( this[i].style.display === "" && jQuery.css( this[i], "display" ) === "none" ) {
+                                       jQuery.data(this[i], "olddisplay", defaultDisplay(this[i].nodeName));
+                               }
+                       }
+
+                       // Set the display of most of the elements in a second loop
+                       // to avoid the constant reflow
+                       for ( i = 0; i < j; i++ ) {
+                               this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
+                       }
+
+                       return this;
+               }
+       },
+
+       hide: function( speed, easing, callback ) {
+               if ( speed || speed === 0 ) {
+                       return this.animate( genFx("hide", 3), speed, easing, callback);
+
+               } else {
+                       for ( var i = 0, j = this.length; i < j; i++ ) {
+                               var display = jQuery.css( this[i], "display" );
+
+                               if ( display !== "none" ) {
+                                       jQuery.data( this[i], "olddisplay", display );
+                               }
+                       }
+
+                       // Set the display of the elements in a second loop
+                       // to avoid the constant reflow
+                       for ( i = 0; i < j; i++ ) {
+                               this[i].style.display = "none";
+                       }
+
+                       return this;
+               }
+       },
+
+       // Save the old toggle function
+       _toggle: jQuery.fn.toggle,
+
+       toggle: function( fn, fn2, callback ) {
+               var bool = typeof fn === "boolean";
+
+               if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+                       this._toggle.apply( this, arguments );
+
+               } else if ( fn == null || bool ) {
+                       this.each(function() {
+                               var state = bool ? fn : jQuery(this).is(":hidden");
+                               jQuery(this)[ state ? "show" : "hide" ]();
+                       });
+
+               } else {
+                       this.animate(genFx("toggle", 3), fn, fn2, callback);
+               }
+
+               return this;
+       },
+
+       fadeTo: function( speed, to, easing, callback ) {
+               return this.filter(":hidden").css("opacity", 0).show().end()
+                                       .animate({opacity: to}, speed, easing, callback);
+       },
+
+       animate: function( prop, speed, easing, callback ) {
+               var optall = jQuery.speed(speed, easing, callback);
+
+               if ( jQuery.isEmptyObject( prop ) ) {
+                       return this.each( optall.complete );
+               }
+
+               return this[ optall.queue === false ? "each" : "queue" ](function() {
+                       // XXX â€˜this’ does not always have a nodeName when running the
+                       // test suite
+
+                       var opt = jQuery.extend({}, optall), p,
+                               isElement = this.nodeType === 1,
+                               hidden = isElement && jQuery(this).is(":hidden"),
+                               self = this;
+
+                       for ( p in prop ) {
+                               var name = jQuery.camelCase( p );
+
+                               if ( p !== name ) {
+                                       prop[ name ] = prop[ p ];
+                                       delete prop[ p ];
+                                       p = name;
+                               }
+
+                               if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
+                                       return opt.complete.call(this);
+                               }
+
+                               if ( isElement && ( p === "height" || p === "width" ) ) {
+                                       // Make sure that nothing sneaks out
+                                       // Record all 3 overflow attributes because IE does not
+                                       // change the overflow attribute when overflowX and
+                                       // overflowY are set to the same value
+                                       opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+                                       // Set display property to inline-block for height/width
+                                       // animations on inline elements that are having width/height
+                                       // animated
+                                       if ( jQuery.css( this, "display" ) === "inline" &&
+                                                       jQuery.css( this, "float" ) === "none" ) {
+                                               if ( !jQuery.support.inlineBlockNeedsLayout ) {
+                                                       this.style.display = "inline-block";
+
+                                               } else {
+                                                       var display = defaultDisplay(this.nodeName);
+
+                                                       // inline-level elements accept inline-block;
+                                                       // block-level elements need to be inline with layout
+                                                       if ( display === "inline" ) {
+                                                               this.style.display = "inline-block";
+
+                                                       } else {
+                                                               this.style.display = "inline";
+                                                               this.style.zoom = 1;
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               if ( jQuery.isArray( prop[p] ) ) {
+                                       // Create (if needed) and add to specialEasing
+                                       (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
+                                       prop[p] = prop[p][0];
+                               }
+                       }
+
+                       if ( opt.overflow != null ) {
+                               this.style.overflow = "hidden";
+                       }
+
+                       opt.curAnim = jQuery.extend({}, prop);
+
+                       jQuery.each( prop, function( name, val ) {
+                               var e = new jQuery.fx( self, opt, name );
+
+                               if ( rfxtypes.test(val) ) {
+                                       e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+
+                               } else {
+                                       var parts = rfxnum.exec(val),
+                                               start = e.cur(true) || 0;
+
+                                       if ( parts ) {
+                                               var end = parseFloat( parts[2] ),
+                                                       unit = parts[3] || "px";
+
+                                               // We need to compute starting value
+                                               if ( unit !== "px" ) {
+                                                       jQuery.style( self, name, (end || 1) + unit);
+                                                       start = ((end || 1) / e.cur(true)) * start;
+                                                       jQuery.style( self, name, start + unit);
+                                               }
+
+                                               // If a +=/-= token was provided, we're doing a relative animation
+                                               if ( parts[1] ) {
+                                                       end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
+                                               }
+
+                                               e.custom( start, end, unit );
+
+                                       } else {
+                                               e.custom( start, val, "" );
+                                       }
+                               }
+                       });
+
+                       // For JS strict compliance
+                       return true;
+               });
+       },
+
+       stop: function( clearQueue, gotoEnd ) {
+               var timers = jQuery.timers;
+
+               if ( clearQueue ) {
+                       this.queue([]);
+               }
+
+               this.each(function() {
+                       // go in reverse order so anything added to the queue during the loop is ignored
+                       for ( var i = timers.length - 1; i >= 0; i-- ) {
+                               if ( timers[i].elem === this ) {
+                                       if (gotoEnd) {
+                                               // force the next step to be the last
+                                               timers[i](true);
+                                       }
+
+                                       timers.splice(i, 1);
+                               }
+                       }
+               });
+
+               // start the next in the queue if the last step wasn't forced
+               if ( !gotoEnd ) {
+                       this.dequeue();
+               }
+
+               return this;
+       }
+
+});
+
+function genFx( type, num ) {
+       var obj = {};
+
+       jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
+               obj[ this ] = type;
+       });
+
+       return obj;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+       slideDown: genFx("show", 1),
+       slideUp: genFx("hide", 1),
+       slideToggle: genFx("toggle", 1),
+       fadeIn: { opacity: "show" },
+       fadeOut: { opacity: "hide" }
+}, function( name, props ) {
+       jQuery.fn[ name ] = function( speed, easing, callback ) {
+               return this.animate( props, speed, easing, callback );
+       };
+});
+
+jQuery.extend({
+       speed: function( speed, easing, fn ) {
+               var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
+                       complete: fn || !fn && easing ||
+                               jQuery.isFunction( speed ) && speed,
+                       duration: speed,
+                       easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
+               };
+
+               opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+                       opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;
+
+               // Queueing
+               opt.old = opt.complete;
+               opt.complete = function() {
+                       if ( opt.queue !== false ) {
+                               jQuery(this).dequeue();
+                       }
+                       if ( jQuery.isFunction( opt.old ) ) {
+                               opt.old.call( this );
+                       }
+               };
+
+               return opt;
+       },
+
+       easing: {
+               linear: function( p, n, firstNum, diff ) {
+                       return firstNum + diff * p;
+               },
+               swing: function( p, n, firstNum, diff ) {
+                       return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+               }
+       },
+
+       timers: [],
+
+       fx: function( elem, options, prop ) {
+               this.options = options;
+               this.elem = elem;
+               this.prop = prop;
+
+               if ( !options.orig ) {
+                       options.orig = {};
+               }
+       }
+
+});
+
+jQuery.fx.prototype = {
+       // Simple function for setting a style value
+       update: function() {
+               if ( this.options.step ) {
+                       this.options.step.call( this.elem, this.now, this );
+               }
+
+               (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+       },
+
+       // Get the current size
+       cur: function() {
+               if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
+                       return this.elem[ this.prop ];
+               }
+
+               var r = parseFloat( jQuery.css( this.elem, this.prop ) );
+               return r && r > -10000 ? r : 0;
+       },
+
+       // Start an animation from one number to another
+       custom: function( from, to, unit ) {
+               this.startTime = jQuery.now();
+               this.start = from;
+               this.end = to;
+               this.unit = unit || this.unit || "px";
+               this.now = this.start;
+               this.pos = this.state = 0;
+
+               var self = this, fx = jQuery.fx;
+               function t( gotoEnd ) {
+                       return self.step(gotoEnd);
+               }
+
+               t.elem = this.elem;
+
+               if ( t() && jQuery.timers.push(t) && !timerId ) {
+                       timerId = setInterval(fx.tick, fx.interval);
+               }
+       },
+
+       // Simple 'show' function
+       show: function() {
+               // Remember where we started, so that we can go back to it later
+               this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+               this.options.show = true;
+
+               // Begin the animation
+               // Make sure that we start at a small width/height to avoid any
+               // flash of content
+               this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
+
+               // Start by showing the element
+               jQuery( this.elem ).show();
+       },
+
+       // Simple 'hide' function
+       hide: function() {
+               // Remember where we started, so that we can go back to it later
+               this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+               this.options.hide = true;
+
+               // Begin the animation
+               this.custom(this.cur(), 0);
+       },
+
+       // Each step of an animation
+       step: function( gotoEnd ) {
+               var t = jQuery.now(), done = true;
+
+               if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+                       this.now = this.end;
+                       this.pos = this.state = 1;
+                       this.update();
+
+                       this.options.curAnim[ this.prop ] = true;
+
+                       for ( var i in this.options.curAnim ) {
+                               if ( this.options.curAnim[i] !== true ) {
+                                       done = false;
+                               }
+                       }
+
+                       if ( done ) {
+                               // Reset the overflow
+                               if ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
+                                       var elem = this.elem, options = this.options;
+                                       jQuery.each( [ "", "X", "Y" ], function (index, value) {
+                                               elem.style[ "overflow" + value ] = options.overflow[index];
+                                       } );
+                               }
+
+                               // Hide the element if the "hide" operation was done
+                               if ( this.options.hide ) {
+                                       jQuery(this.elem).hide();
+                               }
+
+                               // Reset the properties, if the item has been hidden or shown
+                               if ( this.options.hide || this.options.show ) {
+                                       for ( var p in this.options.curAnim ) {
+                                               jQuery.style( this.elem, p, this.options.orig[p] );
+                                       }
+                               }
+
+                               // Execute the complete function
+                               this.options.complete.call( this.elem );
+                       }
+
+                       return false;
+
+               } else {
+                       var n = t - this.startTime;
+                       this.state = n / this.options.duration;
+
+                       // Perform the easing function, defaults to swing
+                       var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
+                       var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
+                       this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
+                       this.now = this.start + ((this.end - this.start) * this.pos);
+
+                       // Perform the next step of the animation
+                       this.update();
+               }
+
+               return true;
+       }
+};
+
+jQuery.extend( jQuery.fx, {
+       tick: function() {
+               var timers = jQuery.timers;
+
+               for ( var i = 0; i < timers.length; i++ ) {
+                       if ( !timers[i]() ) {
+                               timers.splice(i--, 1);
+                       }
+               }
+
+               if ( !timers.length ) {
+                       jQuery.fx.stop();
+               }
+       },
+
+       interval: 13,
+
+       stop: function() {
+               clearInterval( timerId );
+               timerId = null;
+       },
+
+       speeds: {
+               slow: 600,
+               fast: 200,
+               // Default speed
+               _default: 400
+       },
+
+       step: {
+               opacity: function( fx ) {
+                       jQuery.style( fx.elem, "opacity", fx.now );
+               },
+
+               _default: function( fx ) {
+                       if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+                               fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
+                       } else {
+                               fx.elem[ fx.prop ] = fx.now;
+                       }
+               }
+       }
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+       jQuery.expr.filters.animated = function( elem ) {
+               return jQuery.grep(jQuery.timers, function( fn ) {
+                       return elem === fn.elem;
+               }).length;
+       };
+}
+
+function defaultDisplay( nodeName ) {
+       if ( !elemdisplay[ nodeName ] ) {
+               var elem = jQuery("<" + nodeName + ">").appendTo("body"),
+                       display = elem.css("display");
+
+               elem.remove();
+
+               if ( display === "none" || display === "" ) {
+                       display = "block";
+               }
+
+               elemdisplay[ nodeName ] = display;
+       }
+
+       return elemdisplay[ nodeName ];
+}
+
+
+
+
+var rtable = /^t(?:able|d|h)$/i,
+       rroot = /^(?:body|html)$/i;
+
+if ( "getBoundingClientRect" in document.documentElement ) {
+       jQuery.fn.offset = function( options ) {
+               var elem = this[0], box;
+
+               if ( options ) { 
+                       return this.each(function( i ) {
+                               jQuery.offset.setOffset( this, options, i );
+                       });
+               }
+
+               if ( !elem || !elem.ownerDocument ) {
+                       return null;
+               }
+
+               if ( elem === elem.ownerDocument.body ) {
+                       return jQuery.offset.bodyOffset( elem );
+               }
+
+               try {
+                       box = elem.getBoundingClientRect();
+               } catch(e) {}
+
+               var doc = elem.ownerDocument,
+                       docElem = doc.documentElement;
+
+               // Make sure we're not dealing with a disconnected DOM node
+               if ( !box || !jQuery.contains( docElem, elem ) ) {
+                       return box || { top: 0, left: 0 };
+               }
+
+               var body = doc.body,
+                       win = getWindow(doc),
+                       clientTop  = docElem.clientTop  || body.clientTop  || 0,
+                       clientLeft = docElem.clientLeft || body.clientLeft || 0,
+                       scrollTop  = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ),
+                       scrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),
+                       top  = box.top  + scrollTop  - clientTop,
+                       left = box.left + scrollLeft - clientLeft;
+
+               return { top: top, left: left };
+       };
+
+} else {
+       jQuery.fn.offset = function( options ) {
+               var elem = this[0];
+
+               if ( options ) { 
+                       return this.each(function( i ) {
+                               jQuery.offset.setOffset( this, options, i );
+                       });
+               }
+
+               if ( !elem || !elem.ownerDocument ) {
+                       return null;
+               }
+
+               if ( elem === elem.ownerDocument.body ) {
+                       return jQuery.offset.bodyOffset( elem );
+               }
+
+               jQuery.offset.initialize();
+
+               var offsetParent = elem.offsetParent, prevOffsetParent = elem,
+                       doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
+                       body = doc.body, defaultView = doc.defaultView,
+                       prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+                       top = elem.offsetTop, left = elem.offsetLeft;
+
+               while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+                       if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+                               break;
+                       }
+
+                       computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+                       top  -= elem.scrollTop;
+                       left -= elem.scrollLeft;
+
+                       if ( elem === offsetParent ) {
+                               top  += elem.offsetTop;
+                               left += elem.offsetLeft;
+
+                               if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
+                                       top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
+                                       left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+                               }
+
+                               prevOffsetParent = offsetParent;
+                               offsetParent = elem.offsetParent;
+                       }
+
+                       if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+                               top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
+                               left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+                       }
+
+                       prevComputedStyle = computedStyle;
+               }
+
+               if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+                       top  += body.offsetTop;
+                       left += body.offsetLeft;
+               }
+
+               if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+                       top  += Math.max( docElem.scrollTop, body.scrollTop );
+                       left += Math.max( docElem.scrollLeft, body.scrollLeft );
+               }
+
+               return { top: top, left: left };
+       };
+}
+
+jQuery.offset = {
+       initialize: function() {
+               var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, "marginTop") ) || 0,
+                       html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+
+               jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
+
+               container.innerHTML = html;
+               body.insertBefore( container, body.firstChild );
+               innerDiv = container.firstChild;
+               checkDiv = innerDiv.firstChild;
+               td = innerDiv.nextSibling.firstChild.firstChild;
+
+               this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+               this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+               checkDiv.style.position = "fixed";
+               checkDiv.style.top = "20px";
+
+               // safari subtracts parent border width here which is 5px
+               this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
+               checkDiv.style.position = checkDiv.style.top = "";
+
+               innerDiv.style.overflow = "hidden";
+               innerDiv.style.position = "relative";
+
+               this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
+
+               this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
+
+               body.removeChild( container );
+               body = container = innerDiv = checkDiv = table = td = null;
+               jQuery.offset.initialize = jQuery.noop;
+       },
+
+       bodyOffset: function( body ) {
+               var top = body.offsetTop, left = body.offsetLeft;
+
+               jQuery.offset.initialize();
+
+               if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
+                       top  += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+                       left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+               }
+
+               return { top: top, left: left };
+       },
+       
+       setOffset: function( elem, options, i ) {
+               var position = jQuery.css( elem, "position" );
+
+               // set position first, in-case top/left are set even on static elem
+               if ( position === "static" ) {
+                       elem.style.position = "relative";
+               }
+
+               var curElem = jQuery( elem ),
+                       curOffset = curElem.offset(),
+                       curCSSTop = jQuery.css( elem, "top" ),
+                       curCSSLeft = jQuery.css( elem, "left" ),
+                       calculatePosition = (position === "absolute" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),
+                       props = {}, curPosition = {}, curTop, curLeft;
+
+               // need to be able to calculate position if either top or left is auto and position is absolute
+               if ( calculatePosition ) {
+                       curPosition = curElem.position();
+               }
+
+               curTop  = calculatePosition ? curPosition.top  : parseInt( curCSSTop,  10 ) || 0;
+               curLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;
+
+               if ( jQuery.isFunction( options ) ) {
+                       options = options.call( elem, i, curOffset );
+               }
+
+               if (options.top != null) {
+                       props.top = (options.top - curOffset.top) + curTop;
+               }
+               if (options.left != null) {
+                       props.left = (options.left - curOffset.left) + curLeft;
+               }
+               
+               if ( "using" in options ) {
+                       options.using.call( elem, props );
+               } else {
+                       curElem.css( props );
+               }
+       }
+};
+
+
+jQuery.fn.extend({
+       position: function() {
+               if ( !this[0] ) {
+                       return null;
+               }
+
+               var elem = this[0],
+
+               // Get *real* offsetParent
+               offsetParent = this.offsetParent(),
+
+               // Get correct offsets
+               offset       = this.offset(),
+               parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+               // Subtract element margins
+               // note: when an element has margin: auto the offsetLeft and marginLeft
+               // are the same in Safari causing offset.left to incorrectly be 0
+               offset.top  -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+               offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+               // Add offsetParent borders
+               parentOffset.top  += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+               parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+               // Subtract the two offsets
+               return {
+                       top:  offset.top  - parentOffset.top,
+                       left: offset.left - parentOffset.left
+               };
+       },
+
+       offsetParent: function() {
+               return this.map(function() {
+                       var offsetParent = this.offsetParent || document.body;
+                       while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+                               offsetParent = offsetParent.offsetParent;
+                       }
+                       return offsetParent;
+               });
+       }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ["Left", "Top"], function( i, name ) {
+       var method = "scroll" + name;
+
+       jQuery.fn[ method ] = function(val) {
+               var elem = this[0], win;
+               
+               if ( !elem ) {
+                       return null;
+               }
+
+               if ( val !== undefined ) {
+                       // Set the scroll offset
+                       return this.each(function() {
+                               win = getWindow( this );
+
+                               if ( win ) {
+                                       win.scrollTo(
+                                               !i ? val : jQuery(win).scrollLeft(),
+                                                i ? val : jQuery(win).scrollTop()
+                                       );
+
+                               } else {
+                                       this[ method ] = val;
+                               }
+                       });
+               } else {
+                       win = getWindow( elem );
+
+                       // Return the scroll offset
+                       return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+                               jQuery.support.boxModel && win.document.documentElement[ method ] ||
+                                       win.document.body[ method ] :
+                               elem[ method ];
+               }
+       };
+});
+
+function getWindow( elem ) {
+       return jQuery.isWindow( elem ) ?
+               elem :
+               elem.nodeType === 9 ?
+                       elem.defaultView || elem.parentWindow :
+                       false;
+}
+
+
+
+
+// Create innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function( i, name ) {
+
+       var type = name.toLowerCase();
+
+       // innerHeight and innerWidth
+       jQuery.fn["inner" + name] = function() {
+               return this[0] ?
+                       parseFloat( jQuery.css( this[0], type, "padding" ) ) :
+                       null;
+       };
+
+       // outerHeight and outerWidth
+       jQuery.fn["outer" + name] = function( margin ) {
+               return this[0] ?
+                       parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) :
+                       null;
+       };
+
+       jQuery.fn[ type ] = function( size ) {
+               // Get window width or height
+               var elem = this[0];
+               if ( !elem ) {
+                       return size == null ? null : this;
+               }
+               
+               if ( jQuery.isFunction( size ) ) {
+                       return this.each(function( i ) {
+                               var self = jQuery( this );
+                               self[ type ]( size.call( this, i, self[ type ]() ) );
+                       });
+               }
+
+               return jQuery.isWindow( elem ) ?
+                       // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+                       elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
+                       elem.document.body[ "client" + name ] :
+
+                       // Get document width or height
+                       (elem.nodeType === 9) ? // is it a document
+                               // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+                               Math.max(
+                                       elem.documentElement["client" + name],
+                                       elem.body["scroll" + name], elem.documentElement["scroll" + name],
+                                       elem.body["offset" + name], elem.documentElement["offset" + name]
+                               ) :
+
+                               // Get or set width or height on the element
+                               size === undefined ?
+                                       // Get width or height on the element
+                                       parseFloat( jQuery.css( elem, type ) ) :
+
+                                       // Set the width or height on the element (default to pixels if value is unitless)
+                                       this.css( type, typeof size === "string" ? size : size + "px" );
+       };
+
+});
+
+
+})(window);
diff --git a/static/vendor/d3-2.8.1/lib/jquery/jquery.min.js b/static/vendor/d3-2.8.1/lib/jquery/jquery.min.js
new file mode 100755 (executable)
index 0000000..c941a5f
--- /dev/null
@@ -0,0 +1,166 @@
+/*!
+ * jQuery JavaScript Library v1.4.3
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Oct 14 23:10:06 2010 -0400
+ */
+(function(E,A){function U(){return false}function ba(){return true}function ja(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ga(a){var b,d,e=[],f=[],h,k,l,n,s,v,B,D;k=c.data(this,this.nodeType?"events":"__events__");if(typeof k==="function")k=k.events;if(!(a.liveFired===this||!k||!k.live||a.button&&a.type==="click")){if(a.namespace)D=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var H=k.live.slice(0);for(n=0;n<H.length;n++){k=H[n];k.origType.replace(X,
+"")===a.type?f.push(k.selector):H.splice(n--,1)}f=c(a.target).closest(f,a.currentTarget);s=0;for(v=f.length;s<v;s++){B=f[s];for(n=0;n<H.length;n++){k=H[n];if(B.selector===k.selector&&(!D||D.test(k.namespace))){l=B.elem;h=null;if(k.preType==="mouseenter"||k.preType==="mouseleave"){a.type=k.preType;h=c(a.relatedTarget).closest(k.selector)[0]}if(!h||h!==l)e.push({elem:l,handleObj:k,level:B.level})}}}s=0;for(v=e.length;s<v;s++){f=e[s];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;
+a.handleObj=f.handleObj;D=f.handleObj.origHandler.apply(f.elem,arguments);if(D===false||a.isPropagationStopped()){d=f.level;if(D===false)b=false}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(Ha,"`").replace(Ia,"&")}function ka(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Ja.test(b))return c.filter(b,
+e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function la(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var k in e[h])c.event.add(this,h,e[h][k],e[h][k].data)}}})}function Ka(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}
+function ma(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?La:Ma,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function ca(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Na.test(a)?e(a,h):ca(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?
+e(a,""):c.each(b,function(f,h){ca(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(na.concat.apply([],na.slice(0,b)),function(){d[this]=a});return d}function oa(a){if(!da[a]){var b=c("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";da[a]=d}return da[a]}function ea(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var u=E.document,c=function(){function a(){if(!b.isReady){try{u.documentElement.doScroll("left")}catch(i){setTimeout(a,
+1);return}b.ready()}}var b=function(i,r){return new b.fn.init(i,r)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,k=/\S/,l=/^\s+/,n=/\s+$/,s=/\W/,v=/\d/,B=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,D=/^[\],:{}\s]*$/,H=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,G=/(?:^|:|,)(?:\s*\[)+/g,M=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,j=/(msie) ([\w.]+)/,o=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,
+q=[],t,x=Object.prototype.toString,C=Object.prototype.hasOwnProperty,P=Array.prototype.push,N=Array.prototype.slice,R=String.prototype.trim,Q=Array.prototype.indexOf,L={};b.fn=b.prototype={init:function(i,r){var y,z,F;if(!i)return this;if(i.nodeType){this.context=this[0]=i;this.length=1;return this}if(i==="body"&&!r&&u.body){this.context=u;this[0]=u.body;this.selector="body";this.length=1;return this}if(typeof i==="string")if((y=h.exec(i))&&(y[1]||!r))if(y[1]){F=r?r.ownerDocument||r:u;if(z=B.exec(i))if(b.isPlainObject(r)){i=
+[u.createElement(z[1])];b.fn.attr.call(i,r,true)}else i=[F.createElement(z[1])];else{z=b.buildFragment([y[1]],[F]);i=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,i)}else{if((z=u.getElementById(y[2]))&&z.parentNode){if(z.id!==y[2])return f.find(i);this.length=1;this[0]=z}this.context=u;this.selector=i;return this}else if(!r&&!s.test(i)){this.selector=i;this.context=u;i=u.getElementsByTagName(i);return b.merge(this,i)}else return!r||r.jquery?(r||f).find(i):b(r).find(i);
+else if(b.isFunction(i))return f.ready(i);if(i.selector!==A){this.selector=i.selector;this.context=i.context}return b.makeArray(i,this)},selector:"",jquery:"1.4.3",length:0,size:function(){return this.length},toArray:function(){return N.call(this,0)},get:function(i){return i==null?this.toArray():i<0?this.slice(i)[0]:this[i]},pushStack:function(i,r,y){var z=b();b.isArray(i)?P.apply(z,i):b.merge(z,i);z.prevObject=this;z.context=this.context;if(r==="find")z.selector=this.selector+(this.selector?" ":
+"")+y;else if(r)z.selector=this.selector+"."+r+"("+y+")";return z},each:function(i,r){return b.each(this,i,r)},ready:function(i){b.bindReady();if(b.isReady)i.call(u,b);else q&&q.push(i);return this},eq:function(i){return i===-1?this.slice(i):this.slice(i,+i+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(i){return this.pushStack(b.map(this,function(r,y){return i.call(r,
+y,r)}))},end:function(){return this.prevObject||b(null)},push:P,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var i=arguments[0]||{},r=1,y=arguments.length,z=false,F,I,K,J,fa;if(typeof i==="boolean"){z=i;i=arguments[1]||{};r=2}if(typeof i!=="object"&&!b.isFunction(i))i={};if(y===r){i=this;--r}for(;r<y;r++)if((F=arguments[r])!=null)for(I in F){K=i[I];J=F[I];if(i!==J)if(z&&J&&(b.isPlainObject(J)||(fa=b.isArray(J)))){if(fa){fa=false;clone=K&&b.isArray(K)?K:[]}else clone=
+K&&b.isPlainObject(K)?K:{};i[I]=b.extend(z,clone,J)}else if(J!==A)i[I]=J}return i};b.extend({noConflict:function(i){E.$=e;if(i)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(i){i===true&&b.readyWait--;if(!b.readyWait||i!==true&&!b.isReady){if(!u.body)return setTimeout(b.ready,1);b.isReady=true;if(!(i!==true&&--b.readyWait>0)){if(q){for(var r=0;i=q[r++];)i.call(u,b);q=null}b.fn.triggerHandler&&b(u).triggerHandler("ready")}}},bindReady:function(){if(!p){p=true;if(u.readyState==="complete")return setTimeout(b.ready,
+1);if(u.addEventListener){u.addEventListener("DOMContentLoaded",t,false);E.addEventListener("load",b.ready,false)}else if(u.attachEvent){u.attachEvent("onreadystatechange",t);E.attachEvent("onload",b.ready);var i=false;try{i=E.frameElement==null}catch(r){}u.documentElement.doScroll&&i&&a()}}},isFunction:function(i){return b.type(i)==="function"},isArray:Array.isArray||function(i){return b.type(i)==="array"},isWindow:function(i){return i&&typeof i==="object"&&"setInterval"in i},isNaN:function(i){return i==
+null||!v.test(i)||isNaN(i)},type:function(i){return i==null?String(i):L[x.call(i)]||"object"},isPlainObject:function(i){if(!i||b.type(i)!=="object"||i.nodeType||b.isWindow(i))return false;if(i.constructor&&!C.call(i,"constructor")&&!C.call(i.constructor.prototype,"isPrototypeOf"))return false;for(var r in i);return r===A||C.call(i,r)},isEmptyObject:function(i){for(var r in i)return false;return true},error:function(i){throw i;},parseJSON:function(i){if(typeof i!=="string"||!i)return null;i=b.trim(i);
+if(D.test(i.replace(H,"@").replace(w,"]").replace(G,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(i):(new Function("return "+i))();else b.error("Invalid JSON: "+i)},noop:function(){},globalEval:function(i){if(i&&k.test(i)){var r=u.getElementsByTagName("head")[0]||u.documentElement,y=u.createElement("script");y.type="text/javascript";if(b.support.scriptEval)y.appendChild(u.createTextNode(i));else y.text=i;r.insertBefore(y,r.firstChild);r.removeChild(y)}},nodeName:function(i,r){return i.nodeName&&i.nodeName.toUpperCase()===
+r.toUpperCase()},each:function(i,r,y){var z,F=0,I=i.length,K=I===A||b.isFunction(i);if(y)if(K)for(z in i){if(r.apply(i[z],y)===false)break}else for(;F<I;){if(r.apply(i[F++],y)===false)break}else if(K)for(z in i){if(r.call(i[z],z,i[z])===false)break}else for(y=i[0];F<I&&r.call(y,F,y)!==false;y=i[++F]);return i},trim:R?function(i){return i==null?"":R.call(i)}:function(i){return i==null?"":i.toString().replace(l,"").replace(n,"")},makeArray:function(i,r){var y=r||[];if(i!=null){var z=b.type(i);i.length==
+null||z==="string"||z==="function"||z==="regexp"||b.isWindow(i)?P.call(y,i):b.merge(y,i)}return y},inArray:function(i,r){if(r.indexOf)return r.indexOf(i);for(var y=0,z=r.length;y<z;y++)if(r[y]===i)return y;return-1},merge:function(i,r){var y=i.length,z=0;if(typeof r.length==="number")for(var F=r.length;z<F;z++)i[y++]=r[z];else for(;r[z]!==A;)i[y++]=r[z++];i.length=y;return i},grep:function(i,r,y){var z=[],F;y=!!y;for(var I=0,K=i.length;I<K;I++){F=!!r(i[I],I);y!==F&&z.push(i[I])}return z},map:function(i,
+r,y){for(var z=[],F,I=0,K=i.length;I<K;I++){F=r(i[I],I,y);if(F!=null)z[z.length]=F}return z.concat.apply([],z)},guid:1,proxy:function(i,r,y){if(arguments.length===2)if(typeof r==="string"){y=i;i=y[r];r=A}else if(r&&!b.isFunction(r)){y=r;r=A}if(!r&&i)r=function(){return i.apply(y||this,arguments)};if(i)r.guid=i.guid=i.guid||r.guid||b.guid++;return r},access:function(i,r,y,z,F,I){var K=i.length;if(typeof r==="object"){for(var J in r)b.access(i,J,r[J],z,F,y);return i}if(y!==A){z=!I&&z&&b.isFunction(y);
+for(J=0;J<K;J++)F(i[J],r,z?y.call(i[J],J,F(i[J],r)):y,I);return i}return K?F(i[0],r):A},now:function(){return(new Date).getTime()},uaMatch:function(i){i=i.toLowerCase();i=M.exec(i)||g.exec(i)||j.exec(i)||i.indexOf("compatible")<0&&o.exec(i)||[];return{browser:i[1]||"",version:i[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(i,r){L["[object "+r+"]"]=r.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=
+m.version}if(b.browser.webkit)b.browser.safari=true;if(Q)b.inArray=function(i,r){return Q.call(r,i)};if(!/\s/.test("\u00a0")){l=/^[\s\xA0]+/;n=/[\s\xA0]+$/}f=b(u);if(u.addEventListener)t=function(){u.removeEventListener("DOMContentLoaded",t,false);b.ready()};else if(u.attachEvent)t=function(){if(u.readyState==="complete"){u.detachEvent("onreadystatechange",t);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=u.documentElement,b=u.createElement("script"),d=u.createElement("div"),
+e="script"+c.now();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],k=u.createElement("select"),l=k.appendChild(u.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),
+hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:l.selected,optDisabled:false,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};k.disabled=true;c.support.optDisabled=!l.disabled;b.type="text/javascript";try{b.appendChild(u.createTextNode("window."+e+"=1;"))}catch(n){}a.insertBefore(b,
+a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function s(){c.support.noCloneEvent=false;d.detachEvent("onclick",s)});d.cloneNode(true).fireEvent("onclick")}d=u.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=u.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var s=u.createElement("div");
+s.style.width=s.style.paddingLeft="1px";u.body.appendChild(s);c.boxModel=c.support.boxModel=s.offsetWidth===2;if("zoom"in s.style){s.style.display="inline";s.style.zoom=1;c.support.inlineBlockNeedsLayout=s.offsetWidth===2;s.style.display="";s.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=s.offsetWidth!==2}s.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var v=s.getElementsByTagName("td");c.support.reliableHiddenOffsets=v[0].offsetHeight===
+0;v[0].style.display="";v[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&v[0].offsetHeight===0;s.innerHTML="";u.body.removeChild(s).style.display="none"});a=function(s){var v=u.createElement("div");s="on"+s;var B=s in v;if(!B){v.setAttribute(s,"return;");B=typeof v[s]==="function"}return B};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",
+cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var pa={},Oa=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?pa:a;var e=a.nodeType,f=e?a[c.expando]:null,h=c.cache;if(!(e&&!f&&typeof b==="string"&&d===A)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=
+c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==A)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?pa:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);else if(d)delete f[e];else for(var k in a)delete a[k]}},acceptData:function(a){if(a.nodeName){var b=
+c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){if(typeof a==="undefined")return this.length?c.data(this[0]):null;else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===A){var e=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(e===A&&this.length){e=c.data(this[0],a);if(e===A&&this[0].nodeType===1){e=this[0].getAttribute("data-"+a);if(typeof e===
+"string")try{e=e==="true"?true:e==="false"?false:e==="null"?null:!c.isNaN(e)?parseFloat(e):Oa.test(e)?c.parseJSON(e):e}catch(f){}else e=A}}return e===A&&d[1]?this.data(d[0]):e}else return this.each(function(){var h=c(this),k=[d[0],b];h.triggerHandler("setData"+d[1]+"!",k);c.data(this,a,b);h.triggerHandler("changeData"+d[1]+"!",k)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e=c.data(a,b);if(!d)return e||
+[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===A)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,
+a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var qa=/[\n\t]/g,ga=/\s+/,Pa=/\r/g,Qa=/^(?:href|src|style)$/,Ra=/^(?:button|input)$/i,Sa=/^(?:button|input|object|select|textarea)$/i,Ta=/^a(?:rea)?$/i,ra=/^(?:radio|checkbox)$/i;c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,
+a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(s){var v=c(this);v.addClass(a.call(this,s,v.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ga),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1)if(f.className){for(var h=" "+f.className+" ",k=f.className,l=0,n=b.length;l<n;l++)if(h.indexOf(" "+b[l]+" ")<0)k+=" "+b[l];f.className=c.trim(k)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(n){var s=
+c(this);s.removeClass(a.call(this,n,s.attr("class")))});if(a&&typeof a==="string"||a===A)for(var b=(a||"").split(ga),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(qa," "),k=0,l=b.length;k<l;k++)h=h.replace(" "+b[k]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,
+f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,k=c(this),l=b,n=a.split(ga);f=n[h++];){l=e?l:!k.hasClass(f);k[l?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(qa," ").indexOf(a)>-1)return true;return false},
+val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var k=f[h];if(k.selected&&(c.support.optDisabled?!k.disabled:k.getAttribute("disabled")===null)&&(!k.parentNode.disabled||!c.nodeName(k.parentNode,"optgroup"))){a=c(k).val();if(b)return a;d.push(a)}}return d}if(ra.test(b.type)&&
+!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Pa,"")}return A}var l=c.isFunction(a);return this.each(function(n){var s=c(this),v=a;if(this.nodeType===1){if(l)v=a.call(this,n,s.val());if(v==null)v="";else if(typeof v==="number")v+="";else if(c.isArray(v))v=c.map(v,function(D){return D==null?"":D+""});if(c.isArray(v)&&ra.test(this.type))this.checked=c.inArray(s.val(),v)>=0;else if(c.nodeName(this,"select")){var B=c.makeArray(v);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),B)>=0});if(!B.length)this.selectedIndex=-1}else this.value=v}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return A;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==A;b=e&&c.props[b]||b;if(a.nodeType===1){var h=Qa.test(b);if((b in a||a[b]!==A)&&e&&!h){if(f){b==="type"&&Ra.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Sa.test(a.nodeName)||Ta.test(a.nodeName)&&a.href?0:A;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return A;a=!c.support.hrefNormalized&&e&&
+h?a.getAttribute(b,2):a.getAttribute(b);return a===null?A:a}}});var X=/\.(.*)$/,ha=/^(?:textarea|input|select)$/i,Ha=/\./g,Ia=/ /g,Ua=/[^\w\s.|`]/g,Va=function(a){return a.replace(Ua,"\\$&")},sa={focusin:0,focusout:0};c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var k=a.nodeType?"events":"__events__",l=h[k],n=h.handle;if(typeof l===
+"function"){n=l.handle;l=l.events}else if(!l){a.nodeType||(h[k]=h=function(){});h.events=l={}}if(!n)h.handle=n=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(n.elem,arguments):A};n.elem=a;b=b.split(" ");for(var s=0,v;k=b[s++];){h=f?c.extend({},f):{handler:d,data:e};if(k.indexOf(".")>-1){v=k.split(".");k=v.shift();h.namespace=v.slice(0).sort().join(".")}else{v=[];h.namespace=""}h.type=k;if(!h.guid)h.guid=d.guid;var B=l[k],D=c.event.special[k]||{};if(!B){B=l[k]=[];
+if(!D.setup||D.setup.call(a,e,v,n)===false)if(a.addEventListener)a.addEventListener(k,n,false);else a.attachEvent&&a.attachEvent("on"+k,n)}if(D.add){D.add.call(a,h);if(!h.handler.guid)h.handler.guid=d.guid}B.push(h);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,k=0,l,n,s,v,B,D,H=a.nodeType?"events":"__events__",w=c.data(a),G=w&&w[H];if(w&&G){if(typeof G==="function"){w=G;G=G.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||
+typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in G)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[k++];){v=f;l=f.indexOf(".")<0;n=[];if(!l){n=f.split(".");f=n.shift();s=RegExp("(^|\\.)"+c.map(n.slice(0).sort(),Va).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(B=G[f])if(d){v=c.event.special[f]||{};for(h=e||0;h<B.length;h++){D=B[h];if(d.guid===D.guid){if(l||s.test(D.namespace)){e==null&&B.splice(h--,1);v.remove&&v.remove.call(a,D)}if(e!=null)break}}if(B.length===0||e!=null&&B.length===1){if(!v.teardown||
+v.teardown.call(a,n)===false)c.removeEvent(a,f,w.handle);delete G[f]}}else for(h=0;h<B.length;h++){D=B[h];if(l||s.test(D.namespace)){c.event.remove(a,v,D.handler,h);B.splice(h--,1)}}}if(c.isEmptyObject(G)){if(b=w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,H);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=
+f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return A;a.result=A;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===
+false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){e=a.target;var k,l=f.replace(X,""),n=c.nodeName(e,"a")&&l==="click",s=c.event.special[l]||{};if((!s._default||s._default.call(d,a)===false)&&!n&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[l]){if(k=e["on"+l])e["on"+l]=null;c.event.triggered=true;e[l]()}}catch(v){}if(k)e["on"+l]=k;c.event.triggered=false}}},handle:function(a){var b,d,e;
+d=[];var f,h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var k=d.length;f<k;f++){var l=d[f];if(b||e.test(l.namespace)){a.handler=l.handler;a.data=
+l.data;a.handleObj=l;l=l.handler.apply(this,h);if(l!==A){a.result=l;if(l===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||u;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=u.documentElement;d=u.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==A)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ga,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
+Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=u.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=
+c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ba;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ba;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ba;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U};
+var ta=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},ua=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?ua:ta,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?ua:ta)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
+"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=A;return ja("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=A;return ja("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V,
+va=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ha.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=va(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===A||f===e))if(e!=null||f){a.type="change";a.liveFired=
+A;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",va(a))}},setup:function(){if(this.type===
+"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ha.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ha.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}u.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){sa[b]++===0&&u.addEventListener(a,d,true)},teardown:function(){--sa[b]===
+0&&u.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=A}var k=b==="one"?c.proxy(f,function(n){c(this).unbind(n,k);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var l=this.length;h<l;h++)c.event.add(this[h],d,k,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
+a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.result}},toggle:function(a){for(var b=arguments,d=
+1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var wa={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var k,l=0,n,s,v=h||this.selector;h=h?this:c(this.context);if(typeof d===
+"object"&&!d.preventDefault){for(k in d)h[b](k,e,d[k],v);return this}if(c.isFunction(e)){f=e;e=A}for(d=(d||"").split(" ");(k=d[l++])!=null;){n=X.exec(k);s="";if(n){s=n[0];k=k.replace(X,"")}if(k==="hover")d.push("mouseenter"+s,"mouseleave"+s);else{n=k;if(k==="focus"||k==="blur"){d.push(wa[k]+s);k+=s}else k=(wa[k]||k)+s;if(b==="live"){s=0;for(var B=h.length;s<B;s++)c.event.add(h[s],"live."+Y(k,v),{data:e,selector:v,handler:f,origType:k,origHandler:f,preType:n})}else h.unbind("live."+Y(k,v),f)}}return this}});
+c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
+(function(){function a(g,j,o,m,p,q){p=0;for(var t=m.length;p<t;p++){var x=m[p];if(x){x=x[g];for(var C=false;x;){if(x.sizcache===o){C=m[x.sizset];break}if(x.nodeType===1&&!q){x.sizcache=o;x.sizset=p}if(x.nodeName.toLowerCase()===j){C=x;break}x=x[g]}m[p]=C}}}function b(g,j,o,m,p,q){p=0;for(var t=m.length;p<t;p++){var x=m[p];if(x){x=x[g];for(var C=false;x;){if(x.sizcache===o){C=m[x.sizset];break}if(x.nodeType===1){if(!q){x.sizcache=o;x.sizset=p}if(typeof j!=="string"){if(x===j){C=true;break}}else if(l.filter(j,
+[x]).length>0){C=x;break}}x=x[g]}m[p]=C}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,k=true;[0,0].sort(function(){k=false;return 0});var l=function(g,j,o,m){o=o||[];var p=j=j||u;if(j.nodeType!==1&&j.nodeType!==9)return[];if(!g||typeof g!=="string")return o;var q=[],t,x,C,P,N=true,R=l.isXML(j),Q=g,L;do{d.exec("");if(t=d.exec(Q)){Q=t[3];q.push(t[1]);if(t[2]){P=t[3];
+break}}}while(t);if(q.length>1&&s.exec(g))if(q.length===2&&n.relative[q[0]])x=M(q[0]+q[1],j);else for(x=n.relative[q[0]]?[j]:l(q.shift(),j);q.length;){g=q.shift();if(n.relative[g])g+=q.shift();x=M(g,x)}else{if(!m&&q.length>1&&j.nodeType===9&&!R&&n.match.ID.test(q[0])&&!n.match.ID.test(q[q.length-1])){t=l.find(q.shift(),j,R);j=t.expr?l.filter(t.expr,t.set)[0]:t.set[0]}if(j){t=m?{expr:q.pop(),set:D(m)}:l.find(q.pop(),q.length===1&&(q[0]==="~"||q[0]==="+")&&j.parentNode?j.parentNode:j,R);x=t.expr?l.filter(t.expr,
+t.set):t.set;if(q.length>0)C=D(x);else N=false;for(;q.length;){t=L=q.pop();if(n.relative[L])t=q.pop();else L="";if(t==null)t=j;n.relative[L](C,t,R)}}else C=[]}C||(C=x);C||l.error(L||g);if(f.call(C)==="[object Array]")if(N)if(j&&j.nodeType===1)for(g=0;C[g]!=null;g++){if(C[g]&&(C[g]===true||C[g].nodeType===1&&l.contains(j,C[g])))o.push(x[g])}else for(g=0;C[g]!=null;g++)C[g]&&C[g].nodeType===1&&o.push(x[g]);else o.push.apply(o,C);else D(C,o);if(P){l(P,p,o,m);l.uniqueSort(o)}return o};l.uniqueSort=function(g){if(w){h=
+k;g.sort(w);if(h)for(var j=1;j<g.length;j++)g[j]===g[j-1]&&g.splice(j--,1)}return g};l.matches=function(g,j){return l(g,null,null,j)};l.matchesSelector=function(g,j){return l(j,null,null,[g]).length>0};l.find=function(g,j,o){var m;if(!g)return[];for(var p=0,q=n.order.length;p<q;p++){var t=n.order[p],x;if(x=n.leftMatch[t].exec(g)){var C=x[1];x.splice(1,1);if(C.substr(C.length-1)!=="\\"){x[1]=(x[1]||"").replace(/\\/g,"");m=n.find[t](x,j,o);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=j.getElementsByTagName("*"));
+return{set:m,expr:g}};l.filter=function(g,j,o,m){for(var p=g,q=[],t=j,x,C,P=j&&j[0]&&l.isXML(j[0]);g&&j.length;){for(var N in n.filter)if((x=n.leftMatch[N].exec(g))!=null&&x[2]){var R=n.filter[N],Q,L;L=x[1];C=false;x.splice(1,1);if(L.substr(L.length-1)!=="\\"){if(t===q)q=[];if(n.preFilter[N])if(x=n.preFilter[N](x,t,o,q,m,P)){if(x===true)continue}else C=Q=true;if(x)for(var i=0;(L=t[i])!=null;i++)if(L){Q=R(L,x,i,t);var r=m^!!Q;if(o&&Q!=null)if(r)C=true;else t[i]=false;else if(r){q.push(L);C=true}}if(Q!==
+A){o||(t=q);g=g.replace(n.match[N],"");if(!C)return[];break}}}if(g===p)if(C==null)l.error(g);else break;p=g}return t};l.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=l.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
+POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,j){var o=typeof j==="string",m=o&&!/\W/.test(j);o=o&&!m;if(m)j=j.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=o||q&&q.nodeName.toLowerCase()===
+j?q||false:q===j}o&&l.filter(j,g,true)},">":function(g,j){var o=typeof j==="string",m,p=0,q=g.length;if(o&&!/\W/.test(j))for(j=j.toLowerCase();p<q;p++){if(m=g[p]){o=m.parentNode;g[p]=o.nodeName.toLowerCase()===j?o:false}}else{for(;p<q;p++)if(m=g[p])g[p]=o?m.parentNode:m.parentNode===j;o&&l.filter(j,g,true)}},"":function(g,j,o){var m=e++,p=b,q;if(typeof j==="string"&&!/\W/.test(j)){q=j=j.toLowerCase();p=a}p("parentNode",j,m,g,q,o)},"~":function(g,j,o){var m=e++,p=b,q;if(typeof j==="string"&&!/\W/.test(j)){q=
+j=j.toLowerCase();p=a}p("previousSibling",j,m,g,q,o)}},find:{ID:function(g,j,o){if(typeof j.getElementById!=="undefined"&&!o)return(g=j.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,j){if(typeof j.getElementsByName!=="undefined"){for(var o=[],m=j.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&o.push(m[p]);return o.length===0?null:o}},TAG:function(g,j){return j.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,j,o,m,p,q){g=" "+g[1].replace(/\\/g,
+"")+" ";if(q)return g;q=0;for(var t;(t=j[q])!=null;q++)if(t)if(p^(t.className&&(" "+t.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))o||m.push(t);else if(o)j[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var j=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=j[1]+(j[2]||1)-0;g[3]=j[3]-0}g[0]=e++;return g},ATTR:function(g,j,o,
+m,p,q){j=g[1].replace(/\\/g,"");if(!q&&n.attrMap[j])g[1]=n.attrMap[j];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,j,o,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=l(g[3],null,null,j);else{g=l.filter(g[3],j,o,true^p);o||m.push.apply(m,g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===
+true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,j,o){return!!l(o[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===
+g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,j){return j===0},last:function(g,j,o,m){return j===m.length-1},even:function(g,j){return j%2===0},odd:function(g,j){return j%2===1},lt:function(g,j,o){return j<o[3]-0},gt:function(g,j,o){return j>o[3]-0},nth:function(g,j,o){return o[3]-
+0===j},eq:function(g,j,o){return o[3]-0===j}},filter:{PSEUDO:function(g,j,o,m){var p=j[1],q=n.filters[p];if(q)return q(g,o,j,m);else if(p==="contains")return(g.textContent||g.innerText||l.getText([g])||"").indexOf(j[3])>=0;else if(p==="not"){j=j[3];o=0;for(m=j.length;o<m;o++)if(j[o]===g)return false;return true}else l.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,j){var o=j[1],m=g;switch(o){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(o===
+"first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":o=j[2];var p=j[3];if(o===1&&p===0)return true;var q=j[0],t=g.parentNode;if(t&&(t.sizcache!==q||!g.nodeIndex)){var x=0;for(m=t.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++x;t.sizcache=q}m=g.nodeIndex-p;return o===0?m===0:m%o===0&&m/o>=0}},ID:function(g,j){return g.nodeType===1&&g.getAttribute("id")===j},TAG:function(g,j){return j==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===
+j},CLASS:function(g,j){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(j)>-1},ATTR:function(g,j){var o=j[1];o=n.attrHandle[o]?n.attrHandle[o](g):g[o]!=null?g[o]:g.getAttribute(o);var m=o+"",p=j[2],q=j[4];return o==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&o!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,j,o,m){var p=n.setFilters[j[2]];
+if(p)return p(g,o,j,m)}}},s=n.match.POS,v=function(g,j){return"\\"+(j-0+1)},B;for(B in n.match){n.match[B]=RegExp(n.match[B].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[B]=RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[B].source.replace(/\\(\d+)/g,v))}var D=function(g,j){g=Array.prototype.slice.call(g,0);if(j){j.push.apply(j,g);return j}return g};try{Array.prototype.slice.call(u.documentElement.childNodes,0)}catch(H){D=function(g,j){var o=j||[],m=0;if(f.call(g)==="[object Array]")Array.prototype.push.apply(o,
+g);else if(typeof g.length==="number")for(var p=g.length;m<p;m++)o.push(g[m]);else for(;g[m];m++)o.push(g[m]);return o}}var w,G;if(u.documentElement.compareDocumentPosition)w=function(g,j){if(g===j){h=true;return 0}if(!g.compareDocumentPosition||!j.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(j)&4?-1:1};else{w=function(g,j){var o=[],m=[],p=g.parentNode,q=j.parentNode,t=p;if(g===j){h=true;return 0}else if(p===q)return G(g,j);else if(p){if(!q)return 1}else return-1;
+for(;t;){o.unshift(t);t=t.parentNode}for(t=q;t;){m.unshift(t);t=t.parentNode}p=o.length;q=m.length;for(t=0;t<p&&t<q;t++)if(o[t]!==m[t])return G(o[t],m[t]);return t===p?G(g,m[t],-1):G(o[t],j,1)};G=function(g,j,o){if(g===j)return o;for(g=g.nextSibling;g;){if(g===j)return-1;g=g.nextSibling}return 1}}l.getText=function(g){for(var j="",o,m=0;g[m];m++){o=g[m];if(o.nodeType===3||o.nodeType===4)j+=o.nodeValue;else if(o.nodeType!==8)j+=l.getText(o.childNodes)}return j};(function(){var g=u.createElement("div"),
+j="script"+(new Date).getTime();g.innerHTML="<a name='"+j+"'/>";var o=u.documentElement;o.insertBefore(g,o.firstChild);if(u.getElementById(j)){n.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:A:[]};n.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}o.removeChild(g);
+o=g=null})();(function(){var g=u.createElement("div");g.appendChild(u.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(j,o){var m=o.getElementsByTagName(j[1]);if(j[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(j){return j.getAttribute("href",2)};g=null})();u.querySelectorAll&&
+function(){var g=l,j=u.createElement("div");j.innerHTML="<p class='TEST'></p>";if(!(j.querySelectorAll&&j.querySelectorAll(".TEST").length===0)){l=function(m,p,q,t){p=p||u;if(!t&&!l.isXML(p))if(p.nodeType===9)try{return D(p.querySelectorAll(m),q)}catch(x){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var C=p.id,P=p.id="__sizzle__";try{return D(p.querySelectorAll("#"+P+" "+m),q)}catch(N){}finally{if(C)p.id=C;else p.removeAttribute("id")}}return g(m,p,q,t)};for(var o in g)l[o]=g[o];
+j=null}}();(function(){var g=u.documentElement,j=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,o=false;try{j.call(u.documentElement,":sizzle")}catch(m){o=true}if(j)l.matchesSelector=function(p,q){try{if(o||!n.match.PSEUDO.test(q))return j.call(p,q)}catch(t){}return l(q,null,null,[p]).length>0}})();(function(){var g=u.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===
+0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(j,o,m){if(typeof o.getElementsByClassName!=="undefined"&&!m)return o.getElementsByClassName(j[1])};g=null}}})();l.contains=u.documentElement.contains?function(g,j){return g!==j&&(g.contains?g.contains(j):true)}:function(g,j){return!!(g.compareDocumentPosition(j)&16)};l.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var M=function(g,
+j){for(var o=[],m="",p,q=j.nodeType?[j]:j;p=n.match.PSEUDO.exec(g);){m+=p[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;p=0;for(var t=q.length;p<t;p++)l(g,q[p],o);return l.filter(m,o)};c.find=l;c.expr=l.selectors;c.expr[":"]=c.expr.filters;c.unique=l.uniqueSort;c.text=l.getText;c.isXMLDoc=l.isXML;c.contains=l.contains})();var Wa=/Until$/,Xa=/^(?:parents|prevUntil|prevAll)/,Ya=/,/,Ja=/^.[^:#\[\.,]*$/,Za=Array.prototype.slice,$a=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("",
+"find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var k=0;k<d;k++)if(b[k]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(ka(this,a,false),"not",a)},filter:function(a){return this.pushStack(ka(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,
+b){var d=[],e,f,h=this[0];if(c.isArray(a)){var k={},l,n=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){l=a[e];k[l]||(k[l]=c.expr.match.POS.test(l)?c(l,b||this.context):l)}for(;h&&h.ownerDocument&&h!==b;){for(l in k){e=k[l];if(e.jquery?e.index(h)>-1:c(h).is(e))d.push({selector:l,elem:h,level:n})}h=h.parentNode;n++}}return d}k=$a.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(k?k.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||
+!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context):c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});
+c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",
+d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Wa.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||Ya.test(e))&&Xa.test(a))f=f.reverse();return this.pushStack(f,a,Za.call(arguments).join(","))}});
+c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===A||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var xa=/ jQuery\d+="(?:\d+|null)"/g,
+$=/^\s+/,ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,za=/<([\w:]+)/,ab=/<tbody/i,bb=/<|&#?\w+;/,Aa=/<(?:script|object|embed|option|style)/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,cb=/\=([^="'>\s]+\/)>/g,O={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],
+area:[1,"<map>","</map>"],_default:[0,"",""]};O.optgroup=O.option;O.tbody=O.tfoot=O.colgroup=O.caption=O.thead;O.th=O.td;if(!c.support.htmlSerialize)O._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==A)return this.empty().append((this[0]&&this[0].ownerDocument||u).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,
+d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},
+unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=
+c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));
+c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(xa,"").replace(cb,'="$1">').replace($,
+"")],e)[0]}else return this.cloneNode(true)});if(a===true){la(this,b);la(this.find("*"),b.find("*"))}return b},html:function(a){if(a===A)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(xa,""):null;else if(typeof a==="string"&&!Aa.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!O[(za.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ya,"<$1></$2>");try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(e){this.empty().append(a)}}else c.isFunction(a)?
+this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,
+true)},domManip:function(a,b,d){var e,f,h=a[0],k=[],l;if(!c.support.checkClone&&arguments.length===3&&typeof h==="string"&&Ba.test(h))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(h))return this.each(function(s){var v=c(this);a[0]=h.call(this,s,b?v.html():A);v.domManip(a,b,d)});if(this[0]){e=h&&h.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,k);l=e.fragment;if(f=l.childNodes.length===1?l=l.firstChild:
+l.firstChild){b=b&&c.nodeName(f,"tr");f=0;for(var n=this.length;f<n;f++)d.call(b?c.nodeName(this[f],"table")?this[f].getElementsByTagName("tbody")[0]||this[f].appendChild(this[f].ownerDocument.createElement("tbody")):this[f]:this[f],f>0||e.cacheable||this.length>1?l.cloneNode(true):l)}k.length&&c.each(k,Ka)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:u;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===u&&!Aa.test(a[0])&&(c.support.checkClone||
+!Ba.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=
+d.length;f<h;f++){var k=(f>0?this.clone(true):this).get();c(d[f])[b](k);e=e.concat(k)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||u;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||u;for(var f=[],h=0,k;(k=a[h])!=null;h++){if(typeof k==="number")k+="";if(k){if(typeof k==="string"&&!bb.test(k))k=b.createTextNode(k);else if(typeof k==="string"){k=k.replace(ya,"<$1></$2>");var l=(za.exec(k)||["",""])[1].toLowerCase(),n=O[l]||O._default,
+s=n[0],v=b.createElement("div");for(v.innerHTML=n[1]+k+n[2];s--;)v=v.lastChild;if(!c.support.tbody){s=ab.test(k);l=l==="table"&&!s?v.firstChild&&v.firstChild.childNodes:n[1]==="<table>"&&!s?v.childNodes:[];for(n=l.length-1;n>=0;--n)c.nodeName(l[n],"tbody")&&!l[n].childNodes.length&&l[n].parentNode.removeChild(l[n])}!c.support.leadingWhitespace&&$.test(k)&&v.insertBefore(b.createTextNode($.exec(k)[0]),v.firstChild);k=v.childNodes}if(k.nodeType)f.push(k);else f=c.merge(f,k)}}if(d)for(h=0;f[h];h++)if(e&&
+c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script"))));d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,k=0,l;(l=a[k])!=null;k++)if(!(l.nodeName&&c.noData[l.nodeName.toLowerCase()]))if(d=l[c.expando]){if((b=e[d])&&b.events)for(var n in b.events)f[n]?
+c.event.remove(l,n):c.removeEvent(l,n,b.handle);if(h)delete l[c.expando];else l.removeAttribute&&l.removeAttribute(c.expando);delete e[d]}}});var Ca=/alpha\([^)]*\)/i,db=/opacity=([^)]*)/,eb=/-([a-z])/ig,fb=/([A-Z])/g,Da=/^-?\d+(?:px)?$/i,gb=/^-?\d/,hb={position:"absolute",visibility:"hidden",display:"block"},La=["Left","Right"],Ma=["Top","Bottom"],W,ib=u.defaultView&&u.defaultView.getComputedStyle,jb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===A)return this;
+return c.access(this,a,b,true,function(d,e,f){return f!==A?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),k=a.style,l=c.cssHooks[h];b=c.cssProps[h]||
+h;if(d!==A){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!l||!("set"in l)||(d=l.set(a,d))!==A)try{k[b]=d}catch(n){}}}else{if(l&&"get"in l&&(f=l.get(a,false,e))!==A)return f;return k[b]}}},css:function(a,b,d){var e,f=c.camelCase(b),h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==A)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=
+e[f]},camelCase:function(a){return a.replace(eb,jb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=ma(d,b,f);else c.swap(d,hb,function(){h=ma(d,b,f)});return h+"px"}},set:function(d,e){if(Da.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return db.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":
+b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f=d.filter||"";d.filter=Ca.test(f)?f.replace(Ca,e):d.filter+" "+e}};if(ib)W=function(a,b,d){var e;d=d.replace(fb,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return A;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};else if(u.documentElement.currentStyle)W=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],
+h=a.style;if(!Da.test(f)&&gb.test(f)){d=h.left;e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f};if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var kb=c.now(),lb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+mb=/^(?:select|textarea)/i,nb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ob=/^(?:GET|HEAD|DELETE)$/,Na=/\[\]$/,T=/\=\?(&|$)/,ia=/\?/,pb=/([?&])_=[^&]*/,qb=/^(\w+:)?\/\/([^\/?#]+)/,rb=/%20/g,sb=/#.*$/,Ea=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ea)return Ea.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=
+b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(k,l){if(l==="success"||l==="notmodified")h.html(f?c("<div>").append(k.responseText.replace(lb,"")).find(f):k.responseText);d&&h.each(d,[k.responseText,l,k])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&
+!this.disabled&&(this.checked||mb.test(this.nodeName)||nb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})},
+getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",
+script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),k=ob.test(h);b.url=b.url.replace(sb,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ia.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data||
+!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+kb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var l=E[d];E[d]=function(m){f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);if(c.isFunction(l))l(m);else{E[d]=A;try{delete E[d]}catch(p){}}v&&v.removeChild(B)}}if(b.dataType==="script"&&b.cache===null)b.cache=
+false;if(b.cache===false&&h==="GET"){var n=c.now(),s=b.url.replace(pb,"$1_="+n);b.url=s+(s===b.url?(ia.test(b.url)?"&":"?")+"_="+n:"")}if(b.data&&h==="GET")b.url+=(ia.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");n=(n=qb.exec(b.url))&&(n[1]&&n[1]!==location.protocol||n[2]!==location.host);if(b.dataType==="script"&&h==="GET"&&n){var v=u.getElementsByTagName("head")[0]||u.documentElement,B=u.createElement("script");if(b.scriptCharset)B.charset=b.scriptCharset;B.src=
+b.url;if(!d){var D=false;B.onload=B.onreadystatechange=function(){if(!D&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){D=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);B.onload=B.onreadystatechange=null;v&&B.parentNode&&v.removeChild(B)}}}v.insertBefore(B,v.firstChild);return A}var H=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!k||a&&a.contentType)w.setRequestHeader("Content-Type",
+b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}n||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(G){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&&
+c.triggerGlobal(b,"ajaxSend",[w,b]);var M=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){H||c.handleComplete(b,w,e,f);H=true;if(w)w.onreadystatechange=c.noop}else if(!H&&w&&(w.readyState===4||m==="timeout")){H=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d||
+c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&g.call&&g.call(w);M("abort")}}catch(j){}b.async&&b.timeout>0&&setTimeout(function(){w&&!H&&M("timeout")},b.timeout);try{w.send(k||b.data==null?null:b.data)}catch(o){c.handleError(b,w,null,o);c.handleComplete(b,w,e,f)}b.async||M();return w}},param:function(a,b){var d=[],e=function(h,k){k=c.isFunction(k)?k():k;d[d.length]=encodeURIComponent(h)+
+"="+encodeURIComponent(k)};if(b===A)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)ca(f,a[f],b,e);return d.join("&").replace(rb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess",[b,a])},handleComplete:function(a,
+b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),e=a.getResponseHeader("Etag");
+if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}});if(E.ActiveXObject)c.ajaxSettings.xhr=
+function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var da={},tb=/^(?:toggle|show|hide)$/,ub=/^([+\-]=)?([\d+.\-]+)(.*)$/,aa,na=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show",3),a,b,d);else{a=
+0;for(b=this.length;a<b;a++){if(!c.data(this[a],"olddisplay")&&this[a].style.display==="none")this[a].style.display="";this[a].style.display===""&&c.css(this[a],"display")==="none"&&c.data(this[a],"olddisplay",oa(this[a].nodeName))}for(a=0;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b,d){if(a||a===0)return this.animate(S("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay",d)}for(a=
+0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(S("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b,d,e);if(c.isEmptyObject(a))return this.each(f.complete);
+return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),k,l=this.nodeType===1,n=l&&c(this).is(":hidden"),s=this;for(k in a){var v=c.camelCase(k);if(k!==v){a[v]=a[k];delete a[k];k=v}if(a[k]==="hide"&&n||a[k]==="show"&&!n)return h.complete.call(this);if(l&&(k==="height"||k==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(oa(this.nodeName)===
+"inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[k])){(h.specialEasing=h.specialEasing||{})[k]=a[k][1];a[k]=a[k][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(B,D){var H=new c.fx(s,h,B);if(tb.test(D))H[D==="toggle"?n?"show":"hide":D](a);else{var w=ub.exec(D),G=H.cur(true)||0;if(w){var M=parseFloat(w[2]),g=w[3]||"px";if(g!=="px"){c.style(s,B,(M||1)+g);
+G=(M||1)/H.cur(true)*G;c.style(s,B,G+g)}if(w[1])M=(w[1]==="-="?-1:1)*M+G;H.custom(G,M,g)}else H.custom(G,D,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b,
+d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a*
+Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(h){return f.step(h)}
+this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;var f=this;a=c.fx;e.elem=this.elem;if(e()&&c.timers.push(e)&&!aa)aa=setInterval(a.tick,a.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;
+this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(l,n){f.style["overflow"+n]=h.overflow[l]})}this.options.hide&&c(this.elem).hide();if(this.options.hide||
+this.options.show)for(var k in this.options.curAnim)c.style(this.elem,k,this.options.orig[k]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=
+c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},interval:13,stop:function(){clearInterval(aa);aa=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===
+b.elem}).length};var vb=/^t(?:able|d|h)$/i,Fa=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in u.documentElement?function(a){var b=this[0],d;if(a)return this.each(function(k){c.offset.setOffset(this,a,k)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=ea(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&&
+h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-(h.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(s){c.offset.setOffset(this,a,s)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,e=b.ownerDocument,f,h=e.documentElement,k=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;
+for(var l=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==k&&b!==h;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;f=e?e.getComputedStyle(b,null):b.currentStyle;l-=b.scrollTop;n-=b.scrollLeft;if(b===d){l+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&vb.test(b.nodeName))){l+=parseFloat(f.borderTopWidth)||0;n+=parseFloat(f.borderLeftWidth)||0}d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&f.overflow!=="visible"){l+=
+parseFloat(f.borderTopWidth)||0;n+=parseFloat(f.borderLeftWidth)||0}f=f}if(f.position==="relative"||f.position==="static"){l+=k.offsetTop;n+=k.offsetLeft}if(c.offset.supportsFixedPosition&&f.position==="fixed"){l+=Math.max(h.scrollTop,k.scrollTop);n+=Math.max(h.scrollLeft,k.scrollLeft)}return{top:l,left:n}};c.offset={initialize:function(){var a=u.body,b=u.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",
+height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);d=b.firstChild;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=
+f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;a.removeChild(b);c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.css(a,
+"marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),k=c.css(a,"top"),l=c.css(a,"left"),n=e==="absolute"&&c.inArray("auto",[k,l])>-1;e={};var s={};if(n)s=f.position();k=n?s.top:parseInt(k,10)||0;l=n?s.left:parseInt(l,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+k;if(b.left!=null)e.left=b.left-h.left+l;"using"in b?b.using.call(a,
+e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Fa.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||u.body;a&&!Fa.test(a.nodeName)&&
+c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==A)return this.each(function(){if(h=ea(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=ea(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();
+c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(h){var k=c(this);k[d](e.call(this,h,k[d]()))});return c.isWindow(f)?f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b]:f.nodeType===9?Math.max(f.documentElement["client"+
+b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]):e===A?parseFloat(c.css(f,d)):this.css(d,typeof e==="string"?e:e+"px")}})})(window);
diff --git a/static/vendor/d3-2.8.1/lib/polymaps/LICENSE b/static/vendor/d3-2.8.1/lib/polymaps/LICENSE
new file mode 100755 (executable)
index 0000000..df48fc5
--- /dev/null
@@ -0,0 +1,28 @@
+Copyright (c) 2010, SimpleGeo and Stamen Design
+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.
+
+* Neither the name of SimpleGeo nor the names of its contributors may 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 SIMPLEGEO 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/static/vendor/d3-2.8.1/lib/protovis/LICENSE b/static/vendor/d3-2.8.1/lib/protovis/LICENSE
new file mode 100755 (executable)
index 0000000..4c6e405
--- /dev/null
@@ -0,0 +1,27 @@
+Copyright (c) 2010, Stanford Visualization Group
+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.
+
+* Neither the name of Stanford University nor the names of its contributors
+  may 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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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/static/vendor/d3-2.8.1/lib/science/LICENSE b/static/vendor/d3-2.8.1/lib/science/LICENSE
new file mode 100755 (executable)
index 0000000..a59d17e
--- /dev/null
@@ -0,0 +1,26 @@
+Copyright (c) 2011, Jason Davies
+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 Jason Davies 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 JASON DAVIES 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/static/vendor/d3-2.8.1/lib/science/science.js b/static/vendor/d3-2.8.1/lib/science/science.js
new file mode 100755 (executable)
index 0000000..2f5556a
--- /dev/null
@@ -0,0 +1,225 @@
+(function(){science = {version: "1.7.0"}; // semver
+science.ascending = function(a, b) {
+  return a - b;
+};
+// Euler's constant.
+science.EULER = .5772156649015329;
+// Compute exp(x) - 1 accurately for small x.
+science.expm1 = function(x) {
+  return (x < 1e-5 && x > -1e-5) ? x + .5 * x * x : Math.exp(x) - 1;
+};
+science.functor = function(v) {
+  return typeof v === "function" ? v : function() { return v; };
+};
+// Based on:
+// http://www.johndcook.com/blog/2010/06/02/whats-so-hard-about-finding-a-hypotenuse/
+science.hypot = function(x, y) {
+  x = Math.abs(x);
+  y = Math.abs(y);
+  var max,
+      min;
+  if (x > y) { max = x; min = y; }
+  else       { max = y; min = x; }
+  var r = min / max;
+  return max * Math.sqrt(1 + r * r);
+};
+science.quadratic = function() {
+  var complex = false;
+
+  function quadratic(a, b, c) {
+    var d = b * b - 4 * a * c;
+    if (d > 0) {
+      d = Math.sqrt(d) / (2 * a);
+      return complex
+        ? [{r: -b - d, i: 0}, {r: -b + d, i: 0}]
+        : [-b - d, -b + d];
+    } else if (d === 0) {
+      d = -b / (2 * a);
+      return complex ? [{r: d, i: 0}] : [d];
+    } else {
+      if (complex) {
+        d = Math.sqrt(-d) / (2 * a);
+        return [
+          {r: -b, i: -d},
+          {r: -b, i: d}
+        ];
+      }
+      return [];
+    }
+  }
+
+  quadratic.complex = function(x) {
+    if (!arguments.length) return complex;
+    complex = x;
+    return quadratic;
+  };
+
+  return quadratic;
+};
+// Constructs a multi-dimensional array filled with zeroes.
+science.zeroes = function(n) {
+  var i = -1,
+      a = [];
+  if (arguments.length === 1)
+    while (++i < n)
+      a[i] = 0;
+  else
+    while (++i < n)
+      a[i] = science.zeroes.apply(
+        this, Array.prototype.slice.call(arguments, 1));
+  return a;
+};
+science.vector = {};
+science.vector.cross = function(a, b) {
+  // TODO how to handle non-3D vectors?
+  // TODO handle 7D vectors?
+  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]
+  ];
+};
+science.vector.dot = function(a, b) {
+  var s = 0,
+      i = -1,
+      n = Math.min(a.length, b.length);
+  while (++i < n) s += a[i] * b[i];
+  return s;
+};
+science.vector.length = function(p) {
+  return Math.sqrt(science.vector.dot(p, p));
+};
+science.vector.normalize = function(p) {
+  var length = science.vector.length(p);
+  return p.map(function(d) { return d / length; });
+};
+// 4x4 matrix determinant.
+science.vector.determinant = function(matrix) {
+  var m = matrix[0].concat(matrix[1]).concat(matrix[2]).concat(matrix[3]);
+  return (
+    m[12] * m[9]  * m[6]  * m[3]  - m[8] * m[13] * m[6]  * m[3]  -
+    m[12] * m[5]  * m[10] * m[3]  + m[4] * m[13] * m[10] * m[3]  +
+    m[8]  * m[5]  * m[14] * m[3]  - m[4] * m[9]  * m[14] * m[3]  -
+    m[12] * m[9]  * m[2]  * m[7]  + m[8] * m[13] * m[2]  * m[7]  +
+    m[12] * m[1]  * m[10] * m[7]  - m[0] * m[13] * m[10] * m[7]  -
+    m[8]  * m[1]  * m[14] * m[7]  + m[0] * m[9]  * m[14] * m[7]  +
+    m[12] * m[5]  * m[2]  * m[11] - m[4] * m[13] * m[2]  * m[11] -
+    m[12] * m[1]  * m[6]  * m[11] + m[0] * m[13] * m[6]  * m[11] +
+    m[4]  * m[1]  * m[14] * m[11] - m[0] * m[5]  * m[14] * m[11] -
+    m[8]  * m[5]  * m[2]  * m[15] + m[4] * m[9]  * m[2]  * m[15] +
+    m[8]  * m[1]  * m[6]  * m[15] - m[0] * m[9]  * m[6]  * m[15] -
+    m[4]  * m[1]  * m[10] * m[15] + m[0] * m[5]  * m[10] * m[15]);
+};
+// Performs in-place Gauss-Jordan elimination.
+//
+// Based on Jarno Elonen's Python version (public domain):
+// http://elonen.iki.fi/code/misc-notes/python-gaussj/index.html
+science.vector.gaussjordan = function(m, eps) {
+  if (!eps) eps = 1e-10;
+
+  var h = m.length,
+      w = m[0].length,
+      y = -1,
+      y2,
+      x;
+
+  while (++y < h) {
+    var maxrow = y;
+
+    // Find max pivot.
+    y2 = y; while (++y2 < h) {
+      if (Math.abs(m[y2][y]) > Math.abs(m[maxrow][y]))
+        maxrow = y2;
+    }
+
+    // Swap.
+    var tmp = m[y];
+    m[y] = m[maxrow];
+    m[maxrow] = tmp;
+
+    // Singular?
+    if (Math.abs(m[y][y]) <= eps) return false;
+
+    // Eliminate column y.
+    y2 = y; while (++y2 < h) {
+      var c = m[y2][y] / m[y][y];
+      x = y - 1; while (++x < w) {
+        m[y2][x] -= m[y][x] * c;
+      }
+    }
+  }
+
+  // Backsubstitute.
+  y = h; while (--y >= 0) {
+    var c = m[y][y];
+    y2 = -1; while (++y2 < y) {
+      x = w; while (--x >= y) {
+        m[y2][x] -=  m[y][x] * m[y2][y] / c;
+      }
+    }
+    m[y][y] /= c;
+    // Normalize row y.
+    x = h - 1; while (++x < w) {
+      m[y][x] /= c;
+    }
+  }
+  return true;
+};
+// Find matrix inverse using Gauss-Jordan.
+science.vector.inverse = function(m) {
+  var n = m.length
+      i = -1;
+
+  // Check if the matrix is square.
+  if (n !== m[0].length) return;
+
+  // Augment with identity matrix I to get AI.
+  m = m.map(function(row, i) {
+    var identity = new Array(n),
+        j = -1;
+    while (++j < n) identity[j] = i === j ? 1 : 0;
+    return row.concat(identity);
+  });
+
+  // Compute IA^-1.
+  science.vector.gaussjordan(m);
+
+  // Remove identity matrix I to get A^-1.
+  while (++i < n) {
+    m[i] = m[i].slice(n);
+  }
+
+  return m;
+};
+science.vector.multiply = function(a, b) {
+  var m = a.length,
+      n = b[0].length,
+      p = b.length,
+      i = -1,
+      j,
+      k;
+  if (p !== a[0].length) throw {"error": "columns(a) != rows(b); " + a[0].length + " != " + p};
+  var ab = new Array(m);
+  while (++i < m) {
+    ab[i] = new Array(n);
+    j = -1; while(++j < n) {
+      var s = 0;
+      k = -1; while (++k < p) s += a[i][k] * b[k][j];
+      ab[i][j] = s;
+    }
+  }
+  return ab;
+};
+science.vector.transpose = function(a) {
+  var m = a.length,
+      n = a[0].length,
+      i = -1,
+      j,
+      b = new Array(n);
+  while (++i < n) {
+    b[i] = new Array(m);
+    j = -1; while (++j < m) b[i][j] = a[j][i];
+  }
+  return b;
+};
+})()
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/lib/science/science.lin.js b/static/vendor/d3-2.8.1/lib/science/science.lin.js
new file mode 100755 (executable)
index 0000000..cbdc2ac
--- /dev/null
@@ -0,0 +1,27 @@
+(function(){science.lin = {};
+/**
+ * Solves tridiagonal systems of linear equations.
+ *
+ * Source: http://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm
+ *
+ * @param {number[]} a
+ * @param {number[]} b
+ * @param {number[]} c
+ * @param {number[]} d
+ * @param {number[]} x
+ * @param {number} n
+ */
+science.lin.tridag = function(a, b, c, d, x, n) {
+  var i,
+      m;
+  for (i = 1; i < n; i++) {
+    m = a[i] / b[i - 1];
+    b[i] -= m * c[i - 1];
+    d[i] -= m * d[i - 1];
+  }
+  x[n - 1] = d[n - 1] / b[n - 1];
+  for (i = n - 2; i >= 0; i--) {
+    x[i] = (d[i] - c[i] * x[i + 1]) / b[i];
+  }
+};
+})()
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/lib/science/science.lin.min.js b/static/vendor/d3-2.8.1/lib/science/science.lin.min.js
new file mode 100755 (executable)
index 0000000..a470da4
--- /dev/null
@@ -0,0 +1 @@
+(function(){science.lin={},science.lin.tridag=function(a,b,c,d,e,f){var g,h;for(g=1;g<f;g++)h=a[g]/b[g-1],b[g]-=h*c[g-1],d[g]-=h*d[g-1];e[f-1]=d[f-1]/b[f-1];for(g=f-2;g>=0;g--)e[g]=(d[g]-c[g]*e[g+1])/b[g]}})()
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/lib/science/science.min.js b/static/vendor/d3-2.8.1/lib/science/science.min.js
new file mode 100755 (executable)
index 0000000..41cf0eb
--- /dev/null
@@ -0,0 +1 @@
+(function(){science={version:"1.7.0"},science.ascending=function(a,b){return a-b},science.EULER=.5772156649015329,science.expm1=function(a){return a<1e-5&&a>-0.00001?a+.5*a*a:Math.exp(a)-1},science.functor=function(a){return typeof a=="function"?a:function(){return a}},science.hypot=function(a,b){a=Math.abs(a),b=Math.abs(b);var c,d;a>b?(c=a,d=b):(c=b,d=a);var e=d/c;return c*Math.sqrt(1+e*e)},science.quadratic=function(){function b(b,c,d){var e=c*c-4*b*d;if(e>0){e=Math.sqrt(e)/(2*b);return a?[{r:-c-e,i:0},{r:-c+e,i:0}]:[-c-e,-c+e]}if(e===0){e=-c/(2*b);return a?[{r:e,i:0}]:[e]}if(a){e=Math.sqrt(-e)/(2*b);return[{r:-c,i:-e},{r:-c,i:e}]}return[]}var a=!1;b.complex=function(c){if(!arguments.length)return a;a=c;return b};return b},science.zeroes=function(a){var b=-1,c=[];if(arguments.length===1)while(++b<a)c[b]=0;else while(++b<a)c[b]=science.zeroes.apply(this,Array.prototype.slice.call(arguments,1));return c},science.vector={},science.vector.cross=function(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]]},science.vector.dot=function(a,b){var c=0,d=-1,e=Math.min(a.length,b.length);while(++d<e)c+=a[d]*b[d];return c},science.vector.length=function(a){return Math.sqrt(science.vector.dot(a,a))},science.vector.normalize=function(a){var b=science.vector.length(a);return a.map(function(a){return a/b})},science.vector.determinant=function(a){var b=a[0].concat(a[1]).concat(a[2]).concat(a[3]);return b[12]*b[9]*b[6]*b[3]-b[8]*b[13]*b[6]*b[3]-b[12]*b[5]*b[10]*b[3]+b[4]*b[13]*b[10]*b[3]+b[8]*b[5]*b[14]*b[3]-b[4]*b[9]*b[14]*b[3]-b[12]*b[9]*b[2]*b[7]+b[8]*b[13]*b[2]*b[7]+b[12]*b[1]*b[10]*b[7]-b[0]*b[13]*b[10]*b[7]-b[8]*b[1]*b[14]*b[7]+b[0]*b[9]*b[14]*b[7]+b[12]*b[5]*b[2]*b[11]-b[4]*b[13]*b[2]*b[11]-b[12]*b[1]*b[6]*b[11]+b[0]*b[13]*b[6]*b[11]+b[4]*b[1]*b[14]*b[11]-b[0]*b[5]*b[14]*b[11]-b[8]*b[5]*b[2]*b[15]+b[4]*b[9]*b[2]*b[15]+b[8]*b[1]*b[6]*b[15]-b[0]*b[9]*b[6]*b[15]-b[4]*b[1]*b[10]*b[15]+b[0]*b[5]*b[10]*b[15]},science.vector.gaussjordan=function(a,b){b||(b=1e-10);var c=a.length,d=a[0].length,e=-1,f,g;while(++e<c){var h=e;f=e;while(++f<c)Math.abs(a[f][e])>Math.abs(a[h][e])&&(h=f);var i=a[e];a[e]=a[h],a[h]=i;if(Math.abs(a[e][e])<=b)return!1;f=e;while(++f<c){var j=a[f][e]/a[e][e];g=e-1;while(++g<d)a[f][g]-=a[e][g]*j}}e=c;while(--e>=0){var j=a[e][e];f=-1;while(++f<e){g=d;while(--g>=e)a[f][g]-=a[e][g]*a[f][e]/j}a[e][e]/=j,g=c-1;while(++g<d)a[e][g]/=j}return!0},science.vector.inverse=function(a){var b=a.length;i=-1;if(b===a[0].length){a=a.map(function(a,c){var d=Array(b),e=-1;while(++e<b)d[e]=c===e?1:0;return a.concat(d)}),science.vector.gaussjordan(a);while(++i<b)a[i]=a[i].slice(b);return a}},science.vector.multiply=function(a,b){var c=a.length,d=b[0].length,e=b.length,f=-1,g,h;if(e!==a[0].length)throw{error:"columns(a) != rows(b); "+a[0].length+" != "+e};var i=Array(c);while(++f<c){i[f]=Array(d),g=-1;while(++g<d){var j=0;h=-1;while(++h<e)j+=a[f][h]*b[h][g];i[f][g]=j}}return i},science.vector.transpose=function(a){var b=a.length,c=a[0].length,d=-1,e,f=Array(c);while(++d<c){f[d]=Array(b),e=-1;while(++e<b)f[d][e]=a[e][d]}return f}})()
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/lib/science/science.stats.js b/static/vendor/d3-2.8.1/lib/science/science.stats.js
new file mode 100755 (executable)
index 0000000..d98df12
--- /dev/null
@@ -0,0 +1,720 @@
+(function(){science.stats = {};
+// Bandwidth selectors for Gaussian kernels.
+// Based on R's implementations in `stats.bw`.
+science.stats.bandwidth = {
+
+  // Silverman, B. W. (1986) Density Estimation. London: Chapman and Hall.
+  nrd0: function(x) {
+    var hi = Math.sqrt(science.stats.variance(x));
+    if (!(lo = Math.min(hi, science.stats.iqr(x) / 1.34)))
+      (lo = hi) || (lo = Math.abs(x[1])) || (lo = 1);
+    return .9 * lo * Math.pow(x.length, -.2);
+  },
+
+  // Scott, D. W. (1992) Multivariate Density Estimation: Theory, Practice, and
+  // Visualization. Wiley.
+  nrd: function(x) {
+    var h = science.stats.iqr(x) / 1.34;
+    return 1.06 * Math.min(Math.sqrt(science.stats.variance(x)), h)
+      * Math.pow(x.length, -1/5);
+  }
+};
+science.stats.distance = {
+  euclidean: function(a, b) {
+    var n = a.length,
+        i = -1,
+        s = 0,
+        x;
+    while (++i < n) {
+      x = a[i] - b[i];
+      s += x * x;
+    }
+    return Math.sqrt(s);
+  },
+  manhattan: function(a, b) {
+    var n = a.length,
+        i = -1,
+        s = 0;
+    while (++i < n) s += Math.abs(a[i] - b[i]);
+    return s;
+  },
+  minkowski: function(p) {
+    return function(a, b) {
+      var n = a.length,
+          i = -1,
+          s = 0;
+      while (++i < n) s += Math.pow(Math.abs(a[i] - b[i]), p);
+      return Math.pow(s, 1 / p);
+    };
+  },
+  chebyshev: function(a, b) {
+    var n = a.length,
+        i = -1,
+        max = 0,
+        x;
+    while (++i < n) {
+      x = Math.abs(a[i] - b[i]);
+      if (x > max) max = x;
+    }
+    return max;
+  },
+  hamming: function(a, b) {
+    var n = a.length,
+        i = -1,
+        d = 0;
+    while (++i < n) if (a[i] !== b[i]) d++;
+    return d;
+  },
+  jaccard: function(a, b) {
+    var n = a.length,
+        i = -1,
+        s = 0;
+    while (++i < n) if (a[i] === b[i]) s++;
+    return s / n;
+  },
+  braycurtis: function(a, b) {
+    var n = a.length,
+        i = -1,
+        s0 = 0,
+        s1 = 0,
+        ai,
+        bi;
+    while (++i < n) {
+      ai = a[i];
+      bi = b[i];
+      s0 += Math.abs(ai - bi);
+      s1 += Math.abs(ai + bi);
+    }
+    return s0 / s1;
+  }
+};
+// Based on implementation in http://picomath.org/.
+science.stats.erf = function(x) {
+  var a1 =  0.254829592,
+      a2 = -0.284496736,
+      a3 =  1.421413741,
+      a4 = -1.453152027,
+      a5 =  1.061405429,
+      p  =  0.3275911;
+
+  // Save the sign of x
+  var sign = x < 0 ? -1 : 1;
+  if (x < 0) {
+    sign = -1;
+    x = -x;
+  }
+
+  // A&S formula 7.1.26
+  var t = 1 / (1 + p * x);
+  return sign * (
+    1 - (((((a5 * t + a4) * t) + a3) * t + a2) * t + a1)
+    * t * Math.exp(-x * x));
+};
+science.stats.phi = function(x) {
+  return .5 * (1 + science.stats.erf(x / Math.SQRT2));
+};
+// See <http://en.wikipedia.org/wiki/Kernel_(statistics)>.
+science.stats.kernel = {
+  uniform: function(u) {
+    if (u <= 1 && u >= -1) return .5;
+    return 0;
+  },
+  triangular: function(u) {
+    if (u <= 1 && u >= -1) return 1 - Math.abs(u);
+    return 0;
+  },
+  epanechnikov: function(u) {
+    if (u <= 1 && u >= -1) return .75 * (1 - u * u);
+    return 0;
+  },
+  quartic: function(u) {
+    if (u <= 1 && u >= -1) {
+      var tmp = 1 - u * u;
+      return (15 / 16) * tmp * tmp;
+    }
+    return 0;
+  },
+  triweight: function(u) {
+    if (u <= 1 && u >= -1) {
+      var tmp = 1 - u * u;
+      return (35 / 32) * tmp * tmp * tmp;
+    }
+    return 0;
+  },
+  gaussian: function(u) {
+    return 1 / Math.sqrt(2 * Math.PI) * Math.exp(-.5 * u * u);
+  },
+  cosine: function(u) {
+    if (u <= 1 && u >= -1) return Math.PI / 4 * Math.cos(Math.PI / 2 * u);
+    return 0;
+  }
+};
+// http://exploringdata.net/den_trac.htm
+science.stats.kde = function() {
+  var kernel = science.stats.kernel.gaussian,
+      sample = [],
+      bandwidth = science.stats.bandwidth.nrd;
+
+  function kde(points, i) {
+    var bw = bandwidth.call(this, sample);
+    return points.map(function(x) {
+      var i = -1,
+          y = 0,
+          n = sample.length;
+      while (++i < n) {
+        y += kernel((x - sample[i]) / bw);
+      }
+      return [x, y / bw / n];
+    });
+  }
+
+  kde.kernel = function(x) {
+    if (!arguments.length) return kernel;
+    kernel = x;
+    return kde;
+  };
+
+  kde.sample = function(x) {
+    if (!arguments.length) return sample;
+    sample = x;
+    return kde;
+  };
+
+  kde.bandwidth = function(x) {
+    if (!arguments.length) return bandwidth;
+    bandwidth = science.functor(x);
+    return kde;
+  };
+
+  return kde;
+};
+// Based on figue implementation by Jean-Yves Delort.
+// http://code.google.com/p/figue/
+science.stats.kmeans = function() {
+  var distance = science.stats.distance.euclidean,
+      maxIterations = 1000,
+      k = 1;
+
+  function kmeans(vectors) {
+    var n = vectors.length,
+        assignments = [],
+        clusterSizes = [],
+        repeat = 1,
+        iterations = 0,
+        centroids = science_stats_kmeansRandom(k, vectors),
+        newCentroids,
+        i,
+        j,
+        x,
+        d,
+        min,
+        best;
+
+    while (repeat && iterations < maxIterations) {
+      // Assignment step.
+      j = -1; while (++j < k) {
+        clusterSizes[j] = 0;
+      }
+
+      i = -1; while (++i < n) {
+        x = vectors[i];
+        min = Infinity;
+        j = -1; while (++j < k) {
+          d = distance.call(this, centroids[j], x);
+          if (d < min) {
+            min = d;
+            best = j;
+          }
+        }
+        clusterSizes[assignments[i] = best]++;
+      }
+
+      // Update centroids step.
+      newCentroids = [];
+      i = -1; while (++i < n) {
+        x = assignments[i];
+        d = newCentroids[x];
+        if (d == null) newCentroids[x] = vectors[i].slice();
+        else {
+          j = -1; while (++j < d.length) {
+            d[j] += vectors[i][j];
+          }
+        }
+      }
+      j = -1; while (++j < k) {
+        x = newCentroids[j];
+        d = 1 / clusterSizes[j];
+        i = -1; while (++i < x.length) x[i] *= d;
+      }
+
+      // Check convergence.
+      repeat = 0;
+      j = -1; while (++j < k) {
+        if (!science_stats_kmeansCompare(newCentroids[j], centroids[j])) {
+          repeat = 1;
+          break;
+        }
+      }
+      centroids = newCentroids;
+      iterations++;
+    }
+    return {assignments: assignments, centroids: centroids};
+  }
+
+  kmeans.k = function(x) {
+    if (!arguments.length) return k;
+    k = x;
+    return kmeans;
+  };
+
+  kmeans.distance = function(x) {
+    if (!arguments.length) return distance;
+    distance = x;
+    return kmeans;
+  };
+
+  return kmeans;
+};
+
+function science_stats_kmeansCompare(a, b) {
+  if (!a || !b || a.length !== b.length) return false;
+  var n = a.length,
+      i = -1;
+  while (++i < n) if (a[i] !== b[i]) return false;
+  return true;
+}
+
+// Returns an array of k distinct vectors randomly selected from the input
+// array of vectors. Returns null if k > n or if there are less than k distinct
+// objects in vectors.
+function science_stats_kmeansRandom(k, vectors) {
+  var n = vectors.length;
+  if (k > n) return null;
+  
+  var selected_vectors = [];
+  var selected_indices = [];
+  var tested_indices = {};
+  var tested = 0;
+  var selected = 0;
+  var i,
+      vector,
+      select;
+
+  while (selected < k) {
+    if (tested === n) return null;
+    
+    var random_index = Math.floor(Math.random() * n);
+    if (random_index in tested_indices) continue;
+    
+    tested_indices[random_index] = 1;
+    tested++;
+    vector = vectors[random_index];
+    select = true;
+    for (i = 0; i < selected; i++) {
+      if (science_stats_kmeansCompare(vector, selected_vectors[i])) {
+        select = false;
+        break;
+      }
+    }
+    if (select) {
+      selected_vectors[selected] = vector;
+      selected_indices[selected] = random_index;
+      selected++;
+    }
+  }
+  return selected_vectors;
+}
+science.stats.hcluster = function() {
+  var distance = science.stats.distance.euclidean,
+      linkage = "simple"; // simple, complete or average
+
+  function hcluster(vectors) {
+    var n = vectors.length,
+        dMin = [],
+        cSize = [],
+        distMatrix = [],
+        clusters = [],
+        c1,
+        c2,
+        c1Cluster,
+        c2Cluster,
+        p,
+        root,
+        i,
+        j;
+
+    // Initialise distance matrix and vector of closest clusters.
+    i = -1; while (++i < n) {
+      dMin[i] = 0;
+      distMatrix[i] = [];
+      j = -1; while (++j < n) {
+        distMatrix[i][j] = i === j ? Infinity : distance(vectors[i] , vectors[j]);
+        if (distMatrix[i][dMin[i]] > distMatrix[i][j]) dMin[i] = j;
+      }
+    }
+
+    // create leaves of the tree
+    i = -1; while (++i < n) {
+      clusters[i] = [];
+      clusters[i][0] = {
+        left: null,
+        right: null,
+        dist: 0,
+        centroid: vectors[i],
+        size: 1,
+        depth: 0
+      };
+      cSize[i] = 1;
+    }
+
+    // Main loop
+    for (p = 0; p < n-1; p++) {
+      // find the closest pair of clusters
+      c1 = 0;
+      for (i = 0; i < n; i++) {
+        if (distMatrix[i][dMin[i]] < distMatrix[c1][dMin[c1]]) c1 = i;
+      }
+      c2 = dMin[c1];
+
+      // create node to store cluster info 
+      c1Cluster = clusters[c1][0];
+      c2Cluster = clusters[c2][0];
+
+      newCluster = {
+        left: c1Cluster,
+        right: c2Cluster,
+        dist: distMatrix[c1][c2],
+        centroid: calculateCentroid(c1Cluster.size, c1Cluster.centroid,
+          c2Cluster.size, c2Cluster.centroid),
+        size: c1Cluster.size + c2Cluster.size,
+        depth: 1 + Math.max(c1Cluster.depth, c2Cluster.depth)
+      };
+      clusters[c1].splice(0, 0, newCluster);
+      cSize[c1] += cSize[c2];
+
+      // overwrite row c1 with respect to the linkage type
+      for (j = 0; j < n; j++) {
+        switch (linkage) {
+          case "single":
+            if (distMatrix[c1][j] > distMatrix[c2][j])
+              distMatrix[j][c1] = distMatrix[c1][j] = distMatrix[c2][j];
+            break;
+          case "complete":
+            if (distMatrix[c1][j] < distMatrix[c2][j])
+              distMatrix[j][c1] = distMatrix[c1][j] = distMatrix[c2][j];
+            break;
+          case "average":
+            distMatrix[j][c1] = distMatrix[c1][j] = (cSize[c1] * distMatrix[c1][j] + cSize[c2] * distMatrix[c2][j]) / (cSize[c1] + cSize[j]);
+            break;
+        }
+      }
+      distMatrix[c1][c1] = Infinity;
+
+      // infinity \adout old row c2 and column c2
+      for (i = 0; i < n; i++)
+        distMatrix[i][c2] = distMatrix[c2][i] = Infinity;
+
+      // update dmin and replace ones that previous pointed to c2 to point to c1
+      for (j = 0; j < n; j++) {
+        if (dMin[j] == c2) dMin[j] = c1;
+        if (distMatrix[c1][j] < distMatrix[c1][dMin[c1]]) dMin[c1] = j;
+      }
+
+      // keep track of the last added cluster
+      root = newCluster;
+    }
+
+    return root;
+  }
+
+  hcluster.distance = function(x) {
+    if (!arguments.length) return distance;
+    distance = x;
+    return hcluster;
+  };
+
+  return hcluster;
+};
+
+function calculateCentroid(c1Size, c1Centroid, c2Size, c2Centroid) {
+  var newCentroid = [],
+      newSize = c1Size + c2Size,
+      n = c1Centroid.length,
+      i = -1;
+  while (++i < n) {
+    newCentroid[i] = (c1Size * c1Centroid[i] + c2Size * c2Centroid[i]) / newSize;
+  }
+  return newCentroid;
+}
+science.stats.iqr = function(x) {
+  var quartiles = science.stats.quantiles(x, [.25, .75]);
+  return quartiles[1] - quartiles[0];
+};
+// Based on org.apache.commons.math.analysis.interpolation.LoessInterpolator
+// from http://commons.apache.org/math/
+science.stats.loess = function() {    
+  var bandwidth = .3,
+      robustnessIters = 2,
+      accuracy = 1e-12;
+
+  function smooth(xval, yval, weights) {
+    var n = xval.length,
+        i;
+
+    if (n !== yval.length) throw {error: "Mismatched array lengths"};
+    if (n == 0) throw {error: "At least one point required."};
+
+    if (arguments.length < 3) {
+      weights = [];
+      i = -1; while (++i < n) weights[i] = 1;
+    }
+
+    science_stats_loessFiniteReal(xval);
+    science_stats_loessFiniteReal(yval);
+    science_stats_loessFiniteReal(weights);
+    science_stats_loessStrictlyIncreasing(xval);
+
+    if (n == 1) return [yval[0]];
+    if (n == 2) return [yval[0], yval[1]];
+
+    var bandwidthInPoints = Math.floor(bandwidth * n);
+
+    if (bandwidthInPoints < 2) throw {error: "Bandwidth too small."};
+
+    var res = [],
+        residuals = [],
+        robustnessWeights = [];
+
+    // Do an initial fit and 'robustnessIters' robustness iterations.
+    // This is equivalent to doing 'robustnessIters+1' robustness iterations
+    // starting with all robustness weights set to 1.
+    i = -1; while (++i < n) {
+      res[i] = 0;
+      residuals[i] = 0;
+      robustnessWeights[i] = 1;
+    }
+
+    var iter = -1;
+    while (++iter <= robustnessIters) {
+      var bandwidthInterval = [0, bandwidthInPoints - 1];
+      // At each x, compute a local weighted linear regression
+      var x;
+      i = -1; while (++i < n) {
+        x = xval[i];
+
+        // Find out the interval of source points on which
+        // a regression is to be made.
+        if (i > 0) {
+          science_stats_loessUpdateBandwidthInterval(xval, weights, i, bandwidthInterval);
+        }
+
+        var ileft = bandwidthInterval[0],
+            iright = bandwidthInterval[1];
+
+        // Compute the point of the bandwidth interval that is
+        // farthest from x
+        var edge = (xval[i] - xval[ileft]) > (xval[iright] - xval[i]) ? ileft : iright;
+
+        // Compute a least-squares linear fit weighted by
+        // the product of robustness weights and the tricube
+        // weight function.
+        // See http://en.wikipedia.org/wiki/Linear_regression
+        // (section "Univariate linear case")
+        // and http://en.wikipedia.org/wiki/Weighted_least_squares
+        // (section "Weighted least squares")
+        var sumWeights = 0,
+            sumX = 0,
+            sumXSquared = 0,
+            sumY = 0,
+            sumXY = 0,
+            denom = Math.abs(1 / (xval[edge] - x));
+
+        for (var k = ileft; k <= iright; ++k) {
+          var xk   = xval[k],
+              yk   = yval[k],
+              dist = k < i ? x - xk : xk - x,
+              w    = science_stats_loessTricube(dist * denom) * robustnessWeights[k] * weights[k],
+              xkw  = xk * w;
+          sumWeights += w;
+          sumX += xkw;
+          sumXSquared += xk * xkw;
+          sumY += yk * w;
+          sumXY += yk * xkw;
+        }
+
+        var meanX = sumX / sumWeights,
+            meanY = sumY / sumWeights,
+            meanXY = sumXY / sumWeights,
+            meanXSquared = sumXSquared / sumWeights;
+
+        var beta = (Math.sqrt(Math.abs(meanXSquared - meanX * meanX)) < accuracy)
+            ? 0 : ((meanXY - meanX * meanY) / (meanXSquared - meanX * meanX));
+
+        var alpha = meanY - beta * meanX;
+
+        res[i] = beta * x + alpha;
+        residuals[i] = Math.abs(yval[i] - res[i]);
+      }
+
+      // No need to recompute the robustness weights at the last
+      // iteration, they won't be needed anymore
+      if (iter === robustnessIters) {
+        break;
+      }
+
+      // Recompute the robustness weights.
+
+      // Find the median residual.
+      var sortedResiduals = residuals.slice();
+      sortedResiduals.sort();
+      var medianResidual = sortedResiduals[Math.floor(n / 2)];
+
+      if (Math.abs(medianResidual) < accuracy)
+        break;
+
+      var arg,
+          w;
+      i = -1; while (++i < n) {
+        arg = residuals[i] / (6 * medianResidual);
+        robustnessWeights[i] = (arg >= 1) ? 0 : ((w = 1 - arg * arg) * w);
+      }
+    }
+
+    return res;
+  }
+
+  smooth.bandwidth = function(x) {
+    if (!arguments.length) return x;
+    bandwidth = x;
+    return smooth;
+  };
+
+  smooth.robustnessIterations = function(x) {
+    if (!arguments.length) return x;
+    robustnessIters = x;
+    return smooth;
+  };
+
+  smooth.accuracy = function(x) {
+    if (!arguments.length) return x;
+    accuracy = x;
+    return smooth;
+  };
+
+  return smooth;
+};
+
+function science_stats_loessFiniteReal(values) {
+  var n = values.length,
+      i = -1;
+
+  while (++i < n) if (!isFinite(values[i])) return false;
+
+  return true;
+}
+
+function science_stats_loessStrictlyIncreasing(xval) {
+  var n = xval.length,
+      i = 0;
+
+  while (++i < n) if (xval[i - 1] >= xval[i]) return false;
+
+  return true;
+}
+
+// Compute the tricube weight function.
+// http://en.wikipedia.org/wiki/Local_regression#Weight_function
+function science_stats_loessTricube(x) {
+  return (x = 1 - x * x * x) * x * x;
+}
+
+// Given an index interval into xval that embraces a certain number of
+// points closest to xval[i-1], update the interval so that it embraces
+// the same number of points closest to xval[i], ignoring zero weights.
+function science_stats_loessUpdateBandwidthInterval(
+  xval, weights, i, bandwidthInterval) {
+
+  var left = bandwidthInterval[0],
+      right = bandwidthInterval[1];
+
+  // The right edge should be adjusted if the next point to the right
+  // is closer to xval[i] than the leftmost point of the current interval
+  var nextRight = science_stats_loessNextNonzero(weights, right);
+  if ((nextRight < xval.length) && (xval[nextRight] - xval[i]) < (xval[i] - xval[left])) {
+    var nextLeft = science_stats_loessNextNonzero(weights, left);
+    bandwidthInterval[0] = nextLeft;
+    bandwidthInterval[1] = nextRight;
+  }
+}
+
+function science_stats_loessNextNonzero(weights, i) {
+  var j = i + 1;
+  while (j < weights.length && weights[j] === 0) j++;
+  return j;
+}
+// Welford's algorithm.
+science.stats.mean = function(x) {
+  var n = x.length;
+  if (n === 0) return NaN;
+  var m = 0,
+      i = -1;
+  while (++i < n) m += (x[i] - m) / (i + 1);
+  return m;
+};
+science.stats.median = function(x) {
+  return science.stats.quantiles(x, [.5])[0];
+};
+science.stats.mode = function(x) {
+  x = x.slice().sort(science.ascending);
+  var mode,
+      n = x.length,
+      i = -1,
+      l = i,
+      last = null,
+      max = 0,
+      tmp,
+      v;
+  while (++i < n) {
+    if ((v = x[i]) !== last) {
+      if ((tmp = i - l) > max) {
+        max = tmp;
+        mode = last;
+      }
+      last = v;
+      l = i;
+    }
+  }
+  return mode;
+};
+// Uses R's quantile algorithm type=7.
+science.stats.quantiles = function(d, quantiles) {
+  d = d.slice().sort(science.ascending);
+  var n_1 = d.length - 1;
+  return quantiles.map(function(q) {
+    if (q === 0) return d[0];
+    else if (q === 1) return d[n_1];
+
+    var index = 1 + q * n_1,
+        lo = Math.floor(index),
+        h = index - lo,
+        a = d[lo - 1];
+
+    return h === 0 ? a : a + h * (d[lo] - a);
+  });
+};
+// Unbiased estimate of a sample's variance.
+// Also known as the sample variance, where the denominator is n - 1.
+science.stats.variance = function(x) {
+  var n = x.length;
+  if (n < 1) return NaN;
+  if (n === 1) return 0;
+  var mean = science.stats.mean(x),
+      i = -1,
+      s = 0;
+  while (++i < n) {
+    var v = x[i] - mean;
+    s += v * v;
+  }
+  return s / (n - 1);
+};
+})()
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/lib/science/science.stats.min.js b/static/vendor/d3-2.8.1/lib/science/science.stats.min.js
new file mode 100755 (executable)
index 0000000..fd69f13
--- /dev/null
@@ -0,0 +1 @@
+(function(){function h(a,b){var c=b+1;while(c<a.length&&a[c]===0)c++;return c}function g(a,b,c,d){var e=d[0],f=d[1],g=h(b,f);if(g<a.length&&a[g]-a[c]<a[c]-a[e]){var i=h(b,e);d[0]=i,d[1]=g}}function f(a){return(a=1-a*a*a)*a*a}function e(a){var b=a.length,c=0;while(++c<b)if(a[c-1]>=a[c])return!1;return!0}function d(a){var b=a.length,c=-1;while(++c<b)if(!isFinite(a[c]))return!1;return!0}function c(a,b,c,d){var e=[],f=a+c,g=b.length,h=-1;while(++h<g)e[h]=(a*b[h]+c*d[h])/f;return e}function b(b,c){var d=c.length;if(b>d)return null;var e=[],f=[],g={},h=0,i=0,j,k,l;while(i<b){if(h===d)return null;var m=Math.floor(Math.random()*d);if(m in g)continue;g[m]=1,h++,k=c[m],l=!0;for(j=0;j<i;j++)if(a(k,e[j])){l=!1;break}l&&(e[i]=k,f[i]=m,i++)}return e}function a(a,b){if(!a||!b||a.length!==b.length)return!1;var c=a.length,d=-1;while(++d<c)if(a[d]!==b[d])return!1;return!0}science.stats={},science.stats.bandwidth={nrd0:function(a){var b=Math.sqrt(science.stats.variance(a));(lo=Math.min(b,science.stats.iqr(a)/1.34))||(lo=b)||(lo=Math.abs(a[1]))||(lo=1);return.9*lo*Math.pow(a.length,-0.2)},nrd:function(a){var b=science.stats.iqr(a)/1.34;return 1.06*Math.min(Math.sqrt(science.stats.variance(a)),b)*Math.pow(a.length,-0.2)}},science.stats.distance={euclidean:function(a,b){var c=a.length,d=-1,e=0,f;while(++d<c)f=a[d]-b[d],e+=f*f;return Math.sqrt(e)},manhattan:function(a,b){var c=a.length,d=-1,e=0;while(++d<c)e+=Math.abs(a[d]-b[d]);return e},minkowski:function(a){return function(b,c){var d=b.length,e=-1,f=0;while(++e<d)f+=Math.pow(Math.abs(b[e]-c[e]),a);return Math.pow(f,1/a)}},chebyshev:function(a,b){var c=a.length,d=-1,e=0,f;while(++d<c)f=Math.abs(a[d]-b[d]),f>e&&(e=f);return e},hamming:function(a,b){var c=a.length,d=-1,e=0;while(++d<c)a[d]!==b[d]&&e++;return e},jaccard:function(a,b){var c=a.length,d=-1,e=0;while(++d<c)a[d]===b[d]&&e++;return e/c},braycurtis:function(a,b){var c=a.length,d=-1,e=0,f=0,g,h;while(++d<c)g=a[d],h=b[d],e+=Math.abs(g-h),f+=Math.abs(g+h);return e/f}},science.stats.erf=function(a){var b=.254829592,c=-0.284496736,d=1.421413741,e=-1.453152027,f=1.061405429,g=.3275911,h=a<0?-1:1;a<0&&(h=-1,a=-a);var i=1/(1+g*a);return h*(1-((((f*i+e)*i+d)*i+c)*i+b)*i*Math.exp(-a*a))},science.stats.phi=function(a){return.5*(1+science.stats.erf(a/Math.SQRT2))},science.stats.kernel={uniform:function(a){return a<=1&&a>=-1?.5:0},triangular:function(a){return a<=1&&a>=-1?1-Math.abs(a):0},epanechnikov:function(a){return a<=1&&a>=-1?.75*(1-a*a):0},quartic:function(a){if(a<=1&&a>=-1){var b=1-a*a;return.9375*b*b}return 0},triweight:function(a){if(a<=1&&a>=-1){var b=1-a*a;return 35/32*b*b*b}return 0},gaussian:function(a){return 1/Math.sqrt(2*Math.PI)*Math.exp(-0.5*a*a)},cosine:function(a){return a<=1&&a>=-1?Math.PI/4*Math.cos(Math.PI/2*a):0}},science.stats.kde=function(){function d(d,e){var f=c.call(this,b);return d.map(function(c){var d=-1,e=0,g=b.length;while(++d<g)e+=a((c-b[d])/f);return[c,e/f/g]})}var a=science.stats.kernel.gaussian,b=[],c=science.stats.bandwidth.nrd;d.kernel=function(b){if(!arguments.length)return a;a=b;return d},d.sample=function(a){if(!arguments.length)return b;b=a;return d},d.bandwidth=function(a){if(!arguments.length)return c;c=science.functor(a);return d};return d},science.stats.kmeans=function(){function f(f){var g=f.length,h=[],i=[],j=1,l=0,m=b(e,f),n,o,p,q,r,s,t;while(j&&l<d){p=-1;while(++p<e)i[p]=0;o=-1;while(++o<g){q=f[o],s=Infinity,p=-1;while(++p<e)r=c.call(this,m[p],q),r<s&&(s=r,t=p);i[h[o]=t]++}n=[],o=-1;while(++o<g){q=h[o],r=n[q];if(r==null)n[q]=f[o].slice();else{p=-1;while(++p<r.length)r[p]+=f[o][p]}}p=-1;while(++p<e){q=n[p],r=1/i[p],o=-1;while(++o<q.length)q[o]*=r}j=0,p=-1;while(++p<e)if(!a(n[p],m[p])){j=1;break}m=n,l++}return{assignments:h,centroids:m}}var c=science.stats.distance.euclidean,d=1e3,e=1;f.k=function(a){if(!arguments.length)return e;e=a;return f},f.distance=function(a){if(!arguments.length)return c;c=a;return f};return f},science.stats.hcluster=function(){function d(d){var e=d.length,f=[],g=[],h=[],i=[],j,k,l,m,n,o,p,q;p=-1;while(++p<e){f[p]=0,h[p]=[],q=-1;while(++q<e)h[p][q]=p===q?Infinity:a(d[p],d[q]),h[p][f[p]]>h[p][q]&&(f[p]=q)}p=-1;while(++p<e)i[p]=[],i[p][0]={left:null,right:null,dist:0,centroid:d[p],size:1,depth:0},g[p]=1;for(n=0;n<e-1;n++){j=0;for(p=0;p<e;p++)h[p][f[p]]<h[j][f[j]]&&(j=p);k=f[j],l=i[j][0],m=i[k][0],newCluster={left:l,right:m,dist:h[j][k],centroid:c(l.size,l.centroid,m.size,m.centroid),size:l.size+m.size,depth:1+Math.max(l.depth,m.depth)},i[j].splice(0,0,newCluster),g[j]+=g[k];for(q=0;q<e;q++)switch(b){case"single":h[j][q]>h[k][q]&&(h[q][j]=h[j][q]=h[k][q]);break;case"complete":h[j][q]<h[k][q]&&(h[q][j]=h[j][q]=h[k][q]);break;case"average":h[q][j]=h[j][q]=(g[j]*h[j][q]+g[k]*h[k][q])/(g[j]+g[q])}h[j][j]=Infinity;for(p=0;p<e;p++)h[p][k]=h[k][p]=Infinity;for(q=0;q<e;q++)f[q]==k&&(f[q]=j),h[j][q]<h[j][f[j]]&&(f[j]=q);o=newCluster}return o}var a=science.stats.distance.euclidean,b="simple";d.distance=function(b){if(!arguments.length)return a;a=b;return d};return d},science.stats.iqr=function(a){var b=science.stats.quantiles(a,[.25,.75]);return b[1]-b[0]},science.stats.loess=function(){function h(h,i,j){var k=h.length,l;if(k!==i.length)throw{error:"Mismatched array lengths"};if(k==0)throw{error:"At least one point required."};if(arguments.length<3){j=[],l=-1;while(++l<k)j[l]=1}d(h),d(i),d(j),e(h);if(k==1)return[i[0]];if(k==2)return[i[0],i[1]];var m=Math.floor(a*k);if(m<2)throw{error:"Bandwidth too small."};var n=[],o=[],p=[];l=-1;while(++l<k)n[l]=0,o[l]=0,p[l]=1;var q=-1;while(++q<=b){var r=[0,m-1],s;l=-1;while(++l<k){s=h[l],l>0&&g(h,j,l,r);var t=r[0],u=r[1],v=h[l]-h[t]>h[u]-h[l]?t:u,w=0,x=0,y=0,z=0,A=0,B=Math.abs(1/(h[v]-s));for(var C=t;C<=u;++C){var D=h[C],E=i[C],F=C<l?s-D:D-s,G=f(F*B)*p[C]*j[C],H=D*G;w+=G,x+=H,y+=D*H,z+=E*G,A+=E*H}var I=x/w,J=z/w,K=A/w,L=y/w,M=Math.sqrt(Math.abs(L-I*I))<c?0:(K-I*J)/(L-I*I),N=J-M*I;n[l]=M*s+N,o[l]=Math.abs(i[l]-n[l])}if(q===b)break;var O=o.slice();O.sort();var P=O[Math.floor(k/2)];if(Math.abs(P)<c)break;var Q,G;l=-1;while(++l<k)Q=o[l]/(6*P),p[l]=Q>=1?0:(G=1-Q*Q)*G}return n}var a=.3,b=2,c=1e-12;h.bandwidth=function(b){if(!arguments.length)return b;a=b;return h},h.robustnessIterations=function(a){if(!arguments.length)return a;b=a;return h},h.accuracy=function(a){if(!arguments.length)return a;c=a;return h};return h},science.stats.mean=function(a){var b=a.length;if(b===0)return NaN;var c=0,d=-1;while(++d<b)c+=(a[d]-c)/(d+1);return c},science.stats.median=function(a){return science.stats.quantiles(a,[.5])[0]},science.stats.mode=function(a){a=a.slice().sort(science.ascending);var b,c=a.length,d=-1,e=d,f=null,g=0,h,i;while(++d<c)(i=a[d])!==f&&((h=d-e)>g&&(g=h,b=f),f=i,e=d);return b},science.stats.quantiles=function(a,b){a=a.slice().sort(science.ascending);var c=a.length-1;return b.map(function(b){if(b===0)return a[0];if(b===1)return a[c];var d=1+b*c,e=Math.floor(d),f=d-e,g=a[e-1];return f===0?g:g+f*(a[e]-g)})},science.stats.variance=function(a){var b=a.length;if(b<1)return NaN;if(b===1)return 0;var c=science.stats.mean(a),d=-1,e=0;while(++d<b){var f=a[d]-c;e+=f*f}return e/(b-1)}})()
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/lib/sizzle/LICENSE b/static/vendor/d3-2.8.1/lib/sizzle/LICENSE
new file mode 100755 (executable)
index 0000000..8d4f886
--- /dev/null
@@ -0,0 +1,24 @@
+Copyright (c) 2009, John Resig
+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.
+    * Neither the name of the <organization> nor the
+      names of its contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY John Resig ''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 <copyright holder> 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/static/vendor/d3-2.8.1/lib/sizzle/sizzle.js b/static/vendor/d3-2.8.1/lib/sizzle/sizzle.js
new file mode 100755 (executable)
index 0000000..e4597dc
--- /dev/null
@@ -0,0 +1,1376 @@
+/*!
+ * Sizzle CSS Selector Engine
+ *  Copyright 2011, The Dojo Foundation
+ *  Released under the MIT, BSD, and GPL Licenses.
+ *  More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+       done = 0,
+       toString = Object.prototype.toString,
+       hasDuplicate = false,
+       baseHasDuplicate = true;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+//   Thus far that includes Google Chrome.
+[0, 0].sort(function() {
+       baseHasDuplicate = false;
+       return 0;
+});
+
+var Sizzle = function( selector, context, results, seed ) {
+       results = results || [];
+       context = context || document;
+
+       var origContext = context;
+
+       if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+               return [];
+       }
+       
+       if ( !selector || typeof selector !== "string" ) {
+               return results;
+       }
+
+       var m, set, checkSet, extra, ret, cur, pop, i,
+               prune = true,
+               contextXML = Sizzle.isXML( context ),
+               parts = [],
+               soFar = selector;
+       
+       // Reset the position of the chunker regexp (start from head)
+       do {
+               chunker.exec( "" );
+               m = chunker.exec( soFar );
+
+               if ( m ) {
+                       soFar = m[3];
+               
+                       parts.push( m[1] );
+               
+                       if ( m[2] ) {
+                               extra = m[3];
+                               break;
+                       }
+               }
+       } while ( m );
+
+       if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
+               if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+                       set = posProcess( parts[0] + parts[1], context );
+
+               } else {
+                       set = Expr.relative[ parts[0] ] ?
+                               [ context ] :
+                               Sizzle( parts.shift(), context );
+
+                       while ( parts.length ) {
+                               selector = parts.shift();
+
+                               if ( Expr.relative[ selector ] ) {
+                                       selector += parts.shift();
+                               }
+                               
+                               set = posProcess( selector, set );
+                       }
+               }
+
+       } else {
+               // Take a shortcut and set the context if the root selector is an ID
+               // (but not if it'll be faster if the inner selector is an ID)
+               if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+                               Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
+                       ret = Sizzle.find( parts.shift(), context, contextXML );
+                       context = ret.expr ?
+                               Sizzle.filter( ret.expr, ret.set )[0] :
+                               ret.set[0];
+               }
+
+               if ( context ) {
+                       ret = seed ?
+                               { expr: parts.pop(), set: makeArray(seed) } :
+                               Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+
+                       set = ret.expr ?
+                               Sizzle.filter( ret.expr, ret.set ) :
+                               ret.set;
+
+                       if ( parts.length > 0 ) {
+                               checkSet = makeArray( set );
+
+                       } else {
+                               prune = false;
+                       }
+
+                       while ( parts.length ) {
+                               cur = parts.pop();
+                               pop = cur;
+
+                               if ( !Expr.relative[ cur ] ) {
+                                       cur = "";
+                               } else {
+                                       pop = parts.pop();
+                               }
+
+                               if ( pop == null ) {
+                                       pop = context;
+                               }
+
+                               Expr.relative[ cur ]( checkSet, pop, contextXML );
+                       }
+
+               } else {
+                       checkSet = parts = [];
+               }
+       }
+
+       if ( !checkSet ) {
+               checkSet = set;
+       }
+
+       if ( !checkSet ) {
+               Sizzle.error( cur || selector );
+       }
+
+       if ( toString.call(checkSet) === "[object Array]" ) {
+               if ( !prune ) {
+                       results.push.apply( results, checkSet );
+
+               } else if ( context && context.nodeType === 1 ) {
+                       for ( i = 0; checkSet[i] != null; i++ ) {
+                               if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+                                       results.push( set[i] );
+                               }
+                       }
+
+               } else {
+                       for ( i = 0; checkSet[i] != null; i++ ) {
+                               if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+                                       results.push( set[i] );
+                               }
+                       }
+               }
+
+       } else {
+               makeArray( checkSet, results );
+       }
+
+       if ( extra ) {
+               Sizzle( extra, origContext, results, seed );
+               Sizzle.uniqueSort( results );
+       }
+
+       return results;
+};
+
+Sizzle.uniqueSort = function( results ) {
+       if ( sortOrder ) {
+               hasDuplicate = baseHasDuplicate;
+               results.sort( sortOrder );
+
+               if ( hasDuplicate ) {
+                       for ( var i = 1; i < results.length; i++ ) {
+                               if ( results[i] === results[ i - 1 ] ) {
+                                       results.splice( i--, 1 );
+                               }
+                       }
+               }
+       }
+
+       return results;
+};
+
+Sizzle.matches = function( expr, set ) {
+       return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+       return Sizzle( expr, null, null, [node] ).length > 0;
+};
+
+Sizzle.find = function( expr, context, isXML ) {
+       var set;
+
+       if ( !expr ) {
+               return [];
+       }
+
+       for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+               var match,
+                       type = Expr.order[i];
+               
+               if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+                       var left = match[1];
+                       match.splice( 1, 1 );
+
+                       if ( left.substr( left.length - 1 ) !== "\\" ) {
+                               match[1] = (match[1] || "").replace(/\\/g, "");
+                               set = Expr.find[ type ]( match, context, isXML );
+
+                               if ( set != null ) {
+                                       expr = expr.replace( Expr.match[ type ], "" );
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       if ( !set ) {
+               set = typeof context.getElementsByTagName !== "undefined" ?
+                       context.getElementsByTagName( "*" ) :
+                       [];
+       }
+
+       return { set: set, expr: expr };
+};
+
+Sizzle.filter = function( expr, set, inplace, not ) {
+       var match, anyFound,
+               old = expr,
+               result = [],
+               curLoop = set,
+               isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+
+       while ( expr && set.length ) {
+               for ( var type in Expr.filter ) {
+                       if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+                               var found, item,
+                                       filter = Expr.filter[ type ],
+                                       left = match[1];
+
+                               anyFound = false;
+
+                               match.splice(1,1);
+
+                               if ( left.substr( left.length - 1 ) === "\\" ) {
+                                       continue;
+                               }
+
+                               if ( curLoop === result ) {
+                                       result = [];
+                               }
+
+                               if ( Expr.preFilter[ type ] ) {
+                                       match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+                                       if ( !match ) {
+                                               anyFound = found = true;
+
+                                       } else if ( match === true ) {
+                                               continue;
+                                       }
+                               }
+
+                               if ( match ) {
+                                       for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+                                               if ( item ) {
+                                                       found = filter( item, match, i, curLoop );
+                                                       var pass = not ^ !!found;
+
+                                                       if ( inplace && found != null ) {
+                                                               if ( pass ) {
+                                                                       anyFound = true;
+
+                                                               } else {
+                                                                       curLoop[i] = false;
+                                                               }
+
+                                                       } else if ( pass ) {
+                                                               result.push( item );
+                                                               anyFound = true;
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               if ( found !== undefined ) {
+                                       if ( !inplace ) {
+                                               curLoop = result;
+                                       }
+
+                                       expr = expr.replace( Expr.match[ type ], "" );
+
+                                       if ( !anyFound ) {
+                                               return [];
+                                       }
+
+                                       break;
+                               }
+                       }
+               }
+
+               // Improper expression
+               if ( expr === old ) {
+                       if ( anyFound == null ) {
+                               Sizzle.error( expr );
+
+                       } else {
+                               break;
+                       }
+               }
+
+               old = expr;
+       }
+
+       return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+       throw "Syntax error, unrecognized expression: " + msg;
+};
+
+var Expr = Sizzle.selectors = {
+       order: [ "ID", "NAME", "TAG" ],
+
+       match: {
+               ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+               CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+               NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+               ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
+               TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+               CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
+               POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+               PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+       },
+
+       leftMatch: {},
+
+       attrMap: {
+               "class": "className",
+               "for": "htmlFor"
+       },
+
+       attrHandle: {
+               href: function( elem ) {
+                       return elem.getAttribute( "href" );
+               }
+       },
+
+       relative: {
+               "+": function(checkSet, part){
+                       var isPartStr = typeof part === "string",
+                               isTag = isPartStr && !/\W/.test( part ),
+                               isPartStrNotTag = isPartStr && !isTag;
+
+                       if ( isTag ) {
+                               part = part.toLowerCase();
+                       }
+
+                       for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+                               if ( (elem = checkSet[i]) ) {
+                                       while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+                                       checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+                                               elem || false :
+                                               elem === part;
+                               }
+                       }
+
+                       if ( isPartStrNotTag ) {
+                               Sizzle.filter( part, checkSet, true );
+                       }
+               },
+
+               ">": function( checkSet, part ) {
+                       var elem,
+                               isPartStr = typeof part === "string",
+                               i = 0,
+                               l = checkSet.length;
+
+                       if ( isPartStr && !/\W/.test( part ) ) {
+                               part = part.toLowerCase();
+
+                               for ( ; i < l; i++ ) {
+                                       elem = checkSet[i];
+
+                                       if ( elem ) {
+                                               var parent = elem.parentNode;
+                                               checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+                                       }
+                               }
+
+                       } else {
+                               for ( ; i < l; i++ ) {
+                                       elem = checkSet[i];
+
+                                       if ( elem ) {
+                                               checkSet[i] = isPartStr ?
+                                                       elem.parentNode :
+                                                       elem.parentNode === part;
+                                       }
+                               }
+
+                               if ( isPartStr ) {
+                                       Sizzle.filter( part, checkSet, true );
+                               }
+                       }
+               },
+
+               "": function(checkSet, part, isXML){
+                       var nodeCheck,
+                               doneName = done++,
+                               checkFn = dirCheck;
+
+                       if ( typeof part === "string" && !/\W/.test(part) ) {
+                               part = part.toLowerCase();
+                               nodeCheck = part;
+                               checkFn = dirNodeCheck;
+                       }
+
+                       checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
+               },
+
+               "~": function( checkSet, part, isXML ) {
+                       var nodeCheck,
+                               doneName = done++,
+                               checkFn = dirCheck;
+
+                       if ( typeof part === "string" && !/\W/.test( part ) ) {
+                               part = part.toLowerCase();
+                               nodeCheck = part;
+                               checkFn = dirNodeCheck;
+                       }
+
+                       checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
+               }
+       },
+
+       find: {
+               ID: function( match, context, isXML ) {
+                       if ( typeof context.getElementById !== "undefined" && !isXML ) {
+                               var m = context.getElementById(match[1]);
+                               // Check parentNode to catch when Blackberry 4.6 returns
+                               // nodes that are no longer in the document #6963
+                               return m && m.parentNode ? [m] : [];
+                       }
+               },
+
+               NAME: function( match, context ) {
+                       if ( typeof context.getElementsByName !== "undefined" ) {
+                               var ret = [],
+                                       results = context.getElementsByName( match[1] );
+
+                               for ( var i = 0, l = results.length; i < l; i++ ) {
+                                       if ( results[i].getAttribute("name") === match[1] ) {
+                                               ret.push( results[i] );
+                                       }
+                               }
+
+                               return ret.length === 0 ? null : ret;
+                       }
+               },
+
+               TAG: function( match, context ) {
+                       if ( typeof context.getElementsByTagName !== "undefined" ) {
+                               return context.getElementsByTagName( match[1] );
+                       }
+               }
+       },
+       preFilter: {
+               CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+                       match = " " + match[1].replace(/\\/g, "") + " ";
+
+                       if ( isXML ) {
+                               return match;
+                       }
+
+                       for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+                               if ( elem ) {
+                                       if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
+                                               if ( !inplace ) {
+                                                       result.push( elem );
+                                               }
+
+                                       } else if ( inplace ) {
+                                               curLoop[i] = false;
+                                       }
+                               }
+                       }
+
+                       return false;
+               },
+
+               ID: function( match ) {
+                       return match[1].replace(/\\/g, "");
+               },
+
+               TAG: function( match, curLoop ) {
+                       return match[1].toLowerCase();
+               },
+
+               CHILD: function( match ) {
+                       if ( match[1] === "nth" ) {
+                               if ( !match[2] ) {
+                                       Sizzle.error( match[0] );
+                               }
+
+                               match[2] = match[2].replace(/^\+|\s*/g, '');
+
+                               // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+                               var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
+                                       match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+                                       !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+                               // calculate the numbers (first)n+(last) including if they are negative
+                               match[2] = (test[1] + (test[2] || 1)) - 0;
+                               match[3] = test[3] - 0;
+                       }
+                       else if ( match[2] ) {
+                               Sizzle.error( match[0] );
+                       }
+
+                       // TODO: Move to normal caching system
+                       match[0] = done++;
+
+                       return match;
+               },
+
+               ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+                       var name = match[1] = match[1].replace(/\\/g, "");
+                       
+                       if ( !isXML && Expr.attrMap[name] ) {
+                               match[1] = Expr.attrMap[name];
+                       }
+
+                       // Handle if an un-quoted value was used
+                       match[4] = ( match[4] || match[5] || "" ).replace(/\\/g, "");
+
+                       if ( match[2] === "~=" ) {
+                               match[4] = " " + match[4] + " ";
+                       }
+
+                       return match;
+               },
+
+               PSEUDO: function( match, curLoop, inplace, result, not ) {
+                       if ( match[1] === "not" ) {
+                               // If we're dealing with a complex expression, or a simple one
+                               if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+                                       match[3] = Sizzle(match[3], null, null, curLoop);
+
+                               } else {
+                                       var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
+                                       if ( !inplace ) {
+                                               result.push.apply( result, ret );
+                                       }
+
+                                       return false;
+                               }
+
+                       } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+                               return true;
+                       }
+                       
+                       return match;
+               },
+
+               POS: function( match ) {
+                       match.unshift( true );
+
+                       return match;
+               }
+       },
+       
+       filters: {
+               enabled: function( elem ) {
+                       return elem.disabled === false && elem.type !== "hidden";
+               },
+
+               disabled: function( elem ) {
+                       return elem.disabled === true;
+               },
+
+               checked: function( elem ) {
+                       return elem.checked === true;
+               },
+               
+               selected: function( elem ) {
+                       // Accessing this property makes selected-by-default
+                       // options in Safari work properly
+                       elem.parentNode.selectedIndex;
+                       
+                       return elem.selected === true;
+               },
+
+               parent: function( elem ) {
+                       return !!elem.firstChild;
+               },
+
+               empty: function( elem ) {
+                       return !elem.firstChild;
+               },
+
+               has: function( elem, i, match ) {
+                       return !!Sizzle( match[3], elem ).length;
+               },
+
+               header: function( elem ) {
+                       return (/h\d/i).test( elem.nodeName );
+               },
+
+               text: function( elem ) {
+                       return "text" === elem.type;
+               },
+               radio: function( elem ) {
+                       return "radio" === elem.type;
+               },
+
+               checkbox: function( elem ) {
+                       return "checkbox" === elem.type;
+               },
+
+               file: function( elem ) {
+                       return "file" === elem.type;
+               },
+               password: function( elem ) {
+                       return "password" === elem.type;
+               },
+
+               submit: function( elem ) {
+                       return "submit" === elem.type;
+               },
+
+               image: function( elem ) {
+                       return "image" === elem.type;
+               },
+
+               reset: function( elem ) {
+                       return "reset" === elem.type;
+               },
+
+               button: function( elem ) {
+                       return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
+               },
+
+               input: function( elem ) {
+                       return (/input|select|textarea|button/i).test( elem.nodeName );
+               }
+       },
+       setFilters: {
+               first: function( elem, i ) {
+                       return i === 0;
+               },
+
+               last: function( elem, i, match, array ) {
+                       return i === array.length - 1;
+               },
+
+               even: function( elem, i ) {
+                       return i % 2 === 0;
+               },
+
+               odd: function( elem, i ) {
+                       return i % 2 === 1;
+               },
+
+               lt: function( elem, i, match ) {
+                       return i < match[3] - 0;
+               },
+
+               gt: function( elem, i, match ) {
+                       return i > match[3] - 0;
+               },
+
+               nth: function( elem, i, match ) {
+                       return match[3] - 0 === i;
+               },
+
+               eq: function( elem, i, match ) {
+                       return match[3] - 0 === i;
+               }
+       },
+       filter: {
+               PSEUDO: function( elem, match, i, array ) {
+                       var name = match[1],
+                               filter = Expr.filters[ name ];
+
+                       if ( filter ) {
+                               return filter( elem, i, match, array );
+
+                       } else if ( name === "contains" ) {
+                               return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
+                       } else if ( name === "not" ) {
+                               var not = match[3];
+
+                               for ( var j = 0, l = not.length; j < l; j++ ) {
+                                       if ( not[j] === elem ) {
+                                               return false;
+                                       }
+                               }
+
+                               return true;
+
+                       } else {
+                               Sizzle.error( name );
+                       }
+               },
+
+               CHILD: function( elem, match ) {
+                       var type = match[1],
+                               node = elem;
+
+                       switch ( type ) {
+                               case "only":
+                               case "first":
+                                       while ( (node = node.previousSibling) )  {
+                                               if ( node.nodeType === 1 ) { 
+                                                       return false; 
+                                               }
+                                       }
+
+                                       if ( type === "first" ) { 
+                                               return true; 
+                                       }
+
+                                       node = elem;
+
+                               case "last":
+                                       while ( (node = node.nextSibling) )      {
+                                               if ( node.nodeType === 1 ) { 
+                                                       return false; 
+                                               }
+                                       }
+
+                                       return true;
+
+                               case "nth":
+                                       var first = match[2],
+                                               last = match[3];
+
+                                       if ( first === 1 && last === 0 ) {
+                                               return true;
+                                       }
+                                       
+                                       var doneName = match[0],
+                                               parent = elem.parentNode;
+       
+                                       if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+                                               var count = 0;
+                                               
+                                               for ( node = parent.firstChild; node; node = node.nextSibling ) {
+                                                       if ( node.nodeType === 1 ) {
+                                                               node.nodeIndex = ++count;
+                                                       }
+                                               } 
+
+                                               parent.sizcache = doneName;
+                                       }
+                                       
+                                       var diff = elem.nodeIndex - last;
+
+                                       if ( first === 0 ) {
+                                               return diff === 0;
+
+                                       } else {
+                                               return ( diff % first === 0 && diff / first >= 0 );
+                                       }
+                       }
+               },
+
+               ID: function( elem, match ) {
+                       return elem.nodeType === 1 && elem.getAttribute("id") === match;
+               },
+
+               TAG: function( elem, match ) {
+                       return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
+               },
+               
+               CLASS: function( elem, match ) {
+                       return (" " + (elem.className || elem.getAttribute("class")) + " ")
+                               .indexOf( match ) > -1;
+               },
+
+               ATTR: function( elem, match ) {
+                       var name = match[1],
+                               result = Expr.attrHandle[ name ] ?
+                                       Expr.attrHandle[ name ]( elem ) :
+                                       elem[ name ] != null ?
+                                               elem[ name ] :
+                                               elem.getAttribute( name ),
+                               value = result + "",
+                               type = match[2],
+                               check = match[4];
+
+                       return result == null ?
+                               type === "!=" :
+                               type === "=" ?
+                               value === check :
+                               type === "*=" ?
+                               value.indexOf(check) >= 0 :
+                               type === "~=" ?
+                               (" " + value + " ").indexOf(check) >= 0 :
+                               !check ?
+                               value && result !== false :
+                               type === "!=" ?
+                               value !== check :
+                               type === "^=" ?
+                               value.indexOf(check) === 0 :
+                               type === "$=" ?
+                               value.substr(value.length - check.length) === check :
+                               type === "|=" ?
+                               value === check || value.substr(0, check.length + 1) === check + "-" :
+                               false;
+               },
+
+               POS: function( elem, match, i, array ) {
+                       var name = match[2],
+                               filter = Expr.setFilters[ name ];
+
+                       if ( filter ) {
+                               return filter( elem, i, match, array );
+                       }
+               }
+       }
+};
+
+var origPOS = Expr.match.POS,
+       fescape = function(all, num){
+               return "\\" + (num - 0 + 1);
+       };
+
+for ( var type in Expr.match ) {
+       Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+       Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+
+var makeArray = function( array, results ) {
+       array = Array.prototype.slice.call( array, 0 );
+
+       if ( results ) {
+               results.push.apply( results, array );
+               return results;
+       }
+       
+       return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+       Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch( e ) {
+       makeArray = function( array, results ) {
+               var i = 0,
+                       ret = results || [];
+
+               if ( toString.call(array) === "[object Array]" ) {
+                       Array.prototype.push.apply( ret, array );
+
+               } else {
+                       if ( typeof array.length === "number" ) {
+                               for ( var l = array.length; i < l; i++ ) {
+                                       ret.push( array[i] );
+                               }
+
+                       } else {
+                               for ( ; array[i]; i++ ) {
+                                       ret.push( array[i] );
+                               }
+                       }
+               }
+
+               return ret;
+       };
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+       sortOrder = function( a, b ) {
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+               }
+
+               if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+                       return a.compareDocumentPosition ? -1 : 1;
+               }
+
+               return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+       };
+
+} else {
+       sortOrder = function( a, b ) {
+               var al, bl,
+                       ap = [],
+                       bp = [],
+                       aup = a.parentNode,
+                       bup = b.parentNode,
+                       cur = aup;
+
+               // The nodes are identical, we can exit early
+               if ( a === b ) {
+                       hasDuplicate = true;
+                       return 0;
+
+               // If the nodes are siblings (or identical) we can do a quick check
+               } else if ( aup === bup ) {
+                       return siblingCheck( a, b );
+
+               // If no parents were found then the nodes are disconnected
+               } else if ( !aup ) {
+                       return -1;
+
+               } else if ( !bup ) {
+                       return 1;
+               }
+
+               // Otherwise they're somewhere else in the tree so we need
+               // to build up a full list of the parentNodes for comparison
+               while ( cur ) {
+                       ap.unshift( cur );
+                       cur = cur.parentNode;
+               }
+
+               cur = bup;
+
+               while ( cur ) {
+                       bp.unshift( cur );
+                       cur = cur.parentNode;
+               }
+
+               al = ap.length;
+               bl = bp.length;
+
+               // Start walking down the tree looking for a discrepancy
+               for ( var i = 0; i < al && i < bl; i++ ) {
+                       if ( ap[i] !== bp[i] ) {
+                               return siblingCheck( ap[i], bp[i] );
+                       }
+               }
+
+               // We ended someplace up the tree so do a sibling check
+               return i === al ?
+                       siblingCheck( a, bp[i], -1 ) :
+                       siblingCheck( ap[i], b, 1 );
+       };
+
+       siblingCheck = function( a, b, ret ) {
+               if ( a === b ) {
+                       return ret;
+               }
+
+               var cur = a.nextSibling;
+
+               while ( cur ) {
+                       if ( cur === b ) {
+                               return -1;
+                       }
+
+                       cur = cur.nextSibling;
+               }
+
+               return 1;
+       };
+}
+
+// Utility function for retreiving the text value of an array of DOM nodes
+Sizzle.getText = function( elems ) {
+       var ret = "", elem;
+
+       for ( var i = 0; elems[i]; i++ ) {
+               elem = elems[i];
+
+               // Get the text from text nodes and CDATA nodes
+               if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+                       ret += elem.nodeValue;
+
+               // Traverse everything else, except comment nodes
+               } else if ( elem.nodeType !== 8 ) {
+                       ret += Sizzle.getText( elem.childNodes );
+               }
+       }
+
+       return ret;
+};
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+       // We're going to inject a fake input element with a specified name
+       var form = document.createElement("div"),
+               id = "script" + (new Date()).getTime(),
+               root = document.documentElement;
+
+       form.innerHTML = "<a name='" + id + "'/>";
+
+       // Inject it into the root element, check its status, and remove it quickly
+       root.insertBefore( form, root.firstChild );
+
+       // The workaround has to do additional checks after a getElementById
+       // Which slows things down for other browsers (hence the branching)
+       if ( document.getElementById( id ) ) {
+               Expr.find.ID = function( match, context, isXML ) {
+                       if ( typeof context.getElementById !== "undefined" && !isXML ) {
+                               var m = context.getElementById(match[1]);
+
+                               return m ?
+                                       m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+                                               [m] :
+                                               undefined :
+                                       [];
+                       }
+               };
+
+               Expr.filter.ID = function( elem, match ) {
+                       var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
+                       return elem.nodeType === 1 && node && node.nodeValue === match;
+               };
+       }
+
+       root.removeChild( form );
+
+       // release memory in IE
+       root = form = null;
+})();
+
+(function(){
+       // Check to see if the browser returns only elements
+       // when doing getElementsByTagName("*")
+
+       // Create a fake element
+       var div = document.createElement("div");
+       div.appendChild( document.createComment("") );
+
+       // Make sure no comments are found
+       if ( div.getElementsByTagName("*").length > 0 ) {
+               Expr.find.TAG = function( match, context ) {
+                       var results = context.getElementsByTagName( match[1] );
+
+                       // Filter out possible comments
+                       if ( match[1] === "*" ) {
+                               var tmp = [];
+
+                               for ( var i = 0; results[i]; i++ ) {
+                                       if ( results[i].nodeType === 1 ) {
+                                               tmp.push( results[i] );
+                                       }
+                               }
+
+                               results = tmp;
+                       }
+
+                       return results;
+               };
+       }
+
+       // Check to see if an attribute returns normalized href attributes
+       div.innerHTML = "<a href='#'></a>";
+
+       if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+                       div.firstChild.getAttribute("href") !== "#" ) {
+
+               Expr.attrHandle.href = function( elem ) {
+                       return elem.getAttribute( "href", 2 );
+               };
+       }
+
+       // release memory in IE
+       div = null;
+})();
+
+if ( document.querySelectorAll ) {
+       (function(){
+               var oldSizzle = Sizzle,
+                       div = document.createElement("div"),
+                       id = "__sizzle__";
+
+               div.innerHTML = "<p class='TEST'></p>";
+
+               // Safari can't handle uppercase or unicode characters when
+               // in quirks mode.
+               if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+                       return;
+               }
+       
+               Sizzle = function( query, context, extra, seed ) {
+                       context = context || document;
+
+                       // Only use querySelectorAll on non-XML documents
+                       // (ID selectors don't work in non-HTML documents)
+                       if ( !seed && !Sizzle.isXML(context) ) {
+                               // See if we find a selector to speed up
+                               var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
+                               
+                               if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
+                                       // Speed-up: Sizzle("TAG")
+                                       if ( match[1] ) {
+                                               return makeArray( context.getElementsByTagName( query ), extra );
+                                       
+                                       // Speed-up: Sizzle(".CLASS")
+                                       } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
+                                               return makeArray( context.getElementsByClassName( match[2] ), extra );
+                                       }
+                               }
+                               
+                               if ( context.nodeType === 9 ) {
+                                       // Speed-up: Sizzle("body")
+                                       // The body element only exists once, optimize finding it
+                                       if ( query === "body" && context.body ) {
+                                               return makeArray( [ context.body ], extra );
+                                               
+                                       // Speed-up: Sizzle("#ID")
+                                       } else if ( match && match[3] ) {
+                                               var elem = context.getElementById( match[3] );
+
+                                               // Check parentNode to catch when Blackberry 4.6 returns
+                                               // nodes that are no longer in the document #6963
+                                               if ( elem && elem.parentNode ) {
+                                                       // Handle the case where IE and Opera return items
+                                                       // by name instead of ID
+                                                       if ( elem.id === match[3] ) {
+                                                               return makeArray( [ elem ], extra );
+                                                       }
+                                                       
+                                               } else {
+                                                       return makeArray( [], extra );
+                                               }
+                                       }
+                                       
+                                       try {
+                                               return makeArray( context.querySelectorAll(query), extra );
+                                       } catch(qsaError) {}
+
+                               // qSA works strangely on Element-rooted queries
+                               // We can work around this by specifying an extra ID on the root
+                               // and working up from there (Thanks to Andrew Dupont for the technique)
+                               // IE 8 doesn't work on object elements
+                               } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+                                       var old = context.getAttribute( "id" ),
+                                               nid = old || id,
+                                               hasParent = context.parentNode,
+                                               relativeHierarchySelector = /^\s*[+~]/.test( query );
+
+                                       if ( !old ) {
+                                               context.setAttribute( "id", nid );
+                                       } else {
+                                               nid = nid.replace( /'/g, "\\$&" );
+                                       }
+                                       if ( relativeHierarchySelector && hasParent ) {
+                                               context = context.parentNode;
+                                       }
+
+                                       try {
+                                               if ( !relativeHierarchySelector || hasParent ) {
+                                                       return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
+                                               }
+
+                                       } catch(pseudoError) {
+                                       } finally {
+                                               if ( !old ) {
+                                                       context.removeAttribute( "id" );
+                                               }
+                                       }
+                               }
+                       }
+               
+                       return oldSizzle(query, context, extra, seed);
+               };
+
+               for ( var prop in oldSizzle ) {
+                       Sizzle[ prop ] = oldSizzle[ prop ];
+               }
+
+               // release memory in IE
+               div = null;
+       })();
+}
+
+(function(){
+       var html = document.documentElement,
+               matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,
+               pseudoWorks = false;
+
+       try {
+               // This should fail with an exception
+               // Gecko does not error, returns false instead
+               matches.call( document.documentElement, "[test!='']:sizzle" );
+       
+       } catch( pseudoError ) {
+               pseudoWorks = true;
+       }
+
+       if ( matches ) {
+               Sizzle.matchesSelector = function( node, expr ) {
+                       // Make sure that attribute selectors are quoted
+                       expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+                       if ( !Sizzle.isXML( node ) ) {
+                               try { 
+                                       if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+                                               return matches.call( node, expr );
+                                       }
+                               } catch(e) {}
+                       }
+
+                       return Sizzle(expr, null, null, [node]).length > 0;
+               };
+       }
+})();
+
+(function(){
+       var div = document.createElement("div");
+
+       div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+       // Opera can't find a second classname (in 9.6)
+       // Also, make sure that getElementsByClassName actually exists
+       if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+               return;
+       }
+
+       // Safari caches class attributes, doesn't catch changes (in 3.2)
+       div.lastChild.className = "e";
+
+       if ( div.getElementsByClassName("e").length === 1 ) {
+               return;
+       }
+       
+       Expr.order.splice(1, 0, "CLASS");
+       Expr.find.CLASS = function( match, context, isXML ) {
+               if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+                       return context.getElementsByClassName(match[1]);
+               }
+       };
+
+       // release memory in IE
+       div = null;
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+       for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+               var elem = checkSet[i];
+
+               if ( elem ) {
+                       var match = false;
+
+                       elem = elem[dir];
+
+                       while ( elem ) {
+                               if ( elem.sizcache === doneName ) {
+                                       match = checkSet[elem.sizset];
+                                       break;
+                               }
+
+                               if ( elem.nodeType === 1 && !isXML ){
+                                       elem.sizcache = doneName;
+                                       elem.sizset = i;
+                               }
+
+                               if ( elem.nodeName.toLowerCase() === cur ) {
+                                       match = elem;
+                                       break;
+                               }
+
+                               elem = elem[dir];
+                       }
+
+                       checkSet[i] = match;
+               }
+       }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+       for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+               var elem = checkSet[i];
+
+               if ( elem ) {
+                       var match = false;
+                       
+                       elem = elem[dir];
+
+                       while ( elem ) {
+                               if ( elem.sizcache === doneName ) {
+                                       match = checkSet[elem.sizset];
+                                       break;
+                               }
+
+                               if ( elem.nodeType === 1 ) {
+                                       if ( !isXML ) {
+                                               elem.sizcache = doneName;
+                                               elem.sizset = i;
+                                       }
+
+                                       if ( typeof cur !== "string" ) {
+                                               if ( elem === cur ) {
+                                                       match = true;
+                                                       break;
+                                               }
+
+                                       } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+                                               match = elem;
+                                               break;
+                                       }
+                               }
+
+                               elem = elem[dir];
+                       }
+
+                       checkSet[i] = match;
+               }
+       }
+}
+
+if ( document.documentElement.contains ) {
+       Sizzle.contains = function( a, b ) {
+               return a !== b && (a.contains ? a.contains(b) : true);
+       };
+
+} else if ( document.documentElement.compareDocumentPosition ) {
+       Sizzle.contains = function( a, b ) {
+               return !!(a.compareDocumentPosition(b) & 16);
+       };
+
+} else {
+       Sizzle.contains = function() {
+               return false;
+       };
+}
+
+Sizzle.isXML = function( elem ) {
+       // documentElement is verified for cases where it doesn't yet exist
+       // (such as loading iframes in IE - #4833) 
+       var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
+       return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function( selector, context ) {
+       var match,
+               tmpSet = [],
+               later = "",
+               root = context.nodeType ? [context] : context;
+
+       // Position selectors must be done after the filter
+       // And so must :not(positional) so we move all PSEUDOs to the end
+       while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+               later += match[0];
+               selector = selector.replace( Expr.match.PSEUDO, "" );
+       }
+
+       selector = Expr.relative[selector] ? selector + "*" : selector;
+
+       for ( var i = 0, l = root.length; i < l; i++ ) {
+               Sizzle( selector, root[i], tmpSet );
+       }
+
+       return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+
+window.Sizzle = Sizzle;
+
+})();
diff --git a/static/vendor/d3-2.8.1/lib/sizzle/sizzle.min.js b/static/vendor/d3-2.8.1/lib/sizzle/sizzle.min.js
new file mode 100755 (executable)
index 0000000..1f1b39d
--- /dev/null
@@ -0,0 +1,28 @@
+(function(){function y(a,b,c,d,e,f){e=0;for(var h=d.length;e<h;e++){var g=d[e];if(g){var l=false;for(g=g[a];g;){if(g.sizcache===c){l=d[g.sizset];break}if(g.nodeType===1&&!f){g.sizcache=c;g.sizset=e}if(g.nodeName.toLowerCase()===b){l=g;break}g=g[a]}d[e]=l}}}function z(a,b,c,d,e,f){e=0;for(var h=d.length;e<h;e++){var g=d[e];if(g){var l=false;for(g=g[a];g;){if(g.sizcache===c){l=d[g.sizset];break}if(g.nodeType===1){if(!f){g.sizcache=c;g.sizset=e}if(typeof b!=="string"){if(g===b){l=true;break}}else if(i.filter(b,
+[g]).length>0){l=g;break}}g=g[a]}d[e]=l}}}var w=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,x=0,A=Object.prototype.toString,s=false,B=true;[0,0].sort(function(){B=false;return 0});var i=function(a,b,c,d){c=c||[];var e=b=b||document;if(b.nodeType!==1&&b.nodeType!==9)return[];if(!a||typeof a!=="string")return c;var f,h,g,l,p,n=true,m=i.isXML(b),k=[],t=a;do{w.exec("");if(f=w.exec(t)){t=f[3];k.push(f[1]);if(f[2]){l=
+f[3];break}}}while(f);if(k.length>1&&E.exec(a))if(k.length===2&&j.relative[k[0]])h=C(k[0]+k[1],b);else for(h=j.relative[k[0]]?[b]:i(k.shift(),b);k.length;){a=k.shift();if(j.relative[a])a+=k.shift();h=C(a,h)}else{if(!d&&k.length>1&&b.nodeType===9&&!m&&j.match.ID.test(k[0])&&!j.match.ID.test(k[k.length-1])){f=i.find(k.shift(),b,m);b=f.expr?i.filter(f.expr,f.set)[0]:f.set[0]}if(b){f=d?{expr:k.pop(),set:o(d)}:i.find(k.pop(),k.length===1&&(k[0]==="~"||k[0]==="+")&&b.parentNode?b.parentNode:b,m);h=f.expr?
+i.filter(f.expr,f.set):f.set;if(k.length>0)g=o(h);else n=false;for(;k.length;){f=p=k.pop();if(j.relative[p])f=k.pop();else p="";if(f==null)f=b;j.relative[p](g,f,m)}}else g=[]}g||(g=h);g||i.error(p||a);if(A.call(g)==="[object Array]")if(n)if(b&&b.nodeType===1)for(a=0;g[a]!=null;a++){if(g[a]&&(g[a]===true||g[a].nodeType===1&&i.contains(b,g[a])))c.push(h[a])}else for(a=0;g[a]!=null;a++)g[a]&&g[a].nodeType===1&&c.push(h[a]);else c.push.apply(c,g);else o(g,c);if(l){i(l,e,c,d);i.uniqueSort(c)}return c};
+i.uniqueSort=function(a){if(u){s=B;a.sort(u);if(s)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a};i.matches=function(a,b){return i(a,null,null,b)};i.matchesSelector=function(a,b){return i(b,null,null,[a]).length>0};i.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=j.order.length;e<f;e++){var h,g=j.order[e];if(h=j.leftMatch[g].exec(a)){var l=h[1];h.splice(1,1);if(l.substr(l.length-1)!=="\\"){h[1]=(h[1]||"").replace(/\\/g,"");d=j.find[g](h,b,c);if(d!=null){a=a.replace(j.match[g],
+"");break}}}}d||(d=typeof b.getElementsByTagName!=="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}};i.filter=function(a,b,c,d){for(var e,f,h=a,g=[],l=b,p=b&&b[0]&&i.isXML(b[0]);a&&b.length;){for(var n in j.filter)if((e=j.leftMatch[n].exec(a))!=null&&e[2]){var m,k,t=j.filter[n];k=e[1];f=false;e.splice(1,1);if(k.substr(k.length-1)!=="\\"){if(l===g)g=[];if(j.preFilter[n])if(e=j.preFilter[n](e,l,c,g,d,p)){if(e===true)continue}else f=m=true;if(e)for(var v=0;(k=l[v])!=null;v++)if(k){m=
+t(k,e,v,l);var D=d^!!m;if(c&&m!=null)if(D)f=true;else l[v]=false;else if(D){g.push(k);f=true}}if(m!==undefined){c||(l=g);a=a.replace(j.match[n],"");if(!f)return[];break}}}if(a===h)if(f==null)i.error(a);else break;h=a}return l};i.error=function(a){throw"Syntax error, unrecognized expression: "+a;};var j=i.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
+TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")}},relative:{"+":function(a,b){var c=typeof b==="string",d=c&&!/\W/.test(b);c=c&&
+!d;if(d)b=b.toLowerCase();d=0;for(var e=a.length,f;d<e;d++)if(f=a[d]){for(;(f=f.previousSibling)&&f.nodeType!==1;);a[d]=c||f&&f.nodeName.toLowerCase()===b?f||false:f===b}c&&i.filter(b,a,true)},">":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!/\W/.test(b))for(b=b.toLowerCase();e<f;e++){if(c=a[e]){c=c.parentNode;a[e]=c.nodeName.toLowerCase()===b?c:false}}else{for(;e<f;e++)if(c=a[e])a[e]=d?c.parentNode:c.parentNode===b;d&&i.filter(b,a,true)}},"":function(a,b,c){var d,e=x++,f=z;if(typeof b===
+"string"&&!/\W/.test(b)){d=b=b.toLowerCase();f=y}f("parentNode",b,e,a,d,c)},"~":function(a,b,c){var d,e=x++,f=z;if(typeof b==="string"&&!/\W/.test(b)){d=b=b.toLowerCase();f=y}f("previousSibling",b,e,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=="undefined"&&!c)return(a=b.getElementById(a[1]))&&a.parentNode?[a]:[]},NAME:function(a,b){if(typeof b.getElementsByName!=="undefined"){for(var c=[],d=b.getElementsByName(a[1]),e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);
+return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(/\\/g,"")+" ";if(f)return a;f=0;for(var h;(h=b[f])!=null;f++)if(h)if(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0))c||d.push(h);else if(c)b[f]=false;return false},ID:function(a){return a[1].replace(/\\/g,"")},TAG:function(a){return a[1].toLowerCase()},CHILD:function(a){if(a[1]===
+"nth"){a[2]||i.error(a[0]);a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0;a[3]=b[3]-0}else a[2]&&i.error(a[0]);a[0]=x++;return a},ATTR:function(a,b,c,d,e,f){b=a[1]=a[1].replace(/\\/g,"");if(!f&&j.attrMap[b])a[1]=j.attrMap[b];a[4]=(a[4]||a[5]||"").replace(/\\/g,"");if(a[2]==="~=")a[4]=" "+a[4]+" ";return a},PSEUDO:function(a,b,c,d,e){if(a[1]==="not")if((w.exec(a[3])||"").length>
+1||/^\w/.test(a[3]))a[3]=i(a[3],null,null,b);else{a=i.filter(a[3],b,c,true^e);c||d.push.apply(d,a);return false}else if(j.match.POS.test(a[0])||j.match.CHILD.test(a[0]))return true;return a},POS:function(a){a.unshift(true);return a}},filters:{enabled:function(a){return a.disabled===false&&a.type!=="hidden"},disabled:function(a){return a.disabled===true},checked:function(a){return a.checked===true},selected:function(a){return a.selected===true},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},
+has:function(a,b,c){return!!i(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){return"text"===a.type},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()===
+"button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=j.filters[e];if(f)return f(a,c,b,d);else if(e==="contains")return(a.textContent||
+a.innerText||i.getText([a])||"").indexOf(b[3])>=0;else if(e==="not"){b=b[3];c=0;for(d=b.length;c<d;c++)if(b[c]===a)return false;return true}else i.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case "only":case "first":for(;d=d.previousSibling;)if(d.nodeType===1)return false;if(c==="first")return true;d=a;case "last":for(;d=d.nextSibling;)if(d.nodeType===1)return false;return true;case "nth":c=b[2];var e=b[3];if(c===1&&e===0)return true;var f=b[0],h=a.parentNode;if(h&&(h.sizcache!==f||!a.nodeIndex)){var g=
+0;for(d=h.firstChild;d;d=d.nextSibling)if(d.nodeType===1)d.nodeIndex=++g;h.sizcache=f}d=a.nodeIndex-e;return c===0?d===0:d%c===0&&d/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1];c=j.attrHandle[c]?j.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c);var d=c+"",e=b[2],f=b[4];
+return c==null?e==="!=":e==="="?d===f:e==="*="?d.indexOf(f)>=0:e==="~="?(" "+d+" ").indexOf(f)>=0:!f?d&&c!==false:e==="!="?d!==f:e==="^="?d.indexOf(f)===0:e==="$="?d.substr(d.length-f.length)===f:e==="|="?d===f||d.substr(0,f.length+1)===f+"-":false},POS:function(a,b,c,d){var e=j.setFilters[b[2]];if(e)return e(a,c,b,d)}}},E=j.match.POS,F=function(a,b){return"\\"+(b-0+1)},q;for(q in j.match){j.match[q]=RegExp(j.match[q].source+/(?![^\[]*\])(?![^\(]*\))/.source);j.leftMatch[q]=RegExp(/(^(?:.|\r|\n)*?)/.source+
+j.match[q].source.replace(/\\(\d+)/g,F))}var o=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(document.documentElement.childNodes,0)}catch(G){o=function(a,b){var c=0,d=b||[];if(A.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,r;if(document.documentElement.compareDocumentPosition)u=function(a,
+b){if(a===b){s=true;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1};else{u=function(a,b){var c,d,e=[],f=[];c=a.parentNode;d=b.parentNode;var h=c;if(a===b){s=true;return 0}else if(c===d)return r(a,b);else if(c){if(!d)return 1}else return-1;for(;h;){e.unshift(h);h=h.parentNode}for(h=d;h;){f.unshift(h);h=h.parentNode}c=e.length;d=f.length;for(h=0;h<c&&h<d;h++)if(e[h]!==f[h])return r(e[h],f[h]);return h===
+c?r(a,f[h],-1):r(e[h],b,1)};r=function(a,b,c){if(a===b)return c;for(a=a.nextSibling;a;){if(a===b)return-1;a=a.nextSibling}return 1}}i.getText=function(a){for(var b="",c,d=0;a[d];d++){c=a[d];if(c.nodeType===3||c.nodeType===4)b+=c.nodeValue;else if(c.nodeType!==8)b+=i.getText(c.childNodes)}return b};(function(){var a=document.createElement("div"),b="script"+(new Date).getTime(),c=document.documentElement;a.innerHTML="<a name='"+b+"'/>";c.insertBefore(a,c.firstChild);if(document.getElementById(b)){j.find.ID=
+function(d,e,f){if(typeof e.getElementById!=="undefined"&&!f)return(e=e.getElementById(d[1]))?e.id===d[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===d[1]?[e]:undefined:[]};j.filter.ID=function(d,e){var f=typeof d.getAttributeNode!=="undefined"&&d.getAttributeNode("id");return d.nodeType===1&&f&&f.nodeValue===e}}c.removeChild(a);c=a=null})();(function(){var a=document.createElement("div");a.appendChild(document.createComment(""));if(a.getElementsByTagName("*").length>
+0)j.find.TAG=function(b,c){var d=c.getElementsByTagName(b[1]);if(b[1]==="*"){for(var e=[],f=0;d[f];f++)d[f].nodeType===1&&e.push(d[f]);d=e}return d};a.innerHTML="<a href='#'></a>";if(a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#")j.attrHandle.href=function(b){return b.getAttribute("href",2)};a=null})();document.querySelectorAll&&function(){var a=i,b=document.createElement("div");b.innerHTML="<p class='TEST'></p>";if(!(b.querySelectorAll&&b.querySelectorAll(".TEST").length===
+0)){i=function(d,e,f,h){e=e||document;if(!h&&!i.isXML(e)){var g=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(d);if(g&&(e.nodeType===1||e.nodeType===9))if(g[1])return o(e.getElementsByTagName(d),f);else if(g[2]&&j.find.CLASS&&e.getElementsByClassName)return o(e.getElementsByClassName(g[2]),f);if(e.nodeType===9){if(d==="body"&&e.body)return o([e.body],f);else if(g&&g[3]){var l=e.getElementById(g[3]);if(l&&l.parentNode){if(l.id===g[3])return o([l],f)}else return o([],f)}try{return o(e.querySelectorAll(d),
+f)}catch(p){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){l=(g=e.getAttribute("id"))||"__sizzle__";var n=e.parentNode,m=/^\s*[+~]/.test(d);if(g)l=l.replace(/'/g,"\\$&");else e.setAttribute("id",l);if(m&&n)e=e.parentNode;try{if(!m||n)return o(e.querySelectorAll("[id='"+l+"'] "+d),f)}catch(k){}finally{g||e.removeAttribute("id")}}}return a(d,e,f,h)};for(var c in a)i[c]=a[c];b=null}}();(function(){var a=document.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||
+a.msMatchesSelector,c=false;try{b.call(document.documentElement,"[test!='']:sizzle")}catch(d){c=true}if(b)i.matchesSelector=function(e,f){f=f.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!i.isXML(e))try{if(c||!j.match.PSEUDO.test(f)&&!/!=/.test(f))return b.call(e,f)}catch(h){}return i(f,null,null,[e]).length>0}})();(function(){var a=document.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!a.getElementsByClassName||a.getElementsByClassName("e").length===
+0)){a.lastChild.className="e";if(a.getElementsByClassName("e").length!==1){j.order.splice(1,0,"CLASS");j.find.CLASS=function(b,c,d){if(typeof c.getElementsByClassName!=="undefined"&&!d)return c.getElementsByClassName(b[1])};a=null}}})();i.contains=document.documentElement.contains?function(a,b){return a!==b&&(a.contains?a.contains(b):true)}:document.documentElement.compareDocumentPosition?function(a,b){return!!(a.compareDocumentPosition(b)&16)}:function(){return false};i.isXML=function(a){return(a=
+(a?a.ownerDocument||a:0).documentElement)?a.nodeName!=="HTML":false};var C=function(a,b){for(var c,d=[],e="",f=b.nodeType?[b]:b;c=j.match.PSEUDO.exec(a);){e+=c[0];a=a.replace(j.match.PSEUDO,"")}a=j.relative[a]?a+"*":a;c=0;for(var h=f.length;c<h;c++)i(a,f[c],d);return i.filter(e,d)};window.Sizzle=i})();
diff --git a/static/vendor/d3-2.8.1/package.json b/static/vendor/d3-2.8.1/package.json
new file mode 100755 (executable)
index 0000000..12e5829
--- /dev/null
@@ -0,0 +1,33 @@
+{
+  "name": "d3",
+  "version": "2.8.1",
+  "description": "A small, free JavaScript library for manipulating documents based on data.",
+  "keywords": [
+    "dom",
+    "w3c",
+    "visualization",
+    "svg",
+    "animation",
+    "canvas"
+  ],
+  "homepage": "http://mbostock.github.com/d3/",
+  "author": {
+    "name": "Mike Bostock",
+    "url": "http://bost.ocks.org/mike"
+  },
+  "repository": {
+    "type": "git",
+    "url": "http://github.com/mbostock/d3.git"
+  },
+  "main": "index.js",
+  "dependencies": {
+    "jsdom": "0.2.12"
+  },
+  "devDependencies": {
+    "uglify-js": "1.2.3",
+    "vows": "0.6.x"
+  },
+  "scripts": {
+    "test": "./node_modules/vows/bin/vows"
+  }
+}
diff --git a/static/vendor/d3-2.8.1/src/behavior/behavior.js b/static/vendor/d3-2.8.1/src/behavior/behavior.js
new file mode 100755 (executable)
index 0000000..39633b1
--- /dev/null
@@ -0,0 +1 @@
+d3.behavior = {};
diff --git a/static/vendor/d3-2.8.1/src/behavior/drag.js b/static/vendor/d3-2.8.1/src/behavior/drag.js
new file mode 100755 (executable)
index 0000000..a356f7f
--- /dev/null
@@ -0,0 +1,84 @@
+// TODO Track touch points by identifier.
+
+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,
+        offset,
+        origin_ = point(),
+        moved = 0;
+
+    var w = d3.select(window)
+        .on("mousemove.drag", dragmove)
+        .on("touchmove.drag", dragmove)
+        .on("mouseup.drag", dragend, true)
+        .on("touchend.drag", dragend, true);
+
+    if (origin) {
+      offset = origin.apply(target, arguments);
+      offset = [offset.x - origin_[0], offset.y - origin_[1]];
+    } else {
+      offset = [0, 0];
+    }
+
+    event_({type: "dragstart"});
+
+    function point() {
+      var p = target.parentNode,
+          t = d3.event.changedTouches;
+      return t ? d3.touches(p, t)[0] : d3.mouse(p);
+    }
+
+    function dragmove() {
+      if (!target.parentNode) return dragend(); // target removed from DOM
+
+      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, prevent the mouseup (and possibly click) from propagating
+      if (moved) {
+        d3_eventCancel();
+        if (d3.event.target === eventTarget) w.on("click.drag", click, true);
+      }
+
+      w .on("mousemove.drag", null)
+        .on("touchmove.drag", null)
+        .on("mouseup.drag", null)
+        .on("touchend.drag", null);
+    }
+
+    // prevent the subsequent click from propagating (e.g., for anchors)
+    function click() {
+      d3_eventCancel();
+      w.on("click.drag", null);
+    }
+  }
+
+  drag.origin = function(x) {
+    if (!arguments.length) return origin;
+    origin = x;
+    return drag;
+  };
+
+  return d3.rebind(drag, event, "on");
+};
diff --git a/static/vendor/d3-2.8.1/src/behavior/zoom.js b/static/vendor/d3-2.8.1/src/behavior/zoom.js
new file mode 100755 (executable)
index 0000000..8e281db
--- /dev/null
@@ -0,0 +1,195 @@
+d3.behavior.zoom = function() {
+  var translate = [0, 0],
+      translate0, // translate when we started zooming (to avoid drift)
+      scale = 1,
+      scale0, // scale when we started touching
+      scaleExtent = d3_behavior_zoomInfinity,
+      event = d3_eventDispatch(zoom, "zoom"),
+      x0,
+      x1,
+      y0,
+      y1,
+      touchtime; // time of last touchstart (to detect double-tap)
+
+  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);
+  }
+
+  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;
+  };
+
+  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() {
+    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 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);
+    }
+
+    function click() {
+      d3_eventCancel();
+      w.on("click.zoom", null);
+    }
+  }
+
+  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) && (now - touchtime < 500)) { // dbltap
+      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);
+    dispatch(event.of(this, arguments));
+  }
+
+  return d3.rebind(zoom, event, "on");
+};
+
+var d3_behavior_zoomDiv, // for interpreting mousewheel events
+    d3_behavior_zoomInfinity = [0, Infinity]; // default scale extent
+
+function d3_behavior_zoomDelta() {
+
+  // mousewheel events are totally broken!
+  // https://bugs.webkit.org/show_bug.cgi?id=40441
+  // not only that, but Chrome and Safari differ in re. to acceleration!
+  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 = 1000;
+    d3_behavior_zoomDiv.dispatchEvent(e);
+    delta = 1000 - d3_behavior_zoomDiv.scrollTop;
+  } catch (error) {
+    delta = e.wheelDelta || (-e.detail * 5);
+  }
+
+  return delta;
+}
diff --git a/static/vendor/d3-2.8.1/src/compat/date.js b/static/vendor/d3-2.8.1/src/compat/date.js
new file mode 100755 (executable)
index 0000000..e682d4c
--- /dev/null
@@ -0,0 +1,3 @@
+if (!Date.now) Date.now = function() {
+  return +new Date;
+};
diff --git a/static/vendor/d3-2.8.1/src/compat/style.js b/static/vendor/d3-2.8.1/src/compat/style.js
new file mode 100755 (executable)
index 0000000..45addc2
--- /dev/null
@@ -0,0 +1,9 @@
+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);
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/core/array.js b/static/vendor/d3-2.8.1/src/core/array.js
new file mode 100755 (executable)
index 0000000..4097a83
--- /dev/null
@@ -0,0 +1,29 @@
+var d3_array = d3_arraySlice; // conversion for NodeLists
+
+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(document.documentElement.childNodes)[0].nodeType;
+} catch(e) {
+  d3_array = d3_arrayCopy;
+}
+
+var d3_arraySubclass = [].__proto__?
+
+// Until ECMAScript supports array subclassing, prototype injection works well.
+function(array, prototype) {
+  array.__proto__ = prototype;
+}:
+
+// And if your browser doesn't support __proto__, we'll use direct extension.
+function(array, prototype) {
+  for (var property in prototype) array[property] = prototype[property];
+};
diff --git a/static/vendor/d3-2.8.1/src/core/ascending.js b/static/vendor/d3-2.8.1/src/core/ascending.js
new file mode 100755 (executable)
index 0000000..87699cc
--- /dev/null
@@ -0,0 +1,3 @@
+d3.ascending = function(a, b) {
+  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/bisect.js b/static/vendor/d3-2.8.1/src/core/bisect.js
new file mode 100755 (executable)
index 0000000..4e20a72
--- /dev/null
@@ -0,0 +1,28 @@
+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;
diff --git a/static/vendor/d3-2.8.1/src/core/class.js b/static/vendor/d3-2.8.1/src/core/class.js
new file mode 100755 (executable)
index 0000000..ca0fab7
--- /dev/null
@@ -0,0 +1,12 @@
+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;
+  }
+}
diff --git a/static/vendor/d3-2.8.1/src/core/collapse.js b/static/vendor/d3-2.8.1/src/core/collapse.js
new file mode 100755 (executable)
index 0000000..c34384e
--- /dev/null
@@ -0,0 +1,3 @@
+function d3_collapse(s) {
+  return s.replace(/(^\s+)|(\s+$)/g, "").replace(/\s+/g, " ");
+}
diff --git a/static/vendor/d3-2.8.1/src/core/core.js b/static/vendor/d3-2.8.1/src/core/core.js
new file mode 100755 (executable)
index 0000000..9c0ec3a
--- /dev/null
@@ -0,0 +1 @@
+d3 = {version: "2.8.1"}; // semver
diff --git a/static/vendor/d3-2.8.1/src/core/descending.js b/static/vendor/d3-2.8.1/src/core/descending.js
new file mode 100755 (executable)
index 0000000..0503458
--- /dev/null
@@ -0,0 +1,3 @@
+d3.descending = function(a, b) {
+  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/dispatch.js b/static/vendor/d3-2.8.1/src/core/dispatch.js
new file mode 100755 (executable)
index 0000000..1bfe857
--- /dev/null
@@ -0,0 +1,60 @@
+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 = "";
+
+  // Extract optional namespace, e.g., "click.foo"
+  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);
+};
+
+function d3_dispatch_event(dispatch) {
+  var listeners = [],
+      listenerByName = new d3_Map;
+
+  function event() {
+    var z = listeners, // defensive reference
+        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;
+
+    // return the current listener, if any
+    if (arguments.length < 2) return l && l.on;
+
+    // remove the old listener, if any (with copy-on-write)
+    if (l) {
+      l.on = null;
+      listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
+      listenerByName.remove(name);
+    }
+
+    // add the new listener, if any
+    if (listener) listeners.push(listenerByName.set(name, {on: listener}));
+
+    return dispatch;
+  };
+
+  return event;
+}
diff --git a/static/vendor/d3-2.8.1/src/core/ease.js b/static/vendor/d3-2.8.1/src/core/ease.js
new file mode 100755 (executable)
index 0000000..614de88
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+ * TERMS OF USE - EASING EQUATIONS
+ *
+ * Open source under the BSD License.
+ *
+ * Copyright 2001 Robert Penner
+ * 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.
+ *
+ * - Neither the name of the author nor the names of contributors may 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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
+ */
+
+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))));
+};
+
+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 = 0.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;
+}
diff --git a/static/vendor/d3-2.8.1/src/core/entries.js b/static/vendor/d3-2.8.1/src/core/entries.js
new file mode 100755 (executable)
index 0000000..4ce014b
--- /dev/null
@@ -0,0 +1,5 @@
+d3.entries = function(map) {
+  var entries = [];
+  for (var key in map) entries.push({key: key, value: map[key]});
+  return entries;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/event.js b/static/vendor/d3-2.8.1/src/core/event.js
new file mode 100755 (executable)
index 0000000..f58c024
--- /dev/null
@@ -0,0 +1,49 @@
+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;
+}
+
+// Like d3.dispatch, but for custom events abstracting native UI events. These
+// events have a target component (such as a brush), a target element (such as
+// the svg:g element containing the brush) and the standard arguments `d` (the
+// target element's data) and `i` (the selection index of the target element).
+function d3_eventDispatch(target) {
+  var dispatch = new d3_dispatch,
+      i = 0,
+      n = arguments.length;
+
+  while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
+
+  // Creates a dispatch context for the specified `thiz` (typically, the target
+  // DOM element that received the source event) and `argumentz` (typically, the
+  // data `d` and index `i` of the target element). The returned function can be
+  // used to dispatch an event to any registered listeners; the function takes a
+  // single argument as input, being the event to dispatch. The event must have
+  // a "type" attribute which corresponds to a type registered in the
+  // constructor. This context will automatically populate the "sourceEvent" and
+  // "target" attributes of the event, as well as setting the `d3.event` global
+  // for the duration of the notification.
+  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;
+}
diff --git a/static/vendor/d3-2.8.1/src/core/extent.js b/static/vendor/d3-2.8.1/src/core/extent.js
new file mode 100755 (executable)
index 0000000..05584a9
--- /dev/null
@@ -0,0 +1,21 @@
+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];
+};
diff --git a/static/vendor/d3-2.8.1/src/core/first.js b/static/vendor/d3-2.8.1/src/core/first.js
new file mode 100755 (executable)
index 0000000..1fa0963
--- /dev/null
@@ -0,0 +1,13 @@
+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;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/format.js b/static/vendor/d3-2.8.1/src/core/format.js
new file mode 100755 (executable)
index 0000000..ec58b6e
--- /dev/null
@@ -0,0 +1,100 @@
+// TODO align
+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"; // TODO 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 "d": integer = true; precision = 0; break;
+    case "s": scale = -1; type = "r"; break;
+  }
+
+  // If no precision is specified for r, fallback to general notation.
+  if (type == "r" && !precision) type = "g";
+
+  type = d3_format_types.get(type) || d3_format_typeDefault;
+
+  return function(value) {
+
+    // Return the empty string for floats formatted as ints.
+    if (integer && (value % 1)) return "";
+
+    // Convert negative to positive, and record the sign prefix.
+    var negative = (value < 0) && (value = -value) ? "\u2212" : sign;
+
+    // Apply the scale, computing it from the value's exponent for si format.
+    if (scale < 0) {
+      var prefix = d3.formatPrefix(value, precision);
+      value *= prefix.scale;
+      suffix = prefix.symbol;
+    } else {
+      value *= scale;
+    }
+
+    // Convert to the desired precision.
+    value = type(value, precision);
+
+    // If the fill character is 0, the sign and group is applied after the fill.
+    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;
+    }
+
+    // Otherwise (e.g., space-filling), the sign and group is applied before.
+    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;
+  };
+};
+
+// [[fill]align][sign][#][0][width][,][.precision][type]
+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))); }
+});
+
+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 + "";
+}
+
+// Apply comma grouping for thousands.
+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;
+}
diff --git a/static/vendor/d3-2.8.1/src/core/formatPrefix.js b/static/vendor/d3-2.8.1/src/core/formatPrefix.js
new file mode 100755 (executable)
index 0000000..936bcd1
--- /dev/null
@@ -0,0 +1,20 @@
+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) {
+  return {
+    scale: Math.pow(10, (8 - i) * 3),
+    symbol: d
+  };
+}
+
diff --git a/static/vendor/d3-2.8.1/src/core/functor.js b/static/vendor/d3-2.8.1/src/core/functor.js
new file mode 100755 (executable)
index 0000000..da4daec
--- /dev/null
@@ -0,0 +1,3 @@
+d3.functor = function(v) {
+  return typeof v === "function" ? v : function() { return v; };
+};
diff --git a/static/vendor/d3-2.8.1/src/core/hsl.js b/static/vendor/d3-2.8.1/src/core/hsl.js
new file mode 100755 (executable)
index 0000000..9fb81ec
--- /dev/null
@@ -0,0 +1,63 @@
+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;
+}
+
+d3_Hsl.prototype.brighter = function(k) {
+  k = Math.pow(0.7, arguments.length ? k : 1);
+  return d3_hsl(this.h, this.s, this.l / k);
+};
+
+d3_Hsl.prototype.darker = function(k) {
+  k = Math.pow(0.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();
+};
+
+function d3_hsl_rgb(h, s, l) {
+  var m1,
+      m2;
+
+  /* Some simple corrections for h, s and l. */
+  h = h % 360; if (h < 0) h += 360;
+  s = s < 0 ? 0 : s > 1 ? 1 : s;
+  l = l < 0 ? 0 : l > 1 ? 1 : l;
+
+  /* From FvD 13.37, CSS Color Module Level 3 */
+  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));
+}
diff --git a/static/vendor/d3-2.8.1/src/core/html.js b/static/vendor/d3-2.8.1/src/core/html.js
new file mode 100755 (executable)
index 0000000..bfe92a0
--- /dev/null
@@ -0,0 +1,10 @@
+d3.html = function(url, callback) {
+  d3.text(url, "text/html", function(text) {
+    if (text != null) { // Treat empty string as valid HTML.
+      var range = document.createRange();
+      range.selectNode(document.body);
+      text = range.createContextualFragment(text);
+    }
+    callback(text);
+  });
+};
diff --git a/static/vendor/d3-2.8.1/src/core/interpolate.js b/static/vendor/d3-2.8.1/src/core/interpolate.js
new file mode 100755 (executable)
index 0000000..0f7f91e
--- /dev/null
@@ -0,0 +1,230 @@
+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, // current match
+      i, // current index
+      j, // current index (for coallescing)
+      s0 = 0, // start index of current string prefix
+      s1 = 0, // end index of current string prefix
+      s = [], // string constants and placeholders
+      q = [], // number interpolators
+      n, // q.length
+      o;
+
+  // Reset our regular expression!
+  d3_interpolate_number.lastIndex = 0;
+
+  // Find all numbers in b.
+  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));
+
+  // Find all numbers in a.
+  for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) {
+    o = q[i];
+    if (o.x == m[0]) { // The numbers match, so coallesce.
+      if (o.i) {
+        if (s[o.i + 1] == null) { // This match is followed by another number.
+          s[o.i - 1] += o.x;
+          s.splice(o.i, 1);
+          for (j = i + 1; j < n; ++j) q[j].i--;
+        } else { // This match is followed by a string, so coallesce twice.
+          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) { // This match is followed by another number.
+          s[o.i] = o.x;
+        } else { // This match is followed by a string, so coallesce twice.
+          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));
+    }
+  }
+
+  // Remove any numbers in b not found in a.
+  while (i < n) {
+    o = q.pop();
+    if (s[o.i + 1] == null) { // This match is followed by another number.
+      s[o.i] = o.x;
+    } else { // This match is followed by a string, so coallesce twice.
+      s[o.i] = o.x + s[o.i + 1];
+      s.splice(o.i + 1, 1);
+    }
+    n--;
+  }
+
+  // Special optimization for only a single match.
+  if (s.length === 1) {
+    return s[0] == null ? q[0].x : function() { return b; };
+  }
+
+  // Otherwise, interpolate each of the numbers and rejoin the string.
+  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 = [], // string constants and placeholders
+      q = [], // number interpolators
+      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) {
+    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));
+  };
+};
+
+// interpolates HSL space, but outputs RGB string (for compatibility)
+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;
+  return function(t) {
+    return d3_hsl_rgb(h0 + h1 * t, s0 + s1 * t, l0 + l1 * t).toString();
+  };
+};
+
+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+)(?:[eE][-+]?\d+)?/g;
+
+function d3_interpolateByName(n) {
+  return n == "transform"
+      ? d3.interpolateTransform
+      : d3.interpolate;
+}
+
+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); }
+];
diff --git a/static/vendor/d3-2.8.1/src/core/json.js b/static/vendor/d3-2.8.1/src/core/json.js
new file mode 100755 (executable)
index 0000000..3ce0de8
--- /dev/null
@@ -0,0 +1,5 @@
+d3.json = function(url, callback) {
+  d3.text(url, "application/json", function(text) {
+    callback(text ? JSON.parse(text) : null);
+  });
+};
diff --git a/static/vendor/d3-2.8.1/src/core/keys.js b/static/vendor/d3-2.8.1/src/core/keys.js
new file mode 100755 (executable)
index 0000000..c83ec8e
--- /dev/null
@@ -0,0 +1,5 @@
+d3.keys = function(map) {
+  var keys = [];
+  for (var key in map) keys.push(key);
+  return keys;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/last.js b/static/vendor/d3-2.8.1/src/core/last.js
new file mode 100755 (executable)
index 0000000..248cf9f
--- /dev/null
@@ -0,0 +1,13 @@
+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;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/map.js b/static/vendor/d3-2.8.1/src/core/map.js
new file mode 100755 (executable)
index 0000000..b30ebe2
--- /dev/null
@@ -0,0 +1,48 @@
+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", // prevent collision with built-ins
+    d3_map_prefixCode = d3_map_prefix.charCodeAt(0);
diff --git a/static/vendor/d3-2.8.1/src/core/max.js b/static/vendor/d3-2.8.1/src/core/max.js
new file mode 100755 (executable)
index 0000000..d52bda3
--- /dev/null
@@ -0,0 +1,14 @@
+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;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/mean.js b/static/vendor/d3-2.8.1/src/core/mean.js
new file mode 100755 (executable)
index 0000000..24a286a
--- /dev/null
@@ -0,0 +1,13 @@
+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;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/median.js b/static/vendor/d3-2.8.1/src/core/median.js
new file mode 100755 (executable)
index 0000000..37bb0e2
--- /dev/null
@@ -0,0 +1,5 @@
+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;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/merge.js b/static/vendor/d3-2.8.1/src/core/merge.js
new file mode 100755 (executable)
index 0000000..d730718
--- /dev/null
@@ -0,0 +1,3 @@
+d3.merge = function(arrays) {
+  return Array.prototype.concat.apply([], arrays);
+};
diff --git a/static/vendor/d3-2.8.1/src/core/min.js b/static/vendor/d3-2.8.1/src/core/min.js
new file mode 100755 (executable)
index 0000000..705a8f8
--- /dev/null
@@ -0,0 +1,14 @@
+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;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/mouse.js b/static/vendor/d3-2.8.1/src/core/mouse.js
new file mode 100755 (executable)
index 0000000..52e1a86
--- /dev/null
@@ -0,0 +1,34 @@
+d3.mouse = function(container) {
+  return d3_mousePoint(container, d3_eventSource());
+};
+
+// https://bugs.webkit.org/show_bug.cgi?id=44083
+var d3_mouse_bug44083 = /WebKit/.test(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) && (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];
+};
diff --git a/static/vendor/d3-2.8.1/src/core/nest.js b/static/vendor/d3-2.8.1/src/core/nest.js
new file mode 100755 (executable)
index 0000000..d26ffea
--- /dev/null
@@ -0,0 +1,89 @@
+d3.nest = function() {
+  var nest = {},
+      keys = [],
+      sortKeys = [],
+      sortValues,
+      rollup;
+
+  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) {
+      o[keyValue] = map(valuesByKey.get(keyValue), 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;
+  }
+
+  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;
+  };
+
+  // Specifies the order for the most-recently specified key.
+  // Note: only applies to entries. Map keys are unordered!
+  nest.sortKeys = function(order) {
+    sortKeys[keys.length - 1] = order;
+    return nest;
+  };
+
+  // Specifies the order for leaf values.
+  // Applies to both maps and entries array.
+  nest.sortValues = function(order) {
+    sortValues = order;
+    return nest;
+  };
+
+  nest.rollup = function(f) {
+    rollup = f;
+    return nest;
+  };
+
+  return nest;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/noop.js b/static/vendor/d3-2.8.1/src/core/noop.js
new file mode 100755 (executable)
index 0000000..35f91d1
--- /dev/null
@@ -0,0 +1 @@
+function d3_noop() {}
diff --git a/static/vendor/d3-2.8.1/src/core/ns.js b/static/vendor/d3-2.8.1/src/core/ns.js
new file mode 100755 (executable)
index 0000000..e23a653
--- /dev/null
@@ -0,0 +1,22 @@
+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;
+  }
+};
diff --git a/static/vendor/d3-2.8.1/src/core/number.js b/static/vendor/d3-2.8.1/src/core/number.js
new file mode 100755 (executable)
index 0000000..ed03c6f
--- /dev/null
@@ -0,0 +1,3 @@
+function d3_number(x) {
+  return x != null && !isNaN(x);
+}
diff --git a/static/vendor/d3-2.8.1/src/core/permute.js b/static/vendor/d3-2.8.1/src/core/permute.js
new file mode 100755 (executable)
index 0000000..08d0ebe
--- /dev/null
@@ -0,0 +1,7 @@
+d3.permute = function(array, indexes) {
+  var permutes = [],
+      i = -1,
+      n = indexes.length;
+  while (++i < n) permutes[i] = array[indexes[i]];
+  return permutes;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/quantile.js b/static/vendor/d3-2.8.1/src/core/quantile.js
new file mode 100755 (executable)
index 0000000..45547b8
--- /dev/null
@@ -0,0 +1,8 @@
+// R-7 per <http://en.wikipedia.org/wiki/Quantile>
+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;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/random.js b/static/vendor/d3-2.8.1/src/core/random.js
new file mode 100755 (executable)
index 0000000..8628608
--- /dev/null
@@ -0,0 +1,15 @@
+d3.random = {
+  normal: function(mean, deviation) {
+    if (arguments.length < 2) deviation = 1;
+    if (arguments.length < 1) mean = 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 mean + deviation * x * Math.sqrt(-2 * Math.log(r) / r);
+    };
+  }
+};
diff --git a/static/vendor/d3-2.8.1/src/core/range.js b/static/vendor/d3-2.8.1/src/core/range.js
new file mode 100755 (executable)
index 0000000..38fbc05
--- /dev/null
@@ -0,0 +1,24 @@
+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;
+}
diff --git a/static/vendor/d3-2.8.1/src/core/rebind.js b/static/vendor/d3-2.8.1/src/core/rebind.js
new file mode 100755 (executable)
index 0000000..af99c46
--- /dev/null
@@ -0,0 +1,16 @@
+// Copies a variable number of methods from source to target.
+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;
+};
+
+// Method is assumed to be a standard D3 getter-setter:
+// If passed with no arguments, gets the value.
+// If passed with arguments, sets the value and returns the target.
+function d3_rebind(target, source, method) {
+  return function() {
+    var value = method.apply(source, arguments);
+    return arguments.length ? target : value;
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/core/requote.js b/static/vendor/d3-2.8.1/src/core/requote.js
new file mode 100755 (executable)
index 0000000..99dbf15
--- /dev/null
@@ -0,0 +1,5 @@
+d3.requote = function(s) {
+  return s.replace(d3_requote_re, "\\$&");
+};
+
+var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
diff --git a/static/vendor/d3-2.8.1/src/core/rgb.js b/static/vendor/d3-2.8.1/src/core/rgb.js
new file mode 100755 (executable)
index 0000000..aa8fb20
--- /dev/null
@@ -0,0 +1,284 @@
+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;
+}
+
+d3_Rgb.prototype.brighter = function(k) {
+  k = Math.pow(0.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(0.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);
+};
+
+function d3_rgb_hex(v) {
+  return v < 0x10
+      ? "0" + Math.max(0, v).toString(16)
+      : Math.min(255, v).toString(16);
+}
+
+function d3_rgb_parse(format, rgb, hsl) {
+  var r = 0, // red channel; int in [0, 255]
+      g = 0, // green channel; int in [0, 255]
+      b = 0, // blue channel; int in [0, 255]
+      m1, // CSS color specification match
+      m2, // CSS color specification type (e.g., rgb)
+      name;
+
+  /* Handle hsl, rgb. */
+  m1 = /([a-z]+)\((.*)\)/i.exec(format);
+  if (m1) {
+    m2 = m1[2].split(",");
+    switch (m1[1]) {
+      case "hsl": {
+        return hsl(
+          parseFloat(m2[0]), // degrees
+          parseFloat(m2[1]) / 100, // percentage
+          parseFloat(m2[2]) / 100 // percentage
+        );
+      }
+      case "rgb": {
+        return rgb(
+          d3_rgb_parseNumber(m2[0]),
+          d3_rgb_parseNumber(m2[1]),
+          d3_rgb_parseNumber(m2[2])
+        );
+      }
+    }
+  }
+
+  /* Named colors. */
+  if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b);
+
+  /* Hexadecimal colors: #rgb and #rrggbb. */
+  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_parseNumber(c) { // either integer or percentage
+  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));
+});
diff --git a/static/vendor/d3-2.8.1/src/core/round.js b/static/vendor/d3-2.8.1/src/core/round.js
new file mode 100755 (executable)
index 0000000..44e9574
--- /dev/null
@@ -0,0 +1,5 @@
+d3.round = function(x, n) {
+  return n
+      ? Math.round(x * (n = Math.pow(10, n))) / n
+      : Math.round(x);
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-append.js b/static/vendor/d3-2.8.1/src/core/selection-append.js
new file mode 100755 (executable)
index 0000000..1c57da1
--- /dev/null
@@ -0,0 +1,15 @@
+// TODO append(node)?
+// TODO append(function)?
+d3_selectionPrototype.append = function(name) {
+  name = d3.ns.qualify(name);
+
+  function append() {
+    return this.appendChild(document.createElementNS(this.namespaceURI, name));
+  }
+
+  function appendNS() {
+    return this.appendChild(document.createElementNS(name.space, name.local));
+  }
+
+  return this.select(name.local ? appendNS : append);
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-attr.js b/static/vendor/d3-2.8.1/src/core/selection-attr.js
new file mode 100755 (executable)
index 0000000..e95a536
--- /dev/null
@@ -0,0 +1,44 @@
+d3_selectionPrototype.attr = function(name, value) {
+  name = d3.ns.qualify(name);
+
+  // If no value is specified, return the first value.
+  if (arguments.length < 2) {
+    var node = this.node();
+    return name.local
+        ? node.getAttributeNS(name.space, name.local)
+        : node.getAttribute(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 this.each(value == null
+      ? (name.local ? attrNullNS : attrNull) : (typeof value === "function"
+      ? (name.local ? attrFunctionNS : attrFunction)
+      : (name.local ? attrConstantNS : attrConstant)));
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-call.js b/static/vendor/d3-2.8.1/src/core/selection-call.js
new file mode 100755 (executable)
index 0000000..c1d9129
--- /dev/null
@@ -0,0 +1,13 @@
+//
+// Note: assigning to the arguments array simultaneously changes the value of
+// the corresponding argument!
+//
+// TODO The `this` argument probably shouldn't be the first argument to the
+// callback, anyway, since it's redundant. However, that will require a major
+// version bump due to backwards compatibility, so I'm not changing it right
+// away.
+//
+d3_selectionPrototype.call = function(callback) {
+  callback.apply(this, (arguments[0] = this, arguments));
+  return this;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-classed.js b/static/vendor/d3-2.8.1/src/core/selection-classed.js
new file mode 100755 (executable)
index 0000000..ee61756
--- /dev/null
@@ -0,0 +1,61 @@
+d3_selectionPrototype.classed = function(name, value) {
+  var names = name.split(d3_selection_classedWhitespace),
+      n = names.length,
+      i = -1;
+  if (arguments.length > 1) {
+    while (++i < n) d3_selection_classed.call(this, names[i], value);
+    return this;
+  } else {
+    while (++i < n) if (!d3_selection_classed.call(this, names[i])) return false;
+    return true;
+  }
+};
+
+var d3_selection_classedWhitespace = /\s+/g;
+
+function d3_selection_classed(name, value) {
+  var re = new RegExp("(^|\\s+)" + d3.requote(name) + "(\\s+|$)", "g");
+
+  // If no value is specified, return the first value.
+  if (arguments.length < 2) {
+    var node = this.node();
+    if (c = node.classList) return c.contains(name);
+    var c = node.className;
+    re.lastIndex = 0;
+    return re.test(c.baseVal != null ? c.baseVal : c);
+  }
+
+  function classedAdd() {
+    if (c = this.classList) return c.add(name);
+    var c = this.className,
+        cb = c.baseVal != null,
+        cv = cb ? c.baseVal : c;
+    re.lastIndex = 0;
+    if (!re.test(cv)) {
+      cv = d3_collapse(cv + " " + name);
+      if (cb) c.baseVal = cv;
+      else this.className = cv;
+    }
+  }
+
+  function classedRemove() {
+    if (c = this.classList) return c.remove(name);
+    var c = this.className,
+        cb = c.baseVal != null,
+        cv = cb ? c.baseVal : c;
+    cv = d3_collapse(cv.replace(re, " "));
+    if (cb) c.baseVal = cv;
+    else this.className = cv;
+  }
+
+  function classedFunction() {
+    (value.apply(this, arguments)
+        ? classedAdd
+        : classedRemove).call(this);
+  }
+
+  return this.each(typeof value === "function"
+      ? classedFunction : value
+      ? classedAdd
+      : classedRemove);
+}
diff --git a/static/vendor/d3-2.8.1/src/core/selection-data.js b/static/vendor/d3-2.8.1/src/core/selection-data.js
new file mode 100755 (executable)
index 0000000..c84f5cf
--- /dev/null
@@ -0,0 +1,121 @@
+d3_selectionPrototype.data = function(value, key) {
+  var i = -1,
+      n = this.length,
+      group,
+      node;
+
+  // If no value is specified, return the first value.
+  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),
+        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; // duplicate key
+        } 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 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};
+}
diff --git a/static/vendor/d3-2.8.1/src/core/selection-datum.js b/static/vendor/d3-2.8.1/src/core/selection-datum.js
new file mode 100755 (executable)
index 0000000..a04660c
--- /dev/null
@@ -0,0 +1,6 @@
+d3_selectionPrototype.datum =
+d3_selectionPrototype.map = function(value) {
+  return arguments.length < 1
+      ? this.property("__data__")
+      : this.property("__data__", value);
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-each.js b/static/vendor/d3-2.8.1/src/core/selection-each.js
new file mode 100755 (executable)
index 0000000..06dc1be
--- /dev/null
@@ -0,0 +1,9 @@
+d3_selectionPrototype.each = function(callback) {
+  for (var j = -1, m = this.length; ++j < m;) {
+    for (var group = this[j], i = -1, n = group.length; ++i < n;) {
+      var node = group[i];
+      if (node) callback.call(node, node.__data__, i, j);
+    }
+  }
+  return this;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-empty.js b/static/vendor/d3-2.8.1/src/core/selection-empty.js
new file mode 100755 (executable)
index 0000000..91eaca9
--- /dev/null
@@ -0,0 +1,3 @@
+d3_selectionPrototype.empty = function() {
+  return !this.node();
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-enter-select.js b/static/vendor/d3-2.8.1/src/core/selection-enter-select.js
new file mode 100755 (executable)
index 0000000..7b442dd
--- /dev/null
@@ -0,0 +1,24 @@
+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);
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-enter.js b/static/vendor/d3-2.8.1/src/core/selection-enter.js
new file mode 100755 (executable)
index 0000000..bc9071b
--- /dev/null
@@ -0,0 +1,14 @@
+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;
diff --git a/static/vendor/d3-2.8.1/src/core/selection-filter.js b/static/vendor/d3-2.8.1/src/core/selection-filter.js
new file mode 100755 (executable)
index 0000000..2385784
--- /dev/null
@@ -0,0 +1,26 @@
+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);
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/core/selection-html.js b/static/vendor/d3-2.8.1/src/core/selection-html.js
new file mode 100755 (executable)
index 0000000..07ded9b
--- /dev/null
@@ -0,0 +1,7 @@
+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; });
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-insert.js b/static/vendor/d3-2.8.1/src/core/selection-insert.js
new file mode 100755 (executable)
index 0000000..fc03c31
--- /dev/null
@@ -0,0 +1,20 @@
+// TODO insert(node, function)?
+// TODO insert(function, string)?
+// TODO insert(function, function)?
+d3_selectionPrototype.insert = function(name, before) {
+  name = d3.ns.qualify(name);
+
+  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));
+  }
+
+  return this.select(name.local ? insertNS : insert);
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-node.js b/static/vendor/d3-2.8.1/src/core/selection-node.js
new file mode 100755 (executable)
index 0000000..e849204
--- /dev/null
@@ -0,0 +1,9 @@
+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;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-on.js b/static/vendor/d3-2.8.1/src/core/selection-on.js
new file mode 100755 (executable)
index 0000000..d8d9a43
--- /dev/null
@@ -0,0 +1,41 @@
+// type can be namespaced, e.g., "click.foo"
+// listener can be null for removal
+d3_selectionPrototype.on = function(type, listener, capture) {
+  if (arguments.length < 3) capture = false;
+
+  // parse the type specifier
+  var name = "__on" + type, i = type.indexOf(".");
+  if (i > 0) type = type.substring(0, i);
+
+  // if called with only one argument, return the current listener
+  if (arguments.length < 2) return (i = this.node()[name]) && i._;
+
+  // remove the old event listener, and add the new event listener
+  return this.each(function(d, i) {
+    var node = this,
+        o = node[name];
+
+    // remove the old listener, if any (using the previously-set capture)
+    if (o) {
+      node.removeEventListener(type, o, o.$);
+      delete node[name];
+    }
+
+    // add the new listener, if any (remembering the capture flag)
+    if (listener) {
+      node.addEventListener(type, node[name] = l, l.$ = capture);
+      l._ = listener; // stash the unwrapped listener for get
+    }
+
+    // wrapped event listener that preserves i
+    function l(e) {
+      var o = d3.event; // Events can be reentrant (e.g., focus).
+      d3.event = e;
+      try {
+        listener.call(node, node.__data__, i);
+      } finally {
+        d3.event = o;
+      }
+    }
+  });
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-order.js b/static/vendor/d3-2.8.1/src/core/selection-order.js
new file mode 100755 (executable)
index 0000000..9812dcd
--- /dev/null
@@ -0,0 +1,11 @@
+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;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-property.js b/static/vendor/d3-2.8.1/src/core/selection-property.js
new file mode 100755 (executable)
index 0000000..1ee0a25
--- /dev/null
@@ -0,0 +1,23 @@
+d3_selectionPrototype.property = function(name, value) {
+
+  // If no value is specified, return the first value.
+  if (arguments.length < 2) return this.node()[name];
+
+  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 this.each(value == null
+      ? propertyNull : (typeof value === "function"
+      ? propertyFunction : propertyConstant));
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-remove.js b/static/vendor/d3-2.8.1/src/core/selection-remove.js
new file mode 100755 (executable)
index 0000000..ec07cec
--- /dev/null
@@ -0,0 +1,9 @@
+// TODO remove(selector)?
+// TODO remove(node)?
+// TODO remove(function)?
+d3_selectionPrototype.remove = function() {
+  return this.each(function() {
+    var parent = this.parentNode;
+    if (parent) parent.removeChild(this);
+  });
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-root.js b/static/vendor/d3-2.8.1/src/core/selection-root.js
new file mode 100755 (executable)
index 0000000..61c9599
--- /dev/null
@@ -0,0 +1,18 @@
+var d3_selectionRoot = d3_selection([[document]]);
+
+d3_selectionRoot[0].parentNode = d3_selectRoot;
+
+// TODO fast singleton implementation!
+// TODO select(function)
+d3.select = function(selector) {
+  return typeof selector === "string"
+      ? d3_selectionRoot.select(selector)
+      : d3_selection([[selector]]); // assume node
+};
+
+// TODO selectAll(function)
+d3.selectAll = function(selector) {
+  return typeof selector === "string"
+      ? d3_selectionRoot.selectAll(selector)
+      : d3_selection([d3_array(selector)]); // assume node[]
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-select.js b/static/vendor/d3-2.8.1/src/core/selection-select.js
new file mode 100755 (executable)
index 0000000..fea22b5
--- /dev/null
@@ -0,0 +1,30 @@
+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);
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/core/selection-selectAll.js b/static/vendor/d3-2.8.1/src/core/selection-selectAll.js
new file mode 100755 (executable)
index 0000000..c133c63
--- /dev/null
@@ -0,0 +1,24 @@
+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);
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/core/selection-sort.js b/static/vendor/d3-2.8.1/src/core/selection-sort.js
new file mode 100755 (executable)
index 0000000..94636f2
--- /dev/null
@@ -0,0 +1,12 @@
+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 comparator(a && a.__data__, b && b.__data__);
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/core/selection-style.js b/static/vendor/d3-2.8.1/src/core/selection-style.js
new file mode 100755 (executable)
index 0000000..7c3042d
--- /dev/null
@@ -0,0 +1,26 @@
+d3_selectionPrototype.style = function(name, value, priority) {
+  if (arguments.length < 3) priority = "";
+
+  // If no value is specified, return the first value.
+  if (arguments.length < 2) return window
+      .getComputedStyle(this.node(), null)
+      .getPropertyValue(name);
+
+  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 this.each(value == null
+      ? styleNull : (typeof value === "function"
+      ? styleFunction : styleConstant));
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-text.js b/static/vendor/d3-2.8.1/src/core/selection-text.js
new file mode 100755 (executable)
index 0000000..bbf0ab1
--- /dev/null
@@ -0,0 +1,7 @@
+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; });
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection-transition.js b/static/vendor/d3-2.8.1/src/core/selection-transition.js
new file mode 100755 (executable)
index 0000000..98d85ed
--- /dev/null
@@ -0,0 +1,14 @@
+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());
+};
diff --git a/static/vendor/d3-2.8.1/src/core/selection.js b/static/vendor/d3-2.8.1/src/core/selection.js
new file mode 100755 (executable)
index 0000000..29fc239
--- /dev/null
@@ -0,0 +1,25 @@
+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 = 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); };
+
+// Prefer Sizzle, if available.
+if (typeof Sizzle === "function") {
+  d3_select = function(s, n) { return Sizzle(s, n)[0]; };
+  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;
diff --git a/static/vendor/d3-2.8.1/src/core/split.js b/static/vendor/d3-2.8.1/src/core/split.js
new file mode 100755 (executable)
index 0000000..282f47e
--- /dev/null
@@ -0,0 +1,21 @@
+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;
+};
+
+function d3_splitter(d) {
+  return d == null;
+}
diff --git a/static/vendor/d3-2.8.1/src/core/sum.js b/static/vendor/d3-2.8.1/src/core/sum.js
new file mode 100755 (executable)
index 0000000..b9af6e8
--- /dev/null
@@ -0,0 +1,14 @@
+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;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/text.js b/static/vendor/d3-2.8.1/src/core/text.js
new file mode 100755 (executable)
index 0000000..0c523b2
--- /dev/null
@@ -0,0 +1,10 @@
+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);
+};
diff --git a/static/vendor/d3-2.8.1/src/core/this.js b/static/vendor/d3-2.8.1/src/core/this.js
new file mode 100755 (executable)
index 0000000..c7293f9
--- /dev/null
@@ -0,0 +1,3 @@
+function d3_this() {
+  return this;
+}
diff --git a/static/vendor/d3-2.8.1/src/core/timer.js b/static/vendor/d3-2.8.1/src/core/timer.js
new file mode 100755 (executable)
index 0000000..9982d4a
--- /dev/null
@@ -0,0 +1,104 @@
+var d3_timer_queue = null,
+    d3_timer_interval, // is an interval (or frame) active?
+    d3_timer_timeout; // is a timeout active?
+
+// The timer will continue to fire until callback returns true.
+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();
+  }
+
+  // See if the callback's already in the queue.
+  while (t1) {
+    if (t1.callback === callback) {
+      t1.then = then;
+      t1.delay = delay;
+      found = true;
+      break;
+    }
+    t0 = t1;
+    t1 = t1.next;
+  }
+
+  // Otherwise, add the callback to the queue.
+  if (!found) d3_timer_queue = {
+    callback: callback,
+    then: then,
+    delay: delay,
+    next: d3_timer_queue
+  };
+
+  // Start animatin'!
+  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();
+};
+
+// Flush after callbacks, to avoid concurrent queue modification.
+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;
+}
+
+var d3_timer_frame = window.requestAnimationFrame
+    || window.webkitRequestAnimationFrame
+    || window.mozRequestAnimationFrame
+    || window.oRequestAnimationFrame
+    || window.msRequestAnimationFrame
+    || function(callback) { setTimeout(callback, 17); };
diff --git a/static/vendor/d3-2.8.1/src/core/touches.js b/static/vendor/d3-2.8.1/src/core/touches.js
new file mode 100755 (executable)
index 0000000..2323754
--- /dev/null
@@ -0,0 +1,8 @@
+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;
+  }) : [];
+};
diff --git a/static/vendor/d3-2.8.1/src/core/transform.js b/static/vendor/d3-2.8.1/src/core/transform.js
new file mode 100755 (executable)
index 0000000..af4627e
--- /dev/null
@@ -0,0 +1,60 @@
+d3.transform = function(string) {
+  var g = document.createElementNS(d3.ns.prefix.svg, "g"),
+      identity = {a: 1, b: 0, c: 0, d: 1, e: 0, f: 0};
+  return (d3.transform = function(string) {
+    g.setAttribute("transform", string);
+    var t = g.transform.baseVal.consolidate();
+    return new d3_transform(t ? t.matrix : identity);
+  })(string);
+};
+
+// Compute x-scale and normalize the first row.
+// Compute shear and make second row orthogonal to first.
+// Compute y-scale and normalize the second row.
+// Finally, compute the rotation.
+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;
+};
+
+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_transformDegrees = 180 / Math.PI;
diff --git a/static/vendor/d3-2.8.1/src/core/transition-attr.js b/static/vendor/d3-2.8.1/src/core/transition-attr.js
new file mode 100755 (executable)
index 0000000..f25c80d
--- /dev/null
@@ -0,0 +1,23 @@
+d3_transitionPrototype.attr = function(name, value) {
+  return this.attrTween(name, d3_transitionTween(name, value));
+};
+
+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 === d3_transitionRemove
+        ? (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_transitionRemove
+        ? (this.removeAttributeNS(name.space, name.local), null)
+        : f && function(t) { this.setAttributeNS(name.space, name.local, f(t)); };
+  }
+
+  return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween);
+};
diff --git a/static/vendor/d3-2.8.1/src/core/transition-delay.js b/static/vendor/d3-2.8.1/src/core/transition-delay.js
new file mode 100755 (executable)
index 0000000..fe4ec2b
--- /dev/null
@@ -0,0 +1,6 @@
+d3_transitionPrototype.delay = function(value) {
+  var groups = this;
+  return groups.each(typeof value === "function"
+      ? function(d, i, j) { groups[j][i].delay = value.apply(this, arguments) | 0; }
+      : (value = value | 0, function(d, i, j) { groups[j][i].delay = value; }));
+};
diff --git a/static/vendor/d3-2.8.1/src/core/transition-duration.js b/static/vendor/d3-2.8.1/src/core/transition-duration.js
new file mode 100755 (executable)
index 0000000..443cecb
--- /dev/null
@@ -0,0 +1,6 @@
+d3_transitionPrototype.duration = function(value) {
+  var groups = this;
+  return groups.each(typeof value === "function"
+      ? function(d, i, j) { groups[j][i].duration = Math.max(1, value.apply(this, arguments) | 0); }
+      : (value = Math.max(1, value | 0), function(d, i, j) { groups[j][i].duration = value; }));
+};
diff --git a/static/vendor/d3-2.8.1/src/core/transition-each.js b/static/vendor/d3-2.8.1/src/core/transition-each.js
new file mode 100755 (executable)
index 0000000..8a5afda
--- /dev/null
@@ -0,0 +1,25 @@
+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();
+  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) {
+        d3_transitionDelay = this[j][i].delay;
+        d3_transitionDuration = this[j][i].duration;
+        callback.call(node = node.node, node.__data__, i, j);
+      }
+    }
+  }
+
+  d3_transitionId = id;
+  d3_transitionEase = ease;
+  d3_transitionDelay = delay;
+  d3_transitionDuration = duration;
+  return this;
+}
diff --git a/static/vendor/d3-2.8.1/src/core/transition-remove.js b/static/vendor/d3-2.8.1/src/core/transition-remove.js
new file mode 100755 (executable)
index 0000000..35a87e8
--- /dev/null
@@ -0,0 +1,6 @@
+d3_transitionPrototype.remove = function() {
+  return this.each("end.transition", function() {
+    var p;
+    if (!this.__transition__ && (p = this.parentNode)) p.removeChild(this);
+  });
+};
diff --git a/static/vendor/d3-2.8.1/src/core/transition-select.js b/static/vendor/d3-2.8.1/src/core/transition-select.js
new file mode 100755 (executable)
index 0000000..3f37f0a
--- /dev/null
@@ -0,0 +1,22 @@
+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());
+};
diff --git a/static/vendor/d3-2.8.1/src/core/transition-selectAll.js b/static/vendor/d3-2.8.1/src/core/transition-selectAll.js
new file mode 100755 (executable)
index 0000000..7ea9142
--- /dev/null
@@ -0,0 +1,22 @@
+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());
+};
diff --git a/static/vendor/d3-2.8.1/src/core/transition-style.js b/static/vendor/d3-2.8.1/src/core/transition-style.js
new file mode 100755 (executable)
index 0000000..106313c
--- /dev/null
@@ -0,0 +1,14 @@
+d3_transitionPrototype.style = function(name, value, priority) {
+  if (arguments.length < 3) priority = "";
+  return this.styleTween(name, d3_transitionTween(name, value), 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_transitionRemove
+        ? (this.style.removeProperty(name), null)
+        : f && function(t) { this.style.setProperty(name, f(t), priority); };
+  });
+};
diff --git a/static/vendor/d3-2.8.1/src/core/transition-text.js b/static/vendor/d3-2.8.1/src/core/transition-text.js
new file mode 100755 (executable)
index 0000000..365dc34
--- /dev/null
@@ -0,0 +1,7 @@
+d3_transitionPrototype.text = function(value) {
+  return this.tween("text", function(d, i) {
+    this.textContent = typeof value === "function"
+        ? value.call(this, d, i)
+        : value;
+  });
+};
diff --git a/static/vendor/d3-2.8.1/src/core/transition-transition.js b/static/vendor/d3-2.8.1/src/core/transition-transition.js
new file mode 100755 (executable)
index 0000000..2898cea
--- /dev/null
@@ -0,0 +1,3 @@
+d3_transitionPrototype.transition = function() {
+  return this.select(d3_this);
+};
diff --git a/static/vendor/d3-2.8.1/src/core/transition.js b/static/vendor/d3-2.8.1/src/core/transition.js
new file mode 100755 (executable)
index 0000000..864ba45
--- /dev/null
@@ -0,0 +1,132 @@
+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) {
+    groups.each(function(d, i, j) {
+      var tweened = [],
+          node = this,
+          delay = groups[j][i].delay,
+          duration = groups[j][i].duration,
+          lock = node.__transition__ || (node.__transition__ = {active: 0, count: 0});
+
+      ++lock.count;
+
+      delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time);
+
+      function start(elapsed) {
+        if (lock.active > id) return stop();
+        lock.active = id;
+
+        tweens.forEach(function(key, value) {
+          if (tween = value.call(node, d, i)) {
+            tweened.push(tween);
+          }
+        });
+
+        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;
+      }
+    });
+    return 1;
+  }, 0, time);
+
+  return groups;
+}
+
+var d3_transitionRemove = {};
+
+function d3_transitionNull(d, i, a) {
+  return a != "" && d3_transitionRemove;
+}
+
+function d3_transitionTween(name, b) {
+  var interpolate = d3_interpolateByName(name);
+
+  function transitionFunction(d, i, a) {
+    var v = b.call(this, d, i);
+    return v == null
+        ? a != "" && d3_transitionRemove
+        : a != v && interpolate(a, v);
+  }
+
+  function transitionString(d, i, a) {
+    return a != b && interpolate(a, b);
+  }
+
+  return typeof b === "function" ? transitionFunction
+      : b == null ? d3_transitionNull
+      : (b += "", transitionString);
+}
+
+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;
diff --git a/static/vendor/d3-2.8.1/src/core/transpose.js b/static/vendor/d3-2.8.1/src/core/transpose.js
new file mode 100755 (executable)
index 0000000..8e3a645
--- /dev/null
@@ -0,0 +1,3 @@
+d3.transpose = function(matrix) {
+  return d3.zip.apply(d3, matrix);
+};
diff --git a/static/vendor/d3-2.8.1/src/core/uninterpolate.js b/static/vendor/d3-2.8.1/src/core/uninterpolate.js
new file mode 100755 (executable)
index 0000000..4337381
--- /dev/null
@@ -0,0 +1,9 @@
+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)); };
+}
diff --git a/static/vendor/d3-2.8.1/src/core/values.js b/static/vendor/d3-2.8.1/src/core/values.js
new file mode 100755 (executable)
index 0000000..299d304
--- /dev/null
@@ -0,0 +1,5 @@
+d3.values = function(map) {
+  var values = [];
+  for (var key in map) values.push(map[key]);
+  return values;
+};
diff --git a/static/vendor/d3-2.8.1/src/core/xhr.js b/static/vendor/d3-2.8.1/src/core/xhr.js
new file mode 100755 (executable)
index 0000000..866ee5f
--- /dev/null
@@ -0,0 +1,11 @@
+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) callback(req.status < 300 ? req : null);
+  };
+  req.send(null);
+};
diff --git a/static/vendor/d3-2.8.1/src/core/xml.js b/static/vendor/d3-2.8.1/src/core/xml.js
new file mode 100755 (executable)
index 0000000..939a2b5
--- /dev/null
@@ -0,0 +1,10 @@
+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);
+};
diff --git a/static/vendor/d3-2.8.1/src/core/zip.js b/static/vendor/d3-2.8.1/src/core/zip.js
new file mode 100755 (executable)
index 0000000..edd65dd
--- /dev/null
@@ -0,0 +1,13 @@
+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;
+}
diff --git a/static/vendor/d3-2.8.1/src/csv/csv.js b/static/vendor/d3-2.8.1/src/csv/csv.js
new file mode 100755 (executable)
index 0000000..58a49ea
--- /dev/null
@@ -0,0 +1,5 @@
+d3.csv = function(url, callback) {
+  d3.text(url, "text/csv", function(text) {
+    callback(text && d3.csv.parse(text));
+  });
+};
diff --git a/static/vendor/d3-2.8.1/src/csv/format.js b/static/vendor/d3-2.8.1/src/csv/format.js
new file mode 100755 (executable)
index 0000000..d8ab80b
--- /dev/null
@@ -0,0 +1,13 @@
+d3.csv.format = function(rows) {
+  return rows.map(d3_csv_formatRow).join("\n");
+};
+
+function d3_csv_formatRow(row) {
+  return row.map(d3_csv_formatValue).join(",");
+}
+
+function d3_csv_formatValue(text) {
+  return /[",\n]/.test(text)
+      ? "\"" + text.replace(/\"/g, "\"\"") + "\""
+      : text;
+}
diff --git a/static/vendor/d3-2.8.1/src/csv/parse.js b/static/vendor/d3-2.8.1/src/csv/parse.js
new file mode 100755 (executable)
index 0000000..ec5e078
--- /dev/null
@@ -0,0 +1,73 @@
+d3.csv.parse = function(text) {
+  var header;
+  return d3.csv.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;
+    }
+  });
+};
+
+d3.csv.parseRows = function(text, f) {
+  var EOL = {}, // sentinel value for end-of-line
+      EOF = {}, // sentinel value for end-of-file
+      rows = [], // output rows
+      re = /\r\n|[,\r\n]/g, // field separator regex
+      n = 0, // the current line number
+      t, // the current token
+      eol; // is the current token followed by EOL?
+
+  re.lastIndex = 0; // work-around bug in FF 3.6
+
+  /** @private Returns the next token. */
+  function token() {
+    if (re.lastIndex >= text.length) return EOF; // special case: end of file
+    if (eol) { eol = false; return EOL; } // special case: end of line
+
+    // special case: quotes
+    var j = re.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++;
+        }
+      }
+      re.lastIndex = i + 2;
+      var c = text.charCodeAt(i + 1);
+      if (c === 13) {
+        eol = true;
+        if (text.charCodeAt(i + 2) === 10) re.lastIndex++;
+      } else if (c === 10) {
+        eol = true;
+      }
+      return text.substring(j + 1, i).replace(/""/g, "\"");
+    }
+
+    // common case
+    var m = re.exec(text);
+    if (m) {
+      eol = m[0].charCodeAt(0) !== 44;
+      return text.substring(j, m.index);
+    }
+    re.lastIndex = text.length;
+    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;
+};
diff --git a/static/vendor/d3-2.8.1/src/end.js b/static/vendor/d3-2.8.1/src/end.js
new file mode 100755 (executable)
index 0000000..0319a0f
--- /dev/null
@@ -0,0 +1 @@
+})();
diff --git a/static/vendor/d3-2.8.1/src/geo/albers.js b/static/vendor/d3-2.8.1/src/geo/albers.js
new file mode 100755 (executable)
index 0000000..949163b
--- /dev/null
@@ -0,0 +1,126 @@
+// Derived from Tom Carden's Albers implementation for Protovis.
+// http://gist.github.com/476238
+// http://mathworld.wolfram.com/AlbersEqual-AreaConicProjection.html
+
+d3.geo.albers = function() {
+  var origin = [-98, 38],
+      parallels = [29.5, 45.5],
+      scale = 1000,
+      translate = [480, 250],
+      lng0, // d3_geo_radians * origin[0]
+      n,
+      C,
+      p0;
+
+  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]
+    ];
+  }
+
+  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
+    ];
+  };
+
+  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;
+  }
+
+  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();
+};
+
+// A composite projection for the United States, 960x500. The set of standard
+// parallels for each region comes from USGS, which is published here:
+// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers
+// TODO allow the composite projection to be rescaled?
+d3.geo.albersUsa = function() {
+  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]);
+
+  function albersUsa(coordinates) {
+    var lon = coordinates[0],
+        lat = coordinates[1];
+    return (lat > 50 ? alaska
+        : lon < -140 ? hawaii
+        : lat < 21 ? puertoRico
+        : lower48)(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() / 1000,
+        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());
+};
diff --git a/static/vendor/d3-2.8.1/src/geo/azimuthal.js b/static/vendor/d3-2.8.1/src/geo/azimuthal.js
new file mode 100755 (executable)
index 0000000..75cf27b
--- /dev/null
@@ -0,0 +1,80 @@
+// TODO clip input coordinates on opposite hemisphere
+d3.geo.azimuthal = function() {
+  var mode = "orthographic", // or stereographic, gnomonic, equidistant or equalarea
+      origin,
+      scale = 200,
+      translate = [480, 250],
+      x0,
+      y0,
+      cy0,
+      sy0;
+
+  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]
+    ];
+  }
+
+  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]);
+};
diff --git a/static/vendor/d3-2.8.1/src/geo/bonne.js b/static/vendor/d3-2.8.1/src/geo/bonne.js
new file mode 100755 (executable)
index 0000000..eea5b0d
--- /dev/null
@@ -0,0 +1,70 @@
+d3.geo.bonne = function() {
+  var scale = 200,
+      translate = [480, 250],
+      x0, // origin longitude in radians
+      y0, // origin latitude in radians
+      y1, // parallel latitude in radians
+      c1; // cot(y1)
+
+  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]
+    ];
+  }
+
+  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
+    ];
+  };
+
+  // 90° for Werner, 0° for Sinusoidal
+  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);
+};
diff --git a/static/vendor/d3-2.8.1/src/geo/bounds.js b/static/vendor/d3-2.8.1/src/geo/bounds.js
new file mode 100755 (executable)
index 0000000..741a084
--- /dev/null
@@ -0,0 +1,83 @@
+/**
+ * Given a GeoJSON object, returns the corresponding bounding box. The bounding
+ * box is represented by a two-dimensional array: [[left, bottom], [right,
+ * top]], where left is the minimum longitude, bottom is the minimum latitude,
+ * right is maximum longitude, and top is the maximum latitude.
+ */
+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]];
+};
+
+function d3_geo_bounds(o, f) {
+  if (d3_geo_boundsTypes.hasOwnProperty(o.type)) d3_geo_boundsTypes[o.type](o, f);
+}
+
+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
+};
+
+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]);
+  }
+}
diff --git a/static/vendor/d3-2.8.1/src/geo/circle.js b/static/vendor/d3-2.8.1/src/geo/circle.js
new file mode 100755 (executable)
index 0000000..10ad72c
--- /dev/null
@@ -0,0 +1,146 @@
+// TODO breakAtDateLine?
+
+d3.geo.circle = function() {
+  var origin = [0, 0],
+      degrees = 90 - 1e-2,
+      radians = degrees * d3_geo_radians,
+      arc = d3.geo.greatArc().target(Object);
+
+  function circle() {
+    // TODO render a circle as a Polygon
+  }
+
+  function visible(point) {
+    return arc.distance(point) < radians;
+  }
+
+  circle.clip = function(d) {
+    arc.source(typeof origin === "function" ? origin.apply(this, arguments) : origin);
+    return clipType(d);
+  };
+
+  var clipType = d3_geo_type({
+
+    FeatureCollection: function(o) {
+      var features = o.features.map(clipType).filter(Object);
+      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(Object);
+      return geometries.length && (o = Object.create(o), o.geometries = geometries, o);
+    }
+
+  });
+
+  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;
+    }
+
+    if (p1 && clipped.length) {
+      d1 = arc.distance(p2 = clipped[0]);
+      clipped.push(d3_geo_greatArcInterpolate(p1, p2)((d0 - radians) / (d0 - d1)));
+    }
+
+    return resample(clipped);
+  }
+
+  // Resample coordinates, creating great arcs between each.
+  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;
+  }
+
+  circle.origin = function(x) {
+    if (!arguments.length) return origin;
+    origin = x;
+    return circle;
+  };
+
+  circle.angle = function(x) {
+    if (!arguments.length) return degrees;
+    radians = (degrees = +x) * d3_geo_radians;
+    return circle;
+  };
+
+  // Precision is specified in degrees.
+  circle.precision = function(x) {
+    if (!arguments.length) return arc.precision();
+    arc.precision(x);
+    return circle;
+  };
+
+  return circle;
+}
diff --git a/static/vendor/d3-2.8.1/src/geo/equirectangular.js b/static/vendor/d3-2.8.1/src/geo/equirectangular.js
new file mode 100755 (executable)
index 0000000..f1655ad
--- /dev/null
@@ -0,0 +1,36 @@
+d3.geo.equirectangular = function() {
+  var scale = 500,
+      translate = [480, 250];
+
+  function equirectangular(coordinates) {
+    var x = coordinates[0] / 360,
+        y = -coordinates[1] / 360;
+    return [
+      scale * x + translate[0],
+      scale * y + translate[1]
+    ];
+  }
+
+  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;
+};
diff --git a/static/vendor/d3-2.8.1/src/geo/geo.js b/static/vendor/d3-2.8.1/src/geo/geo.js
new file mode 100755 (executable)
index 0000000..0e9679b
--- /dev/null
@@ -0,0 +1,3 @@
+d3.geo = {};
+
+var d3_geo_radians = Math.PI / 180;
diff --git a/static/vendor/d3-2.8.1/src/geo/greatArc.js b/static/vendor/d3-2.8.1/src/geo/greatArc.js
new file mode 100755 (executable)
index 0000000..b012467
--- /dev/null
@@ -0,0 +1,80 @@
+d3.geo.greatArc = function() {
+  var source = d3_geo_greatArcSource,
+      target = d3_geo_greatArcTarget,
+      precision = 6 * d3_geo_radians;
+
+  function greatArc() {
+    var a = typeof source === "function" ? source.apply(this, arguments) : source,
+        b = typeof target === "function" ? target.apply(this, arguments) : target,
+        i = d3_geo_greatArcInterpolate(a, b),
+        dt = precision / i.d,
+        t = 0,
+        coordinates = [a];
+    while ((t += dt) < 1) coordinates.push(i(t));
+    coordinates.push(b);
+    return {
+      type: "LineString",
+      coordinates: coordinates
+    };
+  }
+
+  // Length returned in radians; multiply by radius for distance.
+  greatArc.distance = function() {
+    var a = typeof source === "function" ? source.apply(this, arguments) : source,
+        b = typeof target === "function" ? target.apply(this, arguments) : target;
+     return d3_geo_greatArcInterpolate(a, b).d;
+  };
+
+  greatArc.source = function(x) {
+    if (!arguments.length) return source;
+    source = x;
+    return greatArc;
+  };
+
+  greatArc.target = function(x) {
+    if (!arguments.length) return target;
+    target = x;
+    return greatArc;
+  };
+
+  // Precision is specified in degrees.
+  greatArc.precision = function(x) {
+    if (!arguments.length) return precision / d3_geo_radians;
+    precision = x * d3_geo_radians;
+    return greatArc;
+  };
+
+  return greatArc;
+};
+
+function d3_geo_greatArcSource(d) {
+  return d.source;
+}
+
+function d3_geo_greatArcTarget(d) {
+  return d.target;
+}
+
+function d3_geo_greatArcInterpolate(a, b) {
+  var x0 = a[0] * d3_geo_radians, cx0 = Math.cos(x0), sx0 = Math.sin(x0),
+      y0 = a[1] * d3_geo_radians, cy0 = Math.cos(y0), sy0 = Math.sin(y0),
+      x1 = b[0] * d3_geo_radians, cx1 = Math.cos(x1), sx1 = Math.sin(x1),
+      y1 = b[1] * d3_geo_radians, cy1 = Math.cos(y1), sy1 = Math.sin(y1),
+      d = interpolate.d = Math.acos(Math.max(-1, Math.min(1, sy0 * sy1 + cy0 * cy1 * Math.cos(x1 - x0)))),
+      sd = Math.sin(d);
+
+  // From http://williams.best.vwh.net/avform.htm#Intermediate
+  function interpolate(t) {
+    var A = Math.sin(d - (t *= d)) / sd,
+        B = Math.sin(t) / sd,
+        x = A * cy0 * cx0 + B * cy1 * cx1,
+        y = A * cy0 * sx0 + B * cy1 * sx1,
+        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
+    ];
+  }
+
+  return interpolate;
+}
diff --git a/static/vendor/d3-2.8.1/src/geo/greatCircle.js b/static/vendor/d3-2.8.1/src/geo/greatCircle.js
new file mode 100755 (executable)
index 0000000..2e98f36
--- /dev/null
@@ -0,0 +1 @@
+d3.geo.greatCircle = d3.geo.circle;
diff --git a/static/vendor/d3-2.8.1/src/geo/mercator.js b/static/vendor/d3-2.8.1/src/geo/mercator.js
new file mode 100755 (executable)
index 0000000..601430e
--- /dev/null
@@ -0,0 +1,36 @@
+d3.geo.mercator = function() {
+  var scale = 500,
+      translate = [480, 250];
+
+  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]
+    ];
+  }
+
+  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;
+};
diff --git a/static/vendor/d3-2.8.1/src/geo/path.js b/static/vendor/d3-2.8.1/src/geo/path.js
new file mode 100755 (executable)
index 0000000..828db4a
--- /dev/null
@@ -0,0 +1,271 @@
+/**
+ * Returns a function that, given a GeoJSON object (e.g., a feature), returns
+ * the corresponding SVG path. The function can be customized by overriding the
+ * projection. Point features are mapped to circles with a default radius of
+ * 4.5px; the radius can be specified either as a constant or a function that
+ * is evaluated per object.
+ */
+d3.geo.path = function() {
+  var pointRadius = 4.5,
+      pointCircle = d3_path_circle(pointRadius),
+      projection = d3.geo.albersUsa();
+
+  function path(d, i) {
+    if (typeof pointRadius === "function") {
+      pointCircle = d3_path_circle(pointRadius.apply(this, arguments));
+    }
+    return pathType(d) || null;
+  }
+
+  function project(coordinates) {
+    return projection(coordinates).join(",");
+  }
+
+  var pathType = d3_geo_type({
+
+    FeatureCollection: function(o) {
+      var path = [],
+          features = o.features,
+          i = -1, // features.index
+          n = features.length;
+      while (++i < n) path.push(pathType(features[i].geometry));
+      return path.join("");
+    },
+
+    Feature: function(o) {
+      return pathType(o.geometry);
+    },
+
+    Point: function(o) {
+      return "M" + project(o.coordinates) + pointCircle;
+    },
+
+    MultiPoint: function(o) {
+      var path = [],
+          coordinates = o.coordinates,
+          i = -1, // coordinates.index
+          n = coordinates.length;
+      while (++i < n) path.push("M", project(coordinates[i]), pointCircle);
+      return path.join("");
+    },
+
+    LineString: function(o) {
+      var path = ["M"],
+          coordinates = o.coordinates,
+          i = -1, // coordinates.index
+          n = coordinates.length;
+      while (++i < n) path.push(project(coordinates[i]), "L");
+      path.pop();
+      return path.join("");
+    },
+
+    MultiLineString: function(o) {
+      var path = [],
+          coordinates = o.coordinates,
+          i = -1, // coordinates.index
+          n = coordinates.length,
+          subcoordinates, // coordinates[i]
+          j, // subcoordinates.index
+          m; // subcoordinates.length
+      while (++i < n) {
+        subcoordinates = coordinates[i];
+        j = -1;
+        m = subcoordinates.length;
+        path.push("M");
+        while (++j < m) path.push(project(subcoordinates[j]), "L");
+        path.pop();
+      }
+      return path.join("");
+    },
+
+    Polygon: function(o) {
+      var path = [],
+          coordinates = o.coordinates,
+          i = -1, // coordinates.index
+          n = coordinates.length,
+          subcoordinates, // coordinates[i]
+          j, // subcoordinates.index
+          m; // subcoordinates.length
+      while (++i < n) {
+        subcoordinates = coordinates[i];
+        j = -1;
+        if ((m = subcoordinates.length - 1) > 0) {
+          path.push("M");
+          while (++j < m) path.push(project(subcoordinates[j]), "L");
+          path[path.length - 1] = "Z";
+        }
+      }
+      return path.join("");
+    },
+
+    MultiPolygon: function(o) {
+      var path = [],
+          coordinates = o.coordinates,
+          i = -1, // coordinates index
+          n = coordinates.length,
+          subcoordinates, // coordinates[i]
+          j, // subcoordinates index
+          m, // subcoordinates.length
+          subsubcoordinates, // subcoordinates[j]
+          k, // subsubcoordinates index
+          p; // subsubcoordinates.length
+      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) {
+            path.push("M");
+            while (++k < p) path.push(project(subsubcoordinates[k]), "L");
+            path[path.length - 1] = "Z";
+          }
+        }
+      }
+      return path.join("");
+    },
+
+    GeometryCollection: function(o) {
+      var path = [],
+          geometries = o.geometries,
+          i = -1, // geometries index
+          n = geometries.length;
+      while (++i < n) path.push(pathType(geometries[i]));
+      return path.join("");
+    }
+
+  });
+
+  var areaType = path.area = d3_geo_type({
+
+    FeatureCollection: function(o) {
+      var area = 0,
+          features = o.features,
+          i = -1, // features.index
+          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, // coordinates index
+          n = coordinates.length;
+      while (++i < n) sum += polygonArea(coordinates[i]);
+      return sum;
+    },
+
+    GeometryCollection: function(o) {
+      var sum = 0,
+          geometries = o.geometries,
+          i = -1, // geometries index
+          n = geometries.length;
+      while (++i < n) sum += areaType(geometries[i]);
+      return sum;
+    }
+
+  }, 0);
+
+  function polygonArea(coordinates) {
+    var sum = area(coordinates[0]), // exterior ring
+        i = 0, // coordinates.index
+        n = coordinates.length;
+    while (++i < n) sum -= area(coordinates[i]); // holes
+    return sum;
+  }
+
+  function polygonCentroid(coordinates) {
+    var polygon = d3.geom.polygon(coordinates[0].map(projection)), // exterior ring
+        area = polygon.area(),
+        centroid = polygon.centroid(area < 0 ? (area *= -1, 1) : -1),
+        x = centroid[0],
+        y = centroid[1],
+        z = area,
+        i = 0, // coordinates index
+        n = coordinates.length;
+    while (++i < n) {
+      polygon = d3.geom.polygon(coordinates[i].map(projection)); // holes
+      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]; // weighted centroid
+  }
+
+  var centroidType = path.centroid = d3_geo_type({
+
+    // TODO FeatureCollection
+    // TODO Point
+    // TODO MultiPoint
+    // TODO LineString
+    // TODO MultiLineString
+    // TODO GeometryCollection
+
+    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, // coordinates index
+          n = coordinates.length;
+      while (++i < n) {
+        centroid = polygonCentroid(coordinates[i]);
+        x += centroid[0];
+        y += centroid[1];
+        z += centroid[2];
+      }
+      return [x / z, y / z];
+    }
+
+  });
+
+  function area(coordinates) {
+    return Math.abs(d3.geom.polygon(coordinates.map(projection)).area());
+  }
+
+  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;
+};
+
+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";
+}
diff --git a/static/vendor/d3-2.8.1/src/geo/type.js b/static/vendor/d3-2.8.1/src/geo/type.js
new file mode 100755 (executable)
index 0000000..7998269
--- /dev/null
@@ -0,0 +1,5 @@
+function d3_geo_type(types, defaultValue) {
+  return function(object) {
+    return object && types.hasOwnProperty(object.type) ? types[object.type](object) : defaultValue;
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/geom/contour.js b/static/vendor/d3-2.8.1/src/geom/contour.js
new file mode 100755 (executable)
index 0000000..2374ec1
--- /dev/null
@@ -0,0 +1,78 @@
+/**
+ * Computes a contour for a given input grid function using the <a
+ * href="http://en.wikipedia.org/wiki/Marching_squares">marching
+ * squares</a> algorithm. Returns the contour polygon as an array of points.
+ *
+ * @param grid a two-input function(x, y) that returns true for values
+ * inside the contour and false for values outside the contour.
+ * @param start an optional starting point [x, y] on the grid.
+ * @returns polygon [[x1, y1], [x2, y2], â€¦]
+ */
+d3.geom.contour = function(grid, start) {
+  var s = start || d3_geom_contourStart(grid), // starting point
+      c = [],    // contour polygon
+      x = s[0],  // current x position
+      y = s[1],  // current y position
+      dx = 0,    // next x direction
+      dy = 0,    // next y direction
+      pdx = NaN, // previous x direction
+      pdy = NaN, // previous y direction
+      i = 0;
+
+  do {
+    // determine marching squares index
+    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;
+
+    // determine next direction
+    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];
+    }
+
+    // update contour polygon
+    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;
+};
+
+// lookup tables for marching directions
+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];
+
+function d3_geom_contourStart(grid) {
+  var x = 0,
+      y = 0;
+
+  // search for a starting point; begin at origin
+  // and proceed along outward-expanding diagonals
+  while (true) {
+    if (grid(x,y)) {
+      return [x,y];
+    }
+    if (x === 0) {
+      x = y + 1;
+      y = 0;
+    } else {
+      x = x - 1;
+      y = y + 1;
+    }
+  }
+}
diff --git a/static/vendor/d3-2.8.1/src/geom/delaunay.js b/static/vendor/d3-2.8.1/src/geom/delaunay.js
new file mode 100755 (executable)
index 0000000..4088ce4
--- /dev/null
@@ -0,0 +1,31 @@
+/**
+* @param vertices [[x1, y1], [x2, y2], â€¦]
+* @returns triangles [[[x1, y1], [x2, y2], [x3, y3]], â€¦]
+ */
+d3.geom.delaunay = function(vertices) {
+  var edges = vertices.map(function() { return []; }),
+      triangles = [];
+
+  // Use the Voronoi tessellation to determine Delaunay edges.
+  d3_voronoi_tessellate(vertices, function(e) {
+    edges[e.region.l.index].push(vertices[e.region.r.index]);
+  });
+
+  // Reconnect the edges into counterclockwise triangles.
+  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;
+};
diff --git a/static/vendor/d3-2.8.1/src/geom/geom.js b/static/vendor/d3-2.8.1/src/geom/geom.js
new file mode 100755 (executable)
index 0000000..b17c4fc
--- /dev/null
@@ -0,0 +1 @@
+d3.geom = {};
diff --git a/static/vendor/d3-2.8.1/src/geom/hull.js b/static/vendor/d3-2.8.1/src/geom/hull.js
new file mode 100755 (executable)
index 0000000..b6a5be0
--- /dev/null
@@ -0,0 +1,98 @@
+/**
+ * Computes the 2D convex hull of a set of points using Graham's scanning
+ * algorithm. The algorithm has been implemented as described in Cormen,
+ * Leiserson, and Rivest's Introduction to Algorithms. The running time of
+ * this algorithm is O(n log n), where n is the number of input points.
+ *
+ * @param vertices [[x1, y1], [x2, y2], â€¦]
+ * @returns polygon [[x1, y1], [x2, y2], â€¦]
+ */
+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;
+
+  // find the starting ref point: leftmost point with the minimum y coord
+  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);
+    }
+  }
+
+  // calculate polar angles from ref point and sort
+  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; });
+
+  // toss out duplicate angles
+  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) {
+      // keep angle for point most distant from the reference
+      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;
+    }
+  }
+
+  // initialize the stack
+  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;
+
+  // do graham's scan
+  for (; j<plen; ++j) {
+    if (points[j].index === -1) continue; // skip tossed out points
+    while (!d3_geom_hullCCW(stack[sp-2], stack[sp-1], points[j].index, vertices)) {
+      --sp;
+    }
+    stack[sp++] = points[j].index;
+  }
+
+  // construct the hull
+  var poly = [];
+  for (i=0; i<sp; ++i) {
+    poly.push(vertices[stack[i]]);
+  }
+  return poly;
+}
+
+// are three points in counter-clockwise order?
+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;
+}
diff --git a/static/vendor/d3-2.8.1/src/geom/polygon.js b/static/vendor/d3-2.8.1/src/geom/polygon.js
new file mode 100755 (executable)
index 0000000..2e62595
--- /dev/null
@@ -0,0 +1,88 @@
+// Note: requires coordinates to be counterclockwise and convex!
+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];
+  };
+
+  // The Sutherland-Hodgman clipping algorithm.
+  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]);
+}
+
+// Intersect two infinite lines cd and ab.
+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];
+}
diff --git a/static/vendor/d3-2.8.1/src/geom/quadtree.js b/static/vendor/d3-2.8.1/src/geom/quadtree.js
new file mode 100755 (executable)
index 0000000..86d11ca
--- /dev/null
@@ -0,0 +1,129 @@
+// Constructs a new quadtree for the specified array of points. A quadtree is a
+// two-dimensional recursive spatial subdivision. This implementation uses
+// square partitions, dividing each square into four equally-sized squares. Each
+// point exists in a unique node; if multiple points are in the same position,
+// some points may be stored on internal nodes rather than leaf nodes. Quadtrees
+// can be used to accelerate various spatial operations, such as the Barnes-Hut
+// approximation for computing n-body forces, or collision detection.
+d3.geom.quadtree = function(points, x1, y1, x2, y2) {
+  var p,
+      i = -1,
+      n = points.length;
+
+  // Type conversion for deprecated API.
+  if (n && isNaN(points[0].x)) points = points.map(d3_geom_quadtreePoint);
+
+  // Allow bounds to be specified explicitly.
+  if (arguments.length < 5) {
+    if (arguments.length === 3) {
+      y2 = x2 = y1;
+      y1 = x1;
+    } else {
+      x1 = y1 = Infinity;
+      x2 = y2 = -Infinity;
+
+      // Compute bounds.
+      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;
+      }
+
+      // Squarify the bounds.
+      var dx = x2 - x1,
+          dy = y2 - y1;
+      if (dx > dy) y2 = y1 + dx;
+      else x2 = x1 + dy;
+    }
+  }
+
+  // Recursively inserts the specified point p at the node n or one of its
+  // descendants. The bounds are defined by [x1, x2] and [y1, y2].
+  function insert(n, p, x1, y1, x2, y2) {
+    if (isNaN(p.x) || isNaN(p.y)) return; // ignore invalid points
+    if (n.leaf) {
+      var v = n.point;
+      if (v) {
+        // If the point at this leaf node is at the same position as the new
+        // point we are adding, we leave the point associated with the
+        // internal node while adding the new point to a child node. This
+        // avoids infinite recursion.
+        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);
+    }
+  }
+
+  // Recursively inserts the specified point p into a descendant of node n. The
+  // bounds are defined by [x1, x2] and [y1, y2].
+  function insertChild(n, p, x1, y1, x2, y2) {
+    // Compute the split point, and the quadrant in which to insert p.
+    var sx = (x1 + x2) * .5,
+        sy = (y1 + y2) * .5,
+        right = p.x >= sx,
+        bottom = p.y >= sy,
+        i = (bottom << 1) + right;
+
+    // Recursively insert into the child node.
+    n.leaf = false;
+    n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
+
+    // Update the bounds as we recurse.
+    if (right) x1 = sx; else x2 = sx;
+    if (bottom) y1 = sy; else y2 = sy;
+    insert(n, p, x1, y1, x2, y2);
+  }
+
+  // Create the root node.
+  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);
+  };
+
+  // Insert all points.
+  points.forEach(root.add);
+  return root;
+};
+
+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]
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/geom/voronoi.js b/static/vendor/d3-2.8.1/src/geom/voronoi.js
new file mode 100755 (executable)
index 0000000..09602eb
--- /dev/null
@@ -0,0 +1,409 @@
+// Adapted from Nicolas Garcia Belmonte's JIT implementation:
+// http://blog.thejit.org/2010/02/12/voronoi-tessellation/
+// http://blog.thejit.org/assets/voronoijs/voronoi.js
+// See lib/jit/LICENSE for details.
+
+// Notes:
+//
+// This implementation does not clip the returned polygons, so if you want to
+// clip them to a particular shape you will need to do that either in SVG or by
+// post-processing with d3.geom.polygon's clip method.
+//
+// If any vertices are coincident or have NaN positions, the behavior of this
+// method is undefined. Most likely invalid polygons will be returned. You
+// should filter invalid points, and consolidate coincident points, before
+// computing the tessellation.
+
+/**
+ * @param vertices [[x1, y1], [x2, y2], â€¦]
+ * @returns polygons [[[x1, y1], [x2, y2], â€¦], â€¦]
+ */
+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);
+  });
+
+  // Reconnect the polygon segments into counterclockwise loops.
+  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"};
+
+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 /* e.b == 1 */ {
+        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))) { //new site is smallest
+      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()) { //intersection is smallest
+      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;
+    }
+  }//end while
+
+  for (lbnd = EdgeList.right(EdgeList.leftEnd);
+      lbnd != EdgeList.rightEnd;
+      lbnd = EdgeList.right(lbnd)) {
+    callback(lbnd.edge);
+  }
+}
diff --git a/static/vendor/d3-2.8.1/src/layout/bundle.js b/static/vendor/d3-2.8.1/src/layout/bundle.js
new file mode 100755 (executable)
index 0000000..947d67a
--- /dev/null
@@ -0,0 +1,57 @@
+// Implements hierarchical edge bundling using Holten's algorithm. For each
+// input link, a path is computed that travels through the tree, up the parent
+// hierarchy to the least common ancestor, and then back down to the destination
+// node. Each path is simply an array of nodes.
+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;
+}
diff --git a/static/vendor/d3-2.8.1/src/layout/chord.js b/static/vendor/d3-2.8.1/src/layout/chord.js
new file mode 100755 (executable)
index 0000000..c569d92
--- /dev/null
@@ -0,0 +1,153 @@
+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 = [];
+
+    // Compute the sum.
+    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;
+    }
+
+    // Sort groups…
+    if (sortGroups) {
+      groupIndex.sort(function(a, b) {
+        return sortGroups(groupSums[a], groupSums[b]);
+      });
+    }
+
+    // Sort subgroups…
+    if (sortSubgroups) {
+      subgroupIndex.forEach(function(d, i) {
+        d.sort(function(a, b) {
+          return sortSubgroups(matrix[i][a], matrix[i][b]);
+        });
+      });
+    }
+
+    // Convert the sum to scaling factor for [0, 2pi].
+    // TODO Allow start and end angle to be specified.
+    // TODO Allow padding to be specified as percentage?
+    k = (2 * Math.PI - padding * n) / k;
+
+    // Compute the start and end angle for each group and subgroup.
+    // Note: Opera has a bug reordering object literal properties!
+    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.push({
+        index: di,
+        startAngle: x0,
+        endAngle: x,
+        value: (x - x0) / k
+      });
+      x += padding;
+    }
+
+    // Generate chords for each (non-empty) subgroup-subgroup link.
+    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;
+};
diff --git a/static/vendor/d3-2.8.1/src/layout/cluster.js b/static/vendor/d3-2.8.1/src/layout/cluster.js
new file mode 100755 (executable)
index 0000000..1e16c3a
--- /dev/null
@@ -0,0 +1,79 @@
+// Implements a hierarchical layout using the cluster (or dendrogram)
+// algorithm.
+d3.layout.cluster = function() {
+  var hierarchy = d3.layout.hierarchy().sort(null).value(null),
+      separation = d3_layout_treeSeparation,
+      size = [1, 1]; // width, height
+
+  function cluster(d, i) {
+    var nodes = hierarchy.call(this, d, i),
+        root = nodes[0],
+        previousNode,
+        x = 0,
+        kx,
+        ky;
+
+    // First walk, computing the initial x & y values.
+    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;
+      }
+    });
+
+    // Compute the left-most, right-most, and depth-most nodes for extents.
+    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;
+
+    // Second walk, normalizing x & y to the desired size.
+    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;
+}
diff --git a/static/vendor/d3-2.8.1/src/layout/force.js b/static/vendor/d3-2.8.1/src/layout/force.js
new file mode 100755 (executable)
index 0000000..0ca0c3a
--- /dev/null
@@ -0,0 +1,355 @@
+// A rudimentary force layout using Gauss-Seidel.
+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,
+      interval,
+      nodes = [],
+      links = [],
+      distances,
+      strengths,
+      charges;
+
+  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);
+
+        /* Barnes-Hut criterion. */
+        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() {
+    // simulated annealing, basically
+    if ((alpha *= .99) < .005) {
+      event.end({type: "end", alpha: alpha = 0});
+      return true;
+    }
+
+    var n = nodes.length,
+        m = links.length,
+        q,
+        i, // current index
+        o, // current object
+        s, // current source
+        t, // current target
+        l, // current distance
+        k, // current force
+        x, // x-distance
+        y; // y-distance
+
+    // gauss-seidel relaxation for links
+    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;
+      }
+    }
+
+    // apply gravity forces
+    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;
+      }
+    }
+
+    // compute quadtree center of mass and apply charge forces
+    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));
+        }
+      }
+    }
+
+    // position verlet integration
+    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;
+  };
+
+  // For backwards-compatibility.
+  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 we're already running
+      if (x > 0) alpha = x; // we might keep it hot
+      else alpha = 0; // or, next tick will dispatch "end"
+    } else if (x > 0) { // otherwise, fire it up!
+      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;
+    }
+
+    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;
+      }
+    }
+
+    // initialize node position based on first neighbor
+    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;
+    }
+
+    // initialize neighbors lazily
+    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);
+  };
+
+  // use `node.call(force.drag)` to make nodes draggable
+  force.drag = function() {
+    if (!drag) drag = d3.behavior.drag()
+        .origin(Object)
+        .on("dragstart", dragstart)
+        .on("drag", d3_layout_forceDrag)
+        .on("dragend", d3_layout_forceDragEnd);
+
+    this.on("mouseover.force", d3_layout_forceDragOver)
+        .on("mouseout.force", d3_layout_forceDragOut)
+        .call(drag);
+  };
+
+  function dragstart(d) {
+    d3_layout_forceDragOver(d3_layout_forceDragNode = d);
+    d3_layout_forceDragForce = force;
+  }
+
+  return d3.rebind(force, event, "on");
+};
+
+var d3_layout_forceDragForce,
+    d3_layout_forceDragNode;
+
+function d3_layout_forceDragOver(d) {
+  d.fixed |= 2;
+}
+
+function d3_layout_forceDragOut(d) {
+  if (d !== d3_layout_forceDragNode) d.fixed &= 1;
+}
+
+function d3_layout_forceDragEnd() {
+  d3_layout_forceDragNode.fixed &= 1;
+  d3_layout_forceDragForce = d3_layout_forceDragNode = null;
+}
+
+function d3_layout_forceDrag() {
+  d3_layout_forceDragNode.px = d3.event.x;
+  d3_layout_forceDragNode.py = d3.event.y;
+  d3_layout_forceDragForce.resume(); // restart annealing
+}
+
+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) {
+    // jitter internal nodes that are coincident
+    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;
+}
diff --git a/static/vendor/d3-2.8.1/src/layout/hierarchy.js b/static/vendor/d3-2.8.1/src/layout/hierarchy.js
new file mode 100755 (executable)
index 0000000..b970ec6
--- /dev/null
@@ -0,0 +1,120 @@
+d3.layout.hierarchy = function() {
+  var sort = d3_layout_hierarchySort,
+      children = d3_layout_hierarchyChildren,
+      value = d3_layout_hierarchyValue;
+
+  // Recursively compute the node depth and value.
+  // Also converts the data representation into a standard hierarchy structure.
+  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;
+      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;
+  }
+
+  // Recursively re-evaluates the node value.
+  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;
+  }
+
+  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;
+  };
+
+  // Re-evaluates the `value` property for the specified hierarchy.
+  hierarchy.revalue = function(root) {
+    revalue(root, 0);
+    return root;
+  };
+
+  return hierarchy;
+};
+
+// A method assignment helper for hierarchy subclasses.
+function d3_layout_hierarchyRebind(object, hierarchy) {
+  d3.rebind(object, hierarchy, "sort", "children", "value");
+
+  // Add an alias for links, for convenience.
+  object.links = d3_layout_hierarchyLinks;
+
+  // If the new API is used, enabling inlining.
+  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;
+}
+
+// Returns an array source+target objects for the specified nodes.
+function d3_layout_hierarchyLinks(nodes) {
+  return d3.merge(nodes.map(function(parent) {
+    return (parent.children || []).map(function(child) {
+      return {source: parent, target: child};
+    });
+  }));
+}
+
+// For backwards-compatibility, don't enable inlining by default.
+var d3_layout_hierarchyInline = false;
diff --git a/static/vendor/d3-2.8.1/src/layout/histogram.js b/static/vendor/d3-2.8.1/src/layout/histogram.js
new file mode 100755 (executable)
index 0000000..3ef2483
--- /dev/null
@@ -0,0 +1,102 @@
+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;
+
+    // Initialize the bins.
+    while (++i < m) {
+      bin = bins[i] = [];
+      bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);
+      bin.y = 0;
+    }
+
+    // Fill the bins, ignoring values outside the range.
+    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;
+  }
+
+  // Specifies how to extract a value from the associated data. The default
+  // value function is `Number`, which is equivalent to the identity function.
+  histogram.value = function(x) {
+    if (!arguments.length) return valuer;
+    valuer = x;
+    return histogram;
+  };
+
+  // Specifies the range of the histogram. Values outside the specified range
+  // will be ignored. The argument `x` may be specified either as a two-element
+  // array representing the minimum and maximum value of the range, or as a
+  // function that returns the range given the array of values and the current
+  // index `i`. The default range is the extent (minimum and maximum) of the
+  // values.
+  histogram.range = function(x) {
+    if (!arguments.length) return ranger;
+    ranger = d3.functor(x);
+    return histogram;
+  };
+
+  // Specifies how to bin values in the histogram. The argument `x` may be
+  // specified as a number, in which case the range of values will be split
+  // uniformly into the given number of bins. Or, `x` may be an array of
+  // threshold values, defining the bins; the specified array must contain the
+  // rightmost (upper) value, thus specifying n + 1 values for n bins. Or, `x`
+  // may be a function which is evaluated, being passed the range, the array of
+  // values, and the current index `i`, returning an array of thresholds. The
+  // default bin function will divide the values into uniform bins using
+  // Sturges' formula.
+  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;
+  };
+
+  // Specifies whether the histogram's `y` value is a count (frequency) or a
+  // probability (density). The default value is true.
+  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)];
+}
diff --git a/static/vendor/d3-2.8.1/src/layout/layout.js b/static/vendor/d3-2.8.1/src/layout/layout.js
new file mode 100755 (executable)
index 0000000..3bcbcce
--- /dev/null
@@ -0,0 +1 @@
+d3.layout = {};
diff --git a/static/vendor/d3-2.8.1/src/layout/pack.js b/static/vendor/d3-2.8.1/src/layout/pack.js
new file mode 100755 (executable)
index 0000000..821816f
--- /dev/null
@@ -0,0 +1,195 @@
+d3.layout.pack = function() {
+  var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort),
+      size = [1, 1];
+
+  function pack(d, i) {
+    var nodes = hierarchy.call(this, d, i),
+        root = nodes[0];
+
+    // Recursively compute the layout.
+    root.x = 0;
+    root.y = 0;
+    d3_layout_packTree(root);
+
+    // Scale the layout to fit the requested size.
+    var w = size[0],
+        h = size[1],
+        k = 1 / Math.max(2 * root.r / w, 2 * root.r / h);
+    d3_layout_packTransform(root, w / 2, h / 2, k);
+
+    return nodes;
+  }
+
+  pack.size = function(x) {
+    if (!arguments.length) return size;
+    size = x;
+    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; // within epsilon
+}
+
+function d3_layout_packCircle(nodes) {
+  var xMin = Infinity,
+      xMax = -Infinity,
+      yMin = Infinity,
+      yMax = -Infinity,
+      n = nodes.length,
+      a, b, c, j, k;
+
+  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);
+  }
+
+  // Create node links.
+  nodes.forEach(d3_layout_packLink);
+
+  // Create first node.
+  a = nodes[0];
+  a.x = -a.r;
+  a.y = 0;
+  bound(a);
+
+  // Create second node.
+  if (n > 1) {
+    b = nodes[1];
+    b.x = b.r;
+    b.y = 0;
+    bound(b);
+
+    // Create third node and build chain.
+    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;
+
+      // Now iterate through the rest.
+      for (var i = 3; i < n; i++) {
+        d3_layout_packPlace(a, b, c = nodes[i]);
+
+        // Search for the closest intersection.
+        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;
+            }
+          }
+        }
+
+        // Update node chain.
+        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);
+        }
+      }
+    }
+  }
+
+  // Re-center the circles and return the encompassing radius.
+  var cx = (xMin + xMax) / 2,
+      cy = (yMin + yMax) / 2,
+      cr = 0;
+  for (var i = 0; i < n; i++) {
+    var node = nodes[i];
+    node.x -= cx;
+    node.y -= cy;
+    cr = Math.max(cr, node.r + Math.sqrt(node.x * node.x + node.y * node.y));
+  }
+
+  // Remove node links.
+  nodes.forEach(d3_layout_packUnlink);
+
+  return cr;
+}
+
+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_packTree(node) {
+  var children = node.children;
+  if (children && children.length) {
+    children.forEach(d3_layout_packTree);
+    node.r = d3_layout_packCircle(children);
+  } else {
+    node.r = Math.sqrt(node.value);
+  }
+}
+
+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 = Math.sqrt(dx * dx + dy * dy),
+        cos = Math.max(-1, Math.min(1, (db * db + dc * dc - da * da) / (2 * db * dc))),
+        theta = Math.acos(cos),
+        x = cos * (db /= dc),
+        y = Math.sin(theta) * db;
+    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;
+  }
+}
diff --git a/static/vendor/d3-2.8.1/src/layout/partition.js b/static/vendor/d3-2.8.1/src/layout/partition.js
new file mode 100755 (executable)
index 0000000..49257a9
--- /dev/null
@@ -0,0 +1,48 @@
+d3.layout.partition = function() {
+  var hierarchy = d3.layout.hierarchy(),
+      size = [1, 1]; // width, height
+
+  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);
+};
diff --git a/static/vendor/d3-2.8.1/src/layout/pie.js b/static/vendor/d3-2.8.1/src/layout/pie.js
new file mode 100755 (executable)
index 0000000..ee50d2e
--- /dev/null
@@ -0,0 +1,93 @@
+d3.layout.pie = function() {
+  var value = Number,
+      sort = d3_layout_pieSortByValue,
+      startAngle = 0,
+      endAngle = 2 * Math.PI;
+
+  function pie(data, i) {
+
+    // Compute the numeric values for each data element.
+    var values = data.map(function(d, i) { return +value.call(pie, d, i); });
+
+    // Compute the start angle.
+    var a = +(typeof startAngle === "function"
+        ? startAngle.apply(this, arguments)
+        : startAngle);
+
+    // Compute the angular scale factor: from value to radians.
+    var k = ((typeof endAngle === "function"
+        ? endAngle.apply(this, arguments)
+        : endAngle) - startAngle)
+        / d3.sum(values);
+
+    // Optionally sort the data.
+    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]); });
+
+    // Compute the arcs!
+    // They are stored in the original data's order.
+    var arcs = [];
+    index.forEach(function(i) {
+      arcs[i] = {
+        data: data[i],
+        value: d = values[i],
+        startAngle: a,
+        endAngle: a += d * k
+      };
+    });
+    return arcs;
+  }
+
+  /**
+   * Specifies the value function *x*, which returns a nonnegative numeric value
+   * for each datum. The default value function is `Number`. The value function
+   * is passed two arguments: the current datum and the current index.
+   */
+  pie.value = function(x) {
+    if (!arguments.length) return value;
+    value = x;
+    return pie;
+  };
+
+  /**
+   * Specifies a sort comparison operator *x*. The comparator is passed two data
+   * elements from the data array, a and b; it returns a negative value if a is
+   * less than b, a positive value if a is greater than b, and zero if a equals
+   * b.
+   */
+  pie.sort = function(x) {
+    if (!arguments.length) return sort;
+    sort = x;
+    return pie;
+  };
+
+  /**
+   * Specifies the overall start angle of the pie chart. Defaults to 0. The
+   * start angle can be specified either as a constant or as a function; in the
+   * case of a function, it is evaluated once per array (as opposed to per
+   * element).
+   */
+  pie.startAngle = function(x) {
+    if (!arguments.length) return startAngle;
+    startAngle = x;
+    return pie;
+  };
+
+  /**
+   * Specifies the overall end angle of the pie chart. Defaults to 2Ï€. The
+   * end angle can be specified either as a constant or as a function; in the
+   * case of a function, it is evaluated once per array (as opposed to per
+   * element).
+   */
+  pie.endAngle = function(x) {
+    if (!arguments.length) return endAngle;
+    endAngle = x;
+    return pie;
+  };
+
+  return pie;
+};
+
+var d3_layout_pieSortByValue = {};
diff --git a/static/vendor/d3-2.8.1/src/layout/stack.js b/static/vendor/d3-2.8.1/src/layout/stack.js
new file mode 100755 (executable)
index 0000000..12890c5
--- /dev/null
@@ -0,0 +1,241 @@
+// data is two-dimensional array of x,y; we populate y0
+d3.layout.stack = function() {
+  var values = Object,
+      order = d3_layout_stackOrderDefault,
+      offset = d3_layout_stackOffsetZero,
+      out = d3_layout_stackOut,
+      x = d3_layout_stackX,
+      y = d3_layout_stackY;
+
+  function stack(data, index) {
+
+    // Convert series to canonical two-dimensional representation.
+    var series = data.map(function(d, i) {
+      return values.call(stack, d, i);
+    });
+
+    // Convert each series to canonical [[x,y]] representation.
+    var points = series.map(function(d, i) {
+      return d.map(function(v, i) {
+        return [x.call(stack, v, i), y.call(stack, v, i)];
+      });
+    });
+
+    // Compute the order of series, and permute them.
+    var orders = order.call(stack, points, index);
+    series = d3.permute(series, orders);
+    points = d3.permute(points, orders);
+
+    // Compute the baseline…
+    var offsets = offset.call(stack, points, index);
+
+    // And propagate it to other series.
+    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,
+        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
+
+});
+
+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];
+}
diff --git a/static/vendor/d3-2.8.1/src/layout/tree.js b/static/vendor/d3-2.8.1/src/layout/tree.js
new file mode 100755 (executable)
index 0000000..5b112b6
--- /dev/null
@@ -0,0 +1,237 @@
+// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm
+d3.layout.tree = function() {
+  var hierarchy = d3.layout.hierarchy().sort(null).value(null),
+      separation = d3_layout_treeSeparation,
+      size = [1, 1]; // width, height
+
+  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;
+    }
+
+    // Initialize temporary layout variables.
+    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
+      };
+    });
+
+    // Compute the layout using Buchheim et al.'s algorithm.
+    firstWalk(root);
+    secondWalk(root, -root._tree.prelim);
+
+    // Compute the left-most, right-most, and depth-most nodes for extents.
+    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;
+
+    // Clear temporary layout variables; transform x and y.
+    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_treeSeparationRadial(a, b) {
+//   return (a.parent == b.parent ? 1 : 2) / a.depth;
+// }
+
+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;
+}
diff --git a/static/vendor/d3-2.8.1/src/layout/treemap.js b/static/vendor/d3-2.8.1/src/layout/treemap.js
new file mode 100755 (executable)
index 0000000..a0dbe61
--- /dev/null
@@ -0,0 +1,217 @@
+// Squarified Treemaps by Mark Bruls, Kees Huizing, and Jarke J. van Wijk
+// Modified to support a target aspect ratio by Jeff Heer
+d3.layout.treemap = function() {
+  var hierarchy = d3.layout.hierarchy(),
+      round = Math.round,
+      size = [1, 1], // width, height
+      padding = null,
+      pad = d3_layout_treemapPadNull,
+      sticky = false,
+      stickies,
+      ratio = 0.5 * (1 + Math.sqrt(5)); // golden ratio
+
+  // Compute the area for each child based on value & scale.
+  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;
+    }
+  }
+
+  // Recursively arranges the specified node's children into squarified rows.
+  function squarify(node) {
+    var children = node.children;
+    if (children && children.length) {
+      var rect = pad(node),
+          row = [],
+          remaining = children.slice(), // copy-on-write
+          child,
+          best = Infinity, // the best row score so far
+          score, // the current row score
+          u = Math.min(rect.dx, rect.dy), // initial orientation
+          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) { // continue with this orientation
+          remaining.pop();
+          best = score;
+        } else { // abort, and try a different orientation
+          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);
+    }
+  }
+
+  // Recursively resizes the specified node's children into existing rows.
+  // Preserves the existing layout!
+  function stickify(node) {
+    var children = node.children;
+    if (children && children.length) {
+      var rect = pad(node),
+          remaining = children.slice(), // copy-on-write
+          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);
+    }
+  }
+
+  // Computes the score for the specified row, as the worst aspect ratio.
+  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;
+  }
+
+  // Positions the specified row of nodes. Modifies `rect`.
+  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) { // horizontal subdivision
+      if (flush || v > rect.dy) v = rect.dy; // over+underflow
+      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; // rounding error
+      rect.y += v;
+      rect.dy -= v;
+    } else { // vertical subdivision
+      if (flush || v > rect.dx) v = rect.dx; // over+underflow
+      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; // rounding error
+      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;
+  };
+
+  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};
+}
diff --git a/static/vendor/d3-2.8.1/src/package.js b/static/vendor/d3-2.8.1/src/package.js
new file mode 100755 (executable)
index 0000000..17f132c
--- /dev/null
@@ -0,0 +1,20 @@
+require("../index");
+
+require("util").puts(JSON.stringify({
+  "name": "d3",
+  "version": d3.version,
+  "description": "A small, free JavaScript library for manipulating documents based on data.",
+  "keywords": ["dom", "w3c", "visualization", "svg", "animation", "canvas"],
+  "homepage": "http://mbostock.github.com/d3/",
+  "author": {"name": "Mike Bostock", "url": "http://bost.ocks.org/mike"},
+  "repository": {"type": "git", "url": "http://github.com/mbostock/d3.git"},
+  "main": "index.js",
+  "dependencies": {
+    "jsdom": "0.2.12"
+  },
+  "devDependencies": {
+    "uglify-js": "1.2.3",
+    "vows": "0.6.x"
+  },
+  "scripts": {"test": "./node_modules/vows/bin/vows"}
+}, null, 2));
diff --git a/static/vendor/d3-2.8.1/src/scale/bilinear.js b/static/vendor/d3-2.8.1/src/scale/bilinear.js
new file mode 100755 (executable)
index 0000000..ff01477
--- /dev/null
@@ -0,0 +1,7 @@
+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));
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/scale/category.js b/static/vendor/d3-2.8.1/src/scale/category.js
new file mode 100755 (executable)
index 0000000..0c6e57a
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * This product includes color specifications and designs developed by Cynthia
+ * Brewer (http://colorbrewer.org/). See lib/colorbrewer for more information.
+ */
+
+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"
+];
diff --git a/static/vendor/d3-2.8.1/src/scale/identity.js b/static/vendor/d3-2.8.1/src/scale/identity.js
new file mode 100755 (executable)
index 0000000..759cb6c
--- /dev/null
@@ -0,0 +1,30 @@
+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) {
+    return d3_scale_linearTickFormat(domain, m);
+  };
+
+  identity.copy = function() {
+    return d3_scale_identity(domain);
+  };
+
+  return identity;
+}
diff --git a/static/vendor/d3-2.8.1/src/scale/linear.js b/static/vendor/d3-2.8.1/src/scale/linear.js
new file mode 100755 (executable)
index 0000000..d63b41c
--- /dev/null
@@ -0,0 +1,110 @@
+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);
+  }
+
+  // Note: requires range is coercible to number!
+  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 {
+    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;
+
+  // Filter ticks to get closer to the desired count.
+  if (err <= .15) step *= 10;
+  else if (err <= .35) step *= 5;
+  else if (err <= .75) step *= 2;
+
+  // Round start and stop values to step interval.
+  extent[0] = Math.ceil(extent[0] / step) * step;
+  extent[1] = Math.floor(extent[1] / step) * step + step * .5; // inclusive
+  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");
+}
diff --git a/static/vendor/d3-2.8.1/src/scale/log.js b/static/vendor/d3-2.8.1/src/scale/log.js
new file mode 100755 (executable)
index 0000000..e5506cb
--- /dev/null
@@ -0,0 +1,85 @@
+d3.scale.log = function() {
+  return d3_scale_log(d3.scale.linear(), d3_scale_logp);
+};
+
+function d3_scale_log(linear, log) {
+  var pow = 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);
+    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++) {} // strip small values
+      for (j = ticks.length; ticks[j - 1] > v; j--) {} // strip big values
+      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 = 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);
+}
+
+var d3_scale_logFormat = d3.format(".0e");
+
+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;
+}
+
+d3_scale_logp.pow = function(x) {
+  return Math.pow(10, x);
+};
+
+d3_scale_logn.pow = function(x) {
+  return -Math.pow(10, -x);
+};
diff --git a/static/vendor/d3-2.8.1/src/scale/nice.js b/static/vendor/d3-2.8.1/src/scale/nice.js
new file mode 100755 (executable)
index 0000000..4c7711f
--- /dev/null
@@ -0,0 +1,24 @@
+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 (dx = x1 - x0) {
+    nice = nice(dx);
+    domain[i0] = nice.floor(x0);
+    domain[i1] = nice.ceil(x1);
+  }
+
+  return domain;
+}
+
+function d3_scale_niceDefault() {
+  return Math;
+}
diff --git a/static/vendor/d3-2.8.1/src/scale/ordinal.js b/static/vendor/d3-2.8.1/src/scale/ordinal.js
new file mode 100755 (executable)
index 0000000..6da3e67
--- /dev/null
@@ -0,0 +1,86 @@
+d3.scale.ordinal = function() {
+  return d3_scale_ordinal([], {t: "range", x: []});
+};
+
+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](ranger.x, ranger.p);
+  };
+
+  scale.range = function(x) {
+    if (!arguments.length) return range;
+    range = x;
+    rangeBand = 0;
+    ranger = {t: "range", x: x};
+    return scale;
+  };
+
+  scale.rangePoints = function(x, padding) {
+    if (arguments.length < 2) padding = 0;
+    var start = x[0],
+        stop = x[1],
+        step = (stop - start) / (domain.length - 1 + padding);
+    range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step);
+    rangeBand = 0;
+    ranger = {t: "rangePoints", x: x, p: padding};
+    return scale;
+  };
+
+  scale.rangeBands = function(x, padding) {
+    if (arguments.length < 2) padding = 0;
+    var reverse = x[1] < x[0],
+        start = x[reverse - 0],
+        stop = x[1 - reverse],
+        step = (stop - start) / (domain.length + padding);
+    range = steps(start + step * padding, step);
+    if (reverse) range.reverse();
+    rangeBand = step * (1 - padding);
+    ranger = {t: "rangeBands", x: x, p: padding};
+    return scale;
+  };
+
+  scale.rangeRoundBands = function(x, padding) {
+    if (arguments.length < 2) padding = 0;
+    var reverse = x[1] < x[0],
+        start = x[reverse - 0],
+        stop = x[1 - reverse],
+        step = Math.floor((stop - start) / (domain.length + padding)),
+        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", x: x, p: padding};
+    return scale;
+  };
+
+  scale.rangeBand = function() {
+    return rangeBand;
+  };
+
+  scale.rangeExtent = function() {
+    return d3_scaleExtent(ranger.x);
+  };
+
+  scale.copy = function() {
+    return d3_scale_ordinal(domain, ranger);
+  };
+
+  return scale.domain(domain);
+}
diff --git a/static/vendor/d3-2.8.1/src/scale/polylinear.js b/static/vendor/d3-2.8.1/src/scale/polylinear.js
new file mode 100755 (executable)
index 0000000..09a19bb
--- /dev/null
@@ -0,0 +1,22 @@
+function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
+  var u = [],
+      i = [],
+      j = 0,
+      k = Math.min(domain.length, range.length) - 1;
+
+  // Handle descending domains.
+  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));
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/scale/pow.js b/static/vendor/d3-2.8.1/src/scale/pow.js
new file mode 100755 (executable)
index 0000000..96d52ff
--- /dev/null
@@ -0,0 +1,54 @@
+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) {
+    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);
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/scale/quantile.js b/static/vendor/d3-2.8.1/src/scale/quantile.js
new file mode 100755 (executable)
index 0000000..1f50737
--- /dev/null
@@ -0,0 +1,43 @@
+d3.scale.quantile = function() {
+  return d3_scale_quantile([], []);
+};
+
+function d3_scale_quantile(domain, range) {
+  var thresholds;
+
+  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)];
+  }
+
+  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); // copy on write!
+  };
+
+  return rescale();
+}
diff --git a/static/vendor/d3-2.8.1/src/scale/quantize.js b/static/vendor/d3-2.8.1/src/scale/quantize.js
new file mode 100755 (executable)
index 0000000..cdb6d2b
--- /dev/null
@@ -0,0 +1,36 @@
+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); // copy on write
+  };
+
+  return rescale();
+}
diff --git a/static/vendor/d3-2.8.1/src/scale/scale.js b/static/vendor/d3-2.8.1/src/scale/scale.js
new file mode 100755 (executable)
index 0000000..b7952d4
--- /dev/null
@@ -0,0 +1,10 @@
+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());
+}
diff --git a/static/vendor/d3-2.8.1/src/scale/sqrt.js b/static/vendor/d3-2.8.1/src/scale/sqrt.js
new file mode 100755 (executable)
index 0000000..5e823a5
--- /dev/null
@@ -0,0 +1,3 @@
+d3.scale.sqrt = function() {
+  return d3.scale.pow().exponent(.5);
+};
diff --git a/static/vendor/d3-2.8.1/src/start.js b/static/vendor/d3-2.8.1/src/start.js
new file mode 100755 (executable)
index 0000000..2f4bb35
--- /dev/null
@@ -0,0 +1 @@
+(function(){
\ No newline at end of file
diff --git a/static/vendor/d3-2.8.1/src/svg/arc.js b/static/vendor/d3-2.8.1/src/svg/arc.js
new file mode 100755 (executable)
index 0000000..00ba1c6
--- /dev/null
@@ -0,0 +1,95 @@
+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 < 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");
+  }
+
+  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;
+
+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;
+}
diff --git a/static/vendor/d3-2.8.1/src/svg/area-radial.js b/static/vendor/d3-2.8.1/src/svg/area-radial.js
new file mode 100755 (executable)
index 0000000..5cfc4bd
--- /dev/null
@@ -0,0 +1,10 @@
+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;
+};
diff --git a/static/vendor/d3-2.8.1/src/svg/area.js b/static/vendor/d3-2.8.1/src/svg/area.js
new file mode 100755 (executable)
index 0000000..0eaa349
--- /dev/null
@@ -0,0 +1,90 @@
+function d3_svg_area(projection) {
+  var x0 = d3_svg_lineX,
+      x1 = d3_svg_lineX,
+      y0 = 0,
+      y1 = d3_svg_lineY,
+      interpolate,
+      i0,
+      i1,
+      tension = .7;
+
+  function area(d) {
+    if (d.length < 1) return null;
+    var points0 = d3_svg_linePoints(this, d, x0, y0),
+        points1 = d3_svg_linePoints(this, d, x0 === x1 ? d3_svg_areaX(points0) : x1, y0 === y1 ? d3_svg_areaY(points0) : y1);
+    return "M" + i0(projection(points1), tension)
+         + "L" + i1(projection(points0.reverse()), tension)
+         + "Z";
+  }
+
+  area.x = function(x) {
+    if (!arguments.length) return x1;
+    x0 = x1 = x;
+    return area;
+  };
+
+  area.x0 = function(x) {
+    if (!arguments.length) return x0;
+    x0 = x;
+    return area;
+  };
+
+  area.x1 = function(x) {
+    if (!arguments.length) return x1;
+    x1 = x;
+    return area;
+  };
+
+  area.y = function(y) {
+    if (!arguments.length) return y1;
+    y0 = y1 = y;
+    return area;
+  };
+
+  area.y0 = function(y) {
+    if (!arguments.length) return y0;
+    y0 = y;
+    return area;
+  };
+
+  area.y1 = function(y) {
+    if (!arguments.length) return y1;
+    y1 = y;
+    return area;
+  };
+
+  area.interpolate = function(x) {
+    if (!arguments.length) return interpolate;
+    if (!d3_svg_lineInterpolators.has(x += "")) x = d3_svg_lineInterpolatorDefault;
+    i0 = d3_svg_lineInterpolators.get(interpolate = x);
+    i1 = i0.reverse || i0;
+    return area;
+  };
+
+  area.tension = function(x) {
+    if (!arguments.length) return tension;
+    tension = x;
+    return area;
+  };
+
+  return area.interpolate("linear");
+}
+
+d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;
+d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;
+
+d3.svg.area = function() {
+  return d3_svg_area(Object);
+};
+
+function d3_svg_areaX(points) {
+  return function(d, i) {
+    return points[i][0];
+  };
+}
+
+function d3_svg_areaY(points) {
+  return function(d, i) {
+    return points[i][1];
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/svg/axis.js b/static/vendor/d3-2.8.1/src/svg/axis.js
new file mode 100755 (executable)
index 0000000..3add444
--- /dev/null
@@ -0,0 +1,205 @@
+d3.svg.axis = function() {
+  var scale = d3.scale.linear(),
+      orient = "bottom",
+      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);
+
+      // Ticks, or domain values for ordinal scales.
+      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_;
+
+      // Minor ticks.
+      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);
+
+      // Major ticks.
+      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;
+
+      // Domain.
+      var range = d3_scaleRange(scale),
+          path = g.selectAll(".domain").data([0]),
+          pathEnter = path.enter().append("path").attr("class", "domain"),
+          pathUpdate = d3.transition(path);
+
+      // Stash a snapshot of the new scale, and retrieve the old snapshot.
+      var scale1 = scale.copy(),
+          scale0 = this.__chart__ || scale1;
+      this.__chart__ = scale1;
+
+      tickEnter.append("line").attr("class", "tick");
+      tickEnter.append("text");
+      tickUpdate.select("text").text(tickFormat);
+
+      switch (orient) {
+        case "bottom": {
+          tickTransform = d3_svg_axisX;
+          subtickEnter.attr("y2", tickMinorSize);
+          subtickUpdate.attr("x2", 0).attr("y2", tickMinorSize);
+          tickEnter.select("line").attr("y2", tickMajorSize);
+          tickEnter.select("text").attr("y", Math.max(tickMajorSize, 0) + tickPadding);
+          tickUpdate.select("line").attr("x2", 0).attr("y2", tickMajorSize);
+          tickUpdate.select("text").attr("x", 0).attr("y", Math.max(tickMajorSize, 0) + tickPadding).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);
+          tickEnter.select("line").attr("y2", -tickMajorSize);
+          tickEnter.select("text").attr("y", -(Math.max(tickMajorSize, 0) + tickPadding));
+          tickUpdate.select("line").attr("x2", 0).attr("y2", -tickMajorSize);
+          tickUpdate.select("text").attr("x", 0).attr("y", -(Math.max(tickMajorSize, 0) + tickPadding)).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);
+          tickEnter.select("line").attr("x2", -tickMajorSize);
+          tickEnter.select("text").attr("x", -(Math.max(tickMajorSize, 0) + tickPadding));
+          tickUpdate.select("line").attr("x2", -tickMajorSize).attr("y2", 0);
+          tickUpdate.select("text").attr("x", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("y", 0).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);
+          tickEnter.select("line").attr("x2", tickMajorSize);
+          tickEnter.select("text").attr("x", Math.max(tickMajorSize, 0) + tickPadding);
+          tickUpdate.select("line").attr("x2", tickMajorSize).attr("y2", 0);
+          tickUpdate.select("text").attr("x", Math.max(tickMajorSize, 0) + tickPadding).attr("y", 0).attr("dy", ".32em").attr("text-anchor", "start");
+          pathUpdate.attr("d", "M" + tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + tickEndSize);
+          break;
+        }
+      }
+
+      // For quantitative scales:
+      // - enter new ticks from the old scale
+      // - exit old ticks to the new scale
+      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);
+      }
+
+      // For ordinal scales:
+      // - any entering ticks are undefined in the old scale
+      // - any exiting ticks are undefined in the new scale
+      // Therefore, we only need to transition updating ticks.
+      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;
+    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;
+};
+
+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;
+}
diff --git a/static/vendor/d3-2.8.1/src/svg/brush.js b/static/vendor/d3-2.8.1/src/svg/brush.js
new file mode 100755 (executable)
index 0000000..81a60df
--- /dev/null
@@ -0,0 +1,358 @@
+d3.svg.brush = function() {
+  var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"),
+      x = null, // x-scale, optional
+      y = null, // y-scale, optional
+      resizes = d3_svg_brushResizes[0],
+      extent = [[0, 0], [0, 0]], // [x0, y0], [x1, y1], in pixels (integers)
+      extentDomain; // the extent in data space, lazily created
+
+  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;
+
+      // Prepare the brush container for events.
+      g
+          .style("pointer-events", "all")
+          .on("mousedown.brush", brushstart)
+          .on("touchstart.brush", brushstart);
+
+      // An invisible, mouseable area for starting a new brush.
+      bg.enter().append("rect")
+          .attr("class", "background")
+          .style("visibility", "hidden")
+          .style("cursor", "crosshair");
+
+      // The visible brush extent; style this as you like!
+      fg.enter().append("rect")
+          .attr("class", "extent")
+          .style("cursor", "move");
+
+      // More invisible rects for resizing the extent.
+      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");
+
+      // Show or hide the resizers.
+      tz.style("display", brush.empty() ? "none" : null);
+
+      // Remove any superfluous resizers.
+      tz.exit().remove();
+
+      // Initialize the background to fill the defined range.
+      // If the range isn't defined, you can post-process.
+      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(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 the extent was clicked on, drag rather than brush;
+    // store the point between the mouse and extent origin instead.
+    if (dragging) {
+      origin[0] = extent[0][0] - origin[0];
+      origin[1] = extent[0][1] - origin[1];
+    }
+
+    // If a resizer was clicked on, record which side is to be resized.
+    // Also, set the origin to the opposite side.
+    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];
+    }
+
+    // If the ALT key is down when starting a brush, the center is at the mouse.
+    else if (d3.event.altKey) center = origin.slice();
+
+    // Propagate the active cursor to the body for the drag duration.
+    g.style("pointer-events", "none").selectAll(".resize").style("display", null);
+    d3.select("body").style("cursor", eventTarget.style("cursor"));
+
+    // Notify listeners.
+    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;
+
+      // Preserve the offset for thick resizers.
+      if (offset) {
+        point[0] += offset[0];
+        point[1] += offset[1];
+      }
+
+      if (!dragging) {
+
+        // If needed, determine the center from the current extent.
+        if (d3.event.altKey) {
+          if (!center) center = [(extent[0][0] + extent[1][0]) / 2, (extent[0][1] + extent[1][1]) / 2];
+
+          // Update the origin, for when the ALT key is released.
+          origin[0] = extent[+(point[0] < center[0])][0];
+          origin[1] = extent[+(point[1] < center[1])][1];
+        }
+
+        // When the ALT key is released, we clear the center.
+        else center = null;
+      }
+
+      // Update the brush extent for each dimension.
+      if (resizingX && move1(point, x, 0)) {
+        redrawX(g);
+        moved = true;
+      }
+      if (resizingY && move1(point, y, 1)) {
+        redrawY(g);
+        moved = true;
+      }
+
+      // Final redraw and notify listeners.
+      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;
+
+      // When dragging, reduce the range by the extent size and position.
+      if (dragging) {
+        r0 -= position;
+        r1 -= size + position;
+      }
+
+      // Clamp the point so that the extent fits within the range extent.
+      min = Math.max(r0, Math.min(r1, point[i]));
+
+      // Compute the new extent bounds.
+      if (dragging) {
+        max = (min += position) + size;
+      } else {
+
+        // If the ALT key is pressed, then preserve the center of the extent.
+        if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));
+
+        // Compute the min and max of the position and point.
+        if (position < min) {
+          max = min;
+          min = position;
+        } else {
+          max = position;
+        }
+      }
+
+      // Update the stored bounds.
+      if (extent[0][i] !== min || extent[1][i] !== max) {
+        extentDomain = null;
+        extent[0][i] = min;
+        extent[1][i] = max;
+        return true;
+      }
+    }
+
+    function brushend() {
+      brushmove();
+
+      // reset the cursor styles
+      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]; // fore!
+    return brush;
+  };
+
+  brush.y = function(z) {
+    if (!arguments.length) return y;
+    y = z;
+    resizes = d3_svg_brushResizes[!x << 1 | !y]; // fore!
+    return brush;
+  };
+
+  brush.extent = function(z) {
+    var x0, x1, y0, y1, t;
+
+    // Invert the pixel extent to data-space.
+    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];
+    }
+
+    // Scale the data-space extent to pixels.
+    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"],
+  []
+];
diff --git a/static/vendor/d3-2.8.1/src/svg/chord.js b/static/vendor/d3-2.8.1/src/svg/chord.js
new file mode 100755 (executable)
index 0000000..8456435
--- /dev/null
@@ -0,0 +1,99 @@
+d3.svg.chord = function() {
+  var source = d3_svg_chordSource,
+      target = d3_svg_chordTarget,
+      radius = d3_svg_chordRadius,
+      startAngle = d3_svg_arcStartAngle,
+      endAngle = d3_svg_arcEndAngle;
+
+  // TODO Allow control point to be customized.
+
+  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;
+  }
+
+  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_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;
+}
diff --git a/static/vendor/d3-2.8.1/src/svg/diagonal-radial.js b/static/vendor/d3-2.8.1/src/svg/diagonal-radial.js
new file mode 100755 (executable)
index 0000000..3878fb6
--- /dev/null
@@ -0,0 +1,22 @@
+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)];
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/svg/diagonal.js b/static/vendor/d3-2.8.1/src/svg/diagonal.js
new file mode 100755 (executable)
index 0000000..9bf400d
--- /dev/null
@@ -0,0 +1,38 @@
+d3.svg.diagonal = function() {
+  var source = d3_svg_chordSource,
+      target = d3_svg_chordTarget,
+      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];
+}
diff --git a/static/vendor/d3-2.8.1/src/svg/line-radial.js b/static/vendor/d3-2.8.1/src/svg/line-radial.js
new file mode 100755 (executable)
index 0000000..d1c2c8c
--- /dev/null
@@ -0,0 +1,22 @@
+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;
+}
diff --git a/static/vendor/d3-2.8.1/src/svg/line.js b/static/vendor/d3-2.8.1/src/svg/line.js
new file mode 100755 (executable)
index 0000000..061fc4a
--- /dev/null
@@ -0,0 +1,418 @@
+function d3_svg_line(projection) {
+  var x = d3_svg_lineX,
+      y = d3_svg_lineY,
+      interpolate = d3_svg_lineInterpolatorDefault,
+      interpolator = d3_svg_lineInterpolators.get(interpolate),
+      tension = .7;
+
+  function line(d) {
+    return d.length < 1 ? null : "M" + interpolator(projection(d3_svg_linePoints(this, d, x, y)), tension);
+  }
+
+  line.x = function(v) {
+    if (!arguments.length) return x;
+    x = v;
+    return line;
+  };
+
+  line.y = function(v) {
+    if (!arguments.length) return y;
+    y = v;
+    return line;
+  };
+
+  line.interpolate = function(v) {
+    if (!arguments.length) return interpolate;
+    if (!d3_svg_lineInterpolators.has(v += "")) v = d3_svg_lineInterpolatorDefault;
+    interpolator = d3_svg_lineInterpolators.get(interpolate = v);
+    return line;
+  };
+
+  line.tension = function(v) {
+    if (!arguments.length) return tension;
+    tension = v;
+    return line;
+  };
+
+  return line;
+}
+
+d3.svg.line = function() {
+  return d3_svg_line(Object);
+};
+
+// Converts the specified array of data into an array of points
+// (x-y tuples), by evaluating the specified `x` and `y` functions on each
+// data point. The `this` context of the evaluated functions is the specified
+// "self" object; each function is passed the current datum and index.
+function d3_svg_linePoints(self, d, x, y) {
+  var points = [],
+      i = -1,
+      n = d.length,
+      fx = typeof x === "function",
+      fy = typeof y === "function",
+      value;
+  if (fx && fy) {
+    while (++i < n) points.push([
+      x.call(self, value = d[i], i),
+      y.call(self, value, i)
+    ]);
+  } else if (fx) {
+    while (++i < n) points.push([x.call(self, d[i], i), y]);
+  } else if (fy) {
+    while (++i < n) points.push([x, y.call(self, d[i], i)]);
+  } else {
+    while (++i < n) points.push([x, y]);
+  }
+  return points;
+}
+
+// The default `x` property, which references d[0].
+function d3_svg_lineX(d) {
+  return d[0];
+}
+
+// The default `y` property, which references d[1].
+function d3_svg_lineY(d) {
+  return d[1];
+}
+
+var d3_svg_lineInterpolatorDefault = "linear";
+
+// The various interpolators supported by the `line` class.
+var d3_svg_lineInterpolators = d3.map({
+  "linear": d3_svg_lineLinear,
+  "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
+});
+
+// Linear interpolation; generates "L" commands.
+function d3_svg_lineLinear(points) {
+  var i = 0,
+      n = points.length,
+      p = points[0],
+      path = [p[0], ",", p[1]];
+  while (++i < n) path.push("L", (p = points[i])[0], ",", p[1]);
+  return path.join("");
+}
+
+// Step interpolation; generates "H" and "V" commands.
+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("");
+}
+
+// Step interpolation; generates "H" and "V" commands.
+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("");
+}
+
+// Open cardinal spline interpolation; generates "C" commands.
+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));
+}
+
+// Closed cardinal spline interpolation; generates "C" commands.
+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));
+}
+
+// Cardinal spline interpolation; generates "C" commands.
+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));
+}
+
+// Hermite spline construction; generates "C" commands.
+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;
+}
+
+// Generates tangents for a cardinal spline.
+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;
+}
+
+// B-spline interpolation; generates "C" commands.
+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("");
+}
+
+// Open B-spline interpolation; generates "C" commands.
+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("");
+}
+
+// Closed B-spline interpolation; generates "C" commands.
+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,
+      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);
+}
+
+// Returns the dot product of the given four-element vectors.
+function d3_svg_lineDot4(a, b) {
+  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
+}
+
+// Matrix to transform basis (b-spline) control points to bezier
+// control points. Derived from FvD 11.2.8.
+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];
+
+// Pushes a "C" Bézier curve onto the specified path array, given the
+// two specified four-element arrays which define the control points.
+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));
+}
+
+// Computes the slope from points p0 to p1.
+function d3_svg_lineSlope(p0, p1) {
+  return (p1[1] - p0[1]) / (p1[0] - p0[0]);
+}
+
+// Compute three-point differences for the given points.
+// http://en.wikipedia.org/wiki/Cubic_Hermite_spline#Finite_difference
+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]));
+  }
+  m[i] = d;
+  return m;
+}
+
+// Interpolates the given points using Fritsch-Carlson Monotone cubic Hermite
+// interpolation. Returns an array of tangent vectors. For details, see
+// http://en.wikipedia.org/wiki/Monotone_cubic_interpolation
+function d3_svg_lineMonotoneTangents(points) {
+  var tangents = [],
+      d,
+      a,
+      b,
+      s,
+      m = d3_svg_lineFiniteDifferences(points),
+      i = -1,
+      j = points.length - 1;
+
+  // The first two steps are done by computing finite-differences:
+  // 1. Compute the slopes of the secant lines between successive points.
+  // 2. Initialize the tangents at every point as the average of the secants.
+
+  // Then, for each segment…
+  while (++i < j) {
+    d = d3_svg_lineSlope(points[i], points[i + 1]);
+
+    // 3. If two successive yk = y{k + 1} are equal (i.e., d is zero), then set
+    // mk = m{k + 1} = 0 as the spline connecting these points must be flat to
+    // preserve monotonicity. Ignore step 4 and 5 for those k.
+
+    if (Math.abs(d) < 1e-6) {
+      m[i] = m[i + 1] = 0;
+    } else {
+      // 4. Let ak = mk / dk and bk = m{k + 1} / dk.
+      a = m[i] / d;
+      b = m[i + 1] / d;
+
+      // 5. Prevent overshoot and ensure monotonicity by restricting the
+      // magnitude of vector <ak, bk> to a circle of radius 3.
+      s = a * a + b * b;
+      if (s > 9) {
+        s = d * 3 / Math.sqrt(s);
+        m[i] = s * a;
+        m[i + 1] = s * b;
+      }
+    }
+  }
+
+  // Compute the normalized tangent vector from the slopes. Note that if x is
+  // not monotonic, it's possible that the slope will be infinite, so we protect
+  // against NaN by setting the coordinate to zero.
+  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));
+}
diff --git a/static/vendor/d3-2.8.1/src/svg/mouse.js b/static/vendor/d3-2.8.1/src/svg/mouse.js
new file mode 100755 (executable)
index 0000000..e700491
--- /dev/null
@@ -0,0 +1 @@
+d3.svg.mouse = d3.mouse;
diff --git a/static/vendor/d3-2.8.1/src/svg/svg.js b/static/vendor/d3-2.8.1/src/svg/svg.js
new file mode 100755 (executable)
index 0000000..3749248
--- /dev/null
@@ -0,0 +1 @@
+d3.svg = {};
diff --git a/static/vendor/d3-2.8.1/src/svg/symbol.js b/static/vendor/d3-2.8.1/src/svg/symbol.js
new file mode 100755 (executable)
index 0000000..6ffc984
--- /dev/null
@@ -0,0 +1,100 @@
+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;
+  };
+
+  // size of symbol in square pixels
+  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 / Math.PI);
+  return "M0," + r
+      + "A" + r + "," + r + " 0 1,1 0," + (-r)
+      + "A" + r + "," + r + " 0 1,1 0," + r
+      + "Z";
+}
+
+// TODO cross-diagonal?
+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);
diff --git a/static/vendor/d3-2.8.1/src/svg/touches.js b/static/vendor/d3-2.8.1/src/svg/touches.js
new file mode 100755 (executable)
index 0000000..585997a
--- /dev/null
@@ -0,0 +1 @@
+d3.svg.touches = d3.touches;
diff --git a/static/vendor/d3-2.8.1/src/time/day.js b/static/vendor/d3-2.8.1/src/time/day.js
new file mode 100755 (executable)
index 0000000..8443d09
--- /dev/null
@@ -0,0 +1,15 @@
+d3.time.day = d3_time_interval(function(date) {
+  return new d3_time(date.getFullYear(), date.getMonth(), date.getDate());
+}, 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) / 864e5 - (date.getTimezoneOffset() - year.getTimezoneOffset()) / 1440);
+};
diff --git a/static/vendor/d3-2.8.1/src/time/format-iso.js b/static/vendor/d3-2.8.1/src/time/format-iso.js
new file mode 100755 (executable)
index 0000000..69528b9
--- /dev/null
@@ -0,0 +1,13 @@
+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;
+
+function d3_time_formatIsoNative(date) {
+  return date.toISOString();
+}
+
+d3_time_formatIsoNative.parse = function(string) {
+  return new Date(string);
+};
+
+d3_time_formatIsoNative.toString = d3_time_formatIso.toString;
diff --git a/static/vendor/d3-2.8.1/src/time/format-utc.js b/static/vendor/d3-2.8.1/src/time/format-utc.js
new file mode 100755 (executable)
index 0000000..f40e175
--- /dev/null
@@ -0,0 +1,28 @@
+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;
+};
diff --git a/static/vendor/d3-2.8.1/src/time/format.js b/static/vendor/d3-2.8.1/src/time/format.js
new file mode 100755 (executable)
index 0000000..f8b3135
--- /dev/null
@@ -0,0 +1,282 @@
+d3.time.format = function(template) {
+  var n = template.length;
+
+  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("");
+  }
+
+  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;
+
+    // The am-pm flag is 0 for AM, and 1 for PM.
+    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;
+}
+
+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_formats = {
+  a: function(d) { return d3_time_weekdays[d.getDay()].substring(0, 3); },
+  A: function(d) { return d3_time_weekdays[d.getDay()]; },
+  b: function(d) { return d3_time_months[d.getMonth()].substring(0, 3); },
+  B: function(d) { return d3_time_months[d.getMonth()]; },
+  c: d3.time.format("%a %b %e %H:%M:%S %Y"),
+  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("%m/%d/%y"),
+  X: d3.time.format("%H:%M:%S"),
+  y: function(d) { return d3_time_zfill2(d.getFullYear() % 100); },
+  Y: function(d) { return d3_time_zfill4(d.getFullYear() % 10000); },
+  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,
+  // j: function(d, s, i) { /*TODO day of year [001,366] */ return i; },
+  L: d3_time_parseMilliseconds,
+  m: d3_time_parseMonthNumber,
+  M: d3_time_parseMinutes,
+  p: d3_time_parseAmPm,
+  S: d3_time_parseSeconds,
+  // U: function(d, s, i) { /*TODO week number (sunday) [00,53] */ return i; },
+  // w: function(d, s, i) { /*TODO weekday [0,6] */ return i; },
+  // W: function(d, s, i) { /*TODO week number (monday) [00,53] */ return i; },
+  x: d3_time_parseLocaleDate,
+  X: d3_time_parseLocaleTime,
+  y: d3_time_parseYear,
+  Y: d3_time_parseFullYear
+  // ,
+  // Z: function(d, s, i) { /*TODO time zone */ return i; },
+  // "%": function(d, s, i) { /*TODO literal % */ return i; }
+};
+
+// Note: weekday is validated, but does not set the date.
+function d3_time_parseWeekdayAbbrev(date, string, i) {
+  return d3_time_weekdayAbbrevRe.test(string.substring(i, i += 3)) ? i : -1;
+}
+
+// Note: weekday is validated, but does not set the date.
+function d3_time_parseWeekday(date, string, i) {
+  d3_time_weekdayRe.lastIndex = 0;
+  var n = d3_time_weekdayRe.exec(string.substring(i, i + 10));
+  return n ? i += n[0].length : -1;
+}
+
+var d3_time_weekdayAbbrevRe = /^(?:sun|mon|tue|wed|thu|fri|sat)/i,
+    d3_time_weekdayRe = /^(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/i;
+    d3_time_weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
+
+function d3_time_parseMonthAbbrev(date, string, i) {
+  var n = d3_time_monthAbbrevLookup.get(string.substring(i, i += 3).toLowerCase());
+  return n == null ? -1 : (date.m = n, i);
+}
+
+var d3_time_monthAbbrevLookup = d3.map({
+  jan: 0,
+  feb: 1,
+  mar: 2,
+  apr: 3,
+  may: 4,
+  jun: 5,
+  jul: 6,
+  aug: 7,
+  sep: 8,
+  oct: 9,
+  nov: 10,
+  dec: 11
+});
+
+function d3_time_parseMonth(date, string, i) {
+  d3_time_monthRe.lastIndex = 0;
+  var n = d3_time_monthRe.exec(string.substring(i, i + 12));
+  return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i += n[0].length) : -1;
+}
+
+var d3_time_monthRe = /^(?:January|February|March|April|May|June|July|August|September|October|November|December)/ig;
+
+var d3_time_monthLookup = d3.map({
+  january: 0,
+  february: 1,
+  march: 2,
+  april: 3,
+  may: 4,
+  june: 5,
+  july: 6,
+  august: 7,
+  september: 8,
+  october: 9,
+  november: 10,
+  december: 11
+});
+
+var d3_time_months = [
+  "January",
+  "February",
+  "March",
+  "April",
+  "May",
+  "June",
+  "July",
+  "August",
+  "September",
+  "October",
+  "November",
+  "December"
+];
+
+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_century() + +n[0], i += n[0].length) : -1;
+}
+
+function d3_time_century() {
+  return ~~(new Date().getFullYear() / 1000) * 1000;
+}
+
+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;
+}
+
+// Note: we don't validate that the hour is in the range [0,23] or [1,12].
+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;
+}
+
+// Note: we don't look at the next directive.
+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
+});
+
+// TODO table of time zone offset names?
+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);
+}
diff --git a/static/vendor/d3-2.8.1/src/time/hour.js b/static/vendor/d3-2.8.1/src/time/hour.js
new file mode 100755 (executable)
index 0000000..1e8f0f7
--- /dev/null
@@ -0,0 +1,11 @@
+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); // DST breaks setHours
+}, function(date) {
+  return date.getHours();
+});
+
+d3.time.hours = d3.time.hour.range;
+d3.time.hours.utc = d3.time.hour.utc.range;
diff --git a/static/vendor/d3-2.8.1/src/time/interval.js b/static/vendor/d3-2.8.1/src/time/interval.js
new file mode 100755 (executable)
index 0000000..6914412
--- /dev/null
@@ -0,0 +1,69 @@
+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;
+    }
+  };
+}
diff --git a/static/vendor/d3-2.8.1/src/time/minute.js b/static/vendor/d3-2.8.1/src/time/minute.js
new file mode 100755 (executable)
index 0000000..b23d29b
--- /dev/null
@@ -0,0 +1,10 @@
+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); // DST breaks setMinutes
+}, function(date) {
+  return date.getMinutes();
+});
+
+d3.time.minutes = d3.time.minute.range;
+d3.time.minutes.utc = d3.time.minute.utc.range;
diff --git a/static/vendor/d3-2.8.1/src/time/month.js b/static/vendor/d3-2.8.1/src/time/month.js
new file mode 100755 (executable)
index 0000000..2161c3a
--- /dev/null
@@ -0,0 +1,10 @@
+d3.time.month = d3_time_interval(function(date) {
+  return new d3_time(date.getFullYear(), date.getMonth(), 1);
+}, 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;
diff --git a/static/vendor/d3-2.8.1/src/time/scale-utc.js b/static/vendor/d3-2.8.1/src/time/scale-utc.js
new file mode 100755 (executable)
index 0000000..89a57b9
--- /dev/null
@@ -0,0 +1,37 @@
+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);
+
+function d3_time_scaleUTCSetYear(y) {
+  var d = new Date(Date.UTC(y, 0, 1));
+  d.setUTCFullYear(y); // Y2K fail
+  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);
+};
diff --git a/static/vendor/d3-2.8.1/src/time/scale.js b/static/vendor/d3-2.8.1/src/time/scale.js
new file mode 100755 (executable)
index 0000000..41e8f26
--- /dev/null
@@ -0,0 +1,143 @@
+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) {
+    var extent = d3_time_scaleExtent(scale.domain());
+    return scale.domain([m.floor(extent[0]), m.ceil(extent[1])]);
+  };
+
+  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); // inclusive upper bound
+  };
+
+  scale.tickFormat = function() {
+    return format;
+  };
+
+  scale.copy = function() {
+    return d3_time_scale(linear.copy(), methods, format);
+  };
+
+  // TOOD expose d3_scale_linear_rebind?
+  return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
+}
+
+// TODO expose d3_scaleExtent?
+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); // Y2K fail
+  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,    // 1-second
+  5e3,    // 5-second
+  15e3,   // 15-second
+  3e4,    // 30-second
+  6e4,    // 1-minute
+  3e5,    // 5-minute
+  9e5,    // 15-minute
+  18e5,   // 30-minute
+  36e5,   // 1-hour
+  108e5,  // 3-hour
+  216e5,  // 6-hour
+  432e5,  // 12-hour
+  864e5,  // 1-day
+  1728e5, // 2-day
+  6048e5, // 1-week
+  2592e6, // 1-month
+  7776e6, // 3-month
+  31536e6 // 1-year
+];
+
+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);
+};
diff --git a/static/vendor/d3-2.8.1/src/time/second.js b/static/vendor/d3-2.8.1/src/time/second.js
new file mode 100755 (executable)
index 0000000..d9cdd65
--- /dev/null
@@ -0,0 +1,10 @@
+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); // DST breaks setSeconds
+}, function(date) {
+  return date.getSeconds();
+});
+
+d3.time.seconds = d3.time.second.range;
+d3.time.seconds.utc = d3.time.second.utc.range;
diff --git a/static/vendor/d3-2.8.1/src/time/time.js b/static/vendor/d3-2.8.1/src/time/time.js
new file mode 100755 (executable)
index 0000000..2e45d59
--- /dev/null
@@ -0,0 +1,34 @@
+d3.time = {};
+
+var d3_time = Date;
+
+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;
diff --git a/static/vendor/d3-2.8.1/src/time/week.js b/static/vendor/d3-2.8.1/src/time/week.js
new file mode 100755 (executable)
index 0000000..4d3ddf8
--- /dev/null
@@ -0,0 +1,27 @@
+d3_time_weekdays.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;
diff --git a/static/vendor/d3-2.8.1/src/time/year.js b/static/vendor/d3-2.8.1/src/time/year.js
new file mode 100755 (executable)
index 0000000..400ea6f
--- /dev/null
@@ -0,0 +1,10 @@
+d3.time.year = d3_time_interval(function(date) {
+  return new d3_time(date.getFullYear(), 0, 1);
+}, 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;
diff --git a/static/vendor/d3-2.8.1/test/core/ascending-test.js b/static/vendor/d3-2.8.1/test/core/ascending-test.js
new file mode 100755 (executable)
index 0000000..20f1641
--- /dev/null
@@ -0,0 +1,46 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.ascending");
+
+suite.addBatch({
+  "numbers": {
+    "returns a negative number if a < b": function() {
+      assert.isTrue(d3.ascending(0, 1) < 0);
+    },
+    "returns a positive number if a > b": function() {
+      assert.isTrue(d3.ascending(1, 0) > 0);
+    },
+    "returns zero if a == b": function() {
+      assert.equal(d3.ascending(0, 0), 0);
+    },
+    "returns NaN if a or b is undefined": function() {
+      assert.isNaN(d3.ascending(0, undefined));
+      assert.isNaN(d3.ascending(undefined, 0));
+      assert.isNaN(d3.ascending(undefined, undefined));
+    },
+    "returns NaN if a or b is NaN": function() {
+      assert.isNaN(d3.ascending(0, NaN));
+      assert.isNaN(d3.ascending(NaN, 0));
+      assert.isNaN(d3.ascending(NaN, NaN));
+    }
+  }
+});
+
+suite.addBatch({
+  "strings": {
+    "returns a negative number if a < b": function() {
+      assert.isTrue(d3.ascending("a", "b") < 0);
+    },
+    "returns a positive number if a > b": function() {
+      assert.isTrue(d3.ascending("b", "a") > 0);
+    },
+    "returns zero if a == b": function() {
+      assert.equal(d3.ascending("a", "a"), 0);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/bisect-test.js b/static/vendor/d3-2.8.1/test/core/bisect-test.js
new file mode 100755 (executable)
index 0000000..4a8a0cc
--- /dev/null
@@ -0,0 +1,198 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.bisect");
+
+suite.addBatch({
+  "bisectLeft": {
+    topic: function() {
+      return d3.bisectLeft;
+    },
+    "finds the index of an exact match": function(bisect) {
+      var array = [1, 2, 3];
+      assert.equal(bisect(array, 1), 0);
+      assert.equal(bisect(array, 2), 1);
+      assert.equal(bisect(array, 3), 2);
+    },
+    "finds the index of the first match": function(bisect) {
+      var array = [1, 2, 2, 3];
+      assert.equal(bisect(array, 1), 0);
+      assert.equal(bisect(array, 2), 1);
+      assert.equal(bisect(array, 3), 3);
+    },
+    "finds the insertion point of a non-exact match": function(bisect) {
+      var array = [1, 2, 3];
+      assert.equal(bisect(array, 0.5), 0);
+      assert.equal(bisect(array, 1.5), 1);
+      assert.equal(bisect(array, 2.5), 2);
+      assert.equal(bisect(array, 3.5), 3);
+    },
+    "observes the optional lower bound": function(bisect) {
+      var array = [1, 2, 3, 4, 5];
+      assert.equal(bisect(array, 0, 2), 2);
+      assert.equal(bisect(array, 1, 2), 2);
+      assert.equal(bisect(array, 2, 2), 2);
+      assert.equal(bisect(array, 3, 2), 2);
+      assert.equal(bisect(array, 4, 2), 3);
+      assert.equal(bisect(array, 5, 2), 4);
+      assert.equal(bisect(array, 6, 2), 5);
+    },
+    "observes the optional bounds": function(bisect) {
+      var array = [1, 2, 3, 4, 5];
+      assert.equal(bisect(array, 0, 2, 3), 2);
+      assert.equal(bisect(array, 1, 2, 3), 2);
+      assert.equal(bisect(array, 2, 2, 3), 2);
+      assert.equal(bisect(array, 3, 2, 3), 2);
+      assert.equal(bisect(array, 4, 2, 3), 3);
+      assert.equal(bisect(array, 5, 2, 3), 3);
+      assert.equal(bisect(array, 6, 2, 3), 3);
+    }
+  }
+});
+
+suite.addBatch({
+  "bisectRight": {
+    topic: function() {
+      return d3.bisectRight;
+    },
+    "finds the index after an exact match": function(bisect) {
+      var array = [1, 2, 3];
+      assert.equal(bisect(array, 1), 1);
+      assert.equal(bisect(array, 2), 2);
+      assert.equal(bisect(array, 3), 3);
+    },
+    "finds the index after the last match": function(bisect) {
+      var array = [1, 2, 2, 3];
+      assert.equal(bisect(array, 1), 1);
+      assert.equal(bisect(array, 2), 3);
+      assert.equal(bisect(array, 3), 4);
+    },
+    "finds the insertion point of a non-exact match": function(bisect) {
+      var array = [1, 2, 3];
+      assert.equal(bisect(array, 0.5), 0);
+      assert.equal(bisect(array, 1.5), 1);
+      assert.equal(bisect(array, 2.5), 2);
+      assert.equal(bisect(array, 3.5), 3);
+    },
+    "observes the optional lower bound": function(bisect) {
+      var array = [1, 2, 3, 4, 5];
+      assert.equal(bisect(array, 0, 2), 2);
+      assert.equal(bisect(array, 1, 2), 2);
+      assert.equal(bisect(array, 2, 2), 2);
+      assert.equal(bisect(array, 3, 2), 3);
+      assert.equal(bisect(array, 4, 2), 4);
+      assert.equal(bisect(array, 5, 2), 5);
+      assert.equal(bisect(array, 6, 2), 5);
+    },
+    "observes the optional bounds": function(bisect) {
+      var array = [1, 2, 3, 4, 5];
+      assert.equal(bisect(array, 0, 2, 3), 2);
+      assert.equal(bisect(array, 1, 2, 3), 2);
+      assert.equal(bisect(array, 2, 2, 3), 2);
+      assert.equal(bisect(array, 3, 2, 3), 3);
+      assert.equal(bisect(array, 4, 2, 3), 3);
+      assert.equal(bisect(array, 5, 2, 3), 3);
+      assert.equal(bisect(array, 6, 2, 3), 3);
+    }
+  }
+});
+
+suite.addBatch({
+  "bisector(key)": {
+    topic: function() {
+      return d3.bisector(function(d) { return d.key; });
+    },
+    "left": {
+      topic: function(bisector) {
+        return bisector.left;
+      },
+      "finds the index of an exact match": function(bisect) {
+        var array = [{key: 1}, {key: 2}, {key: 3}];
+        assert.equal(bisect(array, 1), 0);
+        assert.equal(bisect(array, 2), 1);
+        assert.equal(bisect(array, 3), 2);
+      },
+      "finds the index of the first match": function(bisect) {
+        var array = [{key: 1}, {key: 2}, {key: 2}, {key: 3}];
+        assert.equal(bisect(array, 1), 0);
+        assert.equal(bisect(array, 2), 1);
+        assert.equal(bisect(array, 3), 3);
+      },
+      "finds the insertion point of a non-exact match": function(bisect) {
+        var array = [{key: 1}, {key: 2}, {key: 3}];
+        assert.equal(bisect(array, 0.5), 0);
+        assert.equal(bisect(array, 1.5), 1);
+        assert.equal(bisect(array, 2.5), 2);
+        assert.equal(bisect(array, 3.5), 3);
+      },
+      "observes the optional lower bound": function(bisect) {
+        var array = [{key: 1}, {key: 2}, {key: 3}, {key: 4}, {key: 5}];
+        assert.equal(bisect(array, 0, 2), 2);
+        assert.equal(bisect(array, 1, 2), 2);
+        assert.equal(bisect(array, 2, 2), 2);
+        assert.equal(bisect(array, 3, 2), 2);
+        assert.equal(bisect(array, 4, 2), 3);
+        assert.equal(bisect(array, 5, 2), 4);
+        assert.equal(bisect(array, 6, 2), 5);
+      },
+      "observes the optional bounds": function(bisect) {
+        var array = [{key: 1}, {key: 2}, {key: 3}, {key: 4}, {key: 5}];
+        assert.equal(bisect(array, 0, 2, 3), 2);
+        assert.equal(bisect(array, 1, 2, 3), 2);
+        assert.equal(bisect(array, 2, 2, 3), 2);
+        assert.equal(bisect(array, 3, 2, 3), 2);
+        assert.equal(bisect(array, 4, 2, 3), 3);
+        assert.equal(bisect(array, 5, 2, 3), 3);
+        assert.equal(bisect(array, 6, 2, 3), 3);
+      }
+    },
+    "right": {
+      topic: function(bisector) {
+        return bisector.right;
+      },
+      "finds the index after an exact match": function(bisect) {
+        var array = [{key: 1}, {key: 2}, {key: 3}];
+        assert.equal(bisect(array, 1), 1);
+        assert.equal(bisect(array, 2), 2);
+        assert.equal(bisect(array, 3), 3);
+      },
+      "finds the index after the last match": function(bisect) {
+        var array = [{key: 1}, {key: 2}, {key: 2}, {key: 3}];
+        assert.equal(bisect(array, 1), 1);
+        assert.equal(bisect(array, 2), 3);
+        assert.equal(bisect(array, 3), 4);
+      },
+      "finds the insertion point of a non-exact match": function(bisect) {
+        var array = [{key: 1}, {key: 2}, {key: 3}];
+        assert.equal(bisect(array, 0.5), 0);
+        assert.equal(bisect(array, 1.5), 1);
+        assert.equal(bisect(array, 2.5), 2);
+        assert.equal(bisect(array, 3.5), 3);
+      },
+      "observes the optional lower bound": function(bisect) {
+        var array = [{key: 1}, {key: 2}, {key: 3}, {key: 4}, {key: 5}];
+        assert.equal(bisect(array, 0, 2), 2);
+        assert.equal(bisect(array, 1, 2), 2);
+        assert.equal(bisect(array, 2, 2), 2);
+        assert.equal(bisect(array, 3, 2), 3);
+        assert.equal(bisect(array, 4, 2), 4);
+        assert.equal(bisect(array, 5, 2), 5);
+        assert.equal(bisect(array, 6, 2), 5);
+      },
+      "observes the optional bounds": function(bisect) {
+        var array = [{key: 1}, {key: 2}, {key: 3}, {key: 4}, {key: 5}];
+        assert.equal(bisect(array, 0, 2, 3), 2);
+        assert.equal(bisect(array, 1, 2, 3), 2);
+        assert.equal(bisect(array, 2, 2, 3), 2);
+        assert.equal(bisect(array, 3, 2, 3), 3);
+        assert.equal(bisect(array, 4, 2, 3), 3);
+        assert.equal(bisect(array, 5, 2, 3), 3);
+        assert.equal(bisect(array, 6, 2, 3), 3);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/descending-test.js b/static/vendor/d3-2.8.1/test/core/descending-test.js
new file mode 100755 (executable)
index 0000000..880936e
--- /dev/null
@@ -0,0 +1,46 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.descending");
+
+suite.addBatch({
+  "numbers": {
+    "returns a negative number if a > b": function() {
+      assert.isTrue(d3.descending(1, 0) < 0);
+    },
+    "returns a positive number if a < b": function() {
+      assert.isTrue(d3.descending(0, 1) > 0);
+    },
+    "returns zero if a == b": function() {
+      assert.equal(d3.descending(0, 0), 0);
+    },
+    "returns NaN if a or b is undefined": function() {
+      assert.isNaN(d3.descending(0, undefined));
+      assert.isNaN(d3.descending(undefined, 0));
+      assert.isNaN(d3.descending(undefined, undefined));
+    },
+    "returns NaN if a or b is NaN": function() {
+      assert.isNaN(d3.descending(0, NaN));
+      assert.isNaN(d3.descending(NaN, 0));
+      assert.isNaN(d3.descending(NaN, NaN));
+    }
+  }
+});
+
+suite.addBatch({
+  "strings": {
+    "returns a negative number if a > b": function() {
+      assert.isTrue(d3.descending("b", "a") < 0);
+    },
+    "returns a positive number if a < b": function() {
+      assert.isTrue(d3.descending("a", "b") > 0);
+    },
+    "returns zero if a == b": function() {
+      assert.equal(d3.descending("a", "a"), 0);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/dispatch-test.js b/static/vendor/d3-2.8.1/test/core/dispatch-test.js
new file mode 100755 (executable)
index 0000000..4be37cc
--- /dev/null
@@ -0,0 +1,137 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.dispatch");
+
+suite.addBatch({
+  "dispatch": {
+    topic: function() {
+      return d3.dispatch;
+    },
+    "returns a map of dispatchers for each event type": function(dispatch) {
+      assert.deepEqual(dispatch(), {});
+      var d = dispatch("foo");
+      assert.isTrue("foo" in d);
+      assert.isFalse("bar" in d);
+      var d = dispatch("foo", "bar");
+      assert.isTrue("foo" in d);
+      assert.isTrue("bar" in d);
+    },
+    "added listeners receive subsequent events": function(dispatch) {
+      var d = dispatch("foo"), events = 0;
+      d.on("foo", function() { ++events; });
+      d.foo();
+      assert.equal(events, 1);
+      d.foo();
+      d.foo();
+      assert.equal(events, 3);
+    },
+    "the listener is passed any arguments to dispatch": function(dispatch) {
+      var d = dispatch("foo"), a = {}, b = {}, aa, bb;
+      d.on("foo", function(a, b) { aa = a; bb = b; });
+      d.foo(a, b);
+      assert.equal(aa, a);
+      assert.equal(bb, b);
+      d.foo(1, "foo");
+      assert.equal(aa, 1);
+      assert.equal(bb, "foo");
+    },
+    "the listener's context is the same as dispatch's": function(dispatch) {
+      var d = dispatch("foo"), a = {}, b = {}, that;
+      d.on("foo", function() { that = this; });
+      d.foo.call(a);
+      assert.equal(that, a);
+      d.foo.call(b);
+      assert.equal(that, b);
+    },
+    "listeners are notified in the order they are added": function(dispatch) {
+      var d = dispatch("foo"), a = {}, b = {}, those = [];
+      function A() { those.push(a); }
+      function B() { those.push(b); }
+      d.on("foo.a", A).on("foo.b", B);
+      d.foo();
+      assert.deepEqual(those, [a, b]);
+      those = [];
+      d.on("foo.a", A); // move to the end
+      d.foo();
+      assert.deepEqual(those, [b, a]);
+    },
+    "notifying listeners returns the dispatch object": function(dispatch) {
+      var d = dispatch("foo");
+      assert.equal(d.foo(), d);
+    },
+    "adding a listener returns the dispatch object": function(dispatch) {
+      var d = dispatch("foo");
+      function A() {}
+      assert.equal(d.on("foo", A), d);
+    },
+    "removed listeners do not receive subsequent events": function(dispatch) {
+      var d = dispatch("foo"), a = {}, b = {}, those = [];
+      function A() { those.push(a); }
+      function B() { those.push(b); }
+      d.on("foo.a", A).on("foo.b", B);
+      d.foo();
+      those = [];
+      d.on("foo.a", null);
+      d.foo();
+      assert.deepEqual(those, [b]);
+    },
+    "removing a shared listener only affects the intended event": function(dispatch) {
+      var d = dispatch("foo", "bar"), a = 0;
+      function A() { ++a; }
+      d.on("foo", A).on("bar", A);
+      d.foo();
+      d.bar();
+      assert.equal(a, 2);
+      d.on("foo", null);
+      d.bar();
+      assert.equal(a, 3);
+    },
+    "adding an existing listener has no effect": function(dispatch) {
+      var d = dispatch("foo"), events = 0;
+      function A() { ++events; }
+      d.on("foo.a", A);
+      d.foo();
+      d.on("foo.a", A).on("foo.a", A);
+      d.foo();
+      assert.equal(events, 2);
+    },
+    "removing a missing listener has no effect": function(dispatch) {
+      var d = dispatch("foo"), events = 0;
+      function A() { ++events; }
+      d.on("foo.a", null).on("foo", A).on("foo", null).on("foo", null);
+      d.foo();
+      assert.equal(events, 0);
+    },
+    "adding a listener does not affect the current event": function(dispatch) {
+      var d = dispatch("foo"), a = {}, b = {}, those = [];
+      function A() { d.on("foo.b", B); those.push(a); }
+      function B() { those.push(b); }
+      d.on("foo.a", A);
+      d.foo();
+      assert.deepEqual(those, [a]);
+    },
+    "removing a listener does affect the current event": function(dispatch) {
+      var d = dispatch("foo"), a = {}, b = {}, those = [];
+      function A() { d.on("foo.b", null); those.push(a); }
+      function B() { those.push(b); }
+      d.on("foo.a", A).on("foo.b", B);
+      d.foo();
+      assert.deepEqual(those, [a]);
+    },
+    "getting a listener returns the correct listener": function(dispatch) {
+      var d = dispatch("foo");
+      function A() {}
+      function B() {}
+      function C() {}
+      d.on("foo.a", A).on("foo.b", B).on("foo", C);
+      assert.equal(d.on("foo.a"), A);
+      assert.equal(d.on("foo.b"), B);
+      assert.equal(d.on("foo"), C);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/ease-test.js b/static/vendor/d3-2.8.1/test/core/ease-test.js
new file mode 100755 (executable)
index 0000000..dd92b97
--- /dev/null
@@ -0,0 +1,138 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.ease");
+
+suite.addBatch({
+  "ease": {
+    topic: function() {
+      return d3.ease;
+    },
+    "supports linear easing": function(ease) {
+      var e = ease("linear");
+      assert.inDelta(e(.5), .5, 1e-6);
+    },
+    "supports polynomial easing": function(ease) {
+      var e = ease("poly", 2);
+      assert.inDelta(e(.5), .25, 1e-6);
+    },
+    "supports quadratic easing": function(ease) {
+      var e = ease("quad");
+      assert.inDelta(e(.5), .25, 1e-6);
+    },
+    "supports cubic easing": function(ease) {
+      var e = ease("cubic");
+      assert.inDelta(e(.5), .125, 1e-6);
+    },
+    "supports sinusoidal easing": function(ease) {
+      var e = ease("sin");
+      assert.inDelta(e(.5), 1 - Math.cos(Math.PI / 4), 1e-6);
+    },
+    "supports exponential easing": function(ease) {
+      var e = ease("exp");
+      assert.inDelta(e(.5), 0.03125, 1e-6);
+    },
+    "supports circular easing": function(ease) {
+      var e = ease("circle");
+      assert.inDelta(e(.5), 0.133975, 1e-6);
+    },
+    "supports elastic easing": function(ease) {
+      var e = ease("elastic");
+      assert.inDelta(e(.5), 0.976061, 1e-6);
+    },
+    "supports back easing": function(ease) {
+      var e = ease("back");
+      assert.inDelta(e(.5), -0.0876975, 1e-6);
+    },
+    "supports bounce easing": function(ease) {
+      var e = ease("bounce");
+      assert.inDelta(e(.5), 0.765625, 1e-6);
+    },
+    "invalid eases and modes default to linear-in": function(ease) {
+      var e = ease("__proto__-__proto__");
+      assert.equal(e(0), 0);
+      assert.equal(e(.5), .5);
+      assert.equal(e(1), 1);
+      var e = ease("hasOwnProperty-constructor");
+      assert.equal(e(0), 0);
+      assert.equal(e(.5), .5);
+      assert.equal(e(1), 1);
+    },
+    "all easing functions return exactly 0 for t = 0": function(ease) {
+      assert.equal(ease("linear")(0), 0);
+      assert.equal(ease("poly", 2)(0), 0);
+      assert.equal(ease("quad")(0), 0);
+      assert.equal(ease("cubic")(0), 0);
+      assert.equal(ease("sin")(0), 0);
+      assert.equal(ease("exp")(0), 0);
+      assert.equal(ease("circle")(0), 0);
+      assert.equal(ease("elastic")(0), 0);
+      assert.equal(ease("back")(0), 0);
+      assert.equal(ease("bounce")(0), 0);
+    },
+    "all easing functions return exactly 1 for t = 1": function(ease) {
+      assert.equal(ease("linear")(1), 1);
+      assert.equal(ease("poly", 2)(1), 1);
+      assert.equal(ease("quad")(1), 1);
+      assert.equal(ease("cubic")(1), 1);
+      assert.equal(ease("sin")(1), 1);
+      assert.equal(ease("exp")(1), 1);
+      assert.equal(ease("circle")(1), 1);
+      assert.equal(ease("elastic")(1), 1);
+      assert.equal(ease("back")(1), 1);
+      assert.equal(ease("bounce")(1), 1);
+    },
+    "the -in suffix returns the identity": function(ease) {
+      assert.inDelta(ease("linear-in")(.25), ease("linear")(.25), 1e-6);
+      assert.inDelta(ease("quad-in")(.75), ease("quad")(.75), 1e-6);
+    },
+    "the -out suffix returns the reverse": function(ease) {
+      assert.inDelta(ease("sin-out")(.25), 1 - ease("sin-in")(.75), 1e-6);
+      assert.inDelta(ease("bounce-out")(.25), 1 - ease("bounce-in")(.75), 1e-6);
+      assert.inDelta(ease("elastic-out")(.25), 1 - ease("elastic-in")(.75), 1e-6);
+    },
+    "the -in-out suffix returns the reflection": function(ease) {
+      assert.inDelta(ease("sin-in-out")(.25), .5 * ease("sin-in")(.5), 1e-6);
+      assert.inDelta(ease("bounce-in-out")(.25), .5 * ease("bounce-in")(.5), 1e-6);
+      assert.inDelta(ease("elastic-in-out")(.25), .5 * ease("elastic-in")(.5), 1e-6);
+    },
+    "the -out-in suffix returns the reverse reflection": function(ease) {
+      assert.inDelta(ease("sin-out-in")(.25), .5 * ease("sin-out")(.5), 1e-6);
+      assert.inDelta(ease("bounce-out-in")(.25), .5 * ease("bounce-out")(.5), 1e-6);
+      assert.inDelta(ease("elastic-out-in")(.25), .5 * ease("elastic-out")(.5), 1e-6);
+    },
+    "clamps input time": function(ease) {
+      var e = ease("linear");
+      assert.inDelta(e(-1), 0, 1e-6);
+      assert.inDelta(e(2), 1, 1e-6);
+    },
+    "poly": {
+      "supports an optional polynomial": function(ease) {
+        var e = ease("poly", 1);
+        assert.inDelta(e(.5), .5, 1e-6);
+        var e = ease("poly", .5);
+        assert.inDelta(e(.5), Math.SQRT1_2, 1e-6);
+      }
+    },
+    "elastic": {
+      "supports an optional amplifier (>1)": function(ease) {
+        var e = ease("elastic", 1.5);
+        assert.inDelta(e(.5), 0.998519, 1e-6);
+      },
+      "supports an optional amplifier (>1) and period (>0)": function(ease) {
+        var e = ease("elastic", 1.5, .5);
+        assert.inDelta(e(.5), 0.96875, 1e-6);
+      }
+    },
+    "back": {
+      "supports an optional speed": function(ease) {
+        var e = ease("back", 2);
+        assert.inDelta(e(.5), -0.125, 1e-6);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/entries-test.js b/static/vendor/d3-2.8.1/test/core/entries-test.js
new file mode 100755 (executable)
index 0000000..8570456
--- /dev/null
@@ -0,0 +1,42 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.entries");
+
+suite.addBatch({
+  "entries": {
+    topic: function() {
+      return d3.entries;
+    },
+    "enumerates every entry": function(entries) {
+      assert.deepEqual(entries({a: 1, b: 2}), [
+        {key: "a", value: 1},
+        {key: "b", value: 2}
+      ]);
+    },
+    "includes entries defined on prototypes": function(entries) {
+      function abc() {
+        this.a = 1;
+        this.b = 2;
+      }
+      abc.prototype.c = 3;
+      assert.deepEqual(entries(new abc()), [
+        {key: "a", value: 1},
+        {key: "b", value: 2},
+        {key: "c", value: 3}
+      ]);
+    },
+    "includes null or undefined values": function(entries) {
+      var v = entries({a: undefined, b: null, c: NaN});
+      assert.equal(v.length, 3);
+      assert.deepEqual(v[0], {key: "a", value: undefined});
+      assert.deepEqual(v[1], {key: "b", value: null});
+      assert.equal(v[2].key, "c");
+      assert.isNaN(v[2].value);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/extent-test.js b/static/vendor/d3-2.8.1/test/core/extent-test.js
new file mode 100755 (executable)
index 0000000..53a5aab
--- /dev/null
@@ -0,0 +1,50 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.extent");
+
+suite.addBatch({
+  "extent": {
+    topic: function() {
+      return d3.extent;
+    },
+    "returns the numeric extent for numbers": function(extent) {
+      assert.deepEqual(extent([1]), [1, 1]);
+      assert.deepEqual(extent([5, 1, 2, 3, 4]), [1, 5]);
+      assert.deepEqual(extent([20, 3]), [3, 20]);
+      assert.deepEqual(extent([3, 20]), [3, 20]);
+    },
+    "returns the lexicographic extent for strings": function(extent) {
+      assert.deepEqual(extent(["c", "a", "b"]), ["a", "c"]);
+      assert.deepEqual(extent(["20", "3"]), ["20", "3"]);
+      assert.deepEqual(extent(["3", "20"]), ["20", "3"]);
+    },
+    "ignores null, undefined and NaN": function(extent) {
+      assert.deepEqual(extent([NaN, 1, 2, 3, 4, 5]), [1, 5]);
+      assert.deepEqual(extent([1, 2, 3, 4, 5, NaN]), [1, 5]);
+      assert.deepEqual(extent([10, null, 3, undefined, 5, NaN]), [3, 10]);
+      assert.deepEqual(extent([-1, null, -3, undefined, -5, NaN]), [-5, -1]);
+    },
+    "compares heterogenous types as numbers": function(extent) {
+      assert.deepEqual(extent([20, "3"]), ["3", 20]);
+      assert.deepEqual(extent(["20", 3]), [3, "20"]);
+      assert.deepEqual(extent([3, "20"]), [3, "20"]);
+      assert.deepEqual(extent(["3", 20]), ["3", 20]);
+    },
+    "returns undefined for empty array": function(extent) {
+      assert.deepEqual(extent([]), [undefined, undefined]);
+      assert.deepEqual(extent([null]), [undefined, undefined]);
+      assert.deepEqual(extent([undefined]), [undefined, undefined]);
+      assert.deepEqual(extent([NaN]), [undefined, undefined]);
+      assert.deepEqual(extent([NaN, NaN]), [undefined, undefined]);
+    },
+    "applies the optional accessor function exactly once": function(extent) {
+      var i = 10;
+      assert.deepEqual(d3.extent([0,1,2,3], function() { return ++i; }), [11, 14]);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/first-test.js b/static/vendor/d3-2.8.1/test/core/first-test.js
new file mode 100755 (executable)
index 0000000..aeb8c77
--- /dev/null
@@ -0,0 +1,41 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.first");
+
+suite.addBatch({
+  "first": {
+    topic: function() {
+      return d3.first;
+    },
+    "compares using natural order by default": function(first) {
+      assert.strictEqual(first([1, 0]), 0);
+      assert.strictEqual(first(["1", 0]), 0);
+      assert.strictEqual(first(["2", "10"]), "10");
+      assert.strictEqual(first(["2", NaN, "10"]), "10");
+      assert.strictEqual(first([2, NaN, 10]), 2);
+    },
+    "compares using optional comparator": function(first) {
+      var i = 0, aa, bb, o = new Object();
+      assert.strictEqual(first([1, o], function(a, b) { aa = a; bb = b; return ++i; }), o);
+      assert.strictEqual(aa, 1);
+      assert.strictEqual(bb, o);
+      assert.strictEqual(first([1, 0], d3.descending), 1);
+      assert.strictEqual(first(["1", 0], d3.descending), "1");
+      assert.strictEqual(first(["2", "10"], d3.descending), "2");
+      assert.strictEqual(first(["2", NaN, "10"], d3.descending), "2");
+      assert.strictEqual(first([2, NaN, 10], d3.descending), 10);
+    },
+    "returns the first of equal values": function(last) {
+      var a = new Object(), b = new Object(), c = new Object();
+      assert.strictEqual(last([a, b, c], function() { return 0; }), a);
+    },
+    "returns undefined for an empty array": function(first) {
+      assert.isUndefined(first([]));
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/format-test.js b/static/vendor/d3-2.8.1/test/core/format-test.js
new file mode 100755 (executable)
index 0000000..c507603
--- /dev/null
@@ -0,0 +1,238 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.format");
+
+suite.addBatch({
+  "format": {
+    topic: function() {
+      return d3.format;
+    },
+    "returns a string": function(format) {
+      assert.isString(format("d")(0));
+    },
+    "can zero fill": function(format) {
+      var f = format("08d");
+      assert.strictEqual(f(0), "00000000");
+      assert.strictEqual(f(42), "00000042");
+      assert.strictEqual(f(42000000), "42000000");
+      assert.strictEqual(f(420000000), "420000000");
+      assert.strictEqual(f(-4), "−0000004");
+      assert.strictEqual(f(-42), "−0000042");
+      assert.strictEqual(f(-4200000), "−4200000");
+      assert.strictEqual(f(-42000000), "−42000000");
+    },
+    "can space fill": function(format) {
+      var f = format("8d");
+      assert.strictEqual(f(0), "       0");
+      assert.strictEqual(f(42), "      42");
+      assert.strictEqual(f(42000000), "42000000");
+      assert.strictEqual(f(420000000), "420000000");
+      assert.strictEqual(f(-4), "      âˆ’4");
+      assert.strictEqual(f(-42), "     âˆ’42");
+      assert.strictEqual(f(-4200000), "−4200000");
+      assert.strictEqual(f(-42000000), "−42000000");
+    },
+    "can output fixed-point notation": function(format) {
+      assert.strictEqual(format(".1f")(0.49), "0.5");
+      assert.strictEqual(format(".2f")(0.449), "0.45");
+      assert.strictEqual(format(".3f")(0.4449), "0.445");
+      assert.strictEqual(format(".5f")(0.444449), "0.44445");
+      assert.strictEqual(format(".1f")(100), "100.0");
+      assert.strictEqual(format(".2f")(100), "100.00");
+      assert.strictEqual(format(".3f")(100), "100.000");
+      assert.strictEqual(format(".5f")(100), "100.00000");
+    },
+    "can output general notation": function(format) {
+      assert.strictEqual(format(".1g")(0.049), "0.05");
+      assert.strictEqual(format(".1g")(0.49), "0.5");
+      assert.strictEqual(format(".2g")(0.449), "0.45");
+      assert.strictEqual(format(".3g")(0.4449), "0.445");
+      assert.strictEqual(format(".5g")(0.444449), "0.44445");
+      assert.strictEqual(format(".1g")(100), "1e+2");
+      assert.strictEqual(format(".2g")(100), "1.0e+2");
+      assert.strictEqual(format(".3g")(100), "100");
+      assert.strictEqual(format(".5g")(100), "100.00");
+      assert.strictEqual(format(".5g")(100.2), "100.20");
+      assert.strictEqual(format(".2g")(0.002), "0.0020");
+    },
+    "can output exponent notation ": function(format) {
+      var f = format("e");
+      assert.strictEqual(f(0), "0e+0");
+      assert.strictEqual(f(42), "4.2e+1");
+      assert.strictEqual(f(42000000), "4.2e+7");
+      assert.strictEqual(f(420000000), "4.2e+8");
+      assert.strictEqual(f(-4), "−4e+0");
+      assert.strictEqual(f(-42), "−4.2e+1");
+      assert.strictEqual(f(-4200000), "−4.2e+6");
+      assert.strictEqual(f(-42000000), "−4.2e+7");
+    },
+    "can output SI prefix notation": function(format) {
+      var f = format("s");
+      assert.strictEqual(f(0), "0");
+      assert.strictEqual(f(1), "1");
+      assert.strictEqual(f(10), "10");
+      assert.strictEqual(f(100), "100");
+      assert.strictEqual(f(999.5), "999.5");
+      assert.strictEqual(f(999500), "999.5k");
+      assert.strictEqual(f(1000), "1k");
+      assert.strictEqual(f(1500.5), "1.5005k");
+      assert.strictEqual(f(.000001), "1μ");
+    },
+    "can output SI prefix notation with appropriate rounding": function(format) {
+      var f = format(".3s");
+      assert.strictEqual(f(0), "0.00");
+      assert.strictEqual(f(1), "1.00");
+      assert.strictEqual(f(10), "10.0");
+      assert.strictEqual(f(100), "100");
+      assert.strictEqual(f(999.5), "1.00k");
+      assert.strictEqual(f(999500), "1.00M");
+      assert.strictEqual(f(1000), "1.00k");
+      assert.strictEqual(f(1500.5), "1.50k");
+      assert.strictEqual(f(145500000), "146M");
+      assert.strictEqual(f(145999999.999999347), "146M");
+      assert.strictEqual(f(1e26), "100Y");
+      assert.strictEqual(f(.000001), "1.00μ");
+      assert.strictEqual(f(.009995), "0.0100");
+      var f = format(".4s");
+      assert.strictEqual(f(999.5), "999.5");
+      assert.strictEqual(f(999500), "999.5k");
+      assert.strictEqual(f(.009995), "9.995m");
+    },
+    "can output a percentage": function(format) {
+      var f = format("%");
+      assert.strictEqual(f(0), "0%");
+      assert.strictEqual(f(.042), "4%");
+      assert.strictEqual(f(.42), "42%");
+      assert.strictEqual(f(4.2), "420%");
+      assert.strictEqual(f(-.042), "−4%");
+      assert.strictEqual(f(-.42), "−42%");
+      assert.strictEqual(f(-4.2), "−420%");
+    },
+    "can output a percentage with rounding and sign": function(format) {
+      var f = format("+.2p");
+      assert.strictEqual(f(.00123), "+0.12%");
+      assert.strictEqual(f(.0123), "+1.2%");
+      assert.strictEqual(f(.123), "+12%");
+      assert.strictEqual(f(1.23), "+120%");
+      assert.strictEqual(f(-.00123), "−0.12%");
+      assert.strictEqual(f(-.0123), "−1.2%");
+      assert.strictEqual(f(-.123), "−12%");
+      assert.strictEqual(f(-1.23), "−120%");
+    },
+    "can round to significant digits": function(format) {
+      assert.strictEqual(format(".2r")(0), "0.0");
+      assert.strictEqual(format(".1r")(0.049), "0.05");
+      assert.strictEqual(format(".1r")(0.49), "0.5");
+      assert.strictEqual(format(".2r")(0.449), "0.45");
+      assert.strictEqual(format(".3r")(0.4449), "0.445");
+      assert.strictEqual(format(".3r")(1.00), "1.00");
+      assert.strictEqual(format(".3r")(0.9995), "1.00");
+      assert.strictEqual(format(".5r")(0.444449), "0.44445");
+      assert.strictEqual(format("r")(123.45), "123.45");
+      assert.strictEqual(format(".1r")(123.45), "100");
+      assert.strictEqual(format(".2r")(123.45), "120");
+      assert.strictEqual(format(".3r")(123.45), "123");
+      assert.strictEqual(format(".4r")(123.45), "123.5");
+      assert.strictEqual(format(".5r")(123.45), "123.45");
+      assert.strictEqual(format(".6r")(123.45), "123.450");
+    },
+    "can round very small numbers": function(format) {
+      var f = format(".2r");
+      assert.strictEqual(f(1e-22), "0.00000000000000000000");
+    },
+    "can group thousands": function(format) {
+      var f = format(",d");
+      assert.strictEqual(f(0), "0");
+      assert.strictEqual(f(42), "42");
+      assert.strictEqual(f(42000000), "42,000,000");
+      assert.strictEqual(f(420000000), "420,000,000");
+      assert.strictEqual(f(-4), "−4");
+      assert.strictEqual(f(-42), "−42");
+      assert.strictEqual(f(-4200000), "−4,200,000");
+      assert.strictEqual(f(-42000000), "−42,000,000");
+    },
+    "can group thousands and zero fill": function(format) {
+      assert.strictEqual(format("01,d")(0), "0");
+      assert.strictEqual(format("01,d")(0), "0");
+      assert.strictEqual(format("02,d")(0), "00");
+      assert.strictEqual(format("03,d")(0), "000");
+      assert.strictEqual(format("05,d")(0), "0,000");
+      assert.strictEqual(format("08,d")(0), "0,000,000");
+      assert.strictEqual(format("013,d")(0), "0,000,000,000");
+      assert.strictEqual(format("021,d")(0), "0,000,000,000,000,000");
+    },
+    "can group thousands and zero fill with overflow": function(format) {
+      assert.strictEqual(format("01,d")(1), "1");
+      assert.strictEqual(format("01,d")(1), "1");
+      assert.strictEqual(format("02,d")(12), "12");
+      assert.strictEqual(format("03,d")(123), "123");
+      assert.strictEqual(format("05,d")(12345), "12,345");
+      assert.strictEqual(format("08,d")(12345678), "12,345,678");
+      assert.strictEqual(format("013,d")(1234567890123), "1,234,567,890,123");
+    },
+    "can group thousands and space fill": function(format) {
+      assert.strictEqual(format("1,d")(0), "0");
+      assert.strictEqual(format("1,d")(0), "0");
+      assert.strictEqual(format("2,d")(0), " 0");
+      assert.strictEqual(format("3,d")(0), "  0");
+      assert.strictEqual(format("5,d")(0), "    0");
+      assert.strictEqual(format("8,d")(0), "       0");
+      assert.strictEqual(format("13,d")(0), "            0");
+      assert.strictEqual(format("21,d")(0), "                    0");
+    },
+    "can group thousands and space fill with overflow": function(format) {
+      assert.strictEqual(format("1,d")(1), "1");
+      assert.strictEqual(format("1,d")(1), "1");
+      assert.strictEqual(format("2,d")(12), "12");
+      assert.strictEqual(format("3,d")(123), "123");
+      assert.strictEqual(format("5,d")(12345), "12,345");
+      assert.strictEqual(format("8,d")(12345678), "12,345,678");
+      assert.strictEqual(format("13,d")(1234567890123), "1,234,567,890,123");
+    },
+    "can group thousands with general notation": function(format) {
+      var f = format(",g");
+      assert.strictEqual(f(0), "0");
+      assert.strictEqual(f(42), "42");
+      assert.strictEqual(f(42000000), "42,000,000");
+      assert.strictEqual(f(420000000), "420,000,000");
+      assert.strictEqual(f(-4), "−4");
+      assert.strictEqual(f(-42), "−42");
+      assert.strictEqual(f(-4200000), "−4,200,000");
+      assert.strictEqual(f(-42000000), "−42,000,000");
+    },
+    "can group thousands, space fill, and round to significant digits": function(format) {
+      assert.strictEqual(format("10,.1f")(123456.49), " 123,456.5");
+      assert.strictEqual(format("10,.2f")(1234567.449), "1,234,567.45");
+      assert.strictEqual(format("10,.3f")(12345678.4449), "12,345,678.445");
+      assert.strictEqual(format("10,.5f")(123456789.444449), "123,456,789.44445");
+      assert.strictEqual(format("10,.1f")(123456), " 123,456.0");
+      assert.strictEqual(format("10,.2f")(1234567), "1,234,567.00");
+      assert.strictEqual(format("10,.3f")(12345678), "12,345,678.000");
+      assert.strictEqual(format("10,.5f")(123456789), "123,456,789.00000");
+    },
+    "can display integers in fixed-point notation": function(format) {
+      assert.strictEqual(format("f")(42), "42");
+    },
+    "will not display non-integers in integer format": function(format) {
+      assert.strictEqual(format("d")(4.2), "");
+    },
+    "supports \"n\" as an alias for \",g\"": function(format) {
+      var f = format("n");
+      assert.strictEqual(f(.0042), "0.0042");
+      assert.strictEqual(f(.42), "0.42");
+      assert.strictEqual(f(0), "0");
+      assert.strictEqual(f(42), "42");
+      assert.strictEqual(f(42000000), "42,000,000");
+      assert.strictEqual(f(420000000), "420,000,000");
+      assert.strictEqual(f(-4), "−4");
+      assert.strictEqual(f(-42), "−42");
+      assert.strictEqual(f(-4200000), "−4,200,000");
+      assert.strictEqual(f(-42000000), "−42,000,000");
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/formatPrefix-test.js b/static/vendor/d3-2.8.1/test/core/formatPrefix-test.js
new file mode 100755 (executable)
index 0000000..77560d9
--- /dev/null
@@ -0,0 +1,107 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.formatPrefix");
+
+suite.addBatch({
+  "formatPrefix": {
+    topic: function() {
+      return d3.formatPrefix;
+    },
+    "determines the appropriate prefix for small numbers": function(prefix) {
+      assert.equal(prefix(0).symbol, "");
+      assert.equal(prefix(1e-00).symbol, "");
+      assert.equal(prefix(1e-01).symbol, "");
+      assert.equal(prefix(1e-02).symbol, "");
+      assert.equal(prefix(1e-03).symbol, "m");
+      assert.equal(prefix(1e-04).symbol, "m");
+      assert.equal(prefix(1e-05).symbol, "m");
+      assert.equal(prefix(1e-06).symbol, "μ");
+      assert.equal(prefix(1e-07).symbol, "μ");
+      assert.equal(prefix(1e-08).symbol, "μ");
+      assert.equal(prefix(1e-09).symbol, "n");
+      assert.equal(prefix(1e-10).symbol, "n");
+      assert.equal(prefix(1e-11).symbol, "n");
+      assert.equal(prefix(1e-12).symbol, "p");
+      assert.equal(prefix(1e-13).symbol, "p");
+      assert.equal(prefix(1e-14).symbol, "p");
+      assert.equal(prefix(1e-15).symbol, "f");
+      assert.equal(prefix(1e-16).symbol, "f");
+      assert.equal(prefix(1e-17).symbol, "f");
+      assert.equal(prefix(1e-18).symbol, "a");
+      assert.equal(prefix(1e-19).symbol, "a");
+      assert.equal(prefix(1e-20).symbol, "a");
+      assert.equal(prefix(1e-21).symbol, "z");
+      assert.equal(prefix(1e-22).symbol, "z");
+      assert.equal(prefix(1e-23).symbol, "z");
+      assert.equal(prefix(1e-24).symbol, "y");
+      assert.equal(prefix(1e-25).symbol, "y");
+      assert.equal(prefix(1e-26).symbol, "y");
+      assert.equal(prefix(1e-27).symbol, "y");
+    },
+    "determines the appropriate prefix for large numbers": function(prefix) {
+      assert.equal(prefix(0).symbol, "");
+      assert.equal(prefix(1e00).symbol, "");
+      assert.equal(prefix(1e01).symbol, "");
+      assert.equal(prefix(1e02).symbol, "");
+      assert.equal(prefix(1e03).symbol, "k");
+      assert.equal(prefix(1e04).symbol, "k");
+      assert.equal(prefix(1e05).symbol, "k");
+      assert.equal(prefix(1e06).symbol, "M");
+      assert.equal(prefix(1e07).symbol, "M");
+      assert.equal(prefix(1e08).symbol, "M");
+      assert.equal(prefix(1e09).symbol, "G");
+      assert.equal(prefix(1e10).symbol, "G");
+      assert.equal(prefix(1e11).symbol, "G");
+      assert.equal(prefix(1e12).symbol, "T");
+      assert.equal(prefix(1e13).symbol, "T");
+      assert.equal(prefix(1e14).symbol, "T");
+      assert.equal(prefix(1e15).symbol, "P");
+      assert.equal(prefix(1e16).symbol, "P");
+      assert.equal(prefix(1e17).symbol, "P");
+      assert.equal(prefix(1e18).symbol, "E");
+      assert.equal(prefix(1e19).symbol, "E");
+      assert.equal(prefix(1e20).symbol, "E");
+      assert.equal(prefix(1e21).symbol, "Z");
+      assert.equal(prefix(1e22).symbol, "Z");
+      assert.equal(prefix(1e23).symbol, "Z");
+      assert.equal(prefix(1e24).symbol, "Y");
+      assert.equal(prefix(1e25).symbol, "Y");
+      assert.equal(prefix(1e26).symbol, "Y");
+      assert.equal(prefix(1e27).symbol, "Y");
+    },
+    "determines the appropriate prefix for negative numbers": function(prefix) {
+      assert.equal(prefix(-0).symbol, "");
+      assert.equal(prefix(-1e-00).symbol, "");
+      assert.equal(prefix(-1e-03).symbol, "m");
+      assert.equal(prefix(-1e-06).symbol, "μ");
+      assert.equal(prefix(-1e-09).symbol, "n");
+      assert.equal(prefix(-1e-12).symbol, "p");
+      assert.equal(prefix(-1e-15).symbol, "f");
+      assert.equal(prefix(-1e-18).symbol, "a");
+      assert.equal(prefix(-1e-21).symbol, "z");
+      assert.equal(prefix(-1e-24).symbol, "y");
+      assert.equal(prefix(-1e-27).symbol, "y");
+      assert.equal(prefix(-1e00).symbol, "");
+      assert.equal(prefix(-1e03).symbol, "k");
+      assert.equal(prefix(-1e06).symbol, "M");
+      assert.equal(prefix(-1e09).symbol, "G");
+      assert.equal(prefix(-1e12).symbol, "T");
+      assert.equal(prefix(-1e15).symbol, "P");
+      assert.equal(prefix(-1e18).symbol, "E");
+      assert.equal(prefix(-1e21).symbol, "Z");
+      assert.equal(prefix(-1e24).symbol, "Y");
+      assert.equal(prefix(-1e27).symbol, "Y");
+    },
+    "considers the effect of rounding based on precision": function(prefix) {
+      assert.equal(prefix(999.5, 3).symbol, "k");
+      assert.equal(prefix(999.5, 4).symbol, "");
+      assert.equal(prefix(.009995, 3).symbol, "");
+      assert.equal(prefix(.009995, 4).symbol, "m");
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/functor-test.js b/static/vendor/d3-2.8.1/test/core/functor-test.js
new file mode 100755 (executable)
index 0000000..62b96a2
--- /dev/null
@@ -0,0 +1,28 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.functor");
+
+suite.addBatch({
+  "functor": {
+    topic: function() {
+      return d3.functor;
+    },
+    "when passed a function, returns the function": function(functor) {
+      function foo() {}
+      assert.strictEqual(functor(foo), foo);
+    },
+    "when passed a non-function, returns a wrapper function": function(functor) {
+      var a = {};
+      assert.isNull(functor(null)());
+      assert.isUndefined(functor(undefined)());
+      assert.strictEqual(functor(a)(), a);
+      assert.strictEqual(functor(1)(), 1);
+      assert.deepEqual(functor([1])(), [1]);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/hsl-test.js b/static/vendor/d3-2.8.1/test/core/hsl-test.js
new file mode 100755 (executable)
index 0000000..28c597f
--- /dev/null
@@ -0,0 +1,81 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.hsl");
+
+suite.addBatch({
+  "hsl": {
+    topic: function() {
+      return d3.hsl;
+    },
+    "does not clamp channel values": function(hsl) {
+      assert.hslEqual(hsl(-100, -1, -2), -100, -1, -2);
+      assert.hslEqual(hsl(400, 2, 3), 400, 2, 3);
+    },
+    "converts string channel values to numbers": function(hsl) {
+      assert.hslEqual(hsl("180", ".5", ".6"), 180, .5, .6);
+    },
+    "converts null channel values to zero": function(hsl) {
+      assert.hslEqual(hsl(null, null, null), 0, 0, 0);
+    },
+    "exposes h, s and l properties": function(hsl) {
+      var color = hsl("hsl(180, 50%, 60%)");
+      assert.equal(color.h, 180);
+      assert.equal(color.s, .5);
+      assert.equal(color.l, .6);
+    },
+    "changing h, s or l affects the string format": function(hsl) {
+      var color = hsl("hsl(180, 50%, 60%)");
+      color.h++;
+      color.s += .1;
+      color.l += .1;
+      assert.equal(color + "", "#85dfe0");
+    },
+    "parses hexadecimal shorthand format (e.g., \"#abc\")": function(hsl) {
+      assert.hslEqual(hsl("#abc"), 210, .25, .733333);
+    },
+    "parses hexadecimal format (e.g., \"#abcdef\")": function(hsl) {
+      assert.hslEqual(hsl("#abcdef"), 210, .68, .803922);
+    },
+    "parses HSL format (e.g., \"hsl(210, 64%, 13%)\")": function(hsl) {
+      assert.hslEqual(hsl("hsl(210, 64.7058%, 13.33333%)"), 210, .647058, .133333);
+    },
+    "parses color names (e.g., \"moccasin\")": function(hsl) {
+      assert.hslEqual(hsl("moccasin"), 38.108108, 1, .854902);
+      assert.hslEqual(hsl("aliceblue"), 208, 1, .970588);
+      assert.hslEqual(hsl("yellow"), 60, 1, .5);
+    },
+    "parses and converts RGB format (e.g., \"rgb(102, 102, 0)\")": function(hsl) {
+      assert.hslEqual(hsl("rgb(102, 102, 0)"), 60, 1, .2);
+    },
+    "can convert from RGB": function(hsl) {
+      assert.hslEqual(hsl(d3.rgb(12, 34, 56)), 210, .647058, .133333);
+    },
+    "can convert from HSL": function(hsl) {
+      assert.hslEqual(hsl(d3.hsl(20, .8, .3)), 20, .8, .3);
+    },
+    "can convert to RGB": function(hsl) {
+      assert.rgbEqual(hsl("steelblue").rgb(), 70, 130, 180);
+    },
+    "can derive a brighter color": function(hsl) {
+      assert.hslEqual(hsl("steelblue").brighter(), 207.272727, .44, .7002801);
+      assert.hslEqual(hsl("steelblue").brighter(.5), 207.272727, .44, .5858964);
+      assert.hslEqual(hsl("steelblue").brighter(1), 207.272727, .44, .7002801);
+      assert.hslEqual(hsl("steelblue").brighter(2), 207.272727, .44, 1.0004002);
+    },
+    "can derive a darker color": function(hsl) {
+      assert.hslEqual(hsl("lightsteelblue").darker(), 213.913043, .4107143, .5462745);
+      assert.hslEqual(hsl("lightsteelblue").darker(.5), 213.913043, .4107143, .6529229);
+      assert.hslEqual(hsl("lightsteelblue").darker(1), 213.913043, .4107143, .5462745);
+      assert.hslEqual(hsl("lightsteelblue").darker(2), 213.913043, .4107143, .38239216);
+    },
+    "string coercion returns RGB format": function(hsl) {
+      assert.strictEqual(hsl("hsl(60, 100%, 20%)") + "", "#666600");
+      assert.strictEqual(hsl(d3.hsl(60, 1, .2)) + "", "#666600");
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/html-test.js b/static/vendor/d3-2.8.1/test/core/html-test.js
new file mode 100755 (executable)
index 0000000..3ede585
--- /dev/null
@@ -0,0 +1,36 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.html");
+
+suite.addBatch({
+  "html": {
+    topic: function() {
+      var cb = this.callback;
+      return d3.html("examples/data/sample.html", function(document) {
+        cb(null, document);
+      });
+    },
+    "invokes the callback with the loaded html": function(document) {
+      assert.equal(document.getElementsByTagName("H1")[0].textContent, "Hello & world!");
+    },
+    "override the mime type to text/html": function(xml) {
+      assert.equal(XMLHttpRequest._last._info.mimeType, "text/html");
+    },
+    "": {
+      topic: function() {
+        var cb = this.callback;
+        return d3.html("//does/not/exist.html", function(document) {
+          cb(null, document);
+        });
+      },
+      "invokes the callback with null when an error occurs": function(document) {
+        assert.isNull(document);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/interpolate-test.js b/static/vendor/d3-2.8.1/test/core/interpolate-test.js
new file mode 100755 (executable)
index 0000000..daaeaaf
--- /dev/null
@@ -0,0 +1,230 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.interpolate");
+
+suite.addBatch({
+  "interpolate": {
+    topic: function() {
+      return d3.interpolate;
+    },
+    "interpolates numbers": function(interpolate) {
+      assert.equal(interpolate(2, 12)(.4), 6);
+      assert.equal(interpolate("2px", 12)(.4), 6);
+    },
+    "interpolates colors": function(interpolate) {
+      assert.equal(interpolate("#abcdef", "#fedcba")(.4), "#ccd3da");
+    },
+    "interpolates strings": function(interpolate) {
+      assert.equal(interpolate("width:10px;", "width:50px;")(.2), "width:18px;");
+      assert.equal(interpolate(2, "12px")(.4), "6px");
+    },
+    "interpolates arrays": function(interpolate) {
+      assert.deepEqual(interpolate([2, 4], [12, 24])(.4), [6, 12]);
+    },
+    "interpolates objects": function(interpolate) {
+      assert.deepEqual(interpolate({foo: 2}, {foo: 12})(.4), {foo: 6});
+    },
+    "may or may not interpolate between enumerable and non-enumerable properties": function(interpolate) {
+      var a = Object.create({}, {foo: {value: 1, enumerable: true}}),
+          b = Object.create({}, {foo: {value: 2, enumerable: false}});
+      try {
+        assert.deepEqual(interpolate(a, b)(1), {});
+      } catch (e) {
+        assert.deepEqual(interpolate(a, b)(1), {foo: 2});
+      }
+      try {
+        assert.deepEqual(interpolate(b, a)(1), {});
+      } catch (e) {
+        assert.deepEqual(interpolate(b, a)(1), {foo: 1});
+      }
+    },
+    "interpolates inherited properties of objects": function(interpolate) {
+      var a = Object.create({foo: 0}),
+          b = Object.create({foo: 2});
+      assert.deepEqual(interpolate(a, b)(.5), {foo: 1});
+    },
+    "doesn't interpret properties in the default object's prototype chain as RGB": function(interpolate) {
+      assert.equal(interpolate("hasOwnProperty", "hasOwnProperty")(0), "hasOwnProperty");
+    }
+  }
+});
+
+suite.addBatch({
+  "interpolateNumber": {
+    topic: function() {
+      return d3.interpolateNumber;
+    },
+    "interpolates numbers": function(interpolate) {
+      assert.equal(interpolate(2, 12)(.4), 6);
+      assert.equal(interpolate(2, 12)(.6), 8);
+    }
+  }
+});
+
+suite.addBatch({
+  "interpolateRound": {
+    topic: function() {
+      return d3.interpolateRound;
+    },
+    "interpolates integers": function(interpolate) {
+      assert.equal(interpolate(2, 12)(.456), 7);
+      assert.equal(interpolate(2, 12)(.678), 9);
+    }
+  }
+});
+
+suite.addBatch({
+  "interpolateString": {
+    topic: function() {
+      return d3.interpolateString;
+    },
+    "interpolates matching numbers in both strings": function(interpolate) {
+      assert.equal(interpolate(" 10/20 30", "50/10 100 ")(.2), "18/18 44 ");
+      assert.equal(interpolate(" 10/20 30", "50/10 100 ")(.4), "26/16 58 ");
+    },
+    "preserves non-numbers in string b": function(interpolate) {
+      assert.equal(interpolate(" 10/20 30", "50/10 foo ")(.2), "18/18 foo ");
+      assert.equal(interpolate(" 10/20 30", "50/10 foo ")(.4), "26/16 foo ");
+    },
+    "preserves non-matching numbers in string b": function(interpolate) {
+      assert.equal(interpolate(" 10/20 foo", "50/10 100 ")(.2), "18/18 100 ");
+      assert.equal(interpolate(" 10/20 bar", "50/10 100 ")(.4), "26/16 100 ");
+    },
+    "preserves equal-value numbers in both strings": function(interpolate) {
+      assert.equal(interpolate(" 10/20 100 20", "50/10 100, 20 ")(.2), "18/18 100, 20 ");
+      assert.equal(interpolate(" 10/20 100 20", "50/10 100, 20 ")(.4), "26/16 100, 20 ");
+    },
+    "interpolates exponent notation correctly": function(interpolate) {
+      assert.equal(interpolate("1e+3", "1e+4")(.5), "5500");
+      assert.equal(interpolate("1e-3", "1e-4")(.5), "0.00055");
+    }
+  }
+});
+
+suite.addBatch({
+  "interpolateRgb": {
+    topic: function() {
+      return d3.interpolateRgb;
+    },
+    "parses string input": function(interpolate) {
+      assert.equal(interpolate("steelblue", "#f00")(.2), "#6b6890");
+      assert.equal(interpolate("steelblue", "#f00")(.6), "#b53448");
+    },
+    "parses d3.rgb input": function(interpolate) {
+      assert.equal(interpolate(d3.rgb("steelblue"), "#f00")(.2), "#6b6890");
+      assert.equal(interpolate("steelblue", d3.rgb(255, 0, 0))(.6), "#b53448");
+    },
+    "parses d3.hsl input": function(interpolate) {
+      assert.equal(interpolate(d3.hsl("steelblue"), "#f00")(.2), "#6b6890");
+      assert.equal(interpolate("steelblue", d3.hsl(0, 1, .5))(.6), "#b53448");
+    },
+    "interpolates in RGB color space": function(interpolate) {
+      assert.equal(interpolate("steelblue", "#f00")(.2), "#6b6890");
+    },
+    "outputs an RGB string": function(interpolate) {
+      assert.equal(interpolate("steelblue", "#f00")(.2), "#6b6890");
+    }
+  }
+});
+
+suite.addBatch({
+  "interpolateHsl": {
+    topic: function() {
+      return d3.interpolateHsl;
+    },
+    "parses string input": function(interpolate) {
+      assert.equal(interpolate("steelblue", "#f00")(.2), "#38c3a2");
+      assert.equal(interpolate("steelblue", "#f00")(.6), "#96e11c");
+    },
+    "parses d3.hsl input": function(interpolate) {
+      assert.equal(interpolate(d3.hsl("steelblue"), "#f00")(.2), "#38c3a2");
+      assert.equal(interpolate("steelblue", d3.hsl(0, 1, .5))(.6), "#96e11c");
+    },
+    "parses d3.rgb input": function(interpolate) {
+      assert.equal(interpolate(d3.rgb("steelblue"), "#f00")(.2), "#38c3a2");
+      assert.equal(interpolate("steelblue", d3.rgb(255, 0, 0))(.6), "#96e11c");
+    },
+    "interpolates in HSL color space": function(interpolate) {
+      assert.equal(interpolate("steelblue", "#f00")(.2), "#38c3a2");
+    },
+    "outputs a hexadecimal string": function(interpolate) {
+      assert.equal(interpolate("steelblue", "#f00")(.2), "#38c3a2");
+    }
+  }
+});
+
+suite.addBatch({
+  "interpolateArray": {
+    topic: function() {
+      return d3.interpolateArray;
+    },
+    "interpolates defined elements": function(interpolate) {
+      assert.deepEqual(interpolate([2, 12], [4, 24])(.5), [3, 18]);
+    },
+    "interpolates nested objects and arrays": function(interpolate) {
+      assert.deepEqual(interpolate([[2, 12]], [[4, 24]])(.5), [[3, 18]]);
+      assert.deepEqual(interpolate([{foo: [2, 12]}], [{foo: [4, 24]}])(.5), [{foo: [3, 18]}]);
+    },
+    "merges non-shared elements": function(interpolate) {
+      assert.deepEqual(interpolate([2, 12], [4, 24, 12])(.5), [3, 18, 12]);
+      assert.deepEqual(interpolate([2, 12, 12], [4, 24])(.5), [3, 18, 12]);
+    }
+  }
+});
+
+suite.addBatch({
+  "interpolateObject": {
+    topic: function() {
+      return d3.interpolateObject;
+    },
+    "interpolates defined properties": function(interpolate) {
+      assert.deepEqual(interpolate({a: 2, b: 12}, {a: 4, b: 24})(.5), {a: 3, b: 18});
+    },
+    "interpolates inherited properties": function(interpolate) {
+      function a(a) { this.a = a; }
+      a.prototype.b = 12;
+      assert.deepEqual(interpolate(new a(2), new a(4))(.5), {a: 3, b: 12});
+    },
+    "interpolates color properties as rgb": function(interpolate) {
+      assert.deepEqual(interpolate({background: "red"}, {background: "green"})(.5), {background: "#804000"});
+      assert.deepEqual(interpolate({fill: "red"}, {fill: "green"})(.5), {fill: "#804000"});
+      assert.deepEqual(interpolate({stroke: "red"}, {stroke: "green"})(.5), {stroke: "#804000"});
+      assert.deepEqual(interpolate({color: "red"}, {color: "green"})(.5), {color: "#804000"});
+    },
+    "interpolates nested objects and arrays": function(interpolate) {
+      assert.deepEqual(interpolate({foo: [2, 12]}, {foo: [4, 24]})(.5), {foo: [3, 18]});
+      assert.deepEqual(interpolate({foo: {bar: [2, 12]}}, {foo: {bar: [4, 24]}})(.5), {foo: {bar: [3, 18]}});
+    },
+    "merges non-shared properties": function(interpolate) {
+      assert.deepEqual(interpolate({foo: 2}, {foo: 4, bar: 12})(.5), {foo: 3, bar: 12});
+      assert.deepEqual(interpolate({foo: 2, bar: 12}, {foo: 4})(.5), {foo: 3, bar: 12});
+    }
+  }
+});
+
+suite.addBatch({
+  "interpolators": {
+    topic: function() {
+      return d3.interpolate;
+    },
+    "can register a custom interpolator": function(interpolate) {
+      try {
+        d3.interpolators.push(function(a, b) {
+          return a == "one" && b == "two" && d3.interpolateNumber(1, 2);
+        });
+        assert.equal(interpolate("one", "two")(-.5), .5);
+        assert.equal(interpolate("one", "two")(0), 1);
+        assert.equal(interpolate("one", "two")(.5), 1.5);
+        assert.equal(interpolate("one", "two")(1), 2);
+        assert.equal(interpolate("one", "two")(1.5), 2.5);
+      } finally {
+        d3.interpolators.pop();
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/json-test.js b/static/vendor/d3-2.8.1/test/core/json-test.js
new file mode 100755 (executable)
index 0000000..6817b5b
--- /dev/null
@@ -0,0 +1,36 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.json");
+
+suite.addBatch({
+  "json": {
+    topic: function() {
+      var cb = this.callback;
+      return d3.json("examples/data/sample.json", function(json) {
+        cb(null, json);
+      });
+    },
+    "invokes the callback with the loaded JSON": function(json) {
+      assert.deepEqual(json, [{"Hello":42,"World":"\"fish\""}]);
+    },
+    "overrides the mime type to application/json": function(json) {
+      assert.equal(XMLHttpRequest._last._info.mimeType, "application/json");
+    },
+    "": {
+      topic: function() {
+        var cb = this.callback;
+        return d3.json("//does/not/exist.json", function(json) {
+          cb(null, json);
+        });
+      },
+      "invokes the callback with null when an error occurs": function(json) {
+        assert.isNull(json);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/keys-test.js b/static/vendor/d3-2.8.1/test/core/keys-test.js
new file mode 100755 (executable)
index 0000000..4576b85
--- /dev/null
@@ -0,0 +1,30 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.keys");
+
+suite.addBatch({
+  "keys": {
+    topic: function() {
+      return d3.keys;
+    },
+    "enumerates every defined key": function(keys) {
+      assert.deepEqual(keys({a: 1, b: 1}), ["a", "b"]);
+    },
+    "includes keys defined on prototypes": function(keys) {
+      function abc() {
+        this.a = 1;
+        this.b = 2;
+      }
+      abc.prototype.c = 3;
+      assert.deepEqual(keys(new abc()), ["a", "b", "c"]);
+    },
+    "includes keys with null or undefined values": function(keys) {
+      assert.deepEqual(keys({a: undefined, b: null, c: NaN}), ["a", "b", "c"]);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/last-test.js b/static/vendor/d3-2.8.1/test/core/last-test.js
new file mode 100755 (executable)
index 0000000..9f0e132
--- /dev/null
@@ -0,0 +1,41 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.last");
+
+suite.addBatch({
+  "last": {
+    topic: function() {
+      return d3.last;
+    },
+    "compares using natural order by default": function(last) {
+      assert.strictEqual(last([1, 0]), 1);
+      assert.strictEqual(last(["1", 0]), "1");
+      assert.strictEqual(last(["2", "10"]), "2");
+      assert.strictEqual(last(["2", NaN, "10"]), "2");
+      assert.strictEqual(last([2, NaN, 10]), 10);
+    },
+    "compares using optional comparator": function(last) {
+      var i = 0, aa, bb, o = new Object();
+      assert.strictEqual(last([1, o], function(a, b) { aa = a; bb = b; return ++i; }), 1);
+      assert.strictEqual(aa, 1);
+      assert.strictEqual(bb, o);
+      assert.strictEqual(last([1, 0], d3.descending), 0);
+      assert.strictEqual(last(["1", 0], d3.descending), 0);
+      assert.strictEqual(last(["2", "10"], d3.descending), "10");
+      assert.strictEqual(last(["2", NaN, "10"], d3.descending), "10");
+      assert.strictEqual(last([2, NaN, 10], d3.descending), 2);
+    },
+    "returns the last of equal values": function(last) {
+      var a = new Object(), b = new Object(), c = new Object();
+      assert.strictEqual(last([a, b, c], function() { return 0; }), c);
+    },
+    "returns undefined for an empty array": function(last) {
+      assert.isUndefined(last([]));
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/map-test.js b/static/vendor/d3-2.8.1/test/core/map-test.js
new file mode 100755 (executable)
index 0000000..aa729a6
--- /dev/null
@@ -0,0 +1,212 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.map");
+
+suite.addBatch({
+  "constructor": {
+    "map() returns an empty map": function() {
+      var map = d3.map();
+      assert.deepEqual(map.keys(), []);
+    },
+    "map(null) returns an empty map": function() {
+      var map = d3.map(null);
+      assert.deepEqual(map.keys(), []);
+    },
+    "map(object) copies enumerable keys": function() {
+      var map = d3.map({foo: 42});
+      assert.isTrue(map.has("foo"));
+      assert.equal(map.get("foo"), 42);
+      var map = d3.map(Object.create(null, {foo: {value: 42, enumerable: true}}));
+      assert.isTrue(map.has("foo"));
+      assert.equal(map.get("foo"), 42);
+    },
+    "map(object) copies inherited keys": function() {
+      function Foo() {}
+      Foo.prototype.foo = 42;
+      var map = d3.map(Object.create({foo: 42}));
+      assert.isTrue(map.has("foo"));
+      assert.equal(map.get("foo"), 42);
+      var map = d3.map(new Foo());
+      assert.isTrue(map.has("foo"));
+      assert.equal(map.get("foo"), 42);
+    },
+    "map(object) does not copy non-enumerable keys": function() {
+      var map = d3.map({__proto__: 42}); // because __proto__ isn't enumerable
+      assert.isFalse(map.has("__proto__"));
+      assert.isUndefined(map.get("__proto__"));
+      var map = d3.map(Object.create(null, {foo: {value: 42, enumerable: false}}));
+      assert.isFalse(map.has("foo"));
+      assert.isUndefined(map.get("foo"));
+    }
+  },
+  "forEach": {
+    "empty maps have an empty keys array": function() {
+      var map = d3.map();
+      assert.deepEqual(map.entries(), []);
+      map.set("foo", "bar");
+      assert.deepEqual(map.entries(), [{key: "foo", value: "bar"}]);
+      map.remove("foo");
+      assert.deepEqual(map.entries(), []);
+    },
+    "keys are returned in arbitrary order": function() {
+      var map = d3.map({foo: 1, bar: "42"});
+      assert.deepEqual(map.entries().sort(ascendingByKey), [{key: "bar", value: "42"}, {key: "foo", value: 1}]);
+      var map = d3.map({bar: "42", foo: 1});
+      assert.deepEqual(map.entries().sort(ascendingByKey), [{key: "bar", value: "42"}, {key: "foo", value: 1}]);
+    },
+    "observes changes via set and remove": function() {
+      var map = d3.map({foo: 1, bar: "42"});
+      assert.deepEqual(map.entries().sort(ascendingByKey), [{key: "bar", value: "42"}, {key: "foo", value: 1}]);
+      map.remove("foo");
+      assert.deepEqual(map.entries(), [{key: "bar", value: "42"}]);
+      map.set("bar", "bar");
+      assert.deepEqual(map.entries(), [{key: "bar", value: "bar"}]);
+      map.set("foo", "foo");
+      assert.deepEqual(map.entries().sort(ascendingByKey), [{key: "bar", value: "bar"}, {key: "foo", value: "foo"}]);
+      map.remove("bar");
+      assert.deepEqual(map.entries(), [{key: "foo", value: "foo"}]);
+      map.remove("foo");
+      assert.deepEqual(map.entries(), []);
+      map.remove("foo");
+      assert.deepEqual(map.entries(), []);
+    }
+  },
+  "keys": {
+    "returns an array of string keys": function() {
+      var map = d3.map({foo: 1, bar: "42"});
+      assert.deepEqual(map.keys().sort(), ["bar", "foo"]);
+    }
+  },
+  "values": {
+    "returns an array of arbitrary values": function() {
+      var map = d3.map({foo: 1, bar: "42"});
+      assert.deepEqual(map.values().sort(), [1, "42"]);
+    }
+  },
+  "entries": {
+    "returns an array of key-value objects": function() {
+      var map = d3.map({foo: 1, bar: "42"});
+      assert.deepEqual(map.entries().sort(ascendingByKey), [{key: "bar", value: "42"}, {key: "foo", value: 1}]);
+    }
+  },
+  "has": {
+    "empty maps do not have object built-ins": function() {
+      var map = d3.map();
+      assert.isFalse(map.has("__proto__"));
+      assert.isFalse(map.has("hasOwnProperty"));
+    },
+    "can has keys using built-in names": function() {
+      var map = d3.map();
+      map.set("__proto__", 42);
+      assert.isTrue(map.has("__proto__"));
+    },
+    "can has keys with null or undefined properties": function() {
+      var map = d3.map();
+      map.set("", "");
+      map.set("null", null);
+      map.set("undefined", undefined);
+      assert.isTrue(map.has(""));
+      assert.isTrue(map.has("null"));
+      assert.isTrue(map.has("undefined"));
+    },
+    "coerces keys to strings": function() {
+      var map = d3.map({"42": "foo", "null": 1, "undefined": 2});
+      assert.isTrue(map.has(42));
+      assert.isTrue(map.has(null));
+      assert.isTrue(map.has(undefined));
+    },
+    "returns the latest value": function() {
+      var map = d3.map({foo: 42});
+      assert.isTrue(map.has("foo"));
+      map.set("foo", 43);
+      assert.isTrue(map.has("foo"));
+      map.remove("foo");
+      assert.isFalse(map.has("foo"));
+      map.set("foo", "bar");
+      assert.isTrue(map.has("foo"));
+    },
+    "returns undefined for missing keys": function() {
+      var map = d3.map({foo: 42});
+      assert.isFalse(map.has("bar"));
+    }
+  },
+  "get": {
+    "empty maps do not have object built-ins": function() {
+      var map = d3.map();
+      assert.isUndefined(map.get("__proto__"));
+      assert.isUndefined(map.get("hasOwnProperty"));
+    },
+    "can get keys using built-in names": function() {
+      var map = d3.map();
+      map.set("__proto__", 42);
+      assert.equal(map.get("__proto__"), 42);
+    },
+    "coerces keys to strings": function() {
+      var map = d3.map({"42": 1, "null": 2, "undefined": 3});
+      assert.equal(map.get(42), 1);
+      assert.equal(map.get(null), 2);
+      assert.equal(map.get(undefined), 3);
+    },
+    "returns the latest value": function() {
+      var map = d3.map({foo: 42});
+      assert.equal(map.get("foo"), 42);
+      map.set("foo", 43);
+      assert.equal(map.get("foo"), 43);
+      map.remove("foo");
+      assert.isUndefined(map.get("foo"));
+      map.set("foo", "bar");
+      assert.equal(map.get("foo"), "bar");
+    },
+    "returns undefined for missing keys": function() {
+      var map = d3.map({foo: 42});
+      assert.isUndefined(map.get("bar"));
+    }
+  },
+  "set": {
+    "returns the set value": function() {
+      var map = d3.map();
+      assert.equal(map.set("foo", 42), 42);
+    },
+    "can set keys using built-in names": function() {
+      var map = d3.map();
+      map.set("__proto__", 42);
+      assert.equal(map.get("__proto__"), 42);
+    },
+    "coerces keys to strings": function() {
+      var map = d3.map();
+      map.set(42, 1);
+      assert.equal(map.get(42), 1);
+      map.set(null, 2);
+      assert.equal(map.get(null), 2);
+      map.set(undefined, 3);
+      assert.equal(map.get(undefined), 3);
+      assert.deepEqual(map.keys().sort(), ["42", "null", "undefined"]);
+    },
+    "can replace values": function() {
+      var map = d3.map({foo: 42});
+      assert.equal(map.get("foo"), 42);
+      map.set("foo", 43);
+      assert.equal(map.get("foo"), 43);
+      map.set("foo", "bar");
+      assert.equal(map.get("foo"), "bar");
+    },
+    "can set null, undefined or empty string values": function() {
+      var map = d3.map();
+      map.set("", "");
+      map.set("null", null);
+      map.set("undefined", undefined);
+      assert.equal(map.get(""), "");
+      assert.isNull(map.get("null"));
+      assert.isUndefined(map.get("undefined"));
+    }
+  }
+});
+
+function ascendingByKey(a, b) {
+  return d3.ascending(a.key, b.key);
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/max-test.js b/static/vendor/d3-2.8.1/test/core/max-test.js
new file mode 100755 (executable)
index 0000000..4f3eaef
--- /dev/null
@@ -0,0 +1,50 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.max");
+
+suite.addBatch({
+  "max": {
+    topic: function() {
+      return d3.max;
+    },
+    "returns the greatest numeric value for numbers": function(max) {
+      assert.equal(max([1]), 1);
+      assert.equal(max([5, 1, 2, 3, 4]), 5);
+      assert.equal(max([20, 3]), 20);
+      assert.equal(max([3, 20]), 20);
+    },
+    "returns the greatest lexicographic value for strings": function(max) {
+      assert.equal(max(["c", "a", "b"]), "c");
+      assert.equal(max(["20", "3"]), "3");
+      assert.equal(max(["3", "20"]), "3");
+    },
+    "ignores null, undefined and NaN": function(max) {
+      assert.equal(max([NaN, 1, 2, 3, 4, 5]), 5);
+      assert.equal(max([1, 2, 3, 4, 5, NaN]), 5);
+      assert.equal(max([10, null, 3, undefined, 5, NaN]), 10);
+      assert.equal(max([-1, null, -3, undefined, -5, NaN]), -1);
+    },
+    "compares heterogenous types as numbers": function(max) {
+      assert.strictEqual(max([20, "3"]), 20);
+      assert.strictEqual(max(["20", 3]), "20");
+      assert.strictEqual(max([3, "20"]), "20");
+      assert.strictEqual(max(["3", 20]), 20);
+    },
+    "returns undefined for empty array": function(max) {
+      assert.isUndefined(max([]));
+      assert.isUndefined(max([null]));
+      assert.isUndefined(max([undefined]));
+      assert.isUndefined(max([NaN]));
+      assert.isUndefined(max([NaN, NaN]));
+    },
+    "applies the optional accessor function": function(max) {
+      assert.equal(d3.max([[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]], function(d) { return d3.min(d); }), 2);
+      assert.equal(d3.max([1, 2, 3, 4, 5], function(d, i) { return i; }), 4);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/mean-test.js b/static/vendor/d3-2.8.1/test/core/mean-test.js
new file mode 100755 (executable)
index 0000000..827e0bc
--- /dev/null
@@ -0,0 +1,42 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.mean");
+
+suite.addBatch({
+  "mean": {
+    topic: function() {
+      return d3.mean;
+    },
+    "returns the mean value for numbers": function(mean) {
+      assert.equal(mean([1]), 1);
+      assert.equal(mean([5, 1, 2, 3, 4]), 3);
+      assert.equal(mean([20, 3]), 11.5);
+      assert.equal(mean([3, 20]), 11.5);
+    },
+    "ignores null, undefined and NaN": function(mean) {
+      assert.equal(mean([NaN, 1, 2, 3, 4, 5]), 3);
+      assert.equal(mean([1, 2, 3, 4, 5, NaN]), 3);
+      assert.equal(mean([10, null, 3, undefined, 5, NaN]), 6);
+    },
+    "can handle large numbers without overflowing": function(mean) {
+      assert.equal(mean([Number.MAX_VALUE, Number.MAX_VALUE]), Number.MAX_VALUE);
+      assert.equal(mean([-Number.MAX_VALUE, -Number.MAX_VALUE]), -Number.MAX_VALUE);
+    },
+    "returns undefined for empty array": function(mean) {
+      assert.isUndefined(mean([]));
+      assert.isUndefined(mean([null]));
+      assert.isUndefined(mean([undefined]));
+      assert.isUndefined(mean([NaN]));
+      assert.isUndefined(mean([NaN, NaN]));
+    },
+    "applies the optional accessor function": function(mean) {
+      assert.equal(d3.mean([[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]], function(d) { return d3.mean(d); }), 4.5);
+      assert.equal(d3.mean([1, 2, 3, 4, 5], function(d, i) { return i; }), 2);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/median-test.js b/static/vendor/d3-2.8.1/test/core/median-test.js
new file mode 100755 (executable)
index 0000000..e543e30
--- /dev/null
@@ -0,0 +1,42 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.median");
+
+suite.addBatch({
+  "median": {
+    topic: function() {
+      return d3.median;
+    },
+    "returns the median value for numbers": function(median) {
+      assert.equal(median([1]), 1);
+      assert.equal(median([5, 1, 2, 3, 4]), 3);
+      assert.equal(median([20, 3]), 11.5);
+      assert.equal(median([3, 20]), 11.5);
+    },
+    "ignores null, undefined and NaN": function(median) {
+      assert.equal(median([NaN, 1, 2, 3, 4, 5]), 3);
+      assert.equal(median([1, 2, 3, 4, 5, NaN]), 3);
+      assert.equal(median([10, null, 3, undefined, 5, NaN]), 5);
+    },
+    "can handle large numbers without overflowing": function(median) {
+      assert.equal(median([Number.MAX_VALUE, Number.MAX_VALUE]), Number.MAX_VALUE);
+      assert.equal(median([-Number.MAX_VALUE, -Number.MAX_VALUE]), -Number.MAX_VALUE);
+    },
+    "returns undefined for empty array": function(median) {
+      assert.isUndefined(median([]));
+      assert.isUndefined(median([null]));
+      assert.isUndefined(median([undefined]));
+      assert.isUndefined(median([NaN]));
+      assert.isUndefined(median([NaN, NaN]));
+    },
+    "applies the optional accessor function": function(median) {
+      assert.equal(d3.median([[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]], function(d) { return d3.median(d); }), 4.5);
+      assert.equal(d3.median([1, 2, 3, 4, 5], function(d, i) { return i; }), 2);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/merge-test.js b/static/vendor/d3-2.8.1/test/core/merge-test.js
new file mode 100755 (executable)
index 0000000..5176819
--- /dev/null
@@ -0,0 +1,26 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.merge");
+
+suite.addBatch({
+  "merge": {
+    "merges an array of arrays": function() {
+      var a = {}, b = {}, c = {}, d = {}, e = {}, f = {};
+      assert.deepEqual(d3.merge([[a], [b, c], [d, e, f]]), [a, b, c, d, e, f]);
+    },
+    "returns a new array": function() {
+      var input = [[1, 2, 3], [4, 5], [6]];
+      assert.isFalse(d3.merge(input) === input);
+    },
+    "does not modify the input arrays": function() {
+      var input = [[1, 2, 3], [4, 5], [6]];
+      d3.merge(input);
+      assert.deepEqual(input, [[1, 2, 3], [4, 5], [6]]);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/min-test.js b/static/vendor/d3-2.8.1/test/core/min-test.js
new file mode 100755 (executable)
index 0000000..fcf2112
--- /dev/null
@@ -0,0 +1,49 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.min");
+
+suite.addBatch({
+  "min": {
+    topic: function() {
+      return d3.min;
+    },
+    "returns the least numeric value for numbers": function(min) {
+      assert.equal(min([1]), 1);
+      assert.equal(min([5, 1, 2, 3, 4]), 1);
+      assert.equal(min([20, 3]), 3);
+      assert.equal(min([3, 20]), 3);
+    },
+    "returns the least lexicographic value for strings": function(min) {
+      assert.equal(min(["c", "a", "b"]), "a");
+      assert.equal(min(["20", "3"]), "20");
+      assert.equal(min(["3", "20"]), "20");
+    },
+    "ignores null, undefined and NaN": function(min) {
+      assert.equal(min([NaN, 1, 2, 3, 4, 5]), 1);
+      assert.equal(min([1, 2, 3, 4, 5, NaN]), 1);
+      assert.equal(min([10, null, 3, undefined, 5, NaN]), 3);
+    },
+    "compares heterogenous types as numbers": function(min) {
+      assert.strictEqual(min([20, "3"]), "3");
+      assert.strictEqual(min(["20", 3]), 3);
+      assert.strictEqual(min([3, "20"]), 3);
+      assert.strictEqual(min(["3", 20]), "3");
+    },
+    "returns undefined for empty array": function(min) {
+      assert.isUndefined(min([]));
+      assert.isUndefined(min([null]));
+      assert.isUndefined(min([undefined]));
+      assert.isUndefined(min([NaN]));
+      assert.isUndefined(min([NaN, NaN]));
+    },
+    "applies the optional accessor function": function(min) {
+      assert.equal(d3.min([[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]], function(d) { return d3.max(d); }), 5);
+      assert.equal(d3.min([1, 2, 3, 4, 5], function(d, i) { return i; }), 0);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/nest-test.js b/static/vendor/d3-2.8.1/test/core/nest-test.js
new file mode 100755 (executable)
index 0000000..59b8da9
--- /dev/null
@@ -0,0 +1,241 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.nest");
+
+suite.addBatch({
+  "entries": {
+    topic: function() {
+      return d3.nest;
+    },
+    "returns an array of each distinct key in arbitrary order": function(nest) {
+      var keys = nest()
+          .key(function(d) { return d.foo; })
+          .entries([{foo: 1}, {foo: 1}, {foo: 2}])
+          .map(function(d) { return d.key; })
+          .sort(d3.ascending);
+      assert.deepEqual(keys, ["1", "2"]);
+    },
+    "each entry is a key-values object, with values in input order": function(nest) {
+      var entries = nest()
+          .key(function(d) { return d.foo; })
+          .entries([{foo: 1, bar: 0}, {foo: 2}, {foo: 1, bar: 1}]);
+      assert.deepEqual(entries, [
+        {key: "1", values: [{foo: 1, bar: 0}, {foo: 1, bar: 1}]},
+        {key: "2", values: [{foo: 2}]}
+      ]);
+    },
+    "keys can be sorted using an optional comparator": function(nest) {
+      var keys = nest()
+          .key(function(d) { return d.foo; }).sortKeys(d3.descending)
+          .entries([{foo: 1}, {foo: 1}, {foo: 2}])
+          .map(function(d) { return d.key; });
+      assert.deepEqual(keys, ["2", "1"]);
+    },
+    "values can be sorted using an optional comparator": function(nest) {
+      var entries = nest()
+          .key(function(d) { return d.foo; })
+          .sortValues(function(a, b) { return a.bar - b.bar; })
+          .entries([{foo: 1, bar: 2}, {foo: 1, bar: 0}, {foo: 1, bar: 1}, {foo: 2}]);
+      assert.deepEqual(entries, [
+        {key: "1", values: [{foo: 1, bar: 0}, {foo: 1, bar: 1}, {foo: 1, bar: 2}]},
+        {key: "2", values: [{foo: 2}]}
+      ]);
+    },
+    "values can be aggregated using an optional rollup": function(nest) {
+      var entries = nest()
+          .key(function(d) { return d.foo; })
+          .rollup(function(values) { return d3.sum(values, function(d) { return d.bar; }); })
+          .entries([{foo: 1, bar: 2}, {foo: 1, bar: 0}, {foo: 1, bar: 1}, {foo: 2}]);
+      assert.deepEqual(entries, [
+        {key: "1", values: 3},
+        {key: "2", values: 0}
+      ]);
+    },
+    "multiple key functions can be specified": function(nest) {
+      var entries = nest()
+          .key(function(d) { return d[0]; }).sortKeys(d3.ascending)
+          .key(function(d) { return d[1]; }).sortKeys(d3.ascending)
+          .entries([[0, 1], [0, 2], [1, 1], [1, 2], [0, 2]]);
+      assert.deepEqual(entries, [
+        {key: "0", values: [
+          {key: "1", values: [[0, 1]]},
+          {key: "2", values: [[0, 2], [0, 2]]}
+        ]},
+        {key: "1", values: [
+          {key: "1", values: [[1, 1]]},
+          {key: "2", values: [[1, 2]]}
+        ]}
+      ]);
+    },
+    "the rollup function only applies to leaf values": function(nest) {
+      var entries = nest()
+          .key(function(d) { return d[0]; }).sortKeys(d3.ascending)
+          .key(function(d) { return d[1]; }).sortKeys(d3.ascending)
+          .rollup(function(values) { return values.length; })
+          .entries([[0, 1], [0, 2], [1, 1], [1, 2], [0, 2]]);
+      assert.deepEqual(entries, [
+        {key: "0", values: [
+          {key: "1", values: 1},
+          {key: "2", values: 2}
+        ]},
+        {key: "1", values: [
+          {key: "1", values: 1},
+          {key: "2", values: 1}
+        ]}
+      ]);
+    },
+    "the value comparator only applies to leaf values": function(nest) {
+      var entries = nest()
+          .key(function(d) { return d[0]; }).sortKeys(d3.ascending)
+          .key(function(d) { return d[1]; }).sortKeys(d3.ascending)
+          .sortValues(function(a, b) { return a[2] - b[2]; })
+          .entries([[0, 1], [0, 2, 1], [1, 1], [1, 2], [0, 2, 0]]);
+      assert.deepEqual(entries, [
+        {key: "0", values: [
+          {key: "1", values: [[0, 1]]},
+          {key: "2", values: [[0, 2, 0], [0, 2, 1]]}
+        ]},
+        {key: "1", values: [
+          {key: "1", values: [[1, 1]]},
+          {key: "2", values: [[1, 2]]}
+        ]}
+      ]);
+    },
+    "the key comparator only applies to the last-specified key": function(nest) {
+      var entries = nest()
+          .key(function(d) { return d[0]; }).sortKeys(d3.ascending)
+          .key(function(d) { return d[1]; }).sortKeys(d3.descending)
+          .entries([[0, 1], [0, 2], [1, 1], [1, 2], [0, 2]]);
+      assert.deepEqual(entries, [
+        {key: "0", values: [
+          {key: "2", values: [[0, 2], [0, 2]]},
+          {key: "1", values: [[0, 1]]}
+        ]},
+        {key: "1", values: [
+          {key: "2", values: [[1, 2]]},
+          {key: "1", values: [[1, 1]]}
+        ]}
+      ]);
+      var entries = nest()
+          .key(function(d) { return d[0]; }).sortKeys(d3.descending)
+          .key(function(d) { return d[1]; }).sortKeys(d3.ascending)
+          .entries([[0, 1], [0, 2], [1, 1], [1, 2], [0, 2]]);
+      assert.deepEqual(entries, [
+        {key: "1", values: [
+          {key: "1", values: [[1, 1]]},
+          {key: "2", values: [[1, 2]]}
+        ]},
+        {key: "0", values: [
+          {key: "1", values: [[0, 1]]},
+          {key: "2", values: [[0, 2], [0, 2]]}
+        ]}
+      ]);
+    },
+    "if no keys are specified, the input array is returned": function(nest) {
+      var array = [new Object()];
+      assert.strictEqual(nest().entries(array), array);
+    }
+  }
+});
+
+suite.addBatch({
+  "map": {
+    topic: function() {
+      return d3.nest;
+    },
+    "returns a map of each distinct key": function(nest) {
+      var map = nest()
+          .key(function(d) { return d.foo; })
+          .map([{foo: 1, bar: 0}, {foo: 2}, {foo: 1, bar: 1}]);
+      assert.deepEqual(map, {
+        "1": [{foo: 1, bar: 0}, {foo: 1, bar: 1}],
+        "2": [{foo: 2}]
+      });
+    },
+    "values can be sorted using an optional comparator": function(nest) {
+      var map = nest()
+          .key(function(d) { return d.foo; })
+          .sortValues(function(a, b) { return a.bar - b.bar; })
+          .map([{foo: 1, bar: 2}, {foo: 1, bar: 0}, {foo: 1, bar: 1}, {foo: 2}]);
+      assert.deepEqual(map, {
+        "1": [{foo: 1, bar: 0}, {foo: 1, bar: 1}, {foo: 1, bar: 2}],
+        "2": [{foo: 2}]
+      });
+    },
+    "values can be aggregated using an optional rollup": function(nest) {
+      var map = nest()
+          .key(function(d) { return d.foo; })
+          .rollup(function(values) { return d3.sum(values, function(d) { return d.bar; }); })
+          .map([{foo: 1, bar: 2}, {foo: 1, bar: 0}, {foo: 1, bar: 1}, {foo: 2}]);
+      assert.deepEqual(map, {
+        "1": 3,
+        "2": 0
+      });
+    },
+    "multiple key functions can be specified": function(nest) {
+      var map = nest()
+          .key(function(d) { return d[0]; }).sortKeys(d3.ascending)
+          .key(function(d) { return d[1]; }).sortKeys(d3.ascending)
+          .map([[0, 1], [0, 2], [1, 1], [1, 2], [0, 2]]);
+      assert.deepEqual(map, {
+        "0": {
+          "1": [[0, 1]],
+          "2": [[0, 2], [0, 2]]
+        },
+        "1": {
+          "1": [[1, 1]],
+          "2": [[1, 2]]
+        }
+      });
+    },
+    "the rollup function only applies to leaf values": function(nest) {
+      var map = nest()
+          .key(function(d) { return d[0]; }).sortKeys(d3.ascending)
+          .key(function(d) { return d[1]; }).sortKeys(d3.ascending)
+          .rollup(function(values) { return values.length; })
+          .map([[0, 1], [0, 2], [1, 1], [1, 2], [0, 2]]);
+      assert.deepEqual(map, {
+        "0": {
+          "1": 1,
+          "2": 2
+        },
+        "1": {
+          "1": 1,
+          "2": 1
+        }
+      });
+    },
+    "the value comparator only applies to leaf values": function(nest) {
+      var map = nest()
+          .key(function(d) { return d[0]; }).sortKeys(d3.ascending)
+          .key(function(d) { return d[1]; }).sortKeys(d3.ascending)
+          .sortValues(function(a, b) { return a[2] - b[2]; })
+          .map([[0, 1], [0, 2, 1], [1, 1], [1, 2], [0, 2, 0]]);
+      assert.deepEqual(map, {
+        "0": {
+          "1": [[0, 1]],
+          "2": [[0, 2, 0], [0, 2, 1]]
+        },
+        "1": {
+          "1": [[1, 1]],
+          "2": [[1, 2]]
+        }
+      });
+    },
+    "if no keys are specified, the input array is returned": function(nest) {
+      var array = [new Object()];
+      assert.strictEqual(nest().map(array), array);
+    },
+    "handles keys that are built-in prototype properties": function(nest) {
+      var keys = nest()
+          .key(String)
+          .map(["hasOwnProperty"]);
+      assert.deepEqual(keys, {hasOwnProperty: ["hasOwnProperty"]});
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/ns-test.js b/static/vendor/d3-2.8.1/test/core/ns-test.js
new file mode 100755 (executable)
index 0000000..653990a
--- /dev/null
@@ -0,0 +1,58 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("ns");
+
+suite.addBatch({
+  "prefix": {
+    topic: function() {
+      return d3.ns.prefix;
+    },
+    "svg is http://www.w3.org/2000/svg": function(prefix) {
+      assert.equal(prefix.svg, "http://www.w3.org/2000/svg");
+    },
+    "xhtml is http://www.w3.org/1999/xhtml": function(prefix) {
+      assert.equal(prefix.xhtml, "http://www.w3.org/1999/xhtml");
+    },
+    "xlink is http://www.w3.org/1999/xlink": function(prefix) {
+      assert.equal(prefix.xlink, "http://www.w3.org/1999/xlink");
+    },
+    "xml is http://www.w3.org/XML/1998/namespace": function(prefix) {
+      assert.equal(prefix.xml, "http://www.w3.org/XML/1998/namespace");
+    },
+    "xmlns is http://www.w3.org/2000/xmlns/": function(prefix) {
+      assert.equal(prefix.xmlns, "http://www.w3.org/2000/xmlns/");
+    }
+  }
+});
+
+suite.addBatch({
+  "qualify": {
+    topic: function() {
+      return d3.ns.qualify;
+    },
+    "local name returns name": function() {
+      assert.equal(d3.ns.qualify("local"), "local");
+    },
+    "known qualified name returns space and local": function() {
+      var name = d3.ns.qualify("svg:path");
+      assert.equal(name.space, "http://www.w3.org/2000/svg");
+      assert.equal(name.local, "path");
+    },
+    "unknown qualified name returns name": function() {
+      assert.equal(d3.ns.qualify("foo:bar"), "bar");
+    },
+    "known local name returns space and local": function() {
+      var name = d3.ns.qualify("svg");
+      assert.equal(name.space, "http://www.w3.org/2000/svg");
+      assert.equal(name.local, "svg");
+    },
+    "names that collide with built-ins are ignored": function(qualify) {
+      assert.equal(qualify("hasOwnProperty:test"), "test");
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/permute-test.js b/static/vendor/d3-2.8.1/test/core/permute-test.js
new file mode 100755 (executable)
index 0000000..90ad5fd
--- /dev/null
@@ -0,0 +1,52 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.permute");
+
+suite.addBatch({
+  "permute": {
+    topic: function() {
+      return d3.permute;
+    },
+    "permutes according to the specified index": function(permute) {
+      assert.deepEqual(permute([3, 4, 5], [2, 1, 0]), [5, 4, 3]);
+      assert.deepEqual(permute([3, 4, 5], [2, 0, 1]), [5, 3, 4]);
+      assert.deepEqual(permute([3, 4, 5], [0, 1, 2]), [3, 4, 5]);
+    },
+    "does not modify the input array": function(permute) {
+      var input = [3, 4, 5];
+      permute(input, [2, 1, 0]);
+      assert.deepEqual(input, [3, 4, 5]);
+    },
+    "can duplicate input values": function(permute) {
+      assert.deepEqual(permute([3, 4, 5], [0, 1, 0]), [3, 4, 3]);
+      assert.deepEqual(permute([3, 4, 5], [2, 2, 2]), [5, 5, 5]);
+      assert.deepEqual(permute([3, 4, 5], [0, 1, 1]), [3, 4, 4]);
+    },
+    "can return more elements": function(permute) {
+      assert.deepEqual(permute([3, 4, 5], [0, 0, 1, 2]), [3, 3, 4, 5]);
+      assert.deepEqual(permute([3, 4, 5], [0, 1, 1, 1]), [3, 4, 4, 4]);
+    },
+    "can return fewer elements": function(permute) {
+      assert.deepEqual(permute([3, 4, 5], [0]), [3]);
+      assert.deepEqual(permute([3, 4, 5], [1, 2]), [4, 5]);
+      assert.deepEqual(permute([3, 4, 5], []), []);
+    },
+    "can return undefined elements": function(permute) {
+      var v1 = permute([3, 4, 5], [10]);
+      assert.equal(v1.length, 1);
+      assert.isUndefined(v1[0]);
+      var v2 = permute([3, 4, 5], [-1]);
+      assert.equal(v2.length, 1);
+      assert.isUndefined(v2[0]);
+      var v3 = permute([3, 4, 5], [0, -1]);
+      assert.equal(v3.length, 2);
+      assert.equal(v3[0], 3);
+      assert.isUndefined(v3[1]);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/quantile-test.js b/static/vendor/d3-2.8.1/test/core/quantile-test.js
new file mode 100755 (executable)
index 0000000..058169c
--- /dev/null
@@ -0,0 +1,49 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.quantile");
+
+suite.addBatch({
+  "quantile": {
+    topic: function() {
+      return d3.quantile;
+    },
+    "requires sorted numeric input": function(quantile) {
+      assert.equal(quantile([1, 2, 3, 4], 0), 1);
+      assert.equal(quantile([1, 2, 3, 4], 1), 4);
+      assert.equal(quantile([4, 3, 2, 1], 0), 4);
+      assert.equal(quantile([4, 3, 2, 1], 1), 1);
+    },
+    "uses the R-7 algorithm": function(quantile) {
+      var data = [3, 6, 7, 8, 8, 10, 13, 15, 16, 20];
+      assert.equal(quantile(data, 0), 3);
+      assert.equal(quantile(data, .25), 7.25);
+      assert.equal(quantile(data, .5), 9);
+      assert.equal(quantile(data, .75), 14.5);
+      assert.equal(quantile(data, 1), 20);
+      var data = [3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20];
+      assert.equal(quantile(data, 0), 3);
+      assert.equal(quantile(data, .25), 7.5);
+      assert.equal(quantile(data, .5), 9);
+      assert.equal(quantile(data, .75), 14);
+      assert.equal(quantile(data, 1), 20);
+    },
+    "returns an exact value for integer p-values": function(quantile) {
+      var a = {}, b = {}, c = {}, d = {}, data = [a, b, c, d];
+      assert.equal(quantile(data, 1/3), b);
+      assert.equal(quantile(data, 2/3), c);
+    },
+    "returns the first value for p = 0": function(quantile) {
+      var a = {}, b = {}, c = {}, d = {}, data = [a, b, c, d];
+      assert.equal(quantile(data, 0), a);
+    },
+    "returns the last value for p = 1": function(quantile) {
+      var a = {}, b = {}, c = {}, d = {}, data = [a, b, c, d];
+      assert.equal(quantile(data, 1), d);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/range-test.js b/static/vendor/d3-2.8.1/test/core/range-test.js
new file mode 100755 (executable)
index 0000000..18b4aa8
--- /dev/null
@@ -0,0 +1,102 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.range");
+
+suite.addBatch({
+  "range": {
+    topic: function() {
+      return d3.range;
+    },
+    "start is an inclusive lower bound": function(range) {
+      assert.equal(range(5)[0], 0);
+      assert.equal(range(1, 5)[0], 1);
+      assert.equal(range(5, 1, -1)[0], 5);
+    },
+    "stop is an exclusive upper bound": function(range) {
+      assert.equal(range(5)[4], 4);
+      assert.equal(range(1, 5)[3], 4);
+      assert.equal(range(5, 1, -1)[3], 2);
+    },
+    "with one argument, returns integers [0 â€¦ stop)": function(range) {
+      assert.deepEqual(range(0), []);
+      assert.deepEqual(range(1), [0]);
+      assert.deepEqual(range(5), [0, 1, 2, 3, 4]);
+    },
+    "with two arguments, returns integers [start â€¦ stop)": function(range) {
+      assert.deepEqual(range(0, 5), [0, 1, 2, 3, 4]);
+      assert.deepEqual(range(5, 9), [5, 6, 7, 8]);
+    },
+    "with three arguments, returns start + k * step": function(range) {
+      assert.deepEqual(range(0, 5, 1), [0, 1, 2, 3, 4]);
+      assert.deepEqual(range(5, 9, .5), [5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5]);
+      assert.deepEqual(range(5, 8.5, .5), [5, 5.5, 6, 6.5, 7, 7.5, 8]);
+      assert.deepEqual(range(2, 0, -.5), [2, 1.5, 1, .5]);
+    },
+    "handles fractional steps without rounding errors": function(range) {
+      assert.deepEqual(range(0, 0.5, 0.1), [0, 0.1, 0.2, 0.3, 0.4]);
+      assert.deepEqual(range(-2, -1.2, 0.1), [-2, -1.9, -1.8, -1.7, -1.6, -1.5, -1.4, -1.3]);
+    },
+    "handles extremely small steps without rounding errors": function(range) {
+      assert.deepEqual(range(2.1e-31, 5e-31, 1.1e-31), [2.1e-31, 3.2e-31, 4.3e-31]);
+    },
+    "handles extremely large steps without rounding errors": function(range) {
+      assert.deepEqual(range(1e300, 2e300, 0.3e300), [1e300, 1.3e300, 1.6e300, 1.9e300]);
+    },
+    "returns an ascending range if step is positive": function(range) {
+      assert.deepEqual(range(0, 5, 1), [0, 1, 2, 3, 4]);
+    },
+    "returns a descending range if step is negative": function(range) {
+      assert.deepEqual(range(5, 0, -1), [5, 4, 3, 2, 1]);
+    },
+    "returns an empty range if start, stop or step are NaN": function(range) {
+      assert.isEmpty(range(0, NaN));
+      assert.isEmpty(range(1, NaN));
+      assert.isEmpty(range(-1, NaN));
+      assert.isEmpty(range(0, undefined));
+      assert.isEmpty(range(1, undefined));
+      assert.isEmpty(range(-1, undefined));
+      assert.isEmpty(range(NaN, 0));
+      assert.isEmpty(range(NaN, 1));
+      assert.isEmpty(range(NaN, -1));
+      assert.isEmpty(range(undefined, 0));
+      assert.isEmpty(range(undefined, 1));
+      assert.isEmpty(range(undefined, -1));
+      assert.isEmpty(range(NaN, NaN));
+      assert.isEmpty(range(undefined, undefined));
+      assert.isEmpty(range(NaN, NaN, NaN));
+      assert.isEmpty(range(undefined, undefined, undefined));
+      assert.isEmpty(range(0, 10, NaN));
+      assert.isEmpty(range(10, 0, NaN));
+      assert.isEmpty(range(0, 10, undefined));
+      assert.isEmpty(range(10, 0, undefined));
+    },
+    "returns an empty range if start equals stop": function(range) {
+      assert.isEmpty(range(10, 10));
+      assert.isEmpty(range(10, 10, 1));
+      assert.isEmpty(range(10, 10, -1));
+      assert.isEmpty(range(10, 10, -.5));
+      assert.isEmpty(range(10, 10, .5));
+      assert.isEmpty(range(0, 0));
+      assert.isEmpty(range(0, 0, 1));
+      assert.isEmpty(range(0, 0, -1));
+      assert.isEmpty(range(0, 0, -.5));
+      assert.isEmpty(range(0, 0, .5));
+    },
+    "returns an empty range if stop is less than start and step is positive": function(range) {
+      assert.isEmpty(range(20, 10));
+      assert.isEmpty(range(20, 10, 2));
+      assert.isEmpty(range(20, 10, 1));
+      assert.isEmpty(range(20, 10, .5));
+    },
+    "returns an empty range if stop is greater than start and step is negative": function(range) {
+      assert.isEmpty(range(10, 20, -2));
+      assert.isEmpty(range(10, 20, -1));
+      assert.isEmpty(range(10, 20, -.5));
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/rebind-test.js b/static/vendor/d3-2.8.1/test/core/rebind-test.js
new file mode 100755 (executable)
index 0000000..89f552b
--- /dev/null
@@ -0,0 +1,51 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.rebind");
+
+suite.addBatch({
+  "rebind": {
+    topic: function() {
+      return d3.rebind;
+    },
+    "bound function uses source as context": function(rebind) {
+      var a = {}, b = {foo: function() { that = this; }}, that;
+      rebind(a, b, "foo");
+      assert.strictEqual((a.foo(), that), b);
+      assert.strictEqual((a.foo.call({}), that), b);
+    },
+    "bound function receives any arguments": function(rebind) {
+      var a = {}, b = {foo: function() { those = Array.prototype.slice.call(arguments); }}, those;
+      rebind(a, b, "foo");
+      assert.deepEqual((a.foo(), those), []);
+      assert.deepEqual((a.foo(1), those), [1]);
+      assert.deepEqual((a.foo(null), those), [null]);
+      assert.deepEqual((a.foo(b, b, 1), those), [b, b, 1]);
+    },
+    "bound function returns object if arguments": function(rebind) {
+      var a = {}, b = {foo: function() {}};
+      rebind(a, b, "foo");
+      assert.strictEqual(a.foo(1), a);
+      assert.strictEqual(a.foo(1, 2, 3), a);
+    },
+    "bound function returns return value if no arguments": function(rebind) {
+      var a = {}, b = {foo: function() { return that; }}, that = {};
+      rebind(a, b, "foo");
+      assert.strictEqual(a.foo(), that);
+    },
+    "can bind multiple methods": function(rebind) {
+      var a = {}, b = {foo: function() { return 1; }, bar: function() { return 2; }};
+      rebind(a, b, "foo", "bar");
+      assert.strictEqual(a.foo(), 1);
+      assert.strictEqual(a.bar(), 2);
+    },
+    "returns the target object": function(rebind) {
+      var a = {}, b = {foo: function() { return that; }}, that = {};
+      assert.strictEqual(rebind(a, b, "foo"), a);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/requote-test.js b/static/vendor/d3-2.8.1/test/core/requote-test.js
new file mode 100755 (executable)
index 0000000..86fdff6
--- /dev/null
@@ -0,0 +1,52 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.requote");
+
+suite.addBatch({
+  "requote": {
+    topic: function() {
+      return d3.requote;
+    },
+    "quotes backslashes": function(quote) {
+      assert.equal(quote("\\"), "\\\\");
+    },
+    "quotes carets": function(quote) {
+      assert.equal(quote("^"), "\\^");
+    },
+    "quotes dollar signs": function(quote) {
+      assert.equal(quote("$"), "\\$");
+    },
+    "quotes stars": function(quote) {
+      assert.equal(quote("*"), "\\*");
+    },
+    "quotes plusses": function(quote) {
+      assert.equal(quote("+"), "\\+");
+    },
+    "quotes question marks": function(quote) {
+      assert.equal(quote("?"), "\\?");
+    },
+    "quotes periods": function(quote) {
+      assert.equal(quote("."), "\\.");
+    },
+    "quotes parentheses": function(quote) {
+      assert.equal(quote("("), "\\(");
+      assert.equal(quote(")"), "\\)");
+    },
+    "quotes pipes": function(quote) {
+      assert.equal(quote("|"), "\\|");
+    },
+    "quotes curly braces": function(quote) {
+      assert.equal(quote("{"), "\\{");
+      assert.equal(quote("}"), "\\}");
+    },
+    "quotes square brackets": function(quote) {
+      assert.equal(quote("["), "\\[");
+      assert.equal(quote("]"), "\\]");
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/rgb-test.js b/static/vendor/d3-2.8.1/test/core/rgb-test.js
new file mode 100755 (executable)
index 0000000..dbc32c2
--- /dev/null
@@ -0,0 +1,93 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.rgb");
+
+suite.addBatch({
+  "rgb": {
+    topic: function() {
+      return d3.rgb;
+    },
+    "floors channel values": function(rgb) {
+      assert.rgbEqual(rgb(1.2, 2.6, 42.9), 1, 2, 42);
+    },
+    "defaults to black for invalid inputs": function(rgb) {
+      assert.rgbEqual(rgb("invalid"), 0, 0, 0);
+      assert.rgbEqual(rgb("hasOwnProperty"), 0, 0, 0);
+      assert.rgbEqual(rgb("__proto__"), 0, 0, 0);
+    },
+    "does not clamp channel values": function(rgb) {
+      assert.rgbEqual(rgb(-10, -20, -30), -10, -20, -30);
+      assert.rgbEqual(rgb(300, 400, 500), 300, 400, 500);
+    },
+    "converts string channel values to numbers": function(rgb) {
+      assert.rgbEqual(rgb("12", "34", "56"), 12, 34, 56);
+    },
+    "converts null channel values to zero": function(rgb) {
+      assert.rgbEqual(rgb(null, null, null), 0, 0, 0);
+    },
+    "exposes r, g and b properties": function(rgb) {
+      var color = rgb("#abc");
+      assert.equal(color.r, 170);
+      assert.equal(color.g, 187);
+      assert.equal(color.b, 204);
+    },
+    "changing r, g or b affects the string format": function(rgb) {
+      var color = rgb("#abc");
+      color.r++;
+      color.g++;
+      color.b++;
+      assert.equal(color + "", "#abbccd");
+    },
+    "parses hexadecimal shorthand format (e.g., \"#abc\")": function(rgb) {
+      assert.rgbEqual(rgb("#abc"), 170, 187, 204);
+    },
+    "parses hexadecimal format (e.g., \"#abcdef\")": function(rgb) {
+      assert.rgbEqual(rgb("#abcdef"), 171, 205, 239);
+    },
+    "parses RGB format (e.g., \"rgb(12, 34, 56)\")": function(rgb) {
+      assert.rgbEqual(rgb("rgb(12, 34, 56)"), 12, 34, 56);
+    },
+    "parses color names (e.g., \"moccasin\")": function(rgb) {
+      assert.rgbEqual(rgb("moccasin"), 255, 228, 181);
+      assert.rgbEqual(rgb("aliceblue"), 240, 248, 255);
+      assert.rgbEqual(rgb("yellow"), 255, 255, 0);
+    },
+    "parses and converts HSL format (e.g., \"hsl(60, 100%, 20%)\")": function(rgb) {
+      assert.rgbEqual(rgb("hsl(60, 100%, 20%)"), 102, 102, 0);
+    },
+    "can convert from RGB": function(rgb) {
+      assert.rgbEqual(rgb(d3.rgb(12, 34, 56)), 12, 34, 56);
+    },
+    "can convert from HSL": function(rgb) {
+      assert.rgbEqual(rgb(d3.hsl(0, 1, .5)), 255, 0, 0);
+    },
+    "can convert to HSL": function(rgb) {
+      assert.hslEqual(rgb("red").hsl(), 0, 1, .5);
+    },
+    "can derive a brighter color": function(rgb) {
+      assert.rgbEqual(rgb("brown").brighter(), 235, 60, 60);
+      assert.rgbEqual(rgb("brown").brighter(.5), 197, 50, 50);
+      assert.rgbEqual(rgb("brown").brighter(1), 235, 60, 60);
+      assert.rgbEqual(rgb("brown").brighter(2), 255, 85, 85);
+    },
+    "can derive a darker color": function(rgb) {
+      assert.rgbEqual(rgb("coral").darker(), 178, 88, 56);
+      assert.rgbEqual(rgb("coral").darker(.5), 213, 106, 66);
+      assert.rgbEqual(rgb("coral").darker(1), 178, 88, 56);
+      assert.rgbEqual(rgb("coral").darker(2), 124, 62, 39);
+    },
+    "string coercion returns hexadecimal format": function(rgb) {
+      assert.strictEqual(rgb("#abcdef") + "", "#abcdef");
+      assert.strictEqual(rgb("moccasin") + "", "#ffe4b5");
+      assert.strictEqual(rgb("hsl(60, 100%, 20%)") + "", "#666600");
+      assert.strictEqual(rgb("rgb(12, 34, 56)") + "", "#0c2238");
+      assert.strictEqual(rgb(d3.rgb(12, 34, 56)) + "", "#0c2238");
+      assert.strictEqual(rgb(d3.hsl(60, 1, .2)) + "", "#666600");
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/round-test.js b/static/vendor/d3-2.8.1/test/core/round-test.js
new file mode 100755 (executable)
index 0000000..43d347c
--- /dev/null
@@ -0,0 +1,69 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.round");
+
+suite.addBatch({
+  "round": {
+    topic: function() {
+      return d3.round;
+    },
+    "returns a number": function(round) {
+      assert.isNumber(round(42));
+    },
+    "returns zero for zero": function(round) {
+      assert.equal(round(0), 0);
+    },
+    "ignores degenerate input": function(round) {
+      assert.isNaN(round(NaN));
+      assert.equal(round(Infinity), Infinity);
+      assert.equal(round(-Infinity), -Infinity);
+    },
+    "returns integers by default": function(round) {
+      assert.equal(round(10.6), 11);
+      assert.equal(round(10.4), 10);
+      assert.equal(round(0.6), 1);
+      assert.equal(round(0.4), 0);
+      assert.equal(round(-0.6), -1);
+      assert.equal(round(-0.4), 0);
+      assert.equal(round(-10.6), -11);
+      assert.equal(round(-10.4), -10);
+    },
+    "rounds to the specified decimal place": function(round) {
+      assert.inDelta(round(10.56, 1), 10.6, 1e-6);
+      assert.inDelta(round(10.54, 1), 10.5, 1e-6);
+      assert.inDelta(round(0.56, 1), 0.6, 1e-6);
+      assert.inDelta(round(0.54, 1), 0.5, 1e-6);
+      assert.inDelta(round(-0.56, 1), -0.6, 1e-6);
+      assert.inDelta(round(-0.54, 1), -0.5, 1e-6);
+      assert.inDelta(round(-10.56, 1), -10.6, 1e-6);
+      assert.inDelta(round(-10.54, 1), -10.5, 1e-6);
+      assert.inDelta(round(10.556, 2), 10.56, 1e-6);
+      assert.inDelta(round(10.554, 2), 10.55, 1e-6);
+      assert.inDelta(round(0.556, 2), 0.56, 1e-6);
+      assert.inDelta(round(0.554, 2), 0.55, 1e-6);
+      assert.inDelta(round(-0.556, 2), -0.56, 1e-6);
+      assert.inDelta(round(-0.554, 2), -0.55, 1e-6);
+      assert.inDelta(round(-10.556, 2), -10.56, 1e-6);
+      assert.inDelta(round(-10.554, 2), -10.55, 1e-6);
+    },
+    "rounds to the specified significant digits": function(round) {
+      assert.equal(round(123.45, -1), 120);
+      assert.equal(round(345.67, -1), 350);
+      assert.equal(round(-123.45, -1), -120);
+      assert.equal(round(-345.67, -1), -350);
+      assert.equal(round(123.45, -2), 100);
+      assert.equal(round(456.78, -2), 500);
+      assert.equal(round(-123.45, -2), -100);
+      assert.equal(round(-456.78, -2), -500);
+      assert.equal(round(123.45, -3), 0);
+      assert.equal(round(567.89, -3), 1000);
+      assert.equal(round(-123.45, -3), 0);
+      assert.equal(round(-567.89, -3), -1000);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/select-test.js b/static/vendor/d3-2.8.1/test/core/select-test.js
new file mode 100755 (executable)
index 0000000..924ceac
--- /dev/null
@@ -0,0 +1,41 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.select");
+
+suite.addBatch({
+  "select": {
+    topic: function() {
+      var body = d3.select("body").html("");
+      body.append("span").attr("class", "f00").attr("id", "b4r").attr("name", "b4z");
+      body.append("div").attr("class", "foo").attr("id", "bar").attr("name", "baz");
+      return body;
+    },
+    "selects by element name": function() {
+      var div = d3.select("div");
+      assert.equal(div[0][0].tagName, "DIV");
+    },
+    "selects by class name": function() {
+      var div = d3.select(".foo");
+      assert.equal(div[0][0].className, "foo");
+    },
+    "selects by id": function() {
+      var div = d3.select("div#bar");
+      assert.equal(div[0][0].id, "bar");
+    },
+    "selects by attribute value": function() {
+      var div = d3.select("[name=baz]");
+      assert.equal(div[0][0].getAttribute("name"), "baz");
+    },
+    "selects by node": function() {
+      var div = d3.select(document.body.lastChild);
+      assert.isTrue(div[0][0] === document.body.lastChild);
+      assert.lengthOf(div, 1);
+      assert.lengthOf(div[0], 1);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selectAll-test.js b/static/vendor/d3-2.8.1/test/core/selectAll-test.js
new file mode 100755 (executable)
index 0000000..9ac4646
--- /dev/null
@@ -0,0 +1,45 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.selectAll");
+
+suite.addBatch({
+  "selectAll": {
+    topic: function() {
+      var body = d3.select("body").html("");
+      body.append("span").attr("class", "f00").attr("id", "b4r").attr("name", "b4z");
+      body.append("div").attr("class", "foo").attr("id", "bar").attr("name", "baz");
+      return body;
+    },
+    "selects by element name": function() {
+      var div = d3.selectAll("div");
+      assert.equal(div[0][0].tagName, "DIV");
+    },
+    "selects by class name": function() {
+      var div = d3.selectAll(".foo");
+      assert.equal(div[0][0].className, "foo");
+    },
+    "selects by id": function() {
+      var div = d3.select("div#bar");
+      assert.equal(div[0][0].id, "bar");
+    },
+    "selects by attribute value": function() {
+      var div = d3.selectAll("[name=baz]");
+      assert.equal(div[0][0].getAttribute("name"), "baz");
+    },
+    "selects by array": function() {
+      var div = d3.selectAll([document.body.lastChild]);
+      assert.isTrue(div[0][0] === document.body.lastChild);
+      assert.lengthOf(div, 1);
+      assert.lengthOf(div[0], 1);
+    },
+    "groups are not instances of NodeList": function() {
+      var div = d3.select("body").selectAll(function() { return this.getElementsByClassName("div"); });
+      assert.isFalse(div[0] instanceof window.NodeList);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-append-test.js b/static/vendor/d3-2.8.1/test/core/selection-append-test.js
new file mode 100755 (executable)
index 0000000..8565be4
--- /dev/null
@@ -0,0 +1,122 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.append");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "appends an HTML element": function(body) {
+      var div = body.append("div");
+      assert.equal(div[0][0].tagName, "DIV");
+      assert.isNull(div[0][0].namespaceURI);
+      assert.isTrue(div[0][0].parentNode === document.body);
+      assert.isTrue(div[0][0] === document.body.lastChild);
+    },
+    "appends an SVG element": function(body) {
+      var svg = body.append("svg:svg");
+      assert.equal(svg[0][0].tagName, "SVG");
+      assert.equal(svg[0][0].namespaceURI, "http://www.w3.org/2000/svg");
+      assert.isTrue(svg[0][0].parentNode === document.body);
+      assert.isTrue(svg[0][0] === document.body.lastChild);
+    },
+    "propagates data to new element": function(body) {
+      var data = new Object(), div = body.data([data]).append("div");
+      assert.strictEqual(div[0][0].__data__, data);
+    },
+    "returns a new selection": function(body) {
+      assert.isFalse(body.append("div") === body);
+    },
+    "inherits namespace from parent node": function(body) {
+      var g = body.append("svg:svg").append("g");
+      assert.equal(g[0][0].namespaceURI, "http://www.w3.org/2000/svg");
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+    },
+    "appends an HTML element": function(div) {
+      var span = div.append("span");
+      assert.equal(span[0].length, 2);
+      assert.equal(span[0][0].tagName, "SPAN");
+      assert.equal(span[0][1].tagName, "SPAN");
+      assert.isNull(span[0][0].namespaceURI);
+      assert.isNull(span[0][1].namespaceURI);
+      assert.isTrue(span[0][0].parentNode === div[0][0]);
+      assert.isTrue(span[0][1].parentNode === div[0][1]);
+      assert.isTrue(div[0][0].lastChild === span[0][0]);
+      assert.isTrue(div[0][1].lastChild === span[0][1]);
+    },
+    "appends an SVG element": function(div) {
+      var svg = div.append("svg:svg");
+      assert.equal(svg[0].length, 2);
+      assert.equal(svg[0][0].tagName, "SVG");
+      assert.equal(svg[0][1].tagName, "SVG");
+      assert.equal(svg[0][0].namespaceURI, "http://www.w3.org/2000/svg");
+      assert.equal(svg[0][1].namespaceURI, "http://www.w3.org/2000/svg");
+      assert.isTrue(svg[0][0].parentNode === div[0][0]);
+      assert.isTrue(svg[0][1].parentNode === div[0][1]);
+      assert.isTrue(div[0][0].lastChild === svg[0][0]);
+      assert.isTrue(div[0][1].lastChild === svg[0][1]);
+    },
+    "ignores null nodes": function(div) {
+      div.html("");
+      var some = d3.selectAll("div");
+      some[0][1] = null;
+      var span = some.append("span");
+      assert.equal(span[0].length, 2);
+      assert.equal(span[0][0].tagName, "SPAN");
+      assert.isNull(span[0][1]);
+      assert.isTrue(span[0][0].parentNode === div[0][0]);
+      assert.isTrue(div[0][0].lastChild === span[0][0]);
+      assert.isNull(div[0][1].lastChild);
+    },
+    "propagates data to new elements": function(div) {
+      var a = new Object(), b = new Object(), span = div.data([a, b]).append("span");
+      assert.strictEqual(span[0][0].__data__, a);
+      assert.strictEqual(span[0][1].__data__, b);
+    },
+    "returns a new selection": function(div) {
+      assert.isFalse(div.append("div") === div);
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div).data(…).enter()": {
+    topic: function() {
+      return d3.select("body");
+    },
+    "appends to the parent node": function(body) {
+      var div = body.html("").selectAll("div").data(d3.range(2)).enter().append("div");
+      assert.equal(div.length, 1);
+      assert.equal(div[0].length, 2);
+      assert.domEqual(div[0][0].parentNode, document.body);
+      assert.domEqual(div[0][1].parentNode, document.body);
+    },
+    "propagates data to new elements": function(body) {
+      var a = new Object(), b = new Object(), div = body.html("").selectAll("div").data([a, b]).enter().append("div");
+      assert.strictEqual(div[0][0].__data__, a);
+      assert.strictEqual(div[0][1].__data__, b);
+    },
+    "ignores null nodes": function(body) {
+      body.html("").append("div");
+      var div = body.selectAll("div").data(d3.range(3)).enter().append("div");
+      assert.equal(div.length, 1);
+      assert.equal(div[0].length, 3);
+      assert.domNull(div[0][0]);
+      assert.domEqual(div[0][1].parentNode, document.body);
+      assert.domEqual(div[0][2].parentNode, document.body);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-attr-test.js b/static/vendor/d3-2.8.1/test/core/selection-attr-test.js
new file mode 100755 (executable)
index 0000000..e945260
--- /dev/null
@@ -0,0 +1,152 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.attr");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body");
+    },
+    "sets an attribute as a string": function(body) {
+      body.attr("bgcolor", "red");
+      assert.equal(document.body.getAttribute("bgcolor"), "red");
+    },
+    "sets an attribute as a number": function(body) {
+      body.attr("opacity", 1);
+      assert.equal(document.body.getAttribute("opacity"), "1");
+    },
+    "sets an attribute as a function": function(body) {
+      body.attr("bgcolor", function() { return "orange"; });
+      assert.equal(document.body.getAttribute("bgcolor"), "orange");
+    },
+    "sets an attribute as a function of data": function(body) {
+      body.data(["cyan"]).attr("bgcolor", String);
+      assert.equal(document.body.getAttribute("bgcolor"), "cyan");
+    },
+    "sets an attribute as a function of index": function(body) {
+      body.attr("bgcolor", function(d, i) { return "orange-" + i; });
+      assert.equal(document.body.getAttribute("bgcolor"), "orange-0");
+    },
+    "sets a namespaced attribute as a string": function(body) {
+      body.attr("xlink:href", "url");
+      assert.equal(document.body.getAttributeNS("http://www.w3.org/1999/xlink", "href"), "url");
+    },
+    "sets a namespaced attribute as a function": function(body) {
+      body.data(["orange"]).attr("xlink:href", function(d, i) { return d + "-" + i; });
+      assert.equal(document.body.getAttributeNS("http://www.w3.org/1999/xlink", "href"), "orange-0");
+    },
+    "gets an attribute value": function(body) {
+      document.body.setAttribute("bgcolor", "yellow");
+      assert.equal(body.attr("bgcolor"), "yellow");
+    },
+    "gets a namespaced attribute value": function(body) {
+      document.body.setAttributeNS("http://www.w3.org/1999/xlink", "foo", "bar");
+      assert.equal(body.attr("xlink:foo"), "bar");
+    },
+    "removes an attribute as null": function(body) {
+      body.attr("bgcolor", "red").attr("bgcolor", null);
+      assert.equal(body.attr("bgcolor"), "");
+    },
+    "removes an attribute as a function": function(body) {
+      body.attr("bgcolor", "red").attr("bgcolor", function() { return null; });
+      assert.equal(body.attr("bgcolor"), "");
+    },
+    "removes a namespaced attribute as null": function(body) {
+      body.attr("xlink:href", "url").attr("xlink:href", null);
+      assert.equal(body.attr("bgcolor"), "");
+    },
+    "removes a namespaced attribute as a function": function(body) {
+      body.attr("xlink:href", "url").attr("xlink:href", function() { return null; });
+      assert.equal(body.attr("xlink:href"), "");
+    },
+    "returns the current selection": function(body) {
+      assert.isTrue(body.attr("foo", "bar") === body);
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+    },
+    "sets an attribute as a string": function(div) {
+      div.attr("bgcolor", "red");
+      assert.equal(div[0][0].getAttribute("bgcolor"), "red");
+      assert.equal(div[0][1].getAttribute("bgcolor"), "red");
+    },
+    "sets an attribute as a number": function(div) {
+      div.attr("opacity", 0.4);
+      assert.equal(div[0][0].getAttribute("opacity"), "0.4");
+      assert.equal(div[0][1].getAttribute("opacity"), "0.4");
+    },
+    "sets an attribute as a function": function(div) {
+      div.attr("bgcolor", function() { return "coral"; });
+      assert.equal(div[0][0].getAttribute("bgcolor"), "coral");
+      assert.equal(div[0][1].getAttribute("bgcolor"), "coral");
+    },
+    "sets an attribute as a function of data": function(div) {
+      div.attr("bgcolor", d3.interpolateRgb("brown", "steelblue"));
+      assert.equal(div[0][0].getAttribute("bgcolor"), "#a52a2a");
+      assert.equal(div[0][1].getAttribute("bgcolor"), "#4682b4");
+    },
+    "sets an attribute as a function of index": function(div) {
+      div.attr("bgcolor", function(d, i) { return "color-" + i; });
+      assert.equal(div[0][0].getAttribute("bgcolor"), "color-0");
+      assert.equal(div[0][1].getAttribute("bgcolor"), "color-1");
+    },
+    "sets a namespaced attribute as a string": function(div) {
+      div.attr("xlink:href", "url");
+      assert.equal(div[0][0].getAttributeNS("http://www.w3.org/1999/xlink", "href"), "url");
+      assert.equal(div[0][1].getAttributeNS("http://www.w3.org/1999/xlink", "href"), "url");
+    },
+    "sets a namespaced attribute as a function": function(div) {
+      div.data(["red", "blue"]).attr("xlink:href", function(d, i) { return d + "-" + i; });
+      assert.equal(div[0][0].getAttributeNS("http://www.w3.org/1999/xlink", "href"), "red-0");
+      assert.equal(div[0][1].getAttributeNS("http://www.w3.org/1999/xlink", "href"), "blue-1");
+    },
+    "gets an attribute value": function(div) {
+      div[0][0].setAttribute("bgcolor", "purple");
+      assert.equal(div.attr("bgcolor"), "purple");
+    },
+    "gets a namespaced attribute value": function(div) {
+      div[0][0].setAttributeNS("http://www.w3.org/1999/xlink", "foo", "bar");
+      assert.equal(div.attr("xlink:foo"), "bar");
+    },
+    "removes an attribute as null": function(div) {
+      div.attr("href", "url").attr("href", null);
+      assert.equal(div[0][0].getAttribute("href"), "");
+      assert.equal(div[0][1].getAttribute("href"), "");
+    },
+    "removes an attribute as a function": function(div) {
+      div.attr("href", "url").attr("href", function() { return null; });
+      assert.equal(div[0][0].getAttribute("href"), "");
+      assert.equal(div[0][1].getAttribute("href"), "");
+    },
+    "removes a namespaced attribute as null": function(div) {
+      div.attr("xlink:foo", "bar").attr("xlink:foo", null);
+      assert.equal(div[0][0].getAttributeNS("http://www.w3.org/1999/xlink", "foo"), "");
+      assert.equal(div[0][1].getAttributeNS("http://www.w3.org/1999/xlink", "foo"), "");
+    },
+    "removes a namespaced attribute as a function": function(div) {
+      div.attr("xlink:foo", "bar").attr("xlink:foo", function() { return null; });
+      assert.equal(div[0][0].getAttributeNS("http://www.w3.org/1999/xlink", "foo"), "");
+      assert.equal(div[0][1].getAttributeNS("http://www.w3.org/1999/xlink", "foo"), "");
+    },
+    "ignores null nodes": function(div) {
+      var some = d3.selectAll("div");
+      some[0][1] = null;
+      some.attr("href", null).attr("href", "url");
+      assert.equal(div[0][0].getAttribute("href"), "url");
+      assert.equal(div[0][1].getAttribute("href"), "");
+    },
+    "returns the current selection": function(div) {
+      assert.isTrue(div.attr("foo", "bar") === div);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-call-test.js b/static/vendor/d3-2.8.1/test/core/selection-call-test.js
new file mode 100755 (executable)
index 0000000..e5fd259
--- /dev/null
@@ -0,0 +1,70 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.call");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "calls the function once": function(body) {
+      var count = 0;
+      body.call(function() { ++count; });
+      assert.equal(count, 1);
+    },
+    "passes any optional arguments": function(body) {
+      var abc;
+      body.call(function(selection, a, b, c) { abc = [a, b, c]; }, "a", "b", "c");
+      assert.deepEqual(abc, ["a", "b", "c"]);
+    },
+    "passes the selection as the first argument": function(body) {
+      var s;
+      body.call(function(selection) { s = selection; });
+      assert.isTrue(s === body);
+    },
+    "uses the selection as the context": function(body) {
+      var s;
+      body.call(function() { s = this; });
+      assert.isTrue(s === body);
+    },
+    "returns the current selection": function(body) {
+      assert.isTrue(body.call(function() {}) === body);
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+    },
+    "calls the function once": function(div) {
+      var count = 0;
+      div.call(function() { ++count; });
+      assert.equal(count, 1);
+    },
+    "passes any optional arguments": function(div) {
+      var abc;
+      div.call(function(selection, a, b, c) { abc = [a, b, c]; }, "a", "b", "c");
+      assert.deepEqual(abc, ["a", "b", "c"]);
+    },
+    "passes the selection as the first argument": function(div) {
+      var s;
+      div.call(function(selection) { s = selection; });
+      assert.isTrue(s === div);
+    },
+    "uses the selection as the context": function(div) {
+      var s;
+      div.call(function() { s = this; });
+      assert.isTrue(s === div);
+    },
+    "returns the current selection": function(div) {
+      assert.isTrue(div.call(function() {}) === div);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-classed-test.js b/static/vendor/d3-2.8.1/test/core/selection-classed-test.js
new file mode 100755 (executable)
index 0000000..6cbf170
--- /dev/null
@@ -0,0 +1,218 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.call");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "adds a missing class as true": function(body) {
+      body.attr("class", null);
+      body.classed("foo", true);
+      assert.equal(document.body.className, "foo");
+      body.classed("bar", true);
+      assert.equal(document.body.className, "foo bar");
+    },
+    "adds a missing class as a function": function(body) {
+      body.attr("class", null);
+      body.classed("foo", function() { return true; });
+      assert.equal(document.body.className, "foo");
+      body.classed("bar", function() { return true; });
+      assert.equal(document.body.className, "foo bar");
+    },
+    "removes an existing class as false": function(body) {
+      body.attr("class", "bar foo");
+      body.classed("foo", false);
+      assert.equal(document.body.className, "bar");
+      body.classed("bar", false);
+      assert.equal(document.body.className, "");
+    },
+    "removes an existing class as a function": function(body) {
+      body.attr("class", "bar foo");
+      body.classed("foo", function() { return false; });
+      assert.equal(document.body.className, "bar");
+      body.classed("bar", function() { return false; });
+      assert.equal(document.body.className, "");
+    },
+    "preserves an existing class as true": function(body) {
+      body.attr("class", "bar foo");
+      body.classed("foo", true);
+      assert.equal(document.body.className, "bar foo");
+      body.classed("bar", true);
+      assert.equal(document.body.className, "bar foo");
+    },
+    "preserves an existing class as a function": function(body) {
+      body.attr("class", "bar foo");
+      body.classed("foo", function() { return true; });
+      assert.equal(document.body.className, "bar foo");
+      body.classed("bar", function() { return true; });
+      assert.equal(document.body.className, "bar foo");
+    },
+    "preserves a missing class as false": function(body) {
+      body.attr("class", "baz");
+      body.classed("foo", false);
+      assert.equal(document.body.className, "baz");
+      body.attr("class", null);
+      body.classed("bar", false);
+      assert.equal(document.body.className, "");
+    },
+    "preserves a missing class as a function": function(body) {
+      body.attr("class", "baz");
+      body.classed("foo", function() { return false; });
+      assert.equal(document.body.className, "baz");
+      body.attr("class", null);
+      body.classed("bar", function() { return false; });
+      assert.equal(document.body.className, "");
+    },
+    "gets an existing class": function(body) {
+      body.attr("class", " foo\tbar  baz");
+      assert.isTrue(body.classed("foo"));
+      assert.isTrue(body.classed("bar"));
+      assert.isTrue(body.classed("baz"));
+    },
+    "does not get a missing class": function(body) {
+      body.attr("class", " foo\tbar  baz");
+      assert.isFalse(body.classed("foob"));
+      assert.isFalse(body.classed("bare"));
+      assert.isFalse(body.classed("rbaz"));
+    },
+    "returns the current selection": function(body) {
+      assert.isTrue(body.classed("foo", true) === body);
+    },
+    "adds missing classes as true": function(body) {
+      body.attr("class", null);
+      body.classed("foo bar", true);
+      assert.equal(document.body.className, "foo bar");
+    },
+    "gets existing classes": function(body) {
+      body.attr("class", " foo\tbar  baz");
+      assert.isTrue(body.classed("foo"));
+      assert.isTrue(body.classed("foo bar"));
+      assert.isTrue(body.classed("bar baz"));
+      assert.isTrue(body.classed("foo bar baz"));
+    },
+    "does not get missing classes": function(body) {
+      body.attr("class", " foo\tbar  baz");
+      assert.isFalse(body.classed("foob"));
+      assert.isFalse(body.classed("foob bar"));
+      assert.isFalse(body.classed("bar baz blah"));
+      assert.isFalse(body.classed("foo bar baz moo"));
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+    },
+    "adds a missing class as true": function(div) {
+      div.attr("class", null);
+      div.classed("foo", true);
+      assert.equal(div[0][0].className, "foo");
+      assert.equal(div[0][1].className, "foo");
+      div.classed("bar", true);
+      assert.equal(div[0][0].className, "foo bar");
+      assert.equal(div[0][1].className, "foo bar");
+    },
+    "adds a missing class as a function": function(div) {
+      div.data([0, 1]).attr("class", null);
+      div.classed("foo", function(d, i) { return d === 0; });
+      assert.equal(div[0][0].className, "foo");
+      assert.equal(div[0][1].className, "");
+      div.classed("bar", function(d, i) { return i === 1; });
+      assert.equal(div[0][0].className, "foo");
+      assert.equal(div[0][1].className, "bar");
+    },
+    "removes an existing class as false": function(div) {
+      div.attr("class", "bar foo");
+      div.classed("foo", false);
+      assert.equal(div[0][0].className, "bar");
+      assert.equal(div[0][1].className, "bar");
+      div.classed("bar", false);
+      assert.equal(div[0][0].className, "");
+      assert.equal(div[0][1].className, "");
+    },
+    "removes an existing class as a function": function(div) {
+      div.data([0, 1]).attr("class", "bar foo");
+      div.classed("foo", function(d, i) { return d === 0; });
+      assert.equal(div[0][0].className, "bar foo");
+      assert.equal(div[0][1].className, "bar");
+      div.classed("bar", function(d, i) { return i === 1; });
+      assert.equal(div[0][0].className, "foo");
+      assert.equal(div[0][1].className, "bar");
+      div.classed("foo", function() { return false; });
+      assert.equal(div[0][0].className, "");
+      assert.equal(div[0][1].className, "bar");
+      div.classed("bar", function() { return false; });
+      assert.equal(div[0][0].className, "");
+      assert.equal(div[0][1].className, "");
+    },
+    "preserves an existing class as true": function(div) {
+      div.attr("class", "bar foo");
+      div.classed("foo", true);
+      assert.equal(div[0][0].className, "bar foo");
+      assert.equal(div[0][1].className, "bar foo");
+      div.classed("bar", true);
+      assert.equal(div[0][0].className, "bar foo");
+      assert.equal(div[0][1].className, "bar foo");
+    },
+    "preserves an existing class as a function": function(div) {
+      div.attr("class", "bar foo");
+      div.classed("foo", function() { return true; });
+      assert.equal(div[0][0].className, "bar foo");
+      assert.equal(div[0][1].className, "bar foo");
+      div.classed("bar", function() { return true; });
+      assert.equal(div[0][0].className, "bar foo");
+      assert.equal(div[0][1].className, "bar foo");
+    },
+    "preserves a missing class as false": function(div) {
+      div.attr("class", "baz");
+      div.classed("foo", false);
+      assert.equal(div[0][0].className, "baz");
+      assert.equal(div[0][1].className, "baz");
+      div.attr("class", null);
+      div.classed("bar", false);
+      assert.equal(div[0][0].className, "");
+      assert.equal(div[0][1].className, "");
+    },
+    "preserves a missing class as a function": function(div) {
+      div.attr("class", "baz");
+      div.classed("foo", function() { return false; });
+      assert.equal(div[0][0].className, "baz");
+      assert.equal(div[0][1].className, "baz");
+      div.attr("class", null);
+      div.classed("bar", function() { return false; });
+      assert.equal(div[0][0].className, "");
+      assert.equal(div[0][1].className, "");
+    },
+    "gets an existing class": function(div) {
+      div[0][0].className = " foo\tbar  baz";
+      assert.isTrue(div.classed("foo"));
+      assert.isTrue(div.classed("bar"));
+      assert.isTrue(div.classed("baz"));
+    },
+    "does not get a missing class": function(div) {
+      div[0][0].className = " foo\tbar  baz";
+      assert.isFalse(div.classed("foob"));
+      assert.isFalse(div.classed("bare"));
+      assert.isFalse(div.classed("rbaz"));
+    },
+    "ignores null nodes": function(div) {
+      var some = d3.selectAll("div");
+      some[0][1] = null;
+      some.attr("class", null).classed("foo", true);
+      assert.equal(div[0][0].className, "foo");
+      assert.equal(div[0][1].className, "");
+    },
+    "returns the current selection": function(div) {
+      assert.isTrue(div.classed("foo", true) === div);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-data-test.js b/static/vendor/d3-2.8.1/test/core/selection-data-test.js
new file mode 100755 (executable)
index 0000000..2f0efd7
--- /dev/null
@@ -0,0 +1,207 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.data");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "assigns data as an array": function(body) {
+      var data = new Object();
+      body.data([data]);
+      assert.strictEqual(document.body.__data__, data);
+    },
+    "assigns data as a function": function(body) {
+      var data = new Object();
+      body.data(function() { return [data]; });
+      assert.strictEqual(document.body.__data__, data);
+    },
+    "stores data in the DOM": function(body) {
+      var expected = new Object(), actual;
+      document.body.__data__ = expected;
+      body.each(function(d) { actual = d; });
+      assert.strictEqual(actual, expected);
+    },
+    "returns a new selection": function(body) {
+      assert.isFalse(body.data([1]) === body);
+    },
+    "with no arguments, returns an array of data": function(body) {
+      var data = new Object();
+      body.data([data]);
+      assert.deepEqual(body.data(), [data]);
+      assert.strictEqual(body.data()[0], data);
+    },
+    "throws an error if data is null or undefined": function(body) {
+      assert.throws(function() { body.data(null); }, Error);
+      assert.throws(function() { body.data(function() {}); }, Error);
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+    },
+    "assigns data as an array": function(div) {
+      var a = new Object(), b = new Object();
+      div.data([a, b]);
+      assert.strictEqual(div[0][0].__data__, a);
+      assert.strictEqual(div[0][1].__data__, b);
+    },
+    "assigns data as a function": function(div) {
+      var a = new Object(), b = new Object();
+      div.data(function() { return [a, b]; });
+      assert.strictEqual(div[0][0].__data__, a);
+      assert.strictEqual(div[0][1].__data__, b);
+    },
+    "stores data in the DOM": function(div) {
+      var a = new Object(), b = new Object(), actual = [];
+      div[0][0].__data__ = a;
+      div[0][1].__data__ = b;
+      div.each(function(d) { actual.push(d); });
+      assert.deepEqual(actual, [a, b]);
+    },
+    "returns a new selection": function(div) {
+      assert.isFalse(div.data([0, 1]) === div);
+    },
+    "throws an error if data is null or undefined": function(div) {
+      assert.throws(function() { div.data(null); }, Error);
+      assert.throws(function() { div.data(function() {}); }, Error);
+    },
+    "with no arguments, returns an array of data": function(div) {
+      var a = new Object(), b = new Object(), actual = [];
+      div[0][0].__data__ = a;
+      div[0][1].__data__ = b;
+      assert.deepEqual(div.data(), [a, b]);
+    },
+    "with no arguments, returned array has undefined for null nodes": function(div) {
+      var b = new Object(), actual = [];
+      div[0][0] = null;
+      div[0][1].__data__ = b;
+      var data = div.data();
+      assert.isUndefined(data[0]);
+      assert.strictEqual(data[1], b);
+      assert.equal(data.length, 2);
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div).selectAll(span)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div")
+          .data(d3.range(2))
+        .enter().append("div").selectAll("span")
+          .data(d3.range(2))
+        .enter().append("span");
+    },
+    "assigns data as an array": function(span) {
+      var a = new Object(), b = new Object();
+      span.data([a, b]);
+      assert.strictEqual(span[0][0].__data__, a);
+      assert.strictEqual(span[0][1].__data__, b);
+      assert.strictEqual(span[1][0].__data__, a);
+      assert.strictEqual(span[1][1].__data__, b);
+    },
+    "assigns data as a function": function(span) {
+      var a = new Object(), b = new Object(), c = new Object(), d = new Object();
+      span.data(function(z, i) { return i ? [c, d] : [a, b]; });
+      assert.strictEqual(span[0][0].__data__, a);
+      assert.strictEqual(span[0][1].__data__, b);
+      assert.strictEqual(span[1][0].__data__, c);
+      assert.strictEqual(span[1][1].__data__, d);
+    },
+    "evaluates the function once per group": function(span) {
+      var count = 0;
+      span.data(function() { ++count; return [0, 1]; });
+      assert.equal(count, 2);
+    },
+    "defines an update selection for updating data": function(span) {
+      var update = span.data(d3.range(4));
+      assert.equal(update.length, 2);
+      assert.equal(update[0].length, 4);
+      assert.equal(update[1].length, 4);
+      assert.domEqual(update[0][0], span[0][0]);
+      assert.domEqual(update[0][1], span[0][1]);
+      assert.domNull(update[0][2]);
+      assert.domNull(update[0][3]);
+      assert.domEqual(update[1][0], span[1][0]);
+      assert.domEqual(update[1][1], span[1][1]);
+      assert.domNull(update[1][2]);
+      assert.domNull(update[1][3]);
+    },
+    "defines an enter selection for entering data": function(span) {
+      var enter = span.data(d3.range(4)).enter();
+      assert.isFalse(enter.empty());
+      assert.equal(enter.length, 2);
+      assert.equal(enter[0].length, 4);
+      assert.equal(enter[1].length, 4);
+      assert.domNull(enter[0][0]);
+      assert.domNull(enter[0][1]);
+      assert.deepEqual(enter[0][2], {__data__: 2});
+      assert.deepEqual(enter[0][3], {__data__: 3});
+      assert.domNull(enter[1][0]);
+      assert.domNull(enter[1][1]);
+      assert.deepEqual(enter[1][2], {__data__: 2});
+      assert.deepEqual(enter[1][3], {__data__: 3});
+    },
+    "defines an exit selection for exiting data": function(span) {
+      var exit = span.data(d3.range(1)).exit();
+      assert.isFalse(exit.empty());
+      assert.equal(exit.length, 2);
+      assert.equal(exit[0].length, 2);
+      assert.equal(exit[1].length, 2);
+      assert.domNull(exit[0][0]);
+      assert.domEqual(exit[0][1], span[0][1]);
+      assert.domNull(exit[1][0]);
+      assert.domEqual(exit[1][1], span[1][1]);
+    },
+    "observes the specified key function": function(span) {
+      var update = span.data([1, 2], Number);
+      assert.isFalse(update.empty());
+      assert.equal(update.length, 2);
+      assert.equal(update[0].length, 2);
+      assert.equal(update[1].length, 2);
+      assert.domEqual(update[0][0], span[0][1]);
+      assert.domNull(update[0][1]);
+      assert.domEqual(update[1][0], span[1][1]);
+      assert.domNull(update[1][1]);
+
+      var enter = update.enter();
+      assert.equal(enter.length, 2);
+      assert.equal(enter[0].length, 2);
+      assert.equal(enter[1].length, 2);
+      assert.domNull(enter[0][0]);
+      assert.deepEqual(enter[0][1], {__data__: 2});
+      assert.domNull(enter[1][0]);
+      assert.deepEqual(enter[1][1], {__data__: 2});
+
+      var exit = update.exit();
+      assert.equal(exit.length, 2);
+      assert.equal(exit[0].length, 2);
+      assert.equal(exit[1].length, 2);
+      assert.domEqual(exit[0][0], span[0][0]);
+      assert.domNull(exit[0][1]);
+      assert.domEqual(exit[1][0], span[1][0]);
+      assert.domNull(exit[1][1]);
+    },
+    "handles keys that are in the default object's prototype chain": function(span) {
+      // This also applies to the non-standard "watch" and "unwatch" in Mozilla Firefox.
+      var update = span.data(["hasOwnProperty", "isPrototypeOf", "toLocaleString", "toString", "valueOf"], String);
+      assert.domNull(update[0][0]);
+      assert.domNull(update[0][1]);
+      assert.domNull(update[0][2]);
+      assert.domNull(update[0][3]);
+      assert.domNull(update[0][4]);
+      // This throws an error if Object.hasOwnProperty isn't used.
+      span.data([0], function() { return "hasOwnProperty"; });
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-datum-test.js b/static/vendor/d3-2.8.1/test/core/selection-datum-test.js
new file mode 100755 (executable)
index 0000000..610f112
--- /dev/null
@@ -0,0 +1,82 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.datum");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "updates the data according to the specified function": function(body) {
+      body.data([42]).datum(function(d, i) { return d + i; });
+      assert.equal(document.body.__data__, 42);
+    },
+    "updates the data to the specified constant": function(body) {
+      body.datum(43);
+      assert.equal(document.body.__data__, 43);
+    },
+    "deletes the data if the function returns null": function(body) {
+      body.data([42]).datum(function() { return null; });
+      assert.isFalse("__data__" in document.body);
+    },
+    "deletes the data if the constant is null": function(body) {
+      body.data([42]).datum(null);
+      assert.isFalse("__data__" in document.body);
+    },
+    "returns the current selection": function(body) {
+      assert.isTrue(body.datum(function() { return 1; }) === body);
+      assert.isTrue(body.datum(2) === body);
+    },
+    "with no arguments, returns the first node's datum": function(body) {
+      body.data([42]);
+      assert.equal(body.datum(), 42);
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+    },
+    "updates the data according to the specified function": function(div) {
+      div.data([42, 43]).datum(function(d, i) { return d + i; });
+      assert.equal(div[0][0].__data__, 42);
+      assert.equal(div[0][1].__data__, 44);
+    },
+    "updates the data to the specified constant": function(div) {
+      div.datum(44);
+      assert.equal(div[0][0].__data__, 44);
+      assert.equal(div[0][1].__data__, 44);
+    },
+    "deletes the data if the function returns null": function(div) {
+      div.datum(function() { return null; });
+      assert.isFalse("__data__" in div[0][0]);
+      assert.isFalse("__data__" in div[0][1]);
+    },
+    "deletes the data if the constant is null": function(div) {
+      div.datum(null);
+      assert.isFalse("__data__" in div[0][0]);
+      assert.isFalse("__data__" in div[0][1]);
+    },
+    "returns the current selection": function(div) {
+      assert.isTrue(div.datum(function() { return 1; }) === div);
+      assert.isTrue(div.datum(2) === div);
+    },
+    "ignores null nodes": function(div) {
+      var some = d3.selectAll("div").data([42, 43]);
+      some[0][1] = null;
+      some.datum(function() { return 1; });
+      assert.equal(div[0][0].__data__, 1);
+      assert.equal(div[0][1].__data__, 43);
+      some.datum(2);
+      assert.equal(div[0][0].__data__, 2);
+      assert.equal(div[0][1].__data__, 43);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-each-test.js b/static/vendor/d3-2.8.1/test/core/selection-each-test.js
new file mode 100755 (executable)
index 0000000..2d54e67
--- /dev/null
@@ -0,0 +1,82 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.each");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "calls the function once per element": function(body) {
+      var count = 0;
+      body.each(function() { ++count; });
+      assert.equal(count, 1);
+    },
+    "passes the data and index to the function": function(body) {
+      var data = new Object(), dd, ii;
+      body.data([data]).each(function(d, i) { dd = d; ii = i; });
+      assert.isTrue(dd === data);
+      assert.isTrue(ii === 0);
+    },
+    "uses the node as the context": function(body) {
+      var node;
+      body.each(function() { node = this; });
+      assert.isTrue(node === document.body);
+    },
+    "returns the same selection": function(body) {
+      assert.isTrue(body.each(function() {}) === body);
+    },
+    "ignores null nodes": function() {
+      var count = 0, body = d3.select("body");
+      body[0][0] = null;
+      body.each(function() { ++count; });
+      assert.equal(count, 0);
+    },
+    "returns the current selection": function(body) {
+      assert.isTrue(body.each(function() {}) === body);
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+    },
+    "calls the function once per element": function(div) {
+      var count = 0;
+      div.each(function() { ++count; });
+      assert.equal(count, 2);
+    },
+    "passes the data and index to the function": function(div) {
+      var data = [new Object(), new Object()], dd = [], ii = [];
+      div.data(data).each(function(d, i) { dd.push(d); ii.push(i); });
+      assert.deepEqual(dd, data);
+      assert.deepEqual(ii, [0, 1]);
+    },
+    "uses the node as the context": function(div) {
+      var nodes = [];
+      div.each(function() { nodes.push(this); });
+      assert.equal(nodes.length, 2);
+      assert.isTrue(div[0][0] == nodes[0]);
+      assert.isTrue(div[0][1] == nodes[1]);
+    },
+    "returns the same selection": function(div) {
+      assert.isTrue(div.each(function() {}) === div);
+    },
+    "ignores null nodes": function(div) {
+      var count = 0, some = d3.selectAll("div");
+      some[0][0] = null;
+      some.each(function() { ++count; });
+      assert.equal(count, 1);
+    },
+    "returns the current selection": function(div) {
+      assert.isTrue(div.each(function() {}) === div);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-empty-test.js b/static/vendor/d3-2.8.1/test/core/selection-empty-test.js
new file mode 100755 (executable)
index 0000000..57aba37
--- /dev/null
@@ -0,0 +1,50 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.empty");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "returns true for empty selections": function(body) {
+      assert.isTrue(body.select("foo").empty());
+    },
+    "returns false for non-empty selections": function(body) {
+      assert.isFalse(body.empty());
+    },
+    "ignores null nodes": function(body) {
+      var some = d3.select("body");
+      some[0][0] = null;
+      assert.isTrue(some.empty());
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      var body = d3.select("body").html("");
+      body.append("div").append("span");
+      body.append("div");
+      return body.selectAll("div");
+    },
+    "returns true for empty selections": function(div) {
+      assert.isTrue(div.select("foo").empty());
+    },
+    "returns false for non-empty selections": function(div) {
+      assert.isFalse(div.empty());
+      assert.isFalse(div.select("span").empty());
+    },
+    "ignores null nodes": function(div) {
+      var some = d3.selectAll("div");
+      some[0][0] = null;
+      assert.isTrue(some.select("span").empty());
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-enter-test.js b/static/vendor/d3-2.8.1/test/core/selection-enter-test.js
new file mode 100755 (executable)
index 0000000..2575835
--- /dev/null
@@ -0,0 +1,25 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.enter");
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter();
+    },
+    "is an instanceof d3.selection.enter": function(enter) {
+      assert.instanceOf(enter, d3.selection.enter);
+    },
+    "selection prototype can be extended": function(enter) {
+      d3.selection.enter.prototype.foo = function() { return this.append("foo"); };
+      var selection = enter.foo();
+      assert.equal(document.body.innerHTML, "<foo></foo><foo></foo>");
+      delete d3.selection.enter.prototype.foo;
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-filter-test.js b/static/vendor/d3-2.8.1/test/core/selection-filter-test.js
new file mode 100755 (executable)
index 0000000..3291f05
--- /dev/null
@@ -0,0 +1,69 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.filter");
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div")
+          .data([0, 1])
+        .enter().append("div")
+        .selectAll("span")
+          .data(function(d) { d <<= 1; return [d, d + 1]; })
+        .enter().append("span");
+    },
+    "preserves matching elements": function(span) {
+      var some = span.filter(function(d, i) { return i === 0; });
+      assert.isTrue(some[0][0] === span[0][0]);
+      assert.isTrue(some[1][0] === span[1][0]);
+    },
+    "removes non-matching elements": function(span) {
+      var some = d3.merge(span.filter(function(d, i) { return d & 1; }));
+      assert.equal(some.indexOf(span[0][0]), -1);
+      assert.equal(some.indexOf(span[1][0]), -1);
+    },
+    "preserves data": function(span) {
+      var some = span.filter(function(d, i) { return d & 1; });
+      assert.equal(some[0][0].__data__, 1);
+      assert.equal(some[1][0].__data__, 3);
+    },
+    "preserves grouping": function(span) {
+      var some = span.filter(function(d, i) { return d & 1; });
+      assert.equal(some.length, 2);
+      assert.equal(some[0].length, 1);
+      assert.equal(some[1].length, 1);
+    },
+    "preserves parent node": function(span) {
+      var some = span.filter(function(d, i) { return d & 1; });
+      assert.isTrue(some[0].parentNode === span[0].parentNode);
+      assert.isTrue(some[1].parentNode === span[1].parentNode);
+    },
+    "does not preserve index": function(span) {
+      var indexes = [];
+      span.filter(function(d, i) { return d & 1; }).each(function(d, i) { indexes.push(i); });
+      assert.deepEqual(indexes, [0, 0]);
+    },
+    "ignores null nodes": function() {
+      var span = d3.selectAll("span");
+      span[0][1] = null;
+      var some = span.filter(function(d, i) { return d & 1; });
+      assert.isTrue(some[0][0] === span[0][3]);
+      assert.equal(some.length, 1);
+    },
+    "can be specified as a selector": function(span) {
+      span.classed("foo", function(d, i) { return d & 1; });
+      var some = span.filter(".foo");
+      assert.equal(some.length, 2);
+      assert.equal(some[0].length, 1);
+      assert.equal(some[1].length, 1);
+    },
+    "returns a new selection": function(span) {
+      assert.isFalse(span.filter(function() { return 1; }) === span);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-html-test.js b/static/vendor/d3-2.8.1/test/core/selection-html-test.js
new file mode 100755 (executable)
index 0000000..4a470ec
--- /dev/null
@@ -0,0 +1,132 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.html");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "sets the inner HTML as a string": function(body) {
+      body.html("<h1>Hello, world!</h1>");
+      assert.equal(document.body.firstChild.tagName, "H1");
+      assert.equal(document.body.firstChild.textContent, "Hello, world!");
+    },
+    "sets the inner HTML as a number": function(body) {
+      body.html(42);
+      assert.equal(document.body.innerHTML, "42");
+      assert.equal(document.body.firstChild.nodeType, document.TEXT_NODE);
+    },
+    "sets the inner HTML as a function": function(body) {
+      body.data(["Subject"]).html(function(d, i) { return "<b>" + d + "</b><i>" + i + "</i>"; });
+      assert.equal(document.body.firstChild.tagName, "B");
+      assert.equal(document.body.firstChild.textContent, "Subject");
+      assert.equal(document.body.lastChild.tagName, "I");
+      assert.equal(document.body.lastChild.textContent, "0");
+    },
+    "clears the inner HTML as null": function(body) {
+      body.html(null);
+      assert.equal(document.body.innerHTML, "");
+      assert.isNull(document.body.firstChild);
+    },
+    "clears the inner HTML as undefined": function(body) {
+      body.html(undefined);
+      assert.equal(document.body.innerHTML, "");
+      assert.isNull(document.body.firstChild);
+    },
+    "clears the inner HTML as the empty string": function(body) {
+      body.html("");
+      assert.equal(document.body.innerHTML, "");
+      assert.isNull(document.body.firstChild);
+    },
+    "clears the inner HTML as a function returning the empty string": function(body) {
+      body.text(function() { return ""; });
+      assert.equal(document.body.innerHTML, "");
+      assert.isNull(document.body.firstChild);
+    },
+    "clears the inner HTML as a function returning null": function(body) {
+      body.text(function() { return null; });
+      assert.equal(document.body.innerHTML, "");
+      assert.isNull(document.body.firstChild);
+    },
+    "clears the inner HTML as a function returning undefined": function(body) {
+      body.text(function() { return undefined; });
+      assert.equal(document.body.innerHTML, "");
+      assert.isNull(document.body.firstChild);
+    },
+    "ignores null nodes": function() {
+      var body = d3.select("body");
+      body[0][0] = null;
+      document.body.innerHTML = "<h1>foo</h1>";
+      body.html("bar");
+      assert.equal(document.body.textContent, "foo");
+    },
+    "returns the current selection": function(body) {
+      assert.isTrue(body.html("foo") === body);
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+    },
+    "sets the inner HTML as a string": function(div) {
+      div.html("<h1>Hello, world!</h1>");
+      assert.equal(div[0][0].firstChild.tagName, "H1");
+      assert.equal(div[0][0].firstChild.textContent, "Hello, world!");
+      assert.equal(div[0][1].firstChild.tagName, "H1");
+      assert.equal(div[0][1].firstChild.textContent, "Hello, world!");
+    },
+    "sets the inner HTML as a number": function(div) {
+      div.html(42);
+      assert.equal(div[0][0].innerHTML, "42");
+      assert.equal(div[0][0].firstChild.nodeType, document.TEXT_NODE);
+    },
+    "sets the inner HTML as a function": function(div) {
+      div.data(["foo", "bar"]).html(function(d, i) { return "<b>" + d + "</b><i>" + i + "</i>"; });
+      assert.equal(div[0][0].firstChild.tagName, "B");
+      assert.equal(div[0][0].firstChild.textContent, "foo");
+      assert.equal(div[0][0].lastChild.tagName, "I");
+      assert.equal(div[0][0].lastChild.textContent, "0");
+      assert.equal(div[0][1].firstChild.tagName, "B");
+      assert.equal(div[0][1].firstChild.textContent, "bar");
+      assert.equal(div[0][1].lastChild.tagName, "I");
+      assert.equal(div[0][1].lastChild.textContent, "1");
+    },
+    /*
+    https://github.com/tmpvar/jsdom/issues/276
+    "clears the inner HTML as null": function(div) {
+      div.html(null);
+      assert.equal(div[0][0].innerHTML, "");
+      assert.isNull(div[0][0].firstChild);
+      assert.equal(div[0][1].innerHTML, "");
+      assert.isNull(div[0][1].firstChild);
+    },
+    */
+    "clears the inner HTML as a function": function(div) {
+      div.html(function() { return ""; });
+      assert.equal(div[0][0].innerHTML, "");
+      assert.isNull(div[0][0].firstChild);
+      assert.equal(div[0][1].innerHTML, "");
+      assert.isNull(div[0][1].firstChild);
+    },
+    "ignores null nodes": function(div) {
+      var some = d3.selectAll("div");
+      some[0][0] = null;
+      div[0][0].innerHTML = "<h1>foo</h1>";
+      some.html("bar");
+      assert.equal(div[0][0].textContent, "foo");
+      assert.equal(div[0][1].textContent, "bar");
+    },
+    "returns the current selection": function(div) {
+      assert.isTrue(div.html("foo") === div);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-insert-test.js b/static/vendor/d3-2.8.1/test/core/selection-insert-test.js
new file mode 100755 (executable)
index 0000000..cf0c27a
--- /dev/null
@@ -0,0 +1,135 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.insert");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "inserts before the specified selector": function(body) {
+      var span = body.html("").append("span");
+      var div = body.insert("div", "span");
+      assert.equal(div[0][0].tagName, "DIV");
+      assert.isNull(div[0][0].namespaceURI);
+      assert.domEqual(div[0][0], document.body.firstChild);
+      assert.domEqual(div[0][0].nextSibling, span[0][0]);
+    },
+    "appends an HTML element": function(body) {
+      var div = body.insert("div");
+      assert.equal(div[0][0].tagName, "DIV");
+      assert.isNull(div[0][0].namespaceURI);
+      assert.domEqual(div[0][0], document.body.lastChild);
+    },
+    "appends an SVG element": function(body) {
+      var svg = body.insert("svg:svg");
+      assert.equal(svg[0][0].tagName, "SVG");
+      assert.equal(svg[0][0].namespaceURI, "http://www.w3.org/2000/svg");
+      assert.domEqual(svg[0][0].parentNode, document.body);
+      assert.domEqual(svg[0][0], document.body.lastChild);
+    },
+    "propagates data to new element": function(body) {
+      var data = new Object(), div = body.data([data]).insert("div");
+      assert.strictEqual(div[0][0].__data__, data);
+    },
+    "returns a new selection": function(body) {
+      assert.isFalse(body.insert("div") === body);
+    },
+    "inherits namespace from parent node": function(body) {
+      var g = body.insert("svg:svg").insert("g");
+      assert.equal(g[0][0].namespaceURI, "http://www.w3.org/2000/svg");
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().insert("div");
+    },
+    "appends an HTML element": function(div) {
+      var span = div.insert("span");
+      assert.equal(span[0].length, 2);
+      assert.equal(span[0][0].tagName, "SPAN");
+      assert.equal(span[0][1].tagName, "SPAN");
+      assert.isNull(span[0][0].namespaceURI);
+      assert.isNull(span[0][1].namespaceURI);
+      assert.domEqual(span[0][0].parentNode, div[0][0]);
+      assert.domEqual(span[0][1].parentNode, div[0][1]);
+      assert.domEqual(div[0][0].lastChild, span[0][0]);
+      assert.domEqual(div[0][1].lastChild, span[0][1]);
+    },
+    "appends an SVG element": function(div) {
+      var svg = div.insert("svg:svg");
+      assert.equal(svg[0].length, 2);
+      assert.equal(svg[0][0].tagName, "SVG");
+      assert.equal(svg[0][1].tagName, "SVG");
+      assert.equal(svg[0][0].namespaceURI, "http://www.w3.org/2000/svg");
+      assert.equal(svg[0][1].namespaceURI, "http://www.w3.org/2000/svg");
+      assert.domEqual(svg[0][0].parentNode, div[0][0]);
+      assert.domEqual(svg[0][1].parentNode, div[0][1]);
+      assert.domEqual(div[0][0].lastChild, svg[0][0]);
+      assert.domEqual(div[0][1].lastChild, svg[0][1]);
+    },
+    "ignores null nodes": function(div) {
+      div.html("");
+      var some = d3.selectAll("div");
+      some[0][1] = null;
+      var span = some.insert("span");
+      assert.equal(span[0].length, 2);
+      assert.equal(span[0][0].tagName, "SPAN");
+      assert.domNull(span[0][1]);
+      assert.domEqual(span[0][0].parentNode, div[0][0]);
+      assert.domEqual(div[0][0].lastChild, span[0][0]);
+      assert.domNull(div[0][1].lastChild);
+    },
+    "propagates data to new elements": function(div) {
+      var a = new Object(), b = new Object(), span = div.data([a, b]).insert("span");
+      assert.strictEqual(span[0][0].__data__, a);
+      assert.strictEqual(span[0][1].__data__, b);
+    },
+    "returns a new selection": function(div) {
+      assert.isFalse(div.insert("div") === div);
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div).data(…).enter()": {
+    topic: function() {
+      return d3.select("body");
+    },
+    "inserts before the specified selector": function(body) {
+      var span = body.html("").append("span");
+      var div = body.selectAll("div").data(d3.range(2)).enter().insert("div", "span");
+      assert.equal(div.length, 1);
+      assert.equal(div[0].length, 2);
+      assert.domEqual(div[0][0], document.body.firstChild);
+      assert.domEqual(div[0][1].previousSibling, div[0][0]);
+      assert.domEqual(div[0][1].nextSibling, span[0][0]);
+    },
+    "propagates data to new elements": function(body) {
+      var a = new Object(), b = new Object(), div = body.html("").selectAll("div").data([a, b]).enter().insert("div");
+      assert.strictEqual(div[0][0].__data__, a);
+      assert.strictEqual(div[0][1].__data__, b);
+    },
+    "ignores null nodes": function(body) {
+      body.html("").insert("div");
+      var div = body.selectAll("div").data(d3.range(3)).enter().insert("div");
+      assert.equal(div.length, 1);
+      assert.equal(div[0].length, 3);
+      assert.domNull(div[0][0]);
+      assert.domEqual(div[0][1].parentNode, document.body);
+      assert.domEqual(div[0][2].parentNode, document.body);
+    },
+    "returns a new selection": function(body) {
+      var enter = body.html("").selectAll("div").data([0, 1]).enter();
+      assert.isFalse(enter.insert("div") === enter);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-node-test.js b/static/vendor/d3-2.8.1/test/core/selection-node-test.js
new file mode 100755 (executable)
index 0000000..da7ec61
--- /dev/null
@@ -0,0 +1,49 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.node");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "returns null for empty selections": function(body) {
+      assert.isNull(body.select("foo").node());
+    },
+    "returns the first element for non-empty selections": function(body) {
+      assert.isTrue(body.node() === document.body);
+    },
+    "ignores null nodes": function(body) {
+      var some = d3.select("body");
+      some[0][0] = null;
+      assert.isNull(some.node());
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      var body = d3.select("body").html("");
+      body.append("div").append("span");
+      body.append("div");
+      return body.selectAll("div");
+    },
+    "returns null for empty selections": function(div) {
+      assert.isNull(div.select("foo").node());
+    },
+    "returns the first element for non-empty selections": function(div) {
+      assert.isTrue(div.node() === div[0][0]);
+    },
+    "ignores null nodes": function(div) {
+      var some = d3.selectAll("div");
+      some[0][0] = null;
+      assert.isTrue(some.node() === div[0][1]);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-on-test.js b/static/vendor/d3-2.8.1/test/core/selection-on-test.js
new file mode 100755 (executable)
index 0000000..242590c
--- /dev/null
@@ -0,0 +1,104 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.on");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "registers an event listener for the specified type": function(body) {
+      var form = body.append("form"), count = 0;
+      form.on("submit", function() { ++count; }); // jsdom has spotty event support
+      form.append("input").attr("type", "submit").node().click();
+      assert.equal(count, 1);
+    },
+    "replaces an existing event listener for the same type": function(body) {
+      var form = body.append("form"), count = 0, fail = 0;
+      form.on("submit", function() { ++fail; });
+      form.on("submit", function() { ++count; });
+      form.append("input").attr("type", "submit").node().click();
+      assert.equal(count, 1);
+      assert.equal(fail, 0);
+    },
+    "removes an existing event listener": function(body) {
+      var form = body.append("form"), fail = 0;
+      form.on("submit", function() { ++fail; });
+      form.on("submit", null);
+      form.append("input").attr("type", "submit").node().click();
+      assert.equal(fail, 0);
+      assert.isUndefined(form.on("submit"));
+    },
+    /* Regrettably, JSDOM ignores the capture flag, so we can't test this yet…
+    "removing a listener doesn't require the capture flag": function(body) {
+      var form = body.append("form"), fail = 0;
+      form.on("submit", function() { ++fail; }, true);
+      form.on("submit", null);
+      form.append("input").attr("type", "submit").node().click();
+      assert.equal(fail, 0);
+      assert.isUndefined(form.on("submit"));
+    },
+    */
+    "ignores removal of non-matching event listener": function(body) {
+      body.append("form").on("submit", null);
+    },
+    "observes the specified namespace": function(body) {
+      var form = body.append("form"), foo = 0, bar = 0;
+      form.on("submit.foo", function() { ++foo; });
+      form.on("submit.bar", function() { ++bar; });
+      form.append("input").attr("type", "submit").node().click();
+      assert.equal(foo, 1);
+      assert.equal(bar, 1);
+    },
+    /* Not really sure how to test this one…
+    "observes the specified capture flag": function(body) {
+    },
+    */
+    "passes the current data and index to the event listener": function(body) {
+      var forms = body.html("").selectAll("form").data(["a", "b"]).enter().append("form"), dd, ii, data = new Object();
+      forms.on("submit", function(d, i) { dd = d; ii = i; });
+      forms.append("input").attr("type", "submit")[0][1].click();
+      assert.equal(dd, "b");
+      assert.equal(ii, 1);
+      forms[0][1].__data__ = data;
+      forms.append("input").attr("type", "submit")[0][1].click();
+      assert.equal(dd, data);
+      assert.equal(ii, 1);
+    },
+    "uses the current element as the context": function(body) {
+      var forms = body.html("").selectAll("form").data(["a", "b"]).enter().append("form"), context;
+      forms.on("submit", function() { context = this; });
+      forms.append("input").attr("type", "submit")[0][1].click();
+      assert.domEqual(context, forms[0][1]);
+    },
+    "sets the current event as d3.event": function(body) {
+      var form = body.append("form"), event;
+      form.on("submit", function() { event = d3.event; });
+      form.append("input").attr("type", "submit").node().click();
+      assert.equal(event.type, "submit");
+      assert.domEqual(event.target, form[0][0]);
+    },
+    "restores the original event after notifying listeners": function(body) {
+      var form = body.append("form"), event = d3.event = new Object();
+      form.on("submit", function() {});
+      form.append("input").attr("type", "submit").node().click();
+      assert.equal(d3.event, event);
+    },
+    "returns the current selection": function(body) {
+      assert.isTrue(body.on("submit", function() {}) === body);
+    },
+    "returns the assigned listener if called with one argument": function(body) {
+      body.on("mouseover", f).on("click.foo", f);
+      function f() {}
+      assert.equal(body.on("mouseover"), f);
+      assert.equal(body.on("click.foo"), f);
+      assert.isUndefined(body.on("click"));
+      assert.isUndefined(body.on("mouseover.foo"));
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-order-test.js b/static/vendor/d3-2.8.1/test/core/selection-order-test.js
new file mode 100755 (executable)
index 0000000..7ef6ed3
--- /dev/null
@@ -0,0 +1,31 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.order");
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div")
+          .data([1, 2, 10, 20])
+        .enter().append("div")
+          .attr("id", String);
+    },
+    "orders elements by data": function(div) {
+      div = div.data([1, 10, 20, 2], String).order();
+      assert.domNull(div[0][0].previousSibling);
+      assert.domEqual(div[0][1].previousSibling, div[0][0]);
+      assert.domEqual(div[0][2].previousSibling, div[0][1]);
+      assert.domEqual(div[0][3].previousSibling, div[0][2]);
+      assert.domNull(div[0][3].nextSibling);
+    },
+    "returns the current selection": function(span) {
+      span = d3.select("body"); // https://github.com/tmpvar/jsdom/issues/277
+      assert.isTrue(span.order() === span);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-property-test.js b/static/vendor/d3-2.8.1/test/core/selection-property-test.js
new file mode 100755 (executable)
index 0000000..631ff7b
--- /dev/null
@@ -0,0 +1,90 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.property");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "sets a property as a string": function(body) {
+      body.property("bgcolor", "red");
+      assert.equal(document.body.bgcolor, "red");
+    },
+    "sets a property as a number": function(body) {
+      body.property("opacity", 1);
+      assert.equal(document.body.opacity, "1");
+    },
+    "sets a property as a function": function(body) {
+      body.property("bgcolor", function() { return "orange"; });
+      assert.equal(document.body.bgcolor, "orange");
+    },
+    "gets a property value": function(body) {
+      document.body.bgcolor = "yellow";
+      assert.equal(body.property("bgcolor"), "yellow");
+    },
+    "removes a property as null": function(body) {
+      body.property("bgcolor", "yellow").property("bgcolor", null);
+      assert.isFalse("bgcolor" in document.body);
+    },
+    "removes a property as a function": function(body) {
+      body.property("bgcolor", "yellow").property("bgcolor", function() { return null });
+      assert.isFalse("bgcolor" in document.body);
+    },
+    "returns the current selection": function(body) {
+      assert.isTrue(body.property("bgcolor", "yellow") === body);
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+    },
+    "sets a property as a string": function(div) {
+      div.property("bgcolor", "red");
+      assert.equal(div[0][0].bgcolor, "red");
+      assert.equal(div[0][1].bgcolor, "red");
+    },
+    "sets a property as a number": function(div) {
+      div.property("opacity", 0.4);
+      assert.equal(div[0][0].opacity, "0.4");
+      assert.equal(div[0][1].opacity, "0.4");
+    },
+    "sets a property as a function": function(div) {
+      div.property("bgcolor", d3.interpolateRgb("brown", "steelblue"));
+      assert.equal(div[0][0].bgcolor, "#a52a2a");
+      assert.equal(div[0][1].bgcolor, "#4682b4");
+    },
+    "gets a property value": function(div) {
+      div[0][0].bgcolor = "purple";
+      assert.equal(div.property("bgcolor"), "purple");
+    },
+    "removes a property as null": function(div) {
+      div.property("bgcolor", "yellow").property("bgcolor", null);
+      assert.isFalse("bgcolor" in div[0][0]);
+      assert.isFalse("bgcolor" in div[0][1]);
+    },
+    "removes a property as a function": function(div) {
+      div.property("bgcolor", "yellow").property("bgcolor", function() { return null });
+      assert.isFalse("bgcolor" in div[0][0]);
+      assert.isFalse("bgcolor" in div[0][1]);
+    },
+    "ignores null nodes": function(div) {
+      var some = d3.selectAll("div");
+      some[0][1] = null;
+      some.property("bgcolor", null).property("bgcolor", "red");
+      assert.equal(div[0][0].bgcolor, "red");
+      assert.isFalse("bgcolor" in div[0][1]);
+    },
+    "returns the current selection": function(div) {
+      assert.isTrue(div.property("bgcolor", "yellow") === div);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-remove-test.js b/static/vendor/d3-2.8.1/test/core/selection-remove-test.js
new file mode 100755 (executable)
index 0000000..2d362eb
--- /dev/null
@@ -0,0 +1,38 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.remove");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body");
+    },
+    "removes the matching elements": function(body) {
+      var div = body.append("div");
+      div.remove();
+      assert.domNull(div[0][0].parentNode);
+    },
+    "does not remove non-matching elements": function(body) {
+      var div1 = body.append("div"), div2 = body.append("div");
+      div1.remove();
+      assert.domEqual(div2[0][0].parentNode, document.body);
+    },
+    "ignores null nodes": function(body) {
+      var div = body.html("").selectAll("div").data([0, 1]).enter().append("div"),
+          some = d3.selectAll("div");
+      some[0][0] = null;
+      some.remove();
+      assert.domEqual(div[0][0].parentNode, document.body);
+      assert.domNull(div[0][1].parentNode);
+    },
+    "returns the current selection": function(body) {
+      var div = body.append("div");
+      assert.isTrue(div.remove() === div);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-select-test.js b/static/vendor/d3-2.8.1/test/core/selection-select-test.js
new file mode 100755 (executable)
index 0000000..7b77143
--- /dev/null
@@ -0,0 +1,124 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.select");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      var body = d3.select("body").html("");
+      body.append("div").attr("class", "first");
+      body.append("div").attr("class", "second");
+      return body;
+    },
+    "selects the first matching element": function(body) {
+      var div = body.select("div");
+      assert.isTrue(div[0][0] === document.body.firstChild);
+      assert.equal(div.length, 1);
+      assert.equal(div[0].length, 1);
+      assert.equal(div.attr("class"), "first");
+    },
+    "propagates parent node to the selected elements": function(body) {
+      var div = body.select("div");
+      assert.isNotNull(div[0].parentNode);
+      assert.isTrue(div[0].parentNode === document.documentElement);
+      assert.isTrue(div[0].parentNode === body[0].parentNode);
+    },
+    "propagates data to the selected elements": function(body) {
+      var data = new Object(), div = body.data([data]).select("div");
+      assert.strictEqual(div[0][0].__data__, data);
+    },
+    "does not propagate data if no data was specified": function(body) {
+      delete document.body.__data__;
+      var data = new Object(), div = body.select("div").data([data]);
+      div = body.select("div");
+      assert.strictEqual(div[0][0].__data__, data);
+      assert.isUndefined(document.body.__data__);
+    },
+    "returns null if no match is found": function(body) {
+      var span = body.select("span");
+      assert.equal(span[0][0], null);
+      assert.equal(span.length, 1);
+      assert.equal(span[0].length, 1);
+    },
+    "can select via function": function(body) {
+      body.append("foo");
+      var d = {}, dd = [], ii = [], tt = [],
+          s = body.data([d]).select(function(d, i) { dd.push(d); ii.push(i); tt.push(this); return this.firstChild; });
+      assert.deepEqual(dd, [d], "expected data, got {actual}");
+      assert.deepEqual(ii, [0], "expected index, got {actual}");
+      assert.domEqual(tt[0], document.body, "expected this, got {actual}");
+      assert.domEqual(s[0][0], document.body.firstChild);
+      delete document.body.__data__;
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      var div = d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+      div.append("span").attr("class", "first");
+      div.append("span").attr("class", "second");
+      return div;
+    },
+    "selects the first matching element": function(div) {
+      var span = div.select("span");
+      assert.isTrue(span[0][0].parentNode === div[0][0]);
+      assert.isTrue(span[0][1].parentNode === div[0][1]);
+      assert.equal(span.length, 1);
+      assert.equal(span[0].length, 2);
+      assert.equal(span.attr("class"), "first");
+    },
+    "propagates parent node to the selected elements": function(div) {
+      var span = div.select("span");
+      assert.isNotNull(span[0].parentNode);
+      assert.isTrue(span[0].parentNode === document.body);
+      assert.isTrue(span[0].parentNode === div[0].parentNode);
+    },
+    "propagates data to the selected elements": function(div) {
+      var data = new Object(), span = div.data([data]).select("span");
+      assert.strictEqual(span[0][0].__data__, data);
+    },
+    "does not propagate data if no data was specified": function(div) {
+      delete div[0][0].__data__;
+      delete div[0][1].__data__;
+      var a = new Object(), b = new Object(), span = div.select("span").data([a, b]);
+      span = div.select("span");
+      assert.strictEqual(span[0][0].__data__, a);
+      assert.strictEqual(span[0][1].__data__, b);
+      assert.isUndefined(div[0][0].__data__);
+      assert.isUndefined(div[0][1].__data__);
+    },
+    "returns null if no match is found": function(div) {
+      var div = div.select("div");
+      assert.equal(div[0][0], null);
+      assert.equal(div[0][1], null);
+      assert.equal(div.length, 1);
+      assert.equal(div[0].length, 2);
+    },
+    "ignores null nodes": function(div) {
+      var some = d3.selectAll("div");
+      some[0][1] = null;
+      var span = some.select("span");
+      assert.equal(span.length, 1);
+      assert.equal(span[0].length, 2);
+      assert.isTrue(span[0][0].parentNode === div[0][0]);
+      assert.isNull(span[0][1]);
+    },
+    "can select via function": function(div) {
+      var dd = [], ii = [], tt = [],
+          s = div.data(["a", "b"]).select(function(d, i) { dd.push(d); ii.push(i); tt.push(this); return this.firstChild; });
+      assert.deepEqual(dd, ["a", "b"], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
+      assert.domEqual(tt[0], div[0][0], "expected this, got {actual}");
+      assert.domEqual(tt[1], div[0][1], "expected this, got {actual}");
+      assert.domEqual(s[0][0], div[0][0].firstChild);
+      assert.domEqual(s[0][1], div[0][1].firstChild);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-selectAll-test.js b/static/vendor/d3-2.8.1/test/core/selection-selectAll-test.js
new file mode 100755 (executable)
index 0000000..90129c0
--- /dev/null
@@ -0,0 +1,127 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.selectAll");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      var body = d3.select("body").html("");
+      if ("__data__" in body[0][0]) delete body[0][0].__data__;
+      body.append("div").attr("class", "first");
+      body.append("div").attr("class", "second");
+      return body;
+    },
+    "selects all matching elements": function(body) {
+      var div = body.selectAll("div");
+      assert.isTrue(div[0][0] === document.body.firstChild);
+      assert.isTrue(div[0][1] === document.body.lastChild);
+      assert.equal(div.length, 1);
+      assert.equal(div[0].length, 2);
+    },
+    "propagates parent node to the selected elements": function(body) {
+      var div = body.selectAll("div");
+      assert.isNotNull(div[0].parentNode);
+      assert.isTrue(div[0].parentNode === document.body);
+    },
+    "does not propagate data if data was specified": function(body) {
+      var div = body.data([new Object()]).selectAll("div");
+      assert.isUndefined(div[0][0].__data__);
+      assert.isUndefined(div[0][1].__data__);
+    },
+    "does not propagate data if data was not specified": function(body) {
+      var div = body.selectAll("div").data([1, 2]);
+      div = body.data([new Object()]).selectAll("div");
+      assert.equal(div[0][0].__data__, 1);
+      assert.equal(div[0][1].__data__, 2);
+    },
+    "returns empty array if no match is found": function(body) {
+      var span = body.selectAll("span");
+      assert.equal(span.length, 1);
+      assert.equal(span[0].length, 0);
+    },
+    "can select via function": function(body) {
+      var d = {}, dd = [], ii = [], tt = [],
+          s = body.data([d]).selectAll(function(d, i) { dd.push(d); ii.push(i); tt.push(this); return this.childNodes; });
+      assert.deepEqual(dd, [d], "expected data, got {actual}");
+      assert.deepEqual(ii, [0], "expected index, got {actual}");
+      assert.domEqual(tt[0], document.body, "expected this, got {actual}");
+      assert.domEqual(s[0][0], document.body.firstChild);
+      assert.domEqual(s[0][1], document.body.lastChild);
+      delete document.body.__data__;
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      var div = d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+      div.append("span").attr("class", "first");
+      div.append("span").attr("class", "second");
+      return div;
+    },
+    "selects all matching elements": function(div) {
+      var span = div.selectAll("span");
+      assert.equal(span.length, 2);
+      assert.equal(span[0].length, 2);
+      assert.isTrue(span[0][0].parentNode === div[0][0]);
+      assert.isTrue(span[0][1].parentNode === div[0][0]);
+      assert.isTrue(span[1][0].parentNode === div[0][1]);
+      assert.isTrue(span[1][1].parentNode === div[0][1]);
+    },
+    "propagates parent node to the selected elements": function(div) {
+      var span = div.selectAll("span");
+      assert.isNotNull(span[0].parentNode);
+      assert.isTrue(span[0].parentNode === div[0][0]);
+      assert.isTrue(span[1].parentNode === div[0][1]);
+    },
+    "does not propagate data if data was specified": function(div) {
+      var span = div.selectAll("span");
+      delete span[0][0].__data__;
+      delete span[0][1].__data__;
+      span = div.data([new Object(), new Object()]).selectAll("span");
+      assert.isUndefined(span[0][0].__data__);
+      assert.isUndefined(span[0][1].__data__);
+    },
+    "does not propagate data if data was not specified": function(div) {
+      var a = new Object(), b = new Object(), span = div.selectAll("span").data([a, b]);
+      delete div[0][0].__data__;
+      delete div[0][1].__data__;
+      span = div.selectAll("span");
+      assert.equal(span[0][0].__data__, a);
+      assert.equal(span[0][1].__data__, b);
+    },
+    "returns empty array if no match is found": function(div) {
+      var div = div.selectAll("div");
+      assert.equal(div.length, 2);
+      assert.equal(div[0].length, 0);
+      assert.equal(div[1].length, 0);
+    },
+    "ignores null nodes": function(div) {
+      var some = d3.selectAll("div");
+      some[0][1] = null;
+      var span = some.selectAll("span");
+      assert.equal(span.length, 1);
+      assert.equal(span[0].length, 2);
+      assert.isTrue(span[0][0].parentNode === div[0][0]);
+      assert.isTrue(span[0][1].parentNode === div[0][0]);
+    },
+    "can select via function": function(div) {
+      var dd = [], ii = [], tt = [],
+          s = div.data(["a", "b"]).selectAll(function(d, i) { dd.push(d); ii.push(i); tt.push(this); return this.childNodes; });
+      assert.deepEqual(dd, ["a", "b"], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
+      assert.domEqual(tt[0], div[0][0], "expected this, got {actual}");
+      assert.domEqual(tt[1], div[0][1], "expected this, got {actual}");
+      assert.domEqual(s[0][0], div[0][0].firstChild);
+      assert.domEqual(s[0][1], div[0][0].lastChild);
+      assert.domEqual(s[1][0], div[0][1].firstChild);
+      assert.domEqual(s[1][1], div[0][1].lastChild);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-sort-test.js b/static/vendor/d3-2.8.1/test/core/selection-sort-test.js
new file mode 100755 (executable)
index 0000000..481dd98
--- /dev/null
@@ -0,0 +1,58 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.sort");
+
+suite.addBatch({
+  "selectAll(div).selectAll(span)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div")
+          .data([1, 2, 10, 20])
+        .enter().append("div").selectAll("span")
+          .data(function(d) { return [20 + d, 2 + d, 10, 1]; })
+        .enter().append("span");
+    },
+    "sorts elements by natural order": function(span) {
+      span.sort();
+      assert.domNull(span[0][0].previousSibling);
+      assert.domEqual(span[0][1].previousSibling, span[0][0]);
+      assert.domEqual(span[0][2].previousSibling, span[0][1]);
+      assert.domEqual(span[0][3].previousSibling, span[0][2]);
+      assert.domNull(span[0][3].nextSibling);
+    },
+    "sorts each group independently": function(span) {
+      span.sort(d3.descending);
+      assert.deepEqual(span[0].map(data), [21, 10, 3, 1]);
+      assert.deepEqual(span[1].map(data), [22, 10, 4, 1]);
+      assert.deepEqual(span[2].map(data), [30, 12, 10, 1]);
+      assert.deepEqual(span[3].map(data), [40, 22, 10, 1]);
+    },
+    "sorts using the specified comparator": function(span) {
+      span.sort(function(a, b) { return d3.ascending(a+"", b+""); });
+      assert.deepEqual(span[0].map(data), [1, 10, 21, 3]);
+      assert.deepEqual(span[1].map(data), [1, 10, 22, 4]);
+      assert.deepEqual(span[2].map(data), [1, 10, 12, 30]);
+      assert.deepEqual(span[3].map(data), [1, 10, 22, 40]);
+    },
+    "treats null nodes as null data": function(span) {
+      var some = d3.selectAll("div:first-child span"), nulls = false;
+      some[0][0] = null;
+      some.sort(function(a, b) { if ((a === null) || (b === null)) ++nulls; return a - b; });
+      assert.isTrue(nulls > 0);
+      assert.domNull(span[0][0].previousSibling);
+      assert.deepEqual(some[0].slice(1).map(data), [3, 10, 21]);
+    },
+    "returns the current selection": function(span) {
+      span = d3.select("body"); // https://github.com/tmpvar/jsdom/issues/277
+      assert.isTrue(span.sort() === span);
+    }
+  }
+});
+
+function data(d) {
+  return d.__data__;
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-style-test.js b/static/vendor/d3-2.8.1/test/core/selection-style-test.js
new file mode 100755 (executable)
index 0000000..c334e74
--- /dev/null
@@ -0,0 +1,99 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.style");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "sets a property as a string": function(body) {
+      body.style("background-color", "red");
+      assert.equal(document.body.style["background-color"], "red");
+    },
+    "sets a property as a number": function(body) {
+      body.style("opacity", .3);
+      assert.equal(document.body.style["opacity"], "0.3");
+    },
+    "sets a property as a function": function(body) {
+      body.style("background-color", function() { return "orange"; });
+      assert.equal(document.body.style["background-color"], "orange");
+    },
+    "gets a property value": function(body) {
+      document.body.style.setProperty("background-color", "yellow", "");
+      assert.equal(body.style("background-color"), "yellow");
+    },
+    "observes the specified priority": function(body) {
+      body.style("background-color", "green", "important");
+      assert.equal(document.body.style.getPropertyPriority("background-color"), "important");
+    },
+    "removes a property as null": function(body) {
+      body.style("background-color", "green").style("background-color", null);
+      assert.equal(body.style("background-color"), "");
+    },
+    "removes a property as a function": function(body) {
+      body.style("background-color", "green").style("background-color", function() { return null; });
+      assert.equal(body.style("background-color"), "");
+    },
+    "returns the current selection": function(body) {
+      assert.isTrue(body.style("background-color", "green") === body);
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+    },
+    "sets a property as a string": function(div) {
+      div.style("background-color", "red");
+      assert.equal(div[0][0].style["background-color"], "red");
+      assert.equal(div[0][1].style["background-color"], "red");
+    },
+    "sets a property as a number": function(div) {
+      div.style("opacity", .5);
+      assert.equal(div[0][0].style["opacity"], "0.5");
+      assert.equal(div[0][1].style["opacity"], "0.5");
+    },
+    "sets a property as a function": function(div) {
+      div.style("background-color", d3.interpolateRgb("orange", "yellow"));
+      assert.equal(div[0][0].style["background-color"], "#ffa500");
+      assert.equal(div[0][1].style["background-color"], "#ffff00");
+    },
+    "gets a property value": function(div) {
+      div[0][0].style.setProperty("background-color", "green", "");
+      assert.equal(div.style("background-color"), "green");
+    },
+    "observes the specified priority": function(div) {
+      div.style("background-color", "blue", "important");
+      assert.equal(div[0][0].style.getPropertyPriority("background-color"), "important");
+      assert.equal(div[0][1].style.getPropertyPriority("background-color"), "important");
+    },
+    "removes a property as null": function(div) {
+      div.style("background-color", "red").style("background-color", null);
+      assert.equal(div[0][0].style["background-color"], "");
+      assert.equal(div[0][1].style["background-color"], "");
+    },
+    "removes a property as a function": function(div) {
+      div.style("background-color", "red").style("background-color", function() { return null; });
+      assert.equal(div[0][0].style["background-color"], "");
+      assert.equal(div[0][1].style["background-color"], "");
+    },
+    "ignores null nodes": function(div) {
+      var some = d3.selectAll("div");
+      some[0][1] = null;
+      some.style("background-color", null).style("background-color", "red");
+      assert.equal(div[0][0].style["background-color"], "red");
+      assert.equal(div[0][1].style["background-color"], "");
+    },
+    "returns the current selection": function(div) {
+      assert.isTrue(div.style("background-color", "green") === div);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-test.js b/static/vendor/d3-2.8.1/test/core/selection-test.js
new file mode 100755 (executable)
index 0000000..5a747e4
--- /dev/null
@@ -0,0 +1,34 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.selection");
+
+suite.addBatch({
+  "selection": {
+    topic: function() {
+      return d3.selection();
+    },
+    "selects the document": function(selection) {
+      assert.equal(selection.length, 1);
+      assert.equal(selection[0].length, 1);
+      assert.equal(selection[0][0], document);
+    },
+    "is an instanceof d3.selection": function(selection) {
+      assert.instanceOf(selection, d3.selection);
+    },
+    "subselections are also instanceof d3.selection": function(selection) {
+      assert.instanceOf(selection.select("body"), d3.selection);
+      assert.instanceOf(selection.selectAll("body"), d3.selection);
+    },
+    "selection prototype can be extended": function(selection) {
+      d3.selection.prototype.foo = function(v) { return this.attr("foo", v); };
+      selection.select("body").foo(42);
+      assert.equal(document.body.getAttribute("foo"), "42");
+      delete d3.selection.prototype.foo;
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/selection-text-test.js b/static/vendor/d3-2.8.1/test/core/selection-text-test.js
new file mode 100755 (executable)
index 0000000..c2c45cc
--- /dev/null
@@ -0,0 +1,115 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("selection.text");
+
+suite.addBatch({
+  "select(body)": {
+    topic: function() {
+      return d3.select("body").html("");
+    },
+    "sets the text content as a string": function(body) {
+      body.text("Hello, world!");
+      assert.equal(document.body.textContent, "Hello, world!");
+    },
+    "sets the text content as a number": function(body) {
+      body.text(42);
+      assert.equal(document.body.textContent, "42");
+    },
+    "sets the text content as a function": function(body) {
+      body.data(["Subject"]).text(function(d, i) { return "Hello, " + d + " " + i + "!"; });
+      assert.equal(document.body.textContent, "Hello, Subject 0!");
+    },
+    "escapes html content to text": function(body) {
+      body.text("<h1>Hello, world!</h1>");
+      assert.equal(document.body.textContent, "<h1>Hello, world!</h1>");
+      assert.equal(document.body.firstChild.nodeType, document.TEXT_NODE);
+    },
+    /* <https://github.com/tmpvar/jsdom/issues/276>
+    "clears the text content as null": function(body) {
+      body.text(null);
+      assert.equal(document.body.textContent, "");
+    },
+    "clears the text content as undefined": function(body) {
+      body.text(undefined);
+      assert.equal(document.body.textContent, "");
+    },
+    "clears the text content as a function returning null": function(body) {
+      body.text(function() { return null; });
+      assert.equal(document.body.textContent, "");
+    },
+    "clears the text content as a function returning undefined": function(body) {
+      body.text(function() { return undefined; });
+      assert.equal(document.body.textContent, "");
+    },
+    */
+    "ignores null nodes": function() {
+      var body = d3.select("body");
+      body[0][0] = null;
+      document.body.textContent = "foo";
+      body.text("bar");
+      assert.equal(document.body.textContent, "foo");
+    },
+    "returns the current selection": function(body) {
+      assert.isTrue(body.text("hello") === body);
+    }
+  }
+});
+
+suite.addBatch({
+  "selectAll(div)": {
+    topic: function() {
+      return d3.select("body").html("").selectAll("div").data(d3.range(2)).enter().append("div");
+    },
+    "sets the text content as a string": function(div) {
+      div.text("Hello, world!");
+      assert.equal(div[0][0].textContent, "Hello, world!");
+      assert.equal(div[0][1].textContent, "Hello, world!");
+    },
+    "sets the text content as a number": function(div) {
+      div.text(42);
+      assert.equal(div[0][0].textContent, "42");
+      assert.equal(div[0][1].textContent, "42");
+    },
+    "sets the text content as a function": function(div) {
+      div.data(["foo", "bar"]).text(function(d, i) { return "Hello, " + d + " " + i + "!"; });
+      assert.equal(div[0][0].textContent, "Hello, foo 0!");
+      assert.equal(div[0][1].textContent, "Hello, bar 1!");
+    },
+    "escapes html content to text": function(div) {
+      div.text("<h1>Hello, world!</h1>");
+      assert.equal(div[0][0].textContent, "<h1>Hello, world!</h1>");
+      assert.equal(div[0][1].textContent, "<h1>Hello, world!</h1>");
+      assert.equal(div[0][0].firstChild.nodeType, document.TEXT_NODE);
+      assert.equal(div[0][1].firstChild.nodeType, document.TEXT_NODE);
+    },
+    /*
+    https://github.com/tmpvar/jsdom/issues/276
+    "clears the text content as null": function(div) {
+      div.text(null);
+      assert.equal(div[0][0].textContent, "");
+      assert.equal(div[0][1].textContent, "");
+    },
+    "clears the text content as a function": function(div) {
+      div.text(function() { return null; });
+      assert.equal(dv[0][0].textContent, "");
+      assert.equal(dv[0][1].textContent, "");
+    },
+    */
+    "ignores null nodes": function(div) {
+      div[0][0].textContent = "foo";
+      var some = d3.selectAll("div");
+      some[0][0] = null;
+      some.text("bar");
+      assert.equal(div[0][0].textContent, "foo");
+      assert.equal(div[0][1].textContent, "bar");
+    },
+    "returns the current selection": function(div) {
+      assert.isTrue(div.text("hello") === div);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/split-test.js b/static/vendor/d3-2.8.1/test/core/split-test.js
new file mode 100755 (executable)
index 0000000..d37b0dd
--- /dev/null
@@ -0,0 +1,33 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.split");
+
+suite.addBatch({
+  "split": {
+    topic: function() {
+      return d3.split;
+    },
+    "splits an array into arrays": function(split) {
+      var a = {}, b = {}, c = {}, d = {}, e = {}, f = {};
+      assert.deepEqual(d3.split([a, null, b, c, undefined, d, e, f]), [[a], [b, c], [d, e, f]]);
+    },
+    "splits using the specified function": function(split) {
+      assert.deepEqual(d3.split([1, 0, 2, 3, -1, 4, 5, 6], function(d) { return d <= 0; }), [[1], [2, 3], [4, 5, 6]]);
+      assert.deepEqual(d3.split([1, 0, 2, 3, -1, 4, 5, 6], function(d, i) { return i & 1; }), [[1], [2], [-1], [5]]);
+    },
+    "ignores delimiters at the start or end": function(split) {
+      var a = {}, b = {}, c = {};
+      assert.deepEqual(d3.split([null, a, b, null, c]), [[a, b], [c]]);
+      assert.deepEqual(d3.split([a, b, null, c, null]), [[a, b], [c]]);
+      assert.deepEqual(d3.split([null, a, b, null, c, null]), [[a, b], [c]]);
+      assert.deepEqual(d3.split([undefined, a, b, undefined, c]), [[a, b], [c]]);
+      assert.deepEqual(d3.split([a, b, undefined, c, undefined]), [[a, b], [c]]);
+      assert.deepEqual(d3.split([undefined, a, b, undefined, c, undefined]), [[a, b], [c]]);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/sum-test.js b/static/vendor/d3-2.8.1/test/core/sum-test.js
new file mode 100755 (executable)
index 0000000..2d358bc
--- /dev/null
@@ -0,0 +1,46 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.sum");
+
+suite.addBatch({
+  "sum": {
+    topic: function() {
+      return d3.sum;
+    },
+    "sums numbers": function(sum) {
+      assert.equal(d3.sum([1]), 1);
+      assert.equal(d3.sum([5, 1, 2, 3, 4]), 15);
+      assert.equal(d3.sum([20, 3]), 23);
+      assert.equal(d3.sum([3, 20]), 23);
+    },
+    "sums types that can be coerced to numbers": function(sum) {
+      assert.equal(d3.sum(["20", "3"]), 23);
+      assert.equal(d3.sum(["3", "20"]), 23);
+      assert.equal(d3.sum(["3", 20]), 23);
+      assert.equal(d3.sum([20, "3"]), 23);
+      assert.equal(d3.sum([3, "20"]), 23);
+      assert.equal(d3.sum(["20", 3]), 23);
+    },
+    "ignores non-numeric types": function(sum) {
+      assert.equal(d3.sum(["a", "b", "c"]), 0);
+      assert.equal(d3.sum(["a", 1, "2"]), 3);
+    },
+    "ignores null, undefined and NaN": function(sum) {
+      assert.equal(d3.sum([NaN, 1, 2, 3, 4, 5]), 15);
+      assert.equal(d3.sum([1, 2, 3, 4, 5, NaN]), 15);
+      assert.equal(d3.sum([10, null, 3, undefined, 5, NaN]), 18);
+    },
+    "applies the optional acccessor function": function(sum) {
+      assert.equal(d3.sum([[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]], function(d) { return d3.sum(d); }), 45);
+      assert.equal(d3.sum([1, 2, 3, 4, 5], function(d, i) { return i; }), 10);
+    },
+    "returns zero for the empty array": function(sum) {
+      assert.equal(d3.sum([]), 0);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/text-test.js b/static/vendor/d3-2.8.1/test/core/text-test.js
new file mode 100755 (executable)
index 0000000..7cd7c47
--- /dev/null
@@ -0,0 +1,47 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.text");
+
+suite.addBatch({
+  "text": {
+    topic: function() {
+      var cb = this.callback;
+      return d3.text("examples/data/sample.txt", function(text) {
+        cb(null, text);
+      });
+    },
+    "invokes the callback with the loaded text": function(text) {
+      assert.equal(text, "Hello, world!\n");
+    },
+    "does not override the mime type by default": function(text) {
+      assert.isUndefined(XMLHttpRequest._last._info.mimeType);
+    },
+    "": {
+      topic: function() {
+        var cb = this.callback;
+        return d3.text("examples/data/sample.txt", "text/plain+sample", function(text) {
+          cb(null, text);
+        });
+      },
+      "observes the optional mime type": function(text) {
+        assert.equal(XMLHttpRequest._last._info.mimeType, "text/plain+sample");
+      }
+    },
+    " ": {
+      topic: function() {
+        var cb = this.callback;
+        return d3.text("//does/not/exist.txt", function(text) {
+          cb(null, text);
+        });
+      },
+      "invokes the callback with null when an error occurs": function(text) {
+        assert.isNull(text);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/timer-test.js b/static/vendor/d3-2.8.1/test/core/timer-test.js
new file mode 100755 (executable)
index 0000000..f191a97
--- /dev/null
@@ -0,0 +1,61 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.timer");
+
+suite.addBatch({
+  "timer": {
+    topic: function() {
+      return d3.timer;
+    },
+    "with no delay": {
+      topic: timer(),
+      "first calls after 17 ms or less": function(info) {
+        assert.inDelta(info.start - info.scheduled, 17, 20);
+      },
+      "calls until the function returns true": function(info) {
+        assert.equal(info.count, 4);
+      },
+      "calls every 17 ms": function(info) {
+        assert.inDelta(info.stop - info.start, 17 * 3, 20);
+      }
+    },
+    "with a specified delay": {
+      topic: timer(250),
+      "first calls after the delay": function(info) {
+        assert.inDelta(info.start - info.scheduled, 250, 20);
+      },
+      "calls until the function returns true": function(info) {
+        assert.equal(info.count, 4);
+      },
+      "calls every 17 ms": function(info) {
+        assert.inDelta(info.stop - info.start, 17 * 3, 20);
+      }
+    }
+  }
+});
+
+function timer(delay) {
+  var args = Array.prototype.slice.call(arguments);
+  return function() {
+    var cb = this.callback,
+        info = {scheduled: Date.now(), count: 0};
+
+    args.unshift(function() {
+      var count = ++info.count;
+      if (count === 1) {
+        info.start = Date.now();
+      } else if (count === 4) {
+        info.stop = Date.now();
+        cb(null, info);
+        return true;
+      }
+    });
+
+    d3.timer.apply(this, args);
+  };
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-attr.js b/static/vendor/d3-2.8.1/test/core/transition-test-attr.js
new file mode 100755 (executable)
index 0000000..79bb62b
--- /dev/null
@@ -0,0 +1,53 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    var cb = this.callback;
+
+    var s = d3.select("body").append("div")
+        .attr("display", "none")
+        .attr("font-size", "20px")
+        .attr("width", 20)
+        .attr("color", "red")
+        .attr("xlink:type", "simple")
+        .attr("xlink:href", "http://mbostock.github.com/d3/");
+
+    var t = s.transition()
+        .attr("display", null)
+        .attr("font-size", function() { return null; })
+        .attr("display", null)
+        .attr("width", 100)
+        .attr("width", 200)
+        .attr("color", function() { return "green"; })
+        .attr("xlink:href", null)
+        .attr("xlink:type", function() { return null; })
+        .each("end", function() { cb(null, {selection: s, transition: t}); });
+  },
+  "defines the corresponding attr tween": function(result) {
+    assert.typeOf(result.transition.tween("attr.width"), "function");
+    assert.typeOf(result.transition.tween("attr.color"), "function");
+  },
+  "the last attr operator takes precedence": function(result) {
+    assert.equal(result.selection.attr("width"), "200");
+  },
+  "sets an attribute as a number": function(result) {
+    assert.equal(result.selection.attr("width"), "200");
+  },
+  "sets an attribute as a function": function(result) {
+    assert.equal(result.selection.attr("color"), "#008000");
+  },
+  "removes an attribute using a constant null": function(result) {
+    assert.equal(result.selection.attr("display"), "");
+  },
+  "removes an attribute using a function null": function(result) {
+    assert.equal(result.selection.attr("font-size"), "");
+  },
+  "removes a namespaced attribute using a constant null": function(result) {
+    assert.equal(result.selection.attr("xlink:href"), "");
+  },
+  "removes a namespaced attribute using a function null": function(result) {
+    assert.equal(result.selection.attr("xlink:type"), "");
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-attrTween.js b/static/vendor/d3-2.8.1/test/core/transition-test-attrTween.js
new file mode 100755 (executable)
index 0000000..a0cbe69
--- /dev/null
@@ -0,0 +1,66 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    var cb = this.callback,
+        dd = [],
+        ii = [],
+        tt = [],
+        vv = [];
+
+    var s = d3.select("body").html("").append("div").selectAll("div")
+        .data(["red", "green"])
+      .enter().append("div")
+        .attr("color", function(d) { return d3.rgb(d)+""; });
+
+    var t = s.transition()
+        .attrTween("color", tween);
+
+    function tween(d, i, v) {
+      dd.push(d);
+      ii.push(i);
+      vv.push(v);
+      if (tt.push(this) >= 2) cb(null, {
+        selection: s,
+        transition: t,
+        data: dd,
+        index: ii,
+        value: vv,
+        context: tt
+      });
+      return i && d3.interpolateHsl(v, "blue");
+    }
+  },
+
+  // The order here is a bit brittle: because the transition has zero delay,
+  // it's invoking the start event immediately for all nodes, rather than
+  // pushing each node onto the timer queue (which would reverse the order of
+  // callbacks). The order in which tweens are invoked is undefined, so perhaps
+  // we should sort the expected and actual values before comparing.
+
+  "defines the corresponding attr tween": function(result) {
+    assert.typeOf(result.transition.tween("attr.color"), "function");
+  },
+  "invokes the tween function": function(result) {
+    assert.deepEqual(result.data, ["red", "green"], "expected data, got {actual}");
+    assert.deepEqual(result.index, [0, 1], "expected data, got {actual}");
+    assert.deepEqual(result.value, ["#ff0000", "#008000"], "expected value, got {actual}");
+    assert.domEqual(result.context[0], result.selection[0][0], "expected this, got {actual}");
+    assert.domEqual(result.context[1], result.selection[0][1], "expected this, got {actual}");
+  },
+
+  "end": {
+    topic: function(result) {
+      var cb = this.callback;
+      result.transition.each("end", function(d, i) { if (i >= 1) cb(null, result); });
+    },
+    "uses the returned interpolator": function(result) {
+      assert.equal(result.selection[0][1].getAttribute("color"), "#0000ff");
+    },
+    "does nothing if the interpolator is falsey": function(result) {
+      assert.equal(result.selection[0][0].getAttribute("color"), "#ff0000");
+    }
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-call.js b/static/vendor/d3-2.8.1/test/core/transition-test-call.js
new file mode 100755 (executable)
index 0000000..3bc8d41
--- /dev/null
@@ -0,0 +1,32 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    return d3.select("body").append("div").transition();
+  },
+  "calls the function once": function(transition) {
+    var count = 0;
+    transition.call(function() { ++count; });
+    assert.equal(count, 1);
+  },
+  "passes any optional arguments": function(transition) {
+    var abc;
+    transition.call(function(selection, a, b, c) { abc = [a, b, c]; }, "a", "b", "c");
+    assert.deepEqual(abc, ["a", "b", "c"]);
+  },
+  "passes the transition as the first argument": function(transition) {
+    var t;
+    transition.call(function(x) { t = x; });
+    assert.isTrue(t === transition);
+  },
+  "uses the transition as the context": function(transition) {
+    var t;
+    transition.call(function() { t = this; });
+    assert.isTrue(t === transition);
+  },
+  "returns the current transition": function(transition) {
+    assert.isTrue(transition.call(function() {}) === transition);
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-delay.js b/static/vendor/d3-2.8.1/test/core/transition-test-delay.js
new file mode 100755 (executable)
index 0000000..4f244e3
--- /dev/null
@@ -0,0 +1,58 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    return d3.select("body").html("").selectAll()
+        .data(["foo", "bar"])
+      .enter().append("div")
+        .attr("class", String);
+  },
+  "defaults to zero": function(selection) {
+    var t = selection.transition();
+    assert.strictEqual(t[0][0].delay, 0);
+    assert.strictEqual(t[0][1].delay, 0);
+  },
+  "can specify delay as a number": function(selection) {
+    var t = selection.transition().delay(150);
+    assert.strictEqual(t[0][0].delay, 150);
+    assert.strictEqual(t[0][1].delay, 150);
+    t.delay(250);
+    assert.strictEqual(t[0][0].delay, 250);
+    assert.strictEqual(t[0][1].delay, 250);
+  },
+  "can specify delay as a negative number": function(selection) {
+    var t = selection.transition().delay(-250);
+    assert.strictEqual(t[0][0].delay, -250);
+    assert.strictEqual(t[0][1].delay, -250);
+  },
+  "NaN delays are treated as 0ms": function(selection) {
+    var t = selection.transition().delay(NaN);
+    assert.strictEqual(t[0][0].delay, 0);
+    assert.strictEqual(t[0][1].delay, 0);
+  },
+  "floating-point durations are floored to integers": function(selection) {
+    var t = selection.transition().delay(14.6);
+    assert.strictEqual(t[0][0].delay, 14);
+    assert.strictEqual(t[0][1].delay, 14);
+    var t = selection.transition().delay("16.99");
+    assert.strictEqual(t[0][0].delay, 16);
+    assert.strictEqual(t[0][1].delay, 16);
+  },
+  "can specify delay as a function": function(selection) {
+    var dd = [], ii = [], tt = [], t = selection.transition().delay(f);
+    function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return i * 20; }
+    assert.strictEqual(t[0][0].delay, 0);
+    assert.strictEqual(t[0][1].delay, 20);
+    assert.deepEqual(dd, ["foo", "bar"], "expected data, got {actual}");
+    assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
+    assert.domEqual(tt[0], t[0][0].node, "expected this, got {actual}");
+    assert.domEqual(tt[1], t[0][1].node, "expected this, got {actual}");
+  },
+  "coerces delay to a number": function(selection) {
+    var t = selection.transition().delay("150");
+    assert.strictEqual(t[0][0].delay, 150);
+    assert.strictEqual(t[0][1].delay, 150);
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-duration.js b/static/vendor/d3-2.8.1/test/core/transition-test-duration.js
new file mode 100755 (executable)
index 0000000..bce5185
--- /dev/null
@@ -0,0 +1,62 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    return d3.select("body").html("").selectAll()
+        .data(["foo", "bar"])
+      .enter().append("div")
+        .attr("class", String);
+  },
+  "defaults to 250 milliseconds": function(selection) {
+    var t = selection.transition();
+    assert.strictEqual(t[0][0].duration, 250);
+    assert.strictEqual(t[0][1].duration, 250);
+  },
+  "can specify duration as a number": function(selection) {
+    var t = selection.transition().duration(150);
+    assert.strictEqual(t[0][0].duration, 150);
+    assert.strictEqual(t[0][1].duration, 150);
+    t.duration(50);
+    assert.strictEqual(t[0][0].duration, 50);
+    assert.strictEqual(t[0][1].duration, 50);
+  },
+  "NaN, zero, or negative durations are treated as 1ms": function(selection) {
+    var t = selection.transition().duration(NaN);
+    assert.strictEqual(t[0][0].duration, 1);
+    assert.strictEqual(t[0][1].duration, 1);
+    t.duration(0);
+    assert.strictEqual(t[0][0].duration, 1);
+    assert.strictEqual(t[0][1].duration, 1);
+    t.duration(-10);
+    assert.strictEqual(t[0][0].duration, 1);
+    assert.strictEqual(t[0][1].duration, 1);
+    t.duration(-Infinity);
+    assert.strictEqual(t[0][0].duration, 1);
+    assert.strictEqual(t[0][1].duration, 1);
+  },
+  "floating-point durations are floored to integers": function(selection) {
+    var t = selection.transition().duration(14.6);
+    assert.strictEqual(t[0][0].duration, 14);
+    assert.strictEqual(t[0][1].duration, 14);
+    var t = selection.transition().duration("16.99");
+    assert.strictEqual(t[0][0].duration, 16);
+    assert.strictEqual(t[0][1].duration, 16);
+  },
+  "can specify duration as a function": function(selection) {
+    var dd = [], ii = [], tt = [], t = selection.transition().duration(f);
+    function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return i * 20 + 10; }
+    assert.strictEqual(t[0][0].duration, 10);
+    assert.strictEqual(t[0][1].duration, 30);
+    assert.deepEqual(dd, ["foo", "bar"], "expected data, got {actual}");
+    assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
+    assert.domEqual(tt[0], t[0][0].node, "expected this, got {actual}");
+    assert.domEqual(tt[1], t[0][1].node, "expected this, got {actual}");
+  },
+  "coerces duration to a number": function(selection) {
+    var t = selection.transition().duration("150");
+    assert.strictEqual(t[0][0].duration, 150);
+    assert.strictEqual(t[0][1].duration, 150);
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-each.js b/static/vendor/d3-2.8.1/test/core/transition-test-each.js
new file mode 100755 (executable)
index 0000000..ff64c1c
--- /dev/null
@@ -0,0 +1,165 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  "start": {
+    topic: function() {
+      var cb = this.callback,
+          div = d3.select("body").html("").selectAll().data(["foo", "bar"]).enter().append("div").attr("class", String),
+          transition = div.transition().delay(150),
+          then = Date.now(),
+          n = 0,
+          calls = [],
+          context = [],
+          data = [],
+          index = [],
+          count = [],
+          delay = [];
+
+      // A callback to verify that multiple callbacks are allowed.
+      transition.each("start.other", function() {
+        ++n;
+      });
+
+      // A callback which captures arguments and context.
+      transition.each("start", function(d, i) {
+        context.push(this);
+        data.push(d);
+        index.push(i);
+        count.push(++n);
+        delay.push(Date.now() - then);
+        if (n >= 4) cb(null, {
+          selection: div,
+          delay: delay,
+          context: context,
+          data: data,
+          index: index,
+          count: count,
+          id: transition.id
+        });
+      });
+    },
+
+    "invokes the listener after the specified delay": function(result) {
+      assert.inDelta(result.delay, [150, 150], 20);
+    },
+    "invokes each listener exactly once, in order": function(result) {
+      assert.deepEqual(result.count, [2, 4]);
+    },
+
+    // For the same node, listeners will be called back in order, according to
+    // the implementation of d3.dispatch. However, the order of callbacks across
+    // nodes is not guaranteed; currently, callbacks are in reverse order if
+    // they share the same delay, because of the timer queue. I suppose it'd be
+    // slightly better if the callbacks were invoked in node order (consistent
+    // with selections), but since these callbacks happen asynchronously I don't
+    // think the API needs to guarantee the order of callbacks.
+
+    "uses the node as the context": function(result) {
+      assert.domEqual(result.context[1], result.selection[0][0]);
+      assert.domEqual(result.context[0], result.selection[0][1]);
+    },
+    "passes the data and index to the function": function(result) {
+      assert.deepEqual(result.data, ["bar", "foo"], "expected data, got {actual}");
+      assert.deepEqual(result.index, [1, 0], "expected index, got {actual}");
+    },
+
+    "sets an exclusive lock on transitioning nodes": function(result) {
+      var id = result.id;
+      assert.isTrue(id > 0);
+      assert.equal(result.selection[0][0].__transition__.count, 1);
+      assert.equal(result.selection[0][1].__transition__.count, 1);
+      assert.equal(result.selection[0][0].__transition__.active, id);
+      assert.equal(result.selection[0][1].__transition__.active, id);
+    }
+  },
+
+  "end": {
+    topic: function() {
+      var cb = this.callback,
+          div = d3.select("body").html("").selectAll().data(["foo", "bar"]).enter().append("div").attr("class", String),
+          transition = div.transition().duration(150),
+          then = Date.now(),
+          n = 0,
+          calls = [],
+          context = [],
+          data = [],
+          index = [],
+          count = [],
+          delay = [];
+
+      // A callback to verify that multiple callbacks are allowed.
+      transition.each("end.other", function() {
+        ++n;
+      });
+
+      // A callback which captures arguments and context.
+      transition.each("end", function(d, i) {
+        context.push(this);
+        data.push(d);
+        index.push(i);
+        count.push(++n);
+        delay.push(Date.now() - then);
+        if (n >= 4) cb(null, {
+          selection: div,
+          delay: delay,
+          context: context,
+          data: data,
+          index: index,
+          count: count,
+          id: transition.id
+        });
+      });
+    },
+
+    "invokes the listener after the specified delay": function(result) {
+      assert.inDelta(result.delay, [150, 150], 20);
+    },
+    "invokes each listener exactly once, in order": function(result) {
+      assert.deepEqual(result.count, [2, 4]);
+    },
+
+    // For the same node, listeners will be called back in order, according to
+    // the implementation of d3.dispatch. However, the order of callbacks across
+    // nodes is not guaranteed; currently, callbacks are in reverse order if
+    // they share the same delay, because of the timer queue. I suppose it'd be
+    // slightly better if the callbacks were invoked in node order (consistent
+    // with selections), but since these callbacks happen asynchronously I don't
+    // think the API needs to guarantee the order of callbacks.
+
+    "uses the node as the context": function(result) {
+      assert.domEqual(result.context[1], result.selection[0][0]);
+      assert.domEqual(result.context[0], result.selection[0][1]);
+    },
+    "passes the data and index to the function": function(result) {
+      assert.deepEqual(result.data, ["bar", "foo"], "expected data, got {actual}");
+      assert.deepEqual(result.index, [1, 0], "expected index, got {actual}");
+    },
+
+    "deletes the transition lock after end": function(result) {
+      assert.isFalse("__transition__" in result.selection[0][0]);
+      assert.isFalse("__transition__" in result.selection[0][1]);
+    },
+
+    // I'd like to test d3.timer.flush here, but unfortunately there's a bug in
+    // Vows where it really doesn't like to receive multiple callbacks from
+    // different tests at the same time!
+
+    "sequenced": {
+      topic: function(result) {
+        var cb = this.callback,
+            node = result.selection[0][0],
+            id = result.id;
+        d3.select(node).transition().delay(150).each("start", function() {
+          cb(null, {id: id, node: this});
+        });
+      },
+      "inherits the same transition id": function(result) {
+        assert.isTrue(result.id > 0);
+        assert.equal(result.node.__transition__.count, 1);
+        assert.equal(result.node.__transition__.active, result.id);
+      }
+    }
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-id.js b/static/vendor/d3-2.8.1/test/core/transition-test-id.js
new file mode 100755 (executable)
index 0000000..100fbc7
--- /dev/null
@@ -0,0 +1,19 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    return d3.select("body").append("div").transition();
+  },
+  "has a positive integer id": function(transition) {
+    var id = transition.id;
+    assert.isTrue(id > 0);
+    assert.equal(~~id, id);
+  },
+  "increases monotonically across transitions": function(transition) {
+    var t0 = d3.select("body").append("div").transition(),
+        t1 = d3.select("body").append("div").transition();
+    assert.isTrue(t1.id > t0.id);
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-remove.js b/static/vendor/d3-2.8.1/test/core/transition-test-remove.js
new file mode 100755 (executable)
index 0000000..25218b1
--- /dev/null
@@ -0,0 +1,45 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    var cb = this.callback,
+        t = d3.select("body").append("div").transition().remove();
+    t.each("end", function() { cb(null, t); });
+  },
+  "removes the selected elements": function(transition) {
+    assert.domEqual(transition[0][0].node.parentNode, null);
+  },
+
+  "when the element is already removed": {
+    topic: function() {
+      var cb = this.callback,
+          t = d3.select("body").append("div").remove().transition().remove();
+      t.each("end", function() { cb(null, t); });
+    },
+    "does nothing": function(transition) {
+      assert.domEqual(transition[0][0].node.parentNode, null);
+    }
+  },
+
+  // Since these tests are triggered inside the end event of the above topic,
+  // transitions will inherit ids from the original transition. But we want to
+  // test concurrent transitions, so we use timeouts to avoid inheritance. This
+  // test also verifies that if multiple transitions are created at the same
+  // time, the last transition becomes the owner.
+
+  "when another transition is scheduled": {
+    topic: function() {
+      var cb = this.callback,
+          s = d3.select("body").append("div");
+      setTimeout(function() {
+        s.transition().duration(150).remove().each("end", function() { cb(null, s); });
+        s.transition().delay(250);
+      }, 10);
+    },
+    "does nothing": function(selection) {
+      assert.domEqual(selection[0][0].parentNode, document.body);
+    }
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-select.js b/static/vendor/d3-2.8.1/test/core/transition-test-select.js
new file mode 100755 (executable)
index 0000000..d182e06
--- /dev/null
@@ -0,0 +1,62 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    var s = d3.select("body").append("div").selectAll("div")
+        .data(["one", "two", "three", "four"])
+      .enter().append("div")
+        .attr("class", String);
+
+    s.filter(function(d, i) { return i > 0; }).append("span");
+    s[0][3] = null;
+
+    return s.transition()
+        .delay(function(d, i) { return i * 13; })
+        .duration(function(d, i) { return i * 21; });
+  },
+
+  "selects the first matching element": function(transition) {
+    var t = transition.select("span");
+    assert.domEqual(t[0][1].node.parentNode, transition[0][1].node);
+    assert.domEqual(t[0][2].node.parentNode, transition[0][2].node);
+  },
+  "ignores null elements": function(transition) {
+    var t = transition.select("span");
+    assert.isNull(t[0][3]);
+  },
+  "propagates data to the selected elements": function(transition) {
+    var t = transition.select("span");
+    assert.equal(t[0][1].node.__data__, "two");
+    assert.equal(t[0][2].node.__data__, "three");
+  },
+  "propagates delay to the selected elements": function(transition) {
+    var t = transition.select("span");
+    assert.equal(t[0][1].delay, 13);
+    assert.equal(t[0][2].delay, 26);
+  },
+  "propagates duration to the selected elements": function(transition) {
+    var t = transition.select("span");
+    assert.equal(t[0][1].duration, 21);
+    assert.equal(t[0][2].duration, 42);
+  },
+  "does not propagate data if no data was specified": function(transition) {
+    delete transition[0][1].node.__data__;
+    delete transition[0][1].node.firstChild.__data__;
+    var t = transition.select("span");
+    assert.isUndefined(t[0][1].node.__data__);
+    assert.equal(t[0][2].node.__data__, "three");
+  },
+  "returns null if no match is found": function(transition) {
+    var t = transition.select("span");
+    assert.isNull(t[0][0]);
+  },
+  "inherits transition id": function(transition) {
+    var id = transition.id,
+        t0 = transition.select("span"),
+        t1 = transition.select("span");
+    assert.equal(t0.id, id);
+    assert.equal(t1.id, id);
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-selectAll.js b/static/vendor/d3-2.8.1/test/core/transition-test-selectAll.js
new file mode 100755 (executable)
index 0000000..fd1d1ed
--- /dev/null
@@ -0,0 +1,58 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    var s = d3.select("body").append("div").selectAll("div")
+        .data(["one", "two", "three", "four"])
+      .enter().append("div")
+        .attr("class", String);
+
+    s.filter(function(d, i) { return i > 0; }).append("span");
+    s.filter(function(d, i) { return i > 1; }).append("span");
+    s[0][3] = null;
+
+    return s.transition()
+        .delay(function(d, i) { return i * 13; })
+        .duration(function(d, i) { return i * 21; });
+  },
+
+  "selects all matching elements": function(transition) {
+    var t = transition.selectAll("span");
+    assert.domEqual(t[1][0].node.parentNode, transition[0][1].node);
+    assert.domEqual(t[2][0].node.parentNode, transition[0][2].node);
+    assert.domEqual(t[2][1].node.parentNode, transition[0][2].node);
+  },
+  "ignores null elements": function(transition) {
+    var t = transition.selectAll("span");
+    assert.equal(t.length, 3);
+  },
+  "propagates delay to the selected elements": function(transition) {
+    var t = transition.selectAll("span");
+    assert.domEqual(t[1][0].delay, 13);
+    assert.domEqual(t[2][0].delay, 26);
+    assert.domEqual(t[2][1].delay, 26);
+  },
+  "propagates duration to the selected elements": function(transition) {
+    var t = transition.selectAll("span");
+    assert.domEqual(t[1][0].duration, 21);
+    assert.domEqual(t[2][0].duration, 42);
+    assert.domEqual(t[2][1].duration, 42);
+  },
+  "returns empty if no match is found": function(transition) {
+    var t = transition.selectAll("span");
+    assert.isEmpty(t[0]);
+  },
+  "inherits transition id": function(transition) {
+    var id = transition.id,
+        t0 = transition.selectAll("span"),
+        t1 = transition.selectAll("span");
+    assert.equal(t0.id, id);
+    assert.equal(t1.id, id);
+  },
+  "groups are not instances of NodeList": function(transition) {
+    var t = transition.selectAll(function() { return this.getElementsByClassName("span"); });
+    assert.isFalse(t[0] instanceof window.NodeList);
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-style.js b/static/vendor/d3-2.8.1/test/core/transition-test-style.js
new file mode 100755 (executable)
index 0000000..6888960
--- /dev/null
@@ -0,0 +1,48 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    var cb = this.callback;
+
+    var s = d3.select("body").append("div")
+        .style("background-color", "white")
+        .style("color", "red")
+        .style("display", "none")
+        .style("font-size", "20px");
+
+    var t = s.transition()
+        .style("display", null)
+        .style("font-size", function() { return null; })
+        .style("display", null)
+        .style("background-color", "green")
+        .style("background-color", "red")
+        .style("color", function() { return "green"; }, "important")
+        .each("end", function() { cb(null, {selection: s, transition: t}); });
+  },
+  "defines the corresponding style tween": function(result) {
+    assert.typeOf(result.transition.tween("style.background-color"), "function");
+    assert.typeOf(result.transition.tween("style.color"), "function");
+  },
+  "the last style operator takes precedence": function(result) {
+    assert.equal(result.selection.style("background-color"), "#ff0000");
+  },
+  "sets a property as a string": function(result) {
+    assert.equal(result.selection.style("background-color"), "#ff0000");
+  },
+  "sets a property as a function": function(result) {
+    assert.equal(result.selection.style("color"), "#008000");
+  },
+  "observes the specified priority": function(result) {
+    var style = result.selection.node().style;
+    assert.equal(style.getPropertyPriority("background-color"), "");
+    assert.equal(style.getPropertyPriority("color"), "important");
+  },
+  "removes a property using a constant null": function(result) {
+    assert.equal(result.selection.style("display"), "");
+  },
+  "removes a property using a function null": function(result) {
+    assert.equal(result.selection.style("font-size"), "");
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-styleTween.js b/static/vendor/d3-2.8.1/test/core/transition-test-styleTween.js
new file mode 100755 (executable)
index 0000000..7e906b1
--- /dev/null
@@ -0,0 +1,72 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    var cb = this.callback,
+        dd = [],
+        ii = [],
+        tt = [],
+        vv = [],
+        fails = 0;
+
+    var s = d3.select("body").html("").append("div").selectAll("div")
+        .data(["red", "green"])
+      .enter().append("div")
+        .style("background-color", function(d) { return d3.rgb(d)+""; });
+
+    var t = s.transition()
+        .styleTween("background-color", function() { ++fails; })
+        .styleTween("background-color", tween);
+
+    function tween(d, i, v) {
+      dd.push(d);
+      ii.push(i);
+      vv.push(v);
+      if (tt.push(this) >= 2) cb(null, {
+        selection: s,
+        transition: t,
+        data: dd,
+        index: ii,
+        value: vv,
+        context: tt,
+        fails: fails
+      });
+      return i && d3.interpolateHsl(v, "blue");
+    }
+  },
+
+  // The order here is a bit brittle: because the transition has zero delay,
+  // it's invoking the start event immediately for all nodes, rather than
+  // pushing each node onto the timer queue (which would reverse the order of
+  // callbacks). The order in which tweens are invoked is undefined, so perhaps
+  // we should sort the expected and actual values before comparing.
+
+  "defines the corresponding style tween": function(result) {
+    assert.typeOf(result.transition.tween("style.background-color"), "function");
+  },
+  "the last style tween takes precedence": function(result) {
+    assert.equal(result.fails, 0);
+  },
+  "invokes the tween function": function(result) {
+    assert.deepEqual(result.data, ["red", "green"], "expected data, got {actual}");
+    assert.deepEqual(result.index, [0, 1], "expected data, got {actual}");
+    assert.deepEqual(result.value, ["#ff0000", "#008000"], "expected value, got {actual}");
+    assert.domEqual(result.context[0], result.selection[0][0], "expected this, got {actual}");
+    assert.domEqual(result.context[1], result.selection[0][1], "expected this, got {actual}");
+  },
+
+  "end": {
+    topic: function(result) {
+      var cb = this.callback;
+      result.transition.each("end", function(d, i) { if (i >= 1) cb(null, result); });
+    },
+    "uses the returned interpolator": function(result) {
+      assert.equal(result.selection[0][1].style.getPropertyValue("background-color"), "#0000ff");
+    },
+    "does nothing if the interpolator is falsey": function(result) {
+      assert.equal(result.selection[0][0].style.getPropertyValue("background-color"), "#ff0000");
+    }
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-text.js b/static/vendor/d3-2.8.1/test/core/transition-test-text.js
new file mode 100755 (executable)
index 0000000..27f968d
--- /dev/null
@@ -0,0 +1,29 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    return d3.select("body").append("div").text("foo").transition().text("bar");
+  },
+  "sets the text tween": function(div) {
+    assert.typeOf(div.tween("text"), "function");
+  },
+  "start": {
+    topic: function(div) {
+      var cb = this.callback,
+          tween = div.tween("text");
+      div.tween("text", function() {
+        var result = tween.apply(this, arguments);
+        cb(null, {transition: div, tween: result});
+        return result;
+      });
+    },
+    "sets the text content as a string": function(result) {
+      assert.equal(result.transition[0][0].node.textContent, "bar");
+    },
+    "does not interpolate text": function(result) {
+      assert.isTrue(!result.tween);
+    }
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-time.js b/static/vendor/d3-2.8.1/test/core/transition-test-time.js
new file mode 100755 (executable)
index 0000000..1ff4c7b
--- /dev/null
@@ -0,0 +1,35 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    return d3.select("body").append("div").transition();
+  },
+  "is approximately equal to now": function(transition) {
+    var time = transition.time;
+    assert.inDelta(time, Date.now(), 20);
+  },
+  "increases monotonically across transitions": function(transition) {
+    var now = Date.now, then = Date.now();
+    try {
+      Date.now = function() { return ++then; };
+      var t0 = d3.select("body").append("div").transition(),
+          t1 = d3.select("body").append("div").transition();
+      assert.isTrue(t1.time > t0.time);
+    } finally {
+      Date.now = now;
+    }
+  },
+  "is inherited by subtransitions": function(transition) {
+    var now = Date.now, then = Date.now();
+    try {
+      Date.now = function() { return ++then; };
+      var t0 = d3.select("body").append("div").transition(),
+          t1 = t0.transition();
+      assert.equal(t1.time, t0.time);
+    } finally {
+      Date.now = now;
+    }
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-transition.js b/static/vendor/d3-2.8.1/test/core/transition-test-transition.js
new file mode 100755 (executable)
index 0000000..9f4e0e2
--- /dev/null
@@ -0,0 +1,59 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    return d3.select("body").append("div").transition()
+        .delay(100)
+        .duration(150)
+        .ease("bounce");
+  },
+
+  "inherits the delay": function(t1) {
+    var t2 = t1.transition();
+    assert.equal(t2[0][0].delay, 100);
+  },
+  "inherits the duration": function(t1) {
+    var t2 = t1.transition();
+    assert.equal(t2[0][0].duration, 150);
+  },
+  "inherits easing": function(t1) {
+    // TODO how to test this?
+  },
+  "inherits the transition id": function(t1) {
+    var t2 = t1.transition();
+    assert.equal(t2.id, t1.id);
+  },
+
+  "while transitioning": {
+    topic: function(t1) {
+      var t2 = t1.transition(),
+          cb = this.callback;
+      t2.each("start", function() {
+        d3.timer(function() {
+          cb(null, t2);
+          return true;
+        });
+      });
+    },
+    "increments the lock's reference count": function(t2) {
+      assert.isTrue(t2[0][0].node.__transition__.count > 1);
+    }
+  },
+
+  "after transitioning": {
+    topic: function(t1) {
+      var cb = this.callback;
+      t1.each("end", function() {
+        d3.timer(function() {
+          cb(null, t1);
+          return true;
+        }, 50);
+      });
+    },
+    "decrements the lock's reference count": function(t1) {
+      assert.isFalse("__transition__" in t1[0][0].node);
+    }
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test-tween.js b/static/vendor/d3-2.8.1/test/core/transition-test-tween.js
new file mode 100755 (executable)
index 0000000..76ba421
--- /dev/null
@@ -0,0 +1,70 @@
+require("../env");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    var cb = this.callback,
+        dd = [],
+        ii = [],
+        tt = [],
+        fails = 0;
+
+    var s = d3.select("body").append("div").selectAll("div")
+        .data(["red", "green"])
+      .enter().append("div")
+        .text(function(d) { return d3.rgb(d)+""; });
+
+    var t = s.transition()
+        .tween("text", function() { ++fails; })
+        .tween("text", tween);
+
+    function tween(d, i) {
+      dd.push(d);
+      ii.push(i);
+      if (tt.push(this) >= 2) cb(null, {
+        selection: s,
+        transition: t,
+        data: dd,
+        index: ii,
+        context: tt,
+        fails: fails
+      });
+      return i && function(t) {
+        this.textContent = d3.hsl(230, 0.5, t) + "";
+      };
+    }
+  },
+
+  // The order here is a bit brittle: because the transition has zero delay,
+  // it's invoking the start event immediately for all nodes, rather than
+  // pushing each node onto the timer queue (which would reverse the order of
+  // callbacks). The order in which tweens are invoked is undefined, so perhaps
+  // we should sort the expected and actual values before comparing.
+
+  "defines the corresponding tween": function(result) {
+    assert.typeOf(result.transition.tween("text"), "function");
+  },
+  "the last tween takes precedence": function(result) {
+    assert.equal(result.fails, 0);
+  },
+  "invokes the tween function": function(result) {
+    assert.deepEqual(result.data, ["red", "green"], "expected data, got {actual}");
+    assert.deepEqual(result.index, [0, 1], "expected data, got {actual}");
+    assert.domEqual(result.context[0], result.selection[0][0], "expected this, got {actual}");
+    assert.domEqual(result.context[1], result.selection[0][1], "expected this, got {actual}");
+  },
+
+  "end": {
+    topic: function(result) {
+      var cb = this.callback;
+      result.transition.each("end", function(d, i) { if (i >= 1) cb(null, result); });
+    },
+    "uses the returned tweener": function(result) {
+      assert.equal(result.selection[0][1].textContent, "#ffffff");
+    },
+    "does nothing if the tweener is falsey": function(result) {
+      assert.equal(result.selection[0][0].textContent, "#ff0000");
+    }
+  }
+};
diff --git a/static/vendor/d3-2.8.1/test/core/transition-test.js b/static/vendor/d3-2.8.1/test/core/transition-test.js
new file mode 100755 (executable)
index 0000000..871747d
--- /dev/null
@@ -0,0 +1,65 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.transition");
+
+suite.addBatch({
+  "transition": {
+    topic: function() {
+      return d3.transition();
+    },
+    "selects the document": function(transition) {
+      assert.domEqual(transition[0][0].node, document);
+    },
+    "is an instanceof d3.transition": function(transition) {
+      assert.isTrue(transition instanceof d3.transition);
+    },
+    "subselections are also instanceof d3.transition": function(transition) {
+      assert.isTrue(transition.select("body") instanceof d3.transition);
+      assert.isTrue(transition.selectAll("body") instanceof d3.transition);
+    },
+    "transition prototype can be extended": function(transition) {
+      var vv = [];
+      d3.transition.prototype.foo = function(v) { vv.push(v); return this; };
+      transition.select("body").foo(42);
+      assert.deepEqual(vv, [42]);
+      delete d3.transition.prototype.foo;
+    }
+  }
+});
+
+suite.export(module);
+
+var suite = vows.describe("transition");
+
+suite.addBatch({
+
+  // Subtransitions
+  "select": require("./transition-test-select"),
+  "selectAll": require("./transition-test-selectAll"),
+  "transition": require("./transition-test-transition"),
+
+  // Content
+  "attr": require("./transition-test-attr"),
+  "attrTween": require("./transition-test-attrTween"),
+  "style": require("./transition-test-style"),
+  "styleTween": require("./transition-test-styleTween"),
+  "text": require("./transition-test-text"),
+  "remove": require("./transition-test-remove"),
+
+  // Animation
+  "delay": require("./transition-test-delay"),
+  "duration": require("./transition-test-duration"),
+
+  // Control
+  "each": require("./transition-test-each"),
+  "call": require("./transition-test-call"),
+  "tween": require("./transition-test-tween"),
+  "id": require("./transition-test-id"),
+  "time": require("./transition-test-time")
+
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/transpose-test.js b/static/vendor/d3-2.8.1/test/core/transpose-test.js
new file mode 100755 (executable)
index 0000000..5ed8398
--- /dev/null
@@ -0,0 +1,31 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.transpose");
+
+suite.addBatch({
+  "transpose": {
+    topic: function() {
+      return d3.transpose;
+    },
+    "transposes a square matrix": function(transpose) {
+      assert.deepEqual(d3.transpose([[1, 2], [3, 4]]), [[1, 3], [2, 4]]);
+    },
+    "transposes a non-square matrix": function(transpose) {
+      assert.deepEqual(d3.transpose([[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]]), [[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]]);
+    },
+    "transposes a single-row matrix": function(transpose) {
+      assert.deepEqual(d3.transpose([[1, 2, 3, 4, 5]]), [[1], [2], [3], [4], [5]]);
+    },
+    "transposes an empty matrix": function(transpose) {
+      assert.deepEqual(d3.transpose([]), []);
+    },
+    "ignores extra elements given an irregular matrix": function(transpose) {
+      assert.deepEqual(d3.transpose([[1, 2], [3, 4], [5, 6, 7]]), [[1, 3, 5], [2, 4, 6]]);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/values-test.js b/static/vendor/d3-2.8.1/test/core/values-test.js
new file mode 100755 (executable)
index 0000000..ec0cc8e
--- /dev/null
@@ -0,0 +1,34 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.values");
+
+suite.addBatch({
+  "values": {
+    topic: function() {
+      return d3.values;
+    },
+    "enumerates every value": function(values) {
+      assert.deepEqual(values({a: 1, b: 2}), [1, 2]);
+    },
+    "includes values defined on prototypes": function(values) {
+      function abc() {
+        this.a = 1;
+        this.b = 2;
+      }
+      abc.prototype.c = 3;
+      assert.deepEqual(values(new abc()), [1, 2, 3]);
+    },
+    "includes null or undefined values": function(values) {
+      var v = values({a: undefined, b: null, c: NaN});
+      assert.isUndefined(v[0]);
+      assert.isNull(v[1]);
+      assert.isNaN(v[2]);
+      assert.equal(v.length, 3);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/version-test.js b/static/vendor/d3-2.8.1/test/core/version-test.js
new file mode 100755 (executable)
index 0000000..d009e9d
--- /dev/null
@@ -0,0 +1,17 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.version");
+
+suite.addBatch({
+  "semantic versioning": {
+    topic: d3.version,
+    "has the form major.minor.patch": function(version) {
+      assert.match(version, /^[0-9]+\.[0-9]+\.[0-9]+$/);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/xhr-test.js b/static/vendor/d3-2.8.1/test/core/xhr-test.js
new file mode 100755 (executable)
index 0000000..9506744
--- /dev/null
@@ -0,0 +1,55 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.xhr");
+
+suite.addBatch({
+  "xhr": {
+    topic: function() {
+      var cb = this.callback;
+      return d3.xhr("examples/data/sample.txt", function(req) {
+        cb(null, req);
+      });
+    },
+    "makes an asynchronous HTTP request": function(req) {
+      assert.equal(req._info.url, "examples/data/sample.txt");
+      assert.isTrue(req._info.async);
+    },
+    "invokes the callback with the request object": function(req) {
+      assert.equal(req.responseText, "Hello, world!\n");
+    },
+    "does not override the mime type by default": function(req) {
+      assert.isUndefined(req._info.mimeType);
+    },
+    "waits until the request is done": function(req) {
+      assert.equal(req.readyState, 4);
+      assert.equal(req.status, 200);
+    },
+    "": {
+      topic: function() {
+        var cb = this.callback;
+        return d3.xhr("examples/data/sample.txt", "text/plain", function(req) {
+          cb(null, req);
+        });
+      },
+      "observes the optional mime type": function(req) {
+        assert.equal(req._info.mimeType, "text/plain");
+      }
+    },
+    " ": {
+      topic: function() {
+        var cb = this.callback;
+        return d3.xhr("//does/not/exist.txt", function(req) {
+          cb(null, req);
+        });
+      },
+      "invokes the callback with null when an error occurs": function(req) {
+        assert.isNull(req);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/xml-test.js b/static/vendor/d3-2.8.1/test/core/xml-test.js
new file mode 100755 (executable)
index 0000000..2034a2e
--- /dev/null
@@ -0,0 +1,47 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.xml");
+
+suite.addBatch({
+  "xml": {
+    topic: function() {
+      var cb = this.callback;
+      return d3.xml("examples/data/sample.xml", function(xml) {
+        cb(null, xml);
+      });
+    },
+    "invokes the callback with the loaded xml": function(xml) {
+      assert.deepEqual(xml, {_xml: "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<hello>\n  <world name=\"Earth\"/>\n</hello>\n"});
+    },
+    "does not override the mime type by default": function(xml) {
+      assert.isUndefined(XMLHttpRequest._last._info.mimeType);
+    },
+    "": {
+      topic: function() {
+        var cb = this.callback;
+        return d3.xml("examples/data/sample.txt", "application/xml+sample", function(xml) {
+          cb(null, xml);
+        });
+      },
+      "observes the optional mime type": function(xml) {
+        assert.equal(XMLHttpRequest._last._info.mimeType, "application/xml+sample");
+      }
+    },
+    " ": {
+      topic: function() {
+        var cb = this.callback;
+        return d3.xml("//does/not/exist.xml", function(xml) {
+          cb(null, xml);
+        });
+      },
+      "invokes the callback with null when an error occurs": function(xml) {
+        assert.isNull(xml);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/core/zip-test.js b/static/vendor/d3-2.8.1/test/core/zip-test.js
new file mode 100755 (executable)
index 0000000..5b85246
--- /dev/null
@@ -0,0 +1,31 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.zip");
+
+suite.addBatch({
+  "zip": {
+    topic: function() {
+      return d3.zip;
+    },
+    "transposes a square matrix": function(zip) {
+      assert.deepEqual(d3.zip([1, 2], [3, 4]), [[1, 3], [2, 4]]);
+    },
+    "transposes a non-square matrix": function(zip) {
+      assert.deepEqual(d3.zip([1, 2, 3, 4, 5], [2, 4, 6, 8, 10]), [[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]]);
+    },
+    "transposes a single-row matrix": function(zip) {
+      assert.deepEqual(d3.zip([1, 2, 3, 4, 5]), [[1], [2], [3], [4], [5]]);
+    },
+    "transposes an empty matrix": function(zip) {
+      assert.deepEqual(d3.zip(), []);
+    },
+    "ignores extra elements given an irregular matrix": function(zip) {
+      assert.deepEqual(d3.zip([1, 2], [3, 4], [5, 6, 7]), [[1, 3, 5], [2, 4, 6]]);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/csv/csv-test.js b/static/vendor/d3-2.8.1/test/csv/csv-test.js
new file mode 100755 (executable)
index 0000000..c4627fa
--- /dev/null
@@ -0,0 +1,36 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.csv");
+
+suite.addBatch({
+  "csv": {
+    topic: function() {
+      var cb = this.callback;
+      return d3.csv("examples/data/sample.csv", function(csv) {
+        cb(null, csv);
+      });
+    },
+    "invokes the callback with the parsed CSV": function(csv) {
+      assert.deepEqual(csv, [{"Hello":42,"World":"\"fish\""}]);
+    },
+    "overrides the mime type to text/csv": function(csv) {
+      assert.equal(XMLHttpRequest._last._info.mimeType, "text/csv");
+    },
+    "": {
+      topic: function() {
+        var cb = this.callback;
+        return d3.csv("//does/not/exist.csv", function(csv) {
+          cb(null, csv);
+        });
+      },
+      "invokes the callback with null when an error occurs": function(csv) {
+        assert.isNull(csv);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/csv/format-test.js b/static/vendor/d3-2.8.1/test/csv/format-test.js
new file mode 100755 (executable)
index 0000000..b7275c9
--- /dev/null
@@ -0,0 +1,37 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.csv.format");
+
+suite.addBatch({
+  "format": {
+    topic: function() {
+      return d3.csv.format;
+    },
+    "takes an array of arrays as input": function(format) {
+      assert.equal(format([["a", "b", "c"], ["1", "2", "3"]]), "a,b,c\n1,2,3");
+    },
+    "separates lines using unix newline": function(format) {
+      assert.equal(format([[], []]), "\n");
+    },
+    "does not strip whitespace": function(format) {
+      assert.equal(format([["a ", " b", "c"], ["1", "2", "3 "]]), "a , b,c\n1,2,3 ");
+    },
+    "does not quote simple values": function(format) {
+      assert.equal(format([["a"], [1]]), "a\n1");
+    },
+    "escapes double quotes": function(format) {
+      assert.equal(format([["\"fish\""]]), "\"\"\"fish\"\"\"");
+    },
+    "escapes unix newlines": function(format) {
+      assert.equal(format([["new\nline"]]), "\"new\nline\"");
+    },
+    "escapes commas": function(format) {
+      assert.equal(format([["oxford,comma"]]), "\"oxford,comma\"");
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/csv/parse-test.js b/static/vendor/d3-2.8.1/test/csv/parse-test.js
new file mode 100755 (executable)
index 0000000..dffe20d
--- /dev/null
@@ -0,0 +1,99 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.csv.parse");
+
+suite.addBatch({
+  "parse": {
+    topic: function() {
+      return d3.csv.parse;
+    },
+    "returns an array of objects": function(parse) {
+      assert.deepEqual(parse("a,b,c\n1,2,3\n"), [{a: "1", b: "2", c: "3"}]);
+    },
+    "does not strip whitespace": function(parse) {
+      assert.deepEqual(parse("a,b,c\n 1, 2,3\n"), [{a: " 1", b: " 2", c: "3"}]);
+    },
+    "parses quoted values": function(parse) {
+      assert.deepEqual(parse("a,b,c\n\"1\",2,3"), [{a: "1", b: "2", c: "3"}]);
+      assert.deepEqual(parse("a,b,c\n\"1\",2,3\n"), [{a: "1", b: "2", c: "3"}]);
+    },
+    "parses quoted values with quotes": function(parse) {
+      assert.deepEqual(parse("a\n\"\"\"hello\"\"\""), [{a: "\"hello\""}]);
+    },
+    "parses quoted values with newlines": function(parse) {
+      assert.deepEqual(parse("a\n\"new\nline\""), [{a: "new\nline"}]);
+      assert.deepEqual(parse("a\n\"new\rline\""), [{a: "new\rline"}]);
+      assert.deepEqual(parse("a\n\"new\r\nline\""), [{a: "new\r\nline"}]);
+    },
+    "parses unix newlines": function(parse) {
+      assert.deepEqual(parse("a,b,c\n1,2,3\n4,5,\"6\"\n7,8,9"), [
+        {a: "1", b: "2", c: "3"},
+        {a: "4", b: "5", c: "6"},
+        {a: "7", b: "8", c: "9"}
+      ]);
+    },
+    "parses mac newlines": function(parse) {
+      assert.deepEqual(parse("a,b,c\r1,2,3\r4,5,\"6\"\r7,8,9"), [
+        {a: "1", b: "2", c: "3"},
+        {a: "4", b: "5", c: "6"},
+        {a: "7", b: "8", c: "9"}
+      ]);
+    },
+    "parses dos newlines": function(parse) {
+      assert.deepEqual(parse("a,b,c\r\n1,2,3\r\n4,5,\"6\"\r\n7,8,9"), [
+        {a: "1", b: "2", c: "3"},
+        {a: "4", b: "5", c: "6"},
+        {a: "7", b: "8", c: "9"}
+      ]);
+    }
+  },
+  "parseRows": {
+    topic: function() {
+      return d3.csv.parseRows;
+    },
+    "returns an array of arrays": function(parse) {
+      assert.deepEqual(parse("a,b,c\n"), [["a", "b", "c"]]);
+    },
+    "parses quoted values": function(parse) {
+      assert.deepEqual(parse("\"1\",2,3\n"), [["1", "2", "3"]]);
+      assert.deepEqual(parse("\"hello\""), [["hello"]]);
+    },
+    "parses quoted values with quotes": function(parse) {
+      assert.deepEqual(parse("\"\"\"hello\"\"\""), [["\"hello\""]]);
+    },
+    "parses quoted values with newlines": function(parse) {
+      assert.deepEqual(parse("\"new\nline\""), [["new\nline"]]);
+      assert.deepEqual(parse("\"new\rline\""), [["new\rline"]]);
+      assert.deepEqual(parse("\"new\r\nline\""), [["new\r\nline"]]);
+    },
+    "parses unix newlines": function(parse) {
+      assert.deepEqual(parse("a,b,c\n1,2,3\n4,5,\"6\"\n7,8,9"), [
+        ["a", "b", "c"],
+        ["1", "2", "3"],
+        ["4", "5", "6"],
+        ["7", "8", "9"]
+      ]);
+    },
+    "parses mac newlines": function(parse) {
+      assert.deepEqual(parse("a,b,c\r1,2,3\r4,5,\"6\"\r7,8,9"), [
+        ["a", "b", "c"],
+        ["1", "2", "3"],
+        ["4", "5", "6"],
+        ["7", "8", "9"]
+      ]);
+    },
+    "parses dos newlines": function(parse) {
+      assert.deepEqual(parse("a,b,c\r\n1,2,3\r\n4,5,\"6\"\r\n7,8,9"), [
+        ["a", "b", "c"],
+        ["1", "2", "3"],
+        ["4", "5", "6"],
+        ["7", "8", "9"]
+      ]);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/env-assert.js b/static/vendor/d3-2.8.1/test/env-assert.js
new file mode 100755 (executable)
index 0000000..70ecc64
--- /dev/null
@@ -0,0 +1,96 @@
+var assert = require("assert");
+
+assert.inDelta = function(actual, expected, delta, message) {
+  if (!inDelta(actual, expected, delta)) {
+    assert.fail(actual, expected, message || "expected {actual} to be in within *" + delta + "* of {expected}", null, assert.inDelta);
+  }
+};
+
+assert.domNull = function(actual, message) {
+  if (actual !== null) {
+    assert.fail(actual+"", null, message || "expected null, got {actual}", "===", assert.domNull);
+  }
+};
+
+assert.domEqual = function(actual, expected, message) {
+  if (actual !== expected) {
+    assert.fail(actual+"", expected+"", message || "expected {expected}, got {actual}", "===", assert.domEqual);
+  }
+};
+
+assert.rgbEqual = function(actual, r, g, b, message) {
+  if (actual.r !== r || actual.g !== g || actual.b !== b) {
+    assert.fail("rgb(" + actual.r + "," + actual.g + "," + actual.b + ")", "rgb(" + r + ", " + g + ", " + b + ")", message || "expected {expected}, got {actual}", "===", assert.rgbEqual);
+  }
+};
+
+assert.hslEqual = function(actual, h, s, l, message) {
+  if (Math.abs(actual.h - h) > 1e-6 || Math.abs(actual.s - s) > 1e-6 || Math.abs(actual.l - l) > 1e-6) {
+    assert.fail("hsl(" + actual.h + "," + (actual.s * 100) + "%," + (actual.l * 100) + "%)", "hsl(" + h + "," + (s * 100) + "%," + (l * 100) + "%)", message || "expected {expected}, got {actual}", null, assert.hslEqual);
+  }
+};
+
+assert.pathEqual = function(actual, expected, message) {
+  if (!pathEqual(actual, expected)) {
+    assert.fail(formatPath(actual), formatPath(expected), message || "expected {expected}, got {actual}", null, assert.pathEqual);
+  }
+};
+
+function inDelta(actual, expected, delta) {
+  return (Array.isArray(expected) ? inDeltaArray : inDeltaNumber)(actual, expected, delta);
+}
+
+function inDeltaArray(actual, expected, delta) {
+  var n = expected.length, i = -1;
+  if (actual.length !== n) return false;
+  while (++i < n) if (!inDelta(actual[i], expected[i], delta)) return false;
+  return true;
+}
+
+function inDeltaNumber(actual, expected, delta) {
+  return actual >= expected - delta && actual <= expected + delta;
+}
+
+function pathEqual(a, b) {
+  a = parsePath(a);
+  b = parsePath(b);
+  var n = a.length, i = -1, x, y;
+  if (n !== b.length) return false;
+  while (++i < n) {
+    x = a[i];
+    y = b[i];
+    if (typeof x === "string") {
+      if (x !== y) return false;
+    } else if (typeof y !== "number") {
+      return false;
+    } else if (Math.abs(x - y) > 1e-6) {
+      return false;
+    }
+  }
+  return true;
+}
+
+var reNumber = /[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g;
+
+function parsePath(path) {
+  var parts = [];
+  reNumber.lastIndex = 0;
+  for (var i = 0, s0 = 0, s1, m; m = reNumber.exec(path); ++i) {
+    if (m.index) {
+      var part = path.substring(s0, s1 = m.index);
+      if (!/^[, ]$/.test(part)) parts.push(part);
+    }
+    parts.push(parseFloat(m[0]));
+    s0 = reNumber.lastIndex;
+  }
+  if (s0 < path.length) parts.push(path.substring(s0));
+  return parts;
+}
+
+function formatPath(path) {
+  return path.replace(reNumber, formatNumber);
+}
+
+function formatNumber(s) {
+  return Math.abs((s = +s) - Math.floor(s)) < 1e-6 ? Math.floor(s) : s.toFixed(6);
+}
diff --git a/static/vendor/d3-2.8.1/test/env-fragment.js b/static/vendor/d3-2.8.1/test/env-fragment.js
new file mode 100755 (executable)
index 0000000..eeec42b
--- /dev/null
@@ -0,0 +1,8 @@
+var jsdom = require("jsdom");
+
+document.createRange = function() {
+  return {
+    selectNode: function() {},
+    createContextualFragment: function(html) { return jsdom.jsdom(html); }
+  };
+};
diff --git a/static/vendor/d3-2.8.1/test/env-xhr.js b/static/vendor/d3-2.8.1/test/env-xhr.js
new file mode 100755 (executable)
index 0000000..c9a04ab
--- /dev/null
@@ -0,0 +1,55 @@
+var fs = require("fs");
+
+XMLHttpRequest = function() {
+  var self = this,
+      info = self._info = {},
+      headers = {},
+      url;
+
+  // TODO handle file system errors?
+
+  self.open = function(m, u, a) {
+    info.url = u;
+    info.async = a;
+    self.send = a ? read : readSync;
+  };
+
+  self.setRequestHeader = function(n, v) {
+    if (/^Accept$/i.test(n)) info.mimeType = v;
+  };
+
+  function read() {
+    fs.readFile(info.url, "binary", function(e, d) {
+      if (e) {
+        self.status = 404; // assumed
+      } else {
+        self.status = 200;
+        self.responseText = d;
+        self.responseXML = {_xml: d};
+        headers["Content-Length"] = d.length;
+      }
+      self.readyState = 4;
+      XMLHttpRequest._last = self;
+      if (self.onreadystatechange) self.onreadystatechange();
+    });
+  }
+
+  function readSync() {
+    try {
+      var d = fs.readFileSync(info.url, "binary");
+      self.status = 200;
+      self.responseText = d;
+      self.responseXML = {_xml: d};
+      headers["Content-Length"] = d.length;
+    } catch (e) {
+      self.status = 404; // assumed
+    }
+    self.readyState = 4;
+    XMLHttpRequest._last = self;
+    if (self.onreadystatechange) self.onreadystatechange();
+  }
+
+  self.getResponseHeader = function(n) {
+    return headers[n];
+  };
+};
diff --git a/static/vendor/d3-2.8.1/test/env.js b/static/vendor/d3-2.8.1/test/env.js
new file mode 100755 (executable)
index 0000000..25e0ed8
--- /dev/null
@@ -0,0 +1,15 @@
+document = require("jsdom").jsdom("<html><head></head><body></body></html>");
+window = document.createWindow();
+navigator = window.navigator;
+CSSStyleDeclaration = window.CSSStyleDeclaration;
+
+require("../lib/sizzle/sizzle");
+Sizzle = window.Sizzle;
+
+process.env.TZ = "America/Los_Angeles";
+
+require("./env-assert");
+require("./env-xhr");
+require("./env-fragment");
+
+require("../d3.v2");
diff --git a/static/vendor/d3-2.8.1/test/geo/albers-test.js b/static/vendor/d3-2.8.1/test/geo/albers-test.js
new file mode 100755 (executable)
index 0000000..c9431e3
--- /dev/null
@@ -0,0 +1,55 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.geo.albers");
+
+suite.addBatch({
+  "albers": {
+    topic: function() {
+      return d3.geo.albers();
+    },
+    "Arctic": function(albers) {
+      var coords = albers([0, 85]);
+      assert.inDelta(coords[0], 1031.393796, 1e-6);
+      assert.inDelta(coords[1], -714.160436, 1e-6);
+      var lonlat = albers.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    },
+    "Antarctic": function(albers) {
+      var coords = albers([0, -85]);
+      assert.inDelta(coords[0], 2753.458335, 1e-6);
+      assert.inDelta(coords[1],  317.371122, 1e-6);
+      var lonlat = albers.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], -85, 1e-6);
+    },
+    "Hawaii": function(albers) {
+      var coords = albers([-180, 0]);
+      assert.inDelta(coords[0], -984.779405, 1e-6);
+      assert.inDelta(coords[1],  209.571197, 1e-6);
+      var lonlat = albers.invert(coords);
+      assert.inDelta(lonlat[0], -180, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Phillipines": function(albers) {
+      var coords = albers([180, 0]);
+      assert.inDelta(coords[0],   894.435228, 1e-6);
+      assert.inDelta(coords[1], -2927.636630, 1e-6);
+      var lonlat = albers.invert(coords);
+      assert.inDelta(lonlat[0], 180, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Inversion works for non-zero translation": function() {
+      var albers = d3.geo.albers().translate([123, 99]).scale(100),
+          coords = albers([0, 85]),
+          lonlat = albers.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/geo/azimuthal-test.js b/static/vendor/d3-2.8.1/test/geo/azimuthal-test.js
new file mode 100755 (executable)
index 0000000..bc90997
--- /dev/null
@@ -0,0 +1,259 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.geo.azimuthal");
+
+suite.addBatch({
+  "azimuthal.stereographic": {
+    topic: function() {
+      return d3.geo.azimuthal().mode("stereographic").translate([0, 0]).scale(100);
+    },
+    "origin": function(azimuthal) {
+      var coords = azimuthal([0, 0]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Arctic": function(azimuthal) {
+      var coords = azimuthal([0, 85]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], -91.633117, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    },
+    "Antarctic": function(azimuthal) {
+      var coords = azimuthal([0, -85]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 91.633117, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], -85, 1e-6);
+    },
+    "Hawaii": function(azimuthal) {
+      var coords = azimuthal([-180, 0]);
+      assert.equal(coords[0], -Infinity);
+      assert.isTrue(isNaN(coords[1]));
+    },
+    "Phillipines": function(azimuthal) {
+      var coords = azimuthal([180, 0]);
+      assert.equal(coords[0], Infinity);
+      assert.isTrue(isNaN(coords[1]));
+    },
+    "Inversion works for non-zero translation": function() {
+      var azimuthal = d3.geo.azimuthal().mode("stereographic").translate([123, 99]).scale(100),
+          coords = azimuthal([0, 85]),
+          lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    }
+  },
+  "azimuthal.orthographic": {
+    topic: function() {
+      return d3.geo.azimuthal().mode("orthographic").translate([0, 0]).scale(100);
+    },
+    "origin": function(azimuthal) {
+      var coords = azimuthal([0, 0]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Arctic": function(azimuthal) {
+      var coords = azimuthal([0, 85]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], -99.619469, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    },
+    "Antarctic": function(azimuthal) {
+      var coords = azimuthal([0, -85]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 99.619469, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], -85, 1e-6);
+    },
+    "Hawaii": function(azimuthal) {
+      var coords = azimuthal([-180, 0]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Phillipines": function(azimuthal) {
+      var coords = azimuthal([180, 0]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Inversion works for non-zero translation": function() {
+      var azimuthal = d3.geo.azimuthal().mode("orthographic").translate([123, 99]).scale(100),
+          coords = azimuthal([0, 85]),
+          lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    }
+  },
+  "azimuthal.gnomonic": {
+    topic: function() {
+      return d3.geo.azimuthal().mode("gnomonic").translate([0, 0]).scale(100);
+    },
+    "origin": function(azimuthal) {
+      var coords = azimuthal([0, 0]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Arctic": function(azimuthal) {
+      var coords = azimuthal([0, 85]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], -1143.005230, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    },
+    "Antarctic": function(azimuthal) {
+      var coords = azimuthal([0, -85]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 1143.005230, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], -85, 1e-6);
+    },
+    "Hawaii": function(azimuthal) {
+      var coords = azimuthal([-180, 0]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Phillipines": function(azimuthal) {
+      var coords = azimuthal([180, 0]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Inversion works for non-zero translation": function() {
+      var azimuthal = d3.geo.azimuthal().mode("stereographic").translate([123, 99]).scale(100),
+          coords = azimuthal([0, 85]),
+          lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    }
+  },
+  "azimuthal.equidistant": {
+    topic: function() {
+      return d3.geo.azimuthal().mode("equidistant").translate([0, 0]).scale(100);
+    },
+    "origin": function(azimuthal) {
+      var coords = azimuthal([0, 0]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Arctic": function(azimuthal) {
+      var coords = azimuthal([0, 85]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], -148.352986, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    },
+    "Antarctic": function(azimuthal) {
+      var coords = azimuthal([0, -90]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 157.079632, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], -90, 1e-6);
+    },
+    "Hawaii": function(azimuthal) {
+      var coords = azimuthal([-180, 0]);
+      assert.inDelta(coords[0], -314.159265, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], -180, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Phillipines": function(azimuthal) {
+      var coords = azimuthal([180, 0]);
+      assert.inDelta(coords[0], 314.159265, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 180, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Inversion works for non-zero translation": function() {
+      var azimuthal = d3.geo.azimuthal().mode("stereographic").translate([123, 99]).scale(100),
+          coords = azimuthal([0, 85]),
+          lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    }
+  },
+  "azimuthal.equalarea": {
+    topic: function() {
+      return d3.geo.azimuthal().mode("equalarea").translate([0, 0]).scale(100);
+    },
+    "origin": function(azimuthal) {
+      var coords = azimuthal([0, 0]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Arctic": function(azimuthal) {
+      var coords = azimuthal([0, 85]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], -135.118041, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    },
+    "Antarctic": function(azimuthal) {
+      var coords = azimuthal([0, -90]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 141.421356, 1e-6);
+      var lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 180, 1e-6);
+      assert.inDelta(lonlat[1], -90, 1e-6);
+    },
+    "Hawaii": function(azimuthal) {
+      var coords = azimuthal([-180, 0]);
+      assert.equal(coords[0], -Infinity);
+      assert.isTrue(isNaN(coords[1]));
+    },
+    "Phillipines": function(azimuthal) {
+      var coords = azimuthal([180, 0]);
+      assert.equal(coords[0], Infinity);
+      assert.isTrue(isNaN(coords[1]));
+    },
+    "Inversion works for non-zero translation": function() {
+      var azimuthal = d3.geo.azimuthal().mode("stereographic").translate([123, 99]).scale(100),
+          coords = azimuthal([0, 85]),
+          lonlat = azimuthal.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/geo/bonne-test.js b/static/vendor/d3-2.8.1/test/geo/bonne-test.js
new file mode 100755 (executable)
index 0000000..35cdffc
--- /dev/null
@@ -0,0 +1,114 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.geo.bonne");
+
+suite.addBatch({
+  "default instance": {
+    topic: function() {
+      return d3.geo.bonne();
+    },
+    "scale defaults to 200": function(bonne) {
+      assert.equal(bonne.scale(), 200);
+    },
+    "parallel defaults to 45°": function(bonne) {
+      assert.equal(bonne.parallel(), 45);
+    },
+    "origin defaults to [0,0]": function(bonne) {
+      assert.deepEqual(bonne.origin(), [0, 0]);
+    },
+    "translate defaults to [480, 250]": function(bonne) {
+      assert.deepEqual(bonne.translate(), [480, 250]);
+    }
+  },
+
+  "Bonne at 40° parallel": {
+    topic: function() {
+      return d3.geo.bonne().parallel(40);
+    },
+    "Arctic": function(bonne) {
+      var lonlat = [0, 85],
+          coords = bonne(lonlat);
+      assert.inDelta(coords, [480, 92.920367], 1e-6);
+      assert.inDelta(bonne.invert(coords), lonlat, 1e-6);
+    },
+    "Antarctic": function(bonne) {
+      var lonlat = [0, -85],
+          coords = bonne(lonlat);
+      assert.inDelta(coords, [480, 686.332312], 1e-6);
+      assert.inDelta(bonne.invert(coords), lonlat, 1e-6);
+    },
+    "Hawaii": function(bonne) {
+      var lonlat = [-180, 0],
+          coords = bonne(lonlat);
+      assert.inDelta(coords, [103.604887, -22.895998], 1e-6);
+      assert.inDelta(bonne.invert(coords), lonlat, 1e-6);
+    },
+    "Phillipines": function(bonne) {
+      var lonlat = [180, 0],
+          coords = bonne(lonlat);
+      assert.inDelta(coords, [856.395112, -22.895998], 1e-6);
+      assert.inDelta(bonne.invert(coords), lonlat, 1e-6);
+    },
+    "invert observes translation": function() {
+      var bonne = d3.geo.bonne().translate([123, 99]).scale(100),
+          coords = bonne([0, 85]),
+          lonlat = bonne.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    },
+    "invert(project(location)) equals location": function(bonne) {
+      for (var i = -1; i < 20; ++i) {
+        var location = [Math.random() * 360 - 180, Math.random() * 180 - 90];
+        assert.inDelta(location, bonne.invert(bonne(location)), .5);
+      }
+    },
+    "project(invert(point)) equals point": function(bonne) {
+      for (var i = -1; i < 20; ++i) {
+        var point = [Math.random() * 700 + 100, Math.random() * 400 + 50];
+        assert.inDelta(point, bonne(bonne.invert(point)), .5);
+      }
+    }
+  },
+
+  "Werner": {
+    topic: function() {
+      return d3.geo.bonne().parallel(90);
+    },
+    "invert(project(location)) equals location": function(bonne) {
+      for (var i = -1; i < 20; ++i) {
+        var location = [Math.random() * 360 - 180, Math.random() * 180 - 90];
+        assert.inDelta(location, bonne.invert(bonne(location)), .5);
+      }
+    },
+    "project(invert(point)) equals point": function(bonne) {
+      for (var i = -1; i < 20; ++i) {
+        var point = [Math.random() * 700 + 100, Math.random() * 400 + 50];
+        assert.inDelta(point, bonne(bonne.invert(point)), .5);
+      }
+    }
+  },
+
+  "Sinsuoidal": {
+    topic: function() {
+      return d3.geo.bonne().parallel(0);
+    },
+    "invert(project(location)) equals location": function(bonne) {
+      for (var i = -1; i < 20; ++i) {
+        var location = [Math.random() * 360 - 180, Math.random() * 180 - 90];
+        assert.inDelta(location, bonne.invert(bonne(location)), .5);
+      }
+    },
+    "project(invert(point)) equals point": function(bonne) {
+      for (var i = -1; i < 20; ++i) {
+        var point = [Math.random() * 700 + 100, Math.random() * 400 + 50];
+        assert.inDelta(point, bonne(bonne.invert(point)), .5);
+      }
+    }
+  }
+
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/geo/equirectangular-test.js b/static/vendor/d3-2.8.1/test/geo/equirectangular-test.js
new file mode 100755 (executable)
index 0000000..9787484
--- /dev/null
@@ -0,0 +1,48 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.geo.equirectangular");
+
+suite.addBatch({
+  "equirectangular": {
+    topic: function() {
+      return d3.geo.equirectangular();
+    },
+
+    "scale": {
+      "defaults to 500": function(projection) {
+        assert.equal(projection.scale(), 500);
+      },
+      "is coerced to a number": function(projection) {
+        assert.strictEqual(projection.scale("400"), projection);
+        assert.strictEqual(projection.scale(), 400);
+        projection.scale(500);
+      }
+    },
+
+    "translate": {
+      "defaults to [480, 250]": function(projection) {
+        assert.deepEqual(projection.translate(), [480, 250]);
+      },
+      "is coerced to two numbers": function(projection) {
+        assert.strictEqual(projection.translate(["23", "141"]), projection);
+        assert.strictEqual(projection.translate()[0], 23);
+        assert.strictEqual(projection.translate()[1], 141);
+        projection.translate([480, 250]);
+      }
+    },
+
+    "of San Francisco, CA": {
+      "is at location [-122.446, 37.767]": function(projection) {
+        assert.inDelta(projection.invert([310, 198]), [-122.446, 37.767], .5);
+      },
+      "is at point [310, 198]": function(projection) {
+        assert.inDelta(projection([-122.446, 37.767]), [310, 198], .5);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/geo/greatArc-test.js b/static/vendor/d3-2.8.1/test/geo/greatArc-test.js
new file mode 100755 (executable)
index 0000000..d779b32
--- /dev/null
@@ -0,0 +1,39 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.geo.greatArc");
+
+suite.addBatch({
+  "greatArc": {
+    topic: function() {
+      return d3.geo.greatArc();
+    },
+    "distance": function(arc) {
+      assert.equal(arc.distance({source: [0, 0], target: [0, 0]}), 0);
+      assert.inDelta(arc.distance({
+        source: [118 + 24 / 60, 33 + 57 / 60],
+        target: [ 73 + 47 / 60, 40 + 38 / 60]
+      }), 3973 / 6371, .5);
+    },
+    "geodesic": function(arc) {
+      assert.inDelta(arc.precision(7.2)({source: [5, 52], target: [-120, 37]}).coordinates, [
+        [   5,        52      ],
+        [  -3.805036, 57.05083],
+        [ -15.122869, 61.30118],
+        [ -29.396213, 64.34584],
+        [ -46.132729, 65.72409],
+        [ -63.394401, 65.15597],
+        [ -78.854311, 62.76337],
+        [ -91.401599, 58.96701],
+        [-101.190927, 54.21333],
+        [-108.843633, 48.83586],
+        [-114.961152, 43.05231],
+        [-120,        37      ]
+      ], .5);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/geo/mercator-test.js b/static/vendor/d3-2.8.1/test/geo/mercator-test.js
new file mode 100755 (executable)
index 0000000..46ba2e8
--- /dev/null
@@ -0,0 +1,55 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.geo.mercator");
+
+suite.addBatch({
+  "mercator": {
+    topic: function() {
+      return d3.geo.mercator().translate([0, 0]).scale(100);
+    },
+    "Arctic": function(mercator) {
+      var coords = mercator([0, 85]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], -49.8362085, 1e-6);
+      var lonlat = mercator.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    },
+    "Antarctic": function(mercator) {
+      var coords = mercator([0, -85]);
+      assert.inDelta(coords[0], 0, 1e-6);
+      assert.inDelta(coords[1], 49.8362085, 1e-6);
+      var lonlat = mercator.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], -85, 1e-6);
+    },
+    "Hawaii": function(mercator) {
+      var coords = mercator([-180, 0]);
+      assert.inDelta(coords[0], -50, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = mercator.invert(coords);
+      assert.inDelta(lonlat[0], -180, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Phillipines": function(mercator) {
+      var coords = mercator([180, 0]);
+      assert.inDelta(coords[0], 50, 1e-6);
+      assert.inDelta(coords[1], 0, 1e-6);
+      var lonlat = mercator.invert(coords);
+      assert.inDelta(lonlat[0], 180, 1e-6);
+      assert.inDelta(lonlat[1], 0, 1e-6);
+    },
+    "Inversion works for non-zero translation": function() {
+      var mercator = d3.geo.mercator().translate([123, 99]).scale(100),
+          coords = mercator([0, 85]),
+          lonlat = mercator.invert(coords);
+      assert.inDelta(lonlat[0], 0, 1e-6);
+      assert.inDelta(lonlat[1], 85, 1e-6);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/geo/path-test.js b/static/vendor/d3-2.8.1/test/geo/path-test.js
new file mode 100755 (executable)
index 0000000..0bf84f0
--- /dev/null
@@ -0,0 +1,32 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.geo.path");
+
+suite.addBatch({
+  "path": {
+    topic: d3.geo.path,
+    "Polygon": function(path) {
+      assert.equal(path({
+        type: "Feature",
+        geometry: {
+          type: "Polygon",
+          coordinates: [[[-63.03, 18.02], [-63.14, 18.06], [-63.01, 18.07], [-63.03, 18.02]]]
+        },
+      }), "M984.5652086349427,468.99159422596244L981.8396467935554,467.9114977057422L985.0785139575695,467.688661596079Z");
+    },
+    "bogus type name": function(path) {
+      assert.isNull(path({
+        type: "Feature",
+        geometry: {
+          type: "__proto__",
+          coordinates: [[[-63.03, 18.02], [-63.14, 18.06], [-63.01, 18.07], [-63.03, 18.02]]]
+        },
+      }));
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/geom/polygon-test.js b/static/vendor/d3-2.8.1/test/geom/polygon-test.js
new file mode 100755 (executable)
index 0000000..1a6f260
--- /dev/null
@@ -0,0 +1,81 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.geom.polygon");
+
+suite.addBatch({
+  "closed counterclockwise unit square": {
+    topic: function() {
+      return d3.geom.polygon([[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]);
+    },
+    "has area 1": function(polygon) {
+      assert.equal(polygon.area(), 1);
+    },
+    "has centroid âŸ¨.5,.5⟩": function(polygon) {
+      assert.deepEqual(polygon.centroid(), [.5, .5]);
+    }
+  },
+  "closed clockwise unit square": {
+    topic: function() {
+      return d3.geom.polygon([[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]);
+    },
+    "has area 1": function(polygon) {
+      assert.equal(polygon.area(), -1);
+    },
+    "has centroid âŸ¨.5,.5⟩": function(polygon) {
+      assert.deepEqual(polygon.centroid(), [.5, .5]);
+    }
+  },
+  "closed clockwise triangle": {
+    topic: function() {
+      return d3.geom.polygon([[1, 1], [3, 2], [2, 3], [1, 1]]);
+    },
+    "has area 1.5": function(polygon) {
+      assert.equal(polygon.area(), -1.5);
+    },
+    "has centroid âŸ¨2,2⟩": function(polygon) {
+      var centroid = polygon.centroid();
+      assert.inDelta(centroid[0], 2, 1e-6);
+      assert.inDelta(centroid[1], 2, 1e-6);
+    }
+  },
+  "open counterclockwise unit square": {
+    topic: function() {
+      return d3.geom.polygon([[0, 0], [0, 1], [1, 1], [1, 0]]);
+    },
+    "has area 1": function(polygon) {
+      assert.equal(polygon.area(), 1);
+    },
+    "has centroid âŸ¨.5,.5⟩": function(polygon) {
+      assert.deepEqual(polygon.centroid(), [.5, .5]);
+    }
+  },
+  "open clockwise unit square": {
+    topic: function() {
+      return d3.geom.polygon([[0, 0], [1, 0], [1, 1], [0, 1]]);
+    },
+    "has area 1": function(polygon) {
+      assert.equal(polygon.area(), -1);
+    },
+    "has centroid âŸ¨.5,.5⟩": function(polygon) {
+      assert.deepEqual(polygon.centroid(), [.5, .5]);
+    }
+  },
+  "open clockwise triangle": {
+    topic: function() {
+      return d3.geom.polygon([[1, 1], [3, 2], [2, 3]]);
+    },
+    "has area 1.5": function(polygon) {
+      assert.equal(polygon.area(), -1.5);
+    },
+    "has centroid âŸ¨2,2⟩": function(polygon) {
+      var centroid = polygon.centroid();
+      assert.inDelta(centroid[0], 2, 1e-6);
+      assert.inDelta(centroid[1], 2, 1e-6);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/layout/cluster-test.js b/static/vendor/d3-2.8.1/test/layout/cluster-test.js
new file mode 100755 (executable)
index 0000000..dd3d36a
--- /dev/null
@@ -0,0 +1,42 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.layout.cluster");
+
+suite.addBatch({
+  "cluster": {
+    topic: d3.layout.cluster,
+    "can handle an empty children array": function(cluster) {
+      assert.deepEqual(cluster.nodes({value: 1, children: [{value: 1, children: []}, {value: 1}]}).map(layout), [
+        {value: 1, depth: 0, x: 0.5,  y: 0},
+        {value: 1, depth: 1, x: 0.25, y: 1},
+        {value: 1, depth: 1, x: 0.75, y: 1}
+      ]);
+    },
+    "can handle zero-valued nodes": function(cluster) {
+      assert.deepEqual(cluster.nodes({value: 0, children: [{value: 0}, {value: 1}]}).map(layout), [
+        {value: 0, depth: 0, x: 0.5,  y: 0},
+        {value: 0, depth: 1, x: 0.25, y: 1},
+        {value: 1, depth: 1, x: 0.75, y: 1}
+      ]);
+    },
+    "can handle a single node": function(cluster) {
+      assert.deepEqual(cluster.nodes({value: 0}).map(layout), [
+        {value: 0, depth: 0, x: 0.5,  y: 0}
+      ]);
+    }
+  }
+});
+
+function layout(node) {
+  return {
+    value: node.value,
+    depth: node.depth,
+    x: node.x,
+    y: node.y
+  };
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/layout/hierarchy-test.js b/static/vendor/d3-2.8.1/test/layout/hierarchy-test.js
new file mode 100755 (executable)
index 0000000..9680a81
--- /dev/null
@@ -0,0 +1,28 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.layout.hierarchy");
+
+suite.addBatch({
+  "hierarchy": {
+    topic: function() {
+      return d3.layout.treemap(); // hierarchy is abstract, so test a subclass
+    },
+    "doesn't overwrite the value of a node that has an empty children array": function(hierarchy) {
+      var nodes = hierarchy.sticky(true).nodes({value: 1, children: []});
+      assert.equal(nodes[0].value, 1);
+      hierarchy.nodes(nodes[0]);
+      assert.equal(nodes[0].value, 1);
+    },
+    "a valueless node that has an empty children array gets a value of 0": function(hierarchy) {
+      var nodes = hierarchy.sticky(true).nodes({children: []});
+      assert.equal(nodes[0].value, 0);
+      hierarchy.nodes(nodes[0]);
+      assert.equal(nodes[0].value, 0);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/layout/histogram-test.js b/static/vendor/d3-2.8.1/test/layout/histogram-test.js
new file mode 100755 (executable)
index 0000000..7854a9c
--- /dev/null
@@ -0,0 +1,89 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.layout.histogram");
+
+suite.addBatch({
+  "histogram": {
+    topic: function() {
+      return d3.layout.histogram;
+    },
+    "defaults to frequencies": function(histogram) {
+      var h = histogram();
+      assert.deepEqual(h([0,0,0,1,2,2]).map(elements), [[0, 0, 0], [], [1], [2, 2]]);
+    },
+    "each bin contains the matching source elements": function(histogram) {
+      var h = histogram();
+      assert.deepEqual(h([0,0,0,1,2,2]).map(elements), [[0, 0, 0], [], [1], [2, 2]]);
+    },
+    "each bin also has defined x, y and dx properties": function(histogram) {
+      var h = histogram();
+      assert.deepEqual(h([0,0,0,1,2,2]).map(metadata), [
+        {x:   0, y: 3, dx: 0.5},
+        {x: 0.5, y: 0, dx: 0.5},
+        {x:   1, y: 1, dx: 0.5},
+        {x: 1.5, y: 2, dx: 0.5}
+      ]);
+    },
+    "can output frequencies": function(histogram) {
+      var h = histogram().frequency(true);
+      assert.deepEqual(h([0,0,0,1,2,2]).map(metadata), [
+        {x:   0, y: 3, dx: 0.5},
+        {x: 0.5, y: 0, dx: 0.5},
+        {x:   1, y: 1, dx: 0.5},
+        {x: 1.5, y: 2, dx: 0.5}
+      ]);
+    },
+    "can output probabilities": function(histogram) {
+      var h = histogram().frequency(false);
+      assert.deepEqual(h([0,0,0,1,2,2]).map(metadata), [
+        {x:   0, y: 3/6, dx: 0.5},
+        {x: 0.5, y:   0, dx: 0.5},
+        {x:   1, y: 1/6, dx: 0.5},
+        {x: 1.5, y: 2/6, dx: 0.5}
+      ]);
+    },
+    "can specify number of bins": function(histogram) {
+      var h = histogram().bins(2);
+      assert.deepEqual(h([0,0,0,1,2,2]).map(elements), [
+        [0, 0, 0],
+        [1, 2, 2]
+      ]);
+      assert.deepEqual(h([0,0,0,1,2,2]).map(metadata), [
+        {x: 0, y: 3, dx: 1},
+        {x: 1, y: 3, dx: 1}
+      ]);
+    },
+    "can specify bin thresholds": function(histogram) {
+      var h = histogram().bins([0,1,2,3]);
+      assert.deepEqual(h([0,0,0,1,2,2]).map(elements), [
+        [0, 0, 0],
+        [1],
+        [2, 2]
+      ]);
+      assert.deepEqual(h([0,0,0,1,2,2]).map(metadata), [
+        {x: 0, y: 3, dx: 1},
+        {x: 1, y: 1, dx: 1},
+        {x: 2, y: 2, dx: 1}
+      ]);
+    }
+  }
+});
+
+function elements(bin) {
+  var array = [], i = -1, n = bin.length;
+  while (++i < n) array.push(bin[i]);
+  return array;
+}
+
+function metadata(bin) {
+  var metadata = {};
+  if ("x" in bin) metadata.x = bin.x;
+  if ("y" in bin) metadata.y = bin.y;
+  if ("dx" in bin) metadata.dx = bin.dx;
+  return metadata;
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/layout/pack-test.js b/static/vendor/d3-2.8.1/test/layout/pack-test.js
new file mode 100755 (executable)
index 0000000..d8957c9
--- /dev/null
@@ -0,0 +1,91 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.layout.pack");
+
+suite.addBatch({
+  "pack": {
+    topic: d3.layout.pack,
+    "can handle an empty children array": function(pack) {
+      assert.deepEqual(pack.nodes({children: [{children: []}, {value: 1}]}).map(layout), [
+        {value: 1, depth: 0, x: 0.5, y: 0.5, r: 0.5},
+        {value: 0, depth: 1, x: 0.0, y: 0.5, r: 0.0},
+        {value: 1, depth: 1, x: 0.5, y: 0.5, r: 0.5}
+      ]);
+    },
+    "can handle zero-valued nodes": function(pack) {
+      assert.deepEqual(pack.nodes({children: [{value: 0}, {value: 1}]}).map(layout), [
+        {value: 1, depth: 0, x: 0.5, y: 0.5, r: 0.5},
+        {value: 0, depth: 1, x: 0.0, y: 0.5, r: 0.0},
+        {value: 1, depth: 1, x: 0.5, y: 0.5, r: 0.5}
+      ]);
+    },
+    "can handle small nodes": function() {
+      assert.deepEqual(d3.layout.pack().sort(null).nodes({children: [
+        {value: .01},
+        {value: 2},
+        {value: 2},
+        {value: 1}
+      ]}).map(layout), [
+        {y: 0.5, x: 0.5, value: 5.01, r: 0.5, depth: 0},
+        {y: 0.5084543199854831, x: 0.4682608366855136, value: 0.01, r: 0.016411496513964046, depth: 1},
+        {y: 0.5084543199854831, x: 0.7167659426883449, value: 2, r: 0.23209360948886723, depth: 1},
+        {y: 0.34256315498862167, x: 0.2832340573116551, value: 2, r: 0.23209360948886723, depth: 1},
+        {y: 0.7254154893606051, x: 0.3852405506102519, value: 1, r: 0.16411496513964044, depth: 1}
+      ]);
+      assert.deepEqual(d3.layout.pack().sort(null).nodes({children: [
+        {value: 2},
+        {value: 2},
+        {value: 1},
+        {value: .01}
+      ]}).map(layout), [
+        {y: 0.5, x: 0.5, value: 5.01, r: 0.5, depth: 0},
+        {y: 0.6274712284943809, x: 0.26624891409386664, value: 2, r: 0.23375108590613333, depth: 1},
+        {y: 0.6274712284943809, x: 0.7337510859061334, value: 2, r: 0.23375108590613333, depth: 1},
+        {y: 0.30406466355343187, x: 0.5, value: 1, r: 0.1652869779539461, depth: 1},
+        {y: 0.3878967195987758, x: 0.3386645534068855, value: 0.01, r: 0.01652869779539461, depth: 1}
+      ]);
+    },
+    "can handle residual floating point error": function(pack) {
+      var result = pack.nodes({children: [
+        {value: 0.005348322447389364},
+        {value: 0.8065882022492588},
+        {value: 0}
+      ]}).map(layout);
+      assert.isFalse(result.map(function(d) { return d.depth; }).some(isNaN));
+      assert.isFalse(result.map(function(d) { return d.value; }).some(isNaN));
+      assert.isFalse(result.map(function(d) { return d.x; }).some(isNaN));
+      assert.isFalse(result.map(function(d) { return d.y; }).some(isNaN));
+      assert.isFalse(result.map(function(d) { return d.r; }).some(isNaN));
+    },
+    "avoids coincident circles": function(pack) {
+      var result = pack({children: [
+        {children: [{value: 17010}, {value: 5842}, {value: 0}, {value: 0}]},
+        {children: [
+          {children: [{value: 721}, {value: 4294}, {value: 9800}, {value: 1314}, {value: 2220}]},
+          {value: 1759}, {value: 2165}, {value: 586}, {value: 3331}, {value: 772}, {value: 3322}
+        ]}
+      ]}).map(layout);
+      result.sort(function(a, b) {
+        return a.x < b.x && a.y < b.y ? -1 : 1;
+      });
+      assert.isFalse(result.slice(1).some(function(d, i) {
+        return d.x === result[i].x && d.y === result[i].y && d.value > 0;
+      }));
+    }
+  }
+});
+
+function layout(node) {
+  return {
+    value: node.value,
+    depth: node.depth,
+    r: node.r,
+    x: node.x,
+    y: node.y
+  };
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/layout/partition-test.js b/static/vendor/d3-2.8.1/test/layout/partition-test.js
new file mode 100755 (executable)
index 0000000..efdcccc
--- /dev/null
@@ -0,0 +1,48 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.layout.partition");
+
+suite.addBatch({
+  "partition": {
+    topic: function() {
+      return d3.layout.partition;
+    },
+    "ignores zero values": function(partition) {
+      var p = partition().size([3, 3]);
+      assert.deepEqual(p.nodes({children: [{value: 1}, {value: 0}, {value: 2}, {children: [{value: 0}, {value: 0}]}]}).map(metadata), [
+        {x: 0, y: 0, dx: 3, dy: 1},
+        {x: 2, y: 1, dx: 1, dy: 1},
+        {x: 3, y: 1, dx: 0, dy: 1},
+        {x: 0, y: 1, dx: 2, dy: 1},
+        {x: 3, y: 1, dx: 0, dy: 1},
+        {x: 3, y: 2, dx: 0, dy: 1},
+        {x: 3, y: 2, dx: 0, dy: 1}
+      ]);
+    },
+    "can handle an empty children array": function(partition) {
+      var p = partition();
+      assert.deepEqual(p.nodes({children: []}).map(metadata), [
+        {x: 0, y: 0, dx: 1, dy: 1}
+      ]);
+      assert.deepEqual(p.nodes({children: [{children: []}, {value: 1}]}).map(metadata), [
+        {x: 0, y: 0,   dx: 1, dy: 0.5},
+        {x: 1, y: 0.5, dx: 0, dy: 0.5},
+        {x: 0, y: 0.5, dx: 1, dy: 0.5}
+      ]);
+    }
+  }
+});
+
+function metadata(node) {
+  var metadata = {};
+  if ("x" in node) metadata.x = node.x;
+  if ("y" in node) metadata.y = node.y;
+  if ("dx" in node) metadata.dx = node.dx;
+  if ("dy" in node) metadata.dy = node.dy;
+  return metadata;
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/layout/pie-test.js b/static/vendor/d3-2.8.1/test/layout/pie-test.js
new file mode 100755 (executable)
index 0000000..b6de069
--- /dev/null
@@ -0,0 +1,24 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.layout.pie");
+
+suite.addBatch({
+  "pie": {
+    topic: d3.layout.pie,
+    "arcs are in same order as original data": function(pie) {
+      assert.deepEqual(pie([5, 30, 15]).map(function(d) { return d.data; }), [
+        5, 30, 15
+      ]);
+      assert.deepEqual(pie([
+        84, 90, 48, 61, 58, 8, 6, 31, 45, 18
+      ]).map(function(d) { return d.data; }), [
+        84, 90, 48, 61, 58, 8, 6, 31, 45, 18
+      ]);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/layout/tree-test.js b/static/vendor/d3-2.8.1/test/layout/tree-test.js
new file mode 100755 (executable)
index 0000000..ad4c14b
--- /dev/null
@@ -0,0 +1,44 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.layout.tree");
+
+suite.addBatch({
+  "tree": {
+    topic: d3.layout.tree,
+    "can handle an empty children array": function(tree) {
+      assert.deepEqual(tree.nodes({children: []}).map(layout), [
+        {depth: 0, x: 0.5, y: 0}
+      ]);
+      assert.deepEqual(tree.nodes({children: [
+        {children: []},
+        {children: [{}]},
+        {children: [{}]}
+      ]}).map(layout), [
+        {depth: 0, x: .5,   y: 0},
+        {depth: 1, x: .125, y: 0.5},
+        {depth: 1, x: .375, y: 0.5},
+        {depth: 2, x: .375, y: 1},
+        {depth: 1, x: .875, y: 0.5},
+        {depth: 2, x: .875, y: 1}
+      ]);
+    },
+    "can handle a single node": function(tree) {
+      assert.deepEqual(tree.nodes({value: 0}).map(layout), [
+        {depth: 0, x: 0.5, y: 0}
+      ]);
+    }
+  }
+});
+
+function layout(node) {
+  return {
+    depth: node.depth,
+    x: node.x,
+    y: node.y
+  };
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/layout/treemap-test.js b/static/vendor/d3-2.8.1/test/layout/treemap-test.js
new file mode 100755 (executable)
index 0000000..c309d92
--- /dev/null
@@ -0,0 +1,170 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.layout.treemap");
+
+suite.addBatch({
+  "treemap": {
+    topic: function() {
+      return d3.layout.treemap;
+    },
+    "outputs a squarified treemap": function(treemap) {
+      var t = treemap().size([1000, 1000]).sort(null);
+      assert.deepEqual(t.nodes({children: [{value: 1}, {value: 2}, {children: [{value: 1}, {value: 2}]}]}).map(layout), [
+        {x: 0, y: 0, dx: 1000, dy: 1000},
+        {x: 0, y: 833, dx: 1000, dy: 167},
+        {x: 600, y: 0, dx: 400, dy: 833},
+        {x: 0, y: 0, dx: 600, dy: 833},
+        {x: 0, y: 555, dx: 600, dy: 278},
+        {x: 0, y: 0, dx: 600, dy: 555}
+      ]);
+    },
+    "sorts by value by default": function(treemap) {
+      var t = treemap().size([1000, 1000]);
+      assert.deepEqual(t.nodes({children: [{value: 1}, {value: 2}, {children: [{value: 1}, {value: 2}]}]}).map(layout), [
+        {x: 0, y: 0, dx: 1000, dy: 1000},
+        {x: 0, y: 0, dx: 333, dy: 500},
+        {x: 333, y: 0, dx: 667, dy: 500},
+        {x: 0, y: 500, dx: 1000, dy: 500},
+        {x: 0, y: 500, dx: 333, dy: 500},
+        {x: 333, y: 500, dx: 667, dy: 500}
+      ]);
+    },
+    "ignores zero values": function(treemap) {
+      var t = treemap().size([1000, 1000]).sort(null);
+      assert.deepEqual(t.nodes({children: [{value: 1}, {value: 0}, {value: 2}, {children: [{value: 1}, {value: 2}]}]}).map(layout), [
+        {x: 0, y: 0, dx: 1000, dy: 1000},
+        {x: 0, y: 833, dx: 1000, dy: 167},
+        {x: 1000, y: 0, dx: 0, dy: 833},
+        {x: 600, y: 0, dx: 400, dy: 833},
+        {x: 0, y: 0, dx: 600, dy: 833},
+        {x: 0, y: 555, dx: 600, dy: 278},
+        {x: 0, y: 0, dx: 600, dy: 555}
+      ]);
+    },
+    "ignores NaN values": function(treemap) {
+      var t = treemap().size([1000, 1000]).sort(null);
+      assert.deepEqual(t.nodes({children: [{value: 1}, {value: NaN}, {value: 2}, {children: [{value: 1}, {value: 2}]}]}).map(layout), [
+        {x: 0, y: 0, dx: 1000, dy: 1000},
+        {x: 0, y: 833, dx: 1000, dy: 167},
+        {x: 1000, y: 0, dx: 0, dy: 833},
+        {x: 600, y: 0, dx: 400, dy: 833},
+        {x: 0, y: 0, dx: 600, dy: 833},
+        {x: 0, y: 555, dx: 600, dy: 278},
+        {x: 0, y: 0, dx: 600, dy: 555}
+      ]);
+    },
+    "does not overflow empty size": function(treemap) {
+      var t = treemap().size([0, 0]).sort(null);
+      assert.deepEqual(t.nodes({children: [{value: 1}, {value: 2}, {children: [{value: 1}, {value: 2}]}]}).map(layout), [
+        {x: 0, y: 0, dx: 0, dy: 0},
+        {x: 0, y: 0, dx: 0, dy: 0},
+        {x: 0, y: 0, dx: 0, dy: 0},
+        {x: 0, y: 0, dx: 0, dy: 0},
+        {x: 0, y: 0, dx: 0, dy: 0},
+        {x: 0, y: 0, dx: 0, dy: 0}
+      ]);
+    },
+    "can specify padding as a number": function(treemap) {
+      var t = treemap().size([1000, 1000]).sort(null).padding(1);
+      assert.deepEqual(t.nodes({children: [{value: 1}, {value: 2}, {children: [{value: 1}, {value: 2}]}]}).map(layout), [
+        {x: 0, y: 0, dx: 1000, dy: 1000},
+        {x: 1, y: 833, dx: 998, dy: 166},
+        {x: 600, y: 1, dx: 399, dy: 832},
+        {x: 1, y: 1, dx: 599, dy: 832},
+        {x: 2, y: 555, dx: 597, dy: 277},
+        {x: 2, y: 2, dx: 597, dy: 553}
+      ]);
+    },
+    "can specify padding as an array": function(treemap) {
+      var t = treemap().size([1000, 1000]).sort(null).padding([1,2,3,4]);
+      assert.deepEqual(t.nodes({children: [{value: 1}, {value: 2}, {children: [{value: 1}, {value: 2}]}]}).map(layout), [
+        {x: 0, y: 0, dx: 1000, dy: 1000},
+        {x: 4, y: 831, dx: 994, dy: 166},
+        {x: 600, y: 1, dx: 398, dy: 830},
+        {x: 4, y: 1, dx: 596, dy: 830},
+        {x: 8, y: 553, dx: 590, dy: 275},
+        {x: 8, y: 2, dx: 590, dy: 551}
+      ]);
+    },
+    "can specify padding as null": function(treemap) {
+      var t = treemap().size([1000, 1000]).sort(null).padding(null);
+      assert.deepEqual(t.nodes({children: [{value: 1}, {value: 2}, {children: [{value: 1}, {value: 2}]}]}).map(layout), [
+        {x: 0, y: 0, dx: 1000, dy: 1000},
+        {x: 0, y: 833, dx: 1000, dy: 167},
+        {x: 600, y: 0, dx: 400, dy: 833},
+        {x: 0, y: 0, dx: 600, dy: 833},
+        {x: 0, y: 555, dx: 600, dy: 278},
+        {x: 0, y: 0, dx: 600, dy: 555}
+      ]);
+    },
+    "can specify padding as a function that returns a number": function(treemap) {
+      var t = treemap().size([1000, 1000]).sort(null).padding(function(d) { return d.depth; });
+      assert.deepEqual(t.nodes({children: [{value: 1}, {value: 2}, {children: [{value: 1}, {value: 2}]}]}).map(layout), [
+        {x: 0, y: 0, dx: 1000, dy: 1000},
+        {x: 0, y: 833, dx: 1000, dy: 167},
+        {x: 600, y: 0, dx: 400, dy: 833},
+        {x: 0, y: 0, dx: 600, dy: 833},
+        {x: 1, y: 555, dx: 598, dy: 277},
+        {x: 1, y: 1, dx: 598, dy: 554}
+      ]);
+    },
+    "can specify padding as a function that returns an array": function(treemap) {
+      var t = treemap().size([1000, 1000]).sort(null).padding(function(d) { return [d.depth,2,3,4]; });
+      assert.deepEqual(t.nodes({children: [{value: 1}, {value: 2}, {children: [{value: 1}, {value: 2}]}]}).map(layout), [
+        {x: 0, y: 0, dx: 1000, dy: 1000},
+        {x: 4, y: 831, dx: 994, dy: 166},
+        {x: 600, y: 0, dx: 398, dy: 831},
+        {x: 4, y: 0, dx: 596, dy: 831},
+        {x: 8, y: 552, dx: 590, dy: 276},
+        {x: 8, y: 1, dx: 590, dy: 551}
+      ]);
+    },
+    "can specify padding as a function that returns null": function(treemap) {
+      var t = treemap().size([1000, 1000]).sort(null).padding(function(d) { return d.depth & 1 ? null : 1; });
+      assert.deepEqual(t.nodes({children: [{value: 1}, {value: 2}, {children: [{value: 1}, {value: 2}]}]}).map(layout), [
+        {x: 0, y: 0, dx: 1000, dy: 1000},
+        {x: 1, y: 833, dx: 998, dy: 166},
+        {x: 600, y: 1, dx: 399, dy: 832},
+        {x: 1, y: 1, dx: 599, dy: 832},
+        {x: 1, y: 556, dx: 599, dy: 277},
+        {x: 1, y: 1, dx: 599, dy: 555}
+      ]);
+    },
+    "no negatively sized rectangles": function(treemap) {
+      var t = treemap().size([615, 500]).sort(function(a, b) { return a.value - b.value; }).padding(29),
+          data = [1, 9, 3, 15, 44, 28, 32, 41, 50, 60, 64, 75, 76, 84, 88, 100, 140, 142, 363, 657, 670, 822, 1173, 1189],
+          nodes = t.nodes({children: data.map(function(d) { return {value: d}; })}).map(layout);
+      assert.equal(nodes.filter(function(n) { return n.dx < 0 || n.dy < 0; }).length, 0);
+    },
+    "no overhanging rectangles": function(treemap) {
+      var t = treemap().size([100, 100]).sort(function(a, b) { return a.value - b.value; }),
+          data = [0, 0, 81681.85, 370881.9, 0, 0, 0, 255381.59, 0, 0, 0, 0, 0, 0, 0, 125323.95, 0, 0, 0, 186975.07, 185707.05, 267370.93, 0]
+          nodes = t.nodes({children: data.map(function(d) { return {value: d}; })}).map(layout);
+      assert.equal(nodes.filter(function(n) { return n.dx < 0 || n.dy < 0 || n.x + n.dx > 100 || n.y + n.dy > 100; }).length, 0);
+    },
+    "can handle an empty children array": function(treemap) {
+      assert.deepEqual(treemap().nodes({children: []}).map(layout), [
+        {x: 0, y: 0, dx: 1, dy: 1}
+      ]);
+      assert.deepEqual(treemap().nodes({children: [{children: []}, {value: 1}]}).map(layout), [
+        {x: 0, y: 0, dx: 1, dy: 1},
+        {x: 0, y: 0, dx: 0, dy: 1},
+        {x: 0, y: 0, dx: 1, dy: 1}
+      ]);
+    }
+  }
+});
+
+function layout(node) {
+  return {
+    x: node.x,
+    y: node.y,
+    dx: node.dx,
+    dy: node.dy
+  };
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/scale/category-test.js b/static/vendor/d3-2.8.1/test/scale/category-test.js
new file mode 100755 (executable)
index 0000000..a07d542
--- /dev/null
@@ -0,0 +1,73 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.scale.category");
+
+suite.addBatch({
+  "category10": category(d3.scale.category10, 10),
+  "category20": category(d3.scale.category20, 20),
+  "category20b": category(d3.scale.category20b, 20),
+  "category20c": category(d3.scale.category20c, 20)
+});
+
+function category(category, n) {
+  return {
+    "is an ordinal scale": function() {
+      var x = category(), colors = x.range();
+      assert.lengthOf(x.domain(), 0);
+      assert.lengthOf(x.range(), n);
+      assert.equal(x(1), colors[0]);
+      assert.equal(x(2), colors[1]);
+      assert.equal(x(1), colors[0]);
+      var y = x.copy();
+      assert.deepEqual(y.domain(), x.domain());
+      assert.deepEqual(y.range(), x.range());
+      x.domain(d3.range(n));
+      for (var i = 0; i < n; ++i) assert.equal(x(i + n), x(i));
+      assert.equal(y(1), colors[0]);
+      assert.equal(y(2), colors[1]);
+    },
+    "each instance is isolated": function() {
+      var a = category(), b = category(), colors = a.range();
+      assert.equal(a(1), colors[0]);
+      assert.equal(b(2), colors[0]);
+      assert.equal(b(1), colors[1]);
+      assert.equal(a(1), colors[0]);
+    },
+    "contains the expected number of values in the range": function() {
+      var x = category();
+      assert.lengthOf(x.range(), n);
+    },
+    "each range value is distinct": function() {
+      var map = {}, count = 0, x = category();
+      x.range().forEach(function(v) {
+        if (!(v in map)) {
+          map[v] = ++count;
+        }
+      });
+      assert.equal(count, x.range().length);
+    },
+    "each range value is a hexadecimal color": function() {
+      var x = category();
+      x.range().forEach(function(v) {
+        assert.match(v, /#[0-9a-f]{6}/);
+        v = d3.rgb(v);
+        assert.isFalse(isNaN(v.r));
+        assert.isFalse(isNaN(v.g));
+        assert.isFalse(isNaN(v.b));
+      });
+    },
+    "no range values are very dark or very light": function() {
+      var x = category();
+      x.range().forEach(function(v) {
+        var c = d3.hsl(v);
+        assert.isTrue(c.l >= .34, "expected " + v + " to be lighter (l = " + c.l + ")");
+        assert.isTrue(c.l <= .89, "expected " + v + " to be darker (l = " + c.l + ")");
+      });
+    }
+  };
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/scale/identity-test.js b/static/vendor/d3-2.8.1/test/scale/identity-test.js
new file mode 100755 (executable)
index 0000000..866cba1
--- /dev/null
@@ -0,0 +1,166 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.scale.identity");
+
+suite.addBatch({
+  "identity": {
+    topic: function() {
+      return d3.scale.identity;
+    },
+
+    "domain and range": {
+      "are identical": function(identity) {
+        var x = identity();
+        assert.strictEqual(x.domain, x.range);
+        assert.strictEqual(x.domain(), x.range());
+        var x = identity().domain([-10, 0, 100]);
+        assert.deepEqual(x.range(), [-10, 0, 100]);
+        var x = identity().range([-10, 0, 100]);
+        assert.deepEqual(x.domain(), [-10, 0, 100]);
+      },
+      "default to [0, 1]": function(identity) {
+        var x = identity();
+        assert.deepEqual(x.domain(), [0, 1]);
+        assert.deepEqual(x.range(), [0, 1]);
+        assert.strictEqual(x(.5), .5);
+      },
+      "coerce values to numbers": function(identity) {
+        var x = identity().domain([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
+        assert.typeOf(x.domain()[0], "number");
+        assert.typeOf(x.domain()[1], "number");
+        assert.strictEqual(x.domain()[0], +new Date(1990, 0, 1));
+        assert.strictEqual(x.domain()[1], +new Date(1991, 0, 1));
+        assert.typeOf(x(new Date(1989, 09, 20)), "number");
+        assert.strictEqual(x(new Date(1989, 09, 20)), +new Date(1989, 09, 20));
+        var x = identity().domain(["0", "1"]);
+        assert.typeOf(x.domain()[0], "number");
+        assert.typeOf(x.domain()[1], "number");
+        assert.strictEqual(x(.5), .5);
+        var x = identity().domain([new Number(0), new Number(1)]);
+        assert.typeOf(x.domain()[0], "number");
+        assert.typeOf(x.domain()[1], "number");
+        assert.strictEqual(x(.5), .5);
+
+        var x = identity().range([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
+        assert.typeOf(x.range()[0], "number");
+        assert.typeOf(x.range()[1], "number");
+        assert.strictEqual(x.range()[0], +new Date(1990, 0, 1));
+        assert.strictEqual(x.range()[1], +new Date(1991, 0, 1));
+        assert.typeOf(x(new Date(1989, 09, 20)), "number");
+        assert.strictEqual(x(new Date(1989, 09, 20)), +new Date(1989, 09, 20));
+        var x = identity().range(["0", "1"]);
+        assert.typeOf(x.range()[0], "number");
+        assert.typeOf(x.range()[1], "number");
+        assert.strictEqual(x(.5), .5);
+        var x = identity().range([new Number(0), new Number(1)]);
+        assert.typeOf(x.range()[0], "number");
+        assert.typeOf(x.range()[1], "number");
+        assert.strictEqual(x(.5), .5);
+      },
+      "can specify a polyidentity domain and range": function(identity) {
+        var x = identity().domain([-10, 0, 100]);
+        assert.deepEqual(x.domain(), [-10, 0, 100]);
+        assert.strictEqual(x(-5), -5);
+        assert.strictEqual(x(50), 50);
+        assert.strictEqual(x(75), 75);
+
+        var x = identity().range([-10, 0, 100]);
+        assert.deepEqual(x.range(), [-10, 0, 100]);
+        assert.strictEqual(x(-5), -5);
+        assert.strictEqual(x(50), 50);
+        assert.strictEqual(x(75), 75);
+      },
+      "do not affect the identity function": function(identity) {
+        var x = identity().domain([Infinity, NaN]);
+        assert.strictEqual(x(42), 42);
+        assert.strictEqual(x.invert(-42), -42);
+      }
+    },
+
+    "is the identity function": function(identity) {
+      var x = identity().domain([1, 2]);
+      assert.strictEqual(x(.5), .5);
+      assert.strictEqual(x(1), 1);
+      assert.strictEqual(x(1.5), 1.5);
+      assert.strictEqual(x(2), 2);
+      assert.strictEqual(x(2.5), 2.5);
+    },
+    "coerces input to a number": function(identity) {
+      var x = identity().domain([1, 2]);
+      assert.strictEqual(x("2"), 2);
+    },
+
+    "invert": {
+      "is the identity function": function(identity) {
+        var x = identity().domain([1, 2]);
+        assert.strictEqual(x.invert(.5), .5);
+        assert.strictEqual(x.invert(1), 1);
+        assert.strictEqual(x.invert(1.5), 1.5);
+        assert.strictEqual(x.invert(2), 2);
+        assert.strictEqual(x.invert(2.5), 2.5);
+      },
+      "coerces range value to numbers": function(identity) {
+        var x = identity().range(["0", "2"]);
+        assert.strictEqual(x.invert("1"), 1);
+        var x = identity().range([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
+        assert.strictEqual(x.invert(new Date(1990, 6, 2, 13)), +new Date(1990, 6, 2, 13));
+        var x = identity().range(["#000", "#fff"]);
+        assert.isNaN(x.invert("#999"));
+      },
+      "coerces input to a number": function(identity) {
+        var x = identity().domain([1, 2]);
+        assert.strictEqual(x.invert("2"), 2);
+      }
+    },
+
+    "ticks": {
+      "generates ticks of varying degree": function(identity) {
+        var x = identity();
+        assert.deepEqual(x.ticks(1).map(x.tickFormat(1)), [0, 1]);
+        assert.deepEqual(x.ticks(2).map(x.tickFormat(2)), [0, .5, 1]);
+        assert.deepEqual(x.ticks(5).map(x.tickFormat(5)), [0, .2, .4, .6, .8, 1]);
+        assert.deepEqual(x.ticks(10).map(x.tickFormat(10)), [0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]);
+        var x = identity().domain([1, 0]);
+        assert.deepEqual(x.ticks(1).map(x.tickFormat(1)), [0, 1]);
+        assert.deepEqual(x.ticks(2).map(x.tickFormat(2)), [0, .5, 1]);
+        assert.deepEqual(x.ticks(5).map(x.tickFormat(5)), [0, .2, .4, .6, .8, 1]);
+        assert.deepEqual(x.ticks(10).map(x.tickFormat(10)), [0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]);
+      },
+      "formats ticks with the appropriate precision": function(identity) {
+        var x = identity().domain([.123456789, 1.23456789]);
+        assert.strictEqual(x.tickFormat(1)(x.ticks(1)[0]), "1");
+        assert.strictEqual(x.tickFormat(2)(x.ticks(2)[0]), "0.5");
+        assert.strictEqual(x.tickFormat(4)(x.ticks(4)[0]), "0.2");
+        assert.strictEqual(x.tickFormat(8)(x.ticks(8)[0]), "0.2");
+        assert.strictEqual(x.tickFormat(16)(x.ticks(16)[0]), "0.2");
+        assert.strictEqual(x.tickFormat(32)(x.ticks(32)[0]), "0.15");
+        assert.strictEqual(x.tickFormat(64)(x.ticks(64)[0]), "0.14");
+        assert.strictEqual(x.tickFormat(128)(x.ticks(128)[0]), "0.13");
+        assert.strictEqual(x.tickFormat(256)(x.ticks(256)[0]), "0.125");
+      }
+    },
+
+    "copy": {
+      "changes to the domain or range are isolated": function(identity) {
+        var x = identity(), y = x.copy();
+        x.domain([1, 2]);
+        assert.deepEqual(y.domain(), [0, 1]);
+        y.domain([2, 3]);
+        assert.deepEqual(x.domain(), [1, 2]);
+        assert.deepEqual(y.domain(), [2, 3]);
+
+        var x = identity(), y = x.copy();
+        x.range([1, 2]);
+        assert.deepEqual(y.range(), [0, 1]);
+        y.range([2, 3]);
+        assert.deepEqual(x.range(), [1, 2]);
+        assert.deepEqual(y.range(), [2, 3]);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/scale/linear-test.js b/static/vendor/d3-2.8.1/test/scale/linear-test.js
new file mode 100755 (executable)
index 0000000..fe86b17
--- /dev/null
@@ -0,0 +1,274 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.scale.linear");
+
+suite.addBatch({
+  "linear": {
+    topic: function() {
+      return d3.scale.linear;
+    },
+
+    "domain": {
+      "defaults to [0, 1]": function(linear) {
+        var x = linear();
+        assert.deepEqual(x.domain(), [0, 1]);
+        assert.inDelta(x(.5), .5, 1e-6);
+      },
+      "coerces domain values to numbers": function(linear) {
+        var x = linear().domain([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
+        assert.equal(typeof x.domain()[0], "number");
+        assert.equal(typeof x.domain()[1], "number");
+        assert.inDelta(x(new Date(1989, 09, 20)), -.2, 1e-2);
+        assert.inDelta(x(new Date(1990, 00, 01)), 0, 1e-2);
+        assert.inDelta(x(new Date(1990, 02, 15)), .2, 1e-2);
+        assert.inDelta(x(new Date(1990, 04, 27)), .4, 1e-2);
+        assert.inDelta(x(new Date(1991, 00, 01)), 1, 1e-2);
+        assert.inDelta(x(new Date(1991, 02, 15)), 1.2, 1e-2);
+        var x = linear().domain(["0", "1"]);
+        assert.equal(typeof x.domain()[0], "number");
+        assert.equal(typeof x.domain()[1], "number");
+        assert.inDelta(x(.5), .5, 1e-6);
+        var x = linear().domain([new Number(0), new Number(1)]);
+        assert.equal(typeof x.domain()[0], "number");
+        assert.equal(typeof x.domain()[1], "number");
+        assert.inDelta(x(.5), .5, 1e-6);
+      },
+      "can specify a polylinear domain and range": function(linear) {
+        var x = linear().domain([-10, 0, 100]).range(["red", "white", "green"]);
+        assert.equal(x(-5), "#ff8080");
+        assert.equal(x(50), "#80c080");
+        assert.equal(x(75), "#40a040");
+      },
+      "the smaller of the domain or range is observed": function(linear) {
+        var x = linear().domain([-10, 0]).range(["red", "white", "green"]).clamp(true);
+        assert.equal(x(-5), "#ff8080");
+        assert.equal(x(50), "#ffffff");
+        var x = linear().domain([-10, 0, 100]).range(["red", "white"]).clamp(true);
+        assert.equal(x(-5), "#ff8080");
+        assert.equal(x(50), "#ffffff");
+      },
+      "an empty domain maps to the range start": function(linear) {
+        var x = linear().domain([0, 0]).range(["red", "green"]);
+        assert.equal(x(0), "#ff0000");
+        assert.equal(x(-1), "#ff0000");
+        assert.equal(x(1), "#ff0000");
+      }
+    },
+
+    "range": {
+      "defaults to [0, 1]": function(linear) {
+        var x = linear();
+        assert.deepEqual(x.range(), [0, 1]);
+        assert.inDelta(x.invert(.5), .5, 1e-6);
+      },
+      "does not coerce range to numbers": function(linear) {
+        var x = linear().range(["0", "2"]);
+        assert.equal(typeof x.range()[0], "string");
+        assert.equal(typeof x.range()[1], "string");
+      },
+      "can specify range values as colors": function(linear) {
+        var x = linear().range(["red", "blue"]);
+        assert.equal(x(.5), "#800080");
+        var x = linear().range(["#ff0000", "#0000ff"]);
+        assert.equal(x(.5), "#800080");
+        var x = linear().range(["#f00", "#00f"]);
+        assert.equal(x(.5), "#800080");
+        var x = linear().range([d3.rgb(255,0,0), d3.hsl(240,1,.5)]);
+        assert.equal(x(.5), "#800080");
+        var x = linear().range(["hsl(0,100%,50%)", "hsl(240,100%,50%)"]);
+        assert.equal(x(.5), "#800080");
+      },
+      "can specify range values as arrays or objects": function(linear) {
+        var x = linear().range([{color: "red"}, {color: "blue"}]);
+        assert.deepEqual(x(.5), {color: "#800080"});
+        var x = linear().range([["red"], ["blue"]]);
+        assert.deepEqual(x(.5), ["#800080"]);
+      }
+    },
+
+    "interpolate": {
+      "defaults to d3.interpolate": function(linear) {
+        var x = linear().range(["red", "blue"]);
+        assert.equal(x.interpolate(), d3.interpolate);
+        assert.equal(x(.5), "#800080");
+      },
+      "can specify a custom interpolator": function(linear) {
+        var x = linear().range(["red", "blue"]).interpolate(d3.interpolateHsl);
+        assert.equal(x(.5), "#00ff00");
+      }
+    },
+
+    "clamp": {
+      "defaults to false": function(linear) {
+        var x = linear();
+        assert.isFalse(x.clamp());
+        assert.inDelta(x(-.5), -.5, 1e-6);
+        assert.inDelta(x(1.5), 1.5, 1e-6);
+      },
+      "can clamp to the domain": function(linear) {
+        var x = linear().clamp(true);
+        assert.inDelta(x(-.5), 0, 1e-6);
+        assert.inDelta(x(.5), .5, 1e-6);
+        assert.inDelta(x(1.5), 1, 1e-6);
+        var x = linear().domain([1, 0]).clamp(true);
+        assert.inDelta(x(-.5), 1, 1e-6);
+        assert.inDelta(x(.5), .5, 1e-6);
+        assert.inDelta(x(1.5), 0, 1e-6);
+      },
+      "can clamp to the range": function(linear) {
+        var x = linear().clamp(true);
+        assert.inDelta(x.invert(-.5), 0, 1e-6);
+        assert.inDelta(x.invert(.5), .5, 1e-6);
+        assert.inDelta(x.invert(1.5), 1, 1e-6);
+        var x = linear().range([1, 0]).clamp(true);
+        assert.inDelta(x.invert(-.5), 1, 1e-6);
+        assert.inDelta(x.invert(.5), .5, 1e-6);
+        assert.inDelta(x.invert(1.5), 0, 1e-6);
+      }
+    },
+
+    "maps a number to a number": function(linear) {
+      var x = linear().domain([1, 2]);
+      assert.inDelta(x(.5), -.5, 1e-6);
+      assert.inDelta(x(1), 0, 1e-6);
+      assert.inDelta(x(1.5), .5, 1e-6);
+      assert.inDelta(x(2), 1, 1e-6);
+      assert.inDelta(x(2.5), 1.5, 1e-6);
+    },
+
+    "invert": {
+      "maps a number to a number": function(linear) {
+        var x = linear().range([1, 2]);
+        assert.inDelta(x.invert(.5), -.5, 1e-6);
+        assert.inDelta(x.invert(1), 0, 1e-6);
+        assert.inDelta(x.invert(1.5), .5, 1e-6);
+        assert.inDelta(x.invert(2), 1, 1e-6);
+        assert.inDelta(x.invert(2.5), 1.5, 1e-6);
+      },
+      "coerces range value to numbers": function(linear) {
+        var x = linear().range(["0", "2"]);
+        assert.inDelta(x.invert("1"), .5, 1e-6);
+        var x = linear().range([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
+        assert.inDelta(x.invert(new Date(1990, 6, 2, 13)), .5, 1e-6);
+        var x = linear().range(["#000", "#fff"]);
+        assert.isNaN(x.invert("#999"));
+      },
+      "can invert a polylinear descending domain": function(linear) {
+        var x = linear().domain([4, 2, 1]).range([1, 2, 4]);
+        assert.inDelta(x(1.5), 3, 1e-6);
+        assert.inDelta(x(3), 1.5, 1e-6);
+        assert.inDelta(x.invert(1.5), 3, 1e-6);
+        assert.inDelta(x.invert(3), 1.5, 1e-6);
+      },
+      "can invert a polylinear descending range": function(linear) {
+        var x = linear().domain([1, 2, 4]).range([4, 2, 1]);
+        assert.inDelta(x(1.5), 3, 1e-6);
+        assert.inDelta(x(3), 1.5, 1e-6);
+        assert.inDelta(x.invert(1.5), 3, 1e-6);
+        assert.inDelta(x.invert(3), 1.5, 1e-6);
+      }
+    },
+
+    "ticks": {
+      "generates ticks of varying degree": function(linear) {
+        var x = linear();
+        assert.deepEqual(x.ticks(1).map(x.tickFormat(1)), [0, 1]);
+        assert.deepEqual(x.ticks(2).map(x.tickFormat(2)), [0, .5, 1]);
+        assert.deepEqual(x.ticks(5).map(x.tickFormat(5)), [0, .2, .4, .6, .8, 1]);
+        assert.deepEqual(x.ticks(10).map(x.tickFormat(10)), [0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]);
+        var x = linear().domain([1, 0]);
+        assert.deepEqual(x.ticks(1).map(x.tickFormat(1)), [0, 1]);
+        assert.deepEqual(x.ticks(2).map(x.tickFormat(2)), [0, .5, 1]);
+        assert.deepEqual(x.ticks(5).map(x.tickFormat(5)), [0, .2, .4, .6, .8, 1]);
+        assert.deepEqual(x.ticks(10).map(x.tickFormat(10)), [0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]);
+      },
+      "formats ticks with the appropriate precision": function(linear) {
+        var x = linear().domain([.123456789, 1.23456789]);
+        assert.strictEqual(x.tickFormat(1)(x.ticks(1)[0]), "1");
+        assert.strictEqual(x.tickFormat(2)(x.ticks(2)[0]), "0.5");
+        assert.strictEqual(x.tickFormat(4)(x.ticks(4)[0]), "0.2");
+        assert.strictEqual(x.tickFormat(8)(x.ticks(8)[0]), "0.2");
+        assert.strictEqual(x.tickFormat(16)(x.ticks(16)[0]), "0.2");
+        assert.strictEqual(x.tickFormat(32)(x.ticks(32)[0]), "0.15");
+        assert.strictEqual(x.tickFormat(64)(x.ticks(64)[0]), "0.14");
+        assert.strictEqual(x.tickFormat(128)(x.ticks(128)[0]), "0.13");
+        assert.strictEqual(x.tickFormat(256)(x.ticks(256)[0]), "0.125");
+      }
+    },
+
+    "nice": {
+      "nices the domain, extending it to round numbers": function(linear) {
+        var x = linear().domain([1.1, 10.9]).nice();
+        assert.deepEqual(x.domain(), [1, 11]);
+        var x = linear().domain([10.9, 1.1]).nice();
+        assert.deepEqual(x.domain(), [11, 1]);
+        var x = linear().domain([.7, 11.001]).nice();
+        assert.deepEqual(x.domain(), [0, 12]);
+        var x = linear().domain([123.1, 6.7]).nice();
+        assert.deepEqual(x.domain(), [130, 0]);
+        var x = linear().domain([0, .49]).nice();
+        assert.deepEqual(x.domain(), [0, .5]);
+        var x = linear().domain([0, 0]).nice();
+        assert.deepEqual(x.domain(), [0, 0]);
+        var x = linear().domain([.5, .5]).nice();
+        assert.deepEqual(x.domain(), [.5, .5]);
+      },
+      "nicing a polylinear domain only affects the extent": function(linear) {
+        var x = linear().domain([1.1, 1, 2, 3, 10.9]).nice();
+        assert.deepEqual(x.domain(), [1, 1, 2, 3, 11]);
+        var x = linear().domain([123.1, 1, 2, 3, -.9]).nice();
+        assert.deepEqual(x.domain(), [130, 1, 2, 3, -10]);
+      }
+    },
+
+    "copy": {
+      "changes to the domain are isolated": function(linear) {
+        var x = linear(), y = x.copy();
+        x.domain([1, 2]);
+        assert.deepEqual(y.domain(), [0, 1]);
+        assert.equal(x(1), 0);
+        assert.equal(y(1), 1);
+        y.domain([2, 3]);
+        assert.equal(x(2), 1);
+        assert.equal(y(2), 0);
+        assert.deepEqual(x.domain(), [1, 2]);
+        assert.deepEqual(y.domain(), [2, 3]);
+      },
+      "changes to the range are isolated": function(linear) {
+        var x = linear(), y = x.copy();
+        x.range([1, 2]);
+        assert.equal(x.invert(1), 0);
+        assert.equal(y.invert(1), 1);
+        assert.deepEqual(y.range(), [0, 1]);
+        y.range([2, 3]);
+        assert.equal(x.invert(2), 1);
+        assert.equal(y.invert(2), 0);
+        assert.deepEqual(x.range(), [1, 2]);
+        assert.deepEqual(y.range(), [2, 3]);
+      },
+      "changes to the interpolator are isolated": function(linear) {
+        var x = linear().range(["red", "blue"]), y = x.copy();
+        x.interpolate(d3.interpolateHsl);
+        assert.equal(x(0.5), "#00ff00");
+        assert.equal(y(0.5), "#800080");
+        assert.equal(y.interpolate(), d3.interpolate);
+      },
+      "changes to clamping are isolated": function(linear) {
+        var x = linear().clamp(true), y = x.copy();
+        x.clamp(false);
+        assert.equal(x(2), 2);
+        assert.equal(y(2), 1);
+        assert.isTrue(y.clamp());
+        y.clamp(false);
+        assert.equal(x(2), 2);
+        assert.equal(y(2), 2);
+        assert.isFalse(x.clamp());
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/scale/log-test.js b/static/vendor/d3-2.8.1/test/scale/log-test.js
new file mode 100755 (executable)
index 0000000..f937b43
--- /dev/null
@@ -0,0 +1,275 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.scale.log");
+
+suite.addBatch({
+  "log": {
+    topic: function() {
+      return d3.scale.log;
+    },
+
+    "domain": {
+      "defaults to [1, 10]": function(log) {
+        var x = log();
+        assert.deepEqual(x.domain(), [1, 10]);
+        assert.inDelta(x(5), 0.69897, 1e-6);
+      },
+      "coerces domain values to numbers": function(log) {
+        var x = log().domain([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
+        assert.equal(typeof x.domain()[0], "number");
+        assert.equal(typeof x.domain()[1], "number");
+        assert.inDelta(x(new Date(1989, 09, 20)), -.2, 1e-2);
+        assert.inDelta(x(new Date(1990, 00, 01)), 0, 1e-2);
+        assert.inDelta(x(new Date(1990, 02, 15)), .2, 1e-2);
+        assert.inDelta(x(new Date(1990, 04, 27)), .4, 1e-2);
+        assert.inDelta(x(new Date(1991, 00, 01)), 1, 1e-2);
+        assert.inDelta(x(new Date(1991, 02, 15)), 1.2, 1e-2);
+        var x = log().domain(["1", "10"]);
+        assert.equal(typeof x.domain()[0], "number");
+        assert.equal(typeof x.domain()[1], "number");
+        assert.inDelta(x(5), 0.69897, 1e-6);
+        var x = log().domain([new Number(1), new Number(10)]);
+        assert.equal(typeof x.domain()[0], "number");
+        assert.equal(typeof x.domain()[1], "number");
+        assert.inDelta(x(5), 0.69897, 1e-6);
+      },
+      "can specify negative domain values": function(log) {
+        var x = log().domain([-100, -1]);
+        assert.deepEqual(x.ticks().map(x.tickFormat()), [
+          "−1e+2",
+          "−9e+1", "−8e+1", "−7e+1", "−6e+1", "−5e+1", "−4e+1", "−3e+1", "−2e+1", "−1e+1",
+          "−9e+0", "−8e+0", "−7e+0", "−6e+0", "−5e+0", "−4e+0", "−3e+0", "−2e+0", "−1e+0"
+        ]);
+        assert.inDelta(x(-50), 0.150515, 1e-6);
+      },
+      "can specify a polylog domain and range": function(log) {
+        var x = log().domain([.1, 1, 100]).range(["red", "white", "green"]);
+        assert.equal(x(.5), "#ffb2b2");
+        assert.equal(x(50), "#269326");
+        assert.equal(x(75), "#108810");
+      }
+    },
+
+    "range": {
+      "defaults to [0, 1]": function(log) {
+        var x = log();
+        assert.deepEqual(x.range(), [0, 1]);
+        assert.inDelta(x.invert(.5), 3.162278, 1e-6);
+      },
+      "does not coerce range to numbers": function(log) {
+        var x = log().range(["0", "2"]);
+        assert.equal(typeof x.range()[0], "string");
+        assert.equal(typeof x.range()[1], "string");
+      },
+      "can specify range values as colors": function(log) {
+        var x = log().range(["red", "blue"]);
+        assert.equal(x(5), "#4d00b2");
+        var x = log().range(["#ff0000", "#0000ff"]);
+        assert.equal(x(5), "#4d00b2");
+        var x = log().range(["#f00", "#00f"]);
+        assert.equal(x(5), "#4d00b2");
+        var x = log().range([d3.rgb(255,0,0), d3.hsl(240,1,.5)]);
+        assert.equal(x(5), "#4d00b2");
+        var x = log().range(["hsl(0,100%,50%)", "hsl(240,100%,50%)"]);
+        assert.equal(x(5), "#4d00b2");
+      },
+      "can specify range values as arrays or objects": function(log) {
+        var x = log().range([{color: "red"}, {color: "blue"}]);
+        assert.deepEqual(x(5), {color: "#4d00b2"});
+        var x = log().range([["red"], ["blue"]]);
+        assert.deepEqual(x(5), ["#4d00b2"]);
+      }
+    },
+
+    "interpolate": {
+      "defaults to d3.interpolate": function(log) {
+        var x = log().range(["red", "blue"]);
+        assert.equal(x.interpolate(), d3.interpolate);
+        assert.equal(x(5), "#4d00b2");
+      },
+      "can specify a custom interpolator": function(log) {
+        var x = log().range(["red", "blue"]).interpolate(d3.interpolateHsl);
+        assert.equal(x(5), "#00ffcb");
+      }
+    },
+
+    "clamp": {
+      "defaults to false": function(log) {
+        var x = log();
+        assert.isFalse(x.clamp());
+        assert.inDelta(x(.5), -0.3010299, 1e-6);
+        assert.inDelta(x(15), 1.1760913, 1e-6);
+      },
+      "can clamp to the domain": function(log) {
+        var x = log().clamp(true);
+        assert.inDelta(x(-1), 0, 1e-6);
+        assert.inDelta(x(5), 0.69897, 1e-6);
+        assert.inDelta(x(15), 1, 1e-6);
+        var x = log().domain([10, 1]).clamp(true);
+        assert.inDelta(x(-1), 1, 1e-6);
+        assert.inDelta(x(5), 0.30103, 1e-6);
+        assert.inDelta(x(15), 0, 1e-6);
+      },
+      "can clamp to the range": function(log) {
+        var x = log().clamp(true);
+        assert.inDelta(x.invert(-.1), 1, 1e-6);
+        assert.inDelta(x.invert(0.69897), 5, 1e-6);
+        assert.inDelta(x.invert(1.5), 10, 1e-6);
+        var x = log().domain([10, 1]).clamp(true);
+        assert.inDelta(x.invert(-.1), 10, 1e-6);
+        assert.inDelta(x.invert(0.30103), 5, 1e-6);
+        assert.inDelta(x.invert(1.5), 1, 1e-6);
+      }
+    },
+
+    "maps a number to a number": function(log) {
+      var x = log().domain([1, 2]);
+      assert.inDelta(x(.5), -1, 1e-6);
+      assert.inDelta(x(1), 0, 1e-6);
+      assert.inDelta(x(1.5), 0.5849625, 1e-6);
+      assert.inDelta(x(2), 1, 1e-6);
+      assert.inDelta(x(2.5), 1.3219281, 1e-6);
+    },
+
+    "invert": {
+      "maps a number to a number": function(log) {
+        var x = log().domain([1, 2]);
+        assert.inDelta(x.invert(-1), .5, 1e-6);
+        assert.inDelta(x.invert(0), 1, 1e-6);
+        assert.inDelta(x.invert(0.5849625), 1.5, 1e-6);
+        assert.inDelta(x.invert(1), 2, 1e-6);
+        assert.inDelta(x.invert(1.3219281), 2.5, 1e-6);
+      },
+      "coerces range value to number on invert": function(log) {
+        var x = log().range(["0", "2"]);
+        assert.inDelta(x.invert("1"), 3.1622777, 1e-6);
+        var x = log().range([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
+        assert.inDelta(x.invert(new Date(1990, 6, 2, 13)), 3.1622777, 1e-6);
+        var x = log().range(["#000", "#fff"]);
+        assert.isNaN(x.invert("#999"));
+      }
+    },
+
+    "ticks": {
+      "can generate ticks": function(log) {
+        var x = log();
+        assert.deepEqual(x.ticks().map(x.tickFormat()), [
+          "1e+0", "2e+0", "3e+0", "4e+0", "5e+0", "6e+0", "7e+0", "8e+0", "9e+0",
+          "1e+1"
+        ]);
+        var x = log().domain([100, 1]);
+        assert.deepEqual(x.ticks().map(x.tickFormat()), [
+          "1e+0", "2e+0", "3e+0", "4e+0", "5e+0", "6e+0", "7e+0", "8e+0", "9e+0",
+          "1e+1", "2e+1", "3e+1", "4e+1", "5e+1", "6e+1", "7e+1", "8e+1", "9e+1",
+          "1e+2"
+        ]);
+        var x = log().domain([0.49999, 0.006029505943610648]);
+        assert.deepEqual(x.ticks().map(x.tickFormat()), [
+          "7e-3", "8e-3", "9e-3", "1e-2", "2e-2", "3e-2", "4e-2", "5e-2",
+          "6e-2", "7e-2", "8e-2", "9e-2", "1e-1", "2e-1", "3e-1", "4e-1"
+        ]);
+        var x = log().domain([.95, 1.05e8]);
+        assert.deepEqual(x.ticks().map(x.tickFormat(8)).filter(String), [
+          '1e+0', '1e+1', '1e+2', '1e+3', '1e+4', '1e+5', '1e+6', '1e+7', '1e+8'
+        ]);
+      },
+      "can generate fewer ticks, if desired": function(log) {
+        var x = log();
+        assert.deepEqual(x.ticks().map(x.tickFormat(5)), [
+          "1e+0", "2e+0", "3e+0", "4e+0", "", "", "", "", "",
+          "1e+1"
+        ]);
+        var x = log().domain([100, 1]);
+        assert.deepEqual(x.ticks().map(x.tickFormat(10)), [
+          "1e+0", "2e+0", "3e+0", "4e+0", "5e+0", "", "", "", "",
+          "1e+1", "2e+1", "3e+1", "4e+1", "5e+1", "", "", "", "",
+          "1e+2"
+        ]);
+      },
+      "can override the tick format": function(log) {
+        var x = log().domain([1000.1, 1]);
+        assert.deepEqual(x.ticks().map(x.tickFormat(10, d3.format("+,d"))), [
+          "+1", "+2", "+3", "", "", "", "", "", "",
+          "+10", "+20", "+30", "", "", "", "", "", "",
+          "+100", "+200", "+300", "", "", "", "", "", "",
+          "+1,000"
+        ]);
+      }
+    },
+
+    "nice": {
+      "can nice the domain, extending it to powers of ten": function(log) {
+        var x = log().domain([1.1, 10.9]).nice();
+        assert.deepEqual(x.domain(), [1, 100]);
+        var x = log().domain([10.9, 1.1]).nice();
+        assert.deepEqual(x.domain(), [100, 1]);
+        var x = log().domain([.7, 11.001]).nice();
+        assert.deepEqual(x.domain(), [.1, 100]);
+        var x = log().domain([123.1, 6.7]).nice();
+        assert.deepEqual(x.domain(), [1000, 1]);
+        var x = log().domain([.01, .49]).nice();
+        assert.deepEqual(x.domain(), [.01, 1]);
+        var x = log().domain([0, 0]).nice();
+        assert.deepEqual(x.domain(), [0, 0]);
+        var x = log().domain([.5, .5]).nice();
+        assert.inDelta(x.domain(), [.5, .5], 1e-6);
+      },
+      "nicing a polylog domain only affects the extent": function(log) {
+        var x = log().domain([1.1, 1.5, 10.9]).nice();
+        assert.deepEqual(x.domain(), [1, 1.5, 100]);
+        var x = log().domain([-123.1, -1.5, -.5]).nice();
+        assert.deepEqual(x.domain(), [-1000, -1.5, -.1]);
+      }
+    },
+
+    "copy": {
+      "changes to the domain are isolated": function(log) {
+        var x = log(), y = x.copy();
+        x.domain([10, 100]);
+        assert.deepEqual(y.domain(), [1, 10]);
+        assert.equal(x(10), 0);
+        assert.equal(y(1), 0);
+        y.domain([100, 1000]);
+        assert.equal(x(100), 1);
+        assert.equal(y(100), 0);
+        assert.deepEqual(x.domain(), [10, 100]);
+        assert.deepEqual(y.domain().map(Math.round), [100, 1000]);
+      },
+      "changes to the range are isolated": function(log) {
+        var x = log(), y = x.copy();
+        x.range([1, 2]);
+        assert.equal(x.invert(1), 1);
+        assert.equal(y.invert(1), 10);
+        assert.deepEqual(y.range(), [0, 1]);
+        y.range([2, 3]);
+        assert.equal(x.invert(2), 10);
+        assert.equal(y.invert(2), 1);
+        assert.deepEqual(x.range(), [1, 2]);
+        assert.deepEqual(y.range(), [2, 3]);
+      },
+      "changes to the interpolator are isolated": function(log) {
+        var x = log().range(["red", "blue"]), y = x.copy();
+        x.interpolate(d3.interpolateHsl);
+        assert.equal(x(5), "#00ffcb");
+        assert.equal(y(5), "#4d00b2");
+        assert.equal(y.interpolate(), d3.interpolate);
+      },
+      "changes to clamping are isolated": function(log) {
+        var x = log().clamp(true), y = x.copy();
+        x.clamp(false);
+        assert.inDelta(x(.5), -0.30103, 1e-6);
+        assert.equal(y(.5), 0);
+        assert.isTrue(y.clamp());
+        y.clamp(false);
+        assert.inDelta(x(20), 1.30103, 1e-6);
+        assert.inDelta(y(20), 1.30103, 1e-6);
+        assert.isFalse(x.clamp());
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/scale/ordinal-test.js b/static/vendor/d3-2.8.1/test/scale/ordinal-test.js
new file mode 100755 (executable)
index 0000000..e7836d8
--- /dev/null
@@ -0,0 +1,245 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.scale.ordinal");
+
+suite.addBatch({
+  "ordinal": {
+    topic: function() {
+      return d3.scale.ordinal;
+    },
+
+    "domain": {
+      "defaults to the empty array": function(ordinal) {
+        assert.isEmpty(ordinal().domain());
+      },
+      "new input values are added to the domain": function(ordinal) {
+        var x = ordinal().range(["foo", "bar"]);
+        assert.equal(x(0), "foo");
+        assert.deepEqual(x.domain(), ["0"]);
+        assert.equal(x(1), "bar");
+        assert.deepEqual(x.domain(), ["0", "1"]);
+        assert.equal(x(0), "foo");
+        assert.deepEqual(x.domain(), ["0", "1"]);
+      },
+      "setting the domain forgets previous values": function(ordinal) {
+        var x = ordinal().range(["foo", "bar"]);
+        assert.equal(x(1), "foo");
+        assert.equal(x(0), "bar");
+        assert.deepEqual(x.domain(), [1, 0]);
+        x.domain(["0", "1"]);
+        assert.equal(x(0), "foo"); // it changed!
+        assert.equal(x(1), "bar");
+        assert.deepEqual(x.domain(), ["0", "1"]);
+      },
+      "uniqueness is based on string coercion": function(ordinal) {
+        var x = ordinal().domain(["foo"]).range([42, 43, 44]);
+        assert.equal(x(new String("foo")), 42);
+        assert.equal(x({toString: function() { return "foo"; }}), 42);
+        assert.equal(x({toString: function() { return "bar"; }}), 43);
+      },
+      "orders domain values by the order in which they are seen": function(ordinal) {
+        var x = ordinal();
+        x("foo");
+        x("bar");
+        x("baz");
+        assert.deepEqual(x.domain(), ["foo", "bar", "baz"]);
+        x.domain(["baz", "bar"]);
+        x("foo");
+        assert.deepEqual(x.domain(), ["baz", "bar", "foo"]);
+        x.domain(["baz", "foo"]);
+        assert.deepEqual(x.domain(), ["baz", "foo"]);
+        x.domain([]);
+        x("foo");
+        x("bar");
+        assert.deepEqual(x.domain(), ["foo", "bar"]);
+      },
+      "does not coerce domain values to strings": function(ordinal) {
+        var x = ordinal().domain([0, 1]);
+        assert.deepEqual(x.domain(), [0, 1]);
+        assert.typeOf(x.domain()[0], "number");
+        assert.typeOf(x.domain()[1], "number");
+      },
+      "does not barf on object built-ins": function(ordinal) {
+        var x = ordinal().domain(["__proto__", "hasOwnProperty"]).range([42, 43]);
+        assert.equal(x("__proto__"), 42);
+        assert.equal(x("hasOwnProperty"), 43);
+        assert.deepEqual(x.domain(), ["__proto__", "hasOwnProperty"]);
+      }
+    },
+
+    "range": {
+      "defaults to the empty array": function(ordinal) {
+        var x = ordinal();
+        assert.isEmpty(x.range());
+        assert.isUndefined(x(0));
+      },
+      "setting the range remembers previous values": function(ordinal) {
+        var x = ordinal();
+        assert.isUndefined(x(0));
+        assert.isUndefined(x(1));
+        x.range(["foo", "bar"]);
+        assert.equal(x(0), "foo");
+        assert.equal(x(1), "bar");
+      },
+      "recycles values when exhausted": function(ordinal) {
+        var x = ordinal().range(["a", "b", "c"]);
+        assert.equal(x(0), "a");
+        assert.equal(x(1), "b");
+        assert.equal(x(2), "c");
+        assert.equal(x(3), "a");
+        assert.equal(x(4), "b");
+        assert.equal(x(5), "c");
+        assert.equal(x(2), "c");
+        assert.equal(x(1), "b");
+        assert.equal(x(0), "a");
+      }
+    },
+
+    "maps distinct values to discrete values": function(ordinal) {
+      var x = ordinal().range(["a", "b", "c"]);
+      assert.equal(x(0), "a");
+      assert.equal(x("0"), "a");
+      assert.equal(x([0]), "a");
+      assert.equal(x(1), "b");
+      assert.equal(x(2.0), "c");
+      assert.equal(x(new Number(2)), "c");
+    },
+
+    "rangePoints": {
+      "computes discrete points in a continuous range": function(ordinal) {
+        var x = ordinal().domain(["a", "b", "c"]).rangePoints([0, 120]);
+        assert.deepEqual(x.range(), [0, 60, 120]);
+        assert.equal(x.rangeBand(), 0);
+        var x = ordinal().domain(["a", "b", "c"]).rangePoints([0, 120], 1);
+        assert.deepEqual(x.range(), [20, 60, 100]);
+        assert.equal(x.rangeBand(), 0);
+        var x = ordinal().domain(["a", "b", "c"]).rangePoints([0, 120], 2);
+        assert.deepEqual(x.range(), [30, 60, 90]);
+        assert.equal(x.rangeBand(), 0);
+      },
+      "can be set to a descending range": function(ordinal) {
+        var x = ordinal().domain(["a", "b", "c"]).rangePoints([120, 0]);
+        assert.deepEqual(x.range(), [120, 60,0]);
+        assert.equal(x.rangeBand(), 0);
+        var x = ordinal().domain(["a", "b", "c"]).rangePoints([120, 0], 1);
+        assert.deepEqual(x.range(), [100, 60, 20]);
+        assert.equal(x.rangeBand(), 0);
+        var x = ordinal().domain(["a", "b", "c"]).rangePoints([120, 0], 2);
+        assert.deepEqual(x.range(), [90, 60, 30]);
+        assert.equal(x.rangeBand(), 0);
+      }
+    },
+
+    "rangeBands": {
+      "computes discrete bands in a continuous range": function(ordinal) {
+        var x = ordinal().domain(["a", "b", "c"]).rangeBands([0, 120]);
+        assert.deepEqual(x.range(), [0, 40, 80]);
+        assert.equal(x.rangeBand(), 40);
+        var x = ordinal().domain(["a", "b", "c"]).rangeBands([0, 120], .2);
+        assert.deepEqual(x.range(), [7.5, 45, 82.5]);
+        assert.equal(x.rangeBand(), 30);
+      },
+      "setting domain recomputes range bands": function(ordinal) {
+        var x = ordinal().rangeRoundBands([0, 100]).domain(["a", "b", "c"]);
+        assert.deepEqual(x.range(), [1, 34, 67]);
+        assert.equal(x.rangeBand(), 33);
+        x.domain(["a", "b", "c", "d"]);
+        assert.deepEqual(x.range(), [0, 25, 50, 75]);
+        assert.equal(x.rangeBand(), 25);
+      },
+      "can be set to a descending range": function(ordinal) {
+        var x = ordinal().domain(["a", "b", "c"]).rangeBands([120, 0]);
+        assert.deepEqual(x.range(), [80, 40, 0]);
+        assert.equal(x.rangeBand(), 40);
+        var x = ordinal().domain(["a", "b", "c"]).rangeBands([120, 0], .2);
+        assert.deepEqual(x.range(), [82.5, 45, 7.5]);
+        assert.equal(x.rangeBand(), 30);
+      }
+    },
+
+    "rangeRoundBands": {
+      "computes discrete rounded bands in a continuous range": function(ordinal) {
+        var x = ordinal().domain(["a", "b", "c"]).rangeRoundBands([0, 100]);
+        assert.deepEqual(x.range(), [1, 34, 67]);
+        assert.equal(x.rangeBand(), 33);
+        var x = ordinal().domain(["a", "b", "c"]).rangeRoundBands([0, 100], .2);
+        assert.deepEqual(x.range(), [7, 38, 69]);
+        assert.equal(x.rangeBand(), 25);
+      },
+      "can be set to a descending range": function(ordinal) {
+        var x = ordinal().domain(["a", "b", "c"]).rangeRoundBands([100, 0]);
+        assert.deepEqual(x.range(), [67, 34, 1]);
+        assert.equal(x.rangeBand(), 33);
+        var x = ordinal().domain(["a", "b", "c"]).rangeRoundBands([100, 0], .2);
+        assert.deepEqual(x.range(), [69, 38, 7]);
+        assert.equal(x.rangeBand(), 25);
+      }
+    },
+
+    "rangeExtent": {
+      "returns the continuous range": function(ordinal) {
+        var x = ordinal().domain(["a", "b", "c"]).rangePoints([20, 120]);
+        assert.deepEqual(x.rangeExtent(), [20, 120]);
+        var x = ordinal().domain(["a", "b", "c"]).rangeBands([10, 110]);
+        assert.deepEqual(x.rangeExtent(), [10, 110]);
+        var x = ordinal().domain(["a", "b", "c"]).rangeRoundBands([0, 100]);
+        assert.deepEqual(x.rangeExtent(), [0, 100]);
+        var x = ordinal().domain(["a", "b", "c"]).range([0, 20, 100]);
+        assert.deepEqual(x.rangeExtent(), [0, 100]);
+      },
+      "can handle descending ranges": function(ordinal) {
+        var x = ordinal().domain(["a", "b", "c"]).rangeBands([100, 0]);
+        assert.deepEqual(x.rangeExtent(), [0, 100]);
+      }
+    },
+
+    "copy": {
+      "changes to the domain are isolated": function(ordinal) {
+        var x = ordinal().range(["foo", "bar"]), y = x.copy();
+        x.domain([1, 2]);
+        assert.deepEqual(y.domain(), []);
+        assert.equal(x(1), "foo");
+        assert.equal(y(1), "foo");
+        y.domain([2, 3]);
+        assert.equal(x(2), "bar");
+        assert.equal(y(2), "foo");
+        assert.deepEqual(x.domain(), ["1", "2"]);
+        assert.deepEqual(y.domain(), ["2", "3"]);
+      },
+      "changes to the range are isolated": function(ordinal) {
+        var x = ordinal().range(["foo", "bar"]), y = x.copy();
+        x.range(["bar", "foo"]);
+        assert.equal(x(1), "bar");
+        assert.equal(y(1), "foo");
+        assert.deepEqual(y.range(), ["foo", "bar"]);
+        y.range(["foo", "baz"]);
+        assert.equal(x(2), "foo");
+        assert.equal(y(2), "baz");
+        assert.deepEqual(x.range(), ["bar", "foo"]);
+        assert.deepEqual(y.range(), ["foo", "baz"]);
+      },
+      "changes to the range type are isolated": function(ordinal) {
+        var x = ordinal().domain([0, 1]).rangeBands([0, 1], .2), y = x.copy();
+        x.rangePoints([1, 2]);
+        assert.inDelta(x(0), 1, 1e-6);
+        assert.inDelta(x(1), 2, 1e-6);
+        assert.inDelta(x.rangeBand(), 0, 1e-6);
+        assert.inDelta(y(0), 1/11, 1e-6);
+        assert.inDelta(y(1), 6/11, 1e-6);
+        assert.inDelta(y.rangeBand(), 4/11, 1e-6);
+        y.rangeBands([0, 1]);
+        assert.inDelta(x(0), 1, 1e-6);
+        assert.inDelta(x(1), 2, 1e-6);
+        assert.inDelta(x.rangeBand(), 0, 1e-6);
+        assert.inDelta(y(0), 0, 1e-6);
+        assert.inDelta(y(1), 1/2, 1e-6);
+        assert.inDelta(y.rangeBand(), 1/2, 1e-6);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/scale/pow-test.js b/static/vendor/d3-2.8.1/test/scale/pow-test.js
new file mode 100755 (executable)
index 0000000..3909d89
--- /dev/null
@@ -0,0 +1,262 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.scale.pow");
+
+suite.addBatch({
+  "pow": {
+    topic: function() {
+      return d3.scale.pow;
+    },
+
+    "domain": {
+      "defaults to [0, 1]": function(pow) {
+        var x = pow();
+        assert.deepEqual(x.domain(), [0, 1]);
+        assert.inDelta(x(.5), .5, 1e-6);
+      },
+      "coerces domain to numbers": function(pow) {
+        var x = pow().domain([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
+        assert.equal(typeof x.domain()[0], "number");
+        assert.equal(typeof x.domain()[1], "number");
+        assert.inDelta(x(new Date(1989, 09, 20)), -.2, 1e-2);
+        assert.inDelta(x(new Date(1990, 00, 01)), 0, 1e-2);
+        assert.inDelta(x(new Date(1990, 02, 15)), .2, 1e-2);
+        assert.inDelta(x(new Date(1990, 04, 27)), .4, 1e-2);
+        assert.inDelta(x(new Date(1991, 00, 01)), 1, 1e-2);
+        assert.inDelta(x(new Date(1991, 02, 15)), 1.2, 1e-2);
+        var x = pow().domain(["0", "1"]);
+        assert.equal(typeof x.domain()[0], "number");
+        assert.equal(typeof x.domain()[1], "number");
+        assert.inDelta(x(.5), .5, 1e-6);
+        var x = pow().domain([new Number(0), new Number(1)]);
+        assert.equal(typeof x.domain()[0], "number");
+        assert.equal(typeof x.domain()[1], "number");
+        assert.inDelta(x(.5), .5, 1e-6);
+      },
+      "can specify a polypower domain and range": function(pow) {
+        var x = pow().domain([-10, 0, 100]).range(["red", "white", "green"]);
+        assert.equal(x(-5), "#ff8080");
+        assert.equal(x(50), "#80c080");
+        assert.equal(x(75), "#40a040");
+      }
+    },
+
+    "range": {
+      "defaults to [0, 1]": function(pow) {
+        var x = pow();
+        assert.deepEqual(x.range(), [0, 1]);
+        assert.inDelta(x.invert(.5), .5, 1e-6);
+      },
+      "does not coerce range values to numbers": function(pow) {
+        var x = pow().range(["0", "2"]);
+        assert.equal(typeof x.range()[0], "string");
+        assert.equal(typeof x.range()[1], "string");
+      },
+      "coerces range values to number on invert": function(pow) {
+        var x = pow().range(["0", "2"]);
+        assert.inDelta(x.invert("1"), .5, 1e-6);
+        var x = pow().range([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
+        assert.inDelta(x.invert(new Date(1990, 6, 2, 13)), .5, 1e-6);
+        var x = pow().range(["#000", "#fff"]);
+        assert.isNaN(x.invert("#999"));
+      },
+      "can specify range values as colors": function(pow) {
+        var x = pow().range(["red", "blue"]);
+        assert.equal(x(.5), "#800080");
+        var x = pow().range(["#ff0000", "#0000ff"]);
+        assert.equal(x(.5), "#800080");
+        var x = pow().range(["#f00", "#00f"]);
+        assert.equal(x(.5), "#800080");
+        var x = pow().range([d3.rgb(255,0,0), d3.hsl(240,1,.5)]);
+        assert.equal(x(.5), "#800080");
+        var x = pow().range(["hsl(0,100%,50%)", "hsl(240,100%,50%)"]);
+        assert.equal(x(.5), "#800080");
+      },
+      "can specify range values as arrays or objects": function(pow) {
+        var x = pow().range([{color: "red"}, {color: "blue"}]);
+        assert.deepEqual(x(.5), {color: "#800080"});
+        var x = pow().range([["red"], ["blue"]]);
+        assert.deepEqual(x(.5), ["#800080"]);
+      }
+    },
+
+    "exponent": {
+      "defaults to one": function(pow) {
+        var x = pow();
+        assert.equal(x.exponent(), 1);
+      },
+      "observes the specified exponent": function(pow) {
+        var x = pow().exponent(.5).domain([1, 2]);
+        assert.inDelta(x(1), 0, 1e-6);
+        assert.inDelta(x(1.5), 0.5425821, 1e-6);
+        assert.inDelta(x(2), 1, 1e-6);
+        assert.equal(x.exponent(), .5);
+        var x = pow().exponent(2).domain([1, 2]);
+        assert.inDelta(x(1), 0, 1e-6);
+        assert.inDelta(x(1.5), .41666667, 1e-6);
+        assert.inDelta(x(2), 1, 1e-6);
+        assert.equal(x.exponent(), 2);
+        var x = pow().exponent(-1).domain([1, 2]);
+        assert.inDelta(x(1), 0, 1e-6);
+        assert.inDelta(x(1.5), .6666667, 1e-6);
+        assert.inDelta(x(2), 1, 1e-6);
+        assert.equal(x.exponent(), -1);
+      },
+      "changing the exponent does not change the domain or range": function(pow) {
+        var x = pow().domain([1, 2]).range([3, 4]), f = d3.format(".6f");
+        x.exponent(.5);
+        assert.deepEqual(x.domain().map(f), [1, 2]);
+        assert.deepEqual(x.range(), [3, 4]);
+        x.exponent(2);
+        assert.deepEqual(x.domain().map(f), [1, 2]);
+        assert.deepEqual(x.range(), [3, 4]);
+        x.exponent(-1);
+        assert.deepEqual(x.domain().map(f), [1, 2]);
+        assert.deepEqual(x.range(), [3, 4]);
+      }
+    },
+
+    "interpolate": {
+      "defaults to d3.interpolate": function(pow) {
+        var x = pow().range(["red", "blue"]);
+        assert.equal(x.interpolate(), d3.interpolate);
+        assert.equal(x(.5), "#800080");
+      },
+      "can specify a custom interpolator": function(pow) {
+        var x = pow().range(["red", "blue"]).interpolate(d3.interpolateHsl);
+        assert.equal(x(.5), "#00ff00");
+      }
+    },
+
+    "clamp": {
+      "does not clamp by default": function(pow) {
+        var x = pow();
+        assert.isFalse(x.clamp());
+        assert.inDelta(x(-.5), -.5, 1e-6);
+        assert.inDelta(x(1.5), 1.5, 1e-6);
+      },
+      "can clamp to the domain": function(pow) {
+        var x = pow().clamp(true);
+        assert.inDelta(x(-.5), 0, 1e-6);
+        assert.inDelta(x(.5), .5, 1e-6);
+        assert.inDelta(x(1.5), 1, 1e-6);
+        var x = pow().domain([1, 0]).clamp(true);
+        assert.inDelta(x(-.5), 1, 1e-6);
+        assert.inDelta(x(.5), .5, 1e-6);
+        assert.inDelta(x(1.5), 0, 1e-6);
+      }
+    },
+
+    "maps a number to a number": function(pow) {
+      var x = pow().domain([1, 2]);
+      assert.inDelta(x(.5), -.5, 1e-6);
+      assert.inDelta(x(1), 0, 1e-6);
+      assert.inDelta(x(1.5), .5, 1e-6);
+      assert.inDelta(x(2), 1, 1e-6);
+      assert.inDelta(x(2.5), 1.5, 1e-6);
+    },
+
+    "ticks": {
+      "can generate ticks of varying degree": function(pow) {
+        var x = pow();
+        assert.deepEqual(x.ticks(1).map(x.tickFormat(1)), [0, 1]);
+        assert.deepEqual(x.ticks(2).map(x.tickFormat(2)), [0, .5, 1]);
+        assert.deepEqual(x.ticks(5).map(x.tickFormat(5)), [0, .2, .4, .6, .8, 1]);
+        assert.deepEqual(x.ticks(10).map(x.tickFormat(10)), [0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]);
+        var x = pow().domain([1, 0]);
+        assert.deepEqual(x.ticks(1).map(x.tickFormat(1)), [0, 1]);
+        assert.deepEqual(x.ticks(2).map(x.tickFormat(2)), [0, .5, 1]);
+        assert.deepEqual(x.ticks(5).map(x.tickFormat(5)), [0, .2, .4, .6, .8, 1]);
+        assert.deepEqual(x.ticks(10).map(x.tickFormat(10)), [0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]);
+      }
+    },
+
+    "nice": {
+      "can nice the domain, extending it to round numbers": function(pow) {
+        var x = pow().domain([1.1, 10.9]).nice();
+        assert.deepEqual(x.domain(), [1, 11]);
+        var x = pow().domain([10.9, 1.1]).nice();
+        assert.deepEqual(x.domain(), [11, 1]);
+        var x = pow().domain([.7, 11.001]).nice();
+        assert.deepEqual(x.domain(), [0, 12]);
+        var x = pow().domain([123.1, 6.7]).nice();
+        assert.deepEqual(x.domain(), [130, 0]);
+        var x = pow().domain([0, .49]).nice();
+        assert.deepEqual(x.domain(), [0, .5]);
+        var x = pow().domain([0, 0]).nice();
+        assert.deepEqual(x.domain(), [0, 0]);
+        var x = pow().domain([.5, .5]).nice();
+        assert.deepEqual(x.domain(), [.5, .5]);
+      },
+      "nicing a polypower domain only affects the extent": function(pow) {
+        var x = pow().domain([1.1, 1, 2, 3, 10.9]).nice();
+        assert.deepEqual(x.domain(), [1, 1, 2, 3, 11]);
+        var x = pow().domain([123.1, 1, 2, 3, -.9]).nice();
+        assert.deepEqual(x.domain(), [130, 1, 2, 3, -10]);
+      }
+    },
+
+    "copy": {
+      "changes to the domain are isolated": function(pow) {
+        var x = pow(), y = x.copy();
+        x.domain([1, 2]);
+        assert.deepEqual(y.domain(), [0, 1]);
+        assert.equal(x(1), 0);
+        assert.equal(y(1), 1);
+        y.domain([2, 3]);
+        assert.equal(x(2), 1);
+        assert.equal(y(2), 0);
+        assert.deepEqual(x.domain(), [1, 2]);
+        assert.deepEqual(y.domain(), [2, 3]);
+      },
+      "changes to the range are isolated": function(pow) {
+        var x = pow(), y = x.copy();
+        x.range([1, 2]);
+        assert.equal(x.invert(1), 0);
+        assert.equal(y.invert(1), 1);
+        assert.deepEqual(y.range(), [0, 1]);
+        y.range([2, 3]);
+        assert.equal(x.invert(2), 1);
+        assert.equal(y.invert(2), 0);
+        assert.deepEqual(x.range(), [1, 2]);
+        assert.deepEqual(y.range(), [2, 3]);
+      },
+      "changes to the exponent are isolated": function(pow) {
+        var x = pow().exponent(2), y = x.copy();
+        x.exponent(.5);
+        assert.inDelta(x(.5), Math.SQRT1_2, 1e-6);
+        assert.inDelta(y(.5), 0.25, 1e-6);
+        assert.equal(x.exponent(), .5);
+        assert.equal(y.exponent(), 2);
+        y.exponent(3);
+        assert.inDelta(x(.5), Math.SQRT1_2, 1e-6);
+        assert.inDelta(y(.5), 0.125, 1e-6);
+        assert.equal(x.exponent(), .5);
+        assert.equal(y.exponent(), 3);
+      },
+      "changes to the interpolator are isolated": function(pow) {
+        var x = pow().range(["red", "blue"]), y = x.copy();
+        x.interpolate(d3.interpolateHsl);
+        assert.equal(x(0.5), "#00ff00");
+        assert.equal(y(0.5), "#800080");
+        assert.equal(y.interpolate(), d3.interpolate);
+      },
+      "changes to clamping are isolated": function(pow) {
+        var x = pow().clamp(true), y = x.copy();
+        x.clamp(false);
+        assert.equal(x(2), 2);
+        assert.equal(y(2), 1);
+        assert.isTrue(y.clamp());
+        y.clamp(false);
+        assert.equal(x(2), 2);
+        assert.equal(y(2), 2);
+        assert.isFalse(x.clamp());
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/scale/quantile-test.js b/static/vendor/d3-2.8.1/test/scale/quantile-test.js
new file mode 100755 (executable)
index 0000000..c4d9436
--- /dev/null
@@ -0,0 +1,63 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.scale.quantile");
+
+suite.addBatch({
+  "quantile": {
+    topic: function() {
+      return d3.scale.quantile;
+    },
+    "has the empty domain by default": function(quantile) {
+      assert.isEmpty(quantile().domain());
+    },
+    "has the empty range by default": function(quantile) {
+      assert.isEmpty(quantile().range());
+    },
+    "uses the R-7 algorithm to compute quantiles": function(quantile) {
+      var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20]).range([0, 1, 2, 3]);
+      assert.deepEqual([3, 6, 6.9, 7, 7.1].map(x), [0, 0, 0, 0, 0]);
+      assert.deepEqual([8, 8.9].map(x), [1, 1]);
+      assert.deepEqual([9, 9.1, 10, 13].map(x), [2, 2, 2, 2]);
+      assert.deepEqual([14.9, 15, 15.1, 16, 20].map(x), [3, 3, 3, 3, 3]);
+      var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20]).range([0, 1, 2, 3]);
+      assert.deepEqual([3, 6, 6.9, 7, 7.1].map(x), [0, 0, 0, 0, 0]);
+      assert.deepEqual([8, 8.9].map(x), [1, 1]);
+      assert.deepEqual([9, 9.1, 10, 13].map(x), [2, 2, 2, 2]);
+      assert.deepEqual([14.9, 15, 15.1, 16, 20].map(x), [3, 3, 3, 3, 3]);
+    },
+    "domain values are sorted in ascending order": function(quantile) {
+      var x = d3.scale.quantile().domain([6, 3, 7, 8, 8, 13, 20, 15, 16, 10]);
+      assert.deepEqual(x.domain(), [3, 6, 7, 8, 8, 10, 13, 15, 16, 20]);
+    },
+    "non-numeric domain values are ignored": function(quantile) {
+      var x = d3.scale.quantile().domain([6, 3, NaN, undefined, 7, 8, 8, 13, 20, 15, 16, 10, NaN]);
+      assert.deepEqual(x.domain(), [3, 6, 7, 8, 8, 10, 13, 15, 16, 20]);
+    },
+    "quantiles returns the inner thresholds": function(quantile) {
+      var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20]).range([0, 1, 2, 3]);
+      assert.deepEqual(x.quantiles(), [7.25, 9, 14.5]);
+      var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20]).range([0, 1, 2, 3]);
+      assert.deepEqual(x.quantiles(), [7.5, 9, 14]);
+    },
+    "range cardinality determines the number of quantiles": function(quantile) {
+      var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20]);;
+      assert.deepEqual(x.range([0, 1, 2, 3]).quantiles(), [7.25, 9, 14.5]);
+      assert.deepEqual(x.range([0, 1]).quantiles(), [9]);
+      assert.deepEqual(x.range([,,,,,]).quantiles(), [6.8, 8, 11.2, 15.2]);
+      assert.deepEqual(x.range([,,,,,,]).quantiles(), [6.5, 8, 9, 13, 15.5]);
+    },
+    "range values are arbitrary": function(quantile) {
+      var a = new Object(), b = new Object(), c = new Object();
+      var x = d3.scale.quantile().domain([3, 6, 7, 8, 8, 10, 13, 15, 16, 20]).range([a, b, c, a]);
+      assert.deepEqual([3, 6, 6.9, 7, 7.1].map(x), [a, a, a, a, a]);
+      assert.deepEqual([8, 8.9].map(x), [b, b]);
+      assert.deepEqual([9, 9.1, 10, 13].map(x), [c, c, c, c]);
+      assert.deepEqual([14.9, 15, 15.1, 16, 20].map(x), [a, a, a, a, a]);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/scale/quantize-test.js b/static/vendor/d3-2.8.1/test/scale/quantize-test.js
new file mode 100755 (executable)
index 0000000..8ab7148
--- /dev/null
@@ -0,0 +1,68 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.scale.quantize");
+
+suite.addBatch({
+  "quantize": {
+    topic: function() {
+      return d3.scale.quantize;
+    },
+    "has the default domain [0, 1]": function(quantize) {
+      var x = quantize();
+      assert.deepEqual(x.domain(), [0, 1]);
+      assert.equal(x(.25), 0);
+    },
+    "has the default range [0, 1]": function(quantize) {
+      var x = quantize();
+      assert.deepEqual(x.range(), [0, 1]);
+      assert.equal(x(.75), 1);
+    },
+    "maps a number to a discrete value in the range": function(quantize) {
+      var x = quantize().range([0, 1, 2]);
+      assert.equal(x(0), 0);
+      assert.equal(x(.2), 0);
+      assert.equal(x(.4), 1);
+      assert.equal(x(.6), 1);
+      assert.equal(x(.8), 2);
+      assert.equal(x(1), 2);
+    },
+    "coerces domain to numbers": function(quantize) {
+      var x = quantize().domain(["0", "100"]);
+      assert.strictEqual(x.domain()[0], 0);
+      assert.strictEqual(x.domain()[1], 100);
+    },
+    "only considers the extent of the domain": function(quantize) {
+      var x = quantize().domain([-1, 0, 100]);
+      assert.deepEqual(x.domain(), [-1, 100]);
+    },
+    "clamps input values to the domain": function(quantize) {
+      var a = {}, b = {}, c = {}, x = quantize().range([a, b, c]);
+      assert.equal(x(-.5), a);
+      assert.equal(x(1.5), c);
+    },
+    "range cardinality determines the degree of quantization": function(quantize) {
+      var x = quantize();
+      assert.inDelta(x.range(d3.range(0, 1.001, .001))(1/3), .333, 1e-6);
+      assert.inDelta(x.range(d3.range(0, 1.01, .01))(1/3), .33, 1e-6);
+      assert.inDelta(x.range(d3.range(0, 1.1, .1))(1/3), .3, 1e-6);
+      assert.inDelta(x.range(d3.range(0, 1.2, .2))(1/3), .4, 1e-6);
+      assert.inDelta(x.range(d3.range(0, 1.25, .25))(1/3), .25, 1e-6);
+      assert.inDelta(x.range(d3.range(0, 1.5, .5))(1/3), .5, 1e-6);
+      assert.inDelta(x.range(d3.range(1))(1/3), 0, 1e-6);
+    },
+    "range values are arbitrary": function(quantize) {
+      var a = {}, b = {}, c = {}, x = quantize().range([a, b, c]);
+      assert.equal(x(0), a);
+      assert.equal(x(.2), a);
+      assert.equal(x(.4), b);
+      assert.equal(x(.6), b);
+      assert.equal(x(.8), c);
+      assert.equal(x(1), c);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/scale/sqrt-test.js b/static/vendor/d3-2.8.1/test/scale/sqrt-test.js
new file mode 100755 (executable)
index 0000000..be9e053
--- /dev/null
@@ -0,0 +1,255 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.scale.sqrt");
+
+suite.addBatch({
+  "sqrt": {
+    topic: function() {
+      return d3.scale.sqrt;
+    },
+
+    "domain": {
+      "defaults to [0, 1]": function(sqrt) {
+        var x = sqrt();
+        assert.deepEqual(x.domain(), [0, 1]);
+        assert.inDelta(x(.5), 0.7071068, 1e-6);
+      },
+      "coerces domain to numbers": function(sqrt) {
+        var x = sqrt().domain([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
+        assert.equal(typeof x.domain()[0], "number");
+        assert.equal(typeof x.domain()[1], "number");
+        assert.inDelta(x(new Date(1989, 09, 20)), -.2, 1e-2);
+        assert.inDelta(x(new Date(1990, 00, 01)), 0, 1e-2);
+        assert.inDelta(x(new Date(1990, 02, 15)), .2, 1e-2);
+        assert.inDelta(x(new Date(1990, 04, 27)), .4, 1e-2);
+        assert.inDelta(x(new Date(1991, 00, 01)), 1, 1e-2);
+        assert.inDelta(x(new Date(1991, 02, 15)), 1.2, 1e-2);
+        var x = sqrt().domain(["0", "1"]);
+        assert.equal(typeof x.domain()[0], "number");
+        assert.equal(typeof x.domain()[1], "number");
+        assert.inDelta(x(.5), 0.7071068, 1e-6);
+        var x = sqrt().domain([new Number(0), new Number(1)]);
+        assert.equal(typeof x.domain()[0], "number");
+        assert.equal(typeof x.domain()[1], "number");
+        assert.inDelta(x(.5), 0.7071068, 1e-6);
+      },
+      "can specify a polypower domain and range": function(sqrt) {
+        var x = sqrt().domain([-10, 0, 100]).range(["red", "white", "green"]);
+        assert.equal(x(-5), "#ff4b4b");
+        assert.equal(x(50), "#4ba54b");
+        assert.equal(x(75), "#229122");
+      }
+    },
+
+    "range": {
+      "defaults to [0, 1]": function(sqrt) {
+        var x = sqrt();
+        assert.deepEqual(x.range(), [0, 1]);
+        assert.inDelta(x.invert(.5), .25, 1e-6);
+      },
+      "does not coerce range to numbers": function(sqrt) {
+        var x = sqrt().range(["0", "2"]);
+        assert.equal(typeof x.range()[0], "string");
+        assert.equal(typeof x.range()[1], "string");
+      },
+      "coerces range value to number on invert": function(sqrt) {
+        var x = sqrt().range(["0", "2"]);
+        assert.inDelta(x.invert("1"), .25, 1e-6);
+        var x = sqrt().range([new Date(1990, 0, 1), new Date(1991, 0, 1)]);
+        assert.inDelta(x.invert(new Date(1990, 6, 2, 13)), .25, 1e-6);
+        var x = sqrt().range(["#000", "#fff"]);
+        assert.isNaN(x.invert("#999"));
+      },
+      "can specify range values as colors": function(sqrt) {
+        var x = sqrt().range(["red", "blue"]);
+        assert.equal(x(.25), "#800080");
+        var x = sqrt().range(["#ff0000", "#0000ff"]);
+        assert.equal(x(.25), "#800080");
+        var x = sqrt().range(["#f00", "#00f"]);
+        assert.equal(x(.25), "#800080");
+        var x = sqrt().range([d3.rgb(255,0,0), d3.hsl(240,1,.5)]);
+        assert.equal(x(.25), "#800080");
+        var x = sqrt().range(["hsl(0,100%,50%)", "hsl(240,100%,50%)"]);
+        assert.equal(x(.25), "#800080");
+      },
+      "can specify range values as arrays or objects": function(sqrt) {
+        var x = sqrt().range([{color: "red"}, {color: "blue"}]);
+        assert.deepEqual(x(.25), {color: "#800080"});
+        var x = sqrt().range([["red"], ["blue"]]);
+        assert.deepEqual(x(.25), ["#800080"]);
+      }
+    },
+
+    "exponent": {
+      "defaults to .5": function(sqrt) {
+        var x = sqrt();
+        assert.equal(x.exponent(), .5);
+      },
+      "observes the specified exponent": function(sqrt) {
+        var x = sqrt().exponent(.5).domain([1, 2]);
+        assert.inDelta(x(1), 0, 1e-6);
+        assert.inDelta(x(1.5), 0.5425821, 1e-6);
+        assert.inDelta(x(2), 1, 1e-6);
+        var x = sqrt().exponent(2).domain([1, 2]);
+        assert.inDelta(x(1), 0, 1e-6);
+        assert.inDelta(x(1.5), .41666667, 1e-6);
+        assert.inDelta(x(2), 1, 1e-6);
+        var x = sqrt().exponent(-1).domain([1, 2]);
+        assert.inDelta(x(1), 0, 1e-6);
+        assert.inDelta(x(1.5), .6666667, 1e-6);
+        assert.inDelta(x(2), 1, 1e-6);
+      },
+      "changing the exponent does not change the domain or range": function(sqrt) {
+        var x = sqrt().domain([1, 2]).range([3, 4]), f = d3.format(".6f");
+        x.exponent(.5);
+        assert.deepEqual(x.domain().map(f), [1, 2]);
+        assert.deepEqual(x.range(), [3, 4]);
+        x.exponent(2);
+        assert.deepEqual(x.domain().map(f), [1, 2]);
+        assert.deepEqual(x.range(), [3, 4]);
+        x.exponent(-1);
+        assert.deepEqual(x.domain().map(f), [1, 2]);
+        assert.deepEqual(x.range(), [3, 4]);
+      }
+    },
+
+    "interpolate": {
+      "defaults to d3.interpolate": function(sqrt) {
+        var x = sqrt().range(["red", "blue"]);
+        assert.equal(x.interpolate(), d3.interpolate);
+        assert.equal(x(.5), "#4b00b4");
+      },
+      "can specify a custom interpolator": function(sqrt) {
+        var x = sqrt().range(["red", "blue"]).interpolate(d3.interpolateHsl);
+        assert.equal(x(.25), "#00ff00");
+      }
+    },
+
+    "clamp": {
+      "defaults to false": function(sqrt) {
+        var x = sqrt();
+        assert.isFalse(x.clamp());
+        assert.inDelta(x(-.5), -0.7071068, 1e-6);
+        assert.inDelta(x(1.5), 1.22474487, 1e-6);
+      },
+      "can clamp to the domain": function(sqrt) {
+        var x = sqrt().clamp(true);
+        assert.inDelta(x(-.5), 0, 1e-6);
+        assert.inDelta(x(.25), .5, 1e-6);
+        assert.inDelta(x(1.5), 1, 1e-6);
+        var x = sqrt().domain([1, 0]).clamp(true);
+        assert.inDelta(x(-.5), 1, 1e-6);
+        assert.inDelta(x(.25), .5, 1e-6);
+        assert.inDelta(x(1.5), 0, 1e-6);
+      }
+    },
+
+    "maps a number to a number": function(sqrt) {
+      var x = sqrt().domain([1, 2]);
+      assert.inDelta(x(.5), -0.7071068, 1e-6);
+      assert.inDelta(x(1), 0, 1e-6);
+      assert.inDelta(x(1.5), 0.5425821, 1e-6);
+      assert.inDelta(x(2), 1, 1e-6);
+      assert.inDelta(x(2.5), 1.4029932, 1e-6);
+    },
+
+    "ticks": {
+      "can generate ticks of varying degree": function(sqrt) {
+        var x = sqrt();
+        assert.deepEqual(x.ticks(1).map(x.tickFormat(1)), [0, 1]);
+        assert.deepEqual(x.ticks(2).map(x.tickFormat(2)), [0, .5, 1]);
+        assert.deepEqual(x.ticks(5).map(x.tickFormat(5)), [0, .2, .4, .6, .8, 1]);
+        assert.deepEqual(x.ticks(10).map(x.tickFormat(10)), [0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]);
+        var x = sqrt().domain([1, 0]);
+        assert.deepEqual(x.ticks(1).map(x.tickFormat(1)), [0, 1]);
+        assert.deepEqual(x.ticks(2).map(x.tickFormat(2)), [0, .5, 1]);
+        assert.deepEqual(x.ticks(5).map(x.tickFormat(5)), [0, .2, .4, .6, .8, 1]);
+        assert.deepEqual(x.ticks(10).map(x.tickFormat(10)), [0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1]);
+      }
+    },
+
+    "nice": {
+      "can nice the domain, extending it to round numbers": function(sqrt) {
+        var x = sqrt().domain([1.1, 10.9]).nice(), f = d3.format(".6f");
+        assert.deepEqual(x.domain().map(f), [1, 11]);
+        var x = sqrt().domain([10.9, 1.1]).nice();
+        assert.deepEqual(x.domain().map(f), [11, 1]);
+        var x = sqrt().domain([.7, 11.001]).nice();
+        assert.deepEqual(x.domain().map(f), [0, 12]);
+        var x = sqrt().domain([123.1, 6.7]).nice();
+        assert.deepEqual(x.domain().map(f), [130, 0]);
+        var x = sqrt().domain([0, .49]).nice();
+        assert.deepEqual(x.domain().map(f), [0, .5]);
+      },
+      "nicing a polypower domain only affects the extent": function(sqrt) {
+        var x = sqrt().domain([1.1, 1, 2, 3, 10.9]).nice(), f = d3.format(".6f");
+        assert.deepEqual(x.domain().map(f), [1, 1, 2, 3, 11]);
+        var x = sqrt().domain([123.1, 1, 2, 3, -.9]).nice();
+        assert.deepEqual(x.domain().map(f), [130, 1, 2, 3, "−10.000000"]);
+      }
+    },
+
+    "copy": {
+      "changes to the domain are isolated": function(sqrt) {
+        var x = sqrt(), y = x.copy();
+        x.domain([1, 2]);
+        assert.deepEqual(y.domain(), [0, 1]);
+        assert.equal(x(1), 0);
+        assert.equal(y(1), 1);
+        y.domain([2, 3]);
+        assert.equal(x(2), 1);
+        assert.equal(y(2), 0);
+        assert.inDelta(x.domain(), [1, 2], 1e-6);
+        assert.inDelta(y.domain(), [2, 3], 1e-6);
+      },
+      "changes to the range are isolated": function(sqrt) {
+        var x = sqrt(), y = x.copy();
+        x.range([1, 2]);
+        assert.equal(x.invert(1), 0);
+        assert.equal(y.invert(1), 1);
+        assert.deepEqual(y.range(), [0, 1]);
+        y.range([2, 3]);
+        assert.equal(x.invert(2), 1);
+        assert.equal(y.invert(2), 0);
+        assert.deepEqual(x.range(), [1, 2]);
+        assert.deepEqual(y.range(), [2, 3]);
+      },
+      "changes to the exponent are isolated": function(sqrt) {
+        var x = sqrt().exponent(2), y = x.copy();
+        x.exponent(.5);
+        assert.inDelta(x(.5), Math.SQRT1_2, 1e-6);
+        assert.inDelta(y(.5), 0.25, 1e-6);
+        assert.equal(x.exponent(), .5);
+        assert.equal(y.exponent(), 2);
+        y.exponent(3);
+        assert.inDelta(x(.5), Math.SQRT1_2, 1e-6);
+        assert.inDelta(y(.5), 0.125, 1e-6);
+        assert.equal(x.exponent(), .5);
+        assert.equal(y.exponent(), 3);
+      },
+      "changes to the interpolator are isolated": function(sqrt) {
+        var x = sqrt().range(["red", "blue"]), y = x.copy();
+        x.interpolate(d3.interpolateHsl);
+        assert.equal(x(0.5), "#00ffd3");
+        assert.equal(y(0.5), "#4b00b4");
+        assert.equal(y.interpolate(), d3.interpolate);
+      },
+      "changes to clamping are isolated": function(sqrt) {
+        var x = sqrt().clamp(true), y = x.copy();
+        x.clamp(false);
+        assert.equal(x(2), Math.SQRT2);
+        assert.equal(y(2), 1);
+        assert.isTrue(y.clamp());
+        y.clamp(false);
+        assert.equal(x(2), Math.SQRT2);
+        assert.equal(y(2), Math.SQRT2);
+        assert.isFalse(x.clamp());
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/svg/arc-test.js b/static/vendor/d3-2.8.1/test/svg/arc-test.js
new file mode 100755 (executable)
index 0000000..8fd725d
--- /dev/null
@@ -0,0 +1,146 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.svg.arc");
+
+suite.addBatch({
+  "arc": {
+    topic: function() {
+      return d3.svg.arc;
+    },
+
+    "innerRadius defaults to a function accessor": function(arc) {
+      var a = arc().outerRadius(100).startAngle(0).endAngle(Math.PI);
+      assert.pathEqual(a({innerRadius: 0}), "M0,-100A100,100 0 1,1 0,100L0,0Z");
+      assert.pathEqual(a({innerRadius: 50}), "M0,-100A100,100 0 1,1 0,100L0,50A50,50 0 1,0 0,-50Z");
+    },
+    "innerRadius can be defined as a constant": function(arc) {
+      var a = arc().outerRadius(100).startAngle(0).endAngle(Math.PI);
+      assert.pathEqual(a.innerRadius(0)(), "M0,-100A100,100 0 1,1 0,100L0,0Z");
+      assert.pathEqual(a.innerRadius(50)(), "M0,-100A100,100 0 1,1 0,100L0,50A50,50 0 1,0 0,-50Z");
+    },
+    "innerRadius can be defined as a function of data or index": function(arc) {
+      var a = arc().innerRadius(f).outerRadius(100).startAngle(0).endAngle(Math.PI), o = {}, t = {}, dd, ii, tt;
+      function f(d, i) { dd = d; ii = i; tt = this; return 42; }
+      assert.pathEqual(a.call(t, o, 2), "M0,-100A100,100 0 1,1 0,100L0,42A42,42 0 1,0 0,-42Z");
+      assert.equal(dd, o, "expected data, got {actual}");
+      assert.equal(ii, 2, "expected index, got {actual}");
+      assert.equal(tt, t, "expected this, got {actual}");
+    },
+
+    "outerRadius defaults to a function accessor": function(arc) {
+      var a = arc().innerRadius(0).startAngle(0).endAngle(Math.PI);
+      assert.pathEqual(a({outerRadius: 50}), "M0,-50A50,50 0 1,1 0,50L0,0Z");
+      assert.pathEqual(a({outerRadius: 100}), "M0,-100A100,100 0 1,1 0,100L0,0Z");
+    },
+    "outerRadius can be defined as a constant": function(arc) {
+      var a = arc().innerRadius(0).startAngle(0).endAngle(Math.PI);
+      assert.pathEqual(a.outerRadius(50)(), "M0,-50A50,50 0 1,1 0,50L0,0Z");
+      assert.pathEqual(a.outerRadius(100)(), "M0,-100A100,100 0 1,1 0,100L0,0Z");
+    },
+    "outerRadius can be defined as a function of data or index": function(arc) {
+      var a = arc().innerRadius(0).outerRadius(f).startAngle(0).endAngle(Math.PI), o = {}, t = {}, dd, ii, tt;
+      function f(d, i) { dd = d; ii = i; tt = this; return 42; }
+      assert.pathEqual(a.call(t, o, 2), "M0,-42A42,42 0 1,1 0,42L0,0Z");
+      assert.equal(dd, o, "expected data, got {actual}");
+      assert.equal(ii, 2, "expected index, got {actual}");
+      assert.equal(tt, t, "expected this, got {actual}");
+    },
+
+    "startAngle defaults to a function accessor": function(arc) {
+      var a = arc().innerRadius(0).outerRadius(100).endAngle(Math.PI);
+      assert.pathEqual(a({startAngle: 0}), "M0,-100A100,100 0 1,1 0,100L0,0Z");
+      assert.pathEqual(a({startAngle: Math.PI / 2}), "M100,0A100,100 0 0,1 0,100L0,0Z");
+    },
+    "startAngle can be defined as a constant": function(arc) {
+      var a = arc().innerRadius(0).outerRadius(100).endAngle(Math.PI);
+      assert.pathEqual(a.startAngle(0)(), "M0,-100A100,100 0 1,1 0,100L0,0Z");
+      assert.pathEqual(a.startAngle(Math.PI / 2)(), "M100,0A100,100 0 0,1 0,100L0,0Z");
+    },
+    "startAngle can be defined as a function of data or index": function(arc) {
+      var a = arc().innerRadius(0).outerRadius(100).startAngle(f).endAngle(Math.PI), o = {}, t = {}, dd, ii, tt;
+      function f(d, i) { dd = d; ii = i; tt = this; return Math.PI; }
+      assert.pathEqual(a.call(t, o, 2), "M0,100A100,100 0 0,1 0,100L0,0Z");
+      assert.equal(dd, o, "expected data, got {actual}");
+      assert.equal(ii, 2, "expected index, got {actual}");
+      assert.equal(tt, t, "expected this, got {actual}");
+    },
+
+    "endAngle defaults to a function accessor": function(arc) {
+      var a = arc().innerRadius(0).outerRadius(100).startAngle(0);
+      assert.pathEqual(a({endAngle: Math.PI / 2}), "M0,-100A100,100 0 0,1 100,0L0,0Z");
+      assert.pathEqual(a({endAngle: Math.PI}), "M0,-100A100,100 0 1,1 0,100L0,0Z");
+    },
+    "endAngle can be defined as a constant": function(arc) {
+      var a = arc().innerRadius(0).outerRadius(100).startAngle(0);
+      assert.pathEqual(a.endAngle(Math.PI / 2)(), "M0,-100A100,100 0 0,1 100,0L0,0Z");
+      assert.pathEqual(a.endAngle(Math.PI)(), "M0,-100A100,100 0 1,1 0,100L0,0Z");
+    },
+    "endAngle can be defined as a function of data or index": function(arc) {
+      var a = arc().innerRadius(0).outerRadius(100).startAngle(0).endAngle(f), o = {}, t = {}, dd, ii, tt;
+      function f(d, i) { dd = d; ii = i; tt = this; return Math.PI; }
+      assert.pathEqual(a.call(t, o, 2), "M0,-100A100,100 0 1,1 0,100L0,0Z");
+      assert.equal(dd, o, "expected data, got {actual}");
+      assert.equal(ii, 2, "expected index, got {actual}");
+      assert.equal(tt, t, "expected this, got {actual}");
+    },
+
+    "startAngle and endAngle are swapped if endAngle is less than startAngle": function(arc) {
+      var a = arc().innerRadius(50).outerRadius(100);
+      assert.pathEqual(a.startAngle(2 * Math.PI).endAngle(Math.PI)(), a.startAngle(Math.PI).endAngle(2 * Math.PI)());
+      assert.pathEqual(a.startAngle(-Math.PI).endAngle(Math.PI)(), a.startAngle(Math.PI).endAngle(-Math.PI)());
+    },
+
+    "angles are defined in radians, with zero at 12 o'clock": function(arc) {
+      var a = arc().innerRadius(0).outerRadius(100);
+      assert.pathEqual(a.startAngle(0).endAngle(Math.PI)(), "M0,-100A100,100 0 1,1 0,100L0,0Z");
+      assert.pathEqual(a.startAngle(Math.PI).endAngle(2 * Math.PI)(), "M0,100A100,100 0 1,1 0,-100L0,0Z");
+    },
+    "radii are defined in local coordinates (typically pixels)": function(arc) {
+      var a = arc().startAngle(0).endAngle(Math.PI);
+      assert.pathEqual(a.innerRadius(0).outerRadius(100)(), "M0,-100A100,100 0 1,1 0,100L0,0Z");
+      assert.pathEqual(a.innerRadius(100).outerRadius(200)(), "M0,-200A200,200 0 1,1 0,200L0,100A100,100 0 1,0 0,-100Z");
+    },
+    "draws a circle when inner radius is zero and angle is approximately 2Ï€": function(arc) {
+      var a = arc().innerRadius(0).outerRadius(100);
+      assert.pathEqual(a.startAngle(0).endAngle(2 * Math.PI - 1e-9)(), "M0,100A100,100 0 1,1 0,-100A100,100 0 1,1 0,100Z");
+      assert.pathEqual(a.startAngle(Math.PI + 1e-9).endAngle(3 * Math.PI - 1e-9)(), "M0,100A100,100 0 1,1 0,-100A100,100 0 1,1 0,100Z");
+    },
+    "draws a circle when inner radius is zero and angle is greater than 2Ï€": function(arc) {
+      var a = arc().innerRadius(0).outerRadius(100);
+      assert.pathEqual(a.startAngle(0).endAngle(7)(), "M0,100A100,100 0 1,1 0,-100A100,100 0 1,1 0,100Z");
+      assert.pathEqual(a.startAngle(1).endAngle(8)(), "M0,100A100,100 0 1,1 0,-100A100,100 0 1,1 0,100Z");
+    },
+    "draws a circular sector when inner radius is zero and angle is less than 2Ï€": function(arc) {
+      var a = arc().innerRadius(0).outerRadius(100);
+      assert.pathEqual(a.startAngle(0).endAngle(Math.PI / 2)(), "M0,-100A100,100 0 0,1 100,0L0,0Z");
+    },
+    "draws an annulus when inner radius is non-zero and angle is approximately 2Ï€": function(arc) {
+      var a = arc().innerRadius(100).outerRadius(200);
+      assert.pathEqual(a.startAngle(0).endAngle(2 * Math.PI - 1e-9)(), "M0,200A200,200 0 1,1 0,-200A200,200 0 1,1 0,200M0,100A100,100 0 1,0 0,-100A100,100 0 1,0 0,100Z");
+      assert.pathEqual(a.startAngle(Math.PI + 1e-9).endAngle(3 * Math.PI - 1e-9)(), "M0,200A200,200 0 1,1 0,-200A200,200 0 1,1 0,200M0,100A100,100 0 1,0 0,-100A100,100 0 1,0 0,100Z");
+    },
+    "draws an annulus when inner radius is non-zero and angle is greater than 2Ï€": function(arc) {
+      var a = arc().innerRadius(100).outerRadius(200);
+      assert.pathEqual(a.startAngle(0).endAngle(7)(), "M0,200A200,200 0 1,1 0,-200A200,200 0 1,1 0,200M0,100A100,100 0 1,0 0,-100A100,100 0 1,0 0,100Z");
+      assert.pathEqual(a.startAngle(-1).endAngle(6)(), "M0,200A200,200 0 1,1 0,-200A200,200 0 1,1 0,200M0,100A100,100 0 1,0 0,-100A100,100 0 1,0 0,100Z");
+    },
+    "draws an annular sector when both radii are non-zero and angle is less than 2Ï€": function(arc) {
+      var a = arc().innerRadius(100).outerRadius(200);
+      assert.pathEqual(a.startAngle(0).endAngle(Math.PI / 2)(), "M0,-200A200,200 0 0,1 200,0L100,0A100,100 0 0,0 0,-100Z");
+    },
+
+    "computes the centroid as mid-radius and mid-angle": function(arc) {
+      var c = arc().innerRadius(0).outerRadius(100).startAngle(0).endAngle(2 * Math.PI).centroid();
+      assert.inDelta(c[0], 0, 1e-6);
+      assert.inDelta(c[1], 50, 1e-6);
+      var c = arc().innerRadius(100).outerRadius(200).startAngle(Math.PI).endAngle(2 * Math.PI).centroid();
+      assert.inDelta(c[0], -150, 1e-6);
+      assert.inDelta(c[1], 0, 1e-6);
+    },
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/svg/area-radial-test.js b/static/vendor/d3-2.8.1/test/svg/area-radial-test.js
new file mode 100755 (executable)
index 0000000..9d45bdc
--- /dev/null
@@ -0,0 +1,199 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.svg.area.radial");
+
+suite.addBatch({
+  "area.radial": {
+    topic: function() {
+      return d3.svg.area.radial;
+    },
+
+    "radius is an alias for setting innerRadius and outerRadius": function(area) {
+      var a = area().radius(f);
+      function f() {}
+      assert.equal(a.radius(), f);
+      assert.equal(a.innerRadius(), f);
+      assert.equal(a.outerRadius(), f);
+    },
+    "radius is an alias for getting outerRadius": function(area) {
+      var a = area().outerRadius(f);
+      function f() {}
+      assert.equal(a.radius(), f);
+    },
+
+    "angle is an alias for setting startAngle and endAngle": function(area) {
+      var a = area().angle(f);
+      function f() {}
+      assert.equal(a.angle(), f);
+      assert.equal(a.startAngle(), f);
+      assert.equal(a.endAngle(), f);
+    },
+    "angle is an alias for getting endAngle": function(area) {
+      var a = area().endAngle(f);
+      function f() {}
+      assert.equal(a.angle(), f);
+    },
+
+    "innerRadius defaults to a function accessor": function(area) {
+      var a = area();
+      assert.pathEqual(a([[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-10L16.829420,-10.806046L18.185949,8.322937L1.411200,9.899925L0,-10L0,-20L0,-20L0,-10Z");
+      assert.typeOf(a.innerRadius(), "function");
+    },
+    "innerRadius can be defined as a constant": function(area) {
+      var a = area().innerRadius(30);
+      assert.pathEqual(a([[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-10L16.829420,-10.806046L18.185949,8.322937L1.411200,9.899925L0,-30L0,-30L0,-30L0,-30Z");
+      assert.equal(a.innerRadius(), 30);
+    },
+    "innerRadius can be defined as a function": function(area) {
+      var a = area().innerRadius(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 30; }
+      assert.pathEqual(a.call(t, [[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-10L16.829420,-10.806046L18.185949,8.322937L1.411200,9.899925L0,-30L0,-30L0,-30L0,-30Z");
+      assert.deepEqual(dd, [[10, 0], [20, 1], [20, 2], [10, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1, 2, 3], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t, t, t], "expected this, got {actual}");
+    },
+
+    "outerRadius defaults to a function accessor": function(area) {
+      var a = area();
+      assert.pathEqual(a([[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-10L16.829420,-10.806046L18.185949,8.322937L1.411200,9.899925L0,-10L0,-20L0,-20L0,-10Z");
+      assert.typeOf(a.outerRadius(), "function");
+    },
+    "outerRadius can be defined as a constant": function(area) {
+      var a = area().outerRadius(30);
+      assert.pathEqual(a([[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-30L25.244130,-16.209069L27.278923,12.484405L4.233600,29.699775L0,-10L0,-20L0,-20L0,-10Z");
+      assert.equal(a.outerRadius(), 30);
+    },
+    "outerRadius can be defined as a function": function(area) {
+      var a = area().outerRadius(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 30; }
+      assert.pathEqual(a.call(t, [[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-30L25.244130,-16.209069L27.278923,12.484405L4.233600,29.699775L0,-10L0,-20L0,-20L0,-10Z");
+      assert.deepEqual(dd, [[10, 0], [20, 1], [20, 2], [10, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1, 2, 3], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t, t, t], "expected this, got {actual}");
+    },
+
+    "startAngle defaults to zero": function(area) {
+      var a = area();
+      assert.pathEqual(a([[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-10L16.829420,-10.806046L18.185949,8.322937L1.411200,9.899925L0,-10L0,-20L0,-20L0,-10Z");
+      assert.equal(a.startAngle(), 0);
+    },
+    "startAngle can be defined as a constant": function(area) {
+      var a = area().startAngle(Math.PI / 2);
+      assert.pathEqual(a([[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-10L16.829420,-10.806046L18.185949,8.322937L1.411200,9.899925L10,0L20,0L20,0L10,0Z");
+      assert.equal(a.startAngle(), Math.PI / 2);
+    },
+    "startAngle can be defined as a function": function(area) {
+      var a = area().startAngle(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return Math.PI / 2; }
+      assert.pathEqual(a.call(t, [[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-10L16.829420,-10.806046L18.185949,8.322937L1.411200,9.899925L10,0L20,0L20,0L10,0Z");
+      assert.deepEqual(dd, [[10, 0], [20, 1], [20, 2], [10, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1, 2, 3], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t, t, t], "expected this, got {actual}");
+    },
+
+    "endAngle defaults to a function accessor": function(area) {
+      var a = area();
+      assert.pathEqual(a([[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-10L16.829420,-10.806046L18.185949,8.322937L1.411200,9.899925L0,-10L0,-20L0,-20L0,-10Z");
+      assert.typeOf(a.endAngle(), "function");
+    },
+    "endAngle can be defined as a constant": function(area) {
+      var a = area().endAngle(Math.PI / 2);
+      assert.pathEqual(a([[10, 0], [20, 1], [20, 2], [10, 3]]), "M10,0L20,0L20,0L10,0L0,-10L0,-20L0,-20L0,-10Z");
+      assert.equal(a.endAngle(), Math.PI / 2);
+    },
+    "endAngle can be defined as a function": function(area) {
+      var a = area().endAngle(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return Math.PI / 2; }
+      assert.pathEqual(a.call(t, [[10, 0], [20, 1], [20, 2], [10, 3]]), "M10,0L20,0L20,0L10,0L0,-10L0,-20L0,-20L0,-10Z");
+      assert.deepEqual(dd, [[10, 0], [20, 1], [20, 2], [10, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1, 2, 3], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t, t, t], "expected this, got {actual}");
+    },
+
+    "if innerRadius === outerRadius, radius is only evaluated once per point": function(area) {
+      var a = area().radius(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 30; }
+      assert.pathEqual(a.call(t, [[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-30L25.244130,-16.209069L27.278923,12.484405L4.233600,29.699775L0,-30L0,-30L0,-30L0,-30Z");
+      assert.deepEqual(dd, [[10, 0], [20, 1], [20, 2], [10, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1, 2, 3], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t, t, t], "expected this, got {actual}");
+    },
+    "if startAngle === endAngle, angle is only evaluated once per point": function(area) {
+      var a = area().angle(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return Math.PI / 2; }
+      assert.pathEqual(a.call(t, [[10, 0], [20, 1], [20, 2], [10, 3]]), "M10,0L20,0L20,0L10,0L10,0L20,0L20,0L10,0Z");
+      assert.deepEqual(dd, [[10, 0], [20, 1], [20, 2], [10, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1, 2, 3], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t, t, t], "expected this, got {actual}");
+    },
+
+    "interpolate defaults to linear": function(area) {
+      assert.equal(area().interpolate(), "linear");
+    },
+    "interpolate can be defined as a constant": function(area) {
+      var a = area().interpolate("step-before");
+      assert.pathEqual(a([[0, 0], [1, 1]]), "M0,0V-0.540302H0.841471L0,-1H0V0Z");
+      assert.equal(a.interpolate(), "step-before");
+    },
+
+    "tension defaults to .7": function(area) {
+      assert.equal(area().tension(), .7);
+    },
+    "tension can be specified as a constant": function(area) {
+      var a = area().tension(.5);
+      assert.equal(a.tension(), .5);
+    },
+
+    "returns null if input points array is empty": function(area) {
+      assert.isNull(area()([]));
+    },
+
+    "interpolate(linear)": {
+      "supports linear interpolation": testInterpolation("linear")
+    },
+
+    "interpolate(step)": {
+      "supports step-before interpolation": testInterpolation("step-before"),
+      "supports step-after interpolation": testInterpolation("step-after")
+    },
+
+    "interpolate(basis)": {
+      "supports basis interpolation": testInterpolation("basis"),
+      "supports basis-open interpolation": testInterpolation("basis-open")
+    },
+
+    "interpolate(cardinal)": {
+      "supports cardinal interpolation": testInterpolation("cardinal"),
+      "supports cardinal-open interpolation": testInterpolation("cardinal-open")
+    },
+
+    "interpolate(monotone)": {
+      "supports monotone interpolation": testInterpolation("monotone")
+    }
+  }
+});
+
+// A radial area is just a transformation of a Cartesian line.
+function testInterpolation(interpolate) {
+  var data = [[10, 0], [20, 1], [20, 2], [10, 3]];
+
+  var radial = d3.svg.area.radial()
+      .innerRadius(function(d) { return d[0]; })
+      .outerRadius(function(d) { return d[0] * 2; })
+      .angle(function(d) { return d[1]; });
+
+  var cartesian = d3.svg.area()
+      .x0(function(d) { return d[0] * Math.cos(d[1] - Math.PI / 2); })
+      .x1(function(d) { return 2 * d[0] * Math.cos(d[1] - Math.PI / 2); })
+      .y0(function(d) { return d[0] * Math.sin(d[1] - Math.PI / 2); })
+      .y1(function(d) { return 2 * d[0] * Math.sin(d[1] - Math.PI / 2); });
+
+  return function() {
+    assert.pathEqual(radial.interpolate(interpolate)(data), cartesian.interpolate(interpolate)(data));
+  };
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/svg/area-test.js b/static/vendor/d3-2.8.1/test/svg/area-test.js
new file mode 100755 (executable)
index 0000000..d42d9da
--- /dev/null
@@ -0,0 +1,194 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.svg.area");
+
+suite.addBatch({
+  "area": {
+    topic: function() {
+      return d3.svg.area;
+    },
+
+    "x is an alias for setting x0 and x1": function(area) {
+      var a = area().x(f);
+      function f() {}
+      assert.equal(a.x(), f);
+      assert.equal(a.x0(), f);
+      assert.equal(a.x1(), f);
+    },
+    "x is an alias for getting x1": function(area) {
+      var a = area().x1(f);
+      function f() {}
+      assert.equal(a.x(), f);
+    },
+
+    "y is an alias for setting y0 and y1": function(area) {
+      var a = area().y(f);
+      function f() {}
+      assert.equal(a.y(), f);
+      assert.equal(a.y0(), f);
+      assert.equal(a.y1(), f);
+    },
+    "y is an alias for getting x1": function(area) {
+      var a = area().y1(f);
+      function f() {}
+      assert.equal(a.y(), f);
+    },
+
+    "x0 defaults to a function accessor": function(area) {
+      var a = area();
+      assert.pathEqual(a([[1, 2], [4, 3]]), "M1,2L4,3L4,0L1,0Z");
+      assert.typeOf(a.x0(), "function");
+    },
+    "x0 can be defined as a constant": function(area) {
+      var a = area().x0(0);
+      assert.pathEqual(a([[1, 2], [4, 3]]), "M1,2L4,3L0,0L0,0Z");
+      assert.equal(a.x0(), 0);
+    },
+    "x0 can be defined as a function": function(area) {
+      var a = area().x0(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 0; }
+      assert.pathEqual(a.call(t, [[1, 2], [4, 3]]), "M1,2L4,3L0,0L0,0Z");
+      assert.deepEqual(dd, [[1, 2], [4, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t], "expected this, got {actual}");
+    },
+
+    "x1 defaults to a function accessor": function(area) {
+      var a = area();
+      assert.pathEqual(a([[1, 2], [4, 3]]), "M1,2L4,3L4,0L1,0Z");
+      assert.typeOf(a.x1(), "function");
+    },
+    "x1 can be defined as a constant": function(area) {
+      var a = area().x1(0);
+      assert.pathEqual(a([[1, 2], [4, 3]]), "M0,2L0,3L4,0L1,0Z");
+      assert.equal(a.x1(), 0);
+    },
+    "x1 can be defined as a function": function(area) {
+      var a = area().x1(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 0; }
+      assert.pathEqual(a.call(t, [[1, 2], [4, 3]]), "M0,2L0,3L4,0L1,0Z");
+      assert.deepEqual(dd, [[1, 2], [4, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t], "expected this, got {actual}");
+    },
+
+    "y0 defaults to zero": function(area) {
+      var a = area();
+      assert.pathEqual(a([[1, 2], [4, 3]]), "M1,2L4,3L4,0L1,0Z");
+      assert.equal(a.y0(), 0);
+    },
+    "y0 can be defined as a constant": function(area) {
+      var a = area().y0(1);
+      assert.pathEqual(a([[1, 2], [4, 3]]), "M1,2L4,3L4,1L1,1Z");
+      assert.equal(a.y0(), 1);
+    },
+    "y0 can be defined as a function": function(area) {
+      var a = area().y0(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 1; }
+      assert.pathEqual(a.call(t, [[1, 2], [4, 3]]), "M1,2L4,3L4,1L1,1Z");
+      assert.deepEqual(dd, [[1, 2], [4, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t], "expected this, got {actual}");
+    },
+
+    "y1 defaults to a function accessor": function(area) {
+      var a = area();
+      assert.pathEqual(a([[1, 2], [4, 3]]), "M1,2L4,3L4,0L1,0Z");
+      assert.typeOf(a.y1(), "function");
+    },
+    "y1 can be defined as a constant": function(area) {
+      var a = area().y1(1);
+      assert.pathEqual(a([[1, 2], [4, 3]]), "M1,1L4,1L4,0L1,0Z");
+      assert.equal(a.y1(), 1);
+    },
+    "y1 can be defined as a function": function(area) {
+      var a = area().y1(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 1; }
+      assert.pathEqual(a.call(t, [[1, 2], [4, 3]]), "M1,1L4,1L4,0L1,0Z");
+      assert.deepEqual(dd, [[1, 2], [4, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t], "expected this, got {actual}");
+    },
+
+    "if x0 === x1, x is only evaluated once per point": function(area) {
+      var a = area().x(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 0; }
+      assert.pathEqual(a.call(t, [[1, 2], [4, 3]]), "M0,2L0,3L0,0L0,0Z");
+      assert.deepEqual(dd, [[1, 2], [4, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t], "expected this, got {actual}");
+    },
+    "if y0 === y1, y is only evaluated once per point": function(area) {
+      var a = area().y(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 1; }
+      assert.pathEqual(a.call(t, [[1, 2], [4, 3]]), "M1,1L4,1L4,1L1,1Z");
+      assert.deepEqual(dd, [[1, 2], [4, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t], "expected this, got {actual}");
+    },
+
+    "interpolate defaults to linear": function(area) {
+      assert.equal(area().interpolate(), "linear");
+    },
+    "interpolate can be defined as a constant": function(area) {
+      var a = area().interpolate("step-before");
+      assert.pathEqual(a([[0, 0], [1, 1]]), "M0,0V1H1L1,0H0V0Z");
+      assert.equal(a.interpolate(), "step-before");
+    },
+    "invalid interpolates fallback to linear": function(area) {
+      assert.equal(area().interpolate("__proto__").interpolate(), "linear");
+    },
+
+    "tension defaults to .7": function(area) {
+      assert.equal(area().tension(), .7);
+    },
+    "tension can be specified as a constant": function(area) {
+      var a = area().tension(.5);
+      assert.equal(a.tension(), .5);
+    },
+
+    "returns null if input points array is empty": function(area) {
+      assert.isNull(area()([]));
+    },
+
+    "interpolate(linear)": {
+      "supports linear interpolation": testInterpolation("linear")
+    },
+
+    "interpolate(step)": {
+      "supports step-before interpolation": testInterpolation("step-before", "step-after"),
+      "supports step-after interpolation": testInterpolation("step-after", "step-before")
+    },
+
+    "interpolate(basis)": {
+      "supports basis interpolation": testInterpolation("basis"),
+      "supports basis-open interpolation": testInterpolation("basis-open")
+    },
+
+    "interpolate(cardinal)": {
+      "supports cardinal interpolation": testInterpolation("cardinal"),
+      "supports cardinal-open interpolation": testInterpolation("cardinal-open")
+    },
+
+    "interpolate(monotone)": {
+      "supports monotone interpolation": testInterpolation("monotone")
+    }
+  }
+});
+
+// An area is just two lines, with one reversed.
+function testInterpolation(i0, i1) {
+  if (arguments.length < 2) i1 = i0;
+  return function(area) {
+    var a = area().interpolate(i0),
+        d = [[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]],
+        l0 = d3.svg.line().interpolate(i1).x(a.x0()).y(a.y0()),
+        l1 = d3.svg.line().interpolate(i0).x(a.x1()).y(a.y1());
+    assert.pathEqual(a(d), l1(d) + "L" + l0(d.reverse()).substring(1) + "Z");
+  };
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/svg/axis-test.js b/static/vendor/d3-2.8.1/test/svg/axis-test.js
new file mode 100755 (executable)
index 0000000..05298b6
--- /dev/null
@@ -0,0 +1,398 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.svg.axis");
+
+suite.addBatch({
+  "axis": {
+    topic: function() {
+      return d3.svg.axis;
+    },
+
+    "scale": {
+      "defaults to a linear scale": function(axis) {
+        var a = axis(), x = a.scale();
+        assert.deepEqual(x.domain(), [0, 1]);
+        assert.deepEqual(x.range(), [0, 1]);
+        assert.equal(x(0.5), 0.5);
+      },
+      "can be defined as a scale object": function(axis) {
+        var x = d3.scale.linear(), a = axis().scale(x);
+        assert.equal(a.scale(), x);
+      },
+      "can be a polylinear scale": function(axis) {
+        var a = axis().scale(d3.scale.linear().domain([0, 1, 10]).range([2, 20, 200])),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            path = g.selectAll("path");
+        assert.equal(path.attr("d"), "M2,6V0H200V6");
+      },
+      "can be an ordinal scale": function(axis) {
+        var a = axis().scale(d3.scale.ordinal().domain(["A", "B", "C"]).rangeBands([10, 90])),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            path = g.selectAll("path");
+        assert.equal(path.attr("d"), "M10,6V0H90V6");
+      },
+      "can be an ordinal scale with explicit range": function(axis) {
+        var a = axis().scale(d3.scale.ordinal().domain(["A", "B", "C"]).range([10, 50, 90])),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            path = g.selectAll("path");
+        assert.equal(path.attr("d"), "M10,6V0H90V6");
+      }
+    },
+
+    "orient": {
+      "defaults to bottom": function(axis) {
+        var a = axis();
+        assert.equal(a.orient(), "bottom");
+      },
+      "supports top orientation": function(axis) {
+        var a = axis().orient("top"),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            tick = g.select("g:nth-child(3)"),
+            text = tick.select("text"),
+            line = tick.select("line"),
+            path = g.select("path.domain");
+        assert.equal(tick.attr("transform"), "translate(0.2,0)");
+        assert.equal(text.attr("y"), -9)
+        assert.equal(text.attr("dy"), "0em");
+        assert.equal(text.attr("text-anchor"), "middle");
+        assert.equal(text.text(), "0.2");
+        assert.equal(line.attr("y2"), -6);
+        assert.equal(path.attr("d"), "M0,-6V0H1V-6");
+      },
+      "supports right orientation": function(axis) {
+        var a = axis().orient("right"),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            tick = g.select("g:nth-child(3)"),
+            text = tick.select("text"),
+            line = tick.select("line"),
+            path = g.select("path.domain");
+        assert.equal(tick.attr("transform"), "translate(0,0.2)");
+        assert.equal(text.attr("x"), 9)
+        assert.equal(text.attr("dy"), ".32em");
+        assert.equal(text.attr("text-anchor"), "start");
+        assert.equal(text.text(), "0.2");
+        assert.equal(line.attr("x2"), 6);
+        assert.equal(path.attr("d"), "M6,0H0V1H6");
+      },
+      "supports bottom orientation": function(axis) {
+        var a = axis().orient("bottom"),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            tick = g.select("g:nth-child(3)"),
+            text = tick.select("text"),
+            line = tick.select("line"),
+            path = g.select("path.domain");
+        assert.equal(tick.attr("transform"), "translate(0.2,0)");
+        assert.equal(text.attr("y"), 9)
+        assert.equal(text.attr("dy"), ".71em");
+        assert.equal(text.attr("text-anchor"), "middle");
+        assert.equal(text.text(), "0.2");
+        assert.equal(line.attr("y2"), 6);
+        assert.equal(path.attr("d"), "M0,6V0H1V6");
+      },
+      "supports left orientation": function(axis) {
+        var a = axis().orient("left"),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            tick = g.select("g:nth-child(3)"),
+            text = tick.select("text"),
+            line = tick.select("line"),
+            path = g.select("path.domain");
+        assert.equal(tick.attr("transform"), "translate(0,0.2)");
+        assert.equal(text.attr("x"), -9)
+        assert.equal(text.attr("dy"), ".32em");
+        assert.equal(text.attr("text-anchor"), "end");
+        assert.equal(text.text(), "0.2");
+        assert.equal(line.attr("x2"), -6);
+        assert.equal(path.attr("d"), "M-6,0H0V1H-6");
+      }
+    },
+
+    "tickSize": {
+      "defaults to six pixels": function(axis) {
+        var a = axis();
+        assert.equal(a.tickSize(), 6);
+      },
+      "can be defined as a number": function(axis) {
+        var a = axis().tickSize(3);
+        assert.equal(a.tickSize(), 3);
+      },
+      "coerces input value to a number": function(axis) {
+        var a = axis().tickSize("3");
+        assert.strictEqual(a.tickSize(), 3);
+      },
+      "affects the generated domain path": function(axis) {
+        var a = axis().tickSize(3),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            path = g.select("path.domain");
+        assert.equal(path.attr("d"), "M0,3V0H1V3");
+      },
+      "affects the generated tick lines": function(axis) {
+        var a = axis().tickSize(3),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            line = g.selectAll("g line");
+        line.each(function() {
+          assert.equal(d3.select(this).attr("y2"), 3);
+        });
+      },
+      "if negative, labels are placed on the opposite end": function(axis) {
+        var a = axis().tickSize(-80),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            line = g.selectAll("g line"),
+            text = g.selectAll("g text");
+        line.each(function() {
+          assert.equal(d3.select(this).attr("y2"), -80);
+        });
+        text.each(function() {
+          assert.equal(d3.select(this).attr("y"), 3);
+        });
+      },
+      "with two arguments, specifies end tick size": function(axis) {
+        var a = axis().tickSize(6, 3),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            path = g.selectAll("path");
+        assert.equal(path.attr("d"), "M0,3V0H1V3");
+      },
+      "with three arguments, specifies end and minor tick sizes": function(axis) {
+        var a = axis().tickSubdivide(3).tickSize(6, 3, 9),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            path = g.selectAll("path"),
+            line = g.select(".minor");
+        assert.equal(path.attr("d"), "M0,9V0H1V9");
+        assert.equal(line.attr("y2"), "3");
+      }
+    },
+
+    "tickPadding": {
+      "defaults to three pixels": function(axis) {
+        var a = axis();
+        assert.equal(a.tickPadding(), 3);
+      },
+      "can be defined as a number": function(axis) {
+        var a = axis().tickPadding(6);
+        assert.equal(a.tickPadding(), 6);
+      },
+      "coerces input value to a number": function(axis) {
+        var a = axis().tickPadding("6");
+        assert.strictEqual(a.tickPadding(), 6);
+      },
+      "affects the generated tick labels": function(axis) {
+        var a = axis().tickSize(2).tickPadding(7),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            text = g.selectAll("g text");
+        text.each(function() {
+          assert.equal(d3.select(this).attr("y"), 9);
+        });
+      }
+    },
+
+    "ticks": {
+      "defaults to [10]": function(axis) {
+        var a = axis();
+        assert.deepEqual(a.ticks(), [10]);
+      },
+      "can be defined as any arguments": function(axis) {
+        var b = {}, a = axis().ticks(b, 42), t = a.ticks();
+        assert.equal(t[0], b);
+        assert.equal(t[1], 42);
+        assert.equal(t.length, 2);
+      },
+      "passes any arguments to the scale's ticks function": function(axis) {
+        var x = d3.scale.linear(), b = {}, a = axis().ticks(b, 42).scale(x), aa = [],
+            g = d3.select("body").html("").append("svg:g");
+        x.ticks = function() { aa.push(arguments); return [42]; };
+        g.call(a);
+        assert.equal(aa.length, 1);
+        assert.equal(aa[0].length, 2);
+        assert.equal(aa[0][0], b);
+        assert.equal(aa[0][1], 42);
+      },
+      "passes any arguments to the scale's tickFormat function": function(axis) {
+        var b = {},
+            x = d3.scale.linear(),
+            a = axis().scale(x).ticks(b, 42),
+            g = d3.select("body").html("").append("svg:g"),
+            aa = [];
+
+        x.tickFormat = function() {
+          aa.push(arguments);
+          return String;
+        };
+
+        g.call(a);
+        assert.equal(aa.length, 1);
+        assert.equal(aa[0].length, 2);
+        assert.equal(aa[0][0], b);
+        assert.equal(aa[0][1], 42);
+      },
+      "affects the generated ticks": function(axis) {
+        var a = axis().ticks(20),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            t = g.selectAll("g");
+        assert.equal(t[0].length, 21);
+      }
+    },
+
+    "tickValues": {
+      "defaults to null": function(axis) {
+        var a = axis().tickValues();
+        assert.isNull(a);
+      },
+      "can be given as array of positions": function(axis) {
+        var l = [1, 2.5, 3], a = axis().tickValues(l), t = a.tickValues();
+        assert.equal(t, l);
+        assert.equal(t.length, 3);
+      },
+      "does not change the tick arguments": function(axis) {
+        var b = {}, a = axis().ticks(b, 42).tickValues([10]), t = a.ticks();
+        assert.equal(t[0], b);
+        assert.equal(t[1], 42);
+        assert.equal(t.length, 2);
+      },
+      "does not change the arguments passed to the scale's tickFormat function": function(axis) {
+        var x = d3.scale.linear(),
+            a = axis().scale(x).ticks(10).tickValues([1, 2, 3]),
+            g = d3.select("body").html("").append("svg:g"),
+            aa = [];
+
+        x.tickFormat = function() {
+          aa.push(arguments);
+          return String;
+        };
+
+        g.call(a);
+        assert.equal(aa.length, 1);
+        assert.equal(aa[0].length, 1);
+        assert.equal(aa[0][0], 10);
+      },
+      "affects the generated ticks": function(axis) {
+        var a = axis().ticks(20),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            t = g.selectAll("g");
+        assert.equal(t[0].length, 21);
+      }
+    },
+
+    "tickSubdivide": {
+      "defaults to zero": function(axis) {
+        var a = axis();
+        assert.equal(a.tickSubdivide(), 0);
+      },
+      "coerces input value to a number": function(axis) {
+        var a = axis().tickSubdivide(true);
+        assert.strictEqual(a.tickSubdivide(), 1);
+      },
+      "does not generate minor ticks when zero": function(axis) {
+        var g = d3.select("body").html("").append("svg:g").call(axis());
+        assert.isTrue(g.selectAll(".minor").empty());
+      },
+      "affects the generated minor ticks": function(axis) {
+        var a = axis().tickSubdivide(3),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            t = g.selectAll("line.tick.minor");
+        assert.equal(t[0].length, 30);
+        assert.equal(t[0][1].getAttribute("transform"), "translate(0.05,0)");
+      }
+    },
+
+    "tickFormat": {
+      "defaults to null": function(axis) {
+        var a = axis();
+        assert.isTrue(a.tickFormat() == null);
+      },
+      "when null, uses the scale's tick format": function(axis) {
+        var x = d3.scale.linear(), a = axis().scale(x),
+            g = d3.select("body").html("").append("svg:g");
+
+        x.tickFormat = function() {
+          return function(d) {
+            return "foo-" + d;
+          };
+        };
+
+        g.call(a);
+        var t = g.selectAll("g text");
+        assert.equal(t.text(), "foo-0");
+      },
+      "affects the generated tick labels": function(axis) {
+        var a = axis().tickFormat(d3.format("+.2%")),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            t = g.selectAll("g text");
+        assert.equal(t.text(), "+0.00%");
+      },
+      "can be set to a constant": function(axis) {
+        var a = axis().tickFormat("I'm a tick!"),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            t = g.selectAll("g text");
+        assert.equal(t.text(), "I'm a tick!");
+      },
+      "can be set to a falsey constant": function(axis) {
+        var a = axis().tickFormat(""),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            t = g.selectAll("g text");
+        assert.equal(t.text(), "");
+      }
+    },
+
+    "enter": {
+      "generates a new domain path": function(axis) {
+        var a = axis(),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            path = g.selectAll("path.domain");
+        assert.equal(path[0].length, 1);
+        assert.equal(path.attr("d"), "M0,6V0H1V6");
+        assert.isNull(path.node().nextSibling);
+      },
+      "generates new tick marks with labels": function(axis) {
+        var a = axis(),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            x = d3.scale.linear(),
+            tick = g.selectAll("g"),
+            ticks = x.ticks(10),
+            tickFormat = x.tickFormat(10);
+        assert.equal(tick[0].length, ticks.length);
+        tick.each(function(d, i) {
+          var t = d3.select(this);
+          assert.isFalse(t.select("line").empty());
+          assert.isFalse(t.select("text").empty());
+          assert.equal(t.select("text").text(), tickFormat(ticks[i]));
+        });
+      }
+    },
+
+    "update": {
+      "updates the domain path": function(axis) {
+        var a = axis(),
+            g = d3.select("body").html("").append("svg:g").call(a);
+        a.scale().domain([0, 2]).range([1, 2]);
+        a.tickSize(3);
+        g.call(a);
+        var path = g.selectAll("path.domain");
+        assert.equal(path[0].length, 1);
+        assert.equal(path.attr("d"), "M1,3V0H2V3");
+        assert.domEqual(path.node().nextSibling, null);
+      },
+      "enters, exits and updates tick marks": function(axis) {
+        var a = axis(),
+            g = d3.select("body").html("").append("svg:g").call(a),
+            x = d3.scale.linear().domain([1, 1.5]);
+        a.scale().domain(x.domain());
+        a.tickSize(3).tickPadding(9);
+        g.call(a);
+        var tick = g.selectAll("g"),
+            ticks = x.ticks(10),
+            tickFormat = x.tickFormat(10);
+        assert.equal(tick[0].length, ticks.length);
+        tick.each(function(d, i) {
+          var t = d3.select(this);
+          assert.isFalse(t.select("line").empty());
+          assert.isFalse(t.select("text").empty());
+          assert.equal(t.select("text").text(), tickFormat(ticks[i]));
+        });
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/svg/brush-test.js b/static/vendor/d3-2.8.1/test/svg/brush-test.js
new file mode 100755 (executable)
index 0000000..a5545a0
--- /dev/null
@@ -0,0 +1,66 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.svg.brush");
+
+suite.addBatch({
+  "brush": {
+    topic: function() {
+      return d3.svg.brush;
+    },
+
+    "x": {
+      "defaults to null": function(brush) {
+        assert.isNull(brush().x());
+      }
+    },
+
+    "y": {
+      "defaults to null": function(brush) {
+        assert.isNull(brush().y());
+      }
+    },
+
+    "extent": {
+      "returns null when no scales are attached": function(brush) {
+        assert.isNull(brush().extent());
+      },
+      "returns a one-dimensional array if only x is defined": function(brush) {
+        var b = brush().x(d3.scale.linear());
+        assert.deepEqual(b.extent(), [0, 0]);
+      },
+      "takes a one-dimensional array if only x is defined": function(brush) {
+        var b = brush().x(d3.scale.linear()).extent([0.1, 0.4]);
+        assert.deepEqual(b.extent(), [0.1, 0.4]);
+      },
+      "returns a one-dimensional array if only y is defined": function(brush) {
+        var b = brush().y(d3.scale.linear());
+        assert.deepEqual(b.extent(), [0, 0]);
+      },
+      "takes a one-dimensional array if only y is defined": function(brush) {
+        var b = brush().y(d3.scale.linear()).extent([0.1, 0.4]);
+        assert.deepEqual(b.extent(), [0.1, 0.4]);
+      },
+      "returns a two-dimensional array if x and y are defined": function(brush) {
+        var b = brush().x(d3.scale.linear()).y(d3.scale.linear());
+        assert.deepEqual(b.extent(), [[0, 0], [0, 0]]);
+      },
+      "takes a two-dimensional array if x and y are defined": function(brush) {
+        var b = brush().x(d3.scale.linear()).y(d3.scale.linear()).extent([[0.1, 0.2], [0.3, 0.4]]);
+        assert.deepEqual(b.extent(), [[0.1, 0.2], [0.3, 0.4]]);
+      },
+      "preserves the set extent exactly": function(brush) {
+        var lo = new Number(0.1),
+            hi = new Number(0.3),
+            b = brush().x(d3.scale.linear()).extent([lo, hi]),
+            extent = b.extent();
+        assert.strictEqual(extent[0], lo);
+        assert.strictEqual(extent[1], hi);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/svg/line-radial-test.js b/static/vendor/d3-2.8.1/test/svg/line-radial-test.js
new file mode 100755 (executable)
index 0000000..28ceaae
--- /dev/null
@@ -0,0 +1,124 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.svg.line.radial");
+
+suite.addBatch({
+  "line.radial": {
+    topic: function() {
+      return d3.svg.line.radial;
+    },
+
+    "radius defaults to a function accessor": function(line) {
+      var l = line();
+      assert.pathEqual(l([[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-10L16.82941969615793,-10.806046117362794L18.185948536513635,8.32293673094285L1.4112000805986715,9.899924966004454");
+      assert.typeOf(l.radius(), "function");
+    },
+    "radius can be defined as a constant": function(line) {
+      var l = line().radius(30);
+      assert.pathEqual(l([[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-30L25.244129544236895,-16.20906917604419L27.278922804770453,12.484405096414275L4.233600241796014,29.699774898013363");
+      assert.equal(l.radius(), 30);
+    },
+    "radius can be defined as a function": function(line) {
+      var l = line().radius(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 30; }
+      assert.pathEqual(l.call(t, [[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-30L25.244129544236895,-16.20906917604419L27.278922804770453,12.484405096414275L4.233600241796014,29.699774898013363");
+      assert.deepEqual(dd, [[10, 0], [20, 1], [20, 2], [10, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1, 2, 3], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t, t, t], "expected this, got {actual}");
+    },
+
+    "angle defaults to a function accessor": function(line) {
+      var l = line();
+      assert.pathEqual(l([[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-10L16.82941969615793,-10.806046117362794L18.185948536513635,8.32293673094285L1.4112000805986715,9.899924966004454");
+      assert.typeOf(l.angle(), "function");
+    },
+    "angle can be defined as a constant": function(line) {
+      var l = line().angle(Math.PI / 2);
+      assert.pathEqual(l([[10, 0], [20, 1], [20, 2], [10, 3]]), "M10,0L20,0L20,0L10,0");
+      assert.equal(l.angle(), Math.PI / 2);
+    },
+    "angle can be defined as a function": function(line) {
+      var l = line().angle(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return Math.PI / 2; }
+      assert.pathEqual(l.call(t, [[10, 0], [20, 1], [20, 2], [10, 3]]), "M10,0L20,0L20,0L10,0");
+      assert.deepEqual(dd, [[10, 0], [20, 1], [20, 2], [10, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1, 2, 3], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t, t, t], "expected this, got {actual}");
+    },
+    "angle is defined in radians, with zero at 12 o'clock": function(line) {
+      var l = line().angle(0);
+      assert.pathEqual(l([[10, Math.PI], [20, Math.PI / 3]]), "M0,-10L0,-20");
+      assert.equal(l.angle(), 0);
+    },
+
+    "interpolate defaults to linear": function(line) {
+      assert.equal(line().interpolate(), "linear");
+    },
+    "interpolate can be defined as a constant": function(line) {
+      var l = line().interpolate("cardinal");
+      assert.pathEqual(l([[10, 0], [20, 1], [20, 2], [10, 3]]), "M0,-10Q15.010824842506567,-12.638339790457078,16.82941969615793,-10.806046117362794C19.557311976634978,-8.057605607721365,20.498681478847523,5.217041068437762,18.185948536513635,8.32293673094285Q16.64412657495771,10.393533839279574,1.4112000805986715,9.899924966004454");
+      assert.equal(l.interpolate(), "cardinal");
+    },
+
+    "tension defaults to .7": function(line) {
+      assert.equal(line().tension(), .7);
+    },
+    "tension can be specified as a constant": function(line) {
+      var l = line().tension(.5);
+      assert.equal(l.tension(), .5);
+    },
+
+    "returns null if input points array is empty": function(line) {
+      assert.isNull(line()([]));
+    },
+
+    "interpolate(linear)": {
+      "supports linear interpolation": testInterpolation("linear")
+    },
+
+    "interpolate(step)": {
+      "supports step-before interpolation": testInterpolation("step-before"),
+      "supports step-after interpolation": testInterpolation("step-after")
+    },
+
+    "interpolate(basis)": {
+      "supports basis interpolation": testInterpolation("basis"),
+      "supports basis-open interpolation": testInterpolation("basis-open"),
+      "supports basis-closed interpolation": testInterpolation("basis-closed")
+    },
+
+    "interpolate(bundle)": {
+      "supports bundle interpolation": testInterpolation("bundle")
+    },
+
+    "interpolate(cardinal)": {
+      "supports cardinal interpolation": testInterpolation("cardinal"),
+      "supports cardinal-open interpolation": testInterpolation("cardinal-open"),
+      "supports cardinal-closed interpolation": testInterpolation("cardinal-closed")
+    },
+
+    "interpolate(monotone)": {
+      "supports monotone interpolation": testInterpolation("monotone")
+    }
+  }
+});
+
+// A radial line is just a transformation of a Cartesian line.
+function testInterpolation(interpolate) {
+  var data = [[10, 0], [20, 1], [20, 2], [10, 3]];
+
+  var radial = d3.svg.line.radial();
+
+  var cartesian = d3.svg.line()
+      .x(function(d) { return d[0] * Math.cos(d[1] - Math.PI / 2); })
+      .y(function(d) { return d[0] * Math.sin(d[1] - Math.PI / 2); });
+
+  return function() {
+    assert.pathEqual(radial.interpolate(interpolate)(data), cartesian.interpolate(interpolate)(data));
+  };
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/svg/line-test.js b/static/vendor/d3-2.8.1/test/svg/line-test.js
new file mode 100755 (executable)
index 0000000..4753c64
--- /dev/null
@@ -0,0 +1,191 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.svg.line");
+
+suite.addBatch({
+  "line": {
+    topic: function() {
+      return d3.svg.line;
+    },
+
+    "x defaults to a function accessor": function(line) {
+      var l = line();
+      assert.pathEqual(l([[1, 2], [4, 3]]), "M1,2L4,3");
+      assert.typeOf(l.x(), "function");
+    },
+    "x can be defined as a constant": function(line) {
+      var l = line().x(0);
+      assert.pathEqual(l([[1, 2], [4, 3]]), "M0,2L0,3");
+      assert.equal(l.x(), 0);
+    },
+    "x can be defined as a function": function(line) {
+      var l = line().x(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 0; }
+      assert.pathEqual(l.call(t, [[1, 2], [4, 3]]), "M0,2L0,3");
+      assert.deepEqual(dd, [[1, 2], [4, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t], "expected this, got {actual}");
+    },
+
+    "y defaults to a function accessor": function(line) {
+      var l = line();
+      assert.pathEqual(l([[1, 2], [4, 3]]), "M1,2L4,3");
+      assert.typeOf(l.y(), "function");
+    },
+    "y can be defined as a constant": function(line) {
+      var l = line().y(0);
+      assert.pathEqual(l([[1, 2], [4, 3]]), "M1,0L4,0");
+      assert.equal(l.y(), 0);
+    },
+    "y can be defined as a function": function(line) {
+      var l = line().y(f), t = {}, dd = [], ii = [], tt = [];
+      function f(d, i) { dd.push(d); ii.push(i); tt.push(this); return 0; }
+      assert.pathEqual(l.call(t, [[1, 2], [4, 3]]), "M1,0L4,0");
+      assert.deepEqual(dd, [[1, 2], [4, 3]], "expected data, got {actual}");
+      assert.deepEqual(ii, [0, 1], "expected index, got {actual}");
+      assert.deepEqual(tt, [t, t], "expected this, got {actual}");
+    },
+
+    "interpolate defaults to linear": function(line) {
+      assert.equal(line().interpolate(), "linear");
+    },
+    "interpolate can be defined as a constant": function(line) {
+      var l = line().interpolate("step-before");
+      assert.pathEqual(l([[0, 0], [1, 1]]), "M0,0V1H1");
+      assert.equal(l.interpolate(), "step-before");
+    },
+    "invalid interpolates fallback to linear": function(line) {
+      assert.equal(line().interpolate("__proto__").interpolate(), "linear");
+    },
+
+    "tension defaults to .7": function(line) {
+      assert.equal(line().tension(), .7);
+    },
+    "tension can be specified as a constant": function(line) {
+      var l = line().tension(.5);
+      assert.equal(l.tension(), .5);
+    },
+
+    "returns null if input points array is empty": function(line) {
+      assert.isNull(line()([]));
+    },
+
+    "interpolate(linear)": {
+      "supports linear interpolation": function(line) {
+        var l = line().interpolate("linear");
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0L1,1L2,0L3,1L4,0");
+      }
+    },
+
+    "interpolate(step)": {
+      "supports step-before interpolation": function(line) {
+        var l = line().interpolate("step-before");
+        assert.pathEqual(l([[0, 0]]), "M0,0");
+        assert.pathEqual(l([[0, 0], [1, 1]]), "M0,0V1H1");
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0]]), "M0,0V1H1V0H2");
+      },
+      "supports step-after interpolation": function(line) {
+        var l = line().interpolate("step-after");
+        assert.pathEqual(l([[0, 0]]), "M0,0");
+        assert.pathEqual(l([[0, 0], [1, 1]]), "M0,0H1V1");
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0]]), "M0,0H1V1H2V0");
+      }
+    },
+
+    "interpolate(basis)": {
+      "supports basis interpolation": function(line) {
+        var l = line().interpolate("basis");
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0C0,0,0,0,0.16666666666666666,0.16666666666666666C0.3333333333333333,0.3333333333333333,0.6666666666666666,0.6666666666666666,1,0.6666666666666666C1.3333333333333333,0.6666666666666666,1.6666666666666665,0.3333333333333333,2,0.3333333333333333C2.333333333333333,0.3333333333333333,2.6666666666666665,0.6666666666666666,3,0.6666666666666666C3.333333333333333,0.6666666666666666,3.6666666666666665,0.3333333333333333,3.833333333333333,0.16666666666666666C4,0,4,0,3.9999999999999996,0");
+      },
+      "supports basis-open interpolation": function(line) {
+        var l = line().interpolate("basis-open");
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M1,0.6666666666666666C1.3333333333333333,0.6666666666666666,1.6666666666666665,0.3333333333333333,2,0.3333333333333333C2.333333333333333,0.3333333333333333,2.6666666666666665,0.6666666666666666,3,0.6666666666666666");
+      },
+      "supports basis-closed interpolation": function(line) {
+        var l = line().interpolate("basis-closed");
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M2,0.3333333333333333C2.333333333333333,0.3333333333333333,2.6666666666666665,0.6666666666666666,3,0.6666666666666666C3.333333333333333,0.6666666666666666,3.6666666666666665,0.3333333333333333,3.1666666666666665,0.16666666666666666C2.6666666666666665,0,1.3333333333333333,0,0.8333333333333333,0.16666666666666666C0.3333333333333333,0.3333333333333333,0.6666666666666666,0.6666666666666666,1,0.6666666666666666C1.3333333333333333,0.6666666666666666,1.6666666666666665,0.3333333333333333,2,0.3333333333333333");
+      },
+      "basis interpolation reverts to linear with fewer than three points": function(line) {
+        var l = line().interpolate("basis"), d = line();
+        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
+        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
+      },
+      "basis-open interpolation reverts to linear with fewer than four points": function(line) {
+        var l = line().interpolate("basis-open"), d = line();
+        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
+        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0]]), d([[0, 0], [1, 1], [2, 0]]));
+      },
+      "basis-closed interpolation reverts to linear with fewer than three points": function(line) {
+        var l = line().interpolate("basis-open"), d = line();
+        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
+        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
+      }
+    },
+
+    "interpolate(bundle)": {
+      "supports bundle interpolation": function(line) {
+        var l = line().interpolate("bundle");
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0C0,0,0,0,0.16666666666666666,0.11666666666666665C0.3333333333333333,0.2333333333333333,0.6666666666666666,0.4666666666666666,1,0.4666666666666666C1.3333333333333333,0.4666666666666666,1.6666666666666665,0.2333333333333333,2,0.2333333333333333C2.333333333333333,0.2333333333333333,2.6666666666666665,0.4666666666666666,3,0.4666666666666666C3.333333333333333,0.4666666666666666,3.6666666666666665,0.2333333333333333,3.833333333333333,0.11666666666666665C4,0,4,0,4,0");
+      },
+      "observes the specified tension": function(line) {
+        var l = line().interpolate("bundle").tension(1);
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), line().interpolate("basis")([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]));
+      }
+    },
+
+    "interpolate(cardinal)": {
+      "supports cardinal interpolation": function(line) {
+        var l = line().interpolate("cardinal");
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0Q0.8,1,1,1C1.3,1,1.7,0,2,0S2.7,1,3,1Q3.2,1,4,0");
+      },
+      "supports cardinal-open interpolation": function(line) {
+        var l = line().interpolate("cardinal-open");
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M1,1C1.3,1,1.7,0,2,0S2.7,1,3,1");
+      },
+      "supports cardinal-closed interpolation": function(line) {
+        var l = line().interpolate("cardinal-closed");
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0C-0.45,0.15,0.7,1,1,1S1.7,0,2,0S2.7,1,3,1S4.45,0.15,4,0S0.45,-0.15,0,0");
+      },
+      "cardinal interpolation reverts to linear with fewer than three points": function(line) {
+        var l = line().interpolate("cardinal"), d = line();
+        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
+        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
+      },
+      "cardinal-open interpolation reverts to linear with fewer than four points": function(line) {
+        var l = line().interpolate("cardinal-open"), d = line();
+        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
+        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 0]]), d([[0, 0], [1, 1], [2, 0]]));
+      },
+      "cardinal-closed interpolation reverts to linear with fewer than three points": function(line) {
+        var l = line().interpolate("cardinal-open"), d = line();
+        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
+        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
+      },
+      "observes the specified tension": function(line) {
+        var l = line().tension(.5);
+        assert.pathEqual(l.interpolate("cardinal")([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0Q0.6666666666666667,1,1,1C1.5,1,1.5,0,2,0S2.5,1,3,1Q3.3333333333333335,1,4,0");
+        assert.pathEqual(l.interpolate("cardinal-open")([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M1,1C1.5,1,1.5,0,2,0S2.5,1,3,1");
+        assert.pathEqual(l.interpolate("cardinal-closed")([[0, 0], [1, 1], [2, 0], [3, 1], [4, 0]]), "M0,0C-0.75,0.25,0.5,1,1,1S1.5,0,2,0S2.5,1,3,1S4.75,0.25,4,0S0.75,-0.25,0,0");
+      }
+    },
+
+    "interpolate(monotone)": {
+      "supports monotone interpolation": function(line) {
+        var l = line().interpolate("monotone");
+        assert.pathEqual(l([[0, 0], [1, 1], [2, 1], [3, 0], [4, 0]]), "M0,0C0.08333333333333333,0.08333333333333333,0.6666666666666667,1,1,1S1.6666666666666667,1,2,1S2.6666666666666665,0,3,0S3.8333333333333335,0,4,0");
+      },
+      "monotone interpolation reverts to linear with fewer than three points": function(line) {
+        var l = line().interpolate("monotone"), d = line();
+        assert.pathEqual(l([[0, 0]]), d([[0, 0]]));
+        assert.pathEqual(l([[0, 0], [1, 1]]), d([[0, 0], [1, 1]]));
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/svg/symbol-test.js b/static/vendor/d3-2.8.1/test/svg/symbol-test.js
new file mode 100755 (executable)
index 0000000..fd401b3
--- /dev/null
@@ -0,0 +1,96 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.svg.symbol");
+
+suite.addBatch({
+  "symbol": {
+    topic: function() {
+      return d3.svg.symbol;
+    },
+    "default symbol is a fixed-size circle": function(symbol) {
+      var a = symbol();
+      assert.pathEqual(a(), "M0,4.51351666838205A4.51351666838205,4.51351666838205 0 1,1 0,-4.51351666838205A4.51351666838205,4.51351666838205 0 1,1 0,4.51351666838205Z");
+    },
+    "size accessor specifies shape area in square pixels": function(symbol) {
+      var a = symbol().size(Number);
+      assert.pathEqual(a(0), "M0,0A0,0 0 1,1 0,0A0,0 0 1,1 0,0Z");
+      assert.pathEqual(a(Math.PI), "M0,1A1,1 0 1,1 0,-1A1,1 0 1,1 0,1Z");
+      assert.pathEqual(a(4 * Math.PI), "M0,2A2,2 0 1,1 0,-2A2,2 0 1,1 0,2Z");
+    },
+    "size accessor is passed data and index": function(symbol) {
+      var a = symbol().size(function(d, i) { return d.z * 2 + i; });
+      assert.pathEqual(a({z: 0}, 0), "M0,0A0,0 0 1,1 0,0A0,0 0 1,1 0,0Z");
+      assert.pathEqual(a({z: Math.PI}, 1), "M0,1.5225997130512636A1.5225997130512636,1.5225997130512636 0 1,1 0,-1.5225997130512636A1.5225997130512636,1.5225997130512636 0 1,1 0,1.5225997130512636Z");
+      assert.pathEqual(a({z: 4 * Math.PI}, 2), "M0,2.938812646693828A2.938812646693828,2.938812646693828 0 1,1 0,-2.938812646693828A2.938812646693828,2.938812646693828 0 1,1 0,2.938812646693828Z");
+    },
+    "supports cross symbol type": function(symbol) {
+      var a = symbol().type("cross").size(Number);
+      assert.pathEqual(a(0), "M0,0H0V0H0V0H0V0H0V0H0V0H0Z");
+      assert.pathEqual(a(20), "M-3,-1H-1V-3H1V-1H3V1H1V3H-1V1H-3Z");
+    },
+    "supports diamond symbol type": function(symbol) {
+      var a = symbol().type("diamond").size(Number);
+      assert.pathEqual(a(0), "M0,0L0,0 0,0 0,0Z");
+      assert.pathEqual(a(10), "M0,-2.9428309563827124L1.6990442448471224,0 0,2.9428309563827124 -1.6990442448471224,0Z");
+    },
+    "supports square symbol type": function(symbol) {
+      var a = symbol().type("square").size(Number);
+      assert.pathEqual(a(0), "M0,0L0,0 0,0 0,0Z");
+      assert.pathEqual(a(4), "M-1,-1L1,-1 1,1 -1,1Z");
+      assert.pathEqual(a(16), "M-2,-2L2,-2 2,2 -2,2Z");
+    },
+    "supports triangle-down symbol type": function(symbol) {
+      var a = symbol().type("triangle-down").size(Number);
+      assert.pathEqual(a(0), "M0,0L0,0 0,0Z");
+      assert.pathEqual(a(10), "M0,2.0808957251439084L2.4028114141347543,-2.0808957251439084 -2.4028114141347543,-2.0808957251439084Z");
+    },
+    "supports triangle-up symbol type": function(symbol) {
+      var a = symbol().type("triangle-up").size(Number);
+      assert.pathEqual(a(0), "M0,0L0,0 0,0Z");
+      assert.pathEqual(a(10), "M0,-2.0808957251439084L2.4028114141347543,2.0808957251439084 -2.4028114141347543,2.0808957251439084Z");
+    },
+    "unknown symbol type defaults to circle": function(symbol) {
+      var a = symbol().type(String);
+      assert.pathEqual(a(), "M0,4.51351666838205A4.51351666838205,4.51351666838205 0 1,1 0,-4.51351666838205A4.51351666838205,4.51351666838205 0 1,1 0,4.51351666838205Z");
+      assert.pathEqual(a("invalid"), "M0,4.51351666838205A4.51351666838205,4.51351666838205 0 1,1 0,-4.51351666838205A4.51351666838205,4.51351666838205 0 1,1 0,4.51351666838205Z");
+      assert.pathEqual(a("hasOwnProperty"), "M0,4.51351666838205A4.51351666838205,4.51351666838205 0 1,1 0,-4.51351666838205A4.51351666838205,4.51351666838205 0 1,1 0,4.51351666838205Z");
+    },
+    "can specify type accessor as a function": function(symbol) {
+      var a = symbol().type(String);
+      assert.pathEqual(a("circle"), "M0,4.51351666838205A4.51351666838205,4.51351666838205 0 1,1 0,-4.51351666838205A4.51351666838205,4.51351666838205 0 1,1 0,4.51351666838205Z");
+      assert.pathEqual(a("cross"), "M-5.366563145999495,-1.7888543819998317H-1.7888543819998317V-5.366563145999495H1.7888543819998317V-1.7888543819998317H5.366563145999495V1.7888543819998317H1.7888543819998317V5.366563145999495H-1.7888543819998317V1.7888543819998317H-5.366563145999495Z");
+      assert.pathEqual(a("diamond"), "M0,-7.444838872816797L4.298279727294167,0 0,7.444838872816797 -4.298279727294167,0Z");
+      assert.pathEqual(a("square"), "M-4,-4L4,-4 4,4 -4,4Z");
+      assert.pathEqual(a("triangle-down"), "M0,5.26429605180997L6.078685485212741,-5.26429605180997 -6.078685485212741,-5.26429605180997Z");
+      assert.pathEqual(a("triangle-up"), "M0,-5.26429605180997L6.078685485212741,5.26429605180997 -6.078685485212741,5.26429605180997Z");
+    }
+  },
+  "symbolTypes": {
+    topic: function() {
+      return d3.svg.symbolTypes;
+    },
+    "contains circle": function(types) {
+      assert.isTrue(types.indexOf("circle") != -1);
+    },
+    "contains cross": function(types) {
+      assert.isTrue(types.indexOf("cross") != -1);
+    },
+    "contains diamond": function(types) {
+      assert.isTrue(types.indexOf("diamond") != -1);
+    },
+    "contains square": function(types) {
+      assert.isTrue(types.indexOf("square") != -1);
+    },
+    "contains triangle-down": function(types) {
+      assert.isTrue(types.indexOf("triangle-down") != -1);
+    },
+    "contains triangle-up": function(types) {
+      assert.isTrue(types.indexOf("triangle-up") != -1);
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/day-test.js b/static/vendor/d3-2.8.1/test/time/day-test.js
new file mode 100755 (executable)
index 0000000..0a9b50c
--- /dev/null
@@ -0,0 +1,174 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.day");
+
+suite.addBatch({
+  "day": {
+    topic: function() {
+      return d3.time.day;
+    },
+    "defaults to floor": function(interval) {
+      assert.strictEqual(interval, interval.floor);
+    },
+    "floor": {
+      topic: function(interval) {
+        return interval.floor;
+      },
+      "returns midnights": function(floor) {
+        assert.deepEqual(floor(local(2010, 11, 31, 23)), local(2010, 11, 31));
+        assert.deepEqual(floor(local(2011, 00, 01, 00)), local(2011, 00, 01));
+        assert.deepEqual(floor(local(2011, 00, 01, 01)), local(2011, 00, 01));
+      },
+      "observes start of daylight savings time": function(floor) {
+        assert.deepEqual(floor(utc(2011, 02, 13, 07)), local(2011, 02, 12));
+        assert.deepEqual(floor(utc(2011, 02, 13, 08)), local(2011, 02, 13));
+        assert.deepEqual(floor(utc(2011, 02, 13, 09)), local(2011, 02, 13));
+        assert.deepEqual(floor(utc(2011, 02, 13, 10)), local(2011, 02, 13));
+      },
+      "observes end of daylight savings time": function(floor) {
+        assert.deepEqual(floor(utc(2011, 10, 06, 07)), local(2011, 10, 06));
+        assert.deepEqual(floor(utc(2011, 10, 06, 08)), local(2011, 10, 06));
+        assert.deepEqual(floor(utc(2011, 10, 06, 09)), local(2011, 10, 06));
+        assert.deepEqual(floor(utc(2011, 10, 06, 10)), local(2011, 10, 06));
+      }
+    },
+    "ceil": {
+      topic: function(interval) {
+        return interval.ceil;
+      },
+      "returns midnights": function(ceil) {
+        assert.deepEqual(ceil(local(2010, 11, 30, 23)), local(2010, 11, 31));
+        assert.deepEqual(ceil(local(2010, 11, 31, 00)), local(2010, 11, 31));
+        assert.deepEqual(ceil(local(2010, 11, 31, 01)), local(2011, 00, 01));
+      },
+      "observes start of daylight savings time": function(ceil) {
+        assert.deepEqual(ceil(utc(2011, 02, 13, 07)), local(2011, 02, 13));
+        assert.deepEqual(ceil(utc(2011, 02, 13, 08)), local(2011, 02, 13));
+        assert.deepEqual(ceil(utc(2011, 02, 13, 09)), local(2011, 02, 14));
+        assert.deepEqual(ceil(utc(2011, 02, 13, 10)), local(2011, 02, 14));
+      },
+      "observes end of daylight savings time": function(ceil) {
+        assert.deepEqual(ceil(utc(2011, 10, 06, 07)), local(2011, 10, 06));
+        assert.deepEqual(ceil(utc(2011, 10, 06, 08)), local(2011, 10, 07));
+        assert.deepEqual(ceil(utc(2011, 10, 06, 09)), local(2011, 10, 07));
+        assert.deepEqual(ceil(utc(2011, 10, 06, 10)), local(2011, 10, 07));
+      }
+    },
+    "offset": {
+      topic: function(interval) {
+        return interval.offset;
+      },
+      "does not modify the passed-in date": function(offset) {
+        var date = local(2010, 11, 31, 23, 59, 59, 999);
+        offset(date, +1);
+        assert.deepEqual(date, local(2010, 11, 31, 23, 59, 59, 999));
+      },
+      "does not round the passed-in-date": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), +1), local(2011, 00, 01, 23, 59, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 456), -2), local(2010, 11, 29, 23, 59, 59, 456));
+      },
+      "allows negative offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31), -1), local(2010, 11, 30));
+        assert.deepEqual(offset(local(2011, 00, 01), -2), local(2010, 11, 30));
+        assert.deepEqual(offset(local(2011, 00, 01), -1), local(2010, 11, 31));
+      },
+      "allows positive offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31), +1), local(2011, 00, 01));
+        assert.deepEqual(offset(local(2010, 11, 30), +2), local(2011, 00, 01));
+        assert.deepEqual(offset(local(2010, 11, 30), +1), local(2010, 11, 31));
+      },
+      "allows zero offset": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), 0), local(2010, 11, 31, 23, 59, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 58, 000), 0), local(2010, 11, 31, 23, 59, 58, 000));
+      }
+    },
+    "UTC": {
+      topic: function(interval) {
+        return interval.utc;
+      },
+      "defaults to floor": function(interval) {
+        assert.strictEqual(interval, interval.floor);
+      },
+      "floor": {
+        topic: function(interval) {
+          return interval.floor;
+        },
+        "returns midnights": function(floor) {
+          assert.deepEqual(floor(utc(2010, 11, 31, 23)), utc(2010, 11, 31));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00)), utc(2011, 00, 01));
+          assert.deepEqual(floor(utc(2011, 00, 01, 01)), utc(2011, 00, 01));
+        },
+        "does not observe the start of daylight savings time": function(floor) {
+          assert.deepEqual(floor(utc(2011, 02, 13, 07)), utc(2011, 02, 13));
+          assert.deepEqual(floor(utc(2011, 02, 13, 08)), utc(2011, 02, 13));
+          assert.deepEqual(floor(utc(2011, 02, 13, 09)), utc(2011, 02, 13));
+          assert.deepEqual(floor(utc(2011, 02, 13, 10)), utc(2011, 02, 13));
+        },
+        "does not observe the end of daylight savings time": function(floor) {
+          assert.deepEqual(floor(utc(2011, 10, 06, 05)), utc(2011, 10, 06));
+          assert.deepEqual(floor(utc(2011, 10, 06, 06)), utc(2011, 10, 06));
+          assert.deepEqual(floor(utc(2011, 10, 06, 07)), utc(2011, 10, 06));
+          assert.deepEqual(floor(utc(2011, 10, 06, 08)), utc(2011, 10, 06));
+        }
+      },
+      "ceil": {
+        topic: function(interval) {
+          return interval.ceil;
+        },
+        "returns midnights": function(ceil) {
+          assert.deepEqual(ceil(utc(2010, 11, 30, 23)), utc(2010, 11, 31));
+          assert.deepEqual(ceil(utc(2010, 11, 31, 00)), utc(2010, 11, 31));
+          assert.deepEqual(ceil(utc(2010, 11, 31, 01)), utc(2011, 00, 01));
+        },
+        "does not observe the start of daylight savings time": function(ceil) {
+          assert.deepEqual(ceil(utc(2011, 02, 13, 07)), utc(2011, 02, 14));
+          assert.deepEqual(ceil(utc(2011, 02, 13, 08)), utc(2011, 02, 14));
+          assert.deepEqual(ceil(utc(2011, 02, 13, 09)), utc(2011, 02, 14));
+          assert.deepEqual(ceil(utc(2011, 02, 13, 10)), utc(2011, 02, 14));
+        },
+        "does not observe the end of daylight savings time": function(ceil) {
+          assert.deepEqual(ceil(utc(2011, 10, 06, 05)), utc(2011, 10, 07));
+          assert.deepEqual(ceil(utc(2011, 10, 06, 06)), utc(2011, 10, 07));
+          assert.deepEqual(ceil(utc(2011, 10, 06, 07)), utc(2011, 10, 07));
+          assert.deepEqual(ceil(utc(2011, 10, 06, 08)), utc(2011, 10, 07));
+        }
+      },
+      "offset": {
+        topic: function(interval) {
+          return interval.offset;
+        },
+        "does not modify the passed-in date": function(offset) {
+          var date = utc(2010, 11, 31, 23, 59, 59, 999);
+          offset(date, +1);
+          assert.deepEqual(date, utc(2010, 11, 31, 23, 59, 59, 999));
+        },
+        "does not round the passed-in-date": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), +1), utc(2011, 00, 01, 23, 59, 59, 999));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 456), -2), utc(2010, 11, 29, 23, 59, 59, 456));
+        },
+        "allows negative offsets": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31), -1), utc(2010, 11, 30));
+          assert.deepEqual(offset(utc(2011, 00, 01), -2), utc(2010, 11, 30));
+          assert.deepEqual(offset(utc(2011, 00, 01), -1), utc(2010, 11, 31));
+        },
+        "allows positive offsets": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31), +1), utc(2011, 00, 01));
+          assert.deepEqual(offset(utc(2010, 11, 30), +2), utc(2011, 00, 01));
+          assert.deepEqual(offset(utc(2010, 11, 30), +1), utc(2010, 11, 31));
+        },
+        "allows zero offset": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), 0), utc(2010, 11, 31, 23, 59, 59, 999));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 58, 000), 0), utc(2010, 11, 31, 23, 59, 58, 000));
+        }
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/days-test.js b/static/vendor/d3-2.8.1/test/time/days-test.js
new file mode 100755 (executable)
index 0000000..c084428
--- /dev/null
@@ -0,0 +1,98 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.days");
+
+suite.addBatch({
+  "days": {
+    topic: function() {
+      return d3.time.days;
+    },
+    "returns midnights": function(range) {
+      assert.deepEqual(range(local(2010, 11, 31, 12), local(2011, 0, 3, 12)), [
+        local(2011, 0, 1),
+        local(2011, 0, 2),
+        local(2011, 0, 3)
+      ]);
+    },
+    "has an inclusive lower bound": function(range) {
+      assert.deepEqual(range(local(2010, 11, 31), local(2011, 0, 3))[0], local(2010, 11, 31));
+    },
+    "has an exclusive upper bound": function(range) {
+      assert.deepEqual(range(local(2010, 11, 31), local(2011, 0, 3))[2], local(2011, 0, 2));
+    },
+    "can skip days": function(range) {
+      assert.deepEqual(range(local(2010, 11, 29), local(2011, 0, 14), 5), [
+        local(2010, 11, 31),
+        local(2011, 0, 1),
+        local(2011, 0, 6),
+        local(2011, 0, 11)
+      ]);
+    },
+    "observes start of daylight savings time": function(range) {
+      assert.deepEqual(range(local(2011, 2, 12), local(2011, 2, 16)), [
+        local(2011, 2, 12),
+        local(2011, 2, 13),
+        local(2011, 2, 14),
+        local(2011, 2, 15)
+      ]);
+    },
+    "observes end of daylight savings time": function(range) {
+      assert.deepEqual(range(local(2011, 10, 5), local(2011, 10, 9)), [
+        local(2011, 10, 5),
+        local(2011, 10, 6),
+        local(2011, 10, 7),
+        local(2011, 10, 8)
+      ]);
+    },
+    "UTC": {
+      topic: function(range) {
+        return range.utc;
+      },
+      "returns midnights": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 31, 12), utc(2011, 0, 3, 12)), [
+          utc(2011, 0, 1),
+          utc(2011, 0, 2),
+          utc(2011, 0, 3)
+        ]);
+      },
+      "has an inclusive lower bound": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 31), utc(2011, 0, 3))[0], utc(2010, 11, 31));
+      },
+      "has an exclusive upper bound": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 31), utc(2011, 0, 3))[2], utc(2011, 0, 2));
+      },
+      "can skip days": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 29), utc(2011, 0, 14), 5), [
+          utc(2010, 11, 31),
+          utc(2011, 0, 1),
+          utc(2011, 0, 6),
+          utc(2011, 0, 11)
+        ]);
+      },
+      "does not observe the start of daylight savings time": function(range) {
+        assert.deepEqual(range(utc(2011, 2, 12), utc(2011, 2, 16)), [
+          utc(2011, 2, 12),
+          utc(2011, 2, 13),
+          utc(2011, 2, 14),
+          utc(2011, 2, 15)
+        ]);
+      },
+      "does not observe the end of daylight savings time": function(range) {
+        assert.deepEqual(range(utc(2011, 10, 5), utc(2011, 10, 9)), [
+          utc(2011, 10, 5),
+          utc(2011, 10, 6),
+          utc(2011, 10, 7),
+          utc(2011, 10, 8)
+        ]);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/format-test.js b/static/vendor/d3-2.8.1/test/time/format-test.js
new file mode 100755 (executable)
index 0000000..0869c16
--- /dev/null
@@ -0,0 +1,469 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.format");
+
+suite.addBatch({
+  "format": {
+    topic: function() {
+      return d3.time.format;
+    },
+    "formats abbreviated weekday": function(format) {
+      var f = format("%a");
+      assert.equal(f(local(1990, 0, 1)), "Mon");
+      assert.equal(f(local(1990, 0, 2)), "Tue");
+      assert.equal(f(local(1990, 0, 3)), "Wed");
+      assert.equal(f(local(1990, 0, 4)), "Thu");
+      assert.equal(f(local(1990, 0, 5)), "Fri");
+      assert.equal(f(local(1990, 0, 6)), "Sat");
+      assert.equal(f(local(1990, 0, 7)), "Sun");
+    },
+    "formats weekday": function(format) {
+      var f = format("%A");
+      assert.equal(f(local(1990, 0, 1)), "Monday");
+      assert.equal(f(local(1990, 0, 2)), "Tuesday");
+      assert.equal(f(local(1990, 0, 3)), "Wednesday");
+      assert.equal(f(local(1990, 0, 4)), "Thursday");
+      assert.equal(f(local(1990, 0, 5)), "Friday");
+      assert.equal(f(local(1990, 0, 6)), "Saturday");
+      assert.equal(f(local(1990, 0, 7)), "Sunday");
+    },
+    "formats abbreviated month": function(format) {
+      var f = format("%b");
+      assert.equal(f(local(1990, 0, 1)), "Jan");
+      assert.equal(f(local(1990, 1, 1)), "Feb");
+      assert.equal(f(local(1990, 2, 1)), "Mar");
+      assert.equal(f(local(1990, 3, 1)), "Apr");
+      assert.equal(f(local(1990, 4, 1)), "May");
+      assert.equal(f(local(1990, 5, 1)), "Jun");
+      assert.equal(f(local(1990, 6, 1)), "Jul");
+      assert.equal(f(local(1990, 7, 1)), "Aug");
+      assert.equal(f(local(1990, 8, 1)), "Sep");
+      assert.equal(f(local(1990, 9, 1)), "Oct");
+      assert.equal(f(local(1990, 10, 1)), "Nov");
+      assert.equal(f(local(1990, 11, 1)), "Dec");
+    },
+    "formats locale date and time": function(format) {
+      var f = format("%c");
+      assert.equal(f(local(1990, 0, 1)), "Mon Jan  1 00:00:00 1990");
+    },
+    "formats zero-padded date": function(format) {
+      var f = format("%d");
+      assert.equal(f(local(1990, 0, 1)), "01");
+    },
+    "formats space-padded date": function(format) {
+      var f = format("%e");
+      assert.equal(f(local(1990, 0, 1)), " 1");
+    },
+    "formats zero-padded hour (24)": function(format) {
+      var f = format("%H");
+      assert.equal(f(local(1990, 0, 1, 0)), "00");
+      assert.equal(f(local(1990, 0, 1, 13)), "13");
+    },
+    "formats zero-padded hour (12)": function(format) {
+      var f = format("%I");
+      assert.equal(f(local(1990, 0, 1, 0)), "12");
+      assert.equal(f(local(1990, 0, 1, 13)), "01");
+    },
+    "formats zero-padded day of year": function(format) {
+      var f = format("%j");
+      assert.equal(f(local(1990, 0, 1)), "001");
+      assert.equal(f(local(1990, 5, 1)), "152");
+      assert.equal(f(local(2010, 2, 13)), "072");
+      assert.equal(f(local(2010, 2, 14)), "073"); // DST begins
+      assert.equal(f(local(2010, 2, 15)), "074");
+      assert.equal(f(local(2010, 10, 6)), "310");
+      assert.equal(f(local(2010, 10, 7)), "311"); // DST ends
+      assert.equal(f(local(2010, 10, 8)), "312");
+    },
+    "formats zero-padded month": function(format) {
+      var f = format("%m");
+      assert.equal(f(local(1990, 0, 1)), "01");
+      assert.equal(f(local(1990, 9, 1)), "10");
+    },
+    "formats zero-padded minute": function(format) {
+      var f = format("%M");
+      assert.equal(f(local(1990, 0, 1, 0, 0)), "00");
+      assert.equal(f(local(1990, 0, 1, 0, 32)), "32");
+    },
+    "formats AM or PM": function(format) {
+      var f = format("%p");
+      assert.equal(f(local(1990, 0, 1, 0)), "AM");
+      assert.equal(f(local(1990, 0, 1, 13)), "PM");
+    },
+    "formats zero-padded second": function(format) {
+      var f = format("%S");
+      assert.equal(f(local(1990, 0, 1, 0, 0, 0)), "00");
+      assert.equal(f(local(1990, 0, 1, 0, 0, 32)), "32");
+    },
+    "formats zero-padded millisecond": function(format) {
+      var f = format("%L");
+      assert.equal(f(local(1990, 0, 1, 0, 0, 0, 0)), "000");
+      assert.equal(f(local(1990, 0, 1, 0, 0, 0, 432)), "432");
+    },
+    "formats zero-padded week number": function(format) {
+      var f = format("%U");
+      assert.equal(f(local(1990, 0, 1)), "00");
+      assert.equal(f(local(1990, 5, 1)), "21");
+      assert.equal(f(local(2010, 2, 13, 23)), "10");
+      assert.equal(f(local(2010, 2, 14, 00)), "11"); // DST begins
+      assert.equal(f(local(2010, 2, 15, 00)), "11");
+      assert.equal(f(local(2010, 10, 6, 23)), "44");
+      assert.equal(f(local(2010, 10, 7, 00)), "45"); // DST ends
+      assert.equal(f(local(2010, 10, 8, 00)), "45");
+    },
+    "formats locale date": function(format) {
+      var f = format("%x");
+      assert.equal(f(local(1990, 0, 1)), "01/01/90");
+      assert.equal(f(local(2010, 5, 1)), "06/01/10");
+    },
+    "formats locale time": function(format) {
+      var f = format("%X");
+      assert.equal(f(local(1990, 0, 1)), "00:00:00");
+      assert.equal(f(local(1990, 0, 1, 13, 34, 59)), "13:34:59");
+    },
+    "formats zero-padded two-digit year": function(format) {
+      var f = format("%y");
+      assert.equal(f(local(1990, 0, 1)), "90");
+      assert.equal(f(local(2002, 0, 1)), "02");
+    },
+    "formats zero-padded four-digit year": function(format) {
+      var f = format("%Y");
+      assert.equal(f(local(123, 0, 1)), "0123");
+      assert.equal(f(local(1990, 0, 1)), "1990");
+      assert.equal(f(local(2002, 0, 1)), "2002");
+      assert.equal(f(local(10002, 0, 1)), "0002");
+    },
+    "formats time zone": function(format) {
+      var f = format("%Z");
+      assert.equal(f(local(1990, 0, 1)), "-0800");
+    },
+    "formats literal percent sign": function(format) {
+      var f = format("%%");
+      assert.equal(f(local(1990, 0, 1)), "%");
+    },
+    "UTC": {
+      topic: function(format) {
+        return format.utc;
+      },
+      "formats abbreviated weekday": function(format) {
+        var f = format("%a");
+        assert.equal(f(utc(1990, 0, 1)), "Mon");
+        assert.equal(f(utc(1990, 0, 2)), "Tue");
+        assert.equal(f(utc(1990, 0, 3)), "Wed");
+        assert.equal(f(utc(1990, 0, 4)), "Thu");
+        assert.equal(f(utc(1990, 0, 5)), "Fri");
+        assert.equal(f(utc(1990, 0, 6)), "Sat");
+        assert.equal(f(utc(1990, 0, 7)), "Sun");
+      },
+      "formats weekday": function(format) {
+        var f = format("%A");
+        assert.equal(f(utc(1990, 0, 1)), "Monday");
+        assert.equal(f(utc(1990, 0, 2)), "Tuesday");
+        assert.equal(f(utc(1990, 0, 3)), "Wednesday");
+        assert.equal(f(utc(1990, 0, 4)), "Thursday");
+        assert.equal(f(utc(1990, 0, 5)), "Friday");
+        assert.equal(f(utc(1990, 0, 6)), "Saturday");
+        assert.equal(f(utc(1990, 0, 7)), "Sunday");
+      },
+      "formats abbreviated month": function(format) {
+        var f = format("%b");
+        assert.equal(f(utc(1990, 0, 1)), "Jan");
+        assert.equal(f(utc(1990, 1, 1)), "Feb");
+        assert.equal(f(utc(1990, 2, 1)), "Mar");
+        assert.equal(f(utc(1990, 3, 1)), "Apr");
+        assert.equal(f(utc(1990, 4, 1)), "May");
+        assert.equal(f(utc(1990, 5, 1)), "Jun");
+        assert.equal(f(utc(1990, 6, 1)), "Jul");
+        assert.equal(f(utc(1990, 7, 1)), "Aug");
+        assert.equal(f(utc(1990, 8, 1)), "Sep");
+        assert.equal(f(utc(1990, 9, 1)), "Oct");
+        assert.equal(f(utc(1990, 10, 1)), "Nov");
+        assert.equal(f(utc(1990, 11, 1)), "Dec");
+      },
+      "formats locale date and time": function(format) {
+        var f = format("%c");
+        assert.equal(f(utc(1990, 0, 1)), "Mon Jan  1 00:00:00 1990");
+      },
+      "formats zero-padded date": function(format) {
+        var f = format("%d");
+        assert.equal(f(utc(1990, 0, 1)), "01");
+      },
+      "formats space-padded date": function(format) {
+        var f = format("%e");
+        assert.equal(f(utc(1990, 0, 1)), " 1");
+      },
+      "formats zero-padded hour (24)": function(format) {
+        var f = format("%H");
+        assert.equal(f(utc(1990, 0, 1, 0)), "00");
+        assert.equal(f(utc(1990, 0, 1, 13)), "13");
+      },
+      "formats zero-padded hour (12)": function(format) {
+        var f = format("%I");
+        assert.equal(f(utc(1990, 0, 1, 0)), "12");
+        assert.equal(f(utc(1990, 0, 1, 13)), "01");
+      },
+      "formats zero-padded day of year": function(format) {
+        var f = format("%j");
+        assert.equal(f(utc(1990, 0, 1)), "001");
+        assert.equal(f(utc(1990, 5, 1)), "152");
+        assert.equal(f(utc(2010, 2, 13, 23)), "072");
+        assert.equal(f(utc(2010, 2, 14, 00)), "073"); // DST begins
+        assert.equal(f(utc(2010, 2, 15, 00)), "074");
+        assert.equal(f(utc(2010, 10, 6, 23)), "310");
+        assert.equal(f(utc(2010, 10, 7, 00)), "311"); // DST ends
+        assert.equal(f(utc(2010, 10, 8, 00)), "312");
+      },
+      "formats zero-padded month": function(format) {
+        var f = format("%m");
+        assert.equal(f(utc(1990, 0, 1)), "01");
+        assert.equal(f(utc(1990, 9, 1)), "10");
+      },
+      "formats zero-padded minute": function(format) {
+        var f = format("%M");
+        assert.equal(f(utc(1990, 0, 1, 0, 0)), "00");
+        assert.equal(f(utc(1990, 0, 1, 0, 32)), "32");
+      },
+      "formats AM or PM": function(format) {
+        var f = format("%p");
+        assert.equal(f(utc(1990, 0, 1, 0)), "AM");
+        assert.equal(f(utc(1990, 0, 1, 13)), "PM");
+      },
+      "formats zero-padded second": function(format) {
+        var f = format("%S");
+        assert.equal(f(utc(1990, 0, 1, 0, 0, 0)), "00");
+        assert.equal(f(utc(1990, 0, 1, 0, 0, 32)), "32");
+      },
+      "formats zero-padded millisecond": function(format) {
+        var f = format("%L");
+        assert.equal(f(utc(1990, 0, 1, 0, 0, 0, 0)), "000");
+        assert.equal(f(utc(1990, 0, 1, 0, 0, 0, 432)), "432");
+      },
+      "formats zero-padded week number": function(format) {
+        var f = format("%U");
+        assert.equal(f(utc(1990, 0, 1)), "00");
+        assert.equal(f(utc(1990, 5, 1)), "21");
+        assert.equal(f(utc(2010, 2, 13, 23)), "10");
+        assert.equal(f(utc(2010, 2, 14, 00)), "11"); // DST begins
+        assert.equal(f(utc(2010, 2, 15, 00)), "11");
+        assert.equal(f(utc(2010, 10, 6, 23)), "44");
+        assert.equal(f(utc(2010, 10, 7, 00)), "45"); // DST ends
+        assert.equal(f(utc(2010, 10, 8, 00)), "45");
+      },
+      "formats locale date": function(format) {
+        var f = format("%x");
+        assert.equal(f(utc(1990, 0, 1)), "01/01/90");
+        assert.equal(f(utc(2010, 5, 1)), "06/01/10");
+      },
+      "formats locale time": function(format) {
+        var f = format("%X");
+        assert.equal(f(utc(1990, 0, 1)), "00:00:00");
+        assert.equal(f(utc(1990, 0, 1, 13, 34, 59)), "13:34:59");
+      },
+      "formats zero-padded two-digit year": function(format) {
+        var f = format("%y");
+        assert.equal(f(utc(1990, 0, 1)), "90");
+        assert.equal(f(utc(2002, 0, 1)), "02");
+      },
+      "formats zero-padded four-digit year": function(format) {
+        var f = format("%Y");
+        assert.equal(f(utc(123, 0, 1)), "0123");
+        assert.equal(f(utc(1990, 0, 1)), "1990");
+        assert.equal(f(utc(2002, 0, 1)), "2002");
+        assert.equal(f(utc(10002, 0, 1)), "0002");
+      },
+      "formats time zone": function(format) {
+        var f = format("%Z");
+        assert.equal(f(utc(1990, 0, 1)), "+0000");
+      },
+      "formats literal percent sign": function(format) {
+        var f = format("%%");
+        assert.equal(f(utc(1990, 0, 1)), "%");
+      },
+    },
+    "ISO": {
+      topic: function(format) {
+        return format.iso;
+      },
+      "toString is %Y-%m-%dT%H:%M:%S.%LZ": function(format) {
+        assert.equal(format + "", "%Y-%m-%dT%H:%M:%S.%LZ");
+      },
+      "formats as ISO 8601": function(format) {
+        assert.equal(format(utc(1990, 0, 1, 0, 0, 0)), "1990-01-01T00:00:00.000Z");
+        assert.equal(format(utc(2011, 11, 31, 23, 59, 59)), "2011-12-31T23:59:59.000Z");
+      }
+    }
+  },
+  "parse": {
+    topic: function() {
+      return d3.time.format;
+    },
+    "parses abbreviated weekday and numeric date": function(format) {
+      var p = format("%a %m/%d/%Y").parse;
+      assert.deepEqual(p("Sun 01/01/1990"), local(1990, 0, 1));
+      assert.deepEqual(p("Wed 02/03/1991"), local(1991, 1, 3));
+      assert.isNull(p("XXX 03/10/2010"));
+    },
+    "parses weekday and numeric date": function(format) {
+      var p = format("%A %m/%d/%Y").parse;
+      assert.deepEqual(p("Sunday 01/01/1990"), local(1990, 0, 1));
+      assert.deepEqual(p("Wednesday 02/03/1991"), local(1991, 1, 3));
+      assert.isNull(p("Caturday 03/10/2010"));
+    },
+    "parses numeric date": function(format) {
+      var p = format("%m/%d/%y").parse;
+      assert.deepEqual(p("01/01/90"), local(2090, 0, 1));
+      assert.deepEqual(p("02/03/91"), local(2091, 1, 3));
+      assert.isNull(p("03/10/2010"));
+    },
+    "parses locale date": function(format) {
+      var p = format("%x").parse;
+      assert.deepEqual(p("01/01/90"), local(2090, 0, 1));
+      assert.deepEqual(p("02/03/91"), local(2091, 1, 3));
+      assert.isNull(p("03/10/2010"));
+    },
+    "parses abbreviated month, date and year": function(format) {
+      var p = format("%b %d, %Y").parse;
+      assert.deepEqual(p("jan 01, 1990"), local(1990, 0, 1));
+      assert.deepEqual(p("feb  2, 2010"), local(2010, 1, 2));
+      assert.isNull(p("jan. 1, 1990"));
+    },
+    "parses month, date and year": function(format) {
+      var p = format("%B %d, %Y").parse;
+      assert.deepEqual(p("january 01, 1990"), local(1990, 0, 1));
+      assert.deepEqual(p("February  2, 2010"), local(2010, 1, 2));
+      assert.isNull(p("jan 1, 1990"));
+    },
+    "parses locale date and time": function(format) {
+      var p = format("%c").parse;
+      assert.deepEqual(p("Mon Jan  1 00:00:00 1990"), local(1990, 0, 1));
+      assert.deepEqual(p("Sun Jan  1 00:00:00 1990"), local(1990, 0, 1));
+      assert.deepEqual(p("Mon Jan 01 00:00:00 1990"), local(1990, 0, 1));
+      assert.deepEqual(p("Mon Jan 1 00:00:00 1990"), local(1990, 0, 1));
+      assert.deepEqual(p("Mon Jan 1 0:0:0 1990"), local(1990, 0, 1));
+    },
+    "parses twenty-four hour, minute and second": function(format) {
+      var p = format("%H:%M:%S").parse;
+      assert.deepEqual(p("00:00:00"), local(1900, 0, 1, 0, 0, 0));
+      assert.deepEqual(p("11:59:59"), local(1900, 0, 1, 11, 59, 59));
+      assert.deepEqual(p("12:00:00"), local(1900, 0, 1, 12, 0, 0));
+      assert.deepEqual(p("12:00:01"), local(1900, 0, 1, 12, 0, 1));
+      assert.deepEqual(p("23:59:59"), local(1900, 0, 1, 23, 59, 59));
+    },
+    "parses locale time": function(format) {
+      var p = format("%X").parse;
+      assert.deepEqual(p("00:00:00"), local(1900, 0, 1, 0, 0, 0));
+      assert.deepEqual(p("11:59:59"), local(1900, 0, 1, 11, 59, 59));
+      assert.deepEqual(p("12:00:00"), local(1900, 0, 1, 12, 0, 0));
+      assert.deepEqual(p("12:00:01"), local(1900, 0, 1, 12, 0, 1));
+      assert.deepEqual(p("23:59:59"), local(1900, 0, 1, 23, 59, 59));
+    },
+    "parses twelve hour, minute and second": function(format) {
+      var p = format("%I:%M:%S %p").parse;
+      assert.deepEqual(p("12:00:00 am"), local(1900, 0, 1, 0, 0, 0));
+      assert.deepEqual(p("11:59:59 AM"), local(1900, 0, 1, 11, 59, 59));
+      assert.deepEqual(p("12:00:00 pm"), local(1900, 0, 1, 12, 0, 0));
+      assert.deepEqual(p("12:00:01 pm"), local(1900, 0, 1, 12, 0, 1));
+      assert.deepEqual(p("11:59:59 PM"), local(1900, 0, 1, 23, 59, 59));
+    },
+    "doesn't crash when given weird strings": function(format) {
+      try {
+        Object.prototype.foo = 10;
+        var p = format("%b %d, %Y").parse;
+        assert.isNull(p("foo 1, 1990"));
+      } finally {
+        delete Object.prototype.foo;
+      }
+    },
+    "UTC": {
+      topic: function(format) {
+        return format.utc;
+      },
+      "parses abbreviated weekday and numeric date": function(format) {
+        var p = format("%a %m/%d/%Y").parse;
+        assert.deepEqual(p("Sun 01/01/1990"), utc(1990, 0, 1));
+        assert.deepEqual(p("Wed 02/03/1991"), utc(1991, 1, 3));
+        assert.isNull(p("XXX 03/10/2010"));
+      },
+      "parses weekday and numeric date": function(format) {
+        var p = format("%A %m/%d/%Y").parse;
+        assert.deepEqual(p("Sunday 01/01/1990"), utc(1990, 0, 1));
+        assert.deepEqual(p("Wednesday 02/03/1991"), utc(1991, 1, 3));
+        assert.isNull(p("Caturday 03/10/2010"));
+      },
+      "parses numeric date": function(format) {
+        var p = format("%m/%d/%y").parse;
+        assert.deepEqual(p("01/01/90"), utc(2090, 0, 1));
+        assert.deepEqual(p("02/03/91"), utc(2091, 1, 3));
+        assert.isNull(p("03/10/2010"));
+      },
+      "parses locale date": function(format) {
+        var p = format("%x").parse;
+        assert.deepEqual(p("01/01/90"), utc(2090, 0, 1));
+        assert.deepEqual(p("02/03/91"), utc(2091, 1, 3));
+        assert.isNull(p("03/10/2010"));
+      },
+      "parses abbreviated month, date and year": function(format) {
+        var p = format("%b %d, %Y").parse;
+        assert.deepEqual(p("jan 01, 1990"), utc(1990, 0, 1));
+        assert.deepEqual(p("feb  2, 2010"), utc(2010, 1, 2));
+        assert.isNull(p("jan. 1, 1990"));
+      },
+      "parses month, date and year": function(format) {
+        var p = format("%B %d, %Y").parse;
+        assert.deepEqual(p("january 01, 1990"), utc(1990, 0, 1));
+        assert.deepEqual(p("February  2, 2010"), utc(2010, 1, 2));
+        assert.isNull(p("jan 1, 1990"));
+      },
+      "parses locale date and time": function(format) {
+        var p = format("%c").parse;
+        assert.deepEqual(p("Mon Jan  1 00:00:00 1990"), utc(1990, 0, 1));
+        assert.deepEqual(p("Sun Jan  1 00:00:00 1990"), utc(1990, 0, 1));
+        assert.deepEqual(p("Mon Jan 01 00:00:00 1990"), utc(1990, 0, 1));
+        assert.deepEqual(p("Mon Jan 1 00:00:00 1990"), utc(1990, 0, 1));
+        assert.deepEqual(p("Mon Jan 1 0:0:0 1990"), utc(1990, 0, 1));
+      },
+      "parses twenty-four hour, minute and second": function(format) {
+        var p = format("%H:%M:%S").parse;
+        assert.deepEqual(p("00:00:00"), utc(1900, 0, 1, 0, 0, 0));
+        assert.deepEqual(p("11:59:59"), utc(1900, 0, 1, 11, 59, 59));
+        assert.deepEqual(p("12:00:00"), utc(1900, 0, 1, 12, 0, 0));
+        assert.deepEqual(p("12:00:01"), utc(1900, 0, 1, 12, 0, 1));
+        assert.deepEqual(p("23:59:59"), utc(1900, 0, 1, 23, 59, 59));
+      },
+      "parses locale time": function(format) {
+        var p = format("%X").parse;
+        assert.deepEqual(p("00:00:00"), utc(1900, 0, 1, 0, 0, 0));
+        assert.deepEqual(p("11:59:59"), utc(1900, 0, 1, 11, 59, 59));
+        assert.deepEqual(p("12:00:00"), utc(1900, 0, 1, 12, 0, 0));
+        assert.deepEqual(p("12:00:01"), utc(1900, 0, 1, 12, 0, 1));
+        assert.deepEqual(p("23:59:59"), utc(1900, 0, 1, 23, 59, 59));
+      },
+      "parses twelve hour, minute and second": function(format) {
+        var p = format("%I:%M:%S %p").parse;
+        assert.deepEqual(p("12:00:00 am"), utc(1900, 0, 1, 0, 0, 0));
+        assert.deepEqual(p("11:59:59 AM"), utc(1900, 0, 1, 11, 59, 59));
+        assert.deepEqual(p("12:00:00 pm"), utc(1900, 0, 1, 12, 0, 0));
+        assert.deepEqual(p("12:00:01 pm"), utc(1900, 0, 1, 12, 0, 1));
+        assert.deepEqual(p("11:59:59 PM"), utc(1900, 0, 1, 23, 59, 59));
+      }
+    },
+    "ISO": {
+      topic: function(format) {
+        return format.iso;
+      },
+      "parses as ISO 8601": function(format) {
+        var p = format.parse;
+        assert.deepEqual(p("1990-01-01T00:00:00.000Z"), utc(1990, 0, 1, 0, 0, 0));
+        assert.deepEqual(p("2011-12-31T23:59:59.000Z"), utc(2011, 11, 31, 23, 59, 59));
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/hour-test.js b/static/vendor/d3-2.8.1/test/time/hour-test.js
new file mode 100755 (executable)
index 0000000..5ea033a
--- /dev/null
@@ -0,0 +1,218 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.hour");
+
+suite.addBatch({
+  "hour": {
+    topic: function() {
+      return d3.time.hour;
+    },
+    "defaults to floor": function(interval) {
+      assert.strictEqual(interval, interval.floor);
+    },
+    "floor": {
+      topic: function(interval) {
+        return interval.floor;
+      },
+      "returns hours": function(floor) {
+        assert.deepEqual(floor(local(2010, 11, 31, 23, 59)), local(2010, 11, 31, 23));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 00)), local(2011, 00, 01, 00));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 01)), local(2011, 00, 01, 00));
+      },
+      "observes start of daylight savings time": function(floor) {
+        assert.deepEqual(floor(utc(2011, 02, 13, 08, 59)), utc(2011, 02, 13, 08));
+        assert.deepEqual(floor(utc(2011, 02, 13, 09, 00)), utc(2011, 02, 13, 09));
+        assert.deepEqual(floor(utc(2011, 02, 13, 09, 01)), utc(2011, 02, 13, 09));
+        assert.deepEqual(floor(utc(2011, 02, 13, 09, 59)), utc(2011, 02, 13, 09));
+        assert.deepEqual(floor(utc(2011, 02, 13, 10, 00)), utc(2011, 02, 13, 10));
+        assert.deepEqual(floor(utc(2011, 02, 13, 10, 01)), utc(2011, 02, 13, 10));
+      },
+      "observes end of daylight savings time": function(floor) {
+        assert.deepEqual(floor(utc(2011, 10, 06, 07, 59)), utc(2011, 10, 06, 07));
+        assert.deepEqual(floor(utc(2011, 10, 06, 08, 00)), utc(2011, 10, 06, 08));
+        assert.deepEqual(floor(utc(2011, 10, 06, 08, 01)), utc(2011, 10, 06, 08));
+        assert.deepEqual(floor(utc(2011, 10, 06, 08, 59)), utc(2011, 10, 06, 08));
+        assert.deepEqual(floor(utc(2011, 10, 06, 09, 00)), utc(2011, 10, 06, 09));
+        assert.deepEqual(floor(utc(2011, 10, 06, 09, 01)), utc(2011, 10, 06, 09));
+      },
+      "NPT": {
+        "observes 15-minute offset": time.zone("Asia/Kathmandu", function(floor) {
+          assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 31, 17, 15));
+          assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00)), utc(2010, 11, 31, 18, 15));
+          assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 01)), utc(2010, 11, 31, 18, 15));
+        })
+      },
+      "IST": {
+        "observes 30-minute offset": time.zone("Asia/Calcutta", function(floor) {
+          assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 31, 17, 30));
+          assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00)), utc(2010, 11, 31, 18, 30));
+          assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 01)), utc(2010, 11, 31, 18, 30));
+        })
+      }
+    },
+    "ceil": {
+      topic: function(interval) {
+        return interval.ceil;
+      },
+      "returns hours": function(ceil) {
+        assert.deepEqual(ceil(local(2010, 11, 31, 23, 59)), local(2011, 00, 01, 00));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 00)), local(2011, 00, 01, 00));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 01)), local(2011, 00, 01, 01));
+      },
+      "observes start of daylight savings time": function(ceil) {
+        assert.deepEqual(ceil(utc(2011, 02, 13, 08, 59)), utc(2011, 02, 13, 09));
+        assert.deepEqual(ceil(utc(2011, 02, 13, 09, 00)), utc(2011, 02, 13, 09));
+        assert.deepEqual(ceil(utc(2011, 02, 13, 09, 01)), utc(2011, 02, 13, 10));
+        assert.deepEqual(ceil(utc(2011, 02, 13, 09, 59)), utc(2011, 02, 13, 10));
+        assert.deepEqual(ceil(utc(2011, 02, 13, 10, 00)), utc(2011, 02, 13, 10));
+        assert.deepEqual(ceil(utc(2011, 02, 13, 10, 01)), utc(2011, 02, 13, 11));
+      },
+      "observes end of daylight savings time": function(ceil) {
+        assert.deepEqual(ceil(utc(2011, 10, 06, 07, 59)), utc(2011, 10, 06, 08));
+        assert.deepEqual(ceil(utc(2011, 10, 06, 08, 00)), utc(2011, 10, 06, 08));
+        assert.deepEqual(ceil(utc(2011, 10, 06, 08, 01)), utc(2011, 10, 06, 09));
+        assert.deepEqual(ceil(utc(2011, 10, 06, 08, 59)), utc(2011, 10, 06, 09));
+        assert.deepEqual(ceil(utc(2011, 10, 06, 09, 00)), utc(2011, 10, 06, 09));
+        assert.deepEqual(ceil(utc(2011, 10, 06, 09, 01)), utc(2011, 10, 06, 10));
+      },
+      "NPT": {
+        "observes 15-minute offset": time.zone("Asia/Kathmandu", function(ceil) {
+          assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 31, 18, 15));
+          assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00)), utc(2010, 11, 31, 18, 15));
+          assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 01)), utc(2010, 11, 31, 19, 15));
+        })
+      },
+      "IST": {
+        "observes 30-minute offset": time.zone("Asia/Calcutta", function(ceil) {
+          assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 31, 18, 30));
+          assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00)), utc(2010, 11, 31, 18, 30));
+          assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 01)), utc(2010, 11, 31, 19, 30));
+        })
+      }
+    },
+    "offset": {
+      topic: function(interval) {
+        return interval.offset;
+      },
+      "does not modify the passed-in date": function(offset) {
+        var date = local(2010, 11, 31, 23, 59, 59, 999);
+        offset(date, +1);
+        assert.deepEqual(date, local(2010, 11, 31, 23, 59, 59, 999));
+      },
+      "does not round the passed-in-date": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), +1), local(2011, 00, 01, 00, 59, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 456), -2), local(2010, 11, 31, 21, 59, 59, 456));
+      },
+      "allows negative offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 12), -1), local(2010, 11, 31, 11));
+        assert.deepEqual(offset(local(2011, 00, 01, 01), -2), local(2010, 11, 31, 23));
+        assert.deepEqual(offset(local(2011, 00, 01, 00), -1), local(2010, 11, 31, 23));
+      },
+      "allows positive offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 11), +1), local(2010, 11, 31, 12));
+        assert.deepEqual(offset(local(2010, 11, 31, 23), +2), local(2011, 00, 01, 01));
+        assert.deepEqual(offset(local(2010, 11, 31, 23), +1), local(2011, 00, 01, 00));
+      },
+      "allows zero offset": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), 0), local(2010, 11, 31, 23, 59, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 58, 000), 0), local(2010, 11, 31, 23, 59, 58, 000));
+      }
+    },
+    "UTC": {
+      topic: function(interval) {
+        return interval.utc;
+      },
+      "defaults to floor": function(interval) {
+        assert.strictEqual(interval, interval.floor);
+      },
+      "floor": {
+        topic: function(interval) {
+          return interval.floor;
+        },
+        "returns hours": function(floor) {
+          assert.deepEqual(floor(utc(2010, 11, 31, 23, 59)), utc(2010, 11, 31, 23));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 00)), utc(2011, 00, 01, 00));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 01)), utc(2011, 00, 01, 00));
+        },
+        "does not observe the start of daylight savings time": function(floor) {
+          assert.deepEqual(floor(utc(2011, 02, 13, 08, 59)), utc(2011, 02, 13, 08));
+          assert.deepEqual(floor(utc(2011, 02, 13, 09, 00)), utc(2011, 02, 13, 09));
+          assert.deepEqual(floor(utc(2011, 02, 13, 09, 01)), utc(2011, 02, 13, 09));
+          assert.deepEqual(floor(utc(2011, 02, 13, 09, 59)), utc(2011, 02, 13, 09));
+          assert.deepEqual(floor(utc(2011, 02, 13, 10, 00)), utc(2011, 02, 13, 10));
+          assert.deepEqual(floor(utc(2011, 02, 13, 10, 01)), utc(2011, 02, 13, 10));
+        },
+        "does not observe the end of daylight savings time": function(floor) {
+          assert.deepEqual(floor(utc(2011, 10, 06, 07, 59)), utc(2011, 10, 06, 07));
+          assert.deepEqual(floor(utc(2011, 10, 06, 08, 00)), utc(2011, 10, 06, 08));
+          assert.deepEqual(floor(utc(2011, 10, 06, 08, 01)), utc(2011, 10, 06, 08));
+          assert.deepEqual(floor(utc(2011, 10, 06, 08, 59)), utc(2011, 10, 06, 08));
+          assert.deepEqual(floor(utc(2011, 10, 06, 09, 00)), utc(2011, 10, 06, 09));
+          assert.deepEqual(floor(utc(2011, 10, 06, 09, 01)), utc(2011, 10, 06, 09));
+        }
+      },
+      "ceil": {
+        topic: function(interval) {
+          return interval.ceil;
+        },
+        "returns hours": function(ceil) {
+          assert.deepEqual(ceil(utc(2010, 11, 31, 23, 59)), utc(2011, 00, 01, 00));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00)), utc(2011, 00, 01, 00));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 01)), utc(2011, 00, 01, 01));
+        },
+        "does not observe the start of daylight savings time": function(ceil) {
+          assert.deepEqual(ceil(utc(2011, 02, 13, 08, 59)), utc(2011, 02, 13, 09));
+          assert.deepEqual(ceil(utc(2011, 02, 13, 09, 00)), utc(2011, 02, 13, 09));
+          assert.deepEqual(ceil(utc(2011, 02, 13, 09, 01)), utc(2011, 02, 13, 10));
+          assert.deepEqual(ceil(utc(2011, 02, 13, 09, 59)), utc(2011, 02, 13, 10));
+          assert.deepEqual(ceil(utc(2011, 02, 13, 10, 00)), utc(2011, 02, 13, 10));
+          assert.deepEqual(ceil(utc(2011, 02, 13, 10, 01)), utc(2011, 02, 13, 11));
+        },
+        "does not observe the end of daylight savings time": function(ceil) {
+          assert.deepEqual(ceil(utc(2011, 10, 06, 07, 59)), utc(2011, 10, 06, 08));
+          assert.deepEqual(ceil(utc(2011, 10, 06, 08, 00)), utc(2011, 10, 06, 08));
+          assert.deepEqual(ceil(utc(2011, 10, 06, 08, 01)), utc(2011, 10, 06, 09));
+          assert.deepEqual(ceil(utc(2011, 10, 06, 08, 59)), utc(2011, 10, 06, 09));
+          assert.deepEqual(ceil(utc(2011, 10, 06, 09, 00)), utc(2011, 10, 06, 09));
+          assert.deepEqual(ceil(utc(2011, 10, 06, 09, 01)), utc(2011, 10, 06, 10));
+        }
+      },
+      "offset": {
+        topic: function(interval) {
+          return interval.offset;
+        },
+        "does not modify the passed-in date": function(offset) {
+          var date = utc(2010, 11, 31, 23, 59, 59, 999);
+          offset(date, +1);
+          assert.deepEqual(date, utc(2010, 11, 31, 23, 59, 59, 999));
+        },
+        "does not round the passed-in-date": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), +1), utc(2011, 00, 01, 00, 59, 59, 999));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 456), -2), utc(2010, 11, 31, 21, 59, 59, 456));
+        },
+        "allows negative offsets": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 12), -1), utc(2010, 11, 31, 11));
+          assert.deepEqual(offset(utc(2011, 00, 01, 01), -2), utc(2010, 11, 31, 23));
+          assert.deepEqual(offset(utc(2011, 00, 01, 00), -1), utc(2010, 11, 31, 23));
+        },
+        "allows positive offsets": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 11), +1), utc(2010, 11, 31, 12));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23), +2), utc(2011, 00, 01, 01));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23), +1), utc(2011, 00, 01, 00));
+        },
+        "allows zero offset": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), 0), utc(2010, 11, 31, 23, 59, 59, 999));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 58, 000), 0), utc(2010, 11, 31, 23, 59, 58, 000));
+        }
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/hours-test.js b/static/vendor/d3-2.8.1/test/time/hours-test.js
new file mode 100755 (executable)
index 0000000..24c32e2
--- /dev/null
@@ -0,0 +1,128 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.hours");
+
+suite.addBatch({
+  "hours": {
+    topic: function() {
+      return d3.time.hours;
+    },
+    "returns hours": function(range) {
+      assert.deepEqual(range(local(2010, 11, 31, 12, 30), local(2010, 11, 31, 15, 30)), [
+        local(2010, 11, 31, 13),
+        local(2010, 11, 31, 14),
+        local(2010, 11, 31, 15)
+      ]);
+    },
+    "has an inclusive lower bound": function(range) {
+      assert.deepEqual(range(local(2010, 11, 31, 23), local(2011, 0, 1, 2))[0], local(2010, 11, 31, 23));
+    },
+    "has an exclusive upper bound": function(range) {
+      assert.deepEqual(range(local(2010, 11, 31, 23), local(2011, 0, 1, 2))[2], local(2011, 0, 1, 1));
+    },
+    "can skip hours": function(range) {
+      assert.deepEqual(range(local(2011, 1, 1, 1), local(2011, 1, 1, 13), 3), [
+        local(2011, 1, 1, 3),
+        local(2011, 1, 1, 6),
+        local(2011, 1, 1, 9),
+        local(2011, 1, 1, 12)
+      ]);
+    },
+    "observes start of daylight savings time": function(range) {
+      assert.deepEqual(range(local(2011, 2, 13, 1), local(2011, 2, 13, 5)), [
+        utc(2011, 2, 13, 9),
+        utc(2011, 2, 13, 10),
+        utc(2011, 2, 13, 11)
+      ]);
+    },
+    "observes end of daylight savings time": function(range) {
+      assert.deepEqual(range(local(2011, 10, 6, 0), local(2011, 10, 6, 2)), [
+        utc(2011, 10, 6, 7),
+        utc(2011, 10, 6, 8),
+        utc(2011, 10, 6, 9)
+      ]);
+    },
+    "NPT": {
+      "observes 15-minute offset": tz("Asia/Kathmandu", function(range) {
+        assert.deepEqual(range(local(2011, 10, 7, 0), local(2011, 10, 7, 3)), [
+          utc(2011, 10, 6, 18, 15),
+          utc(2011, 10, 6, 19, 15),
+          utc(2011, 10, 6, 20, 15)
+        ]);
+      })
+    },
+    "IST": {
+      "observes 30-minute offset": tz("Asia/Calcutta", function(range) {
+        assert.deepEqual(range(local(2011, 10, 7, 0), local(2011, 10, 7, 3)), [
+          utc(2011, 10, 6, 18, 30),
+          utc(2011, 10, 6, 19, 30),
+          utc(2011, 10, 6, 20, 30)
+        ]);
+      })
+    },
+    "UTC": {
+      topic: function(range) {
+        return range.utc;
+      },
+      "returns hours": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 31, 12, 30), utc(2010, 11, 31, 15, 30)), [
+          utc(2010, 11, 31, 13),
+          utc(2010, 11, 31, 14),
+          utc(2010, 11, 31, 15)
+        ]);
+      },
+      "has an inclusive lower bound": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 31, 23), utc(2011, 0, 1, 2))[0], utc(2010, 11, 31, 23));
+      },
+      "has an exclusive upper bound": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 31, 23), utc(2011, 0, 1, 2))[2], utc(2011, 0, 1, 1));
+      },
+      "can skip hours": function(range) {
+        assert.deepEqual(range(utc(2011, 1, 1, 1), utc(2011, 1, 1, 13), 3), [
+          utc(2011, 1, 1, 3),
+          utc(2011, 1, 1, 6),
+          utc(2011, 1, 1, 9),
+          utc(2011, 1, 1, 12)
+        ]);
+      },
+      "observes start of daylight savings time": function(range) {
+        assert.deepEqual(range(utc(2011, 2, 13, 9), utc(2011, 2, 13, 12)), [
+          utc(2011, 2, 13, 9),
+          utc(2011, 2, 13, 10),
+          utc(2011, 2, 13, 11)
+        ]);
+      },
+      "observes end of daylight savings time": function(range) {
+        assert.deepEqual(range(utc(2011, 10, 6, 7), utc(2011, 10, 6, 10)), [
+          utc(2011, 10, 6, 7),
+          utc(2011, 10, 6, 8),
+          utc(2011, 10, 6, 9)
+        ]);
+      }
+    }
+  }
+});
+
+function tz(tz, scope) {
+  return function() {
+    var o = process.env.TZ;
+    try {
+      process.env.TZ = tz;
+      new Date(0).toString(); // invalidate node's dst cache
+      new Date().toString();
+      scope.apply(this, arguments);
+    } finally {
+      process.env.TZ = o;
+      new Date(0).toString(); // invalidate node's dst cache
+      new Date().toString();
+    }
+  };
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/minute-test.js b/static/vendor/d3-2.8.1/test/time/minute-test.js
new file mode 100755 (executable)
index 0000000..25a532e
--- /dev/null
@@ -0,0 +1,130 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.minute");
+
+suite.addBatch({
+  "minute": {
+    topic: function() {
+      return d3.time.minute;
+    },
+    "defaults to floor": function(interval) {
+      assert.strictEqual(interval, interval.floor);
+    },
+    "floor": {
+      topic: function(interval) {
+        return interval.floor;
+      },
+      "returns minutes": function(floor) {
+        assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), local(2010, 11, 31, 23, 59));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 01, 00, 00));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 59)), local(2011, 00, 01, 00, 00));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 01, 00)), local(2011, 00, 01, 00, 01));
+      }
+    },
+    "ceil": {
+      topic: function(interval) {
+        return interval.ceil;
+      },
+      "returns minutes": function(ceil) {
+        assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59)), local(2011, 00, 01, 00, 00));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 01, 00, 00));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 59)), local(2011, 00, 01, 00, 01));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 01, 00)), local(2011, 00, 01, 00, 01));
+      }
+    },
+    "offset": {
+      topic: function(interval) {
+        return interval.offset;
+      },
+      "does not modify the passed-in date": function(offset) {
+        var date = local(2010, 11, 31, 23, 59, 59, 999);
+        offset(date, +1);
+        assert.deepEqual(date, local(2010, 11, 31, 23, 59, 59, 999));
+      },
+      "does not round the passed-in-date": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), +1), local(2011, 00, 01, 00, 00, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 456), -2), local(2010, 11, 31, 23, 57, 59, 456));
+      },
+      "allows negative offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 12), -1), local(2010, 11, 31, 23, 11));
+        assert.deepEqual(offset(local(2011, 00, 01, 00, 01), -2), local(2010, 11, 31, 23, 59));
+        assert.deepEqual(offset(local(2011, 00, 01, 00, 00), -1), local(2010, 11, 31, 23, 59));
+      },
+      "allows positive offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 11), +1), local(2010, 11, 31, 23, 12));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59), +2), local(2011, 00, 01, 00, 01));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59), +1), local(2011, 00, 01, 00, 00));
+      },
+      "allows zero offset": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), 0), local(2010, 11, 31, 23, 59, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 58, 000), 0), local(2010, 11, 31, 23, 59, 58, 000));
+      }
+    },
+    "UTC": {
+      topic: function(interval) {
+        return interval.utc;
+      },
+      "defaults to floor": function(interval) {
+        assert.strictEqual(interval, interval.floor);
+      },
+      "floor": {
+        topic: function(interval) {
+          return interval.floor;
+        },
+        "returns minutes": function(floor) {
+          assert.deepEqual(floor(utc(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 31, 23, 59));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 01, 00, 00));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 59)), utc(2011, 00, 01, 00, 00));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 01, 00)), utc(2011, 00, 01, 00, 01));
+        }
+      },
+      "ceil": {
+        topic: function(interval) {
+          return interval.ceil;
+        },
+        "returns minutes": function(ceil) {
+          assert.deepEqual(ceil(utc(2010, 11, 31, 23, 59, 59)), utc(2011, 00, 01, 00, 00));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 01, 00, 00));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 59)), utc(2011, 00, 01, 00, 01));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 01, 00)), utc(2011, 00, 01, 00, 01));
+        }
+      },
+      "offset": {
+        topic: function(interval) {
+          return interval.offset;
+        },
+        "does not modify the passed-in date": function(offset) {
+          var date = utc(2010, 11, 31, 23, 59, 59, 999);
+          offset(date, +1);
+          assert.deepEqual(date, utc(2010, 11, 31, 23, 59, 59, 999));
+        },
+        "does not round the passed-in-date": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), +1), utc(2011, 00, 01, 00, 00, 59, 999));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 456), -2), utc(2010, 11, 31, 23, 57, 59, 456));
+        },
+        "allows negative offsets": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 12), -1), utc(2010, 11, 31, 23, 11));
+          assert.deepEqual(offset(utc(2011, 00, 01, 00, 01), -2), utc(2010, 11, 31, 23, 59));
+          assert.deepEqual(offset(utc(2011, 00, 01, 00, 00), -1), utc(2010, 11, 31, 23, 59));
+        },
+        "allows positive offsets": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 11), +1), utc(2010, 11, 31, 23, 12));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59), +2), utc(2011, 00, 01, 00, 01));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59), +1), utc(2011, 00, 01, 00, 00));
+        },
+        "allows zero offset": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), 0), utc(2010, 11, 31, 23, 59, 59, 999));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 58, 000), 0), utc(2010, 11, 31, 23, 59, 58, 000));
+        }
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/minutes-test.js b/static/vendor/d3-2.8.1/test/time/minutes-test.js
new file mode 100755 (executable)
index 0000000..153a381
--- /dev/null
@@ -0,0 +1,94 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.minutes");
+
+suite.addBatch({
+  "minutes": {
+    topic: function() {
+      return d3.time.minutes;
+    },
+    "returns minutes": function(range) {
+      assert.deepEqual(range(local(2010, 11, 31, 23, 59), local(2011, 0, 1, 0, 2)), [
+        local(2010, 11, 31, 23, 59),
+        local(2011, 0, 1, 0, 0),
+        local(2011, 0, 1, 0, 1)
+      ]);
+    },
+    "has an inclusive lower bound": function(range) {
+      assert.deepEqual(range(local(2010, 11, 31, 23, 59), local(2011, 0, 1, 0, 2))[0], local(2010, 11, 31, 23, 59));
+    },
+    "has an exclusive upper bound": function(range) {
+      assert.deepEqual(range(local(2010, 11, 31, 23, 59), local(2011, 0, 1, 0, 2))[2], local(2011, 0, 1, 0, 1));
+    },
+    "can skip minutes": function(range) {
+      assert.deepEqual(range(local(2011, 1, 1, 12, 7), local(2011, 1, 1, 13, 7), 15), [
+        local(2011, 1, 1, 12, 15),
+        local(2011, 1, 1, 12, 30),
+        local(2011, 1, 1, 12, 45),
+        local(2011, 1, 1, 13, 0)
+      ]);
+    },
+    "observes start of daylight savings time": function(range) {
+      assert.deepEqual(range(utc(2011, 2, 13, 9, 59), utc(2011, 2, 13, 10, 2)), [
+        utc(2011, 2, 13, 9, 59),
+        utc(2011, 2, 13, 10, 0),
+        utc(2011, 2, 13, 10, 1)
+      ]);
+    },
+    "observes end of daylight savings time": function(range) {
+      assert.deepEqual(range(utc(2011, 10, 6, 8, 59), utc(2011, 10, 6, 9, 2)), [
+        utc(2011, 10, 6, 8, 59),
+        utc(2011, 10, 6, 9, 0),
+        utc(2011, 10, 6, 9, 1)
+      ]);
+    },
+    "UTC": {
+      topic: function(range) {
+        return range.utc;
+      },
+      "returns minutes": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 31, 23, 59), utc(2011, 0, 1, 0, 2)), [
+          utc(2010, 11, 31, 23, 59),
+          utc(2011, 0, 1, 0, 0),
+          utc(2011, 0, 1, 0, 1)
+        ]);
+      },
+      "has an inclusive lower bound": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 31, 23, 59), utc(2011, 0, 1, 0, 2))[0], utc(2010, 11, 31, 23, 59));
+      },
+      "has an exclusive upper bound": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 31, 23, 59), utc(2011, 0, 1, 0, 2))[2], utc(2011, 0, 1, 0, 1));
+      },
+      "can skip minutes": function(range) {
+        assert.deepEqual(range(utc(2011, 1, 1, 12, 7), utc(2011, 1, 1, 13, 7), 15), [
+          utc(2011, 1, 1, 12, 15),
+          utc(2011, 1, 1, 12, 30),
+          utc(2011, 1, 1, 12, 45),
+          utc(2011, 1, 1, 13, 0)
+        ]);
+      },
+      "does not observe the start of daylight savings time": function(range) {
+        assert.deepEqual(range(utc(2011, 2, 13, 9, 59), utc(2011, 2, 13, 10, 2)), [
+          utc(2011, 2, 13, 9, 59),
+          utc(2011, 2, 13, 10, 0),
+          utc(2011, 2, 13, 10, 1)
+        ]);
+      },
+      "does not observe the end of daylight savings time": function(range) {
+        assert.deepEqual(range(utc(2011, 10, 6, 8, 59), utc(2011, 10, 6, 9, 2)), [
+          utc(2011, 10, 6, 8, 59),
+          utc(2011, 10, 6, 9, 0),
+          utc(2011, 10, 6, 9, 1)
+        ]);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/month-test.js b/static/vendor/d3-2.8.1/test/time/month-test.js
new file mode 100755 (executable)
index 0000000..34ee13f
--- /dev/null
@@ -0,0 +1,150 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.month");
+
+suite.addBatch({
+  "month": {
+    topic: function() {
+      return d3.time.month;
+    },
+    "defaults to floor": function(interval) {
+      assert.strictEqual(interval, interval.floor);
+    },
+    "floor": {
+      topic: function(interval) {
+        return interval.floor;
+      },
+      "returns months": function(floor) {
+        assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), local(2010, 11, 01));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 01));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 01)), local(2011, 00, 01));
+      },
+      "observes the start of daylight savings time": function(floor) {
+        assert.deepEqual(floor(local(2011, 02, 13, 01)), local(2011, 02, 01));
+      },
+      "observes the end of the daylight savings time": function(floor) {
+        assert.deepEqual(floor(local(2011, 10, 06, 01)), local(2011, 10, 01));
+      }
+    },
+    "ceil": {
+      topic: function(interval) {
+        return interval.ceil;
+      },
+      "returns months": function(ceil) {
+        assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59)), local(2011, 00, 01));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 01));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 01)), local(2011, 01, 01));
+      },
+      "observes the start of daylight savings time": function(ceil) {
+        assert.deepEqual(ceil(local(2011, 02, 13, 01)), local(2011, 03, 01));
+      },
+      "observes the end of the daylight savings time": function(ceil) {
+        assert.deepEqual(ceil(local(2011, 10, 06, 01)), local(2011, 11, 01));
+      }
+    },
+    "offset": {
+      topic: function(interval) {
+        return interval.offset;
+      },
+      "does not modify the passed-in date": function(offset) {
+        var date = local(2010, 11, 31, 23, 59, 59, 999);
+        offset(date, +1);
+        assert.deepEqual(date, local(2010, 11, 31, 23, 59, 59, 999));
+      },
+      "does not round the passed-in-date": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), +1), local(2011, 00, 31, 23, 59, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 456), -2), local(2010, 09, 31, 23, 59, 59, 456));
+      },
+      "allows negative offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 01), -1), local(2010, 10, 01));
+        assert.deepEqual(offset(local(2011, 00, 01), -2), local(2010, 10, 01));
+        assert.deepEqual(offset(local(2011, 00, 01), -1), local(2010, 11, 01));
+      },
+      "allows positive offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 10, 01), +1), local(2010, 11, 01));
+        assert.deepEqual(offset(local(2010, 10, 01), +2), local(2011, 00, 01));
+        assert.deepEqual(offset(local(2010, 11, 01), +1), local(2011, 00, 01));
+      },
+      "allows zero offset": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), 0), local(2010, 11, 31, 23, 59, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 58, 000), 0), local(2010, 11, 31, 23, 59, 58, 000));
+      }
+    },
+    "UTC": {
+      topic: function(interval) {
+        return interval.utc;
+      },
+      "defaults to floor": function(interval) {
+        assert.strictEqual(interval, interval.floor);
+      },
+      "floor": {
+        topic: function(interval) {
+          return interval.floor;
+        },
+        "returns months": function(floor) {
+          assert.deepEqual(floor(utc(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 01));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 01));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 01)), utc(2011, 00, 01));
+        },
+        "does not observe the start of daylight savings time": function(floor) {
+          assert.deepEqual(floor(utc(2011, 02, 13, 01)), utc(2011, 02, 01));
+        },
+        "does not observe the end of the daylight savings time": function(floor) {
+          assert.deepEqual(floor(utc(2011, 10, 06, 01)), utc(2011, 10, 01));
+        }
+      },
+      "ceil": {
+        topic: function(interval) {
+          return interval.ceil;
+        },
+        "returns months": function(ceil) {
+          assert.deepEqual(ceil(utc(2010, 11, 31, 23, 59, 59)), utc(2011, 00, 01));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 01));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 01)), utc(2011, 01, 01));
+        },
+        "does not observe the start of daylight savings time": function(ceil) {
+          assert.deepEqual(ceil(utc(2011, 02, 13, 01)), utc(2011, 03, 01));
+        },
+        "does not observe the end of the daylight savings time": function(ceil) {
+          assert.deepEqual(ceil(utc(2011, 10, 06, 01)), utc(2011, 11, 01));
+        }
+      },
+      "offset": {
+        topic: function(interval) {
+          return interval.offset;
+        },
+        "does not modify the passed-in date": function(offset) {
+          var date = utc(2010, 11, 31, 23, 59, 59, 999);
+          offset(date, +1);
+          assert.deepEqual(date, utc(2010, 11, 31, 23, 59, 59, 999));
+        },
+        "does not round the passed-in-date": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), +1), utc(2011, 00, 31, 23, 59, 59, 999));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 456), -2), utc(2010, 09, 31, 23, 59, 59, 456));
+        },
+        "allows negative offsets": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 01), -1), utc(2010, 10, 01));
+          assert.deepEqual(offset(utc(2011, 00, 01), -2), utc(2010, 10, 01));
+          assert.deepEqual(offset(utc(2011, 00, 01), -1), utc(2010, 11, 01));
+        },
+        "allows positive offsets": function(offset) {
+          assert.deepEqual(offset(utc(2010, 10, 01), +1), utc(2010, 11, 01));
+          assert.deepEqual(offset(utc(2010, 10, 01), +2), utc(2011, 00, 01));
+          assert.deepEqual(offset(utc(2010, 11, 01), +1), utc(2011, 00, 01));
+        },
+        "allows zero offset": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), 0), utc(2010, 11, 31, 23, 59, 59, 999));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 58, 000), 0), utc(2010, 11, 31, 23, 59, 58, 000));
+        }
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/months-test.js b/static/vendor/d3-2.8.1/test/time/months-test.js
new file mode 100755 (executable)
index 0000000..70c6f58
--- /dev/null
@@ -0,0 +1,98 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.months");
+
+suite.addBatch({
+  "months": {
+    topic: function() {
+      return d3.time.months;
+    },
+    "returns months": function(range) {
+      assert.deepEqual(range(local(2010, 10, 31), local(2011, 2, 1)), [
+        local(2010, 11, 1),
+        local(2011, 0, 1),
+        local(2011, 1, 1)
+      ]);
+    },
+    "has an inclusive lower bound": function(range) {
+      assert.deepEqual(range(local(2010, 10, 31), local(2011, 2, 1))[0], local(2010, 11, 1));
+    },
+    "has an exclusive upper bound": function(range) {
+      assert.deepEqual(range(local(2010, 10, 31), local(2011, 2, 1))[2], local(2011, 1, 1));
+    },
+    "can skip months": function(range) {
+      assert.deepEqual(range(local(2011, 1, 1), local(2012, 1, 1), 3), [
+        local(2011, 3, 1),
+        local(2011, 6, 1),
+        local(2011, 9, 1),
+        local(2012, 0, 1)
+      ]);
+    },
+    "observes start of daylight savings time": function(range) {
+      assert.deepEqual(range(local(2011, 0, 1), local(2011, 4, 1)), [
+        local(2011, 0, 1),
+        local(2011, 1, 1),
+        local(2011, 2, 1),
+        local(2011, 3, 1)
+      ]);
+    },
+    "observes end of daylight savings time": function(range) {
+      assert.deepEqual(range(local(2011, 9, 1), local(2012, 1, 1)), [
+        local(2011, 9, 1),
+        local(2011, 10, 1),
+        local(2011, 11, 1),
+        local(2012, 0, 1)
+      ]);
+    },
+    "UTC": {
+      topic: function(range) {
+        return range.utc;
+      },
+      "returns months": function(range) {
+        assert.deepEqual(range(utc(2010, 10, 31), utc(2011, 2, 1)), [
+          utc(2010, 11, 1),
+          utc(2011, 0, 1),
+          utc(2011, 1, 1)
+        ]);
+      },
+      "has an inclusive lower bound": function(range) {
+        assert.deepEqual(range(utc(2010, 10, 31), utc(2011, 2, 1))[0], utc(2010, 11, 1));
+      },
+      "has an exclusive upper bound": function(range) {
+        assert.deepEqual(range(utc(2010, 10, 31), utc(2011, 2, 1))[2], utc(2011, 1, 1));
+      },
+      "can skip months": function(range) {
+        assert.deepEqual(range(utc(2011, 1, 1), utc(2012, 1, 1), 3), [
+          utc(2011, 3, 1),
+          utc(2011, 6, 1),
+          utc(2011, 9, 1),
+          utc(2012, 0, 1)
+        ]);
+      },
+      "does not observe the start of daylight savings time": function(range) {
+        assert.deepEqual(range(utc(2011, 0, 1), utc(2011, 4, 1)), [
+          utc(2011, 0, 1),
+          utc(2011, 1, 1),
+          utc(2011, 2, 1),
+          utc(2011, 3, 1)
+        ]);
+      },
+      "does not observe the end of daylight savings time": function(range) {
+        assert.deepEqual(range(utc(2011, 9, 1), utc(2012, 1, 1)), [
+          utc(2011, 9, 1),
+          utc(2011, 10, 1),
+          utc(2011, 11, 1),
+          utc(2012, 0, 1)
+        ]);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/scale-test.js b/static/vendor/d3-2.8.1/test/time/scale-test.js
new file mode 100755 (executable)
index 0000000..4824871
--- /dev/null
@@ -0,0 +1,567 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.scale");
+
+suite.addBatch({
+  "scale": {
+    topic: function() {
+      return d3.time.scale;
+    },
+
+    "copy": {
+      "changes to the domain are isolated": function(scale) {
+        var x = scale().domain([local(2009, 0, 1), local(2010, 0, 1)]), y = x.copy();
+        x.domain([local(2010, 0, 1), local(2011, 0, 1)]);
+        assert.deepEqual(y.domain(), [local(2009, 0, 1), local(2010, 0, 1)]);
+        assert.equal(x(local(2010, 0, 1)), 0);
+        assert.equal(y(local(2010, 0, 1)), 1);
+        y.domain([local(2011, 0, 1), local(2012, 0, 1)]);
+        assert.equal(x(local(2011, 0, 1)), 1);
+        assert.equal(y(local(2011, 0, 1)), 0);
+        assert.deepEqual(x.domain(), [local(2010, 0, 1), local(2011, 0, 1)]);
+        assert.deepEqual(y.domain(), [local(2011, 0, 1), local(2012, 0, 1)]);
+      },
+      "changes to the range are isolated": function(scale) {
+        var x = scale().domain([local(2009, 0, 1), local(2010, 0, 1)]), y = x.copy();
+        x.range([1, 2]);
+        assert.deepEqual(x.invert(1), local(2009, 0, 1));
+        assert.deepEqual(y.invert(1), local(2010, 0, 1));
+        assert.deepEqual(y.range(), [0, 1]);
+        y.range([2, 3]);
+        assert.deepEqual(x.invert(2), local(2010, 0, 1));
+        assert.deepEqual(y.invert(2), local(2009, 0, 1));
+        assert.deepEqual(x.range(), [1, 2]);
+        assert.deepEqual(y.range(), [2, 3]);
+      },
+      "changes to the interpolator are isolated": function(scale) {
+        var x = scale().domain([local(2009, 0, 1), local(2010, 0, 1)]).range(["red", "blue"]), y = x.copy();
+        x.interpolate(d3.interpolateHsl);
+        assert.equal(x(local(2009, 6, 1)), "#04ff00");
+        assert.equal(y(local(2009, 6, 1)), "#81007e");
+        assert.equal(y.interpolate(), d3.interpolate);
+      },
+      "changes to clamping are isolated": function(scale) {
+        var x = scale().domain([local(2009, 0, 1), local(2010, 0, 1)]).clamp(true), y = x.copy();
+        x.clamp(false);
+        assert.equal(x(local(2011, 0, 1)), 2);
+        assert.equal(y(local(2011, 0, 1)), 1);
+        assert.isTrue(y.clamp());
+        y.clamp(false);
+        assert.equal(x(local(2011, 0, 1)), 2);
+        assert.equal(y(local(2011, 0, 1)), 2);
+        assert.isFalse(x.clamp());
+      }
+    },
+
+    "ticks": {
+      "observes explicit tick interval": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 12, 1, 0), local(2011, 0, 1, 12, 4, 4)]);
+        assert.deepEqual(x.ticks(d3.time.minutes), [
+          local(2011, 0, 1, 12, 1),
+          local(2011, 0, 1, 12, 2),
+          local(2011, 0, 1, 12, 3),
+          local(2011, 0, 1, 12, 4)
+        ]);
+      },
+      "observes explicit tick interval and step": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 12, 0, 0), local(2011, 0, 1, 12, 33, 4)]);
+        assert.deepEqual(x.ticks(d3.time.minutes, 10), [
+          local(2011, 0, 1, 12, 0),
+          local(2011, 0, 1, 12, 10),
+          local(2011, 0, 1, 12, 20),
+          local(2011, 0, 1, 12, 30)
+        ]);
+      },
+      "generates sub-second ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 12, 0, 0), local(2011, 0, 1, 12, 0, 1)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 12, 0, 0,   0),
+          local(2011, 0, 1, 12, 0, 0, 200),
+          local(2011, 0, 1, 12, 0, 0, 400),
+          local(2011, 0, 1, 12, 0, 0, 600),
+          local(2011, 0, 1, 12, 0, 0, 800),
+          local(2011, 0, 1, 12, 0, 1,   0)
+        ]);
+      },
+      "generates 1-second ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 12, 0, 0), local(2011, 0, 1, 12, 0, 4)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 12, 0, 0),
+          local(2011, 0, 1, 12, 0, 1),
+          local(2011, 0, 1, 12, 0, 2),
+          local(2011, 0, 1, 12, 0, 3),
+          local(2011, 0, 1, 12, 0, 4)
+        ]);
+      },
+      "generates 5-second ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 12, 0, 0), local(2011, 0, 1, 12, 0, 20)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 12, 0, 0),
+          local(2011, 0, 1, 12, 0, 5),
+          local(2011, 0, 1, 12, 0, 10),
+          local(2011, 0, 1, 12, 0, 15),
+          local(2011, 0, 1, 12, 0, 20)
+        ]);
+      },
+      "generates 15-second ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 12, 0, 0), local(2011, 0, 1, 12, 0, 50)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 12, 0, 0),
+          local(2011, 0, 1, 12, 0, 15),
+          local(2011, 0, 1, 12, 0, 30),
+          local(2011, 0, 1, 12, 0, 45)
+        ]);
+      },
+      "generates 30-second ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 12, 0, 0), local(2011, 0, 1, 12, 1, 50)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 12, 0, 0),
+          local(2011, 0, 1, 12, 0, 30),
+          local(2011, 0, 1, 12, 1, 0),
+          local(2011, 0, 1, 12, 1, 30)
+        ]);
+      },
+      "generates 1-minute ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 12, 0, 27), local(2011, 0, 1, 12, 4, 12)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 12, 1),
+          local(2011, 0, 1, 12, 2),
+          local(2011, 0, 1, 12, 3),
+          local(2011, 0, 1, 12, 4)
+        ]);
+      },
+      "generates 5-minute ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 12, 3, 27), local(2011, 0, 1, 12, 21, 12)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 12, 5),
+          local(2011, 0, 1, 12, 10),
+          local(2011, 0, 1, 12, 15),
+          local(2011, 0, 1, 12, 20)
+        ]);
+      },
+      "generates 15-minute ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 12, 8, 27), local(2011, 0, 1, 13, 4, 12)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 12, 15),
+          local(2011, 0, 1, 12, 30),
+          local(2011, 0, 1, 12, 45),
+          local(2011, 0, 1, 13, 0)
+        ]);
+      },
+      "generates 30-minute ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 12, 28, 27), local(2011, 0, 1, 14, 4, 12)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 12, 30),
+          local(2011, 0, 1, 13, 0),
+          local(2011, 0, 1, 13, 30),
+          local(2011, 0, 1, 14, 0)
+        ]);
+      },
+      "generates 1-hour ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 12, 28, 27), local(2011, 0, 1, 16, 34, 12)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 13, 0),
+          local(2011, 0, 1, 14, 0),
+          local(2011, 0, 1, 15, 0),
+          local(2011, 0, 1, 16, 0)
+        ]);
+      },
+      "generates 3-hour ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 14, 28, 27), local(2011, 0, 2, 1, 34, 12)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 15, 0),
+          local(2011, 0, 1, 18, 0),
+          local(2011, 0, 1, 21, 0),
+          local(2011, 0, 2, 0, 0)
+        ]);
+      },
+      "generates 6-hour ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 16, 28, 27), local(2011, 0, 2, 14, 34, 12)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 18, 0),
+          local(2011, 0, 2, 0, 0),
+          local(2011, 0, 2, 6, 0),
+          local(2011, 0, 2, 12, 0)
+        ]);
+      },
+      "generates 12-hour ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 16, 28, 27), local(2011, 0, 3, 21, 34, 12)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 2, 0, 0),
+          local(2011, 0, 2, 12, 0),
+          local(2011, 0, 3, 0, 0),
+          local(2011, 0, 3, 12, 0)
+        ]);
+      },
+      "generates 1-day ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 16, 28, 27), local(2011, 0, 5, 21, 34, 12)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 2, 0, 0),
+          local(2011, 0, 3, 0, 0),
+          local(2011, 0, 4, 0, 0),
+          local(2011, 0, 5, 0, 0)
+        ]);
+      },
+      "generates 2-day ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 2, 16, 28, 27), local(2011, 0, 9, 21, 34, 12)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 3, 0, 0),
+          local(2011, 0, 5, 0, 0),
+          local(2011, 0, 7, 0, 0),
+          local(2011, 0, 9, 0, 0)
+        ]);
+      },
+      "generates 1-week ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 1, 16, 28, 27), local(2011, 0, 23, 21, 34, 12)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 2, 0, 0),
+          local(2011, 0, 9, 0, 0),
+          local(2011, 0, 16, 0, 0),
+          local(2011, 0, 23, 0, 0)
+        ]);
+      },
+      "generates 1-month ticks": function(scale) {
+        var x = scale().domain([local(2011, 0, 18), local(2011, 4, 2)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 1, 1, 0, 0),
+          local(2011, 2, 1, 0, 0),
+          local(2011, 3, 1, 0, 0),
+          local(2011, 4, 1, 0, 0)
+        ]);
+      },
+      "generates 3-month ticks": function(scale) {
+        var x = scale().domain([local(2010, 11, 18), local(2011, 10, 2)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 0, 0),
+          local(2011, 3, 1, 0, 0),
+          local(2011, 6, 1, 0, 0),
+          local(2011, 9, 1, 0, 0)
+        ]);
+      },
+      "generates 1-year ticks": function(scale) {
+        var x = scale().domain([local(2010, 11, 18), local(2014, 2, 2)]);
+        assert.deepEqual(x.ticks(4), [
+          local(2011, 0, 1, 0, 0),
+          local(2012, 0, 1, 0, 0),
+          local(2013, 0, 1, 0, 0),
+          local(2014, 0, 1, 0, 0)
+        ]);
+      },
+      "generates multi-year ticks": function(scale) {
+        var x = scale().domain([local(0, 11, 18), local(2014, 2, 2)]);
+        assert.deepEqual(x.ticks(6), [
+          local( 500, 0, 1, 0, 0),
+          local(1000, 0, 1, 0, 0),
+          local(1500, 0, 1, 0, 0),
+          local(2000, 0, 1, 0, 0)
+        ]);
+      }
+    },
+
+    "tickFormat": {
+      topic: function(scale) {
+        return scale().tickFormat();
+      },
+      "formats year on New Year's": function(format) {
+        assert.equal(format(local(2011, 0, 1)), "2011");
+        assert.equal(format(local(2012, 0, 1)), "2012");
+        assert.equal(format(local(2013, 0, 1)), "2013");
+      },
+      "formats month on the 1st of each month": function(format) {
+        assert.equal(format(local(2011, 1, 1)), "February");
+        assert.equal(format(local(2011, 2, 1)), "March");
+        assert.equal(format(local(2011, 3, 1)), "April");
+      },
+      "formats week on Sunday midnight": function(format) {
+        assert.equal(format(local(2011, 1, 6)), "Feb 06");
+        assert.equal(format(local(2011, 1, 13)), "Feb 13");
+        assert.equal(format(local(2011, 1, 20)), "Feb 20");
+      },
+      "formats date on midnight": function(format) {
+        assert.equal(format(local(2011, 1, 2)), "Wed 02");
+        assert.equal(format(local(2011, 1, 3)), "Thu 03");
+        assert.equal(format(local(2011, 1, 4)), "Fri 04");
+      },
+      "formats hour on minute zero": function(format) {
+        assert.equal(format(local(2011, 1, 2, 11)), "11 AM");
+        assert.equal(format(local(2011, 1, 2, 12)), "12 PM");
+        assert.equal(format(local(2011, 1, 2, 13)), "01 PM");
+      },
+      "formats minute on second zero": function(format) {
+        assert.equal(format(local(2011, 1, 2, 11, 59)), "11:59");
+        assert.equal(format(local(2011, 1, 2, 12,  1)), "12:01");
+        assert.equal(format(local(2011, 1, 2, 12,  2)), "12:02");
+      },
+      "otherwise, formats second": function(format) {
+        assert.equal(format(local(2011, 1, 2, 12,  1,  9)), ":09");
+        assert.equal(format(local(2011, 1, 2, 12,  1, 10)), ":10");
+        assert.equal(format(local(2011, 1, 2, 12,  1, 11)), ":11");
+      }
+    },
+
+    "UTC": {
+      topic: function(scale) {
+        return scale.utc;
+      },
+
+      "ticks": {
+        "observes explicit tick interval": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 12, 1, 0), utc(2011, 0, 1, 12, 4, 4)]);
+          assert.deepEqual(x.ticks(d3.time.minutes), [
+            utc(2011, 0, 1, 12, 1),
+            utc(2011, 0, 1, 12, 2),
+            utc(2011, 0, 1, 12, 3),
+            utc(2011, 0, 1, 12, 4)
+          ]);
+        },
+        "observes explicit tick interval and step": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 12, 0, 0), utc(2011, 0, 1, 12, 33, 4)]);
+          assert.deepEqual(x.ticks(d3.time.minutes, 10), [
+            utc(2011, 0, 1, 12, 0),
+            utc(2011, 0, 1, 12, 10),
+            utc(2011, 0, 1, 12, 20),
+            utc(2011, 0, 1, 12, 30)
+          ]);
+        },
+        "generates sub-second ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 12, 0, 0), utc(2011, 0, 1, 12, 0, 1)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 12, 0, 0,   0),
+            utc(2011, 0, 1, 12, 0, 0, 200),
+            utc(2011, 0, 1, 12, 0, 0, 400),
+            utc(2011, 0, 1, 12, 0, 0, 600),
+            utc(2011, 0, 1, 12, 0, 0, 800),
+            utc(2011, 0, 1, 12, 0, 1,   0)
+          ]);
+        },
+        "generates 1-second ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 12, 0, 0), utc(2011, 0, 1, 12, 0, 4)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 12, 0, 0),
+            utc(2011, 0, 1, 12, 0, 1),
+            utc(2011, 0, 1, 12, 0, 2),
+            utc(2011, 0, 1, 12, 0, 3),
+            utc(2011, 0, 1, 12, 0, 4)
+          ]);
+        },
+        "generates 5-second ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 12, 0, 0), utc(2011, 0, 1, 12, 0, 20)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 12, 0, 0),
+            utc(2011, 0, 1, 12, 0, 5),
+            utc(2011, 0, 1, 12, 0, 10),
+            utc(2011, 0, 1, 12, 0, 15),
+            utc(2011, 0, 1, 12, 0, 20)
+          ]);
+        },
+        "generates 15-second ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 12, 0, 0), utc(2011, 0, 1, 12, 0, 50)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 12, 0, 0),
+            utc(2011, 0, 1, 12, 0, 15),
+            utc(2011, 0, 1, 12, 0, 30),
+            utc(2011, 0, 1, 12, 0, 45)
+          ]);
+        },
+        "generates 30-second ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 12, 0, 0), utc(2011, 0, 1, 12, 1, 50)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 12, 0, 0),
+            utc(2011, 0, 1, 12, 0, 30),
+            utc(2011, 0, 1, 12, 1, 0),
+            utc(2011, 0, 1, 12, 1, 30)
+          ]);
+        },
+        "generates 1-minute ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 12, 0, 27), utc(2011, 0, 1, 12, 4, 12)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 12, 1),
+            utc(2011, 0, 1, 12, 2),
+            utc(2011, 0, 1, 12, 3),
+            utc(2011, 0, 1, 12, 4)
+          ]);
+        },
+        "generates 5-minute ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 12, 3, 27), utc(2011, 0, 1, 12, 21, 12)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 12, 5),
+            utc(2011, 0, 1, 12, 10),
+            utc(2011, 0, 1, 12, 15),
+            utc(2011, 0, 1, 12, 20)
+          ]);
+        },
+        "generates 15-minute ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 12, 8, 27), utc(2011, 0, 1, 13, 4, 12)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 12, 15),
+            utc(2011, 0, 1, 12, 30),
+            utc(2011, 0, 1, 12, 45),
+            utc(2011, 0, 1, 13, 0)
+          ]);
+        },
+        "generates 30-minute ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 12, 28, 27), utc(2011, 0, 1, 14, 4, 12)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 12, 30),
+            utc(2011, 0, 1, 13, 0),
+            utc(2011, 0, 1, 13, 30),
+            utc(2011, 0, 1, 14, 0)
+          ]);
+        },
+        "generates 1-hour ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 12, 28, 27), utc(2011, 0, 1, 16, 34, 12)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 13, 0),
+            utc(2011, 0, 1, 14, 0),
+            utc(2011, 0, 1, 15, 0),
+            utc(2011, 0, 1, 16, 0)
+          ]);
+        },
+        "generates 3-hour ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 14, 28, 27), utc(2011, 0, 2, 1, 34, 12)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 15, 0),
+            utc(2011, 0, 1, 18, 0),
+            utc(2011, 0, 1, 21, 0),
+            utc(2011, 0, 2, 0, 0)
+          ]);
+        },
+        "generates 6-hour ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 16, 28, 27), utc(2011, 0, 2, 14, 34, 12)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 18, 0),
+            utc(2011, 0, 2, 0, 0),
+            utc(2011, 0, 2, 6, 0),
+            utc(2011, 0, 2, 12, 0)
+          ]);
+        },
+        "generates 12-hour ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 16, 28, 27), utc(2011, 0, 3, 21, 34, 12)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 2, 0, 0),
+            utc(2011, 0, 2, 12, 0),
+            utc(2011, 0, 3, 0, 0),
+            utc(2011, 0, 3, 12, 0)
+          ]);
+        },
+        "generates 1-day ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 16, 28, 27), utc(2011, 0, 5, 21, 34, 12)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 2, 0, 0),
+            utc(2011, 0, 3, 0, 0),
+            utc(2011, 0, 4, 0, 0),
+            utc(2011, 0, 5, 0, 0)
+          ]);
+        },
+        "generates 2-day ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 2, 16, 28, 27), utc(2011, 0, 9, 21, 34, 12)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 3, 0, 0),
+            utc(2011, 0, 5, 0, 0),
+            utc(2011, 0, 7, 0, 0),
+            utc(2011, 0, 9, 0, 0)
+          ]);
+        },
+        "generates 1-week ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 1, 16, 28, 27), utc(2011, 0, 23, 21, 34, 12)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 2, 0, 0),
+            utc(2011, 0, 9, 0, 0),
+            utc(2011, 0, 16, 0, 0),
+            utc(2011, 0, 23, 0, 0)
+          ]);
+        },
+        "generates 1-month ticks": function(scale) {
+          var x = scale().domain([utc(2011, 0, 18), utc(2011, 4, 2)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 1, 1, 0, 0),
+            utc(2011, 2, 1, 0, 0),
+            utc(2011, 3, 1, 0, 0),
+            utc(2011, 4, 1, 0, 0)
+          ]);
+        },
+        "generates 3-month ticks": function(scale) {
+          var x = scale().domain([utc(2010, 11, 18), utc(2011, 10, 2)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 0, 0),
+            utc(2011, 3, 1, 0, 0),
+            utc(2011, 6, 1, 0, 0),
+            utc(2011, 9, 1, 0, 0)
+          ]);
+        },
+        "generates 1-year ticks": function(scale) {
+          var x = scale().domain([utc(2010, 11, 18), utc(2014, 2, 2)]);
+          assert.deepEqual(x.ticks(4), [
+            utc(2011, 0, 1, 0, 0),
+            utc(2012, 0, 1, 0, 0),
+            utc(2013, 0, 1, 0, 0),
+            utc(2014, 0, 1, 0, 0)
+          ]);
+        },
+        "generates multi-year ticks": function(scale) {
+          var x = scale().domain([utc(0, 11, 18), utc(2014, 2, 2)]);
+          assert.deepEqual(x.ticks(6), [
+            utc( 500, 0, 1, 0, 0),
+            utc(1000, 0, 1, 0, 0),
+            utc(1500, 0, 1, 0, 0),
+            utc(2000, 0, 1, 0, 0)
+          ]);
+        }
+      },
+
+      "tickFormat": {
+        topic: function(scale) {
+          return scale().tickFormat();
+        },
+        "formats year on New Year's": function(format) {
+          assert.equal(format(utc(2011, 0, 1)), "2011");
+          assert.equal(format(utc(2012, 0, 1)), "2012");
+          assert.equal(format(utc(2013, 0, 1)), "2013");
+        },
+        "formats month on the 1st of each month": function(format) {
+          assert.equal(format(utc(2011, 1, 1)), "February");
+          assert.equal(format(utc(2011, 2, 1)), "March");
+          assert.equal(format(utc(2011, 3, 1)), "April");
+        },
+        "formats week on Sunday midnight": function(format) {
+          assert.equal(format(utc(2011, 1, 6)), "Feb 06");
+          assert.equal(format(utc(2011, 1, 13)), "Feb 13");
+          assert.equal(format(utc(2011, 1, 20)), "Feb 20");
+        },
+        "formats date on midnight": function(format) {
+          assert.equal(format(utc(2011, 1, 2)), "Wed 02");
+          assert.equal(format(utc(2011, 1, 3)), "Thu 03");
+          assert.equal(format(utc(2011, 1, 4)), "Fri 04");
+        },
+        "formats hour on minute zero": function(format) {
+          assert.equal(format(utc(2011, 1, 2, 11)), "11 AM");
+          assert.equal(format(utc(2011, 1, 2, 12)), "12 PM");
+          assert.equal(format(utc(2011, 1, 2, 13)), "01 PM");
+        },
+        "formats minute on second zero": function(format) {
+          assert.equal(format(utc(2011, 1, 2, 11, 59)), "11:59");
+          assert.equal(format(utc(2011, 1, 2, 12,  1)), "12:01");
+          assert.equal(format(utc(2011, 1, 2, 12,  2)), "12:02");
+        },
+        "formats second on millisecond zero": function(format) {
+          assert.equal(format(utc(2011, 1, 2, 12,  1,  9)), ":09");
+          assert.equal(format(utc(2011, 1, 2, 12,  1, 10)), ":10");
+          assert.equal(format(utc(2011, 1, 2, 12,  1, 11)), ":11");
+        },
+        "otherwise, formats milliseconds": function(format) {
+          assert.equal(format(utc(2011, 1, 2, 12,  1,  0,   9)), ".009");
+          assert.equal(format(utc(2011, 1, 2, 12,  1,  0,  10)), ".010");
+          assert.equal(format(utc(2011, 1, 2, 12,  1,  0,  11)), ".011");
+        }
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/second-test.js b/static/vendor/d3-2.8.1/test/time/second-test.js
new file mode 100755 (executable)
index 0000000..4c10edd
--- /dev/null
@@ -0,0 +1,146 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.second");
+
+suite.addBatch({
+  "second": {
+    topic: function() {
+      return d3.time.second;
+    },
+    "defaults to floor": function(interval) {
+      assert.strictEqual(interval, interval.floor);
+    },
+    "floor": {
+      topic: function(interval) {
+        return interval.floor;
+      },
+      "returns seconds": function(floor) {
+        assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59, 999)), local(2010, 11, 31, 23, 59, 59));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00, 000)), local(2011, 00, 01, 00, 00, 00));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00, 001)), local(2011, 00, 01, 00, 00, 00));
+      }
+    },
+    "round": {
+      topic: function(interval) {
+        return interval.round;
+      },
+      "returns seconds": function(round) {
+        assert.deepEqual(round(local(2010, 11, 31, 23, 59, 59, 999)), local(2011, 00, 01, 00, 00, 00));
+        assert.deepEqual(round(local(2011, 00, 01, 00, 00, 00, 499)), local(2011, 00, 01, 00, 00, 00));
+        assert.deepEqual(round(local(2011, 00, 01, 00, 00, 00, 500)), local(2011, 00, 01, 00, 00, 01));
+      }
+    },
+    "ceil": {
+      topic: function(interval) {
+        return interval.ceil;
+      },
+      "returns seconds": function(ceil) {
+        assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59, 999)), local(2011, 00, 01, 00, 00, 00));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00, 000)), local(2011, 00, 01, 00, 00, 00));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00, 001)), local(2011, 00, 01, 00, 00, 01));
+      }
+    },
+    "offset": {
+      topic: function(interval) {
+        return interval.offset;
+      },
+      "does not modify the passed-in date": function(offset) {
+        var date = local(2010, 11, 31, 23, 59, 59, 999);
+        offset(date, +1);
+        assert.deepEqual(date, local(2010, 11, 31, 23, 59, 59, 999));
+      },
+      "does not round the passed-in-date": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), +1), local(2011, 00, 01, 00, 00, 00, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 456), -2), local(2010, 11, 31, 23, 59, 57, 456));
+      },
+      "allows negative offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59), -1), local(2010, 11, 31, 23, 59, 58));
+        assert.deepEqual(offset(local(2011, 00, 01, 00, 00, 00), -2), local(2010, 11, 31, 23, 59, 58));
+        assert.deepEqual(offset(local(2011, 00, 01, 00, 00, 00), -1), local(2010, 11, 31, 23, 59, 59));
+      },
+      "allows positive offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 58), +1), local(2010, 11, 31, 23, 59, 59));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 58), +2), local(2011, 00, 01, 00, 00, 00));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59), +1), local(2011, 00, 01, 00, 00, 00));
+      },
+      "allows zero offset": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), 0), local(2010, 11, 31, 23, 59, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 58, 000), 0), local(2010, 11, 31, 23, 59, 58, 000));
+      }
+    },
+    "UTC": {
+      topic: function(interval) {
+        return interval.utc;
+      },
+      "defaults to floor": function(interval) {
+        assert.strictEqual(interval, interval.floor);
+      },
+      "floor": {
+        topic: function(interval) {
+          return interval.floor;
+        },
+        "returns seconds": function(floor) {
+          assert.deepEqual(floor(utc(2010, 11, 31, 23, 59, 59, 999)), utc(2010, 11, 31, 23, 59, 59));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 00, 000)), utc(2011, 00, 01, 00, 00, 00));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 00, 001)), utc(2011, 00, 01, 00, 00, 00));
+        }
+      },
+      "round": {
+        topic: function(interval) {
+          return interval.round;
+        },
+        "returns seconds": function(round) {
+          assert.deepEqual(round(utc(2010, 11, 31, 23, 59, 59, 999)), utc(2011, 00, 01, 00, 00, 00));
+          assert.deepEqual(round(utc(2011, 00, 01, 00, 00, 00, 499)), utc(2011, 00, 01, 00, 00, 00));
+          assert.deepEqual(round(utc(2011, 00, 01, 00, 00, 00, 500)), utc(2011, 00, 01, 00, 00, 01));
+        }
+      },
+      "ceil": {
+        topic: function(interval) {
+          return interval.ceil;
+        },
+        "returns seconds": function(ceil) {
+          assert.deepEqual(ceil(utc(2010, 11, 31, 23, 59, 59, 999)), utc(2011, 00, 01, 00, 00, 00));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 00, 000)), utc(2011, 00, 01, 00, 00, 00));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 00, 001)), utc(2011, 00, 01, 00, 00, 01));
+        }
+      },
+      "offset": {
+        topic: function(interval) {
+          return interval.offset;
+        },
+        "does not modify the passed-in date": function(offset) {
+          var date = utc(2010, 11, 31, 23, 59, 59, 999);
+          offset(date, +1);
+          assert.deepEqual(date, utc(2010, 11, 31, 23, 59, 59, 999));
+        },
+        "does not round the passed-in-date": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), +1), utc(2011, 00, 01, 00, 00, 00, 999));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 456), -2), utc(2010, 11, 31, 23, 59, 57, 456));
+        },
+        "allows negative offsets": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59), -1), utc(2010, 11, 31, 23, 59, 58));
+          assert.deepEqual(offset(utc(2011, 00, 01, 00, 00, 00), -2), utc(2010, 11, 31, 23, 59, 58));
+          assert.deepEqual(offset(utc(2011, 00, 01, 00, 00, 00), -1), utc(2010, 11, 31, 23, 59, 59));
+        },
+        "allows positive offsets": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 58), +1), utc(2010, 11, 31, 23, 59, 59));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 58), +2), utc(2011, 00, 01, 00, 00, 00));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59), +1), utc(2011, 00, 01, 00, 00, 00));
+        },
+        "allows zero offset": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), 0), utc(2010, 11, 31, 23, 59, 59, 999));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 58, 000), 0), utc(2010, 11, 31, 23, 59, 58, 000));
+        }
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/seconds-test.js b/static/vendor/d3-2.8.1/test/time/seconds-test.js
new file mode 100755 (executable)
index 0000000..a5ba7c7
--- /dev/null
@@ -0,0 +1,94 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.seconds");
+
+suite.addBatch({
+  "seconds": {
+    topic: function() {
+      return d3.time.seconds;
+    },
+    "returns seconds": function(range) {
+      assert.deepEqual(range(local(2010, 11, 31, 23, 59, 59), local(2011, 0, 1, 0, 0, 2)), [
+        local(2010, 11, 31, 23, 59, 59),
+        local(2011, 0, 1, 0, 0, 0),
+        local(2011, 0, 1, 0, 0, 1)
+      ]);
+    },
+    "has an inclusive lower bound": function(range) {
+      assert.deepEqual(range(local(2010, 11, 31, 23, 59, 59), local(2011, 0, 1, 0, 0, 2))[0], local(2010, 11, 31, 23, 59, 59));
+    },
+    "has an exclusive upper bound": function(range) {
+      assert.deepEqual(range(local(2010, 11, 31, 23, 59, 59), local(2011, 0, 1, 0, 0, 2))[2], local(2011, 0, 1, 0, 0, 1));
+    },
+    "can skip seconds": function(range) {
+      assert.deepEqual(range(local(2011, 1, 1, 12, 0, 7), local(2011, 1, 1, 12, 1, 7), 15), [
+        local(2011, 1, 1, 12, 0, 15),
+        local(2011, 1, 1, 12, 0, 30),
+        local(2011, 1, 1, 12, 0, 45),
+        local(2011, 1, 1, 12, 1, 0)
+      ]);
+    },
+    "observes start of daylight savings time": function(range) {
+      assert.deepEqual(range(utc(2011, 2, 13, 9, 59, 59), utc(2011, 2, 13, 10, 0, 2)), [
+        utc(2011, 2, 13, 9, 59, 59),
+        utc(2011, 2, 13, 10, 0, 0),
+        utc(2011, 2, 13, 10, 0, 1)
+      ]);
+    },
+    "observes end of daylight savings time": function(range) {
+      assert.deepEqual(range(utc(2011, 10, 6, 8, 59, 59), utc(2011, 10, 6, 9, 0, 2)), [
+        utc(2011, 10, 6, 8, 59, 59),
+        utc(2011, 10, 6, 9, 0, 0),
+        utc(2011, 10, 6, 9, 0, 1)
+      ]);
+    },
+    "UTC": {
+      topic: function(range) {
+        return range.utc;
+      },
+      "returns seconds": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 31, 23, 59, 59), utc(2011, 0, 1, 0, 0, 2)), [
+          utc(2010, 11, 31, 23, 59, 59),
+          utc(2011, 0, 1, 0, 0, 0),
+          utc(2011, 0, 1, 0, 0, 1)
+        ]);
+      },
+      "has an inclusive lower bound": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 31, 23, 59, 59), utc(2011, 0, 1, 0, 0, 2))[0], utc(2010, 11, 31, 23, 59, 59));
+      },
+      "has an exclusive upper bound": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 31, 23, 59, 59), utc(2011, 0, 1, 0, 0, 2))[2], utc(2011, 0, 1, 0, 0, 1));
+      },
+      "can skip seconds": function(range) {
+        assert.deepEqual(range(utc(2011, 1, 1, 12, 0, 7), utc(2011, 1, 1, 12, 1, 7), 15), [
+          utc(2011, 1, 1, 12, 0, 15),
+          utc(2011, 1, 1, 12, 0, 30),
+          utc(2011, 1, 1, 12, 0, 45),
+          utc(2011, 1, 1, 12, 1, 0)
+        ]);
+      },
+      "does not observe the start of daylight savings time": function(range) {
+        assert.deepEqual(range(utc(2011, 2, 13, 9, 59, 59), utc(2011, 2, 13, 10, 0, 2)), [
+          utc(2011, 2, 13, 9, 59, 59),
+          utc(2011, 2, 13, 10, 0, 0),
+          utc(2011, 2, 13, 10, 0, 1)
+        ]);
+      },
+      "does not observe the end of daylight savings time": function(range) {
+        assert.deepEqual(range(utc(2011, 10, 6, 8, 59, 59), utc(2011, 10, 6, 9, 0, 2)), [
+          utc(2011, 10, 6, 8, 59, 59),
+          utc(2011, 10, 6, 9, 0, 0),
+          utc(2011, 10, 6, 9, 0, 1)
+        ]);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/time.js b/static/vendor/d3-2.8.1/test/time/time.js
new file mode 100755 (executable)
index 0000000..2cf0cd7
--- /dev/null
@@ -0,0 +1,29 @@
+exports.local = function(year, month, day, hours, minutes, seconds, milliseconds) {
+  var date = new Date();
+  date.setFullYear(year, month, day);
+  date.setHours(hours || 0, minutes || 0, seconds || 0, milliseconds || 0);
+  return date;
+};
+
+exports.utc = function(year, month, day, hours, minutes, seconds, milliseconds) {
+  var date = new Date();
+  date.setUTCFullYear(year, month, day);
+  date.setUTCHours(hours || 0, minutes || 0, seconds || 0, milliseconds || 0);
+  return date;
+};
+
+exports.zone = function(tz, scope) {
+  return function() {
+    var o = process.env.TZ;
+    try {
+      process.env.TZ = tz;
+      new Date(0).toString(); // invalidate node's dst cache
+      new Date().toString();
+      scope.apply(this, arguments);
+    } finally {
+      process.env.TZ = o;
+      new Date(0).toString(); // invalidate node's dst cache
+      new Date().toString();
+    }
+  };
+};
diff --git a/static/vendor/d3-2.8.1/test/time/week-test.js b/static/vendor/d3-2.8.1/test/time/week-test.js
new file mode 100755 (executable)
index 0000000..9c70711
--- /dev/null
@@ -0,0 +1,162 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.week");
+
+suite.addBatch({
+  "week": {
+    topic: function() {
+      return d3.time.week;
+    },
+    "defaults to floor": function(interval) {
+      assert.strictEqual(interval, interval.floor);
+    },
+    "floor": {
+      topic: function(interval) {
+        return interval.floor;
+      },
+      "returns sundays": function(floor) {
+        assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), local(2010, 11, 26));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00)), local(2010, 11, 26));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 01)), local(2010, 11, 26));
+        assert.deepEqual(floor(local(2011, 00, 01, 23, 59, 59)), local(2010, 11, 26));
+        assert.deepEqual(floor(local(2011, 00, 02, 00, 00, 00)), local(2011, 00, 02));
+        assert.deepEqual(floor(local(2011, 00, 02, 00, 00, 01)), local(2011, 00, 02));
+      },
+      "observes the start of daylight savings time": function(floor) {
+        assert.deepEqual(floor(local(2011, 02, 13, 01)), local(2011, 02, 13));
+      },
+      "observes the end of the daylight savings time": function(floor) {
+        assert.deepEqual(floor(local(2011, 10, 06, 01)), local(2011, 10, 06));
+      }
+    },
+    "ceil": {
+      topic: function(interval) {
+        return interval.ceil;
+      },
+      "returns sundays": function(ceil) {
+        assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59)), local(2011, 00, 02));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 02));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 01)), local(2011, 00, 02));
+        assert.deepEqual(ceil(local(2011, 00, 01, 23, 59, 59)), local(2011, 00, 02));
+        assert.deepEqual(ceil(local(2011, 00, 02, 00, 00, 00)), local(2011, 00, 02));
+        assert.deepEqual(ceil(local(2011, 00, 02, 00, 00, 01)), local(2011, 00, 09));
+      },
+      "observes the start of daylight savings time": function(ceil) {
+        assert.deepEqual(ceil(local(2011, 02, 13, 01)), local(2011, 02, 20));
+      },
+      "observes the end of the daylight savings time": function(ceil) {
+        assert.deepEqual(ceil(local(2011, 10, 06, 01)), local(2011, 10, 13));
+      }
+    },
+    "offset": {
+      topic: function(interval) {
+        return interval.offset;
+      },
+      "does not modify the passed-in date": function(offset) {
+        var date = local(2010, 11, 31, 23, 59, 59, 999);
+        offset(date, +1);
+        assert.deepEqual(date, local(2010, 11, 31, 23, 59, 59, 999));
+      },
+      "does not round the passed-in-date": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), +1), local(2011, 00, 07, 23, 59, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 456), -2), local(2010, 11, 17, 23, 59, 59, 456));
+      },
+      "allows negative offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 01), -1), local(2010, 10, 24));
+        assert.deepEqual(offset(local(2011, 00, 01), -2), local(2010, 11, 18));
+        assert.deepEqual(offset(local(2011, 00, 01), -1), local(2010, 11, 25));
+      },
+      "allows positive offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 10, 24), +1), local(2010, 11, 01));
+        assert.deepEqual(offset(local(2010, 11, 18), +2), local(2011, 00, 01));
+        assert.deepEqual(offset(local(2010, 11, 25), +1), local(2011, 00, 01));
+      },
+      "allows zero offset": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), 0), local(2010, 11, 31, 23, 59, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 58, 000), 0), local(2010, 11, 31, 23, 59, 58, 000));
+      }
+    },
+    "UTC": {
+      topic: function(interval) {
+        return interval.utc;
+      },
+      "defaults to floor": function(interval) {
+        assert.strictEqual(interval, interval.floor);
+      },
+      "floor": {
+        topic: function(interval) {
+          return interval.floor;
+        },
+        "returns sundays": function(floor) {
+          assert.deepEqual(floor(utc(2010, 11, 31, 23, 59, 59)), utc(2010, 11, 26));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 00)), utc(2010, 11, 26));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 01)), utc(2010, 11, 26));
+          assert.deepEqual(floor(utc(2011, 00, 01, 23, 59, 59)), utc(2010, 11, 26));
+          assert.deepEqual(floor(utc(2011, 00, 02, 00, 00, 00)), utc(2011, 00, 02));
+          assert.deepEqual(floor(utc(2011, 00, 02, 00, 00, 01)), utc(2011, 00, 02));
+        },
+        "does not observe the start of daylight savings time": function(floor) {
+          assert.deepEqual(floor(utc(2011, 02, 13, 01)), utc(2011, 02, 13));
+        },
+        "does not observe the end of the daylight savings time": function(floor) {
+          assert.deepEqual(floor(utc(2011, 10, 06, 01)), utc(2011, 10, 06));
+        }
+      },
+      "ceil": {
+        topic: function(interval) {
+          return interval.ceil;
+        },
+        "returns sundays": function(ceil) {
+          assert.deepEqual(ceil(utc(2010, 11, 31, 23, 59, 59)), utc(2011, 00, 02));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 02));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 01)), utc(2011, 00, 02));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 23, 59, 59)), utc(2011, 00, 02));
+          assert.deepEqual(ceil(utc(2011, 00, 02, 00, 00, 00)), utc(2011, 00, 02));
+          assert.deepEqual(ceil(utc(2011, 00, 02, 00, 00, 01)), utc(2011, 00, 09));
+        },
+        "does not observe the start of daylight savings time": function(ceil) {
+          assert.deepEqual(ceil(utc(2011, 02, 13, 01)), utc(2011, 02, 20));
+        },
+        "does not observe the end of the daylight savings time": function(ceil) {
+          assert.deepEqual(ceil(utc(2011, 10, 06, 01)), utc(2011, 10, 13));
+        }
+      }
+    },
+    "offset": {
+      topic: function(interval) {
+        return interval.offset;
+      },
+      "does not modify the passed-in date": function(offset) {
+        var date = utc(2010, 11, 31, 23, 59, 59, 999);
+        offset(date, +1);
+        assert.deepEqual(date, utc(2010, 11, 31, 23, 59, 59, 999));
+      },
+      "does not round the passed-in-date": function(offset) {
+        assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), +1), utc(2011, 00, 07, 23, 59, 59, 999));
+        assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 456), -2), utc(2010, 11, 17, 23, 59, 59, 456));
+      },
+      "allows negative offsets": function(offset) {
+        assert.deepEqual(offset(utc(2010, 11, 01), -1), utc(2010, 10, 24));
+        assert.deepEqual(offset(utc(2011, 00, 01), -2), utc(2010, 11, 18));
+        assert.deepEqual(offset(utc(2011, 00, 01), -1), utc(2010, 11, 25));
+      },
+      "allows positive offsets": function(offset) {
+        assert.deepEqual(offset(utc(2010, 10, 24), +1), utc(2010, 11, 01));
+        assert.deepEqual(offset(utc(2010, 11, 18), +2), utc(2011, 00, 01));
+        assert.deepEqual(offset(utc(2010, 11, 25), +1), utc(2011, 00, 01));
+      },
+      "allows zero offset": function(offset) {
+        assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), 0), utc(2010, 11, 31, 23, 59, 59, 999));
+        assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 58, 000), 0), utc(2010, 11, 31, 23, 59, 58, 000));
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/weeks-test.js b/static/vendor/d3-2.8.1/test/time/weeks-test.js
new file mode 100755 (executable)
index 0000000..2f9d6af
--- /dev/null
@@ -0,0 +1,98 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert"),
+    time = require("./time"),
+    local = time.local,
+    utc = time.utc;
+
+var suite = vows.describe("d3.time.weeks");
+
+suite.addBatch({
+  "weeks": {
+    topic: function() {
+      return d3.time.weeks;
+    },
+    "returns sundays": function(range) {
+      assert.deepEqual(range(local(2010, 11, 21), local(2011, 0, 12)), [
+        local(2010, 11, 26),
+        local(2011, 0, 2),
+        local(2011, 0, 9)
+      ]);
+    },
+    "has an inclusive lower bound": function(range) {
+      assert.deepEqual(range(local(2010, 11, 21), local(2011, 0, 12))[0], local(2010, 11, 26));
+    },
+    "has an exclusive upper bound": function(range) {
+      assert.deepEqual(range(local(2010, 11, 21), local(2011, 0, 12))[2], local(2011, 0, 9));
+    },
+    "can skip weeks": function(range) {
+      assert.deepEqual(range(local(2011, 0, 1), local(2011, 3, 1), 4), [
+        local(2011, 0, 2),
+        local(2011, 0, 30),
+        local(2011, 1, 27),
+        local(2011, 2, 27)
+      ]);
+    },
+    "observes start of daylight savings time": function(range) {
+      assert.deepEqual(range(local(2011, 2, 1), local(2011, 2, 28)), [
+        local(2011, 2, 6),
+        local(2011, 2, 13),
+        local(2011, 2, 20),
+        local(2011, 2, 27)
+      ]);
+    },
+    "observes end of daylight savings time": function(range) {
+      assert.deepEqual(range(local(2011, 10, 1), local(2011, 10, 30)), [
+        local(2011, 10, 6),
+        local(2011, 10, 13),
+        local(2011, 10, 20),
+        local(2011, 10, 27)
+      ]);
+    },
+    "UTC": {
+      topic: function(range) {
+        return range.utc;
+      },
+      "returns sundays": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 21), utc(2011, 0, 12)), [
+          utc(2010, 11, 26),
+          utc(2011, 0, 2),
+          utc(2011, 0, 9)
+        ]);
+      },
+      "has an inclusive lower bound": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 21), utc(2011, 0, 12))[0], utc(2010, 11, 26));
+      },
+      "has an exclusive upper bound": function(range) {
+        assert.deepEqual(range(utc(2010, 11, 21), utc(2011, 0, 12))[2], utc(2011, 0, 9));
+      },
+      "can skip weeks": function(range) {
+        assert.deepEqual(range(utc(2011, 0, 1), utc(2011, 3, 1), 4), [
+          utc(2011, 0, 2),
+          utc(2011, 0, 30),
+          utc(2011, 1, 27),
+          utc(2011, 2, 27)
+        ]);
+      },
+      "does not observe the start of daylight savings time": function(range) {
+        assert.deepEqual(range(utc(2011, 2, 1), utc(2011, 2, 28)), [
+          utc(2011, 2, 6),
+          utc(2011, 2, 13),
+          utc(2011, 2, 20),
+          utc(2011, 2, 27)
+        ]);
+      },
+      "does not observe the end of daylight savings time": function(range) {
+        assert.deepEqual(range(utc(2011, 10, 1), utc(2011, 10, 30)), [
+          utc(2011, 10, 6),
+          utc(2011, 10, 13),
+          utc(2011, 10, 20),
+          utc(2011, 10, 27)
+        ]);
+      }
+    }
+  }
+});
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/year-test.js b/static/vendor/d3-2.8.1/test/time/year-test.js
new file mode 100755 (executable)
index 0000000..e73831c
--- /dev/null
@@ -0,0 +1,137 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.time.year");
+
+suite.addBatch({
+  "year": {
+    topic: function() {
+      return d3.time.year;
+    },
+    "defaults to floor": function(interval) {
+      assert.strictEqual(interval, interval.floor);
+    },
+    "floor": {
+      topic: function(interval) {
+        return interval.floor;
+      },
+      "returns years": function(floor) {
+        assert.deepEqual(floor(local(2010, 11, 31, 23, 59, 59)), local(2010, 00, 01));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 01));
+        assert.deepEqual(floor(local(2011, 00, 01, 00, 00, 01)), local(2011, 00, 01));
+      }
+    },
+    "ceil": {
+      topic: function(interval) {
+        return interval.ceil;
+      },
+      "returns years": function(ceil) {
+        assert.deepEqual(ceil(local(2010, 11, 31, 23, 59, 59)), local(2011, 00, 01));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 00)), local(2011, 00, 01));
+        assert.deepEqual(ceil(local(2011, 00, 01, 00, 00, 01)), local(2012, 00, 01));
+      }
+    },
+    "offset": {
+      topic: function(interval) {
+        return interval.offset;
+      },
+      "does not modify the passed-in date": function(offset) {
+        var date = local(2010, 11, 31, 23, 59, 59, 999);
+        offset(date, +1);
+        assert.deepEqual(date, local(2010, 11, 31, 23, 59, 59, 999));
+      },
+      "does not round the passed-in-date": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), +1), local(2011, 11, 31, 23, 59, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 456), -2), local(2008, 11, 31, 23, 59, 59, 456));
+      },
+      "allows negative offsets": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 01), -1), local(2009, 11, 01));
+        assert.deepEqual(offset(local(2011, 00, 01), -2), local(2009, 00, 01));
+        assert.deepEqual(offset(local(2011, 00, 01), -1), local(2010, 00, 01));
+      },
+      "allows positive offsets": function(offset) {
+        assert.deepEqual(offset(local(2009, 11, 01), +1), local(2010, 11, 01));
+        assert.deepEqual(offset(local(2009, 00, 01), +2), local(2011, 00, 01));
+        assert.deepEqual(offset(local(2010, 00, 01), +1), local(2011, 00, 01));
+      },
+      "allows zero offset": function(offset) {
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 59, 999), 0), local(2010, 11, 31, 23, 59, 59, 999));
+        assert.deepEqual(offset(local(2010, 11, 31, 23, 59, 58, 000), 0), local(2010, 11, 31, 23, 59, 58, 000));
+      }
+    },
+    "UTC": {
+      topic: function(interval) {
+        return interval.utc;
+      },
+      "defaults to floor": function(interval) {
+        assert.strictEqual(interval, interval.floor);
+      },
+      "floor": {
+        topic: function(interval) {
+          return interval.floor;
+        },
+        "returns years": function(floor) {
+          assert.deepEqual(floor(utc(2010, 11, 31, 23, 59, 59)), utc(2010, 00, 01));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 01));
+          assert.deepEqual(floor(utc(2011, 00, 01, 00, 00, 01)), utc(2011, 00, 01));
+        }
+      },
+      "ceil": {
+        topic: function(interval) {
+          return interval.ceil;
+        },
+        "returns years": function(ceil) {
+          assert.deepEqual(ceil(utc(2010, 11, 31, 23, 59, 59)), utc(2011, 00, 01));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 00)), utc(2011, 00, 01));
+          assert.deepEqual(ceil(utc(2011, 00, 01, 00, 00, 01)), utc(2012, 00, 01));
+        }
+      },
+      "offset": {
+        topic: function(interval) {
+          return interval.offset;
+        },
+        "does not modify the passed-in date": function(offset) {
+          var date = utc(2010, 11, 31, 23, 59, 59, 999);
+          offset(date, +1);
+          assert.deepEqual(date, utc(2010, 11, 31, 23, 59, 59, 999));
+        },
+        "does not round the passed-in-date": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), +1), utc(2011, 11, 31, 23, 59, 59, 999));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 456), -2), utc(2008, 11, 31, 23, 59, 59, 456));
+        },
+        "allows negative offsets": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 01), -1), utc(2009, 11, 01));
+          assert.deepEqual(offset(utc(2011, 00, 01), -2), utc(2009, 00, 01));
+          assert.deepEqual(offset(utc(2011, 00, 01), -1), utc(2010, 00, 01));
+        },
+        "allows positive offsets": function(offset) {
+          assert.deepEqual(offset(utc(2009, 11, 01), +1), utc(2010, 11, 01));
+          assert.deepEqual(offset(utc(2009, 00, 01), +2), utc(2011, 00, 01));
+          assert.deepEqual(offset(utc(2010, 00, 01), +1), utc(2011, 00, 01));
+        },
+        "allows zero offset": function(offset) {
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 59, 999), 0), utc(2010, 11, 31, 23, 59, 59, 999));
+          assert.deepEqual(offset(utc(2010, 11, 31, 23, 59, 58, 000), 0), utc(2010, 11, 31, 23, 59, 58, 000));
+        }
+      }
+    }
+  }
+});
+
+function local(year, month, day, hours, minutes, seconds, milliseconds) {
+  var date = new Date();
+  date.setFullYear(year, month, day);
+  date.setHours(hours || 0, minutes || 0, seconds || 0, milliseconds || 0);
+  return date;
+}
+
+function utc(year, month, day, hours, minutes, seconds, milliseconds) {
+  var date = new Date();
+  date.setUTCFullYear(year, month, day);
+  date.setUTCHours(hours || 0, minutes || 0, seconds || 0, milliseconds || 0);
+  return date;
+}
+
+suite.export(module);
diff --git a/static/vendor/d3-2.8.1/test/time/years-test.js b/static/vendor/d3-2.8.1/test/time/years-test.js
new file mode 100755 (executable)
index 0000000..0730395
--- /dev/null
@@ -0,0 +1,77 @@
+require("../env");
+
+var vows = require("vows"),
+    assert = require("assert");
+
+var suite = vows.describe("d3.time.years");
+
+suite.addBatch({
+  "years": {
+    topic: function() {
+      return d3.time.years;
+    },
+    "returns years": function(range) {
+      assert.deepEqual(range(local(2010, 0, 1), local(2013, 0, 1)), [
+        local(2010, 0, 1),
+        local(2011, 0, 1),
+        local(2012, 0, 1)
+      ]);
+    },
+    "has an inclusive lower bound": function(range) {
+      assert.deepEqual(range(local(2010, 0, 1), local(2013, 0, 1))[0], local(2010, 0, 1));
+    },
+    "has an exclusive upper bound": function(range) {
+      assert.deepEqual(range(local(2010, 0, 1), local(2013, 0, 1))[2], local(2012, 0, 1));
+    },
+    "can skip years": function(range) {
+      assert.deepEqual(range(local(2009, 0, 1), local(2029, 0, 1), 5), [
+        local(2010, 0, 1),
+        local(2015, 0, 1),
+        local(2020, 0, 1),
+        local(2025, 0, 1)
+      ]);
+    },
+    "UTC": {
+      topic: function(range) {
+        return range.utc;
+      },
+      "returns years": function(range) {
+        assert.deepEqual(range(utc(2010, 0, 1), utc(2013, 0, 1)), [
+          utc(2010, 0, 1),
+          utc(2011, 0, 1),
+          utc(2012, 0, 1)
+        ]);
+      },
+      "has an inclusive lower bound": function(range) {
+        assert.deepEqual(range(utc(2010, 0, 1), utc(2013, 0, 1))[0], utc(2010, 0, 1));
+      },
+      "has an exclusive upper bound": function(range) {
+        assert.deepEqual(range(utc(2010, 0, 1), utc(2013, 0, 1))[2], utc(2012, 0, 1));
+      },
+      "can skip years": function(range) {
+        assert.deepEqual(range(utc(2009, 0, 1), utc(2029, 0, 1), 5), [
+          utc(2010, 0, 1),
+          utc(2015, 0, 1),
+          utc(2020, 0, 1),
+          utc(2025, 0, 1)
+        ]);
+      }
+    }
+  }
+});
+
+function local(year, month, day, hours, minutes, seconds, milliseconds) {
+  var date = new Date();
+  date.setFullYear(year, month, day);
+  date.setHours(hours || 0, minutes || 0, seconds || 0, milliseconds || 0);
+  return date;
+}
+
+function utc(year, month, day, hours, minutes, seconds, milliseconds) {
+  var date = new Date();
+  date.setUTCFullYear(year, month, day);
+  date.setUTCHours(hours || 0, minutes || 0, seconds || 0, milliseconds || 0);
+  return date;
+}
+
+suite.export(module);
index c424f08..e33305f 120000 (symlink)
@@ -1 +1 @@
-d3/d3.js
\ No newline at end of file
+d3-2.8.1/d3.v2.js
\ No newline at end of file
diff --git a/static/vendor/d3.min.js b/static/vendor/d3.min.js
new file mode 120000 (symlink)
index 0000000..4b3200c
--- /dev/null
@@ -0,0 +1 @@
+d3-2.8.1/d3.v2.min.js
\ No newline at end of file
index e1d53af..063b840 100644 (file)
@@ -1,8 +1,17 @@
 @import 'colors'
 @import 'nib'
 
-section.map
-    position relative
-    max-width 900px
-    margin 0 auto
+svg 
+  background  #eee
+  max-width 900px
+  margin 0 auto
+
+.frame
+       stroke #000
+       fill none
+       pointer-events  all
+
+.feature
+       stroke #ccc
+
     
index b16ddac..579c8cc 100644 (file)
@@ -1,5 +1,15 @@
 extends layout
 
+section#graph-list
+
+block content 
+    .page-header
+        h1 Wikimedia Geolocation Map 
+            small February 2012
+    
+    
+
+
 block title
     title Geolocation