{"version":3,"sources":["jsdelivr-header.js","/npm/@theclinician/react-dc@1.0.8/dist/react-dc.js"],"names":[],"mappings":"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","file":"/npm/@theclinician/react-dc@1.0.8/dist/react-dc.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@theclinician/react-dc@1.0.8/dist/react-dc.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"dc\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"ReactDc\", [\"react\", \"dc\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactDc\"] = factory(require(\"react\"), require(\"dc\"));\n\telse\n\t\troot[\"ReactDc\"] = factory(root[\"React\"], root[\"dc\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 27);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar compose = exports.compose = function compose() {\n  for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n    fns[_key] = arguments[_key];\n  }\n\n  return fns.reduce(function (f, g) {\n    return function () {\n      return f(g.apply(undefined, arguments));\n    };\n  });\n};\n\nvar intersect = exports.intersect = function intersect(obj1, obj2) {\n  var o = {};\n  Object.entries(keys2).forEach(function (key, val) {\n    if (obj1.hasOwnProperty(key)) {\n      o[key] = val;\n    }\n  });\n  return o;\n};\n\n// map over the object and make sure each value is a React PropType\nvar extractPropTypes = function extractPropTypes(props) {\n  return Object.entries(props).reduce(function (acc, _ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n        prop = _ref2[0],\n        val = _ref2[1];\n\n    acc[prop] = val.propTypes || val;\n    return acc;\n  }, {});\n};\n\nvar withProps = exports.withProps = function withProps(propTypes) {\n  return function (Component) {\n    var _class, _temp;\n\n    return _temp = _class = function (_Component) {\n      _inherits(_class, _Component);\n\n      function _class() {\n        _classCallCheck(this, _class);\n\n        return _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).apply(this, arguments));\n      }\n\n      _createClass(_class, [{\n        key: \"configure\",\n        value: function configure() {\n          var _this2 = this;\n\n          if (_get(_class.prototype.__proto__ || Object.getPrototypeOf(_class.prototype), \"configure\", this)) {\n            _get(_class.prototype.__proto__ || Object.getPrototypeOf(_class.prototype), \"configure\", this).call(this);\n          }\n          Object.entries(this.props).forEach(function (_ref3) {\n            var _ref4 = _slicedToArray(_ref3, 2),\n                prop = _ref4[0],\n                val = _ref4[1];\n\n            if (propTypes[prop]) {\n              if (propTypes[prop].setter) {\n                propTypes[prop].setter(_this2.chart[prop], val);\n              } else {\n                _this2.chart[prop](val);\n              }\n            }\n          });\n        }\n      }]);\n\n      return _class;\n    }(Component), _class.propTypes = _extends({}, Component.propTypes, extractPropTypes(propTypes)), _temp;\n  };\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_2__;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BaseChart = function (_React$Component) {\n  _inherits(BaseChart, _React$Component);\n\n  function BaseChart() {\n    _classCallCheck(this, BaseChart);\n\n    return _possibleConstructorReturn(this, (BaseChart.__proto__ || Object.getPrototypeOf(BaseChart)).apply(this, arguments));\n  }\n\n  _createClass(BaseChart, [{\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      return _react2.default.createElement('div', { ref: function ref(chart) {\n          return _this2.chart = chart;\n        } });\n    }\n  }]);\n\n  return BaseChart;\n}(_react2.default.Component);\n\nexports.default = BaseChart;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _colorMixin = __webpack_require__(6);\n\nvar _colorMixin2 = _interopRequireDefault(_colorMixin);\n\nvar _marginMixin = __webpack_require__(9);\n\nvar _marginMixin2 = _interopRequireDefault(_marginMixin);\n\nvar _baseMixin = __webpack_require__(5);\n\nvar _baseMixin2 = _interopRequireDefault(_baseMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    any = _React$PropTypes.any,\n    array = _React$PropTypes.array,\n    arrayOf = _React$PropTypes.arrayOf,\n    bool = _React$PropTypes.bool,\n    func = _React$PropTypes.func,\n    instanceOf = _React$PropTypes.instanceOf,\n    number = _React$PropTypes.number,\n    oneOfType = _React$PropTypes.oneOfType,\n    shape = _React$PropTypes.shape,\n    string = _React$PropTypes.string;\n\n\nvar coordinateGridMixin = (0, _utils.withProps)({\n  brushOn: bool,\n  clipPadding: number,\n  elasticX: bool,\n  elasticY: bool,\n  focus: arrayOf(number),\n  mouseZoomable: bool,\n  //rangeChart??????\n  renderHorizontalGridLines: bool,\n  renderVerticalGridLines: bool,\n  round: func,\n  useRightYAxis: bool,\n  x: any.isRequired, // TO DO : any d3 quantitive scale or ordinal scale\n  xAxis: {\n    propTypes: shape({\n      orient: string,\n      ticks: array,\n      tickValues: arrayOf(oneOfType([number, string, Date])),\n      tickSize: arrayOf(number),\n      innerTickSize: number,\n      outerTickSize: number,\n      tickPadding: number,\n      tickFormat: func\n    }),\n    setter: function setter(method, val) {\n      Object.entries(val).forEach(function (_ref) {\n        var _ref2 = _slicedToArray(_ref, 2),\n            key = _ref2[0],\n            value = _ref2[1];\n\n        return method()[key](value);\n      });\n    }\n  },\n  xAxisLabel: {\n    propTypes: oneOfType([string, shape({\n      labelText: string.isRequired,\n      padding: number.isRequired\n    })]),\n    setter: function setter(method, val) {\n      if (val.labelText && val.padding) {\n        method(val.labelText, val.padding);\n      } else {\n        method(val);\n      }\n    }\n  },\n  xAxisPadding: oneOfType([number, string]),\n  xAxisUnit: string,\n  y: any, // TO DO : d3 scale\n  xUnits: func,\n  yAxis: {\n    propTypes: shape({\n      orient: string,\n      ticks: array,\n      tickValues: arrayOf(oneOfType([number, string, Date])),\n      tickSize: arrayOf(number),\n      innerTickSize: number,\n      outerTickSize: number,\n      tickPadding: number,\n      tickFormat: func\n    }),\n    setter: function setter(method, val) {\n      Object.entries(val).forEach(function (_ref3) {\n        var _ref4 = _slicedToArray(_ref3, 2),\n            key = _ref4[0],\n            value = _ref4[1];\n\n        return method()[key](value);\n      });\n    }\n  },\n  yAxisLabel: {\n    propTypes: oneOfType([string, shape({\n      labelText: string.isRequired,\n      padding: number.isRequired\n    })]),\n    setter: function setter(method, val) {\n      if (val.labelText && val.padding) {\n        method(val.labelText, val.padding);\n      } else {\n        method(val);\n      }\n    }\n  },\n  yAxisPadding: oneOfType([number, string]),\n  zoomOutRestrict: bool,\n  zoomScale: oneOfType([arrayOf(number), arrayOf(instanceOf(Date))])\n});\n\nexports.default = (0, _utils.compose)(coordinateGridMixin, _colorMixin2.default, _marginMixin2.default, _baseMixin2.default);\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    any = _React$PropTypes.any,\n    bool = _React$PropTypes.bool,\n    func = _React$PropTypes.func,\n    number = _React$PropTypes.number,\n    object = _React$PropTypes.object,\n    oneOfType = _React$PropTypes.oneOfType,\n    shape = _React$PropTypes.shape,\n    string = _React$PropTypes.string;\n\n\nvar groupShape = shape({\n  all: func\n});\n\nexports.default = (0, _utils.withProps)({\n  dimension: shape({\n    filter: func\n  }).isRequired, // TO DO : crossfilter.dimension\n  keyAccessor: func,\n  label: {\n    propTypes: oneOfType([func, shape({\n      labelFunction: func.isRequired,\n      enableLabels: bool.isRequired\n    })]),\n    setter: function setter(method, val) {\n      if (val.labelFunction && val.enableLabels) {\n        method(val.labelFunction, val.enableLabels);\n      } else {\n        method(val);\n      }\n    }\n  },\n  filter: any,\n  group: {\n    propTypes: oneOfType([groupShape, shape({\n      group: groupShape.isRequired,\n      name: string.isRequired\n    })]).isRequired,\n    setter: function setter(method, val) {\n      return val.group && val.name ? method(val.group, val.name) : method(val);\n    }\n  },\n  height: oneOfType([func, number]),\n  ordering: func,\n  title: func,\n  valueAccessor: func,\n  width: oneOfType([func, number])\n});\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    arrayOf = _React$PropTypes.arrayOf,\n    func = _React$PropTypes.func,\n    number = _React$PropTypes.number,\n    string = _React$PropTypes.string;\nexports.default = (0, _utils.withProps)({\n  colorAccessor: func,\n  colorDomain: arrayOf(string),\n  colors: func, // TO DO : shape a scale\n  linearColors: arrayOf(number),\n  ordinalColors: arrayOf(string)\n});\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    arrayOf = _React$PropTypes.arrayOf,\n    bool = _React$PropTypes.bool,\n    func = _React$PropTypes.func,\n    oneOfType = _React$PropTypes.oneOfType,\n    shape = _React$PropTypes.shape,\n    string = _React$PropTypes.string;\n\n\nvar groupShape = shape({\n  all: func\n});\n\nvar stackShape = shape({\n  group: groupShape.isRequired,\n  name: string,\n  accessor: func\n});\n\nvar stackType = oneOfType([groupShape, stackShape]);\n\nexports.default = (0, _utils.withProps)({\n  hidableStacks: bool,\n  stack: {\n    propTypes: oneOfType([stackType, arrayOf(stackType)]),\n    setter: function setter(method, val) {\n      var stacks = [].concat(val);\n      stacks.forEach(function (stack) {\n        if (stack.group && stack.name && stack.accessor) {\n          method(stack.group, stack.name, stack.accessor);\n        } else {\n          method(stack);\n        }\n      });\n    }\n  },\n  stackLayout: func,\n  title: {\n    propTypes: shape({\n      stackName: string,\n      titleAccessor: func\n    }),\n    setter: function setter(method, val) {\n      method(val.stackName, val.titleAccessor);\n    }\n  }\n});\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    func = _React$PropTypes.func,\n    bool = _React$PropTypes.bool,\n    number = _React$PropTypes.number,\n    oneOfType = _React$PropTypes.oneOfType,\n    string = _React$PropTypes.string;\nexports.default = (0, _utils.withProps)({\n  cap: number,\n  othersGrouper: oneOfType([func, bool]), // disallow true ! only false is accepted\n  othersLabel: string\n});\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _utils.withProps)({\n  margins: _react2.default.PropTypes.shape({\n    left: _react2.default.PropTypes.number.isRequired,\n    right: _react2.default.PropTypes.number.isRequired,\n    top: _react2.default.PropTypes.number.isRequired,\n    bottom: _react2.default.PropTypes.number.isRequired\n  })\n});\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dc = __webpack_require__(2);\n\nvar _dc2 = _interopRequireDefault(_dc);\n\nvar _baseChart = __webpack_require__(3);\n\nvar _baseChart2 = _interopRequireDefault(_baseChart);\n\nvar _coordinateGridMixin = __webpack_require__(4);\n\nvar _coordinateGridMixin2 = _interopRequireDefault(_coordinateGridMixin);\n\nvar _stackMixin = __webpack_require__(7);\n\nvar _stackMixin2 = _interopRequireDefault(_stackMixin);\n\nvar _barMixin = __webpack_require__(19);\n\nvar _barMixin2 = _interopRequireDefault(_barMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BarChart = (0, _barMixin2.default)(_class = (0, _stackMixin2.default)(_class = (0, _coordinateGridMixin2.default)(_class = function (_BaseChart) {\n  _inherits(BarChart, _BaseChart);\n\n  function BarChart() {\n    _classCallCheck(this, BarChart);\n\n    return _possibleConstructorReturn(this, (BarChart.__proto__ || Object.getPrototypeOf(BarChart)).apply(this, arguments));\n  }\n\n  _createClass(BarChart, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.chart = _dc2.default.barChart(this.chart);\n      this.configure();\n      this.chart.render();\n    }\n  }]);\n\n  return BarChart;\n}(_baseChart2.default)) || _class) || _class) || _class;\n\nBarChart.displayName = 'BarChart';\nexports.default = BarChart;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dc = __webpack_require__(2);\n\nvar _dc2 = _interopRequireDefault(_dc);\n\nvar _d = __webpack_require__(28);\n\nvar _d2 = _interopRequireDefault(_d);\n\nvar _baseChart = __webpack_require__(3);\n\nvar _baseChart2 = _interopRequireDefault(_baseChart);\n\nvar _coordinateGridMixin = __webpack_require__(4);\n\nvar _coordinateGridMixin2 = _interopRequireDefault(_coordinateGridMixin);\n\nvar _boxPlotMixin = __webpack_require__(20);\n\nvar _boxPlotMixin2 = _interopRequireDefault(_boxPlotMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BoxPlot = (0, _boxPlotMixin2.default)(_class = (0, _coordinateGridMixin2.default)(_class = function (_BaseChart) {\n  _inherits(BoxPlot, _BaseChart);\n\n  function BoxPlot() {\n    _classCallCheck(this, BoxPlot);\n\n    return _possibleConstructorReturn(this, (BoxPlot.__proto__ || Object.getPrototypeOf(BoxPlot)).apply(this, arguments));\n  }\n\n  _createClass(BoxPlot, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.chart = _dc2.default.boxPlot(this.chart);\n      this.configure();\n      this.chart.render();\n    }\n  }]);\n\n  return BoxPlot;\n}(_baseChart2.default)) || _class) || _class;\n\nBoxPlot.displayName = 'BoxPlot';\nBoxPlot.defaultProps = {\n  x: _d2.default.scale.ordinal(),\n  xUnits: _dc2.default.units.ordinal\n};\nexports.default = BoxPlot;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dc = __webpack_require__(2);\n\nvar _dc2 = _interopRequireDefault(_dc);\n\nvar _baseChart = __webpack_require__(3);\n\nvar _baseChart2 = _interopRequireDefault(_baseChart);\n\nvar _coordinateGridMixin = __webpack_require__(4);\n\nvar _coordinateGridMixin2 = _interopRequireDefault(_coordinateGridMixin);\n\nvar _stackMixin = __webpack_require__(7);\n\nvar _stackMixin2 = _interopRequireDefault(_stackMixin);\n\nvar _lineMixin = __webpack_require__(21);\n\nvar _lineMixin2 = _interopRequireDefault(_lineMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    arrayOf = _React$PropTypes.arrayOf,\n    bool = _React$PropTypes.bool,\n    func = _React$PropTypes.func,\n    number = _React$PropTypes.number,\n    oneOfType = _React$PropTypes.oneOfType,\n    shape = _React$PropTypes.shape,\n    string = _React$PropTypes.string;\n\nvar LineChart = (0, _stackMixin2.default)(_class = (0, _coordinateGridMixin2.default)(_class = (0, _lineMixin2.default)(_class = function (_BaseChart) {\n  _inherits(LineChart, _BaseChart);\n\n  function LineChart() {\n    _classCallCheck(this, LineChart);\n\n    return _possibleConstructorReturn(this, (LineChart.__proto__ || Object.getPrototypeOf(LineChart)).apply(this, arguments));\n  }\n\n  _createClass(LineChart, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.chart = _dc2.default.lineChart(this.chart);\n      this.configure();\n      this.chart.render();\n    }\n  }]);\n\n  return LineChart;\n}(_baseChart2.default)) || _class) || _class) || _class;\n\nLineChart.displayName = 'LineChart';\nexports.default = LineChart;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dc = __webpack_require__(2);\n\nvar _dc2 = _interopRequireDefault(_dc);\n\nvar _baseChart = __webpack_require__(3);\n\nvar _baseChart2 = _interopRequireDefault(_baseChart);\n\nvar _numberMixin = __webpack_require__(22);\n\nvar _numberMixin2 = _interopRequireDefault(_numberMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NumberDisplay = (0, _numberMixin2.default)(_class = function (_BaseChart) {\n  _inherits(NumberDisplay, _BaseChart);\n\n  function NumberDisplay() {\n    _classCallCheck(this, NumberDisplay);\n\n    return _possibleConstructorReturn(this, (NumberDisplay.__proto__ || Object.getPrototypeOf(NumberDisplay)).apply(this, arguments));\n  }\n\n  _createClass(NumberDisplay, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.chart = _dc2.default.numberDisplay(this.chart);\n      this.configure();\n      this.chart.render();\n    }\n  }]);\n\n  return NumberDisplay;\n}(_baseChart2.default)) || _class;\n\nNumberDisplay.displayName = 'NumberDisplay';\nexports.default = NumberDisplay;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dc = __webpack_require__(2);\n\nvar _dc2 = _interopRequireDefault(_dc);\n\nvar _baseChart = __webpack_require__(3);\n\nvar _baseChart2 = _interopRequireDefault(_baseChart);\n\nvar _baseMixin = __webpack_require__(5);\n\nvar _baseMixin2 = _interopRequireDefault(_baseMixin);\n\nvar _capMixin = __webpack_require__(8);\n\nvar _capMixin2 = _interopRequireDefault(_capMixin);\n\nvar _colorMixin = __webpack_require__(6);\n\nvar _colorMixin2 = _interopRequireDefault(_colorMixin);\n\nvar _pieMixin = __webpack_require__(23);\n\nvar _pieMixin2 = _interopRequireDefault(_pieMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    bool = _React$PropTypes.bool,\n    number = _React$PropTypes.number,\n    string = _React$PropTypes.string;\n\nvar PieChart = (0, _pieMixin2.default)(_class = (0, _colorMixin2.default)(_class = (0, _capMixin2.default)(_class = (0, _baseMixin2.default)(_class = function (_BaseChart) {\n  _inherits(PieChart, _BaseChart);\n\n  function PieChart() {\n    _classCallCheck(this, PieChart);\n\n    return _possibleConstructorReturn(this, (PieChart.__proto__ || Object.getPrototypeOf(PieChart)).apply(this, arguments));\n  }\n\n  _createClass(PieChart, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.chart = _dc2.default.pieChart(this.chart);\n      this.configure();\n      this.chart.render();\n    }\n  }]);\n\n  return PieChart;\n}(_baseChart2.default)) || _class) || _class) || _class) || _class;\n\nPieChart.displayName = 'PieChart';\nexports.default = PieChart;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dc = __webpack_require__(2);\n\nvar _dc2 = _interopRequireDefault(_dc);\n\nvar _baseChart = __webpack_require__(3);\n\nvar _baseChart2 = _interopRequireDefault(_baseChart);\n\nvar _baseMixin = __webpack_require__(5);\n\nvar _baseMixin2 = _interopRequireDefault(_baseMixin);\n\nvar _marginMixin = __webpack_require__(9);\n\nvar _marginMixin2 = _interopRequireDefault(_marginMixin);\n\nvar _capMixin = __webpack_require__(8);\n\nvar _capMixin2 = _interopRequireDefault(_capMixin);\n\nvar _colorMixin = __webpack_require__(6);\n\nvar _colorMixin2 = _interopRequireDefault(_colorMixin);\n\nvar _rowMixin = __webpack_require__(24);\n\nvar _rowMixin2 = _interopRequireDefault(_rowMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    any = _React$PropTypes.any,\n    bool = _React$PropTypes.bool,\n    number = _React$PropTypes.number,\n    oneOfType = _React$PropTypes.oneOfType;\n\nvar RowChart = (0, _rowMixin2.default)(_class = (0, _colorMixin2.default)(_class = (0, _capMixin2.default)(_class = (0, _marginMixin2.default)(_class = (0, _baseMixin2.default)(_class = function (_BaseChart) {\n  _inherits(RowChart, _BaseChart);\n\n  function RowChart() {\n    _classCallCheck(this, RowChart);\n\n    return _possibleConstructorReturn(this, (RowChart.__proto__ || Object.getPrototypeOf(RowChart)).apply(this, arguments));\n  }\n\n  _createClass(RowChart, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.chart = _dc2.default.rowChart(this.chart);\n      this.configure();\n      this.chart.render();\n    }\n  }]);\n\n  return RowChart;\n}(_baseChart2.default)) || _class) || _class) || _class) || _class) || _class;\n\nRowChart.displayName = 'RowChart';\nexports.default = RowChart;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dc = __webpack_require__(2);\n\nvar _dc2 = _interopRequireDefault(_dc);\n\nvar _baseChart = __webpack_require__(3);\n\nvar _baseChart2 = _interopRequireDefault(_baseChart);\n\nvar _coordinateGridMixin = __webpack_require__(4);\n\nvar _coordinateGridMixin2 = _interopRequireDefault(_coordinateGridMixin);\n\nvar _scatterMixin = __webpack_require__(25);\n\nvar _scatterMixin2 = _interopRequireDefault(_scatterMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ScatterPlot = (0, _scatterMixin2.default)(_class = (0, _coordinateGridMixin2.default)(_class = function (_BaseChart) {\n  _inherits(ScatterPlot, _BaseChart);\n\n  function ScatterPlot() {\n    _classCallCheck(this, ScatterPlot);\n\n    return _possibleConstructorReturn(this, (ScatterPlot.__proto__ || Object.getPrototypeOf(ScatterPlot)).apply(this, arguments));\n  }\n\n  _createClass(ScatterPlot, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      console.log('scatter');\n      this.chart = _dc2.default.scatterPlot(this.chart);\n      this.configure();\n      this.chart.render();\n    }\n  }]);\n\n  return ScatterPlot;\n}(_baseChart2.default)) || _class) || _class;\n\nScatterPlot.displayName = 'ScatterPlot';\nexports.default = ScatterPlot;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dc = __webpack_require__(2);\n\nvar _dc2 = _interopRequireDefault(_dc);\n\nvar _compositeChart = __webpack_require__(18);\n\nvar _compositeChart2 = _interopRequireDefault(_compositeChart);\n\nvar _seriesMixin = __webpack_require__(26);\n\nvar _seriesMixin2 = _interopRequireDefault(_seriesMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SeriesChart = (0, _seriesMixin2.default)(_class = function (_CompositeChart) {\n  _inherits(SeriesChart, _CompositeChart);\n\n  function SeriesChart() {\n    _classCallCheck(this, SeriesChart);\n\n    return _possibleConstructorReturn(this, (SeriesChart.__proto__ || Object.getPrototypeOf(SeriesChart)).apply(this, arguments));\n  }\n\n  _createClass(SeriesChart, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.chart = _dc2.default.seriesChart(this.chart);\n      this.configure();\n      this.chart.render();\n    }\n  }]);\n\n  return SeriesChart;\n}(_compositeChart2.default)) || _class;\n\nSeriesChart.displayName = 'SeriesChart';\nexports.default = SeriesChart;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dc = __webpack_require__(2);\n\nvar _dc2 = _interopRequireDefault(_dc);\n\nvar _baseChart = __webpack_require__(3);\n\nvar _baseChart2 = _interopRequireDefault(_baseChart);\n\nvar _coordinateGridMixin = __webpack_require__(4);\n\nvar _coordinateGridMixin2 = _interopRequireDefault(_coordinateGridMixin);\n\nvar _stackMixin = __webpack_require__(7);\n\nvar _stackMixin2 = _interopRequireDefault(_stackMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    arrayOf = _React$PropTypes.arrayOf,\n    bool = _React$PropTypes.bool,\n    instanceOf = _React$PropTypes.instanceOf,\n    number = _React$PropTypes.number,\n    object = _React$PropTypes.object,\n    string = _React$PropTypes.string;\n\nvar CompositeChart = (0, _coordinateGridMixin2.default)(_class = function (_BaseChart) {\n  _inherits(CompositeChart, _BaseChart);\n\n  function CompositeChart() {\n    _classCallCheck(this, CompositeChart);\n\n    return _possibleConstructorReturn(this, (CompositeChart.__proto__ || Object.getPrototypeOf(CompositeChart)).apply(this, arguments));\n  }\n\n  _createClass(CompositeChart, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.chart = _dc2.default.compositeChart(this.chart);\n      this.configure();\n      this.chart.render();\n    }\n  }]);\n\n  return CompositeChart;\n}(_baseChart2.default)) || _class;\n\nCompositeChart.displayName = 'CompositeChart';\nexports.default = CompositeChart;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    bool = _React$PropTypes.bool,\n    number = _React$PropTypes.number;\nexports.default = (0, _utils.withProps)({\n  alwaysUseRounding: bool,\n  barPadding: number,\n  centerBar: bool,\n  gap: number,\n  outerPadding: number\n});\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    func = _React$PropTypes.func,\n    number = _React$PropTypes.number,\n    oneOfType = _React$PropTypes.oneOfType;\nexports.default = (0, _utils.withProps)({\n  boxPadding: number,\n  boxWidth: oneOfType([func, number]),\n  outerPadding: number,\n  tickFormat: func\n});\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    arrayOf = _React$PropTypes.arrayOf,\n    bool = _React$PropTypes.bool,\n    func = _React$PropTypes.func,\n    number = _React$PropTypes.number,\n    oneOfType = _React$PropTypes.oneOfType,\n    shape = _React$PropTypes.shape,\n    string = _React$PropTypes.string;\nexports.default = (0, _utils.withProps)({\n  dashStyle: arrayOf(number),\n  defined: func,\n  dotRaidus: number,\n  interpolate: string,\n  renderArea: bool,\n  renderDataPoints: oneOfType([bool, shape({\n    fillOpacity: number,\n    strokeOpacity: number,\n    radius: number\n  })]),\n  tension: number,\n  xyTipsOn: bool\n});\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    func = _React$PropTypes.func,\n    object = _React$PropTypes.object;\nexports.default = (0, _utils.withProps)({\n  valueAccessor: func,\n  formatNumber: func,\n  group: object\n});\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    bool = _React$PropTypes.bool,\n    number = _React$PropTypes.number,\n    string = _React$PropTypes.string;\nexports.default = (0, _utils.withProps)({\n  cx: number,\n  cy: number,\n  drawPaths: bool,\n  emptyTitle: string,\n  externalLabels: number,\n  externalRadiusPadding: number,\n  innerRadius: number,\n  minAngleForLabel: number,\n  radius: number,\n  slicesCap: number\n});\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    any = _React$PropTypes.any,\n    bool = _React$PropTypes.bool,\n    number = _React$PropTypes.number,\n    oneOfType = _React$PropTypes.oneOfType;\nexports.default = (0, _utils.withProps)({\n  elasticX: bool,\n  fixedBarHeight: oneOfType([bool, number]), // true or a Number, but not false\n  gap: number,\n  labelOffsetX: number,\n  labelOffsetY: number,\n  x: any, // TO DO instance of d3.quantitative.scale ?\n  renderTitleLabel: bool,\n  titleLabelOffsetX: number\n});\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n    bool = _React$PropTypes.bool,\n    func = _React$PropTypes.func,\n    number = _React$PropTypes.number,\n    oneOfType = _React$PropTypes.oneOfType,\n    string = _React$PropTypes.string;\nexports.default = (0, _utils.withProps)({\n  emptySize: number,\n  excludedColor: number,\n  excludedOpacity: number,\n  excludedSize: number,\n  existenceAccesor: func,\n  highlightedSize: number,\n  symbol: oneOfType([func, string]),\n  symbolSize: number\n});\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar func = _react2.default.PropTypes.func;\nexports.default = (0, _utils.withProps)({\n  chart: func,\n  seriesAccessor: func.isRequired,\n  seriesSort: func,\n  valueSort: func\n});\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SeriesChart = exports.ScatterPlot = exports.RowChart = exports.PieChart = exports.NumberDisplay = exports.LineChart = exports.BoxPlot = exports.BarChart = undefined;\n\nvar _barChart = __webpack_require__(10);\n\nvar _barChart2 = _interopRequireDefault(_barChart);\n\nvar _boxPlot = __webpack_require__(11);\n\nvar _boxPlot2 = _interopRequireDefault(_boxPlot);\n\nvar _lineChart = __webpack_require__(12);\n\nvar _lineChart2 = _interopRequireDefault(_lineChart);\n\nvar _numberDisplay = __webpack_require__(13);\n\nvar _numberDisplay2 = _interopRequireDefault(_numberDisplay);\n\nvar _rowChart = __webpack_require__(15);\n\nvar _rowChart2 = _interopRequireDefault(_rowChart);\n\nvar _pieChart = __webpack_require__(14);\n\nvar _pieChart2 = _interopRequireDefault(_pieChart);\n\nvar _scatterPlot = __webpack_require__(16);\n\nvar _scatterPlot2 = _interopRequireDefault(_scatterPlot);\n\nvar _seriesChart = __webpack_require__(17);\n\nvar _seriesChart2 = _interopRequireDefault(_seriesChart);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.BarChart = _barChart2.default;\nexports.BoxPlot = _boxPlot2.default;\nexports.LineChart = _lineChart2.default;\nexports.NumberDisplay = _numberDisplay2.default;\nexports.PieChart = _pieChart2.default;\nexports.RowChart = _rowChart2.default;\nexports.ScatterPlot = _scatterPlot2.default;\nexports.SeriesChart = _seriesChart2.default;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;!function() {\n  var d3 = {\n    version: \"3.5.17\"\n  };\n  var d3_arraySlice = [].slice, d3_array = function(list) {\n    return d3_arraySlice.call(list);\n  };\n  var d3_document = this.document;\n  function d3_documentElement(node) {\n    return node && (node.ownerDocument || node.document || node).documentElement;\n  }\n  function d3_window(node) {\n    return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n  }\n  if (d3_document) {\n    try {\n      d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n    } catch (e) {\n      d3_array = function(list) {\n        var i = list.length, array = new Array(i);\n        while (i--) array[i] = list[i];\n        return array;\n      };\n    }\n  }\n  if (!Date.now) Date.now = function() {\n    return +new Date();\n  };\n  if (d3_document) {\n    try {\n      d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n    } catch (error) {\n      var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n      d3_element_prototype.setAttribute = function(name, value) {\n        d3_element_setAttribute.call(this, name, value + \"\");\n      };\n      d3_element_prototype.setAttributeNS = function(space, local, value) {\n        d3_element_setAttributeNS.call(this, space, local, value + \"\");\n      };\n      d3_style_prototype.setProperty = function(name, value, priority) {\n        d3_style_setProperty.call(this, name, value + \"\", priority);\n      };\n    }\n  }\n  d3.ascending = d3_ascending;\n  function d3_ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n  d3.descending = function(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  };\n  d3.min = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n    }\n    return a;\n  };\n  d3.max = function(array, f) {\n    var i = -1, n = array.length, a, b;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n    }\n    return a;\n  };\n  d3.extent = function(array, f) {\n    var i = -1, n = array.length, a, b, c;\n    if (arguments.length === 1) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    } else {\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n        a = c = b;\n        break;\n      }\n      while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n    return [ a, c ];\n  };\n  function d3_number(x) {\n    return x === null ? NaN : +x;\n  }\n  function d3_numeric(x) {\n    return !isNaN(x);\n  }\n  d3.sum = function(array, f) {\n    var s = 0, n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n    } else {\n      while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n    }\n    return s;\n  };\n  d3.mean = function(array, f) {\n    var s = 0, n = array.length, a, i = -1, j = n;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n    }\n    if (j) return s / j;\n  };\n  d3.quantile = function(values, p) {\n    var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n    return e ? v + e * (values[h] - v) : v;\n  };\n  d3.median = function(array, f) {\n    var numbers = [], n = array.length, a, i = -1;\n    if (arguments.length === 1) {\n      while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n    } else {\n      while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n    }\n    if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n  };\n  d3.variance = function(array, f) {\n    var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n    if (arguments.length === 1) {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    } else {\n      while (++i < n) {\n        if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n    if (j > 1) return s / (j - 1);\n  };\n  d3.deviation = function() {\n    var v = d3.variance.apply(this, arguments);\n    return v ? Math.sqrt(v) : v;\n  };\n  function d3_bisector(compare) {\n    return {\n      left: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (arguments.length < 3) lo = 0;\n        if (arguments.length < 4) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n  var d3_bisect = d3_bisector(d3_ascending);\n  d3.bisectLeft = d3_bisect.left;\n  d3.bisect = d3.bisectRight = d3_bisect.right;\n  d3.bisector = function(f) {\n    return d3_bisector(f.length === 1 ? function(d, x) {\n      return d3_ascending(f(d), x);\n    } : f);\n  };\n  d3.shuffle = function(array, i0, i1) {\n    if ((m = arguments.length) < 3) {\n      i1 = array.length;\n      if (m < 2) i0 = 0;\n    }\n    var m = i1 - i0, t, i;\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n    }\n    return array;\n  };\n  d3.permute = function(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  };\n  d3.pairs = function(array) {\n    var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n    return pairs;\n  };\n  d3.transpose = function(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  };\n  function d3_transposeLength(d) {\n    return d.length;\n  }\n  d3.zip = function() {\n    return d3.transpose(arguments);\n  };\n  d3.keys = function(map) {\n    var keys = [];\n    for (var key in map) keys.push(key);\n    return keys;\n  };\n  d3.values = function(map) {\n    var values = [];\n    for (var key in map) values.push(map[key]);\n    return values;\n  };\n  d3.entries = function(map) {\n    var entries = [];\n    for (var key in map) entries.push({\n      key: key,\n      value: map[key]\n    });\n    return entries;\n  };\n  d3.merge = function(arrays) {\n    var n = arrays.length, m, i = -1, j = 0, merged, array;\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n    return merged;\n  };\n  var abs = Math.abs;\n  d3.range = function(start, stop, step) {\n    if (arguments.length < 3) {\n      step = 1;\n      if (arguments.length < 2) {\n        stop = start;\n        start = 0;\n      }\n    }\n    if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n    var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n    start *= k, stop *= k, step *= k;\n    if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n    return range;\n  };\n  function d3_range_integerScale(x) {\n    var k = 1;\n    while (x * k % 1) k *= 10;\n    return k;\n  }\n  function d3_class(ctor, properties) {\n    for (var key in properties) {\n      Object.defineProperty(ctor.prototype, key, {\n        value: properties[key],\n        enumerable: false\n      });\n    }\n  }\n  d3.map = function(object, f) {\n    var map = new d3_Map();\n    if (object instanceof d3_Map) {\n      object.forEach(function(key, value) {\n        map.set(key, value);\n      });\n    } else if (Array.isArray(object)) {\n      var i = -1, n = object.length, o;\n      if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n    } else {\n      for (var key in object) map.set(key, object[key]);\n    }\n    return map;\n  };\n  function d3_Map() {\n    this._ = Object.create(null);\n  }\n  var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n  d3_class(d3_Map, {\n    has: d3_map_has,\n    get: function(key) {\n      return this._[d3_map_escape(key)];\n    },\n    set: function(key, value) {\n      return this._[d3_map_escape(key)] = value;\n    },\n    remove: d3_map_remove,\n    keys: d3_map_keys,\n    values: function() {\n      var values = [];\n      for (var key in this._) values.push(this._[key]);\n      return values;\n    },\n    entries: function() {\n      var entries = [];\n      for (var key in this._) entries.push({\n        key: d3_map_unescape(key),\n        value: this._[key]\n      });\n      return entries;\n    },\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n    }\n  });\n  function d3_map_escape(key) {\n    return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n  }\n  function d3_map_unescape(key) {\n    return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n  }\n  function d3_map_has(key) {\n    return d3_map_escape(key) in this._;\n  }\n  function d3_map_remove(key) {\n    return (key = d3_map_escape(key)) in this._ && delete this._[key];\n  }\n  function d3_map_keys() {\n    var keys = [];\n    for (var key in this._) keys.push(d3_map_unescape(key));\n    return keys;\n  }\n  function d3_map_size() {\n    var size = 0;\n    for (var key in this._) ++size;\n    return size;\n  }\n  function d3_map_empty() {\n    for (var key in this._) return false;\n    return true;\n  }\n  d3.nest = function() {\n    var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n    function map(mapType, array, depth) {\n      if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n      var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n      while (++i < n) {\n        if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n          values.push(object);\n        } else {\n          valuesByKey.set(keyValue, [ object ]);\n        }\n      }\n      if (mapType) {\n        object = mapType();\n        setter = function(keyValue, values) {\n          object.set(keyValue, map(mapType, values, depth));\n        };\n      } else {\n        object = {};\n        setter = function(keyValue, values) {\n          object[keyValue] = map(mapType, values, depth);\n        };\n      }\n      valuesByKey.forEach(setter);\n      return object;\n    }\n    function entries(map, depth) {\n      if (depth >= keys.length) return map;\n      var array = [], sortKey = sortKeys[depth++];\n      map.forEach(function(key, keyMap) {\n        array.push({\n          key: key,\n          values: entries(keyMap, depth)\n        });\n      });\n      return sortKey ? array.sort(function(a, b) {\n        return sortKey(a.key, b.key);\n      }) : array;\n    }\n    nest.map = function(array, mapType) {\n      return map(mapType, array, 0);\n    };\n    nest.entries = function(array) {\n      return entries(map(d3.map, array, 0), 0);\n    };\n    nest.key = function(d) {\n      keys.push(d);\n      return nest;\n    };\n    nest.sortKeys = function(order) {\n      sortKeys[keys.length - 1] = order;\n      return nest;\n    };\n    nest.sortValues = function(order) {\n      sortValues = order;\n      return nest;\n    };\n    nest.rollup = function(f) {\n      rollup = f;\n      return nest;\n    };\n    return nest;\n  };\n  d3.set = function(array) {\n    var set = new d3_Set();\n    if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n    return set;\n  };\n  function d3_Set() {\n    this._ = Object.create(null);\n  }\n  d3_class(d3_Set, {\n    has: d3_map_has,\n    add: function(key) {\n      this._[d3_map_escape(key += \"\")] = true;\n      return key;\n    },\n    remove: d3_map_remove,\n    values: d3_map_keys,\n    size: d3_map_size,\n    empty: d3_map_empty,\n    forEach: function(f) {\n      for (var key in this._) f.call(this, d3_map_unescape(key));\n    }\n  });\n  d3.behavior = {};\n  function d3_identity(d) {\n    return d;\n  }\n  d3.rebind = function(target, source) {\n    var i = 1, n = arguments.length, method;\n    while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n    return target;\n  };\n  function d3_rebind(target, source, method) {\n    return function() {\n      var value = method.apply(source, arguments);\n      return value === source ? target : value;\n    };\n  }\n  function d3_vendorSymbol(object, name) {\n    if (name in object) return name;\n    name = name.charAt(0).toUpperCase() + name.slice(1);\n    for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n      var prefixName = d3_vendorPrefixes[i] + name;\n      if (prefixName in object) return prefixName;\n    }\n  }\n  var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n  function d3_noop() {}\n  d3.dispatch = function() {\n    var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    return dispatch;\n  };\n  function d3_dispatch() {}\n  d3_dispatch.prototype.on = function(type, listener) {\n    var i = type.indexOf(\".\"), name = \"\";\n    if (i >= 0) {\n      name = type.slice(i + 1);\n      type = type.slice(0, i);\n    }\n    if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n    if (arguments.length === 2) {\n      if (listener == null) for (type in this) {\n        if (this.hasOwnProperty(type)) this[type].on(name, null);\n      }\n      return this;\n    }\n  };\n  function d3_dispatch_event(dispatch) {\n    var listeners = [], listenerByName = new d3_Map();\n    function event() {\n      var z = listeners, i = -1, n = z.length, l;\n      while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n      return dispatch;\n    }\n    event.on = function(name, listener) {\n      var l = listenerByName.get(name), i;\n      if (arguments.length < 2) return l && l.on;\n      if (l) {\n        l.on = null;\n        listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n        listenerByName.remove(name);\n      }\n      if (listener) listeners.push(listenerByName.set(name, {\n        on: listener\n      }));\n      return dispatch;\n    };\n    return event;\n  }\n  d3.event = null;\n  function d3_eventPreventDefault() {\n    d3.event.preventDefault();\n  }\n  function d3_eventSource() {\n    var e = d3.event, s;\n    while (s = e.sourceEvent) e = s;\n    return e;\n  }\n  function d3_eventDispatch(target) {\n    var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n    while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n    dispatch.of = function(thiz, argumentz) {\n      return function(e1) {\n        try {\n          var e0 = e1.sourceEvent = d3.event;\n          e1.target = target;\n          d3.event = e1;\n          dispatch[e1.type].apply(thiz, argumentz);\n        } finally {\n          d3.event = e0;\n        }\n      };\n    };\n    return dispatch;\n  }\n  d3.requote = function(s) {\n    return s.replace(d3_requote_re, \"\\\\$&\");\n  };\n  var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n  var d3_subclass = {}.__proto__ ? function(object, prototype) {\n    object.__proto__ = prototype;\n  } : function(object, prototype) {\n    for (var property in prototype) object[property] = prototype[property];\n  };\n  function d3_selection(groups) {\n    d3_subclass(groups, d3_selectionPrototype);\n    return groups;\n  }\n  var d3_select = function(s, n) {\n    return n.querySelector(s);\n  }, d3_selectAll = function(s, n) {\n    return n.querySelectorAll(s);\n  }, d3_selectMatches = function(n, s) {\n    var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n    d3_selectMatches = function(n, s) {\n      return d3_selectMatcher.call(n, s);\n    };\n    return d3_selectMatches(n, s);\n  };\n  if (typeof Sizzle === \"function\") {\n    d3_select = function(s, n) {\n      return Sizzle(s, n)[0] || null;\n    };\n    d3_selectAll = Sizzle;\n    d3_selectMatches = Sizzle.matchesSelector;\n  }\n  d3.selection = function() {\n    return d3.select(d3_document.documentElement);\n  };\n  var d3_selectionPrototype = d3.selection.prototype = [];\n  d3_selectionPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, group, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n          if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selector(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_select(selector, this);\n    };\n  }\n  d3_selectionPrototype.selectAll = function(selector) {\n    var subgroups = [], subgroup, node;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n          subgroup.parentNode = node;\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_selectorAll(selector) {\n    return typeof selector === \"function\" ? selector : function() {\n      return d3_selectAll(selector, this);\n    };\n  }\n  var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n  var d3_nsPrefix = {\n    svg: \"http://www.w3.org/2000/svg\",\n    xhtml: d3_nsXhtml,\n    xlink: \"http://www.w3.org/1999/xlink\",\n    xml: \"http://www.w3.org/XML/1998/namespace\",\n    xmlns: \"http://www.w3.org/2000/xmlns/\"\n  };\n  d3.ns = {\n    prefix: d3_nsPrefix,\n    qualify: function(name) {\n      var i = name.indexOf(\":\"), prefix = name;\n      if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n      return d3_nsPrefix.hasOwnProperty(prefix) ? {\n        space: d3_nsPrefix[prefix],\n        local: name\n      } : name;\n    }\n  };\n  d3_selectionPrototype.attr = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node();\n        name = d3.ns.qualify(name);\n        return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n      }\n      for (value in name) this.each(d3_selection_attr(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_attr(name, value));\n  };\n  function d3_selection_attr(name, value) {\n    name = d3.ns.qualify(name);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrConstant() {\n      this.setAttribute(name, value);\n    }\n    function attrConstantNS() {\n      this.setAttributeNS(name.space, name.local, value);\n    }\n    function attrFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n    }\n    function attrFunctionNS() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n    }\n    return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n  }\n  function d3_collapse(s) {\n    return s.trim().replace(/\\s+/g, \" \");\n  }\n  d3_selectionPrototype.classed = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") {\n        var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n        if (value = node.classList) {\n          while (++i < n) if (!value.contains(name[i])) return false;\n        } else {\n          value = node.getAttribute(\"class\");\n          while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n        }\n        return true;\n      }\n      for (value in name) this.each(d3_selection_classed(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_classed(name, value));\n  };\n  function d3_selection_classedRe(name) {\n    return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n  }\n  function d3_selection_classes(name) {\n    return (name + \"\").trim().split(/^|\\s+/);\n  }\n  function d3_selection_classed(name, value) {\n    name = d3_selection_classes(name).map(d3_selection_classedName);\n    var n = name.length;\n    function classedConstant() {\n      var i = -1;\n      while (++i < n) name[i](this, value);\n    }\n    function classedFunction() {\n      var i = -1, x = value.apply(this, arguments);\n      while (++i < n) name[i](this, x);\n    }\n    return typeof value === \"function\" ? classedFunction : classedConstant;\n  }\n  function d3_selection_classedName(name) {\n    var re = d3_selection_classedRe(name);\n    return function(node, value) {\n      if (c = node.classList) return value ? c.add(name) : c.remove(name);\n      var c = node.getAttribute(\"class\") || \"\";\n      if (value) {\n        re.lastIndex = 0;\n        if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n      } else {\n        node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n      }\n    };\n  }\n  d3_selectionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n        return this;\n      }\n      if (n < 2) {\n        var node = this.node();\n        return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n      }\n      priority = \"\";\n    }\n    return this.each(d3_selection_style(name, value, priority));\n  };\n  function d3_selection_style(name, value, priority) {\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleConstant() {\n      this.style.setProperty(name, value, priority);\n    }\n    function styleFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n    }\n    return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n  }\n  d3_selectionPrototype.property = function(name, value) {\n    if (arguments.length < 2) {\n      if (typeof name === \"string\") return this.node()[name];\n      for (value in name) this.each(d3_selection_property(value, name[value]));\n      return this;\n    }\n    return this.each(d3_selection_property(name, value));\n  };\n  function d3_selection_property(name, value) {\n    function propertyNull() {\n      delete this[name];\n    }\n    function propertyConstant() {\n      this[name] = value;\n    }\n    function propertyFunction() {\n      var x = value.apply(this, arguments);\n      if (x == null) delete this[name]; else this[name] = x;\n    }\n    return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n  }\n  d3_selectionPrototype.text = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.textContent = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.textContent = \"\";\n    } : function() {\n      this.textContent = value;\n    }) : this.node().textContent;\n  };\n  d3_selectionPrototype.html = function(value) {\n    return arguments.length ? this.each(typeof value === \"function\" ? function() {\n      var v = value.apply(this, arguments);\n      this.innerHTML = v == null ? \"\" : v;\n    } : value == null ? function() {\n      this.innerHTML = \"\";\n    } : function() {\n      this.innerHTML = value;\n    }) : this.node().innerHTML;\n  };\n  d3_selectionPrototype.append = function(name) {\n    name = d3_selection_creator(name);\n    return this.select(function() {\n      return this.appendChild(name.apply(this, arguments));\n    });\n  };\n  function d3_selection_creator(name) {\n    function create() {\n      var document = this.ownerDocument, namespace = this.namespaceURI;\n      return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n    }\n    function createNS() {\n      return this.ownerDocument.createElementNS(name.space, name.local);\n    }\n    return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n  }\n  d3_selectionPrototype.insert = function(name, before) {\n    name = d3_selection_creator(name);\n    before = d3_selection_selector(before);\n    return this.select(function() {\n      return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n    });\n  };\n  d3_selectionPrototype.remove = function() {\n    return this.each(d3_selectionRemove);\n  };\n  function d3_selectionRemove() {\n    var parent = this.parentNode;\n    if (parent) parent.removeChild(this);\n  }\n  d3_selectionPrototype.data = function(value, key) {\n    var i = -1, n = this.length, group, node;\n    if (!arguments.length) {\n      value = new Array(n = (group = this[0]).length);\n      while (++i < n) {\n        if (node = group[i]) {\n          value[i] = node.__data__;\n        }\n      }\n      return value;\n    }\n    function bind(group, groupData) {\n      var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n      if (key) {\n        var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n        for (i = -1; ++i < n; ) {\n          if (node = group[i]) {\n            if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n              exitNodes[i] = node;\n            } else {\n              nodeByKeyValue.set(keyValue, node);\n            }\n            keyValues[i] = keyValue;\n          }\n        }\n        for (i = -1; ++i < m; ) {\n          if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          } else if (node !== true) {\n            updateNodes[i] = node;\n            node.__data__ = nodeData;\n          }\n          nodeByKeyValue.set(keyValue, true);\n        }\n        for (i = -1; ++i < n; ) {\n          if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n            exitNodes[i] = group[i];\n          }\n        }\n      } else {\n        for (i = -1; ++i < n0; ) {\n          node = group[i];\n          nodeData = groupData[i];\n          if (node) {\n            node.__data__ = nodeData;\n            updateNodes[i] = node;\n          } else {\n            enterNodes[i] = d3_selection_dataNode(nodeData);\n          }\n        }\n        for (;i < m; ++i) {\n          enterNodes[i] = d3_selection_dataNode(groupData[i]);\n        }\n        for (;i < n; ++i) {\n          exitNodes[i] = group[i];\n        }\n      }\n      enterNodes.update = updateNodes;\n      enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n      enter.push(enterNodes);\n      update.push(updateNodes);\n      exit.push(exitNodes);\n    }\n    var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n    if (typeof value === \"function\") {\n      while (++i < n) {\n        bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n      }\n    } else {\n      while (++i < n) {\n        bind(group = this[i], value);\n      }\n    }\n    update.enter = function() {\n      return enter;\n    };\n    update.exit = function() {\n      return exit;\n    };\n    return update;\n  };\n  function d3_selection_dataNode(data) {\n    return {\n      __data__: data\n    };\n  }\n  d3_selectionPrototype.datum = function(value) {\n    return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n  };\n  d3_selectionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = (group = this[j]).parentNode;\n      for (var i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  function d3_selection_filter(selector) {\n    return function() {\n      return d3_selectMatches(this, selector);\n    };\n  }\n  d3_selectionPrototype.order = function() {\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n        if (node = group[i]) {\n          if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n          next = node;\n        }\n      }\n    }\n    return this;\n  };\n  d3_selectionPrototype.sort = function(comparator) {\n    comparator = d3_selection_sortComparator.apply(this, arguments);\n    for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n    return this.order();\n  };\n  function d3_selection_sortComparator(comparator) {\n    if (!arguments.length) comparator = d3_ascending;\n    return function(a, b) {\n      return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n    };\n  }\n  d3_selectionPrototype.each = function(callback) {\n    return d3_selection_each(this, function(node, i, j) {\n      callback.call(node, node.__data__, i, j);\n    });\n  };\n  function d3_selection_each(groups, callback) {\n    for (var j = 0, m = groups.length; j < m; j++) {\n      for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n        if (node = group[i]) callback(node, i, j);\n      }\n    }\n    return groups;\n  }\n  d3_selectionPrototype.call = function(callback) {\n    var args = d3_array(arguments);\n    callback.apply(args[0] = this, args);\n    return this;\n  };\n  d3_selectionPrototype.empty = function() {\n    return !this.node();\n  };\n  d3_selectionPrototype.node = function() {\n    for (var j = 0, m = this.length; j < m; j++) {\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        var node = group[i];\n        if (node) return node;\n      }\n    }\n    return null;\n  };\n  d3_selectionPrototype.size = function() {\n    var n = 0;\n    d3_selection_each(this, function() {\n      ++n;\n    });\n    return n;\n  };\n  function d3_selection_enter(selection) {\n    d3_subclass(selection, d3_selection_enterPrototype);\n    return selection;\n  }\n  var d3_selection_enterPrototype = [];\n  d3.selection.enter = d3_selection_enter;\n  d3.selection.enter.prototype = d3_selection_enterPrototype;\n  d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n  d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n  d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n  d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n  d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n  d3_selection_enterPrototype.select = function(selector) {\n    var subgroups = [], subgroup, subnode, upgroup, group, node;\n    for (var j = -1, m = this.length; ++j < m; ) {\n      upgroup = (group = this[j]).update;\n      subgroups.push(subgroup = []);\n      subgroup.parentNode = group.parentNode;\n      for (var i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n          subnode.__data__ = node.__data__;\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_selection(subgroups);\n  };\n  d3_selection_enterPrototype.insert = function(name, before) {\n    if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n    return d3_selectionPrototype.insert.call(this, name, before);\n  };\n  function d3_selection_enterInsertBefore(enter) {\n    var i0, j0;\n    return function(d, i, j) {\n      var group = enter[j].update, n = group.length, node;\n      if (j != j0) j0 = j, i0 = 0;\n      if (i >= i0) i0 = i + 1;\n      while (!(node = group[i0]) && ++i0 < n) ;\n      return node;\n    };\n  }\n  d3.select = function(node) {\n    var group;\n    if (typeof node === \"string\") {\n      group = [ d3_select(node, d3_document) ];\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = [ node ];\n      group.parentNode = d3_documentElement(node);\n    }\n    return d3_selection([ group ]);\n  };\n  d3.selectAll = function(nodes) {\n    var group;\n    if (typeof nodes === \"string\") {\n      group = d3_array(d3_selectAll(nodes, d3_document));\n      group.parentNode = d3_document.documentElement;\n    } else {\n      group = d3_array(nodes);\n      group.parentNode = null;\n    }\n    return d3_selection([ group ]);\n  };\n  d3_selectionPrototype.on = function(type, listener, capture) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof type !== \"string\") {\n        if (n < 2) listener = false;\n        for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n        return this;\n      }\n      if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n      capture = false;\n    }\n    return this.each(d3_selection_on(type, listener, capture));\n  };\n  function d3_selection_on(type, listener, capture) {\n    var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n    if (i > 0) type = type.slice(0, i);\n    var filter = d3_selection_onFilters.get(type);\n    if (filter) type = filter, wrap = d3_selection_onFilter;\n    function onRemove() {\n      var l = this[name];\n      if (l) {\n        this.removeEventListener(type, l, l.$);\n        delete this[name];\n      }\n    }\n    function onAdd() {\n      var l = wrap(listener, d3_array(arguments));\n      onRemove.call(this);\n      this.addEventListener(type, this[name] = l, l.$ = capture);\n      l._ = listener;\n    }\n    function removeAll() {\n      var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n      for (var name in this) {\n        if (match = name.match(re)) {\n          var l = this[name];\n          this.removeEventListener(match[1], l, l.$);\n          delete this[name];\n        }\n      }\n    }\n    return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n  }\n  var d3_selection_onFilters = d3.map({\n    mouseenter: \"mouseover\",\n    mouseleave: \"mouseout\"\n  });\n  if (d3_document) {\n    d3_selection_onFilters.forEach(function(k) {\n      if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n    });\n  }\n  function d3_selection_onListener(listener, argumentz) {\n    return function(e) {\n      var o = d3.event;\n      d3.event = e;\n      argumentz[0] = this.__data__;\n      try {\n        listener.apply(this, argumentz);\n      } finally {\n        d3.event = o;\n      }\n    };\n  }\n  function d3_selection_onFilter(listener, argumentz) {\n    var l = d3_selection_onListener(listener, argumentz);\n    return function(e) {\n      var target = this, related = e.relatedTarget;\n      if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n        l.call(target, e);\n      }\n    };\n  }\n  var d3_event_dragSelect, d3_event_dragId = 0;\n  function d3_event_dragSuppress(node) {\n    var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n    if (d3_event_dragSelect == null) {\n      d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n    }\n    if (d3_event_dragSelect) {\n      var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n      style[d3_event_dragSelect] = \"none\";\n    }\n    return function(suppressClick) {\n      w.on(name, null);\n      if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n      if (suppressClick) {\n        var off = function() {\n          w.on(click, null);\n        };\n        w.on(click, function() {\n          d3_eventPreventDefault();\n          off();\n        }, true);\n        setTimeout(off, 0);\n      }\n    };\n  }\n  d3.mouse = function(container) {\n    return d3_mousePoint(container, d3_eventSource());\n  };\n  var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n  function d3_mousePoint(container, e) {\n    if (e.changedTouches) e = e.changedTouches[0];\n    var svg = container.ownerSVGElement || container;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      if (d3_mouse_bug44083 < 0) {\n        var window = d3_window(container);\n        if (window.scrollX || window.scrollY) {\n          svg = d3.select(\"body\").append(\"svg\").style({\n            position: \"absolute\",\n            top: 0,\n            left: 0,\n            margin: 0,\n            padding: 0,\n            border: \"none\"\n          }, \"important\");\n          var ctm = svg[0][0].getScreenCTM();\n          d3_mouse_bug44083 = !(ctm.f || ctm.e);\n          svg.remove();\n        }\n      }\n      if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n      point.y = e.clientY;\n      point = point.matrixTransform(container.getScreenCTM().inverse());\n      return [ point.x, point.y ];\n    }\n    var rect = container.getBoundingClientRect();\n    return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n  }\n  d3.touch = function(container, touches, identifier) {\n    if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n    if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n      if ((touch = touches[i]).identifier === identifier) {\n        return d3_mousePoint(container, touch);\n      }\n    }\n  };\n  d3.behavior.drag = function() {\n    var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n    function drag() {\n      this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n    }\n    function dragstart(id, position, subject, move, end) {\n      return function() {\n        var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n        if (origin) {\n          dragOffset = origin.apply(that, arguments);\n          dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n        } else {\n          dragOffset = [ 0, 0 ];\n        }\n        dispatch({\n          type: \"dragstart\"\n        });\n        function moved() {\n          var position1 = position(parent, dragId), dx, dy;\n          if (!position1) return;\n          dx = position1[0] - position0[0];\n          dy = position1[1] - position0[1];\n          dragged |= dx | dy;\n          position0 = position1;\n          dispatch({\n            type: \"drag\",\n            x: position1[0] + dragOffset[0],\n            y: position1[1] + dragOffset[1],\n            dx: dx,\n            dy: dy\n          });\n        }\n        function ended() {\n          if (!position(parent, dragId)) return;\n          dragSubject.on(move + dragName, null).on(end + dragName, null);\n          dragRestore(dragged);\n          dispatch({\n            type: \"dragend\"\n          });\n        }\n      };\n    }\n    drag.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return drag;\n    };\n    return d3.rebind(drag, event, \"on\");\n  };\n  function d3_behavior_dragTouchId() {\n    return d3.event.changedTouches[0].identifier;\n  }\n  d3.touches = function(container, touches) {\n    if (arguments.length < 2) touches = d3_eventSource().touches;\n    return touches ? d3_array(touches).map(function(touch) {\n      var point = d3_mousePoint(container, touch);\n      point.identifier = touch.identifier;\n      return point;\n    }) : [];\n  };\n  var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n  function d3_sgn(x) {\n    return x > 0 ? 1 : x < 0 ? -1 : 0;\n  }\n  function d3_cross2d(a, b, c) {\n    return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n  }\n  function d3_acos(x) {\n    return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n  }\n  function d3_asin(x) {\n    return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n  }\n  function d3_sinh(x) {\n    return ((x = Math.exp(x)) - 1 / x) / 2;\n  }\n  function d3_cosh(x) {\n    return ((x = Math.exp(x)) + 1 / x) / 2;\n  }\n  function d3_tanh(x) {\n    return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n  }\n  function d3_haversin(x) {\n    return (x = Math.sin(x / 2)) * x;\n  }\n  var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n  d3.interpolateZoom = function(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n    if (d2 < ε2) {\n      S = Math.log(w1 / w0) / ρ;\n      i = function(t) {\n        return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n      };\n    } else {\n      var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / ρ;\n      i = function(t) {\n        var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n        return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n      };\n    }\n    i.duration = S * 1e3;\n    return i;\n  };\n  d3.behavior.zoom = function() {\n    var view = {\n      x: 0,\n      y: 0,\n      k: 1\n    }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n    if (!d3_behavior_zoomWheel) {\n      d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n      }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n        return d3.event.wheelDelta;\n      }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n        return -d3.event.detail;\n      }, \"MozMousePixelScroll\");\n    }\n    function zoom(g) {\n      g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n    }\n    zoom.event = function(g) {\n      g.each(function() {\n        var dispatch = event.of(this, arguments), view1 = view;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.zoom\", function() {\n            view = this.__chart__ || {\n              x: 0,\n              y: 0,\n              k: 1\n            };\n            zoomstarted(dispatch);\n          }).tween(\"zoom:zoom\", function() {\n            var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n            return function(t) {\n              var l = i(t), k = dx / l[2];\n              this.__chart__ = view = {\n                x: cx - l[0] * k,\n                y: cy - l[1] * k,\n                k: k\n              };\n              zoomed(dispatch);\n            };\n          }).each(\"interrupt.zoom\", function() {\n            zoomended(dispatch);\n          }).each(\"end.zoom\", function() {\n            zoomended(dispatch);\n          });\n        } else {\n          this.__chart__ = view;\n          zoomstarted(dispatch);\n          zoomed(dispatch);\n          zoomended(dispatch);\n        }\n      });\n    };\n    zoom.translate = function(_) {\n      if (!arguments.length) return [ view.x, view.y ];\n      view = {\n        x: +_[0],\n        y: +_[1],\n        k: view.k\n      };\n      rescale();\n      return zoom;\n    };\n    zoom.scale = function(_) {\n      if (!arguments.length) return view.k;\n      view = {\n        x: view.x,\n        y: view.y,\n        k: null\n      };\n      scaleTo(+_);\n      rescale();\n      return zoom;\n    };\n    zoom.scaleExtent = function(_) {\n      if (!arguments.length) return scaleExtent;\n      scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.center = function(_) {\n      if (!arguments.length) return center;\n      center = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.size = function(_) {\n      if (!arguments.length) return size;\n      size = _ && [ +_[0], +_[1] ];\n      return zoom;\n    };\n    zoom.duration = function(_) {\n      if (!arguments.length) return duration;\n      duration = +_;\n      return zoom;\n    };\n    zoom.x = function(z) {\n      if (!arguments.length) return x1;\n      x1 = z;\n      x0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    zoom.y = function(z) {\n      if (!arguments.length) return y1;\n      y1 = z;\n      y0 = z.copy();\n      view = {\n        x: 0,\n        y: 0,\n        k: 1\n      };\n      return zoom;\n    };\n    function location(p) {\n      return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n    }\n    function point(l) {\n      return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n    }\n    function scaleTo(s) {\n      view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n    }\n    function translateTo(p, l) {\n      l = point(l);\n      view.x += p[0] - l[0];\n      view.y += p[1] - l[1];\n    }\n    function zoomTo(that, p, l, k) {\n      that.__chart__ = {\n        x: view.x,\n        y: view.y,\n        k: view.k\n      };\n      scaleTo(Math.pow(2, k));\n      translateTo(center0 = p, l);\n      that = d3.select(that);\n      if (duration > 0) that = that.transition().duration(duration);\n      that.call(zoom.event);\n    }\n    function rescale() {\n      if (x1) x1.domain(x0.range().map(function(x) {\n        return (x - view.x) / view.k;\n      }).map(x0.invert));\n      if (y1) y1.domain(y0.range().map(function(y) {\n        return (y - view.y) / view.k;\n      }).map(y0.invert));\n    }\n    function zoomstarted(dispatch) {\n      if (!zooming++) dispatch({\n        type: \"zoomstart\"\n      });\n    }\n    function zoomed(dispatch) {\n      rescale();\n      dispatch({\n        type: \"zoom\",\n        scale: view.k,\n        translate: [ view.x, view.y ]\n      });\n    }\n    function zoomended(dispatch) {\n      if (!--zooming) dispatch({\n        type: \"zoomend\"\n      }), center0 = null;\n    }\n    function mousedowned() {\n      var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n      d3_selection_interrupt.call(that);\n      zoomstarted(dispatch);\n      function moved() {\n        dragged = 1;\n        translateTo(d3.mouse(that), location0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        subject.on(mousemove, null).on(mouseup, null);\n        dragRestore(dragged);\n        zoomended(dispatch);\n      }\n    }\n    function touchstarted() {\n      var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n      started();\n      zoomstarted(dispatch);\n      subject.on(mousedown, null).on(touchstart, started);\n      function relocate() {\n        var touches = d3.touches(that);\n        scale0 = view.k;\n        touches.forEach(function(t) {\n          if (t.identifier in locations0) locations0[t.identifier] = location(t);\n        });\n        return touches;\n      }\n      function started() {\n        var target = d3.event.target;\n        d3.select(target).on(touchmove, moved).on(touchend, ended);\n        targets.push(target);\n        var changed = d3.event.changedTouches;\n        for (var i = 0, n = changed.length; i < n; ++i) {\n          locations0[changed[i].identifier] = null;\n        }\n        var touches = relocate(), now = Date.now();\n        if (touches.length === 1) {\n          if (now - touchtime < 500) {\n            var p = touches[0];\n            zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n            d3_eventPreventDefault();\n          }\n          touchtime = now;\n        } else if (touches.length > 1) {\n          var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n          distance0 = dx * dx + dy * dy;\n        }\n      }\n      function moved() {\n        var touches = d3.touches(that), p0, l0, p1, l1;\n        d3_selection_interrupt.call(that);\n        for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n          p1 = touches[i];\n          if (l1 = locations0[p1.identifier]) {\n            if (l0) break;\n            p0 = p1, l0 = l1;\n          }\n        }\n        if (l1) {\n          var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n          p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n          l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n          scaleTo(scale1 * scale0);\n        }\n        touchtime = null;\n        translateTo(p0, l0);\n        zoomed(dispatch);\n      }\n      function ended() {\n        if (d3.event.touches.length) {\n          var changed = d3.event.changedTouches;\n          for (var i = 0, n = changed.length; i < n; ++i) {\n            delete locations0[changed[i].identifier];\n          }\n          for (var identifier in locations0) {\n            return void relocate();\n          }\n        }\n        d3.selectAll(targets).on(zoomName, null);\n        subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n        dragRestore();\n        zoomended(dispatch);\n      }\n    }\n    function mousewheeled() {\n      var dispatch = event.of(this, arguments);\n      if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n      translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n      mousewheelTimer = setTimeout(function() {\n        mousewheelTimer = null;\n        zoomended(dispatch);\n      }, 50);\n      d3_eventPreventDefault();\n      scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n      translateTo(center0, translate0);\n      zoomed(dispatch);\n    }\n    function dblclicked() {\n      var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n      zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n    }\n    return d3.rebind(zoom, event, \"on\");\n  };\n  var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n  d3.color = d3_color;\n  function d3_color() {}\n  d3_color.prototype.toString = function() {\n    return this.rgb() + \"\";\n  };\n  d3.hsl = d3_hsl;\n  function d3_hsl(h, s, l) {\n    return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n  }\n  var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n  d3_hslPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, this.l / k);\n  };\n  d3_hslPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_hsl(this.h, this.s, k * this.l);\n  };\n  d3_hslPrototype.rgb = function() {\n    return d3_hsl_rgb(this.h, this.s, this.l);\n  };\n  function d3_hsl_rgb(h, s, l) {\n    var m1, m2;\n    h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n    s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n    l = l < 0 ? 0 : l > 1 ? 1 : l;\n    m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n    m1 = 2 * l - m2;\n    function v(h) {\n      if (h > 360) h -= 360; else if (h < 0) h += 360;\n      if (h < 60) return m1 + (m2 - m1) * h / 60;\n      if (h < 180) return m2;\n      if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n      return m1;\n    }\n    function vv(h) {\n      return Math.round(v(h) * 255);\n    }\n    return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n  }\n  d3.hcl = d3_hcl;\n  function d3_hcl(h, c, l) {\n    return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n  }\n  var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n  d3_hclPrototype.brighter = function(k) {\n    return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.darker = function(k) {\n    return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n  };\n  d3_hclPrototype.rgb = function() {\n    return d3_hcl_lab(this.h, this.c, this.l).rgb();\n  };\n  function d3_hcl_lab(h, c, l) {\n    if (isNaN(h)) h = 0;\n    if (isNaN(c)) c = 0;\n    return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n  }\n  d3.lab = d3_lab;\n  function d3_lab(l, a, b) {\n    return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n  }\n  var d3_lab_K = 18;\n  var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n  var d3_labPrototype = d3_lab.prototype = new d3_color();\n  d3_labPrototype.brighter = function(k) {\n    return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.darker = function(k) {\n    return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n  };\n  d3_labPrototype.rgb = function() {\n    return d3_lab_rgb(this.l, this.a, this.b);\n  };\n  function d3_lab_rgb(l, a, b) {\n    var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n    x = d3_lab_xyz(x) * d3_lab_X;\n    y = d3_lab_xyz(y) * d3_lab_Y;\n    z = d3_lab_xyz(z) * d3_lab_Z;\n    return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n  }\n  function d3_lab_hcl(l, a, b) {\n    return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n  }\n  function d3_lab_xyz(x) {\n    return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n  }\n  function d3_xyz_lab(x) {\n    return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n  }\n  function d3_xyz_rgb(r) {\n    return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n  }\n  d3.rgb = d3_rgb;\n  function d3_rgb(r, g, b) {\n    return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n  }\n  function d3_rgbNumber(value) {\n    return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n  }\n  function d3_rgbString(value) {\n    return d3_rgbNumber(value) + \"\";\n  }\n  var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n  d3_rgbPrototype.brighter = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    var r = this.r, g = this.g, b = this.b, i = 30;\n    if (!r && !g && !b) return new d3_rgb(i, i, i);\n    if (r && r < i) r = i;\n    if (g && g < i) g = i;\n    if (b && b < i) b = i;\n    return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n  };\n  d3_rgbPrototype.darker = function(k) {\n    k = Math.pow(.7, arguments.length ? k : 1);\n    return new d3_rgb(k * this.r, k * this.g, k * this.b);\n  };\n  d3_rgbPrototype.hsl = function() {\n    return d3_rgb_hsl(this.r, this.g, this.b);\n  };\n  d3_rgbPrototype.toString = function() {\n    return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n  };\n  function d3_rgb_hex(v) {\n    return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n  }\n  function d3_rgb_parse(format, rgb, hsl) {\n    var r = 0, g = 0, b = 0, m1, m2, color;\n    m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n    if (m1) {\n      m2 = m1[2].split(\",\");\n      switch (m1[1]) {\n       case \"hsl\":\n        {\n          return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n        }\n\n       case \"rgb\":\n        {\n          return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n        }\n      }\n    }\n    if (color = d3_rgb_names.get(format)) {\n      return rgb(color.r, color.g, color.b);\n    }\n    if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n      if (format.length === 4) {\n        r = (color & 3840) >> 4;\n        r = r >> 4 | r;\n        g = color & 240;\n        g = g >> 4 | g;\n        b = color & 15;\n        b = b << 4 | b;\n      } else if (format.length === 7) {\n        r = (color & 16711680) >> 16;\n        g = (color & 65280) >> 8;\n        b = color & 255;\n      }\n    }\n    return rgb(r, g, b);\n  }\n  function d3_rgb_hsl(r, g, b) {\n    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;\n    if (d) {\n      s = l < .5 ? d / (max + min) : d / (2 - max - min);\n      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;\n      h *= 60;\n    } else {\n      h = NaN;\n      s = l > 0 && l < 1 ? 0 : h;\n    }\n    return new d3_hsl(h, s, l);\n  }\n  function d3_rgb_lab(r, g, b) {\n    r = d3_rgb_xyz(r);\n    g = d3_rgb_xyz(g);\n    b = d3_rgb_xyz(b);\n    var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n    return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n  }\n  function d3_rgb_xyz(r) {\n    return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n  }\n  function d3_rgb_parseNumber(c) {\n    var f = parseFloat(c);\n    return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n  }\n  var d3_rgb_names = d3.map({\n    aliceblue: 15792383,\n    antiquewhite: 16444375,\n    aqua: 65535,\n    aquamarine: 8388564,\n    azure: 15794175,\n    beige: 16119260,\n    bisque: 16770244,\n    black: 0,\n    blanchedalmond: 16772045,\n    blue: 255,\n    blueviolet: 9055202,\n    brown: 10824234,\n    burlywood: 14596231,\n    cadetblue: 6266528,\n    chartreuse: 8388352,\n    chocolate: 13789470,\n    coral: 16744272,\n    cornflowerblue: 6591981,\n    cornsilk: 16775388,\n    crimson: 14423100,\n    cyan: 65535,\n    darkblue: 139,\n    darkcyan: 35723,\n    darkgoldenrod: 12092939,\n    darkgray: 11119017,\n    darkgreen: 25600,\n    darkgrey: 11119017,\n    darkkhaki: 12433259,\n    darkmagenta: 9109643,\n    darkolivegreen: 5597999,\n    darkorange: 16747520,\n    darkorchid: 10040012,\n    darkred: 9109504,\n    darksalmon: 15308410,\n    darkseagreen: 9419919,\n    darkslateblue: 4734347,\n    darkslategray: 3100495,\n    darkslategrey: 3100495,\n    darkturquoise: 52945,\n    darkviolet: 9699539,\n    deeppink: 16716947,\n    deepskyblue: 49151,\n    dimgray: 6908265,\n    dimgrey: 6908265,\n    dodgerblue: 2003199,\n    firebrick: 11674146,\n    floralwhite: 16775920,\n    forestgreen: 2263842,\n    fuchsia: 16711935,\n    gainsboro: 14474460,\n    ghostwhite: 16316671,\n    gold: 16766720,\n    goldenrod: 14329120,\n    gray: 8421504,\n    green: 32768,\n    greenyellow: 11403055,\n    grey: 8421504,\n    honeydew: 15794160,\n    hotpink: 16738740,\n    indianred: 13458524,\n    indigo: 4915330,\n    ivory: 16777200,\n    khaki: 15787660,\n    lavender: 15132410,\n    lavenderblush: 16773365,\n    lawngreen: 8190976,\n    lemonchiffon: 16775885,\n    lightblue: 11393254,\n    lightcoral: 15761536,\n    lightcyan: 14745599,\n    lightgoldenrodyellow: 16448210,\n    lightgray: 13882323,\n    lightgreen: 9498256,\n    lightgrey: 13882323,\n    lightpink: 16758465,\n    lightsalmon: 16752762,\n    lightseagreen: 2142890,\n    lightskyblue: 8900346,\n    lightslategray: 7833753,\n    lightslategrey: 7833753,\n    lightsteelblue: 11584734,\n    lightyellow: 16777184,\n    lime: 65280,\n    limegreen: 3329330,\n    linen: 16445670,\n    magenta: 16711935,\n    maroon: 8388608,\n    mediumaquamarine: 6737322,\n    mediumblue: 205,\n    mediumorchid: 12211667,\n    mediumpurple: 9662683,\n    mediumseagreen: 3978097,\n    mediumslateblue: 8087790,\n    mediumspringgreen: 64154,\n    mediumturquoise: 4772300,\n    mediumvioletred: 13047173,\n    midnightblue: 1644912,\n    mintcream: 16121850,\n    mistyrose: 16770273,\n    moccasin: 16770229,\n    navajowhite: 16768685,\n    navy: 128,\n    oldlace: 16643558,\n    olive: 8421376,\n    olivedrab: 7048739,\n    orange: 16753920,\n    orangered: 16729344,\n    orchid: 14315734,\n    palegoldenrod: 15657130,\n    palegreen: 10025880,\n    paleturquoise: 11529966,\n    palevioletred: 14381203,\n    papayawhip: 16773077,\n    peachpuff: 16767673,\n    peru: 13468991,\n    pink: 16761035,\n    plum: 14524637,\n    powderblue: 11591910,\n    purple: 8388736,\n    rebeccapurple: 6697881,\n    red: 16711680,\n    rosybrown: 12357519,\n    royalblue: 4286945,\n    saddlebrown: 9127187,\n    salmon: 16416882,\n    sandybrown: 16032864,\n    seagreen: 3050327,\n    seashell: 16774638,\n    sienna: 10506797,\n    silver: 12632256,\n    skyblue: 8900331,\n    slateblue: 6970061,\n    slategray: 7372944,\n    slategrey: 7372944,\n    snow: 16775930,\n    springgreen: 65407,\n    steelblue: 4620980,\n    tan: 13808780,\n    teal: 32896,\n    thistle: 14204888,\n    tomato: 16737095,\n    turquoise: 4251856,\n    violet: 15631086,\n    wheat: 16113331,\n    white: 16777215,\n    whitesmoke: 16119285,\n    yellow: 16776960,\n    yellowgreen: 10145074\n  });\n  d3_rgb_names.forEach(function(key, value) {\n    d3_rgb_names.set(key, d3_rgbNumber(value));\n  });\n  function d3_functor(v) {\n    return typeof v === \"function\" ? v : function() {\n      return v;\n    };\n  }\n  d3.functor = d3_functor;\n  d3.xhr = d3_xhrType(d3_identity);\n  function d3_xhrType(response) {\n    return function(url, mimeType, callback) {\n      if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n      mimeType = null;\n      return d3_xhr(url, mimeType, response, callback);\n    };\n  }\n  function d3_xhr(url, mimeType, response, callback) {\n    var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n    if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n    \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n      request.readyState > 3 && respond();\n    };\n    function respond() {\n      var status = request.status, result;\n      if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n        try {\n          result = response.call(xhr, request);\n        } catch (e) {\n          dispatch.error.call(xhr, e);\n          return;\n        }\n        dispatch.load.call(xhr, result);\n      } else {\n        dispatch.error.call(xhr, request);\n      }\n    }\n    request.onprogress = function(event) {\n      var o = d3.event;\n      d3.event = event;\n      try {\n        dispatch.progress.call(xhr, request);\n      } finally {\n        d3.event = o;\n      }\n    };\n    xhr.header = function(name, value) {\n      name = (name + \"\").toLowerCase();\n      if (arguments.length < 2) return headers[name];\n      if (value == null) delete headers[name]; else headers[name] = value + \"\";\n      return xhr;\n    };\n    xhr.mimeType = function(value) {\n      if (!arguments.length) return mimeType;\n      mimeType = value == null ? null : value + \"\";\n      return xhr;\n    };\n    xhr.responseType = function(value) {\n      if (!arguments.length) return responseType;\n      responseType = value;\n      return xhr;\n    };\n    xhr.response = function(value) {\n      response = value;\n      return xhr;\n    };\n    [ \"get\", \"post\" ].forEach(function(method) {\n      xhr[method] = function() {\n        return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n      };\n    });\n    xhr.send = function(method, data, callback) {\n      if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n      request.open(method, url, true);\n      if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n      if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n      if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n      if (responseType != null) request.responseType = responseType;\n      if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n        callback(null, request);\n      });\n      dispatch.beforesend.call(xhr, request);\n      request.send(data == null ? null : data);\n      return xhr;\n    };\n    xhr.abort = function() {\n      request.abort();\n      return xhr;\n    };\n    d3.rebind(xhr, dispatch, \"on\");\n    return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n  }\n  function d3_xhr_fixCallback(callback) {\n    return callback.length === 1 ? function(error, request) {\n      callback(error == null ? request : null);\n    } : callback;\n  }\n  function d3_xhrHasResponse(request) {\n    var type = request.responseType;\n    return type && type !== \"text\" ? request.response : request.responseText;\n  }\n  d3.dsv = function(delimiter, mimeType) {\n    var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n    function dsv(url, row, callback) {\n      if (arguments.length < 3) callback = row, row = null;\n      var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n      xhr.row = function(_) {\n        return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n      };\n      return xhr;\n    }\n    function response(request) {\n      return dsv.parse(request.responseText);\n    }\n    function typedResponse(f) {\n      return function(request) {\n        return dsv.parse(request.responseText, f);\n      };\n    }\n    dsv.parse = function(text, f) {\n      var o;\n      return dsv.parseRows(text, function(row, i) {\n        if (o) return o(row, i - 1);\n        var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n          return JSON.stringify(name) + \": d[\" + i + \"]\";\n        }).join(\",\") + \"}\");\n        o = f ? function(row, i) {\n          return f(a(row), i);\n        } : a;\n      });\n    };\n    dsv.parseRows = function(text, f) {\n      var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n      function token() {\n        if (I >= N) return EOF;\n        if (eol) return eol = false, EOL;\n        var j = I;\n        if (text.charCodeAt(j) === 34) {\n          var i = j;\n          while (i++ < N) {\n            if (text.charCodeAt(i) === 34) {\n              if (text.charCodeAt(i + 1) !== 34) break;\n              ++i;\n            }\n          }\n          I = i + 2;\n          var c = text.charCodeAt(i + 1);\n          if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(i + 2) === 10) ++I;\n          } else if (c === 10) {\n            eol = true;\n          }\n          return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n        }\n        while (I < N) {\n          var c = text.charCodeAt(I++), k = 1;\n          if (c === 10) eol = true; else if (c === 13) {\n            eol = true;\n            if (text.charCodeAt(I) === 10) ++I, ++k;\n          } else if (c !== delimiterCode) continue;\n          return text.slice(j, I - k);\n        }\n        return text.slice(j);\n      }\n      while ((t = token()) !== EOF) {\n        var a = [];\n        while (t !== EOL && t !== EOF) {\n          a.push(t);\n          t = token();\n        }\n        if (f && (a = f(a, n++)) == null) continue;\n        rows.push(a);\n      }\n      return rows;\n    };\n    dsv.format = function(rows) {\n      if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n      var fieldSet = new d3_Set(), fields = [];\n      rows.forEach(function(row) {\n        for (var field in row) {\n          if (!fieldSet.has(field)) {\n            fields.push(fieldSet.add(field));\n          }\n        }\n      });\n      return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n        return fields.map(function(field) {\n          return formatValue(row[field]);\n        }).join(delimiter);\n      })).join(\"\\n\");\n    };\n    dsv.formatRows = function(rows) {\n      return rows.map(formatRow).join(\"\\n\");\n    };\n    function formatRow(row) {\n      return row.map(formatValue).join(delimiter);\n    }\n    function formatValue(text) {\n      return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n    }\n    return dsv;\n  };\n  d3.csv = d3.dsv(\",\", \"text/csv\");\n  d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n  var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n    setTimeout(callback, 17);\n  };\n  d3.timer = function() {\n    d3_timer.apply(this, arguments);\n  };\n  function d3_timer(callback, delay, then) {\n    var n = arguments.length;\n    if (n < 2) delay = 0;\n    if (n < 3) then = Date.now();\n    var time = then + delay, timer = {\n      c: callback,\n      t: time,\n      n: null\n    };\n    if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n    d3_timer_queueTail = timer;\n    if (!d3_timer_interval) {\n      d3_timer_timeout = clearTimeout(d3_timer_timeout);\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n    return timer;\n  }\n  function d3_timer_step() {\n    var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n    if (delay > 24) {\n      if (isFinite(delay)) {\n        clearTimeout(d3_timer_timeout);\n        d3_timer_timeout = setTimeout(d3_timer_step, delay);\n      }\n      d3_timer_interval = 0;\n    } else {\n      d3_timer_interval = 1;\n      d3_timer_frame(d3_timer_step);\n    }\n  }\n  d3.timer.flush = function() {\n    d3_timer_mark();\n    d3_timer_sweep();\n  };\n  function d3_timer_mark() {\n    var now = Date.now(), timer = d3_timer_queueHead;\n    while (timer) {\n      if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n      timer = timer.n;\n    }\n    return now;\n  }\n  function d3_timer_sweep() {\n    var t0, t1 = d3_timer_queueHead, time = Infinity;\n    while (t1) {\n      if (t1.c) {\n        if (t1.t < time) time = t1.t;\n        t1 = (t0 = t1).n;\n      } else {\n        t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n      }\n    }\n    d3_timer_queueTail = t0;\n    return time;\n  }\n  function d3_format_precision(x, p) {\n    return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n  }\n  d3.round = function(x, n) {\n    return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n  };\n  var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n  d3.formatPrefix = function(value, precision) {\n    var i = 0;\n    if (value = +value) {\n      if (value < 0) value *= -1;\n      if (precision) value = d3.round(value, d3_format_precision(value, precision));\n      i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n      i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n    }\n    return d3_formatPrefixes[8 + i / 3];\n  };\n  function d3_formatPrefix(d, i) {\n    var k = Math.pow(10, abs(8 - i) * 3);\n    return {\n      scale: i > 8 ? function(d) {\n        return d / k;\n      } : function(d) {\n        return d * k;\n      },\n      symbol: d\n    };\n  }\n  function d3_locale_numberFormat(locale) {\n    var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n      var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n      while (i > 0 && g > 0) {\n        if (length + g + 1 > width) g = Math.max(1, width - length);\n        t.push(value.substring(i -= g, i + g));\n        if ((length += g + 1) > width) break;\n        g = locale_grouping[j = (j + 1) % locale_grouping.length];\n      }\n      return t.reverse().join(locale_thousands);\n    } : d3_identity;\n    return function(specifier) {\n      var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n      if (precision) precision = +precision.substring(1);\n      if (zfill || fill === \"0\" && align === \"=\") {\n        zfill = fill = \"0\";\n        align = \"=\";\n      }\n      switch (type) {\n       case \"n\":\n        comma = true;\n        type = \"g\";\n        break;\n\n       case \"%\":\n        scale = 100;\n        suffix = \"%\";\n        type = \"f\";\n        break;\n\n       case \"p\":\n        scale = 100;\n        suffix = \"%\";\n        type = \"r\";\n        break;\n\n       case \"b\":\n       case \"o\":\n       case \"x\":\n       case \"X\":\n        if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n       case \"c\":\n        exponent = false;\n\n       case \"d\":\n        integer = true;\n        precision = 0;\n        break;\n\n       case \"s\":\n        scale = -1;\n        type = \"r\";\n        break;\n      }\n      if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n      if (type == \"r\" && !precision) type = \"g\";\n      if (precision != null) {\n        if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n      }\n      type = d3_format_types.get(type) || d3_format_typeDefault;\n      var zcomma = zfill && comma;\n      return function(value) {\n        var fullSuffix = suffix;\n        if (integer && value % 1) return \"\";\n        var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n        if (scale < 0) {\n          var unit = d3.formatPrefix(value, precision);\n          value = unit.scale(value);\n          fullSuffix = unit.symbol + suffix;\n        } else {\n          value *= scale;\n        }\n        value = type(value, precision);\n        var i = value.lastIndexOf(\".\"), before, after;\n        if (i < 0) {\n          var j = exponent ? value.lastIndexOf(\"e\") : -1;\n          if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n        } else {\n          before = value.substring(0, i);\n          after = locale_decimal + value.substring(i + 1);\n        }\n        if (!zfill && comma) before = formatGroup(before, Infinity);\n        var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n        if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n        negative += prefix;\n        value = before + after;\n        return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n      };\n    };\n  }\n  var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n  var d3_format_types = d3.map({\n    b: function(x) {\n      return x.toString(2);\n    },\n    c: function(x) {\n      return String.fromCharCode(x);\n    },\n    o: function(x) {\n      return x.toString(8);\n    },\n    x: function(x) {\n      return x.toString(16);\n    },\n    X: function(x) {\n      return x.toString(16).toUpperCase();\n    },\n    g: function(x, p) {\n      return x.toPrecision(p);\n    },\n    e: function(x, p) {\n      return x.toExponential(p);\n    },\n    f: function(x, p) {\n      return x.toFixed(p);\n    },\n    r: function(x, p) {\n      return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n    }\n  });\n  function d3_format_typeDefault(x) {\n    return x + \"\";\n  }\n  var d3_time = d3.time = {}, d3_date = Date;\n  function d3_date_utc() {\n    this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n  }\n  d3_date_utc.prototype = {\n    getDate: function() {\n      return this._.getUTCDate();\n    },\n    getDay: function() {\n      return this._.getUTCDay();\n    },\n    getFullYear: function() {\n      return this._.getUTCFullYear();\n    },\n    getHours: function() {\n      return this._.getUTCHours();\n    },\n    getMilliseconds: function() {\n      return this._.getUTCMilliseconds();\n    },\n    getMinutes: function() {\n      return this._.getUTCMinutes();\n    },\n    getMonth: function() {\n      return this._.getUTCMonth();\n    },\n    getSeconds: function() {\n      return this._.getUTCSeconds();\n    },\n    getTime: function() {\n      return this._.getTime();\n    },\n    getTimezoneOffset: function() {\n      return 0;\n    },\n    valueOf: function() {\n      return this._.valueOf();\n    },\n    setDate: function() {\n      d3_time_prototype.setUTCDate.apply(this._, arguments);\n    },\n    setDay: function() {\n      d3_time_prototype.setUTCDay.apply(this._, arguments);\n    },\n    setFullYear: function() {\n      d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n    },\n    setHours: function() {\n      d3_time_prototype.setUTCHours.apply(this._, arguments);\n    },\n    setMilliseconds: function() {\n      d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n    },\n    setMinutes: function() {\n      d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n    },\n    setMonth: function() {\n      d3_time_prototype.setUTCMonth.apply(this._, arguments);\n    },\n    setSeconds: function() {\n      d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n    },\n    setTime: function() {\n      d3_time_prototype.setTime.apply(this._, arguments);\n    }\n  };\n  var d3_time_prototype = Date.prototype;\n  function d3_time_interval(local, step, number) {\n    function round(date) {\n      var d0 = local(date), d1 = offset(d0, 1);\n      return date - d0 < d1 - date ? d0 : d1;\n    }\n    function ceil(date) {\n      step(date = local(new d3_date(date - 1)), 1);\n      return date;\n    }\n    function offset(date, k) {\n      step(date = new d3_date(+date), k);\n      return date;\n    }\n    function range(t0, t1, dt) {\n      var time = ceil(t0), times = [];\n      if (dt > 1) {\n        while (time < t1) {\n          if (!(number(time) % dt)) times.push(new Date(+time));\n          step(time, 1);\n        }\n      } else {\n        while (time < t1) times.push(new Date(+time)), step(time, 1);\n      }\n      return times;\n    }\n    function range_utc(t0, t1, dt) {\n      try {\n        d3_date = d3_date_utc;\n        var utc = new d3_date_utc();\n        utc._ = t0;\n        return range(utc, t1, dt);\n      } finally {\n        d3_date = Date;\n      }\n    }\n    local.floor = local;\n    local.round = round;\n    local.ceil = ceil;\n    local.offset = offset;\n    local.range = range;\n    var utc = local.utc = d3_time_interval_utc(local);\n    utc.floor = utc;\n    utc.round = d3_time_interval_utc(round);\n    utc.ceil = d3_time_interval_utc(ceil);\n    utc.offset = d3_time_interval_utc(offset);\n    utc.range = range_utc;\n    return local;\n  }\n  function d3_time_interval_utc(method) {\n    return function(date, k) {\n      try {\n        d3_date = d3_date_utc;\n        var utc = new d3_date_utc();\n        utc._ = date;\n        return method(utc, k)._;\n      } finally {\n        d3_date = Date;\n      }\n    };\n  }\n  d3_time.year = d3_time_interval(function(date) {\n    date = d3_time.day(date);\n    date.setMonth(0, 1);\n    return date;\n  }, function(date, offset) {\n    date.setFullYear(date.getFullYear() + offset);\n  }, function(date) {\n    return date.getFullYear();\n  });\n  d3_time.years = d3_time.year.range;\n  d3_time.years.utc = d3_time.year.utc.range;\n  d3_time.day = d3_time_interval(function(date) {\n    var day = new d3_date(2e3, 0);\n    day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    return day;\n  }, function(date, offset) {\n    date.setDate(date.getDate() + offset);\n  }, function(date) {\n    return date.getDate() - 1;\n  });\n  d3_time.days = d3_time.day.range;\n  d3_time.days.utc = d3_time.day.utc.range;\n  d3_time.dayOfYear = function(date) {\n    var year = d3_time.year(date);\n    return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n  };\n  [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n    i = 7 - i;\n    var interval = d3_time[day] = d3_time_interval(function(date) {\n      (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n      return date;\n    }, function(date, offset) {\n      date.setDate(date.getDate() + Math.floor(offset) * 7);\n    }, function(date) {\n      var day = d3_time.year(date).getDay();\n      return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n    });\n    d3_time[day + \"s\"] = interval.range;\n    d3_time[day + \"s\"].utc = interval.utc.range;\n    d3_time[day + \"OfYear\"] = function(date) {\n      var day = d3_time.year(date).getDay();\n      return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n    };\n  });\n  d3_time.week = d3_time.sunday;\n  d3_time.weeks = d3_time.sunday.range;\n  d3_time.weeks.utc = d3_time.sunday.utc.range;\n  d3_time.weekOfYear = d3_time.sundayOfYear;\n  function d3_locale_timeFormat(locale) {\n    var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n    function d3_time_format(template) {\n      var n = template.length;\n      function format(date) {\n        var string = [], i = -1, j = 0, c, p, f;\n        while (++i < n) {\n          if (template.charCodeAt(i) === 37) {\n            string.push(template.slice(j, i));\n            if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n            if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n            string.push(c);\n            j = i + 1;\n          }\n        }\n        string.push(template.slice(j, i));\n        return string.join(\"\");\n      }\n      format.parse = function(string) {\n        var d = {\n          y: 1900,\n          m: 0,\n          d: 1,\n          H: 0,\n          M: 0,\n          S: 0,\n          L: 0,\n          Z: null\n        }, i = d3_time_parse(d, template, string, 0);\n        if (i != string.length) return null;\n        if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n        var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n        if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n          if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n          date.setFullYear(d.y, 0, 1);\n          date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n        } else date.setFullYear(d.y, d.m, d.d);\n        date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n        return localZ ? date._ : date;\n      };\n      format.toString = function() {\n        return template;\n      };\n      return format;\n    }\n    function d3_time_parse(date, template, string, j) {\n      var c, p, t, i = 0, n = template.length, m = string.length;\n      while (i < n) {\n        if (j >= m) return -1;\n        c = template.charCodeAt(i++);\n        if (c === 37) {\n          t = template.charAt(i++);\n          p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n          if (!p || (j = p(date, string, j)) < 0) return -1;\n        } else if (c != string.charCodeAt(j++)) {\n          return -1;\n        }\n      }\n      return j;\n    }\n    d3_time_format.utc = function(template) {\n      var local = d3_time_format(template);\n      function format(date) {\n        try {\n          d3_date = d3_date_utc;\n          var utc = new d3_date();\n          utc._ = date;\n          return local(utc);\n        } finally {\n          d3_date = Date;\n        }\n      }\n      format.parse = function(string) {\n        try {\n          d3_date = d3_date_utc;\n          var date = local.parse(string);\n          return date && date._;\n        } finally {\n          d3_date = Date;\n        }\n      };\n      format.toString = local.toString;\n      return format;\n    };\n    d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n    var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n    locale_periods.forEach(function(p, i) {\n      d3_time_periodLookup.set(p.toLowerCase(), i);\n    });\n    var d3_time_formats = {\n      a: function(d) {\n        return locale_shortDays[d.getDay()];\n      },\n      A: function(d) {\n        return locale_days[d.getDay()];\n      },\n      b: function(d) {\n        return locale_shortMonths[d.getMonth()];\n      },\n      B: function(d) {\n        return locale_months[d.getMonth()];\n      },\n      c: d3_time_format(locale_dateTime),\n      d: function(d, p) {\n        return d3_time_formatPad(d.getDate(), p, 2);\n      },\n      e: function(d, p) {\n        return d3_time_formatPad(d.getDate(), p, 2);\n      },\n      H: function(d, p) {\n        return d3_time_formatPad(d.getHours(), p, 2);\n      },\n      I: function(d, p) {\n        return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n      },\n      j: function(d, p) {\n        return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n      },\n      L: function(d, p) {\n        return d3_time_formatPad(d.getMilliseconds(), p, 3);\n      },\n      m: function(d, p) {\n        return d3_time_formatPad(d.getMonth() + 1, p, 2);\n      },\n      M: function(d, p) {\n        return d3_time_formatPad(d.getMinutes(), p, 2);\n      },\n      p: function(d) {\n        return locale_periods[+(d.getHours() >= 12)];\n      },\n      S: function(d, p) {\n        return d3_time_formatPad(d.getSeconds(), p, 2);\n      },\n      U: function(d, p) {\n        return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n      },\n      w: function(d) {\n        return d.getDay();\n      },\n      W: function(d, p) {\n        return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n      },\n      x: d3_time_format(locale_date),\n      X: d3_time_format(locale_time),\n      y: function(d, p) {\n        return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n      },\n      Y: function(d, p) {\n        return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n      },\n      Z: d3_time_zone,\n      \"%\": function() {\n        return \"%\";\n      }\n    };\n    var d3_time_parsers = {\n      a: d3_time_parseWeekdayAbbrev,\n      A: d3_time_parseWeekday,\n      b: d3_time_parseMonthAbbrev,\n      B: d3_time_parseMonth,\n      c: d3_time_parseLocaleFull,\n      d: d3_time_parseDay,\n      e: d3_time_parseDay,\n      H: d3_time_parseHour24,\n      I: d3_time_parseHour24,\n      j: d3_time_parseDayOfYear,\n      L: d3_time_parseMilliseconds,\n      m: d3_time_parseMonthNumber,\n      M: d3_time_parseMinutes,\n      p: d3_time_parseAmPm,\n      S: d3_time_parseSeconds,\n      U: d3_time_parseWeekNumberSunday,\n      w: d3_time_parseWeekdayNumber,\n      W: d3_time_parseWeekNumberMonday,\n      x: d3_time_parseLocaleDate,\n      X: d3_time_parseLocaleTime,\n      y: d3_time_parseYear,\n      Y: d3_time_parseFullYear,\n      Z: d3_time_parseZone,\n      \"%\": d3_time_parseLiteralPercent\n    };\n    function d3_time_parseWeekdayAbbrev(date, string, i) {\n      d3_time_dayAbbrevRe.lastIndex = 0;\n      var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n      return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseWeekday(date, string, i) {\n      d3_time_dayRe.lastIndex = 0;\n      var n = d3_time_dayRe.exec(string.slice(i));\n      return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseMonthAbbrev(date, string, i) {\n      d3_time_monthAbbrevRe.lastIndex = 0;\n      var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n      return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseMonth(date, string, i) {\n      d3_time_monthRe.lastIndex = 0;\n      var n = d3_time_monthRe.exec(string.slice(i));\n      return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n    }\n    function d3_time_parseLocaleFull(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n    }\n    function d3_time_parseLocaleDate(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n    }\n    function d3_time_parseLocaleTime(date, string, i) {\n      return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n    }\n    function d3_time_parseAmPm(date, string, i) {\n      var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n      return n == null ? -1 : (date.p = n, i);\n    }\n    return d3_time_format;\n  }\n  var d3_time_formatPads = {\n    \"-\": \"\",\n    _: \" \",\n    \"0\": \"0\"\n  }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n  function d3_time_formatPad(value, fill, width) {\n    var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n    return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n  }\n  function d3_time_formatRe(names) {\n    return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n  }\n  function d3_time_formatLookup(names) {\n    var map = new d3_Map(), i = -1, n = names.length;\n    while (++i < n) map.set(names[i].toLowerCase(), i);\n    return map;\n  }\n  function d3_time_parseWeekdayNumber(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n    return n ? (date.w = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseWeekNumberSunday(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i));\n    return n ? (date.U = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseWeekNumberMonday(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i));\n    return n ? (date.W = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseFullYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n    return n ? (date.y = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n  }\n  function d3_time_parseZone(date, string, i) {\n    return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n    i + 5) : -1;\n  }\n  function d3_time_expandYear(d) {\n    return d + (d > 68 ? 1900 : 2e3);\n  }\n  function d3_time_parseMonthNumber(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n  }\n  function d3_time_parseDay(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.d = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseDayOfYear(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n    return n ? (date.j = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseHour24(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.H = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseMinutes(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.M = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseSeconds(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n    return n ? (date.S = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_parseMilliseconds(date, string, i) {\n    d3_time_numberRe.lastIndex = 0;\n    var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n    return n ? (date.L = +n[0], i + n[0].length) : -1;\n  }\n  function d3_time_zone(d) {\n    var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n    return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n  }\n  function d3_time_parseLiteralPercent(date, string, i) {\n    d3_time_percentRe.lastIndex = 0;\n    var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n    return n ? i + n[0].length : -1;\n  }\n  function d3_time_formatMulti(formats) {\n    var n = formats.length, i = -1;\n    while (++i < n) formats[i][0] = this(formats[i][0]);\n    return function(date) {\n      var i = 0, f = formats[i];\n      while (!f[1](date)) f = formats[++i];\n      return f[0](date);\n    };\n  }\n  d3.locale = function(locale) {\n    return {\n      numberFormat: d3_locale_numberFormat(locale),\n      timeFormat: d3_locale_timeFormat(locale)\n    };\n  };\n  var d3_locale_enUS = d3.locale({\n    decimal: \".\",\n    thousands: \",\",\n    grouping: [ 3 ],\n    currency: [ \"$\", \"\" ],\n    dateTime: \"%a %b %e %X %Y\",\n    date: \"%m/%d/%Y\",\n    time: \"%H:%M:%S\",\n    periods: [ \"AM\", \"PM\" ],\n    days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n    shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n    months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n    shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n  });\n  d3.format = d3_locale_enUS.numberFormat;\n  d3.geo = {};\n  function d3_adder() {}\n  d3_adder.prototype = {\n    s: 0,\n    t: 0,\n    add: function(y) {\n      d3_adderSum(y, this.t, d3_adderTemp);\n      d3_adderSum(d3_adderTemp.s, this.s, this);\n      if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n    },\n    reset: function() {\n      this.s = this.t = 0;\n    },\n    valueOf: function() {\n      return this.s;\n    }\n  };\n  var d3_adderTemp = new d3_adder();\n  function d3_adderSum(a, b, o) {\n    var x = o.s = a + b, bv = x - a, av = x - bv;\n    o.t = a - av + (b - bv);\n  }\n  d3.geo.stream = function(object, listener) {\n    if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n      d3_geo_streamObjectType[object.type](object, listener);\n    } else {\n      d3_geo_streamGeometry(object, listener);\n    }\n  };\n  function d3_geo_streamGeometry(geometry, listener) {\n    if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n      d3_geo_streamGeometryType[geometry.type](geometry, listener);\n    }\n  }\n  var d3_geo_streamObjectType = {\n    Feature: function(feature, listener) {\n      d3_geo_streamGeometry(feature.geometry, listener);\n    },\n    FeatureCollection: function(object, listener) {\n      var features = object.features, i = -1, n = features.length;\n      while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n    }\n  };\n  var d3_geo_streamGeometryType = {\n    Sphere: function(object, listener) {\n      listener.sphere();\n    },\n    Point: function(object, listener) {\n      object = object.coordinates;\n      listener.point(object[0], object[1], object[2]);\n    },\n    MultiPoint: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n    },\n    LineString: function(object, listener) {\n      d3_geo_streamLine(object.coordinates, listener, 0);\n    },\n    MultiLineString: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n    },\n    Polygon: function(object, listener) {\n      d3_geo_streamPolygon(object.coordinates, listener);\n    },\n    MultiPolygon: function(object, listener) {\n      var coordinates = object.coordinates, i = -1, n = coordinates.length;\n      while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n    },\n    GeometryCollection: function(object, listener) {\n      var geometries = object.geometries, i = -1, n = geometries.length;\n      while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n    }\n  };\n  function d3_geo_streamLine(coordinates, listener, closed) {\n    var i = -1, n = coordinates.length - closed, coordinate;\n    listener.lineStart();\n    while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n    listener.lineEnd();\n  }\n  function d3_geo_streamPolygon(coordinates, listener) {\n    var i = -1, n = coordinates.length;\n    listener.polygonStart();\n    while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n    listener.polygonEnd();\n  }\n  d3.geo.area = function(object) {\n    d3_geo_areaSum = 0;\n    d3.geo.stream(object, d3_geo_area);\n    return d3_geo_areaSum;\n  };\n  var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n  var d3_geo_area = {\n    sphere: function() {\n      d3_geo_areaSum += 4 * π;\n    },\n    point: d3_noop,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: function() {\n      d3_geo_areaRingSum.reset();\n      d3_geo_area.lineStart = d3_geo_areaRingStart;\n    },\n    polygonEnd: function() {\n      var area = 2 * d3_geo_areaRingSum;\n      d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n      d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n    }\n  };\n  function d3_geo_areaRingStart() {\n    var λ00, φ00, λ0, cosφ0, sinφ0;\n    d3_geo_area.point = function(λ, φ) {\n      d3_geo_area.point = nextPoint;\n      λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n      sinφ0 = Math.sin(φ);\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      φ = φ * d3_radians / 2 + π / 4;\n      var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n      d3_geo_areaRingSum.add(Math.atan2(v, u));\n      λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n    }\n    d3_geo_area.lineEnd = function() {\n      nextPoint(λ00, φ00);\n    };\n  }\n  function d3_geo_cartesian(spherical) {\n    var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n    return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n  }\n  function d3_geo_cartesianDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n  }\n  function d3_geo_cartesianCross(a, b) {\n    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] ];\n  }\n  function d3_geo_cartesianAdd(a, b) {\n    a[0] += b[0];\n    a[1] += b[1];\n    a[2] += b[2];\n  }\n  function d3_geo_cartesianScale(vector, k) {\n    return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n  }\n  function d3_geo_cartesianNormalize(d) {\n    var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n    d[0] /= l;\n    d[1] /= l;\n    d[2] /= l;\n  }\n  function d3_geo_spherical(cartesian) {\n    return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n  }\n  function d3_geo_sphericalEqual(a, b) {\n    return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n  }\n  d3.geo.bounds = function() {\n    var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n    var bound = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        bound.point = ringPoint;\n        bound.lineStart = ringStart;\n        bound.lineEnd = ringEnd;\n        dλSum = 0;\n        d3_geo_area.polygonStart();\n      },\n      polygonEnd: function() {\n        d3_geo_area.polygonEnd();\n        bound.point = point;\n        bound.lineStart = lineStart;\n        bound.lineEnd = lineEnd;\n        if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n        range[0] = λ0, range[1] = λ1;\n      }\n    };\n    function point(λ, φ) {\n      ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n      if (φ < φ0) φ0 = φ;\n      if (φ > φ1) φ1 = φ;\n    }\n    function linePoint(λ, φ) {\n      var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n      if (p0) {\n        var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n        d3_geo_cartesianNormalize(inflection);\n        inflection = d3_geo_spherical(inflection);\n        var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n        if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n          var φi = inflection[1] * d3_degrees;\n          if (φi > φ1) φ1 = φi;\n        } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n          var φi = -inflection[1] * d3_degrees;\n          if (φi < φ0) φ0 = φi;\n        } else {\n          if (φ < φ0) φ0 = φ;\n          if (φ > φ1) φ1 = φ;\n        }\n        if (antimeridian) {\n          if (λ < λ_) {\n            if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n          } else {\n            if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n          }\n        } else {\n          if (λ1 >= λ0) {\n            if (λ < λ0) λ0 = λ;\n            if (λ > λ1) λ1 = λ;\n          } else {\n            if (λ > λ_) {\n              if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n            } else {\n              if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n            }\n          }\n        }\n      } else {\n        point(λ, φ);\n      }\n      p0 = p, λ_ = λ;\n    }\n    function lineStart() {\n      bound.point = linePoint;\n    }\n    function lineEnd() {\n      range[0] = λ0, range[1] = λ1;\n      bound.point = point;\n      p0 = null;\n    }\n    function ringPoint(λ, φ) {\n      if (p0) {\n        var dλ = λ - λ_;\n        dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n      } else λ__ = λ, φ__ = φ;\n      d3_geo_area.point(λ, φ);\n      linePoint(λ, φ);\n    }\n    function ringStart() {\n      d3_geo_area.lineStart();\n    }\n    function ringEnd() {\n      ringPoint(λ__, φ__);\n      d3_geo_area.lineEnd();\n      if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n      range[0] = λ0, range[1] = λ1;\n      p0 = null;\n    }\n    function angle(λ0, λ1) {\n      return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n    }\n    function compareRanges(a, b) {\n      return a[0] - b[0];\n    }\n    function withinRange(x, range) {\n      return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n    }\n    return function(feature) {\n      φ1 = λ1 = -(λ0 = φ0 = Infinity);\n      ranges = [];\n      d3.geo.stream(feature, bound);\n      var n = ranges.length;\n      if (n) {\n        ranges.sort(compareRanges);\n        for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n          b = ranges[i];\n          if (withinRange(b[0], a) || withinRange(b[1], a)) {\n            if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n            if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n          } else {\n            merged.push(a = b);\n          }\n        }\n        var best = -Infinity, dλ;\n        for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n          b = merged[i];\n          if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n        }\n      }\n      ranges = range = null;\n      return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n    };\n  }();\n  d3.geo.centroid = function(object) {\n    d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n    d3.geo.stream(object, d3_geo_centroid);\n    var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n    if (m < ε2) {\n      x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n      if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n      m = x * x + y * y + z * z;\n      if (m < ε2) return [ NaN, NaN ];\n    }\n    return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n  };\n  var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n  var d3_geo_centroid = {\n    sphere: d3_noop,\n    point: d3_geo_centroidPoint,\n    lineStart: d3_geo_centroidLineStart,\n    lineEnd: d3_geo_centroidLineEnd,\n    polygonStart: function() {\n      d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n    }\n  };\n  function d3_geo_centroidPoint(λ, φ) {\n    λ *= d3_radians;\n    var cosφ = Math.cos(φ *= d3_radians);\n    d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n  }\n  function d3_geo_centroidPointXYZ(x, y, z) {\n    ++d3_geo_centroidW0;\n    d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n    d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n    d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n  }\n  function d3_geo_centroidLineStart() {\n    var x0, y0, z0;\n    d3_geo_centroid.point = function(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians);\n      x0 = cosφ * Math.cos(λ);\n      y0 = cosφ * Math.sin(λ);\n      z0 = Math.sin(φ);\n      d3_geo_centroid.point = nextPoint;\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n      d3_geo_centroidW1 += w;\n      d3_geo_centroidX1 += w * (x0 + (x0 = x));\n      d3_geo_centroidY1 += w * (y0 + (y0 = y));\n      d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    }\n  }\n  function d3_geo_centroidLineEnd() {\n    d3_geo_centroid.point = d3_geo_centroidPoint;\n  }\n  function d3_geo_centroidRingStart() {\n    var λ00, φ00, x0, y0, z0;\n    d3_geo_centroid.point = function(λ, φ) {\n      λ00 = λ, φ00 = φ;\n      d3_geo_centroid.point = nextPoint;\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians);\n      x0 = cosφ * Math.cos(λ);\n      y0 = cosφ * Math.sin(λ);\n      z0 = Math.sin(φ);\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    };\n    d3_geo_centroid.lineEnd = function() {\n      nextPoint(λ00, φ00);\n      d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n      d3_geo_centroid.point = d3_geo_centroidPoint;\n    };\n    function nextPoint(λ, φ) {\n      λ *= d3_radians;\n      var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n      d3_geo_centroidX2 += v * cx;\n      d3_geo_centroidY2 += v * cy;\n      d3_geo_centroidZ2 += v * cz;\n      d3_geo_centroidW1 += w;\n      d3_geo_centroidX1 += w * (x0 + (x0 = x));\n      d3_geo_centroidY1 += w * (y0 + (y0 = y));\n      d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n      d3_geo_centroidPointXYZ(x0, y0, z0);\n    }\n  }\n  function d3_geo_compose(a, b) {\n    function compose(x, y) {\n      return x = a(x, y), b(x[0], x[1]);\n    }\n    if (a.invert && b.invert) compose.invert = function(x, y) {\n      return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n    };\n    return compose;\n  }\n  function d3_true() {\n    return true;\n  }\n  function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n    var subject = [], clip = [];\n    segments.forEach(function(segment) {\n      if ((n = segment.length - 1) <= 0) return;\n      var n, p0 = segment[0], p1 = segment[n];\n      if (d3_geo_sphericalEqual(p0, p1)) {\n        listener.lineStart();\n        for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n        listener.lineEnd();\n        return;\n      }\n      var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n      a.o = b;\n      subject.push(a);\n      clip.push(b);\n      a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n      b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n      a.o = b;\n      subject.push(a);\n      clip.push(b);\n    });\n    clip.sort(compare);\n    d3_geo_clipPolygonLinkCircular(subject);\n    d3_geo_clipPolygonLinkCircular(clip);\n    if (!subject.length) return;\n    for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n      clip[i].e = entry = !entry;\n    }\n    var start = subject[0], points, point;\n    while (1) {\n      var current = start, isSubject = true;\n      while (current.v) if ((current = current.n) === start) return;\n      points = current.z;\n      listener.lineStart();\n      do {\n        current.v = current.o.v = true;\n        if (current.e) {\n          if (isSubject) {\n            for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n          } else {\n            interpolate(current.x, current.n.x, 1, listener);\n          }\n          current = current.n;\n        } else {\n          if (isSubject) {\n            points = current.p.z;\n            for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n          } else {\n            interpolate(current.x, current.p.x, -1, listener);\n          }\n          current = current.p;\n        }\n        current = current.o;\n        points = current.z;\n        isSubject = !isSubject;\n      } while (!current.v);\n      listener.lineEnd();\n    }\n  }\n  function d3_geo_clipPolygonLinkCircular(array) {\n    if (!(n = array.length)) return;\n    var n, i = 0, a = array[0], b;\n    while (++i < n) {\n      a.n = b = array[i];\n      b.p = a;\n      a = b;\n    }\n    a.n = b = array[0];\n    b.p = a;\n  }\n  function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n    this.x = point;\n    this.z = points;\n    this.o = other;\n    this.e = entry;\n    this.v = false;\n    this.n = this.p = null;\n  }\n  function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n    return function(rotate, listener) {\n      var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n      var clip = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          clip.point = pointRing;\n          clip.lineStart = ringStart;\n          clip.lineEnd = ringEnd;\n          segments = [];\n          polygon = [];\n        },\n        polygonEnd: function() {\n          clip.point = point;\n          clip.lineStart = lineStart;\n          clip.lineEnd = lineEnd;\n          segments = d3.merge(segments);\n          var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n          if (segments.length) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n          } else if (clipStartInside) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            listener.lineStart();\n            interpolate(null, null, 1, listener);\n            listener.lineEnd();\n          }\n          if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n          segments = polygon = null;\n        },\n        sphere: function() {\n          listener.polygonStart();\n          listener.lineStart();\n          interpolate(null, null, 1, listener);\n          listener.lineEnd();\n          listener.polygonEnd();\n        }\n      };\n      function point(λ, φ) {\n        var point = rotate(λ, φ);\n        if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n      }\n      function pointLine(λ, φ) {\n        var point = rotate(λ, φ);\n        line.point(point[0], point[1]);\n      }\n      function lineStart() {\n        clip.point = pointLine;\n        line.lineStart();\n      }\n      function lineEnd() {\n        clip.point = point;\n        line.lineEnd();\n      }\n      var segments;\n      var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n      function pointRing(λ, φ) {\n        ring.push([ λ, φ ]);\n        var point = rotate(λ, φ);\n        ringListener.point(point[0], point[1]);\n      }\n      function ringStart() {\n        ringListener.lineStart();\n        ring = [];\n      }\n      function ringEnd() {\n        pointRing(ring[0][0], ring[0][1]);\n        ringListener.lineEnd();\n        var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n        ring.pop();\n        polygon.push(ring);\n        ring = null;\n        if (!n) return;\n        if (clean & 1) {\n          segment = ringSegments[0];\n          var n = segment.length - 1, i = -1, point;\n          if (n > 0) {\n            if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n            listener.lineStart();\n            while (++i < n) listener.point((point = segment[i])[0], point[1]);\n            listener.lineEnd();\n          }\n          return;\n        }\n        if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n        segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n      }\n      return clip;\n    };\n  }\n  function d3_geo_clipSegmentLength1(segment) {\n    return segment.length > 1;\n  }\n  function d3_geo_clipBufferListener() {\n    var lines = [], line;\n    return {\n      lineStart: function() {\n        lines.push(line = []);\n      },\n      point: function(λ, φ) {\n        line.push([ λ, φ ]);\n      },\n      lineEnd: d3_noop,\n      buffer: function() {\n        var buffer = lines;\n        lines = [];\n        line = null;\n        return buffer;\n      },\n      rejoin: function() {\n        if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n      }\n    };\n  }\n  function d3_geo_clipSort(a, b) {\n    return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n  }\n  var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n  function d3_geo_clipAntimeridianLine(listener) {\n    var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n    return {\n      lineStart: function() {\n        listener.lineStart();\n        clean = 1;\n      },\n      point: function(λ1, φ1) {\n        var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n        if (abs(dλ - π) < ε) {\n          listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n          listener.point(sλ0, φ0);\n          listener.lineEnd();\n          listener.lineStart();\n          listener.point(sλ1, φ0);\n          listener.point(λ1, φ0);\n          clean = 0;\n        } else if (sλ0 !== sλ1 && dλ >= π) {\n          if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n          if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n          φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n          listener.point(sλ0, φ0);\n          listener.lineEnd();\n          listener.lineStart();\n          listener.point(sλ1, φ0);\n          clean = 0;\n        }\n        listener.point(λ0 = λ1, φ0 = φ1);\n        sλ0 = sλ1;\n      },\n      lineEnd: function() {\n        listener.lineEnd();\n        λ0 = φ0 = NaN;\n      },\n      clean: function() {\n        return 2 - clean;\n      }\n    };\n  }\n  function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n    var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n    return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n  }\n  function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n    var φ;\n    if (from == null) {\n      φ = direction * halfπ;\n      listener.point(-π, φ);\n      listener.point(0, φ);\n      listener.point(π, φ);\n      listener.point(π, 0);\n      listener.point(π, -φ);\n      listener.point(0, -φ);\n      listener.point(-π, -φ);\n      listener.point(-π, 0);\n      listener.point(-π, φ);\n    } else if (abs(from[0] - to[0]) > ε) {\n      var s = from[0] < to[0] ? π : -π;\n      φ = direction * s / 2;\n      listener.point(-s, φ);\n      listener.point(0, φ);\n      listener.point(s, φ);\n    } else {\n      listener.point(to[0], to[1]);\n    }\n  }\n  function d3_geo_pointInPolygon(point, polygon) {\n    var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n    d3_geo_areaRingSum.reset();\n    for (var i = 0, n = polygon.length; i < n; ++i) {\n      var ring = polygon[i], m = ring.length;\n      if (!m) continue;\n      var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n      while (true) {\n        if (j === m) j = 0;\n        point = ring[j];\n        var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n        d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n        polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n        if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n          var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n          d3_geo_cartesianNormalize(arc);\n          var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n          d3_geo_cartesianNormalize(intersection);\n          var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n          if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n            winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n          }\n        }\n        if (!j++) break;\n        λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n      }\n    }\n    return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n  }\n  function d3_geo_clipCircle(radius) {\n    var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n    return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n    function visible(λ, φ) {\n      return Math.cos(λ) * Math.cos(φ) > cr;\n    }\n    function clipLine(listener) {\n      var point0, c0, v0, v00, clean;\n      return {\n        lineStart: function() {\n          v00 = v0 = false;\n          clean = 1;\n        },\n        point: function(λ, φ) {\n          var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n          if (!point0 && (v00 = v0 = v)) listener.lineStart();\n          if (v !== v0) {\n            point2 = intersect(point0, point1);\n            if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n              point1[0] += ε;\n              point1[1] += ε;\n              v = visible(point1[0], point1[1]);\n            }\n          }\n          if (v !== v0) {\n            clean = 0;\n            if (v) {\n              listener.lineStart();\n              point2 = intersect(point1, point0);\n              listener.point(point2[0], point2[1]);\n            } else {\n              point2 = intersect(point0, point1);\n              listener.point(point2[0], point2[1]);\n              listener.lineEnd();\n            }\n            point0 = point2;\n          } else if (notHemisphere && point0 && smallRadius ^ v) {\n            var t;\n            if (!(c & c0) && (t = intersect(point1, point0, true))) {\n              clean = 0;\n              if (smallRadius) {\n                listener.lineStart();\n                listener.point(t[0][0], t[0][1]);\n                listener.point(t[1][0], t[1][1]);\n                listener.lineEnd();\n              } else {\n                listener.point(t[1][0], t[1][1]);\n                listener.lineEnd();\n                listener.lineStart();\n                listener.point(t[0][0], t[0][1]);\n              }\n            }\n          }\n          if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n            listener.point(point1[0], point1[1]);\n          }\n          point0 = point1, v0 = v, c0 = c;\n        },\n        lineEnd: function() {\n          if (v0) listener.lineEnd();\n          point0 = null;\n        },\n        clean: function() {\n          return clean | (v00 && v0) << 1;\n        }\n      };\n    }\n    function intersect(a, b, two) {\n      var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n      var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n      if (!determinant) return !two && a;\n      var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n      d3_geo_cartesianAdd(A, B);\n      var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n      if (t2 < 0) return;\n      var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n      d3_geo_cartesianAdd(q, A);\n      q = d3_geo_spherical(q);\n      if (!two) return q;\n      var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n      if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n      var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n      if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n      if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n        var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n        d3_geo_cartesianAdd(q1, A);\n        return [ q, d3_geo_spherical(q1) ];\n      }\n    }\n    function code(λ, φ) {\n      var r = smallRadius ? radius : π - radius, code = 0;\n      if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n      if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n      return code;\n    }\n  }\n  function d3_geom_clipLine(x0, y0, x1, y1) {\n    return function(line) {\n      var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n      r = x0 - ax;\n      if (!dx && r > 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dx > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = x1 - ax;\n      if (!dx && r < 0) return;\n      r /= dx;\n      if (dx < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dx > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      r = y0 - ay;\n      if (!dy && r > 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      } else if (dy > 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      }\n      r = y1 - ay;\n      if (!dy && r < 0) return;\n      r /= dy;\n      if (dy < 0) {\n        if (r > t1) return;\n        if (r > t0) t0 = r;\n      } else if (dy > 0) {\n        if (r < t0) return;\n        if (r < t1) t1 = r;\n      }\n      if (t0 > 0) line.a = {\n        x: ax + t0 * dx,\n        y: ay + t0 * dy\n      };\n      if (t1 < 1) line.b = {\n        x: ax + t1 * dx,\n        y: ay + t1 * dy\n      };\n      return line;\n    };\n  }\n  var d3_geo_clipExtentMAX = 1e9;\n  d3.geo.clipExtent = function() {\n    var x0, y0, x1, y1, stream, clip, clipExtent = {\n      stream: function(output) {\n        if (stream) stream.valid = false;\n        stream = clip(output);\n        stream.valid = true;\n        return stream;\n      },\n      extent: function(_) {\n        if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n        clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n        if (stream) stream.valid = false, stream = null;\n        return clipExtent;\n      }\n    };\n    return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n  };\n  function d3_geo_clipExtent(x0, y0, x1, y1) {\n    return function(listener) {\n      var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n      var clip = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          listener = bufferListener;\n          segments = [];\n          polygon = [];\n          clean = true;\n        },\n        polygonEnd: function() {\n          listener = listener_;\n          segments = d3.merge(segments);\n          var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n          if (inside || visible) {\n            listener.polygonStart();\n            if (inside) {\n              listener.lineStart();\n              interpolate(null, null, 1, listener);\n              listener.lineEnd();\n            }\n            if (visible) {\n              d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n            }\n            listener.polygonEnd();\n          }\n          segments = polygon = ring = null;\n        }\n      };\n      function insidePolygon(p) {\n        var wn = 0, n = polygon.length, y = p[1];\n        for (var i = 0; i < n; ++i) {\n          for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n            b = v[j];\n            if (a[1] <= y) {\n              if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n            } else {\n              if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n            }\n            a = b;\n          }\n        }\n        return wn !== 0;\n      }\n      function interpolate(from, to, direction, listener) {\n        var a = 0, a1 = 0;\n        if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n          do {\n            listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n          } while ((a = (a + direction + 4) % 4) !== a1);\n        } else {\n          listener.point(to[0], to[1]);\n        }\n      }\n      function pointVisible(x, y) {\n        return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n      }\n      function point(x, y) {\n        if (pointVisible(x, y)) listener.point(x, y);\n      }\n      var x__, y__, v__, x_, y_, v_, first, clean;\n      function lineStart() {\n        clip.point = linePoint;\n        if (polygon) polygon.push(ring = []);\n        first = true;\n        v_ = false;\n        x_ = y_ = NaN;\n      }\n      function lineEnd() {\n        if (segments) {\n          linePoint(x__, y__);\n          if (v__ && v_) bufferListener.rejoin();\n          segments.push(bufferListener.buffer());\n        }\n        clip.point = point;\n        if (v_) listener.lineEnd();\n      }\n      function linePoint(x, y) {\n        x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n        y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n        var v = pointVisible(x, y);\n        if (polygon) ring.push([ x, y ]);\n        if (first) {\n          x__ = x, y__ = y, v__ = v;\n          first = false;\n          if (v) {\n            listener.lineStart();\n            listener.point(x, y);\n          }\n        } else {\n          if (v && v_) listener.point(x, y); else {\n            var l = {\n              a: {\n                x: x_,\n                y: y_\n              },\n              b: {\n                x: x,\n                y: y\n              }\n            };\n            if (clipLine(l)) {\n              if (!v_) {\n                listener.lineStart();\n                listener.point(l.a.x, l.a.y);\n              }\n              listener.point(l.b.x, l.b.y);\n              if (!v) listener.lineEnd();\n              clean = false;\n            } else if (v) {\n              listener.lineStart();\n              listener.point(x, y);\n              clean = false;\n            }\n          }\n        }\n        x_ = x, y_ = y, v_ = v;\n      }\n      return clip;\n    };\n    function corner(p, direction) {\n      return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n    }\n    function compare(a, b) {\n      return comparePoints(a.x, b.x);\n    }\n    function comparePoints(a, b) {\n      var ca = corner(a, 1), cb = corner(b, 1);\n      return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n    }\n  }\n  function d3_geo_conic(projectAt) {\n    var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n    p.parallels = function(_) {\n      if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n      return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n    };\n    return p;\n  }\n  function d3_geo_conicEqualArea(φ0, φ1) {\n    var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n    function forward(λ, φ) {\n      var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n      return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = ρ0 - y;\n      return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n    };\n    return forward;\n  }\n  (d3.geo.conicEqualArea = function() {\n    return d3_geo_conic(d3_geo_conicEqualArea);\n  }).raw = d3_geo_conicEqualArea;\n  d3.geo.albers = function() {\n    return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n  };\n  d3.geo.albersUsa = function() {\n    var lower48 = d3.geo.albers();\n    var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n    var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n    var point, pointStream = {\n      point: function(x, y) {\n        point = [ x, y ];\n      }\n    }, lower48Point, alaskaPoint, hawaiiPoint;\n    function albersUsa(coordinates) {\n      var x = coordinates[0], y = coordinates[1];\n      point = null;\n      (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n      return point;\n    }\n    albersUsa.invert = function(coordinates) {\n      var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n      return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n    };\n    albersUsa.stream = function(stream) {\n      var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n      return {\n        point: function(x, y) {\n          lower48Stream.point(x, y);\n          alaskaStream.point(x, y);\n          hawaiiStream.point(x, y);\n        },\n        sphere: function() {\n          lower48Stream.sphere();\n          alaskaStream.sphere();\n          hawaiiStream.sphere();\n        },\n        lineStart: function() {\n          lower48Stream.lineStart();\n          alaskaStream.lineStart();\n          hawaiiStream.lineStart();\n        },\n        lineEnd: function() {\n          lower48Stream.lineEnd();\n          alaskaStream.lineEnd();\n          hawaiiStream.lineEnd();\n        },\n        polygonStart: function() {\n          lower48Stream.polygonStart();\n          alaskaStream.polygonStart();\n          hawaiiStream.polygonStart();\n        },\n        polygonEnd: function() {\n          lower48Stream.polygonEnd();\n          alaskaStream.polygonEnd();\n          hawaiiStream.polygonEnd();\n        }\n      };\n    };\n    albersUsa.precision = function(_) {\n      if (!arguments.length) return lower48.precision();\n      lower48.precision(_);\n      alaska.precision(_);\n      hawaii.precision(_);\n      return albersUsa;\n    };\n    albersUsa.scale = function(_) {\n      if (!arguments.length) return lower48.scale();\n      lower48.scale(_);\n      alaska.scale(_ * .35);\n      hawaii.scale(_);\n      return albersUsa.translate(lower48.translate());\n    };\n    albersUsa.translate = function(_) {\n      if (!arguments.length) return lower48.translate();\n      var k = lower48.scale(), x = +_[0], y = +_[1];\n      lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n      alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n      hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n      return albersUsa;\n    };\n    return albersUsa.scale(1070);\n  };\n  var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n    point: d3_noop,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: function() {\n      d3_geo_pathAreaPolygon = 0;\n      d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n      d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n    }\n  };\n  function d3_geo_pathAreaRingStart() {\n    var x00, y00, x0, y0;\n    d3_geo_pathArea.point = function(x, y) {\n      d3_geo_pathArea.point = nextPoint;\n      x00 = x0 = x, y00 = y0 = y;\n    };\n    function nextPoint(x, y) {\n      d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n      x0 = x, y0 = y;\n    }\n    d3_geo_pathArea.lineEnd = function() {\n      nextPoint(x00, y00);\n    };\n  }\n  var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n  var d3_geo_pathBounds = {\n    point: d3_geo_pathBoundsPoint,\n    lineStart: d3_noop,\n    lineEnd: d3_noop,\n    polygonStart: d3_noop,\n    polygonEnd: d3_noop\n  };\n  function d3_geo_pathBoundsPoint(x, y) {\n    if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n    if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n    if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n    if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n  }\n  function d3_geo_pathBuffer() {\n    var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n    var stream = {\n      point: point,\n      lineStart: function() {\n        stream.point = pointLineStart;\n      },\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        stream.lineEnd = lineEndPolygon;\n      },\n      polygonEnd: function() {\n        stream.lineEnd = lineEnd;\n        stream.point = point;\n      },\n      pointRadius: function(_) {\n        pointCircle = d3_geo_pathBufferCircle(_);\n        return stream;\n      },\n      result: function() {\n        if (buffer.length) {\n          var result = buffer.join(\"\");\n          buffer = [];\n          return result;\n        }\n      }\n    };\n    function point(x, y) {\n      buffer.push(\"M\", x, \",\", y, pointCircle);\n    }\n    function pointLineStart(x, y) {\n      buffer.push(\"M\", x, \",\", y);\n      stream.point = pointLine;\n    }\n    function pointLine(x, y) {\n      buffer.push(\"L\", x, \",\", y);\n    }\n    function lineEnd() {\n      stream.point = point;\n    }\n    function lineEndPolygon() {\n      buffer.push(\"Z\");\n    }\n    return stream;\n  }\n  function d3_geo_pathBufferCircle(radius) {\n    return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n  }\n  var d3_geo_pathCentroid = {\n    point: d3_geo_pathCentroidPoint,\n    lineStart: d3_geo_pathCentroidLineStart,\n    lineEnd: d3_geo_pathCentroidLineEnd,\n    polygonStart: function() {\n      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n    },\n    polygonEnd: function() {\n      d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n      d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n      d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n    }\n  };\n  function d3_geo_pathCentroidPoint(x, y) {\n    d3_geo_centroidX0 += x;\n    d3_geo_centroidY0 += y;\n    ++d3_geo_centroidZ0;\n  }\n  function d3_geo_pathCentroidLineStart() {\n    var x0, y0;\n    d3_geo_pathCentroid.point = function(x, y) {\n      d3_geo_pathCentroid.point = nextPoint;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    };\n    function nextPoint(x, y) {\n      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n      d3_geo_centroidX1 += z * (x0 + x) / 2;\n      d3_geo_centroidY1 += z * (y0 + y) / 2;\n      d3_geo_centroidZ1 += z;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    }\n  }\n  function d3_geo_pathCentroidLineEnd() {\n    d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n  }\n  function d3_geo_pathCentroidRingStart() {\n    var x00, y00, x0, y0;\n    d3_geo_pathCentroid.point = function(x, y) {\n      d3_geo_pathCentroid.point = nextPoint;\n      d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n    };\n    function nextPoint(x, y) {\n      var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n      d3_geo_centroidX1 += z * (x0 + x) / 2;\n      d3_geo_centroidY1 += z * (y0 + y) / 2;\n      d3_geo_centroidZ1 += z;\n      z = y0 * x - x0 * y;\n      d3_geo_centroidX2 += z * (x0 + x);\n      d3_geo_centroidY2 += z * (y0 + y);\n      d3_geo_centroidZ2 += z * 3;\n      d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n    }\n    d3_geo_pathCentroid.lineEnd = function() {\n      nextPoint(x00, y00);\n    };\n  }\n  function d3_geo_pathContext(context) {\n    var pointRadius = 4.5;\n    var stream = {\n      point: point,\n      lineStart: function() {\n        stream.point = pointLineStart;\n      },\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        stream.lineEnd = lineEndPolygon;\n      },\n      polygonEnd: function() {\n        stream.lineEnd = lineEnd;\n        stream.point = point;\n      },\n      pointRadius: function(_) {\n        pointRadius = _;\n        return stream;\n      },\n      result: d3_noop\n    };\n    function point(x, y) {\n      context.moveTo(x + pointRadius, y);\n      context.arc(x, y, pointRadius, 0, τ);\n    }\n    function pointLineStart(x, y) {\n      context.moveTo(x, y);\n      stream.point = pointLine;\n    }\n    function pointLine(x, y) {\n      context.lineTo(x, y);\n    }\n    function lineEnd() {\n      stream.point = point;\n    }\n    function lineEndPolygon() {\n      context.closePath();\n    }\n    return stream;\n  }\n  function d3_geo_resample(project) {\n    var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n    function resample(stream) {\n      return (maxDepth ? resampleRecursive : resampleNone)(stream);\n    }\n    function resampleNone(stream) {\n      return d3_geo_transformPoint(stream, function(x, y) {\n        x = project(x, y);\n        stream.point(x[0], x[1]);\n      });\n    }\n    function resampleRecursive(stream) {\n      var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n      var resample = {\n        point: point,\n        lineStart: lineStart,\n        lineEnd: lineEnd,\n        polygonStart: function() {\n          stream.polygonStart();\n          resample.lineStart = ringStart;\n        },\n        polygonEnd: function() {\n          stream.polygonEnd();\n          resample.lineStart = lineStart;\n        }\n      };\n      function point(x, y) {\n        x = project(x, y);\n        stream.point(x[0], x[1]);\n      }\n      function lineStart() {\n        x0 = NaN;\n        resample.point = linePoint;\n        stream.lineStart();\n      }\n      function linePoint(λ, φ) {\n        var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n        resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n        stream.point(x0, y0);\n      }\n      function lineEnd() {\n        resample.point = point;\n        stream.lineEnd();\n      }\n      function ringStart() {\n        lineStart();\n        resample.point = ringPoint;\n        resample.lineEnd = ringEnd;\n      }\n      function ringPoint(λ, φ) {\n        linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n        resample.point = linePoint;\n      }\n      function ringEnd() {\n        resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n        resample.lineEnd = lineEnd;\n        lineEnd();\n      }\n      return resample;\n    }\n    function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n      var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n      if (d2 > 4 * δ2 && depth--) {\n        var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n        if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n          resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n          stream.point(x2, y2);\n          resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n        }\n      }\n    }\n    resample.precision = function(_) {\n      if (!arguments.length) return Math.sqrt(δ2);\n      maxDepth = (δ2 = _ * _) > 0 && 16;\n      return resample;\n    };\n    return resample;\n  }\n  d3.geo.path = function() {\n    var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n    function path(object) {\n      if (object) {\n        if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n        if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n        d3.geo.stream(object, cacheStream);\n      }\n      return contextStream.result();\n    }\n    path.area = function(object) {\n      d3_geo_pathAreaSum = 0;\n      d3.geo.stream(object, projectStream(d3_geo_pathArea));\n      return d3_geo_pathAreaSum;\n    };\n    path.centroid = function(object) {\n      d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n      d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n      return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n    };\n    path.bounds = function(object) {\n      d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n      d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n      return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n    };\n    path.projection = function(_) {\n      if (!arguments.length) return projection;\n      projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n      return reset();\n    };\n    path.context = function(_) {\n      if (!arguments.length) return context;\n      contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n      if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n      return reset();\n    };\n    path.pointRadius = function(_) {\n      if (!arguments.length) return pointRadius;\n      pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n      return path;\n    };\n    function reset() {\n      cacheStream = null;\n      return path;\n    }\n    return path.projection(d3.geo.albersUsa()).context(null);\n  };\n  function d3_geo_pathProjectStream(project) {\n    var resample = d3_geo_resample(function(x, y) {\n      return project([ x * d3_degrees, y * d3_degrees ]);\n    });\n    return function(stream) {\n      return d3_geo_projectionRadians(resample(stream));\n    };\n  }\n  d3.geo.transform = function(methods) {\n    return {\n      stream: function(stream) {\n        var transform = new d3_geo_transform(stream);\n        for (var k in methods) transform[k] = methods[k];\n        return transform;\n      }\n    };\n  };\n  function d3_geo_transform(stream) {\n    this.stream = stream;\n  }\n  d3_geo_transform.prototype = {\n    point: function(x, y) {\n      this.stream.point(x, y);\n    },\n    sphere: function() {\n      this.stream.sphere();\n    },\n    lineStart: function() {\n      this.stream.lineStart();\n    },\n    lineEnd: function() {\n      this.stream.lineEnd();\n    },\n    polygonStart: function() {\n      this.stream.polygonStart();\n    },\n    polygonEnd: function() {\n      this.stream.polygonEnd();\n    }\n  };\n  function d3_geo_transformPoint(stream, point) {\n    return {\n      point: point,\n      sphere: function() {\n        stream.sphere();\n      },\n      lineStart: function() {\n        stream.lineStart();\n      },\n      lineEnd: function() {\n        stream.lineEnd();\n      },\n      polygonStart: function() {\n        stream.polygonStart();\n      },\n      polygonEnd: function() {\n        stream.polygonEnd();\n      }\n    };\n  }\n  d3.geo.projection = d3_geo_projection;\n  d3.geo.projectionMutator = d3_geo_projectionMutator;\n  function d3_geo_projection(project) {\n    return d3_geo_projectionMutator(function() {\n      return project;\n    })();\n  }\n  function d3_geo_projectionMutator(projectAt) {\n    var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n      x = project(x, y);\n      return [ x[0] * k + δx, δy - x[1] * k ];\n    }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n    function projection(point) {\n      point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n      return [ point[0] * k + δx, δy - point[1] * k ];\n    }\n    function invert(point) {\n      point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n      return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n    }\n    projection.stream = function(output) {\n      if (stream) stream.valid = false;\n      stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n      stream.valid = true;\n      return stream;\n    };\n    projection.clipAngle = function(_) {\n      if (!arguments.length) return clipAngle;\n      preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n      return invalidate();\n    };\n    projection.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent;\n      clipExtent = _;\n      postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n      return invalidate();\n    };\n    projection.scale = function(_) {\n      if (!arguments.length) return k;\n      k = +_;\n      return reset();\n    };\n    projection.translate = function(_) {\n      if (!arguments.length) return [ x, y ];\n      x = +_[0];\n      y = +_[1];\n      return reset();\n    };\n    projection.center = function(_) {\n      if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n      λ = _[0] % 360 * d3_radians;\n      φ = _[1] % 360 * d3_radians;\n      return reset();\n    };\n    projection.rotate = function(_) {\n      if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n      δλ = _[0] % 360 * d3_radians;\n      δφ = _[1] % 360 * d3_radians;\n      δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n      return reset();\n    };\n    d3.rebind(projection, projectResample, \"precision\");\n    function reset() {\n      projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n      var center = project(λ, φ);\n      δx = x - center[0] * k;\n      δy = y + center[1] * k;\n      return invalidate();\n    }\n    function invalidate() {\n      if (stream) stream.valid = false, stream = null;\n      return projection;\n    }\n    return function() {\n      project = projectAt.apply(this, arguments);\n      projection.invert = project.invert && invert;\n      return reset();\n    };\n  }\n  function d3_geo_projectionRadians(stream) {\n    return d3_geo_transformPoint(stream, function(x, y) {\n      stream.point(x * d3_radians, y * d3_radians);\n    });\n  }\n  function d3_geo_equirectangular(λ, φ) {\n    return [ λ, φ ];\n  }\n  (d3.geo.equirectangular = function() {\n    return d3_geo_projection(d3_geo_equirectangular);\n  }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n  d3.geo.rotation = function(rotate) {\n    rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n    function forward(coordinates) {\n      coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n    }\n    forward.invert = function(coordinates) {\n      coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n      return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n    };\n    return forward;\n  };\n  function d3_geo_identityRotation(λ, φ) {\n    return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n  }\n  d3_geo_identityRotation.invert = d3_geo_equirectangular;\n  function d3_geo_rotation(δλ, δφ, δγ) {\n    return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n  }\n  function d3_geo_forwardRotationλ(δλ) {\n    return function(λ, φ) {\n      return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n    };\n  }\n  function d3_geo_rotationλ(δλ) {\n    var rotation = d3_geo_forwardRotationλ(δλ);\n    rotation.invert = d3_geo_forwardRotationλ(-δλ);\n    return rotation;\n  }\n  function d3_geo_rotationφγ(δφ, δγ) {\n    var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n    function rotation(λ, φ) {\n      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n      return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n    }\n    rotation.invert = function(λ, φ) {\n      var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n      return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n    };\n    return rotation;\n  }\n  d3.geo.circle = function() {\n    var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n    function circle() {\n      var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n      interpolate(null, null, 1, {\n        point: function(x, y) {\n          ring.push(x = rotate(x, y));\n          x[0] *= d3_degrees, x[1] *= d3_degrees;\n        }\n      });\n      return {\n        type: \"Polygon\",\n        coordinates: [ ring ]\n      };\n    }\n    circle.origin = function(x) {\n      if (!arguments.length) return origin;\n      origin = x;\n      return circle;\n    };\n    circle.angle = function(x) {\n      if (!arguments.length) return angle;\n      interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n      return circle;\n    };\n    circle.precision = function(_) {\n      if (!arguments.length) return precision;\n      interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n      return circle;\n    };\n    return circle.angle(90);\n  };\n  function d3_geo_circleInterpolate(radius, precision) {\n    var cr = Math.cos(radius), sr = Math.sin(radius);\n    return function(from, to, direction, listener) {\n      var step = direction * precision;\n      if (from != null) {\n        from = d3_geo_circleAngle(cr, from);\n        to = d3_geo_circleAngle(cr, to);\n        if (direction > 0 ? from < to : from > to) from += direction * τ;\n      } else {\n        from = radius + direction * τ;\n        to = radius - .5 * step;\n      }\n      for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n        listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n      }\n    };\n  }\n  function d3_geo_circleAngle(cr, point) {\n    var a = d3_geo_cartesian(point);\n    a[0] -= cr;\n    d3_geo_cartesianNormalize(a);\n    var angle = d3_acos(-a[1]);\n    return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n  }\n  d3.geo.distance = function(a, b) {\n    var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n    return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n  };\n  d3.geo.graticule = function() {\n    var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n    function graticule() {\n      return {\n        type: \"MultiLineString\",\n        coordinates: lines()\n      };\n    }\n    function lines() {\n      return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n        return abs(x % DX) > ε;\n      }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n        return abs(y % DY) > ε;\n      }).map(y));\n    }\n    graticule.lines = function() {\n      return lines().map(function(coordinates) {\n        return {\n          type: \"LineString\",\n          coordinates: coordinates\n        };\n      });\n    };\n    graticule.outline = function() {\n      return {\n        type: \"Polygon\",\n        coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n      };\n    };\n    graticule.extent = function(_) {\n      if (!arguments.length) return graticule.minorExtent();\n      return graticule.majorExtent(_).minorExtent(_);\n    };\n    graticule.majorExtent = function(_) {\n      if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n      X0 = +_[0][0], X1 = +_[1][0];\n      Y0 = +_[0][1], Y1 = +_[1][1];\n      if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n      if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n      return graticule.precision(precision);\n    };\n    graticule.minorExtent = function(_) {\n      if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n      x0 = +_[0][0], x1 = +_[1][0];\n      y0 = +_[0][1], y1 = +_[1][1];\n      if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n      if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n      return graticule.precision(precision);\n    };\n    graticule.step = function(_) {\n      if (!arguments.length) return graticule.minorStep();\n      return graticule.majorStep(_).minorStep(_);\n    };\n    graticule.majorStep = function(_) {\n      if (!arguments.length) return [ DX, DY ];\n      DX = +_[0], DY = +_[1];\n      return graticule;\n    };\n    graticule.minorStep = function(_) {\n      if (!arguments.length) return [ dx, dy ];\n      dx = +_[0], dy = +_[1];\n      return graticule;\n    };\n    graticule.precision = function(_) {\n      if (!arguments.length) return precision;\n      precision = +_;\n      x = d3_geo_graticuleX(y0, y1, 90);\n      y = d3_geo_graticuleY(x0, x1, precision);\n      X = d3_geo_graticuleX(Y0, Y1, 90);\n      Y = d3_geo_graticuleY(X0, X1, precision);\n      return graticule;\n    };\n    return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n  };\n  function d3_geo_graticuleX(y0, y1, dy) {\n    var y = d3.range(y0, y1 - ε, dy).concat(y1);\n    return function(x) {\n      return y.map(function(y) {\n        return [ x, y ];\n      });\n    };\n  }\n  function d3_geo_graticuleY(x0, x1, dx) {\n    var x = d3.range(x0, x1 - ε, dx).concat(x1);\n    return function(y) {\n      return x.map(function(x) {\n        return [ x, y ];\n      });\n    };\n  }\n  function d3_source(d) {\n    return d.source;\n  }\n  function d3_target(d) {\n    return d.target;\n  }\n  d3.geo.greatArc = function() {\n    var source = d3_source, source_, target = d3_target, target_;\n    function greatArc() {\n      return {\n        type: \"LineString\",\n        coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n      };\n    }\n    greatArc.distance = function() {\n      return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n    };\n    greatArc.source = function(_) {\n      if (!arguments.length) return source;\n      source = _, source_ = typeof _ === \"function\" ? null : _;\n      return greatArc;\n    };\n    greatArc.target = function(_) {\n      if (!arguments.length) return target;\n      target = _, target_ = typeof _ === \"function\" ? null : _;\n      return greatArc;\n    };\n    greatArc.precision = function() {\n      return arguments.length ? greatArc : 0;\n    };\n    return greatArc;\n  };\n  d3.geo.interpolate = function(source, target) {\n    return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n  };\n  function d3_geo_interpolate(x0, y0, x1, y1) {\n    var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n    var interpolate = d ? function(t) {\n      var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n      return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n    } : function() {\n      return [ x0 * d3_degrees, y0 * d3_degrees ];\n    };\n    interpolate.distance = d;\n    return interpolate;\n  }\n  d3.geo.length = function(object) {\n    d3_geo_lengthSum = 0;\n    d3.geo.stream(object, d3_geo_length);\n    return d3_geo_lengthSum;\n  };\n  var d3_geo_lengthSum;\n  var d3_geo_length = {\n    sphere: d3_noop,\n    point: d3_noop,\n    lineStart: d3_geo_lengthLineStart,\n    lineEnd: d3_noop,\n    polygonStart: d3_noop,\n    polygonEnd: d3_noop\n  };\n  function d3_geo_lengthLineStart() {\n    var λ0, sinφ0, cosφ0;\n    d3_geo_length.point = function(λ, φ) {\n      λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n      d3_geo_length.point = nextPoint;\n    };\n    d3_geo_length.lineEnd = function() {\n      d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n    };\n    function nextPoint(λ, φ) {\n      var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n      d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n      λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n    }\n  }\n  function d3_geo_azimuthal(scale, angle) {\n    function azimuthal(λ, φ) {\n      var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n      return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n    }\n    azimuthal.invert = function(x, y) {\n      var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n      return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n    };\n    return azimuthal;\n  }\n  var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n    return Math.sqrt(2 / (1 + cosλcosφ));\n  }, function(ρ) {\n    return 2 * Math.asin(ρ / 2);\n  });\n  (d3.geo.azimuthalEqualArea = function() {\n    return d3_geo_projection(d3_geo_azimuthalEqualArea);\n  }).raw = d3_geo_azimuthalEqualArea;\n  var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n    var c = Math.acos(cosλcosφ);\n    return c && c / Math.sin(c);\n  }, d3_identity);\n  (d3.geo.azimuthalEquidistant = function() {\n    return d3_geo_projection(d3_geo_azimuthalEquidistant);\n  }).raw = d3_geo_azimuthalEquidistant;\n  function d3_geo_conicConformal(φ0, φ1) {\n    var cosφ0 = Math.cos(φ0), t = function(φ) {\n      return Math.tan(π / 4 + φ / 2);\n    }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n    if (!n) return d3_geo_mercator;\n    function forward(λ, φ) {\n      if (F > 0) {\n        if (φ < -halfπ + ε) φ = -halfπ + ε;\n      } else {\n        if (φ > halfπ - ε) φ = halfπ - ε;\n      }\n      var ρ = F / Math.pow(t(φ), n);\n      return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n      return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n    };\n    return forward;\n  }\n  (d3.geo.conicConformal = function() {\n    return d3_geo_conic(d3_geo_conicConformal);\n  }).raw = d3_geo_conicConformal;\n  function d3_geo_conicEquidistant(φ0, φ1) {\n    var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n    if (abs(n) < ε) return d3_geo_equirectangular;\n    function forward(λ, φ) {\n      var ρ = G - φ;\n      return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n    }\n    forward.invert = function(x, y) {\n      var ρ0_y = G - y;\n      return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n    };\n    return forward;\n  }\n  (d3.geo.conicEquidistant = function() {\n    return d3_geo_conic(d3_geo_conicEquidistant);\n  }).raw = d3_geo_conicEquidistant;\n  var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n    return 1 / cosλcosφ;\n  }, Math.atan);\n  (d3.geo.gnomonic = function() {\n    return d3_geo_projection(d3_geo_gnomonic);\n  }).raw = d3_geo_gnomonic;\n  function d3_geo_mercator(λ, φ) {\n    return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n  }\n  d3_geo_mercator.invert = function(x, y) {\n    return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n  };\n  function d3_geo_mercatorProjection(project) {\n    var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n    m.scale = function() {\n      var v = scale.apply(m, arguments);\n      return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n    };\n    m.translate = function() {\n      var v = translate.apply(m, arguments);\n      return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n    };\n    m.clipExtent = function(_) {\n      var v = clipExtent.apply(m, arguments);\n      if (v === m) {\n        if (clipAuto = _ == null) {\n          var k = π * scale(), t = translate();\n          clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n        }\n      } else if (clipAuto) {\n        v = null;\n      }\n      return v;\n    };\n    return m.clipExtent(null);\n  }\n  (d3.geo.mercator = function() {\n    return d3_geo_mercatorProjection(d3_geo_mercator);\n  }).raw = d3_geo_mercator;\n  var d3_geo_orthographic = d3_geo_azimuthal(function() {\n    return 1;\n  }, Math.asin);\n  (d3.geo.orthographic = function() {\n    return d3_geo_projection(d3_geo_orthographic);\n  }).raw = d3_geo_orthographic;\n  var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n    return 1 / (1 + cosλcosφ);\n  }, function(ρ) {\n    return 2 * Math.atan(ρ);\n  });\n  (d3.geo.stereographic = function() {\n    return d3_geo_projection(d3_geo_stereographic);\n  }).raw = d3_geo_stereographic;\n  function d3_geo_transverseMercator(λ, φ) {\n    return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n  }\n  d3_geo_transverseMercator.invert = function(x, y) {\n    return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n  };\n  (d3.geo.transverseMercator = function() {\n    var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n    projection.center = function(_) {\n      return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n    };\n    projection.rotate = function(_) {\n      return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n      [ _[0], _[1], _[2] - 90 ]);\n    };\n    return rotate([ 0, 0, 90 ]);\n  }).raw = d3_geo_transverseMercator;\n  d3.geom = {};\n  function d3_geom_pointX(d) {\n    return d[0];\n  }\n  function d3_geom_pointY(d) {\n    return d[1];\n  }\n  d3.geom.hull = function(vertices) {\n    var x = d3_geom_pointX, y = d3_geom_pointY;\n    if (arguments.length) return hull(vertices);\n    function hull(data) {\n      if (data.length < 3) return [];\n      var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n      for (i = 0; i < n; i++) {\n        points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n      }\n      points.sort(d3_geom_hullOrder);\n      for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n      var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n      var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n      for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n      for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n      return polygon;\n    }\n    hull.x = function(_) {\n      return arguments.length ? (x = _, hull) : x;\n    };\n    hull.y = function(_) {\n      return arguments.length ? (y = _, hull) : y;\n    };\n    return hull;\n  };\n  function d3_geom_hullUpper(points) {\n    var n = points.length, hull = [ 0, 1 ], hs = 2;\n    for (var i = 2; i < n; i++) {\n      while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n      hull[hs++] = i;\n    }\n    return hull.slice(0, hs);\n  }\n  function d3_geom_hullOrder(a, b) {\n    return a[0] - b[0] || a[1] - b[1];\n  }\n  d3.geom.polygon = function(coordinates) {\n    d3_subclass(coordinates, d3_geom_polygonPrototype);\n    return coordinates;\n  };\n  var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n  d3_geom_polygonPrototype.area = function() {\n    var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      area += a[1] * b[0] - a[0] * b[1];\n    }\n    return area * .5;\n  };\n  d3_geom_polygonPrototype.centroid = function(k) {\n    var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n    if (!arguments.length) k = -1 / (6 * this.area());\n    while (++i < n) {\n      a = b;\n      b = this[i];\n      c = a[0] * b[1] - b[0] * a[1];\n      x += (a[0] + b[0]) * c;\n      y += (a[1] + b[1]) * c;\n    }\n    return [ x * k, y * k ];\n  };\n  d3_geom_polygonPrototype.clip = function(subject) {\n    var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n    while (++i < n) {\n      input = subject.slice();\n      subject.length = 0;\n      b = this[i];\n      c = input[(m = input.length - closed) - 1];\n      j = -1;\n      while (++j < m) {\n        d = input[j];\n        if (d3_geom_polygonInside(d, a, b)) {\n          if (!d3_geom_polygonInside(c, a, b)) {\n            subject.push(d3_geom_polygonIntersect(c, d, a, b));\n          }\n          subject.push(d);\n        } else if (d3_geom_polygonInside(c, a, b)) {\n          subject.push(d3_geom_polygonIntersect(c, d, a, b));\n        }\n        c = d;\n      }\n      if (closed) subject.push(subject[0]);\n      a = b;\n    }\n    return subject;\n  };\n  function d3_geom_polygonInside(p, a, b) {\n    return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n  }\n  function d3_geom_polygonIntersect(c, d, a, b) {\n    var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n    return [ x1 + ua * x21, y1 + ua * y21 ];\n  }\n  function d3_geom_polygonClosed(coordinates) {\n    var a = coordinates[0], b = coordinates[coordinates.length - 1];\n    return !(a[0] - b[0] || a[1] - b[1]);\n  }\n  var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n  function d3_geom_voronoiBeach() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.edge = this.site = this.circle = null;\n  }\n  function d3_geom_voronoiCreateBeach(site) {\n    var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n    beach.site = site;\n    return beach;\n  }\n  function d3_geom_voronoiDetachBeach(beach) {\n    d3_geom_voronoiDetachCircle(beach);\n    d3_geom_voronoiBeaches.remove(beach);\n    d3_geom_voronoiBeachPool.push(beach);\n    d3_geom_voronoiRedBlackNode(beach);\n  }\n  function d3_geom_voronoiRemoveBeach(beach) {\n    var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n      x: x,\n      y: y\n    }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n    d3_geom_voronoiDetachBeach(beach);\n    var lArc = previous;\n    while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n      previous = lArc.P;\n      disappearing.unshift(lArc);\n      d3_geom_voronoiDetachBeach(lArc);\n      lArc = previous;\n    }\n    disappearing.unshift(lArc);\n    d3_geom_voronoiDetachCircle(lArc);\n    var rArc = next;\n    while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n      next = rArc.N;\n      disappearing.push(rArc);\n      d3_geom_voronoiDetachBeach(rArc);\n      rArc = next;\n    }\n    disappearing.push(rArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var nArcs = disappearing.length, iArc;\n    for (iArc = 1; iArc < nArcs; ++iArc) {\n      rArc = disappearing[iArc];\n      lArc = disappearing[iArc - 1];\n      d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n    }\n    lArc = disappearing[0];\n    rArc = disappearing[nArcs - 1];\n    rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiAddBeach(site) {\n    var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n    while (node) {\n      dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n      if (dxl > ε) node = node.L; else {\n        dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n        if (dxr > ε) {\n          if (!node.R) {\n            lArc = node;\n            break;\n          }\n          node = node.R;\n        } else {\n          if (dxl > -ε) {\n            lArc = node.P;\n            rArc = node;\n          } else if (dxr > -ε) {\n            lArc = node;\n            rArc = node.N;\n          } else {\n            lArc = rArc = node;\n          }\n          break;\n        }\n      }\n    }\n    var newArc = d3_geom_voronoiCreateBeach(site);\n    d3_geom_voronoiBeaches.insert(lArc, newArc);\n    if (!lArc && !rArc) return;\n    if (lArc === rArc) {\n      d3_geom_voronoiDetachCircle(lArc);\n      rArc = d3_geom_voronoiCreateBeach(lArc.site);\n      d3_geom_voronoiBeaches.insert(newArc, rArc);\n      newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      d3_geom_voronoiAttachCircle(lArc);\n      d3_geom_voronoiAttachCircle(rArc);\n      return;\n    }\n    if (!rArc) {\n      newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n      return;\n    }\n    d3_geom_voronoiDetachCircle(lArc);\n    d3_geom_voronoiDetachCircle(rArc);\n    var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n      x: (cy * hb - by * hc) / d + ax,\n      y: (bx * hc - cx * hb) / d + ay\n    };\n    d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n    newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n    rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n    d3_geom_voronoiAttachCircle(lArc);\n    d3_geom_voronoiAttachCircle(rArc);\n  }\n  function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n    var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n    if (!pby2) return rfocx;\n    var lArc = arc.P;\n    if (!lArc) return -Infinity;\n    site = lArc.site;\n    var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n    if (!plby2) return lfocx;\n    var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n    if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n    return (rfocx + lfocx) / 2;\n  }\n  function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n    var rArc = arc.N;\n    if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n    var site = arc.site;\n    return site.y === directrix ? site.x : Infinity;\n  }\n  function d3_geom_voronoiCell(site) {\n    this.site = site;\n    this.edges = [];\n  }\n  d3_geom_voronoiCell.prototype.prepare = function() {\n    var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n    while (iHalfEdge--) {\n      edge = halfEdges[iHalfEdge].edge;\n      if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n    }\n    halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n    return halfEdges.length;\n  };\n  function d3_geom_voronoiCloseCells(extent) {\n    var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n    while (iCell--) {\n      cell = cells[iCell];\n      if (!cell || !cell.prepare()) continue;\n      halfEdges = cell.edges;\n      nHalfEdges = halfEdges.length;\n      iHalfEdge = 0;\n      while (iHalfEdge < nHalfEdges) {\n        end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n        start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n        if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n          halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n            x: x0,\n            y: abs(x2 - x0) < ε ? y2 : y1\n          } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n            x: abs(y2 - y1) < ε ? x2 : x1,\n            y: y1\n          } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n            x: x1,\n            y: abs(x2 - x1) < ε ? y2 : y0\n          } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n            x: abs(y2 - y0) < ε ? x2 : x0,\n            y: y0\n          } : null), cell.site, null));\n          ++nHalfEdges;\n        }\n      }\n    }\n  }\n  function d3_geom_voronoiHalfEdgeOrder(a, b) {\n    return b.angle - a.angle;\n  }\n  function d3_geom_voronoiCircle() {\n    d3_geom_voronoiRedBlackNode(this);\n    this.x = this.y = this.arc = this.site = this.cy = null;\n  }\n  function d3_geom_voronoiAttachCircle(arc) {\n    var lArc = arc.P, rArc = arc.N;\n    if (!lArc || !rArc) return;\n    var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n    if (lSite === rSite) return;\n    var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n    var d = 2 * (ax * cy - ay * cx);\n    if (d >= -ε2) return;\n    var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n    var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n    circle.arc = arc;\n    circle.site = cSite;\n    circle.x = x + bx;\n    circle.y = cy + Math.sqrt(x * x + y * y);\n    circle.cy = cy;\n    arc.circle = circle;\n    var before = null, node = d3_geom_voronoiCircles._;\n    while (node) {\n      if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n        if (node.L) node = node.L; else {\n          before = node.P;\n          break;\n        }\n      } else {\n        if (node.R) node = node.R; else {\n          before = node;\n          break;\n        }\n      }\n    }\n    d3_geom_voronoiCircles.insert(before, circle);\n    if (!before) d3_geom_voronoiFirstCircle = circle;\n  }\n  function d3_geom_voronoiDetachCircle(arc) {\n    var circle = arc.circle;\n    if (circle) {\n      if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n      d3_geom_voronoiCircles.remove(circle);\n      d3_geom_voronoiCirclePool.push(circle);\n      d3_geom_voronoiRedBlackNode(circle);\n      arc.circle = null;\n    }\n  }\n  function d3_geom_voronoiClipEdges(extent) {\n    var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n    while (i--) {\n      e = edges[i];\n      if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n        e.a = e.b = null;\n        edges.splice(i, 1);\n      }\n    }\n  }\n  function d3_geom_voronoiConnectEdge(edge, extent) {\n    var vb = edge.b;\n    if (vb) return true;\n    var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n    if (ry === ly) {\n      if (fx < x0 || fx >= x1) return;\n      if (lx > rx) {\n        if (!va) va = {\n          x: fx,\n          y: y0\n        }; else if (va.y >= y1) return;\n        vb = {\n          x: fx,\n          y: y1\n        };\n      } else {\n        if (!va) va = {\n          x: fx,\n          y: y1\n        }; else if (va.y < y0) return;\n        vb = {\n          x: fx,\n          y: y0\n        };\n      }\n    } else {\n      fm = (lx - rx) / (ry - ly);\n      fb = fy - fm * fx;\n      if (fm < -1 || fm > 1) {\n        if (lx > rx) {\n          if (!va) va = {\n            x: (y0 - fb) / fm,\n            y: y0\n          }; else if (va.y >= y1) return;\n          vb = {\n            x: (y1 - fb) / fm,\n            y: y1\n          };\n        } else {\n          if (!va) va = {\n            x: (y1 - fb) / fm,\n            y: y1\n          }; else if (va.y < y0) return;\n          vb = {\n            x: (y0 - fb) / fm,\n            y: y0\n          };\n        }\n      } else {\n        if (ly < ry) {\n          if (!va) va = {\n            x: x0,\n            y: fm * x0 + fb\n          }; else if (va.x >= x1) return;\n          vb = {\n            x: x1,\n            y: fm * x1 + fb\n          };\n        } else {\n          if (!va) va = {\n            x: x1,\n            y: fm * x1 + fb\n          }; else if (va.x < x0) return;\n          vb = {\n            x: x0,\n            y: fm * x0 + fb\n          };\n        }\n      }\n    }\n    edge.a = va;\n    edge.b = vb;\n    return true;\n  }\n  function d3_geom_voronoiEdge(lSite, rSite) {\n    this.l = lSite;\n    this.r = rSite;\n    this.a = this.b = null;\n  }\n  function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, rSite);\n    d3_geom_voronoiEdges.push(edge);\n    if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n    if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n    d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n    d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n    return edge;\n  }\n  function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n    var edge = new d3_geom_voronoiEdge(lSite, null);\n    edge.a = va;\n    edge.b = vb;\n    d3_geom_voronoiEdges.push(edge);\n    return edge;\n  }\n  function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n    if (!edge.a && !edge.b) {\n      edge.a = vertex;\n      edge.l = lSite;\n      edge.r = rSite;\n    } else if (edge.l === rSite) {\n      edge.b = vertex;\n    } else {\n      edge.a = vertex;\n    }\n  }\n  function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n    var va = edge.a, vb = edge.b;\n    this.edge = edge;\n    this.site = lSite;\n    this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n  }\n  d3_geom_voronoiHalfEdge.prototype = {\n    start: function() {\n      return this.edge.l === this.site ? this.edge.a : this.edge.b;\n    },\n    end: function() {\n      return this.edge.l === this.site ? this.edge.b : this.edge.a;\n    }\n  };\n  function d3_geom_voronoiRedBlackTree() {\n    this._ = null;\n  }\n  function d3_geom_voronoiRedBlackNode(node) {\n    node.U = node.C = node.L = node.R = node.P = node.N = null;\n  }\n  d3_geom_voronoiRedBlackTree.prototype = {\n    insert: function(after, node) {\n      var parent, grandpa, uncle;\n      if (after) {\n        node.P = after;\n        node.N = after.N;\n        if (after.N) after.N.P = node;\n        after.N = node;\n        if (after.R) {\n          after = after.R;\n          while (after.L) after = after.L;\n          after.L = node;\n        } else {\n          after.R = node;\n        }\n        parent = after;\n      } else if (this._) {\n        after = d3_geom_voronoiRedBlackFirst(this._);\n        node.P = null;\n        node.N = after;\n        after.P = after.L = node;\n        parent = after;\n      } else {\n        node.P = node.N = null;\n        this._ = node;\n        parent = null;\n      }\n      node.L = node.R = null;\n      node.U = parent;\n      node.C = true;\n      after = node;\n      while (parent && parent.C) {\n        grandpa = parent.U;\n        if (parent === grandpa.L) {\n          uncle = grandpa.R;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.R) {\n              d3_geom_voronoiRedBlackRotateLeft(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n          }\n        } else {\n          uncle = grandpa.L;\n          if (uncle && uncle.C) {\n            parent.C = uncle.C = false;\n            grandpa.C = true;\n            after = grandpa;\n          } else {\n            if (after === parent.L) {\n              d3_geom_voronoiRedBlackRotateRight(this, parent);\n              after = parent;\n              parent = after.U;\n            }\n            parent.C = false;\n            grandpa.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n          }\n        }\n        parent = after.U;\n      }\n      this._.C = false;\n    },\n    remove: function(node) {\n      if (node.N) node.N.P = node.P;\n      if (node.P) node.P.N = node.N;\n      node.N = node.P = null;\n      var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n      if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n      if (parent) {\n        if (parent.L === node) parent.L = next; else parent.R = next;\n      } else {\n        this._ = next;\n      }\n      if (left && right) {\n        red = next.C;\n        next.C = node.C;\n        next.L = left;\n        left.U = next;\n        if (next !== right) {\n          parent = next.U;\n          next.U = node.U;\n          node = next.R;\n          parent.L = node;\n          next.R = right;\n          right.U = next;\n        } else {\n          next.U = parent;\n          parent = next;\n          node = next.R;\n        }\n      } else {\n        red = node.C;\n        node = next;\n      }\n      if (node) node.U = parent;\n      if (red) return;\n      if (node && node.C) {\n        node.C = false;\n        return;\n      }\n      do {\n        if (node === this._) break;\n        if (node === parent.L) {\n          sibling = parent.R;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            sibling = parent.R;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.R || !sibling.R.C) {\n              sibling.L.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateRight(this, sibling);\n              sibling = parent.R;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.R.C = false;\n            d3_geom_voronoiRedBlackRotateLeft(this, parent);\n            node = this._;\n            break;\n          }\n        } else {\n          sibling = parent.L;\n          if (sibling.C) {\n            sibling.C = false;\n            parent.C = true;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            sibling = parent.L;\n          }\n          if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n            if (!sibling.L || !sibling.L.C) {\n              sibling.R.C = false;\n              sibling.C = true;\n              d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n              sibling = parent.L;\n            }\n            sibling.C = parent.C;\n            parent.C = sibling.L.C = false;\n            d3_geom_voronoiRedBlackRotateRight(this, parent);\n            node = this._;\n            break;\n          }\n        }\n        sibling.C = true;\n        node = parent;\n        parent = parent.U;\n      } while (!node.C);\n      if (node) node.C = false;\n    }\n  };\n  function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n    var p = node, q = node.R, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.R = q.L;\n    if (p.R) p.R.U = p;\n    q.L = p;\n  }\n  function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n    var p = node, q = node.L, parent = p.U;\n    if (parent) {\n      if (parent.L === p) parent.L = q; else parent.R = q;\n    } else {\n      tree._ = q;\n    }\n    q.U = parent;\n    p.U = q;\n    p.L = q.R;\n    if (p.L) p.L.U = p;\n    q.R = p;\n  }\n  function d3_geom_voronoiRedBlackFirst(node) {\n    while (node.L) node = node.L;\n    return node;\n  }\n  function d3_geom_voronoi(sites, bbox) {\n    var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n    d3_geom_voronoiEdges = [];\n    d3_geom_voronoiCells = new Array(sites.length);\n    d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n    d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n    while (true) {\n      circle = d3_geom_voronoiFirstCircle;\n      if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n        if (site.x !== x0 || site.y !== y0) {\n          d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n          d3_geom_voronoiAddBeach(site);\n          x0 = site.x, y0 = site.y;\n        }\n        site = sites.pop();\n      } else if (circle) {\n        d3_geom_voronoiRemoveBeach(circle.arc);\n      } else {\n        break;\n      }\n    }\n    if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n    var diagram = {\n      cells: d3_geom_voronoiCells,\n      edges: d3_geom_voronoiEdges\n    };\n    d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n    return diagram;\n  }\n  function d3_geom_voronoiVertexOrder(a, b) {\n    return b.y - a.y || b.x - a.x;\n  }\n  d3.geom.voronoi = function(points) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n    if (points) return voronoi(points);\n    function voronoi(data) {\n      var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n      d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n        var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n          var s = e.start();\n          return [ s.x, s.y ];\n        }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n        polygon.point = data[i];\n      });\n      return polygons;\n    }\n    function sites(data) {\n      return data.map(function(d, i) {\n        return {\n          x: Math.round(fx(d, i) / ε) * ε,\n          y: Math.round(fy(d, i) / ε) * ε,\n          i: i\n        };\n      });\n    }\n    voronoi.links = function(data) {\n      return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n        return edge.l && edge.r;\n      }).map(function(edge) {\n        return {\n          source: data[edge.l.i],\n          target: data[edge.r.i]\n        };\n      });\n    };\n    voronoi.triangles = function(data) {\n      var triangles = [];\n      d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n        var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n        while (++j < m) {\n          e0 = e1;\n          s0 = s1;\n          e1 = edges[j].edge;\n          s1 = e1.l === site ? e1.r : e1.l;\n          if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n            triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n          }\n        }\n      });\n      return triangles;\n    };\n    voronoi.x = function(_) {\n      return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n    };\n    voronoi.y = function(_) {\n      return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n    };\n    voronoi.clipExtent = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n      clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n      return voronoi;\n    };\n    voronoi.size = function(_) {\n      if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n      return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n    };\n    return voronoi;\n  };\n  var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n  function d3_geom_voronoiTriangleArea(a, b, c) {\n    return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n  }\n  d3.geom.delaunay = function(vertices) {\n    return d3.geom.voronoi().triangles(vertices);\n  };\n  d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n    if (compat = arguments.length) {\n      x = d3_geom_quadtreeCompatX;\n      y = d3_geom_quadtreeCompatY;\n      if (compat === 3) {\n        y2 = y1;\n        x2 = x1;\n        y1 = x1 = 0;\n      }\n      return quadtree(points);\n    }\n    function quadtree(data) {\n      var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n      if (x1 != null) {\n        x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n      } else {\n        x2_ = y2_ = -(x1_ = y1_ = Infinity);\n        xs = [], ys = [];\n        n = data.length;\n        if (compat) for (i = 0; i < n; ++i) {\n          d = data[i];\n          if (d.x < x1_) x1_ = d.x;\n          if (d.y < y1_) y1_ = d.y;\n          if (d.x > x2_) x2_ = d.x;\n          if (d.y > y2_) y2_ = d.y;\n          xs.push(d.x);\n          ys.push(d.y);\n        } else for (i = 0; i < n; ++i) {\n          var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n          if (x_ < x1_) x1_ = x_;\n          if (y_ < y1_) y1_ = y_;\n          if (x_ > x2_) x2_ = x_;\n          if (y_ > y2_) y2_ = y_;\n          xs.push(x_);\n          ys.push(y_);\n        }\n      }\n      var dx = x2_ - x1_, dy = y2_ - y1_;\n      if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n      function insert(n, d, x, y, x1, y1, x2, y2) {\n        if (isNaN(x) || isNaN(y)) return;\n        if (n.leaf) {\n          var nx = n.x, ny = n.y;\n          if (nx != null) {\n            if (abs(nx - x) + abs(ny - y) < .01) {\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            } else {\n              var nPoint = n.point;\n              n.x = n.y = n.point = null;\n              insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n              insertChild(n, d, x, y, x1, y1, x2, y2);\n            }\n          } else {\n            n.x = x, n.y = y, n.point = d;\n          }\n        } else {\n          insertChild(n, d, x, y, x1, y1, x2, y2);\n        }\n      }\n      function insertChild(n, d, x, y, x1, y1, x2, y2) {\n        var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n        n.leaf = false;\n        n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n        if (right) x1 = xm; else x2 = xm;\n        if (below) y1 = ym; else y2 = ym;\n        insert(n, d, x, y, x1, y1, x2, y2);\n      }\n      var root = d3_geom_quadtreeNode();\n      root.add = function(d) {\n        insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n      };\n      root.visit = function(f) {\n        d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n      };\n      root.find = function(point) {\n        return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n      };\n      i = -1;\n      if (x1 == null) {\n        while (++i < n) {\n          insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n        }\n        --i;\n      } else data.forEach(root.add);\n      xs = ys = data = d = null;\n      return root;\n    }\n    quadtree.x = function(_) {\n      return arguments.length ? (x = _, quadtree) : x;\n    };\n    quadtree.y = function(_) {\n      return arguments.length ? (y = _, quadtree) : y;\n    };\n    quadtree.extent = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n      y2 = +_[1][1];\n      return quadtree;\n    };\n    quadtree.size = function(_) {\n      if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n      if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n      return quadtree;\n    };\n    return quadtree;\n  };\n  function d3_geom_quadtreeCompatX(d) {\n    return d.x;\n  }\n  function d3_geom_quadtreeCompatY(d) {\n    return d.y;\n  }\n  function d3_geom_quadtreeNode() {\n    return {\n      leaf: true,\n      nodes: [],\n      point: null,\n      x: null,\n      y: null\n    };\n  }\n  function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n    if (!f(node, x1, y1, x2, y2)) {\n      var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n      if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n      if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n      if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n      if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n    }\n  }\n  function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n    var minDistance2 = Infinity, closestPoint;\n    (function find(node, x1, y1, x2, y2) {\n      if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n      if (point = node.point) {\n        var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n        if (distance2 < minDistance2) {\n          var distance = Math.sqrt(minDistance2 = distance2);\n          x0 = x - distance, y0 = y - distance;\n          x3 = x + distance, y3 = y + distance;\n          closestPoint = point;\n        }\n      }\n      var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n      for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n        if (node = children[i & 3]) switch (i & 3) {\n         case 0:\n          find(node, x1, y1, xm, ym);\n          break;\n\n         case 1:\n          find(node, xm, y1, x2, ym);\n          break;\n\n         case 2:\n          find(node, x1, ym, xm, y2);\n          break;\n\n         case 3:\n          find(node, xm, ym, x2, y2);\n          break;\n        }\n      }\n    })(root, x0, y0, x3, y3);\n    return closestPoint;\n  }\n  d3.interpolateRgb = d3_interpolateRgb;\n  function d3_interpolateRgb(a, b) {\n    a = d3.rgb(a);\n    b = d3.rgb(b);\n    var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n    return function(t) {\n      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));\n    };\n  }\n  d3.interpolateObject = d3_interpolateObject;\n  function d3_interpolateObject(a, b) {\n    var i = {}, c = {}, k;\n    for (k in a) {\n      if (k in b) {\n        i[k] = d3_interpolate(a[k], b[k]);\n      } else {\n        c[k] = a[k];\n      }\n    }\n    for (k in b) {\n      if (!(k in a)) {\n        c[k] = b[k];\n      }\n    }\n    return function(t) {\n      for (k in i) c[k] = i[k](t);\n      return c;\n    };\n  }\n  d3.interpolateNumber = d3_interpolateNumber;\n  function d3_interpolateNumber(a, b) {\n    a = +a, b = +b;\n    return function(t) {\n      return a * (1 - t) + b * t;\n    };\n  }\n  d3.interpolateString = d3_interpolateString;\n  function d3_interpolateString(a, b) {\n    var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n    a = a + \"\", b = b + \"\";\n    while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n      if ((bs = bm.index) > bi) {\n        bs = b.slice(bi, bs);\n        if (s[i]) s[i] += bs; else s[++i] = bs;\n      }\n      if ((am = am[0]) === (bm = bm[0])) {\n        if (s[i]) s[i] += bm; else s[++i] = bm;\n      } else {\n        s[++i] = null;\n        q.push({\n          i: i,\n          x: d3_interpolateNumber(am, bm)\n        });\n      }\n      bi = d3_interpolate_numberB.lastIndex;\n    }\n    if (bi < b.length) {\n      bs = b.slice(bi);\n      if (s[i]) s[i] += bs; else s[++i] = bs;\n    }\n    return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n      return b(t) + \"\";\n    }) : function() {\n      return b;\n    } : (b = q.length, function(t) {\n      for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    });\n  }\n  var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n  d3.interpolate = d3_interpolate;\n  function d3_interpolate(a, b) {\n    var i = d3.interpolators.length, f;\n    while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n    return f;\n  }\n  d3.interpolators = [ function(a, b) {\n    var t = typeof b;\n    return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n  } ];\n  d3.interpolateArray = d3_interpolateArray;\n  function d3_interpolateArray(a, b) {\n    var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n    for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n    for (;i < na; ++i) c[i] = a[i];\n    for (;i < nb; ++i) c[i] = b[i];\n    return function(t) {\n      for (i = 0; i < n0; ++i) c[i] = x[i](t);\n      return c;\n    };\n  }\n  var d3_ease_default = function() {\n    return d3_identity;\n  };\n  var d3_ease = d3.map({\n    linear: d3_ease_default,\n    poly: d3_ease_poly,\n    quad: function() {\n      return d3_ease_quad;\n    },\n    cubic: function() {\n      return d3_ease_cubic;\n    },\n    sin: function() {\n      return d3_ease_sin;\n    },\n    exp: function() {\n      return d3_ease_exp;\n    },\n    circle: function() {\n      return d3_ease_circle;\n    },\n    elastic: d3_ease_elastic,\n    back: d3_ease_back,\n    bounce: function() {\n      return d3_ease_bounce;\n    }\n  });\n  var d3_ease_mode = d3.map({\n    \"in\": d3_identity,\n    out: d3_ease_reverse,\n    \"in-out\": d3_ease_reflect,\n    \"out-in\": function(f) {\n      return d3_ease_reflect(d3_ease_reverse(f));\n    }\n  });\n  d3.ease = function(name) {\n    var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n    t = d3_ease.get(t) || d3_ease_default;\n    m = d3_ease_mode.get(m) || d3_identity;\n    return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n  };\n  function d3_ease_clamp(f) {\n    return function(t) {\n      return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n    };\n  }\n  function d3_ease_reverse(f) {\n    return function(t) {\n      return 1 - f(1 - t);\n    };\n  }\n  function d3_ease_reflect(f) {\n    return function(t) {\n      return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n    };\n  }\n  function d3_ease_quad(t) {\n    return t * t;\n  }\n  function d3_ease_cubic(t) {\n    return t * t * t;\n  }\n  function d3_ease_cubicInOut(t) {\n    if (t <= 0) return 0;\n    if (t >= 1) return 1;\n    var t2 = t * t, t3 = t2 * t;\n    return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n  }\n  function d3_ease_poly(e) {\n    return function(t) {\n      return Math.pow(t, e);\n    };\n  }\n  function d3_ease_sin(t) {\n    return 1 - Math.cos(t * halfπ);\n  }\n  function d3_ease_exp(t) {\n    return Math.pow(2, 10 * (t - 1));\n  }\n  function d3_ease_circle(t) {\n    return 1 - Math.sqrt(1 - t * t);\n  }\n  function d3_ease_elastic(a, p) {\n    var s;\n    if (arguments.length < 2) p = .45;\n    if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n    return function(t) {\n      return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n    };\n  }\n  function d3_ease_back(s) {\n    if (!s) s = 1.70158;\n    return function(t) {\n      return t * t * ((s + 1) * t - s);\n    };\n  }\n  function d3_ease_bounce(t) {\n    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;\n  }\n  d3.interpolateHcl = d3_interpolateHcl;\n  function d3_interpolateHcl(a, b) {\n    a = d3.hcl(a);\n    b = d3.hcl(b);\n    var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n    if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateHsl = d3_interpolateHsl;\n  function d3_interpolateHsl(a, b) {\n    a = d3.hsl(a);\n    b = d3.hsl(b);\n    var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n    if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n    if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n    return function(t) {\n      return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n    };\n  }\n  d3.interpolateLab = d3_interpolateLab;\n  function d3_interpolateLab(a, b) {\n    a = d3.lab(a);\n    b = d3.lab(b);\n    var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n    return function(t) {\n      return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n    };\n  }\n  d3.interpolateRound = d3_interpolateRound;\n  function d3_interpolateRound(a, b) {\n    b -= a;\n    return function(t) {\n      return Math.round(a + b * t);\n    };\n  }\n  d3.transform = function(string) {\n    var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n    return (d3.transform = function(string) {\n      if (string != null) {\n        g.setAttribute(\"transform\", string);\n        var t = g.transform.baseVal.consolidate();\n      }\n      return new d3_transform(t ? t.matrix : d3_transformIdentity);\n    })(string);\n  };\n  function d3_transform(m) {\n    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;\n    if (r0[0] * r1[1] < r1[0] * r0[1]) {\n      r0[0] *= -1;\n      r0[1] *= -1;\n      kx *= -1;\n      kz *= -1;\n    }\n    this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n    this.translate = [ m.e, m.f ];\n    this.scale = [ kx, ky ];\n    this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n  }\n  d3_transform.prototype.toString = function() {\n    return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n  };\n  function d3_transformDot(a, b) {\n    return a[0] * b[0] + a[1] * b[1];\n  }\n  function d3_transformNormalize(a) {\n    var k = Math.sqrt(d3_transformDot(a, a));\n    if (k) {\n      a[0] /= k;\n      a[1] /= k;\n    }\n    return k;\n  }\n  function d3_transformCombine(a, b, k) {\n    a[0] += k * b[0];\n    a[1] += k * b[1];\n    return a;\n  }\n  var d3_transformIdentity = {\n    a: 1,\n    b: 0,\n    c: 0,\n    d: 1,\n    e: 0,\n    f: 0\n  };\n  d3.interpolateTransform = d3_interpolateTransform;\n  function d3_interpolateTransformPop(s) {\n    return s.length ? s.pop() + \",\" : \"\";\n  }\n  function d3_interpolateTranslate(ta, tb, s, q) {\n    if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n      var i = s.push(\"translate(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ta[0], tb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ta[1], tb[1])\n      });\n    } else if (tb[0] || tb[1]) {\n      s.push(\"translate(\" + tb + \")\");\n    }\n  }\n  function d3_interpolateRotate(ra, rb, s, q) {\n    if (ra !== rb) {\n      if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n        x: d3_interpolateNumber(ra, rb)\n      });\n    } else if (rb) {\n      s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n    }\n  }\n  function d3_interpolateSkew(wa, wb, s, q) {\n    if (wa !== wb) {\n      q.push({\n        i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n        x: d3_interpolateNumber(wa, wb)\n      });\n    } else if (wb) {\n      s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n    }\n  }\n  function d3_interpolateScale(ka, kb, s, q) {\n    if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n      var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({\n        i: i - 4,\n        x: d3_interpolateNumber(ka[0], kb[0])\n      }, {\n        i: i - 2,\n        x: d3_interpolateNumber(ka[1], kb[1])\n      });\n    } else if (kb[0] !== 1 || kb[1] !== 1) {\n      s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n    }\n  }\n  function d3_interpolateTransform(a, b) {\n    var s = [], q = [];\n    a = d3.transform(a), b = d3.transform(b);\n    d3_interpolateTranslate(a.translate, b.translate, s, q);\n    d3_interpolateRotate(a.rotate, b.rotate, s, q);\n    d3_interpolateSkew(a.skew, b.skew, s, q);\n    d3_interpolateScale(a.scale, b.scale, s, q);\n    a = b = null;\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  }\n  function d3_uninterpolateNumber(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return (x - a) / b;\n    };\n  }\n  function d3_uninterpolateClamp(a, b) {\n    b = (b -= a = +a) || 1 / b;\n    return function(x) {\n      return Math.max(0, Math.min(1, (x - a) / b));\n    };\n  }\n  d3.layout = {};\n  d3.layout.bundle = function() {\n    return function(links) {\n      var paths = [], i = -1, n = links.length;\n      while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n      return paths;\n    };\n  };\n  function d3_layout_bundlePath(link) {\n    var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n    while (start !== lca) {\n      start = start.parent;\n      points.push(start);\n    }\n    var k = points.length;\n    while (end !== lca) {\n      points.splice(k, 0, end);\n      end = end.parent;\n    }\n    return points;\n  }\n  function d3_layout_bundleAncestors(node) {\n    var ancestors = [], parent = node.parent;\n    while (parent != null) {\n      ancestors.push(node);\n      node = parent;\n      parent = parent.parent;\n    }\n    ancestors.push(node);\n    return ancestors;\n  }\n  function d3_layout_bundleLeastCommonAncestor(a, b) {\n    if (a === b) return a;\n    var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n    while (aNode === bNode) {\n      sharedNode = aNode;\n      aNode = aNodes.pop();\n      bNode = bNodes.pop();\n    }\n    return sharedNode;\n  }\n  d3.layout.chord = function() {\n    var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n    function relayout() {\n      var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n      chords = [];\n      groups = [];\n      k = 0, i = -1;\n      while (++i < n) {\n        x = 0, j = -1;\n        while (++j < n) {\n          x += matrix[i][j];\n        }\n        groupSums.push(x);\n        subgroupIndex.push(d3.range(n));\n        k += x;\n      }\n      if (sortGroups) {\n        groupIndex.sort(function(a, b) {\n          return sortGroups(groupSums[a], groupSums[b]);\n        });\n      }\n      if (sortSubgroups) {\n        subgroupIndex.forEach(function(d, i) {\n          d.sort(function(a, b) {\n            return sortSubgroups(matrix[i][a], matrix[i][b]);\n          });\n        });\n      }\n      k = (τ - padding * n) / k;\n      x = 0, i = -1;\n      while (++i < n) {\n        x0 = x, j = -1;\n        while (++j < n) {\n          var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n          subgroups[di + \"-\" + dj] = {\n            index: di,\n            subindex: dj,\n            startAngle: a0,\n            endAngle: a1,\n            value: v\n          };\n        }\n        groups[di] = {\n          index: di,\n          startAngle: x0,\n          endAngle: x,\n          value: groupSums[di]\n        };\n        x += padding;\n      }\n      i = -1;\n      while (++i < n) {\n        j = i - 1;\n        while (++j < n) {\n          var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n          if (source.value || target.value) {\n            chords.push(source.value < target.value ? {\n              source: target,\n              target: source\n            } : {\n              source: source,\n              target: target\n            });\n          }\n        }\n      }\n      if (sortChords) resort();\n    }\n    function resort() {\n      chords.sort(function(a, b) {\n        return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n      });\n    }\n    chord.matrix = function(x) {\n      if (!arguments.length) return matrix;\n      n = (matrix = x) && matrix.length;\n      chords = groups = null;\n      return chord;\n    };\n    chord.padding = function(x) {\n      if (!arguments.length) return padding;\n      padding = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortGroups = function(x) {\n      if (!arguments.length) return sortGroups;\n      sortGroups = x;\n      chords = groups = null;\n      return chord;\n    };\n    chord.sortSubgroups = function(x) {\n      if (!arguments.length) return sortSubgroups;\n      sortSubgroups = x;\n      chords = null;\n      return chord;\n    };\n    chord.sortChords = function(x) {\n      if (!arguments.length) return sortChords;\n      sortChords = x;\n      if (chords) resort();\n      return chord;\n    };\n    chord.chords = function() {\n      if (!chords) relayout();\n      return chords;\n    };\n    chord.groups = function() {\n      if (!groups) relayout();\n      return groups;\n    };\n    return chord;\n  };\n  d3.layout.force = function() {\n    var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n    function repulse(node) {\n      return function(quad, x1, _, x2) {\n        if (quad.point !== node) {\n          var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n          if (dw * dw / theta2 < dn) {\n            if (dn < chargeDistance2) {\n              var k = quad.charge / dn;\n              node.px -= dx * k;\n              node.py -= dy * k;\n            }\n            return true;\n          }\n          if (quad.point && dn && dn < chargeDistance2) {\n            var k = quad.pointCharge / dn;\n            node.px -= dx * k;\n            node.py -= dy * k;\n          }\n        }\n        return !quad.charge;\n      };\n    }\n    force.tick = function() {\n      if ((alpha *= .99) < .005) {\n        timer = null;\n        event.end({\n          type: \"end\",\n          alpha: alpha = 0\n        });\n        return true;\n      }\n      var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        s = o.source;\n        t = o.target;\n        x = t.x - s.x;\n        y = t.y - s.y;\n        if (l = x * x + y * y) {\n          l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n          x *= l;\n          y *= l;\n          t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n          t.y -= y * k;\n          s.x += x * (k = 1 - k);\n          s.y += y * k;\n        }\n      }\n      if (k = alpha * gravity) {\n        x = size[0] / 2;\n        y = size[1] / 2;\n        i = -1;\n        if (k) while (++i < n) {\n          o = nodes[i];\n          o.x += (x - o.x) * k;\n          o.y += (y - o.y) * k;\n        }\n      }\n      if (charge) {\n        d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n        i = -1;\n        while (++i < n) {\n          if (!(o = nodes[i]).fixed) {\n            q.visit(repulse(o));\n          }\n        }\n      }\n      i = -1;\n      while (++i < n) {\n        o = nodes[i];\n        if (o.fixed) {\n          o.x = o.px;\n          o.y = o.py;\n        } else {\n          o.x -= (o.px - (o.px = o.x)) * friction;\n          o.y -= (o.py - (o.py = o.y)) * friction;\n        }\n      }\n      event.tick({\n        type: \"tick\",\n        alpha: alpha\n      });\n    };\n    force.nodes = function(x) {\n      if (!arguments.length) return nodes;\n      nodes = x;\n      return force;\n    };\n    force.links = function(x) {\n      if (!arguments.length) return links;\n      links = x;\n      return force;\n    };\n    force.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return force;\n    };\n    force.linkDistance = function(x) {\n      if (!arguments.length) return linkDistance;\n      linkDistance = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.distance = force.linkDistance;\n    force.linkStrength = function(x) {\n      if (!arguments.length) return linkStrength;\n      linkStrength = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.friction = function(x) {\n      if (!arguments.length) return friction;\n      friction = +x;\n      return force;\n    };\n    force.charge = function(x) {\n      if (!arguments.length) return charge;\n      charge = typeof x === \"function\" ? x : +x;\n      return force;\n    };\n    force.chargeDistance = function(x) {\n      if (!arguments.length) return Math.sqrt(chargeDistance2);\n      chargeDistance2 = x * x;\n      return force;\n    };\n    force.gravity = function(x) {\n      if (!arguments.length) return gravity;\n      gravity = +x;\n      return force;\n    };\n    force.theta = function(x) {\n      if (!arguments.length) return Math.sqrt(theta2);\n      theta2 = x * x;\n      return force;\n    };\n    force.alpha = function(x) {\n      if (!arguments.length) return alpha;\n      x = +x;\n      if (alpha) {\n        if (x > 0) {\n          alpha = x;\n        } else {\n          timer.c = null, timer.t = NaN, timer = null;\n          event.end({\n            type: \"end\",\n            alpha: alpha = 0\n          });\n        }\n      } else if (x > 0) {\n        event.start({\n          type: \"start\",\n          alpha: alpha = x\n        });\n        timer = d3_timer(force.tick);\n      }\n      return force;\n    };\n    force.start = function() {\n      var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n      for (i = 0; i < n; ++i) {\n        (o = nodes[i]).index = i;\n        o.weight = 0;\n      }\n      for (i = 0; i < m; ++i) {\n        o = links[i];\n        if (typeof o.source == \"number\") o.source = nodes[o.source];\n        if (typeof o.target == \"number\") o.target = nodes[o.target];\n        ++o.source.weight;\n        ++o.target.weight;\n      }\n      for (i = 0; i < n; ++i) {\n        o = nodes[i];\n        if (isNaN(o.x)) o.x = position(\"x\", w);\n        if (isNaN(o.y)) o.y = position(\"y\", h);\n        if (isNaN(o.px)) o.px = o.x;\n        if (isNaN(o.py)) o.py = o.y;\n      }\n      distances = [];\n      if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n      strengths = [];\n      if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n      charges = [];\n      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;\n      function position(dimension, size) {\n        if (!neighbors) {\n          neighbors = new Array(n);\n          for (j = 0; j < n; ++j) {\n            neighbors[j] = [];\n          }\n          for (j = 0; j < m; ++j) {\n            var o = links[j];\n            neighbors[o.source.index].push(o.target);\n            neighbors[o.target.index].push(o.source);\n          }\n        }\n        var candidates = neighbors[i], j = -1, l = candidates.length, x;\n        while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n        return Math.random() * size;\n      }\n      return force.resume();\n    };\n    force.resume = function() {\n      return force.alpha(.1);\n    };\n    force.stop = function() {\n      return force.alpha(0);\n    };\n    force.drag = function() {\n      if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n      if (!arguments.length) return drag;\n      this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n    };\n    function dragmove(d) {\n      d.px = d3.event.x, d.py = d3.event.y;\n      force.resume();\n    }\n    return d3.rebind(force, event, \"on\");\n  };\n  function d3_layout_forceDragstart(d) {\n    d.fixed |= 2;\n  }\n  function d3_layout_forceDragend(d) {\n    d.fixed &= ~6;\n  }\n  function d3_layout_forceMouseover(d) {\n    d.fixed |= 4;\n    d.px = d.x, d.py = d.y;\n  }\n  function d3_layout_forceMouseout(d) {\n    d.fixed &= ~4;\n  }\n  function d3_layout_forceAccumulate(quad, alpha, charges) {\n    var cx = 0, cy = 0;\n    quad.charge = 0;\n    if (!quad.leaf) {\n      var nodes = quad.nodes, n = nodes.length, i = -1, c;\n      while (++i < n) {\n        c = nodes[i];\n        if (c == null) continue;\n        d3_layout_forceAccumulate(c, alpha, charges);\n        quad.charge += c.charge;\n        cx += c.charge * c.cx;\n        cy += c.charge * c.cy;\n      }\n    }\n    if (quad.point) {\n      if (!quad.leaf) {\n        quad.point.x += Math.random() - .5;\n        quad.point.y += Math.random() - .5;\n      }\n      var k = alpha * charges[quad.point.index];\n      quad.charge += quad.pointCharge = k;\n      cx += k * quad.point.x;\n      cy += k * quad.point.y;\n    }\n    quad.cx = cx / quad.charge;\n    quad.cy = cy / quad.charge;\n  }\n  var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n  d3.layout.hierarchy = function() {\n    var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n    function hierarchy(root) {\n      var stack = [ root ], nodes = [], node;\n      root.depth = 0;\n      while ((node = stack.pop()) != null) {\n        nodes.push(node);\n        if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n          var n, childs, child;\n          while (--n >= 0) {\n            stack.push(child = childs[n]);\n            child.parent = node;\n            child.depth = node.depth + 1;\n          }\n          if (value) node.value = 0;\n          node.children = childs;\n        } else {\n          if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          delete node.children;\n        }\n      }\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var childs, parent;\n        if (sort && (childs = node.children)) childs.sort(sort);\n        if (value && (parent = node.parent)) parent.value += node.value;\n      });\n      return nodes;\n    }\n    hierarchy.sort = function(x) {\n      if (!arguments.length) return sort;\n      sort = x;\n      return hierarchy;\n    };\n    hierarchy.children = function(x) {\n      if (!arguments.length) return children;\n      children = x;\n      return hierarchy;\n    };\n    hierarchy.value = function(x) {\n      if (!arguments.length) return value;\n      value = x;\n      return hierarchy;\n    };\n    hierarchy.revalue = function(root) {\n      if (value) {\n        d3_layout_hierarchyVisitBefore(root, function(node) {\n          if (node.children) node.value = 0;\n        });\n        d3_layout_hierarchyVisitAfter(root, function(node) {\n          var parent;\n          if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n          if (parent = node.parent) parent.value += node.value;\n        });\n      }\n      return root;\n    };\n    return hierarchy;\n  };\n  function d3_layout_hierarchyRebind(object, hierarchy) {\n    d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n    object.nodes = object;\n    object.links = d3_layout_hierarchyLinks;\n    return object;\n  }\n  function d3_layout_hierarchyVisitBefore(node, callback) {\n    var nodes = [ node ];\n    while ((node = nodes.pop()) != null) {\n      callback(node);\n      if ((children = node.children) && (n = children.length)) {\n        var n, children;\n        while (--n >= 0) nodes.push(children[n]);\n      }\n    }\n  }\n  function d3_layout_hierarchyVisitAfter(node, callback) {\n    var nodes = [ node ], nodes2 = [];\n    while ((node = nodes.pop()) != null) {\n      nodes2.push(node);\n      if ((children = node.children) && (n = children.length)) {\n        var i = -1, n, children;\n        while (++i < n) nodes.push(children[i]);\n      }\n    }\n    while ((node = nodes2.pop()) != null) {\n      callback(node);\n    }\n  }\n  function d3_layout_hierarchyChildren(d) {\n    return d.children;\n  }\n  function d3_layout_hierarchyValue(d) {\n    return d.value;\n  }\n  function d3_layout_hierarchySort(a, b) {\n    return b.value - a.value;\n  }\n  function d3_layout_hierarchyLinks(nodes) {\n    return d3.merge(nodes.map(function(parent) {\n      return (parent.children || []).map(function(child) {\n        return {\n          source: parent,\n          target: child\n        };\n      });\n    }));\n  }\n  d3.layout.partition = function() {\n    var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n    function position(node, x, dx, dy) {\n      var children = node.children;\n      node.x = x;\n      node.y = node.depth * dy;\n      node.dx = dx;\n      node.dy = dy;\n      if (children && (n = children.length)) {\n        var i = -1, n, c, d;\n        dx = node.value ? dx / node.value : 0;\n        while (++i < n) {\n          position(c = children[i], x, d = c.value * dx, dy);\n          x += d;\n        }\n      }\n    }\n    function depth(node) {\n      var children = node.children, d = 0;\n      if (children && (n = children.length)) {\n        var i = -1, n;\n        while (++i < n) d = Math.max(d, depth(children[i]));\n      }\n      return 1 + d;\n    }\n    function partition(d, i) {\n      var nodes = hierarchy.call(this, d, i);\n      position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n      return nodes;\n    }\n    partition.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return partition;\n    };\n    return d3_layout_hierarchyRebind(partition, hierarchy);\n  };\n  d3.layout.pie = function() {\n    var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n    function pie(data) {\n      var n = data.length, values = data.map(function(d, i) {\n        return +value.call(pie, d, i);\n      }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n      if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n        return values[j] - values[i];\n      } : function(i, j) {\n        return sort(data[i], data[j]);\n      });\n      index.forEach(function(i) {\n        arcs[i] = {\n          data: data[i],\n          value: v = values[i],\n          startAngle: a,\n          endAngle: a += v * k + pa,\n          padAngle: p\n        };\n      });\n      return arcs;\n    }\n    pie.value = function(_) {\n      if (!arguments.length) return value;\n      value = _;\n      return pie;\n    };\n    pie.sort = function(_) {\n      if (!arguments.length) return sort;\n      sort = _;\n      return pie;\n    };\n    pie.startAngle = function(_) {\n      if (!arguments.length) return startAngle;\n      startAngle = _;\n      return pie;\n    };\n    pie.endAngle = function(_) {\n      if (!arguments.length) return endAngle;\n      endAngle = _;\n      return pie;\n    };\n    pie.padAngle = function(_) {\n      if (!arguments.length) return padAngle;\n      padAngle = _;\n      return pie;\n    };\n    return pie;\n  };\n  var d3_layout_pieSortByValue = {};\n  d3.layout.stack = function() {\n    var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n    function stack(data, index) {\n      if (!(n = data.length)) return data;\n      var series = data.map(function(d, i) {\n        return values.call(stack, d, i);\n      });\n      var points = series.map(function(d) {\n        return d.map(function(v, i) {\n          return [ x.call(stack, v, i), y.call(stack, v, i) ];\n        });\n      });\n      var orders = order.call(stack, points, index);\n      series = d3.permute(series, orders);\n      points = d3.permute(points, orders);\n      var offsets = offset.call(stack, points, index);\n      var m = series[0].length, n, i, j, o;\n      for (j = 0; j < m; ++j) {\n        out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n        for (i = 1; i < n; ++i) {\n          out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n        }\n      }\n      return data;\n    }\n    stack.values = function(x) {\n      if (!arguments.length) return values;\n      values = x;\n      return stack;\n    };\n    stack.order = function(x) {\n      if (!arguments.length) return order;\n      order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n      return stack;\n    };\n    stack.offset = function(x) {\n      if (!arguments.length) return offset;\n      offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n      return stack;\n    };\n    stack.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      return stack;\n    };\n    stack.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      return stack;\n    };\n    stack.out = function(z) {\n      if (!arguments.length) return out;\n      out = z;\n      return stack;\n    };\n    return stack;\n  };\n  function d3_layout_stackX(d) {\n    return d.x;\n  }\n  function d3_layout_stackY(d) {\n    return d.y;\n  }\n  function d3_layout_stackOut(d, y0, y) {\n    d.y0 = y0;\n    d.y = y;\n  }\n  var d3_layout_stackOrders = d3.map({\n    \"inside-out\": function(data) {\n      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) {\n        return max[a] - max[b];\n      }), top = 0, bottom = 0, tops = [], bottoms = [];\n      for (i = 0; i < n; ++i) {\n        j = index[i];\n        if (top < bottom) {\n          top += sums[j];\n          tops.push(j);\n        } else {\n          bottom += sums[j];\n          bottoms.push(j);\n        }\n      }\n      return bottoms.reverse().concat(tops);\n    },\n    reverse: function(data) {\n      return d3.range(data.length).reverse();\n    },\n    \"default\": d3_layout_stackOrderDefault\n  });\n  var d3_layout_stackOffsets = d3.map({\n    silhouette: function(data) {\n      var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        if (o > max) max = o;\n        sums.push(o);\n      }\n      for (j = 0; j < m; ++j) {\n        y0[j] = (max - sums[j]) / 2;\n      }\n      return y0;\n    },\n    wiggle: function(data) {\n      var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n      y0[0] = o = o0 = 0;\n      for (j = 1; j < m; ++j) {\n        for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n        for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n          for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n            s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n          }\n          s2 += s3 * data[i][j][1];\n        }\n        y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n        if (o < o0) o0 = o;\n      }\n      for (j = 0; j < m; ++j) y0[j] -= o0;\n      return y0;\n    },\n    expand: function(data) {\n      var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n      for (j = 0; j < m; ++j) {\n        for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n        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;\n      }\n      for (j = 0; j < m; ++j) y0[j] = 0;\n      return y0;\n    },\n    zero: d3_layout_stackOffsetZero\n  });\n  function d3_layout_stackOrderDefault(data) {\n    return d3.range(data.length);\n  }\n  function d3_layout_stackOffsetZero(data) {\n    var j = -1, m = data[0].length, y0 = [];\n    while (++j < m) y0[j] = 0;\n    return y0;\n  }\n  function d3_layout_stackMaxIndex(array) {\n    var i = 1, j = 0, v = array[0][1], k, n = array.length;\n    for (;i < n; ++i) {\n      if ((k = array[i][1]) > v) {\n        j = i;\n        v = k;\n      }\n    }\n    return j;\n  }\n  function d3_layout_stackReduceSum(d) {\n    return d.reduce(d3_layout_stackSum, 0);\n  }\n  function d3_layout_stackSum(p, d) {\n    return p + d[1];\n  }\n  d3.layout.histogram = function() {\n    var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n    function histogram(data, i) {\n      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;\n      while (++i < m) {\n        bin = bins[i] = [];\n        bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n        bin.y = 0;\n      }\n      if (m > 0) {\n        i = -1;\n        while (++i < n) {\n          x = values[i];\n          if (x >= range[0] && x <= range[1]) {\n            bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n            bin.y += k;\n            bin.push(data[i]);\n          }\n        }\n      }\n      return bins;\n    }\n    histogram.value = function(x) {\n      if (!arguments.length) return valuer;\n      valuer = x;\n      return histogram;\n    };\n    histogram.range = function(x) {\n      if (!arguments.length) return ranger;\n      ranger = d3_functor(x);\n      return histogram;\n    };\n    histogram.bins = function(x) {\n      if (!arguments.length) return binner;\n      binner = typeof x === \"number\" ? function(range) {\n        return d3_layout_histogramBinFixed(range, x);\n      } : d3_functor(x);\n      return histogram;\n    };\n    histogram.frequency = function(x) {\n      if (!arguments.length) return frequency;\n      frequency = !!x;\n      return histogram;\n    };\n    return histogram;\n  };\n  function d3_layout_histogramBinSturges(range, values) {\n    return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n  }\n  function d3_layout_histogramBinFixed(range, n) {\n    var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n    while (++x <= n) f[x] = m * x + b;\n    return f;\n  }\n  function d3_layout_histogramRange(values) {\n    return [ d3.min(values), d3.max(values) ];\n  }\n  d3.layout.pack = function() {\n    var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n    function pack(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n        return radius;\n      };\n      root.x = root.y = 0;\n      d3_layout_hierarchyVisitAfter(root, function(d) {\n        d.r = +r(d.value);\n      });\n      d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n      if (padding) {\n        var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r += dr;\n        });\n        d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n        d3_layout_hierarchyVisitAfter(root, function(d) {\n          d.r -= dr;\n        });\n      }\n      d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n      return nodes;\n    }\n    pack.size = function(_) {\n      if (!arguments.length) return size;\n      size = _;\n      return pack;\n    };\n    pack.radius = function(_) {\n      if (!arguments.length) return radius;\n      radius = _ == null || typeof _ === \"function\" ? _ : +_;\n      return pack;\n    };\n    pack.padding = function(_) {\n      if (!arguments.length) return padding;\n      padding = +_;\n      return pack;\n    };\n    return d3_layout_hierarchyRebind(pack, hierarchy);\n  };\n  function d3_layout_packSort(a, b) {\n    return a.value - b.value;\n  }\n  function d3_layout_packInsert(a, b) {\n    var c = a._pack_next;\n    a._pack_next = b;\n    b._pack_prev = a;\n    b._pack_next = c;\n    c._pack_prev = b;\n  }\n  function d3_layout_packSplice(a, b) {\n    a._pack_next = b;\n    b._pack_prev = a;\n  }\n  function d3_layout_packIntersects(a, b) {\n    var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n    return .999 * dr * dr > dx * dx + dy * dy;\n  }\n  function d3_layout_packSiblings(node) {\n    if (!(nodes = node.children) || !(n = nodes.length)) return;\n    var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n    function bound(node) {\n      xMin = Math.min(node.x - node.r, xMin);\n      xMax = Math.max(node.x + node.r, xMax);\n      yMin = Math.min(node.y - node.r, yMin);\n      yMax = Math.max(node.y + node.r, yMax);\n    }\n    nodes.forEach(d3_layout_packLink);\n    a = nodes[0];\n    a.x = -a.r;\n    a.y = 0;\n    bound(a);\n    if (n > 1) {\n      b = nodes[1];\n      b.x = b.r;\n      b.y = 0;\n      bound(b);\n      if (n > 2) {\n        c = nodes[2];\n        d3_layout_packPlace(a, b, c);\n        bound(c);\n        d3_layout_packInsert(a, c);\n        a._pack_prev = c;\n        d3_layout_packInsert(c, b);\n        b = a._pack_next;\n        for (i = 3; i < n; i++) {\n          d3_layout_packPlace(a, b, c = nodes[i]);\n          var isect = 0, s1 = 1, s2 = 1;\n          for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n            if (d3_layout_packIntersects(j, c)) {\n              isect = 1;\n              break;\n            }\n          }\n          if (isect == 1) {\n            for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n              if (d3_layout_packIntersects(k, c)) {\n                break;\n              }\n            }\n          }\n          if (isect) {\n            if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n            i--;\n          } else {\n            d3_layout_packInsert(a, c);\n            b = c;\n            bound(c);\n          }\n        }\n      }\n    }\n    var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n    for (i = 0; i < n; i++) {\n      c = nodes[i];\n      c.x -= cx;\n      c.y -= cy;\n      cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n    }\n    node.r = cr;\n    nodes.forEach(d3_layout_packUnlink);\n  }\n  function d3_layout_packLink(node) {\n    node._pack_next = node._pack_prev = node;\n  }\n  function d3_layout_packUnlink(node) {\n    delete node._pack_next;\n    delete node._pack_prev;\n  }\n  function d3_layout_packTransform(node, x, y, k) {\n    var children = node.children;\n    node.x = x += k * node.x;\n    node.y = y += k * node.y;\n    node.r *= k;\n    if (children) {\n      var i = -1, n = children.length;\n      while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n    }\n  }\n  function d3_layout_packPlace(a, b, c) {\n    var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n    if (db && (dx || dy)) {\n      var da = b.r + c.r, dc = dx * dx + dy * dy;\n      da *= da;\n      db *= db;\n      var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n      c.x = a.x + x * dx + y * dy;\n      c.y = a.y + x * dy - y * dx;\n    } else {\n      c.x = a.x + db;\n      c.y = a.y;\n    }\n  }\n  d3.layout.tree = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n    function tree(d, i) {\n      var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n      d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n      d3_layout_hierarchyVisitBefore(root1, secondWalk);\n      if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n        var left = root0, right = root0, bottom = root0;\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          if (node.x < left.x) left = node;\n          if (node.x > right.x) right = node;\n          if (node.depth > bottom.depth) bottom = node;\n        });\n        var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n        d3_layout_hierarchyVisitBefore(root0, function(node) {\n          node.x = (node.x + tx) * kx;\n          node.y = node.depth * ky;\n        });\n      }\n      return nodes;\n    }\n    function wrapTree(root0) {\n      var root1 = {\n        A: null,\n        children: [ root0 ]\n      }, queue = [ root1 ], node1;\n      while ((node1 = queue.pop()) != null) {\n        for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n          queue.push((children[i] = child = {\n            _: children[i],\n            parent: node1,\n            children: (child = children[i].children) && child.slice() || [],\n            A: null,\n            a: null,\n            z: 0,\n            m: 0,\n            c: 0,\n            s: 0,\n            t: null,\n            i: i\n          }).a = child);\n        }\n      }\n      return root1.children[0];\n    }\n    function firstWalk(v) {\n      var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n      if (children.length) {\n        d3_layout_treeShift(v);\n        var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n        if (w) {\n          v.z = w.z + separation(v._, w._);\n          v.m = v.z - midpoint;\n        } else {\n          v.z = midpoint;\n        }\n      } else if (w) {\n        v.z = w.z + separation(v._, w._);\n      }\n      v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n    }\n    function secondWalk(v) {\n      v._.x = v.z + v.parent.m;\n      v.m += v.parent.m;\n    }\n    function apportion(v, w, ancestor) {\n      if (w) {\n        var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n        while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n          vom = d3_layout_treeLeft(vom);\n          vop = d3_layout_treeRight(vop);\n          vop.a = v;\n          shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n          if (shift > 0) {\n            d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n            sip += shift;\n            sop += shift;\n          }\n          sim += vim.m;\n          sip += vip.m;\n          som += vom.m;\n          sop += vop.m;\n        }\n        if (vim && !d3_layout_treeRight(vop)) {\n          vop.t = vim;\n          vop.m += sim - sop;\n        }\n        if (vip && !d3_layout_treeLeft(vom)) {\n          vom.t = vip;\n          vom.m += sip - som;\n          ancestor = v;\n        }\n      }\n      return ancestor;\n    }\n    function sizeNode(node) {\n      node.x *= size[0];\n      node.y = node.depth * size[1];\n    }\n    tree.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return tree;\n    };\n    tree.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null ? sizeNode : null;\n      return tree;\n    };\n    tree.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) == null ? null : sizeNode;\n      return tree;\n    };\n    return d3_layout_hierarchyRebind(tree, hierarchy);\n  };\n  function d3_layout_treeSeparation(a, b) {\n    return a.parent == b.parent ? 1 : 2;\n  }\n  function d3_layout_treeLeft(v) {\n    var children = v.children;\n    return children.length ? children[0] : v.t;\n  }\n  function d3_layout_treeRight(v) {\n    var children = v.children, n;\n    return (n = children.length) ? children[n - 1] : v.t;\n  }\n  function d3_layout_treeMove(wm, wp, shift) {\n    var change = shift / (wp.i - wm.i);\n    wp.c -= change;\n    wp.s += shift;\n    wm.c += change;\n    wp.z += shift;\n    wp.m += shift;\n  }\n  function d3_layout_treeShift(v) {\n    var shift = 0, change = 0, children = v.children, i = children.length, w;\n    while (--i >= 0) {\n      w = children[i];\n      w.z += shift;\n      w.m += shift;\n      shift += w.s + (change += w.c);\n    }\n  }\n  function d3_layout_treeAncestor(vim, v, ancestor) {\n    return vim.a.parent === v.parent ? vim.a : ancestor;\n  }\n  d3.layout.cluster = function() {\n    var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n    function cluster(d, i) {\n      var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n      d3_layout_hierarchyVisitAfter(root, function(node) {\n        var children = node.children;\n        if (children && children.length) {\n          node.x = d3_layout_clusterX(children);\n          node.y = d3_layout_clusterY(children);\n        } else {\n          node.x = previousNode ? x += separation(node, previousNode) : 0;\n          node.y = 0;\n          previousNode = node;\n        }\n      });\n      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;\n      d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n        node.x = (node.x - root.x) * size[0];\n        node.y = (root.y - node.y) * size[1];\n      } : function(node) {\n        node.x = (node.x - x0) / (x1 - x0) * size[0];\n        node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n      });\n      return nodes;\n    }\n    cluster.separation = function(x) {\n      if (!arguments.length) return separation;\n      separation = x;\n      return cluster;\n    };\n    cluster.size = function(x) {\n      if (!arguments.length) return nodeSize ? null : size;\n      nodeSize = (size = x) == null;\n      return cluster;\n    };\n    cluster.nodeSize = function(x) {\n      if (!arguments.length) return nodeSize ? size : null;\n      nodeSize = (size = x) != null;\n      return cluster;\n    };\n    return d3_layout_hierarchyRebind(cluster, hierarchy);\n  };\n  function d3_layout_clusterY(children) {\n    return 1 + d3.max(children, function(child) {\n      return child.y;\n    });\n  }\n  function d3_layout_clusterX(children) {\n    return children.reduce(function(x, child) {\n      return x + child.x;\n    }, 0) / children.length;\n  }\n  function d3_layout_clusterLeft(node) {\n    var children = node.children;\n    return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n  }\n  function d3_layout_clusterRight(node) {\n    var children = node.children, n;\n    return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n  }\n  d3.layout.treemap = function() {\n    var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n    function scale(children, k) {\n      var i = -1, n = children.length, child, area;\n      while (++i < n) {\n        area = (child = children[i]).value * (k < 0 ? 0 : k);\n        child.area = isNaN(area) || area <= 0 ? 0 : area;\n      }\n    }\n    function squarify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while ((n = remaining.length) > 0) {\n          row.push(child = remaining[n - 1]);\n          row.area += child.area;\n          if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n            remaining.pop();\n            best = score;\n          } else {\n            row.area -= row.pop().area;\n            position(row, u, rect, false);\n            u = Math.min(rect.dx, rect.dy);\n            row.length = row.area = 0;\n            best = Infinity;\n          }\n        }\n        if (row.length) {\n          position(row, u, rect, true);\n          row.length = row.area = 0;\n        }\n        children.forEach(squarify);\n      }\n    }\n    function stickify(node) {\n      var children = node.children;\n      if (children && children.length) {\n        var rect = pad(node), remaining = children.slice(), child, row = [];\n        scale(remaining, rect.dx * rect.dy / node.value);\n        row.area = 0;\n        while (child = remaining.pop()) {\n          row.push(child);\n          row.area += child.area;\n          if (child.z != null) {\n            position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n            row.length = row.area = 0;\n          }\n        }\n        children.forEach(stickify);\n      }\n    }\n    function worst(row, u) {\n      var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n      while (++i < n) {\n        if (!(r = row[i].area)) continue;\n        if (r < rmin) rmin = r;\n        if (r > rmax) rmax = r;\n      }\n      s *= s;\n      u *= u;\n      return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n    }\n    function position(row, u, rect, flush) {\n      var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n      if (u == rect.dx) {\n        if (flush || v > rect.dy) v = rect.dy;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dy = v;\n          x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n        }\n        o.z = true;\n        o.dx += rect.x + rect.dx - x;\n        rect.y += v;\n        rect.dy -= v;\n      } else {\n        if (flush || v > rect.dx) v = rect.dx;\n        while (++i < n) {\n          o = row[i];\n          o.x = x;\n          o.y = y;\n          o.dx = v;\n          y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n        }\n        o.z = false;\n        o.dy += rect.y + rect.dy - y;\n        rect.x += v;\n        rect.dx -= v;\n      }\n    }\n    function treemap(d) {\n      var nodes = stickies || hierarchy(d), root = nodes[0];\n      root.x = root.y = 0;\n      if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n      if (stickies) hierarchy.revalue(root);\n      scale([ root ], root.dx * root.dy / root.value);\n      (stickies ? stickify : squarify)(root);\n      if (sticky) stickies = nodes;\n      return nodes;\n    }\n    treemap.size = function(x) {\n      if (!arguments.length) return size;\n      size = x;\n      return treemap;\n    };\n    treemap.padding = function(x) {\n      if (!arguments.length) return padding;\n      function padFunction(node) {\n        var p = x.call(treemap, node, node.depth);\n        return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n      }\n      function padConstant(node) {\n        return d3_layout_treemapPad(node, x);\n      }\n      var type;\n      pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n      padConstant) : padConstant;\n      return treemap;\n    };\n    treemap.round = function(x) {\n      if (!arguments.length) return round != Number;\n      round = x ? Math.round : Number;\n      return treemap;\n    };\n    treemap.sticky = function(x) {\n      if (!arguments.length) return sticky;\n      sticky = x;\n      stickies = null;\n      return treemap;\n    };\n    treemap.ratio = function(x) {\n      if (!arguments.length) return ratio;\n      ratio = x;\n      return treemap;\n    };\n    treemap.mode = function(x) {\n      if (!arguments.length) return mode;\n      mode = x + \"\";\n      return treemap;\n    };\n    return d3_layout_hierarchyRebind(treemap, hierarchy);\n  };\n  function d3_layout_treemapPadNull(node) {\n    return {\n      x: node.x,\n      y: node.y,\n      dx: node.dx,\n      dy: node.dy\n    };\n  }\n  function d3_layout_treemapPad(node, padding) {\n    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];\n    if (dx < 0) {\n      x += dx / 2;\n      dx = 0;\n    }\n    if (dy < 0) {\n      y += dy / 2;\n      dy = 0;\n    }\n    return {\n      x: x,\n      y: y,\n      dx: dx,\n      dy: dy\n    };\n  }\n  d3.random = {\n    normal: function(µ, σ) {\n      var n = arguments.length;\n      if (n < 2) σ = 1;\n      if (n < 1) µ = 0;\n      return function() {\n        var x, y, r;\n        do {\n          x = Math.random() * 2 - 1;\n          y = Math.random() * 2 - 1;\n          r = x * x + y * y;\n        } while (!r || r > 1);\n        return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n      };\n    },\n    logNormal: function() {\n      var random = d3.random.normal.apply(d3, arguments);\n      return function() {\n        return Math.exp(random());\n      };\n    },\n    bates: function(m) {\n      var random = d3.random.irwinHall(m);\n      return function() {\n        return random() / m;\n      };\n    },\n    irwinHall: function(m) {\n      return function() {\n        for (var s = 0, j = 0; j < m; j++) s += Math.random();\n        return s;\n      };\n    }\n  };\n  d3.scale = {};\n  function d3_scaleExtent(domain) {\n    var start = domain[0], stop = domain[domain.length - 1];\n    return start < stop ? [ start, stop ] : [ stop, start ];\n  }\n  function d3_scaleRange(scale) {\n    return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n  }\n  function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n    var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n    return function(x) {\n      return i(u(x));\n    };\n  }\n  function d3_scale_nice(domain, nice) {\n    var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n    if (x1 < x0) {\n      dx = i0, i0 = i1, i1 = dx;\n      dx = x0, x0 = x1, x1 = dx;\n    }\n    domain[i0] = nice.floor(x0);\n    domain[i1] = nice.ceil(x1);\n    return domain;\n  }\n  function d3_scale_niceStep(step) {\n    return step ? {\n      floor: function(x) {\n        return Math.floor(x / step) * step;\n      },\n      ceil: function(x) {\n        return Math.ceil(x / step) * step;\n      }\n    } : d3_scale_niceIdentity;\n  }\n  var d3_scale_niceIdentity = {\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n    var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n    if (domain[k] < domain[0]) {\n      domain = domain.slice().reverse();\n      range = range.slice().reverse();\n    }\n    while (++j <= k) {\n      u.push(uninterpolate(domain[j - 1], domain[j]));\n      i.push(interpolate(range[j - 1], range[j]));\n    }\n    return function(x) {\n      var j = d3.bisect(domain, x, 1, k) - 1;\n      return i[j](u[j](x));\n    };\n  }\n  d3.scale.linear = function() {\n    return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n  };\n  function d3_scale_linear(domain, range, interpolate, clamp) {\n    var output, input;\n    function rescale() {\n      var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n      output = linear(domain, range, uninterpolate, interpolate);\n      input = linear(range, domain, uninterpolate, d3_interpolate);\n      return scale;\n    }\n    function scale(x) {\n      return output(x);\n    }\n    scale.invert = function(y) {\n      return input(y);\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(Number);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.rangeRound = function(x) {\n      return scale.range(x).interpolate(d3_interpolateRound);\n    };\n    scale.clamp = function(x) {\n      if (!arguments.length) return clamp;\n      clamp = x;\n      return rescale();\n    };\n    scale.interpolate = function(x) {\n      if (!arguments.length) return interpolate;\n      interpolate = x;\n      return rescale();\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      d3_scale_linearNice(domain, m);\n      return rescale();\n    };\n    scale.copy = function() {\n      return d3_scale_linear(domain, range, interpolate, clamp);\n    };\n    return rescale();\n  }\n  function d3_scale_linearRebind(scale, linear) {\n    return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n  }\n  function d3_scale_linearNice(domain, m) {\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n    return domain;\n  }\n  function d3_scale_linearTickRange(domain, m) {\n    if (m == null) m = 10;\n    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;\n    if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n    extent[0] = Math.ceil(extent[0] / step) * step;\n    extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n    extent[2] = step;\n    return extent;\n  }\n  function d3_scale_linearTicks(domain, m) {\n    return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n  }\n  function d3_scale_linearTickFormat(domain, m, format) {\n    var range = d3_scale_linearTickRange(domain, m);\n    if (format) {\n      var match = d3_format_re.exec(format);\n      match.shift();\n      if (match[8] === \"s\") {\n        var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n        if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n        match[8] = \"f\";\n        format = d3.format(match.join(\"\"));\n        return function(d) {\n          return format(prefix.scale(d)) + prefix.symbol;\n        };\n      }\n      if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n      format = match.join(\"\");\n    } else {\n      format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n    }\n    return d3.format(format);\n  }\n  var d3_scale_linearFormatSignificant = {\n    s: 1,\n    g: 1,\n    p: 1,\n    r: 1,\n    e: 1\n  };\n  function d3_scale_linearPrecision(value) {\n    return -Math.floor(Math.log(value) / Math.LN10 + .01);\n  }\n  function d3_scale_linearFormatPrecision(type, range) {\n    var p = d3_scale_linearPrecision(range[2]);\n    return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n  }\n  d3.scale.log = function() {\n    return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n  };\n  function d3_scale_log(linear, base, positive, domain) {\n    function log(x) {\n      return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n    }\n    function pow(x) {\n      return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n    }\n    function scale(x) {\n      return linear(log(x));\n    }\n    scale.invert = function(x) {\n      return pow(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      positive = x[0] >= 0;\n      linear.domain((domain = x.map(Number)).map(log));\n      return scale;\n    };\n    scale.base = function(_) {\n      if (!arguments.length) return base;\n      base = +_;\n      linear.domain(domain.map(log));\n      return scale;\n    };\n    scale.nice = function() {\n      var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n      linear.domain(niced);\n      domain = niced.map(pow);\n      return scale;\n    };\n    scale.ticks = function() {\n      var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n      if (isFinite(j - i)) {\n        if (positive) {\n          for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n          ticks.push(pow(i));\n        } else {\n          ticks.push(pow(i));\n          for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n        }\n        for (i = 0; ticks[i] < u; i++) {}\n        for (j = ticks.length; ticks[j - 1] > v; j--) {}\n        ticks = ticks.slice(i, j);\n      }\n      return ticks;\n    };\n    scale.tickFormat = function(n, format) {\n      if (!arguments.length) return d3_scale_logFormat;\n      if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n      var k = Math.max(1, base * n / scale.ticks().length);\n      return function(d) {\n        var i = d / pow(Math.round(log(d)));\n        if (i * base < base - .5) i *= base;\n        return i <= k ? format(d) : \"\";\n      };\n    };\n    scale.copy = function() {\n      return d3_scale_log(linear.copy(), base, positive, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n    floor: function(x) {\n      return -Math.ceil(-x);\n    },\n    ceil: function(x) {\n      return -Math.floor(-x);\n    }\n  };\n  d3.scale.pow = function() {\n    return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n  };\n  function d3_scale_pow(linear, exponent, domain) {\n    var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n    function scale(x) {\n      return linear(powp(x));\n    }\n    scale.invert = function(x) {\n      return powb(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      linear.domain((domain = x.map(Number)).map(powp));\n      return scale;\n    };\n    scale.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    scale.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    scale.nice = function(m) {\n      return scale.domain(d3_scale_linearNice(domain, m));\n    };\n    scale.exponent = function(x) {\n      if (!arguments.length) return exponent;\n      powp = d3_scale_powPow(exponent = x);\n      powb = d3_scale_powPow(1 / exponent);\n      linear.domain(domain.map(powp));\n      return scale;\n    };\n    scale.copy = function() {\n      return d3_scale_pow(linear.copy(), exponent, domain);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_scale_powPow(e) {\n    return function(x) {\n      return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n    };\n  }\n  d3.scale.sqrt = function() {\n    return d3.scale.pow().exponent(.5);\n  };\n  d3.scale.ordinal = function() {\n    return d3_scale_ordinal([], {\n      t: \"range\",\n      a: [ [] ]\n    });\n  };\n  function d3_scale_ordinal(domain, ranger) {\n    var index, range, rangeBand;\n    function scale(x) {\n      return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n    }\n    function steps(start, step) {\n      return d3.range(domain.length).map(function(i) {\n        return start + step * i;\n      });\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = [];\n      index = new d3_Map();\n      var i = -1, n = x.length, xi;\n      while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n      return scale[ranger.t].apply(scale, ranger.a);\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      rangeBand = 0;\n      ranger = {\n        t: \"range\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangePoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n      0) : (stop - start) / (domain.length - 1 + padding);\n      range = steps(start + step * padding / 2, step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangePoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundPoints = function(x, padding) {\n      if (arguments.length < 2) padding = 0;\n      var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n      0) : (stop - start) / (domain.length - 1 + padding) | 0;\n      range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n      rangeBand = 0;\n      ranger = {\n        t: \"rangeRoundPoints\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n      range = steps(start + step * outerPadding, step);\n      if (reverse) range.reverse();\n      rangeBand = step * (1 - padding);\n      ranger = {\n        t: \"rangeBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeRoundBands = function(x, padding, outerPadding) {\n      if (arguments.length < 2) padding = 0;\n      if (arguments.length < 3) outerPadding = padding;\n      var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n      range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n      if (reverse) range.reverse();\n      rangeBand = Math.round(step * (1 - padding));\n      ranger = {\n        t: \"rangeRoundBands\",\n        a: arguments\n      };\n      return scale;\n    };\n    scale.rangeBand = function() {\n      return rangeBand;\n    };\n    scale.rangeExtent = function() {\n      return d3_scaleExtent(ranger.a[0]);\n    };\n    scale.copy = function() {\n      return d3_scale_ordinal(domain, ranger);\n    };\n    return scale.domain(domain);\n  }\n  d3.scale.category10 = function() {\n    return d3.scale.ordinal().range(d3_category10);\n  };\n  d3.scale.category20 = function() {\n    return d3.scale.ordinal().range(d3_category20);\n  };\n  d3.scale.category20b = function() {\n    return d3.scale.ordinal().range(d3_category20b);\n  };\n  d3.scale.category20c = function() {\n    return d3.scale.ordinal().range(d3_category20c);\n  };\n  var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n  var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n  var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n  var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n  d3.scale.quantile = function() {\n    return d3_scale_quantile([], []);\n  };\n  function d3_scale_quantile(domain, range) {\n    var thresholds;\n    function rescale() {\n      var k = 0, q = range.length;\n      thresholds = [];\n      while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n      return scale;\n    }\n    function scale(x) {\n      if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.quantiles = function() {\n      return thresholds;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantile(domain, range);\n    };\n    return rescale();\n  }\n  d3.scale.quantize = function() {\n    return d3_scale_quantize(0, 1, [ 0, 1 ]);\n  };\n  function d3_scale_quantize(x0, x1, range) {\n    var kx, i;\n    function scale(x) {\n      return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n    }\n    function rescale() {\n      kx = range.length / (x1 - x0);\n      i = range.length - 1;\n      return scale;\n    }\n    scale.domain = function(x) {\n      if (!arguments.length) return [ x0, x1 ];\n      x0 = +x[0];\n      x1 = +x[x.length - 1];\n      return rescale();\n    };\n    scale.range = function(x) {\n      if (!arguments.length) return range;\n      range = x;\n      return rescale();\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      y = y < 0 ? NaN : y / kx + x0;\n      return [ y, y + 1 / kx ];\n    };\n    scale.copy = function() {\n      return d3_scale_quantize(x0, x1, range);\n    };\n    return rescale();\n  }\n  d3.scale.threshold = function() {\n    return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n  };\n  function d3_scale_threshold(domain, range) {\n    function scale(x) {\n      if (x <= x) return range[d3.bisect(domain, x)];\n    }\n    scale.domain = function(_) {\n      if (!arguments.length) return domain;\n      domain = _;\n      return scale;\n    };\n    scale.range = function(_) {\n      if (!arguments.length) return range;\n      range = _;\n      return scale;\n    };\n    scale.invertExtent = function(y) {\n      y = range.indexOf(y);\n      return [ domain[y - 1], domain[y] ];\n    };\n    scale.copy = function() {\n      return d3_scale_threshold(domain, range);\n    };\n    return scale;\n  }\n  d3.scale.identity = function() {\n    return d3_scale_identity([ 0, 1 ]);\n  };\n  function d3_scale_identity(domain) {\n    function identity(x) {\n      return +x;\n    }\n    identity.invert = identity;\n    identity.domain = identity.range = function(x) {\n      if (!arguments.length) return domain;\n      domain = x.map(identity);\n      return identity;\n    };\n    identity.ticks = function(m) {\n      return d3_scale_linearTicks(domain, m);\n    };\n    identity.tickFormat = function(m, format) {\n      return d3_scale_linearTickFormat(domain, m, format);\n    };\n    identity.copy = function() {\n      return d3_scale_identity(domain);\n    };\n    return identity;\n  }\n  d3.svg = {};\n  function d3_zero() {\n    return 0;\n  }\n  d3.svg.arc = function() {\n    var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n    function arc() {\n      var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n      if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n      if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n      var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n      if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n        rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n        if (!cw) p1 *= -1;\n        if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n        if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n      }\n      if (r1) {\n        x0 = r1 * Math.cos(a0 + p1);\n        y0 = r1 * Math.sin(a0 + p1);\n        x1 = r1 * Math.cos(a1 - p1);\n        y1 = r1 * Math.sin(a1 - p1);\n        var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n        if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n          var h1 = (a0 + a1) / 2;\n          x0 = r1 * Math.cos(h1);\n          y0 = r1 * Math.sin(h1);\n          x1 = y1 = null;\n        }\n      } else {\n        x0 = y0 = 0;\n      }\n      if (r0) {\n        x2 = r0 * Math.cos(a1 - p0);\n        y2 = r0 * Math.sin(a1 - p0);\n        x3 = r0 * Math.cos(a0 + p0);\n        y3 = r0 * Math.sin(a0 + p0);\n        var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n        if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n          var h0 = (a0 + a1) / 2;\n          x2 = r0 * Math.cos(h0);\n          y2 = r0 * Math.sin(h0);\n          x3 = y3 = null;\n        }\n      } else {\n        x2 = y2 = 0;\n      }\n      if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n        cr = r0 < r1 ^ cw ? 0 : 1;\n        var rc1 = rc, rc0 = rc;\n        if (da < π) {\n          var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n          rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n        }\n        if (x1 != null) {\n          var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n          if (rc === rc1) {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n          } else {\n            path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n          }\n        } else {\n          path.push(\"M\", x0, \",\", y0);\n        }\n        if (x3 != null) {\n          var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n          if (rc === rc0) {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          } else {\n            path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n          }\n        } else {\n          path.push(\"L\", x2, \",\", y2);\n        }\n      } else {\n        path.push(\"M\", x0, \",\", y0);\n        if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n        path.push(\"L\", x2, \",\", y2);\n        if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n      }\n      path.push(\"Z\");\n      return path.join(\"\");\n    }\n    function circleSegment(r1, cw) {\n      return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n    }\n    arc.innerRadius = function(v) {\n      if (!arguments.length) return innerRadius;\n      innerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.outerRadius = function(v) {\n      if (!arguments.length) return outerRadius;\n      outerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.cornerRadius = function(v) {\n      if (!arguments.length) return cornerRadius;\n      cornerRadius = d3_functor(v);\n      return arc;\n    };\n    arc.padRadius = function(v) {\n      if (!arguments.length) return padRadius;\n      padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n      return arc;\n    };\n    arc.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return arc;\n    };\n    arc.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return arc;\n    };\n    arc.padAngle = function(v) {\n      if (!arguments.length) return padAngle;\n      padAngle = d3_functor(v);\n      return arc;\n    };\n    arc.centroid = function() {\n      var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n      return [ Math.cos(a) * r, Math.sin(a) * r ];\n    };\n    return arc;\n  };\n  var d3_svg_arcAuto = \"auto\";\n  function d3_svg_arcInnerRadius(d) {\n    return d.innerRadius;\n  }\n  function d3_svg_arcOuterRadius(d) {\n    return d.outerRadius;\n  }\n  function d3_svg_arcStartAngle(d) {\n    return d.startAngle;\n  }\n  function d3_svg_arcEndAngle(d) {\n    return d.endAngle;\n  }\n  function d3_svg_arcPadAngle(d) {\n    return d && d.padAngle;\n  }\n  function d3_svg_arcSweep(x0, y0, x1, y1) {\n    return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n  }\n  function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n    var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n    if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n    return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n  }\n  function d3_svg_line(projection) {\n    var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n    function line(data) {\n      var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points), tension));\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n        } else if (points.length) {\n          segment();\n          points = [];\n        }\n      }\n      if (points.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    line.x = function(_) {\n      if (!arguments.length) return x;\n      x = _;\n      return line;\n    };\n    line.y = function(_) {\n      if (!arguments.length) return y;\n      y = _;\n      return line;\n    };\n    line.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return line;\n    };\n    line.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      return line;\n    };\n    line.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return line;\n    };\n    return line;\n  }\n  d3.svg.line = function() {\n    return d3_svg_line(d3_identity);\n  };\n  var d3_svg_lineInterpolators = d3.map({\n    linear: d3_svg_lineLinear,\n    \"linear-closed\": d3_svg_lineLinearClosed,\n    step: d3_svg_lineStep,\n    \"step-before\": d3_svg_lineStepBefore,\n    \"step-after\": d3_svg_lineStepAfter,\n    basis: d3_svg_lineBasis,\n    \"basis-open\": d3_svg_lineBasisOpen,\n    \"basis-closed\": d3_svg_lineBasisClosed,\n    bundle: d3_svg_lineBundle,\n    cardinal: d3_svg_lineCardinal,\n    \"cardinal-open\": d3_svg_lineCardinalOpen,\n    \"cardinal-closed\": d3_svg_lineCardinalClosed,\n    monotone: d3_svg_lineMonotone\n  });\n  d3_svg_lineInterpolators.forEach(function(key, value) {\n    value.key = key;\n    value.closed = /-closed$/.test(key);\n  });\n  function d3_svg_lineLinear(points) {\n    return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n  }\n  function d3_svg_lineLinearClosed(points) {\n    return points.join(\"L\") + \"Z\";\n  }\n  function d3_svg_lineStep(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n    if (n > 1) path.push(\"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepBefore(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineStepAfter(points) {\n    var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n    while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n    return path.join(\"\");\n  }\n  function d3_svg_lineCardinalOpen(points, tension) {\n    return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineCardinalClosed(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n    points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n  }\n  function d3_svg_lineCardinal(points, tension) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n  }\n  function d3_svg_lineHermite(points, tangents) {\n    if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n      return d3_svg_lineLinear(points);\n    }\n    var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n    if (quad) {\n      path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n      p0 = points[1];\n      pi = 2;\n    }\n    if (tangents.length > 1) {\n      t = tangents[1];\n      p = points[pi];\n      pi++;\n      path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      for (var i = 2; i < tangents.length; i++, pi++) {\n        p = points[pi];\n        t = tangents[i];\n        path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n      }\n    }\n    if (quad) {\n      var lp = points[pi];\n      path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n    }\n    return path;\n  }\n  function d3_svg_lineCardinalTangents(points, tension) {\n    var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n    while (++i < n) {\n      p0 = p1;\n      p1 = p2;\n      p2 = points[i];\n      tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineBasis(points) {\n    if (points.length < 3) return d3_svg_lineLinear(points);\n    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, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    points.push(points[n - 1]);\n    while (++i <= n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    points.pop();\n    path.push(\"L\", pi);\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisOpen(points) {\n    if (points.length < 4) return d3_svg_lineLinear(points);\n    var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n    while (++i < 3) {\n      pi = points[i];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n    --i;\n    while (++i < n) {\n      pi = points[i];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBasisClosed(points) {\n    var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n    while (++i < 4) {\n      pi = points[i % n];\n      px.push(pi[0]);\n      py.push(pi[1]);\n    }\n    path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n    --i;\n    while (++i < m) {\n      pi = points[i % n];\n      px.shift();\n      px.push(pi[0]);\n      py.shift();\n      py.push(pi[1]);\n      d3_svg_lineBasisBezier(path, px, py);\n    }\n    return path.join(\"\");\n  }\n  function d3_svg_lineBundle(points, tension) {\n    var n = points.length - 1;\n    if (n) {\n      var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n      while (++i <= n) {\n        p = points[i];\n        t = i / n;\n        p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n        p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n      }\n    }\n    return d3_svg_lineBasis(points);\n  }\n  function d3_svg_lineDot4(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n  }\n  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 ];\n  function d3_svg_lineBasisBezier(path, x, y) {\n    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));\n  }\n  function d3_svg_lineSlope(p0, p1) {\n    return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n  }\n  function d3_svg_lineFiniteDifferences(points) {\n    var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n    while (++i < j) {\n      m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n    }\n    m[i] = d;\n    return m;\n  }\n  function d3_svg_lineMonotoneTangents(points) {\n    var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n    while (++i < j) {\n      d = d3_svg_lineSlope(points[i], points[i + 1]);\n      if (abs(d) < ε) {\n        m[i] = m[i + 1] = 0;\n      } else {\n        a = m[i] / d;\n        b = m[i + 1] / d;\n        s = a * a + b * b;\n        if (s > 9) {\n          s = d * 3 / Math.sqrt(s);\n          m[i] = s * a;\n          m[i + 1] = s * b;\n        }\n      }\n    }\n    i = -1;\n    while (++i <= j) {\n      s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n      tangents.push([ s || 0, m[i] * s || 0 ]);\n    }\n    return tangents;\n  }\n  function d3_svg_lineMonotone(points) {\n    return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n  }\n  d3.svg.line.radial = function() {\n    var line = d3_svg_line(d3_svg_lineRadial);\n    line.radius = line.x, delete line.x;\n    line.angle = line.y, delete line.y;\n    return line;\n  };\n  function d3_svg_lineRadial(points) {\n    var point, i = -1, n = points.length, r, a;\n    while (++i < n) {\n      point = points[i];\n      r = point[0];\n      a = point[1] - halfπ;\n      point[0] = r * Math.cos(a);\n      point[1] = r * Math.sin(a);\n    }\n    return points;\n  }\n  function d3_svg_area(projection) {\n    var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n    function area(data) {\n      var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n        return x;\n      } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n        return y;\n      } : d3_functor(y1), x, y;\n      function segment() {\n        segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n      }\n      while (++i < n) {\n        if (defined.call(this, d = data[i], i)) {\n          points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n          points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n        } else if (points0.length) {\n          segment();\n          points0 = [];\n          points1 = [];\n        }\n      }\n      if (points0.length) segment();\n      return segments.length ? segments.join(\"\") : null;\n    }\n    area.x = function(_) {\n      if (!arguments.length) return x1;\n      x0 = x1 = _;\n      return area;\n    };\n    area.x0 = function(_) {\n      if (!arguments.length) return x0;\n      x0 = _;\n      return area;\n    };\n    area.x1 = function(_) {\n      if (!arguments.length) return x1;\n      x1 = _;\n      return area;\n    };\n    area.y = function(_) {\n      if (!arguments.length) return y1;\n      y0 = y1 = _;\n      return area;\n    };\n    area.y0 = function(_) {\n      if (!arguments.length) return y0;\n      y0 = _;\n      return area;\n    };\n    area.y1 = function(_) {\n      if (!arguments.length) return y1;\n      y1 = _;\n      return area;\n    };\n    area.defined = function(_) {\n      if (!arguments.length) return defined;\n      defined = _;\n      return area;\n    };\n    area.interpolate = function(_) {\n      if (!arguments.length) return interpolateKey;\n      if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n      interpolateReverse = interpolate.reverse || interpolate;\n      L = interpolate.closed ? \"M\" : \"L\";\n      return area;\n    };\n    area.tension = function(_) {\n      if (!arguments.length) return tension;\n      tension = _;\n      return area;\n    };\n    return area;\n  }\n  d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n  d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n  d3.svg.area = function() {\n    return d3_svg_area(d3_identity);\n  };\n  d3.svg.area.radial = function() {\n    var area = d3_svg_area(d3_svg_lineRadial);\n    area.radius = area.x, delete area.x;\n    area.innerRadius = area.x0, delete area.x0;\n    area.outerRadius = area.x1, delete area.x1;\n    area.angle = area.y, delete area.y;\n    area.startAngle = area.y0, delete area.y0;\n    area.endAngle = area.y1, delete area.y1;\n    return area;\n  };\n  d3.svg.chord = function() {\n    var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n    function chord(d, i) {\n      var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n      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\";\n    }\n    function subgroup(self, f, d, i) {\n      var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n      return {\n        r: r,\n        a0: a0,\n        a1: a1,\n        p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n        p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n      };\n    }\n    function equals(a, b) {\n      return a.a0 == b.a0 && a.a1 == b.a1;\n    }\n    function arc(r, p, a) {\n      return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n    }\n    function curve(r0, p0, r1, p1) {\n      return \"Q 0,0 \" + p1;\n    }\n    chord.radius = function(v) {\n      if (!arguments.length) return radius;\n      radius = d3_functor(v);\n      return chord;\n    };\n    chord.source = function(v) {\n      if (!arguments.length) return source;\n      source = d3_functor(v);\n      return chord;\n    };\n    chord.target = function(v) {\n      if (!arguments.length) return target;\n      target = d3_functor(v);\n      return chord;\n    };\n    chord.startAngle = function(v) {\n      if (!arguments.length) return startAngle;\n      startAngle = d3_functor(v);\n      return chord;\n    };\n    chord.endAngle = function(v) {\n      if (!arguments.length) return endAngle;\n      endAngle = d3_functor(v);\n      return chord;\n    };\n    return chord;\n  };\n  function d3_svg_chordRadius(d) {\n    return d.radius;\n  }\n  d3.svg.diagonal = function() {\n    var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n    function diagonal(d, i) {\n      var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n        x: p0.x,\n        y: m\n      }, {\n        x: p3.x,\n        y: m\n      }, p3 ];\n      p = p.map(projection);\n      return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n    }\n    diagonal.source = function(x) {\n      if (!arguments.length) return source;\n      source = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.target = function(x) {\n      if (!arguments.length) return target;\n      target = d3_functor(x);\n      return diagonal;\n    };\n    diagonal.projection = function(x) {\n      if (!arguments.length) return projection;\n      projection = x;\n      return diagonal;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalProjection(d) {\n    return [ d.x, d.y ];\n  }\n  d3.svg.diagonal.radial = function() {\n    var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n    diagonal.projection = function(x) {\n      return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n    };\n    return diagonal;\n  };\n  function d3_svg_diagonalRadialProjection(projection) {\n    return function() {\n      var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n      return [ r * Math.cos(a), r * Math.sin(a) ];\n    };\n  }\n  d3.svg.symbol = function() {\n    var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n    function symbol(d, i) {\n      return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n    }\n    symbol.type = function(x) {\n      if (!arguments.length) return type;\n      type = d3_functor(x);\n      return symbol;\n    };\n    symbol.size = function(x) {\n      if (!arguments.length) return size;\n      size = d3_functor(x);\n      return symbol;\n    };\n    return symbol;\n  };\n  function d3_svg_symbolSize() {\n    return 64;\n  }\n  function d3_svg_symbolType() {\n    return \"circle\";\n  }\n  function d3_svg_symbolCircle(size) {\n    var r = Math.sqrt(size / π);\n    return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n  }\n  var d3_svg_symbols = d3.map({\n    circle: d3_svg_symbolCircle,\n    cross: function(size) {\n      var r = Math.sqrt(size / 5) / 2;\n      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\";\n    },\n    diamond: function(size) {\n      var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n      return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n    },\n    square: function(size) {\n      var r = Math.sqrt(size) / 2;\n      return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n    },\n    \"triangle-down\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n    },\n    \"triangle-up\": function(size) {\n      var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n      return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n    }\n  });\n  d3.svg.symbolTypes = d3_svg_symbols.keys();\n  var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n  d3_selectionPrototype.transition = function(name) {\n    var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n      time: Date.now(),\n      ease: d3_ease_cubicInOut,\n      delay: 0,\n      duration: 250\n    };\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_selectionPrototype.interrupt = function(name) {\n    return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n  };\n  var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n  function d3_selection_interruptNS(ns) {\n    return function() {\n      var lock, activeId, active;\n      if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        if (--lock.count) delete lock[activeId]; else delete this[ns];\n        lock.active += .5;\n        active.event && active.event.interrupt.call(this, this.__data__, active.index);\n      }\n    };\n  }\n  function d3_transition(groups, ns, id) {\n    d3_subclass(groups, d3_transitionPrototype);\n    groups.namespace = ns;\n    groups.id = id;\n    return groups;\n  }\n  var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n  d3_transitionPrototype.call = d3_selectionPrototype.call;\n  d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n  d3_transitionPrototype.node = d3_selectionPrototype.node;\n  d3_transitionPrototype.size = d3_selectionPrototype.size;\n  d3.transition = function(selection, name) {\n    return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n  };\n  d3.transition.prototype = d3_transitionPrototype;\n  d3_transitionPrototype.select = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n    selector = d3_selection_selector(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n          if (\"__data__\" in node) subnode.__data__ = node.__data__;\n          d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n          subgroup.push(subnode);\n        } else {\n          subgroup.push(null);\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.selectAll = function(selector) {\n    var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n    selector = d3_selection_selectorAll(selector);\n    for (var j = -1, m = this.length; ++j < m; ) {\n      for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n        if (node = group[i]) {\n          transition = node[ns][id];\n          subnodes = selector.call(node, node.__data__, i, j);\n          subgroups.push(subgroup = []);\n          for (var k = -1, o = subnodes.length; ++k < o; ) {\n            if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n            subgroup.push(subnode);\n          }\n        }\n      }\n    }\n    return d3_transition(subgroups, ns, id);\n  };\n  d3_transitionPrototype.filter = function(filter) {\n    var subgroups = [], subgroup, group, node;\n    if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n          subgroup.push(node);\n        }\n      }\n    }\n    return d3_transition(subgroups, this.namespace, this.id);\n  };\n  d3_transitionPrototype.tween = function(name, tween) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n    return d3_selection_each(this, tween == null ? function(node) {\n      node[ns][id].tween.remove(name);\n    } : function(node) {\n      node[ns][id].tween.set(name, tween);\n    });\n  };\n  function d3_transition_tween(groups, name, value, tween) {\n    var id = groups.id, ns = groups.namespace;\n    return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n    } : (value = tween(value), function(node) {\n      node[ns][id].tween.set(name, value);\n    }));\n  }\n  d3_transitionPrototype.attr = function(nameNS, value) {\n    if (arguments.length < 2) {\n      for (value in nameNS) this.attr(value, nameNS[value]);\n      return this;\n    }\n    var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n    function attrNull() {\n      this.removeAttribute(name);\n    }\n    function attrNullNS() {\n      this.removeAttributeNS(name.space, name.local);\n    }\n    function attrTween(b) {\n      return b == null ? attrNull : (b += \"\", function() {\n        var a = this.getAttribute(name), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttribute(name, i(t));\n        });\n      });\n    }\n    function attrTweenNS(b) {\n      return b == null ? attrNullNS : (b += \"\", function() {\n        var a = this.getAttributeNS(name.space, name.local), i;\n        return a !== b && (i = interpolate(a, b), function(t) {\n          this.setAttributeNS(name.space, name.local, i(t));\n        });\n      });\n    }\n    return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.attrTween = function(nameNS, tween) {\n    var name = d3.ns.qualify(nameNS);\n    function attrTween(d, i) {\n      var f = tween.call(this, d, i, this.getAttribute(name));\n      return f && function(t) {\n        this.setAttribute(name, f(t));\n      };\n    }\n    function attrTweenNS(d, i) {\n      var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n      return f && function(t) {\n        this.setAttributeNS(name.space, name.local, f(t));\n      };\n    }\n    return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n  };\n  d3_transitionPrototype.style = function(name, value, priority) {\n    var n = arguments.length;\n    if (n < 3) {\n      if (typeof name !== \"string\") {\n        if (n < 2) value = \"\";\n        for (priority in name) this.style(priority, name[priority], value);\n        return this;\n      }\n      priority = \"\";\n    }\n    function styleNull() {\n      this.style.removeProperty(name);\n    }\n    function styleString(b) {\n      return b == null ? styleNull : (b += \"\", function() {\n        var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n        return a !== b && (i = d3_interpolate(a, b), function(t) {\n          this.style.setProperty(name, i(t), priority);\n        });\n      });\n    }\n    return d3_transition_tween(this, \"style.\" + name, value, styleString);\n  };\n  d3_transitionPrototype.styleTween = function(name, tween, priority) {\n    if (arguments.length < 3) priority = \"\";\n    function styleTween(d, i) {\n      var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n      return f && function(t) {\n        this.style.setProperty(name, f(t), priority);\n      };\n    }\n    return this.tween(\"style.\" + name, styleTween);\n  };\n  d3_transitionPrototype.text = function(value) {\n    return d3_transition_tween(this, \"text\", value, d3_transition_text);\n  };\n  function d3_transition_text(b) {\n    if (b == null) b = \"\";\n    return function() {\n      this.textContent = b;\n    };\n  }\n  d3_transitionPrototype.remove = function() {\n    var ns = this.namespace;\n    return this.each(\"end.transition\", function() {\n      var p;\n      if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n    });\n  };\n  d3_transitionPrototype.ease = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].ease;\n    if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n    return d3_selection_each(this, function(node) {\n      node[ns][id].ease = value;\n    });\n  };\n  d3_transitionPrototype.delay = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].delay;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].delay = +value.call(node, node.__data__, i, j);\n    } : (value = +value, function(node) {\n      node[ns][id].delay = value;\n    }));\n  };\n  d3_transitionPrototype.duration = function(value) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 1) return this.node()[ns][id].duration;\n    return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n      node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n    } : (value = Math.max(1, value), function(node) {\n      node[ns][id].duration = value;\n    }));\n  };\n  d3_transitionPrototype.each = function(type, listener) {\n    var id = this.id, ns = this.namespace;\n    if (arguments.length < 2) {\n      var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n      try {\n        d3_transitionInheritId = id;\n        d3_selection_each(this, function(node, i, j) {\n          d3_transitionInherit = node[ns][id];\n          type.call(node, node.__data__, i, j);\n        });\n      } finally {\n        d3_transitionInherit = inherit;\n        d3_transitionInheritId = inheritId;\n      }\n    } else {\n      d3_selection_each(this, function(node) {\n        var transition = node[ns][id];\n        (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n      });\n    }\n    return this;\n  };\n  d3_transitionPrototype.transition = function() {\n    var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n    for (var j = 0, m = this.length; j < m; j++) {\n      subgroups.push(subgroup = []);\n      for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n        if (node = group[i]) {\n          transition = node[ns][id0];\n          d3_transitionNode(node, i, ns, id1, {\n            time: transition.time,\n            ease: transition.ease,\n            delay: transition.delay + transition.duration,\n            duration: transition.duration\n          });\n        }\n        subgroup.push(node);\n      }\n    }\n    return d3_transition(subgroups, ns, id1);\n  };\n  function d3_transitionNamespace(name) {\n    return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n  }\n  function d3_transitionNode(node, i, ns, id, inherit) {\n    var lock = node[ns] || (node[ns] = {\n      active: 0,\n      count: 0\n    }), transition = lock[id], time, timer, duration, ease, tweens;\n    function schedule(elapsed) {\n      var delay = transition.delay;\n      timer.t = delay + time;\n      if (delay <= elapsed) return start(elapsed - delay);\n      timer.c = start;\n    }\n    function start(elapsed) {\n      var activeId = lock.active, active = lock[activeId];\n      if (active) {\n        active.timer.c = null;\n        active.timer.t = NaN;\n        --lock.count;\n        delete lock[activeId];\n        active.event && active.event.interrupt.call(node, node.__data__, active.index);\n      }\n      for (var cancelId in lock) {\n        if (+cancelId < id) {\n          var cancel = lock[cancelId];\n          cancel.timer.c = null;\n          cancel.timer.t = NaN;\n          --lock.count;\n          delete lock[cancelId];\n        }\n      }\n      timer.c = tick;\n      d3_timer(function() {\n        if (timer.c && tick(elapsed || 1)) {\n          timer.c = null;\n          timer.t = NaN;\n        }\n        return 1;\n      }, 0, time);\n      lock.active = id;\n      transition.event && transition.event.start.call(node, node.__data__, i);\n      tweens = [];\n      transition.tween.forEach(function(key, value) {\n        if (value = value.call(node, node.__data__, i)) {\n          tweens.push(value);\n        }\n      });\n      ease = transition.ease;\n      duration = transition.duration;\n    }\n    function tick(elapsed) {\n      var t = elapsed / duration, e = ease(t), n = tweens.length;\n      while (n > 0) {\n        tweens[--n].call(node, e);\n      }\n      if (t >= 1) {\n        transition.event && transition.event.end.call(node, node.__data__, i);\n        if (--lock.count) delete lock[id]; else delete node[ns];\n        return 1;\n      }\n    }\n    if (!transition) {\n      time = inherit.time;\n      timer = d3_timer(schedule, 0, time);\n      transition = lock[id] = {\n        tween: new d3_Map(),\n        time: time,\n        timer: timer,\n        delay: inherit.delay,\n        duration: inherit.duration,\n        ease: inherit.ease,\n        index: i\n      };\n      inherit = null;\n      ++lock.count;\n    }\n  }\n  d3.svg.axis = function() {\n    var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n    function axis(g) {\n      g.each(function() {\n        var g = d3.select(this);\n        var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n        var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n        var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n        d3.transition(path));\n        tickEnter.append(\"line\");\n        tickEnter.append(\"text\");\n        var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n        if (orient === \"bottom\" || orient === \"top\") {\n          tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n          text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n          pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n        } else {\n          tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n          text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n          pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n        }\n        lineEnter.attr(y2, sign * innerTickSize);\n        textEnter.attr(y1, sign * tickSpacing);\n        lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n        textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n        if (scale1.rangeBand) {\n          var x = scale1, dx = x.rangeBand() / 2;\n          scale0 = scale1 = function(d) {\n            return x(d) + dx;\n          };\n        } else if (scale0.rangeBand) {\n          scale0 = scale1;\n        } else {\n          tickExit.call(tickTransform, scale1, scale0);\n        }\n        tickEnter.call(tickTransform, scale0, scale1);\n        tickUpdate.call(tickTransform, scale1, scale1);\n      });\n    }\n    axis.scale = function(x) {\n      if (!arguments.length) return scale;\n      scale = x;\n      return axis;\n    };\n    axis.orient = function(x) {\n      if (!arguments.length) return orient;\n      orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n      return axis;\n    };\n    axis.ticks = function() {\n      if (!arguments.length) return tickArguments_;\n      tickArguments_ = d3_array(arguments);\n      return axis;\n    };\n    axis.tickValues = function(x) {\n      if (!arguments.length) return tickValues;\n      tickValues = x;\n      return axis;\n    };\n    axis.tickFormat = function(x) {\n      if (!arguments.length) return tickFormat_;\n      tickFormat_ = x;\n      return axis;\n    };\n    axis.tickSize = function(x) {\n      var n = arguments.length;\n      if (!n) return innerTickSize;\n      innerTickSize = +x;\n      outerTickSize = +arguments[n - 1];\n      return axis;\n    };\n    axis.innerTickSize = function(x) {\n      if (!arguments.length) return innerTickSize;\n      innerTickSize = +x;\n      return axis;\n    };\n    axis.outerTickSize = function(x) {\n      if (!arguments.length) return outerTickSize;\n      outerTickSize = +x;\n      return axis;\n    };\n    axis.tickPadding = function(x) {\n      if (!arguments.length) return tickPadding;\n      tickPadding = +x;\n      return axis;\n    };\n    axis.tickSubdivide = function() {\n      return arguments.length && axis;\n    };\n    return axis;\n  };\n  var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n    top: 1,\n    right: 1,\n    bottom: 1,\n    left: 1\n  };\n  function d3_svg_axisX(selection, x0, x1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = x0(d);\n      return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n    });\n  }\n  function d3_svg_axisY(selection, y0, y1) {\n    selection.attr(\"transform\", function(d) {\n      var v0 = y0(d);\n      return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n    });\n  }\n  d3.svg.brush = function() {\n    var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n    function brush(g) {\n      g.each(function() {\n        var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n        var background = g.selectAll(\".background\").data([ 0 ]);\n        background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n        g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n        var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n        resize.exit().remove();\n        resize.enter().append(\"g\").attr(\"class\", function(d) {\n          return \"resize \" + d;\n        }).style(\"cursor\", function(d) {\n          return d3_svg_brushCursor[d];\n        }).append(\"rect\").attr(\"x\", function(d) {\n          return /[ew]$/.test(d) ? -3 : null;\n        }).attr(\"y\", function(d) {\n          return /^[ns]/.test(d) ? -3 : null;\n        }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n        resize.style(\"display\", brush.empty() ? \"none\" : null);\n        var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n        if (x) {\n          range = d3_scaleRange(x);\n          backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n          redrawX(gUpdate);\n        }\n        if (y) {\n          range = d3_scaleRange(y);\n          backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n          redrawY(gUpdate);\n        }\n        redraw(gUpdate);\n      });\n    }\n    brush.event = function(g) {\n      g.each(function() {\n        var event_ = event.of(this, arguments), extent1 = {\n          x: xExtent,\n          y: yExtent,\n          i: xExtentDomain,\n          j: yExtentDomain\n        }, extent0 = this.__chart__ || extent1;\n        this.__chart__ = extent1;\n        if (d3_transitionInheritId) {\n          d3.select(this).transition().each(\"start.brush\", function() {\n            xExtentDomain = extent0.i;\n            yExtentDomain = extent0.j;\n            xExtent = extent0.x;\n            yExtent = extent0.y;\n            event_({\n              type: \"brushstart\"\n            });\n          }).tween(\"brush:brush\", function() {\n            var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n            xExtentDomain = yExtentDomain = null;\n            return function(t) {\n              xExtent = extent1.x = xi(t);\n              yExtent = extent1.y = yi(t);\n              event_({\n                type: \"brush\",\n                mode: \"resize\"\n              });\n            };\n          }).each(\"end.brush\", function() {\n            xExtentDomain = extent1.i;\n            yExtentDomain = extent1.j;\n            event_({\n              type: \"brush\",\n              mode: \"resize\"\n            });\n            event_({\n              type: \"brushend\"\n            });\n          });\n        } else {\n          event_({\n            type: \"brushstart\"\n          });\n          event_({\n            type: \"brush\",\n            mode: \"resize\"\n          });\n          event_({\n            type: \"brushend\"\n          });\n        }\n      });\n    };\n    function redraw(g) {\n      g.selectAll(\".resize\").attr(\"transform\", function(d) {\n        return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n      });\n    }\n    function redrawX(g) {\n      g.select(\".extent\").attr(\"x\", xExtent[0]);\n      g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n    }\n    function redrawY(g) {\n      g.select(\".extent\").attr(\"y\", yExtent[0]);\n      g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n    }\n    function brushstart() {\n      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\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n      var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n      if (d3.event.changedTouches) {\n        w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n      } else {\n        w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n      }\n      g.interrupt().selectAll(\"*\").interrupt();\n      if (dragging) {\n        origin[0] = xExtent[0] - origin[0];\n        origin[1] = yExtent[0] - origin[1];\n      } else if (resizing) {\n        var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n        offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n        origin[0] = xExtent[ex];\n        origin[1] = yExtent[ey];\n      } else if (d3.event.altKey) center = origin.slice();\n      g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n      d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n      event_({\n        type: \"brushstart\"\n      });\n      brushmove();\n      function keydown() {\n        if (d3.event.keyCode == 32) {\n          if (!dragging) {\n            center = null;\n            origin[0] -= xExtent[1];\n            origin[1] -= yExtent[1];\n            dragging = 2;\n          }\n          d3_eventPreventDefault();\n        }\n      }\n      function keyup() {\n        if (d3.event.keyCode == 32 && dragging == 2) {\n          origin[0] += xExtent[1];\n          origin[1] += yExtent[1];\n          dragging = 0;\n          d3_eventPreventDefault();\n        }\n      }\n      function brushmove() {\n        var point = d3.mouse(target), moved = false;\n        if (offset) {\n          point[0] += offset[0];\n          point[1] += offset[1];\n        }\n        if (!dragging) {\n          if (d3.event.altKey) {\n            if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n            origin[0] = xExtent[+(point[0] < center[0])];\n            origin[1] = yExtent[+(point[1] < center[1])];\n          } else center = null;\n        }\n        if (resizingX && move1(point, x, 0)) {\n          redrawX(g);\n          moved = true;\n        }\n        if (resizingY && move1(point, y, 1)) {\n          redrawY(g);\n          moved = true;\n        }\n        if (moved) {\n          redraw(g);\n          event_({\n            type: \"brush\",\n            mode: dragging ? \"move\" : \"resize\"\n          });\n        }\n      }\n      function move1(point, scale, i) {\n        var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n        if (dragging) {\n          r0 -= position;\n          r1 -= size + position;\n        }\n        min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n        if (dragging) {\n          max = (min += position) + size;\n        } else {\n          if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n          if (position < min) {\n            max = min;\n            min = position;\n          } else {\n            max = position;\n          }\n        }\n        if (extent[0] != min || extent[1] != max) {\n          if (i) yExtentDomain = null; else xExtentDomain = null;\n          extent[0] = min;\n          extent[1] = max;\n          return true;\n        }\n      }\n      function brushend() {\n        brushmove();\n        g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n        d3.select(\"body\").style(\"cursor\", null);\n        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);\n        dragRestore();\n        event_({\n          type: \"brushend\"\n        });\n      }\n    }\n    brush.x = function(z) {\n      if (!arguments.length) return x;\n      x = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.y = function(z) {\n      if (!arguments.length) return y;\n      y = z;\n      resizes = d3_svg_brushResizes[!x << 1 | !y];\n      return brush;\n    };\n    brush.clamp = function(z) {\n      if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n      if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n      return brush;\n    };\n    brush.extent = function(z) {\n      var x0, x1, y0, y1, t;\n      if (!arguments.length) {\n        if (x) {\n          if (xExtentDomain) {\n            x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n          } else {\n            x0 = xExtent[0], x1 = xExtent[1];\n            if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n            if (x1 < x0) t = x0, x0 = x1, x1 = t;\n          }\n        }\n        if (y) {\n          if (yExtentDomain) {\n            y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n          } else {\n            y0 = yExtent[0], y1 = yExtent[1];\n            if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n            if (y1 < y0) t = y0, y0 = y1, y1 = t;\n          }\n        }\n        return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n      }\n      if (x) {\n        x0 = z[0], x1 = z[1];\n        if (y) x0 = x0[0], x1 = x1[0];\n        xExtentDomain = [ x0, x1 ];\n        if (x.invert) x0 = x(x0), x1 = x(x1);\n        if (x1 < x0) t = x0, x0 = x1, x1 = t;\n        if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n      }\n      if (y) {\n        y0 = z[0], y1 = z[1];\n        if (x) y0 = y0[1], y1 = y1[1];\n        yExtentDomain = [ y0, y1 ];\n        if (y.invert) y0 = y(y0), y1 = y(y1);\n        if (y1 < y0) t = y0, y0 = y1, y1 = t;\n        if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n      }\n      return brush;\n    };\n    brush.clear = function() {\n      if (!brush.empty()) {\n        xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n        xExtentDomain = yExtentDomain = null;\n      }\n      return brush;\n    };\n    brush.empty = function() {\n      return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n    };\n    return d3.rebind(brush, event, \"on\");\n  };\n  var d3_svg_brushCursor = {\n    n: \"ns-resize\",\n    e: \"ew-resize\",\n    s: \"ns-resize\",\n    w: \"ew-resize\",\n    nw: \"nwse-resize\",\n    ne: \"nesw-resize\",\n    se: \"nwse-resize\",\n    sw: \"nesw-resize\"\n  };\n  var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n  var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n  var d3_time_formatUtc = d3_time_format.utc;\n  var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n  d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n  function d3_time_formatIsoNative(date) {\n    return date.toISOString();\n  }\n  d3_time_formatIsoNative.parse = function(string) {\n    var date = new Date(string);\n    return isNaN(date) ? null : date;\n  };\n  d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n  d3_time.second = d3_time_interval(function(date) {\n    return new d3_date(Math.floor(date / 1e3) * 1e3);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n  }, function(date) {\n    return date.getSeconds();\n  });\n  d3_time.seconds = d3_time.second.range;\n  d3_time.seconds.utc = d3_time.second.utc.range;\n  d3_time.minute = d3_time_interval(function(date) {\n    return new d3_date(Math.floor(date / 6e4) * 6e4);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n  }, function(date) {\n    return date.getMinutes();\n  });\n  d3_time.minutes = d3_time.minute.range;\n  d3_time.minutes.utc = d3_time.minute.utc.range;\n  d3_time.hour = d3_time_interval(function(date) {\n    var timezone = date.getTimezoneOffset() / 60;\n    return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n  }, function(date, offset) {\n    date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n  }, function(date) {\n    return date.getHours();\n  });\n  d3_time.hours = d3_time.hour.range;\n  d3_time.hours.utc = d3_time.hour.utc.range;\n  d3_time.month = d3_time_interval(function(date) {\n    date = d3_time.day(date);\n    date.setDate(1);\n    return date;\n  }, function(date, offset) {\n    date.setMonth(date.getMonth() + offset);\n  }, function(date) {\n    return date.getMonth();\n  });\n  d3_time.months = d3_time.month.range;\n  d3_time.months.utc = d3_time.month.utc.range;\n  function d3_time_scale(linear, methods, format) {\n    function scale(x) {\n      return linear(x);\n    }\n    scale.invert = function(x) {\n      return d3_time_scaleDate(linear.invert(x));\n    };\n    scale.domain = function(x) {\n      if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n      linear.domain(x);\n      return scale;\n    };\n    function tickMethod(extent, count) {\n      var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n      return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n        return d / 31536e6;\n      }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n    }\n    scale.nice = function(interval, skip) {\n      var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n      if (method) interval = method[0], skip = method[1];\n      function skipped(date) {\n        return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n      }\n      return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n        floor: function(date) {\n          while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n          return date;\n        },\n        ceil: function(date) {\n          while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n          return date;\n        }\n      } : interval));\n    };\n    scale.ticks = function(interval, skip) {\n      var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n        range: interval\n      }, skip ];\n      if (method) interval = method[0], skip = method[1];\n      return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n    };\n    scale.tickFormat = function() {\n      return format;\n    };\n    scale.copy = function() {\n      return d3_time_scale(linear.copy(), methods, format);\n    };\n    return d3_scale_linearRebind(scale, linear);\n  }\n  function d3_time_scaleDate(t) {\n    return new Date(t);\n  }\n  var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n  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 ] ];\n  var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n    return d.getMilliseconds();\n  } ], [ \":%S\", function(d) {\n    return d.getSeconds();\n  } ], [ \"%I:%M\", function(d) {\n    return d.getMinutes();\n  } ], [ \"%I %p\", function(d) {\n    return d.getHours();\n  } ], [ \"%a %d\", function(d) {\n    return d.getDay() && d.getDate() != 1;\n  } ], [ \"%b %d\", function(d) {\n    return d.getDate() != 1;\n  } ], [ \"%B\", function(d) {\n    return d.getMonth();\n  } ], [ \"%Y\", d3_true ] ]);\n  var d3_time_scaleMilliseconds = {\n    range: function(start, stop, step) {\n      return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n    },\n    floor: d3_identity,\n    ceil: d3_identity\n  };\n  d3_time_scaleLocalMethods.year = d3_time.year;\n  d3_time.scale = function() {\n    return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n  };\n  var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n    return [ m[0].utc, m[1] ];\n  });\n  var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n    return d.getUTCMilliseconds();\n  } ], [ \":%S\", function(d) {\n    return d.getUTCSeconds();\n  } ], [ \"%I:%M\", function(d) {\n    return d.getUTCMinutes();\n  } ], [ \"%I %p\", function(d) {\n    return d.getUTCHours();\n  } ], [ \"%a %d\", function(d) {\n    return d.getUTCDay() && d.getUTCDate() != 1;\n  } ], [ \"%b %d\", function(d) {\n    return d.getUTCDate() != 1;\n  } ], [ \"%B\", function(d) {\n    return d.getUTCMonth();\n  } ], [ \"%Y\", d3_true ] ]);\n  d3_time_scaleUtcMethods.year = d3_time.year.utc;\n  d3_time.scale.utc = function() {\n    return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n  };\n  d3.text = d3_xhrType(function(request) {\n    return request.responseText;\n  });\n  d3.json = function(url, callback) {\n    return d3_xhr(url, \"application/json\", d3_json, callback);\n  };\n  function d3_json(request) {\n    return JSON.parse(request.responseText);\n  }\n  d3.html = function(url, callback) {\n    return d3_xhr(url, \"text/html\", d3_html, callback);\n  };\n  function d3_html(request) {\n    var range = d3_document.createRange();\n    range.selectNode(d3_document.body);\n    return range.createContextualFragment(request.responseText);\n  }\n  d3.xml = d3_xhrType(function(request) {\n    return request.responseXML;\n  });\n  if (true) this.d3 = d3, !(__WEBPACK_AMD_DEFINE_FACTORY__ = (d3),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();\n\n/***/ })\n/******/ ]);\n});"]}