// from unpkg.com/mermaid@8.0.0-rc.8/dist/mermaid.js (function webpackUniversalModuleDefinition(root, factory) {

if(typeof exports === 'object' && typeof module === 'object')
        module.exports = factory();
else if(typeof define === 'function' && define.amd)
        define([], factory);
else if(typeof exports === 'object')
        exports["mermaid"] = factory();
else
        root["mermaid"] = factory();

})(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function webpack_require(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules) { /******/ return installedModules.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules.call(module.exports, module, module.exports, webpack_require); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (webpack_modules) /******/ webpack_require.m = modules; /******/ /******/ // expose the module cache /******/ webpack_require.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ webpack_require.d = function(exports, name, getter) { /******/ if(!webpack_require.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ webpack_require.r = function(exports) { /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ webpack_require.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module; } : /******/ function getModuleExports() { return module; }; /******/ webpack_require.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ webpack_require.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // webpack_public_path /******/ webpack_require.p = “”; /******/ /******/ /******/ // Load entry module and return exports /******/ return webpack_require(_webpack_require_.s = “./src/mermaid.js”); /******/ }) /************************************************************************/ /******/ ({

/***/ “./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./src/themes/dark/index.scss”: /*!*******************************************************************************************************!*\

!*** ./node_modules/css-loader!./node_modules/sass-loader/lib/loader.js!./src/themes/dark/index.scss ***!
\*******************************************************************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

exports = module.exports = webpack_require(/*! ../../../node_modules/css-loader/lib/css-base.js */ “./node_modules/css-loader/lib/css-base.js”)(false); // imports

// module exports.push([module.i, “/* Flowchart variables */n/* Sequence Diagram variables */n/* Gantt chart variables */n.label {n font-family: 'trebuchet ms', verdana, arial;n color: #333; }nn.node rect,n.node circle,n.node ellipse,n.node polygon {n fill: #BDD5EA;n stroke: purple;n stroke-width: 1px; }nn.node.clickable {n cursor: pointer; }nn.arrowheadPath {n fill: lightgrey; }nn.edgePath .path {n stroke: lightgrey;n stroke-width: 1.5px; }nn.edgeLabel {n background-color: e8e8e8; }nn.cluster rect {n fill: #6D6D65 !important;n stroke: rgba(255, 255, 255, 0.25) !important;n stroke-width: 1px !important; }nn.cluster text {n fill: #F9FFFE; }nndiv.mermaidTooltip {n position: absolute;n text-align: center;n max-width: 200px;n padding: 2px;n font-family: 'trebuchet ms', verdana, arial;n font-size: 12px;n background: #6D6D65;n border: 1px solid rgba(255, 255, 255, 0.25);n border-radius: 2px;n pointer-events: none;n z-index: 100; }nn.actor {n stroke: #81B1DB;n fill: #BDD5EA; }nntext.actor {n fill: black;n stroke: none; }nn.actor-line {n stroke: lightgrey; }nn.messageLine0 {n stroke-width: 1.5;n stroke-dasharray: '2 2';n marker-end: 'url(arrowhead)';n stroke: lightgrey; }nn.messageLine1 {n stroke-width: 1.5;n stroke-dasharray: '2 2';n stroke: lightgrey; }nn#arrowhead {n fill: lightgrey; }nn#crosshead path {n fill: lightgrey !important;n stroke: lightgrey !important; }nn.messageText {n fill: lightgrey;n stroke: none; }nn.labelBox {n stroke: #81B1DB;n fill: #BDD5EA; }nn.labelText {n fill: lightgrey;n stroke: none; }nn.loopText {n fill: lightgrey;n stroke: none; }nn.loopLine {n stroke-width: 2;n stroke-dasharray: '2 2';n marker-end: 'url(arrowhead)';n stroke: #81B1DB; }nn.note {n stroke: rgba(255, 255, 255, 0.25);n fill: fff5ad; }nn.noteText {n fill: black;n stroke: none;n font-family: 'trebuchet ms', verdana, arial;n font-size: 14px; }nn/** Section styling */n.section {n stroke: none;n opacity: 0.2; }nn.section0 {n fill: rgba(255, 255, 255, 0.3); }nn.section2 {n fill: #EAE8B9; }nn.section1,n.section3 {n fill: white;n opacity: 0.2; }nn.sectionTitle0 {n fill: #F9FFFE; }nn.sectionTitle1 {n fill: #F9FFFE; }nn.sectionTitle2 {n fill: #F9FFFE; }nn.sectionTitle3 {n fill: #F9FFFE; }nn.sectionTitle {n text-anchor: start;n font-size: 11px;n text-height: 14px; }nn/* Grid and axis */n.grid .tick {n stroke: lightgrey;n opacity: 0.3;n shape-rendering: crispEdges; }nn.grid path {n stroke-width: 0; }nn/* Today line */n.today {n fill: none;n stroke: #DB5757;n stroke-width: 2px; }nn/* Task styling */n/* Default task */n.task {n stroke-width: 2; }nn.taskText {n text-anchor: middle;n font-size: 11px; }nn.taskTextOutsideRight {n fill: #323D47;n text-anchor: start;n font-size: 11px; }nn.taskTextOutsideLeft {n fill: #323D47;n text-anchor: end;n font-size: 11px; }nn/* Specific task settings for the sections*/n.taskText0,n.taskText1,n.taskText2,n.taskText3 {n fill: #323D47; }nn.task0,n.task1,n.task2,n.task3 {n fill: #BDD5EA;n stroke: rgba(255, 255, 255, 0.5); }nn.taskTextOutside0,n.taskTextOutside2 {n fill: lightgrey; }nn.taskTextOutside1,n.taskTextOutside3 {n fill: lightgrey; }nn/* Active task */n.active0,n.active1,n.active2,n.active3 {n fill: #81B1DB;n stroke: rgba(255, 255, 255, 0.5); }nn.activeText0,n.activeText1,n.activeText2,n.activeText3 {n fill: #323D47 !important; }nn/* Completed task */n.done0,n.done1,n.done2,n.done3 {n stroke: grey;n fill: lightgrey;n stroke-width: 2; }nn.doneText0,n.doneText1,n.doneText2,n.doneText3 {n fill: #323D47 !important; }nn/* Tasks on the critical line */n.crit0,n.crit1,n.crit2,n.crit3 {n stroke: #E83737;n fill: #E83737;n stroke-width: 2; }nn.activeCrit0,n.activeCrit1,n.activeCrit2,n.activeCrit3 {n stroke: #E83737;n fill: #81B1DB;n stroke-width: 2; }nn.doneCrit0,n.doneCrit1,n.doneCrit2,n.doneCrit3 {n stroke: #E83737;n fill: lightgrey;n stroke-width: 2;n cursor: pointer;n shape-rendering: crispEdges; }nn.doneCritText0,n.doneCritText1,n.doneCritText2,n.doneCritText3 {n fill: #323D47 !important; }nn.activeCritText0,n.activeCritText1,n.activeCritText2,n.activeCritText3 {n fill: #323D47 !important; }nn.titleText {n text-anchor: middle;n font-size: 18px;n fill: #323D47; }nng.classGroup text {n fill: purple;n stroke: none;n font-family: 'trebuchet ms', verdana, arial;n font-size: 10px; }nng.classGroup rect {n fill: #BDD5EA;n stroke: purple; }nng.classGroup line {n stroke: purple;n stroke-width: 1; }nn.classLabel .box {n stroke: none;n stroke-width: 0;n fill: #BDD5EA;n opacity: 0.5; }nn.classLabel .label {n fill: purple;n font-size: 10px; }nn.relation {n stroke: purple;n stroke-width: 1;n fill: none; }nn#compositionStart {n fill: purple;n stroke: purple;n stroke-width: 1; }nn#compositionEnd {n fill: purple;n stroke: purple;n stroke-width: 1; }nn#aggregationStart {n fill: #BDD5EA;n stroke: purple;n stroke-width: 1; }nn#aggregationEnd {n fill: #BDD5EA;n stroke: purple;n stroke-width: 1; }nn#dependencyStart {n fill: purple;n stroke: purple;n stroke-width: 1; }nn#dependencyEnd {n fill: purple;n stroke: purple;n stroke-width: 1; }nn#extensionStart {n fill: purple;n stroke: purple;n stroke-width: 1; }nn#extensionEnd {n fill: purple;n stroke: purple;n stroke-width: 1; }nn.commit-id,n.commit-msg,n.branch-label {n fill: lightgrey;n color: lightgrey; }n”, “”]);

// exports

/***/ }),

/***/ “./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./src/themes/default/index.scss”: /*!**********************************************************************************************************!*\

!*** ./node_modules/css-loader!./node_modules/sass-loader/lib/loader.js!./src/themes/default/index.scss ***!
\**********************************************************************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

exports = module.exports = webpack_require(/*! ../../../node_modules/css-loader/lib/css-base.js */ “./node_modules/css-loader/lib/css-base.js”)(false); // imports

// module exports.push([module.i, “/* Flowchart variables */n/* Sequence Diagram variables */n/* Gantt chart variables */n.label {n font-family: 'trebuchet ms', verdana, arial;n color: #333; }nn.node rect,n.node circle,n.node ellipse,n.node polygon {n fill: #ECECFF;n stroke: #9370DB;n stroke-width: 1px; }nn.node.clickable {n cursor: pointer; }nn.arrowheadPath {n fill: #333333; }nn.edgePath .path {n stroke: #333333;n stroke-width: 1.5px; }nn.edgeLabel {n background-color: e8e8e8; }nn.cluster rect {n fill: ffffde !important;n stroke: aaaa33 !important;n stroke-width: 1px !important; }nn.cluster text {n fill: #333; }nndiv.mermaidTooltip {n position: absolute;n text-align: center;n max-width: 200px;n padding: 2px;n font-family: 'trebuchet ms', verdana, arial;n font-size: 12px;n background: ffffde;n border: 1px solid aaaa33;n border-radius: 2px;n pointer-events: none;n z-index: 100; }nn.actor {n stroke: #CCCCFF;n fill: #ECECFF; }nntext.actor {n fill: black;n stroke: none; }nn.actor-line {n stroke: grey; }nn.messageLine0 {n stroke-width: 1.5;n stroke-dasharray: '2 2';n marker-end: 'url(arrowhead)';n stroke: #333; }nn.messageLine1 {n stroke-width: 1.5;n stroke-dasharray: '2 2';n stroke: #333; }nn#arrowhead {n fill: #333; }nn#crosshead path {n fill: #333 !important;n stroke: #333 !important; }nn.messageText {n fill: #333;n stroke: none; }nn.labelBox {n stroke: #CCCCFF;n fill: #ECECFF; }nn.labelText {n fill: black;n stroke: none; }nn.loopText {n fill: black;n stroke: none; }nn.loopLine {n stroke-width: 2;n stroke-dasharray: '2 2';n marker-end: 'url(arrowhead)';n stroke: #CCCCFF; }nn.note {n stroke: aaaa33;n fill: fff5ad; }nn.noteText {n fill: black;n stroke: none;n font-family: 'trebuchet ms', verdana, arial;n font-size: 14px; }nn/** Section styling */n.section {n stroke: none;n opacity: 0.2; }nn.section0 {n fill: rgba(102, 102, 255, 0.49); }nn.section2 {n fill: fff400; }nn.section1,n.section3 {n fill: white;n opacity: 0.2; }nn.sectionTitle0 {n fill: #333; }nn.sectionTitle1 {n fill: #333; }nn.sectionTitle2 {n fill: #333; }nn.sectionTitle3 {n fill: #333; }nn.sectionTitle {n text-anchor: start;n font-size: 11px;n text-height: 14px; }nn/* Grid and axis */n.grid .tick {n stroke: lightgrey;n opacity: 0.3;n shape-rendering: crispEdges; }nn.grid path {n stroke-width: 0; }nn/* Today line */n.today {n fill: none;n stroke: red;n stroke-width: 2px; }nn/* Task styling */n/* Default task */n.task {n stroke-width: 2; }nn.taskText {n text-anchor: middle;n font-size: 11px; }nn.taskTextOutsideRight {n fill: black;n text-anchor: start;n font-size: 11px; }nn.taskTextOutsideLeft {n fill: black;n text-anchor: end;n font-size: 11px; }nn/* Specific task settings for the sections*/n.taskText0,n.taskText1,n.taskText2,n.taskText3 {n fill: white; }nn.task0,n.task1,n.task2,n.task3 {n fill: #8a90dd;n stroke: #534fbc; }nn.taskTextOutside0,n.taskTextOutside2 {n fill: black; }nn.taskTextOutside1,n.taskTextOutside3 {n fill: black; }nn/* Active task */n.active0,n.active1,n.active2,n.active3 {n fill: bfc7ff;n stroke: #534fbc; }nn.activeText0,n.activeText1,n.activeText2,n.activeText3 {n fill: black !important; }nn/* Completed task */n.done0,n.done1,n.done2,n.done3 {n stroke: grey;n fill: lightgrey;n stroke-width: 2; }nn.doneText0,n.doneText1,n.doneText2,n.doneText3 {n fill: black !important; }nn/* Tasks on the critical line */n.crit0,n.crit1,n.crit2,n.crit3 {n stroke: ff8888;n fill: red;n stroke-width: 2; }nn.activeCrit0,n.activeCrit1,n.activeCrit2,n.activeCrit3 {n stroke: ff8888;n fill: bfc7ff;n stroke-width: 2; }nn.doneCrit0,n.doneCrit1,n.doneCrit2,n.doneCrit3 {n stroke: ff8888;n fill: lightgrey;n stroke-width: 2;n cursor: pointer;n shape-rendering: crispEdges; }nn.doneCritText0,n.doneCritText1,n.doneCritText2,n.doneCritText3 {n fill: black !important; }nn.activeCritText0,n.activeCritText1,n.activeCritText2,n.activeCritText3 {n fill: black !important; }nn.titleText {n text-anchor: middle;n font-size: 18px;n fill: black; }nng.classGroup text {n fill: #9370DB;n stroke: none;n font-family: 'trebuchet ms', verdana, arial;n font-size: 10px; }nng.classGroup rect {n fill: #ECECFF;n stroke: #9370DB; }nng.classGroup line {n stroke: #9370DB;n stroke-width: 1; }nn.classLabel .box {n stroke: none;n stroke-width: 0;n fill: #ECECFF;n opacity: 0.5; }nn.classLabel .label {n fill: #9370DB;n font-size: 10px; }nn.relation {n stroke: #9370DB;n stroke-width: 1;n fill: none; }nn#compositionStart {n fill: #9370DB;n stroke: #9370DB;n stroke-width: 1; }nn#compositionEnd {n fill: #9370DB;n stroke: #9370DB;n stroke-width: 1; }nn#aggregationStart {n fill: #ECECFF;n stroke: #9370DB;n stroke-width: 1; }nn#aggregationEnd {n fill: #ECECFF;n stroke: #9370DB;n stroke-width: 1; }nn#dependencyStart {n fill: #9370DB;n stroke: #9370DB;n stroke-width: 1; }nn#dependencyEnd {n fill: #9370DB;n stroke: #9370DB;n stroke-width: 1; }nn#extensionStart {n fill: #9370DB;n stroke: #9370DB;n stroke-width: 1; }nn#extensionEnd {n fill: #9370DB;n stroke: #9370DB;n stroke-width: 1; }nn.commit-id,n.commit-msg,n.branch-label {n fill: lightgrey;n color: lightgrey; }n”, “”]);

// exports

/***/ }),

/***/ “./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./src/themes/forest/index.scss”: /*!*********************************************************************************************************!*\

!*** ./node_modules/css-loader!./node_modules/sass-loader/lib/loader.js!./src/themes/forest/index.scss ***!
\*********************************************************************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

exports = module.exports = webpack_require(/*! ../../../node_modules/css-loader/lib/css-base.js */ “./node_modules/css-loader/lib/css-base.js”)(false); // imports

// module exports.push([module.i, “/* Flowchart variables */n/* Sequence Diagram variables */n/* Gantt chart variables */n.label {n font-family: 'trebuchet ms', verdana, arial;n color: #333; }nn.node rect,n.node circle,n.node ellipse,n.node polygon {n fill: cde498;n stroke: #13540c;n stroke-width: 1px; }nn.node.clickable {n cursor: pointer; }nn.arrowheadPath {n fill: green; }nn.edgePath .path {n stroke: green;n stroke-width: 1.5px; }nn.edgeLabel {n background-color: e8e8e8; }nn.cluster rect {n fill: cdffb2 !important;n stroke: #6eaa49 !important;n stroke-width: 1px !important; }nn.cluster text {n fill: #333; }nndiv.mermaidTooltip {n position: absolute;n text-align: center;n max-width: 200px;n padding: 2px;n font-family: 'trebuchet ms', verdana, arial;n font-size: 12px;n background: cdffb2;n border: 1px solid #6eaa49;n border-radius: 2px;n pointer-events: none;n z-index: 100; }nn.actor {n stroke: #13540c;n fill: cde498; }nntext.actor {n fill: black;n stroke: none; }nn.actor-line {n stroke: grey; }nn.messageLine0 {n stroke-width: 1.5;n stroke-dasharray: '2 2';n marker-end: 'url(arrowhead)';n stroke: #333; }nn.messageLine1 {n stroke-width: 1.5;n stroke-dasharray: '2 2';n stroke: #333; }nn#arrowhead {n fill: #333; }nn#crosshead path {n fill: #333 !important;n stroke: #333 !important; }nn.messageText {n fill: #333;n stroke: none; }nn.labelBox {n stroke: #326932;n fill: cde498; }nn.labelText {n fill: black;n stroke: none; }nn.loopText {n fill: black;n stroke: none; }nn.loopLine {n stroke-width: 2;n stroke-dasharray: '2 2';n marker-end: 'url(arrowhead)';n stroke: #326932; }nn.note {n stroke: #6eaa49;n fill: fff5ad; }nn.noteText {n fill: black;n stroke: none;n font-family: 'trebuchet ms', verdana, arial;n font-size: 14px; }nn/** Section styling */n.section {n stroke: none;n opacity: 0.2; }nn.section0 {n fill: #6eaa49; }nn.section2 {n fill: #6eaa49; }nn.section1,n.section3 {n fill: white;n opacity: 0.2; }nn.sectionTitle0 {n fill: #333; }nn.sectionTitle1 {n fill: #333; }nn.sectionTitle2 {n fill: #333; }nn.sectionTitle3 {n fill: #333; }nn.sectionTitle {n text-anchor: start;n font-size: 11px;n text-height: 14px; }nn/* Grid and axis */n.grid .tick {n stroke: lightgrey;n opacity: 0.3;n shape-rendering: crispEdges; }nn.grid path {n stroke-width: 0; }nn/* Today line */n.today {n fill: none;n stroke: red;n stroke-width: 2px; }nn/* Task styling */n/* Default task */n.task {n stroke-width: 2; }nn.taskText {n text-anchor: middle;n font-size: 11px; }nn.taskTextOutsideRight {n fill: black;n text-anchor: start;n font-size: 11px; }nn.taskTextOutsideLeft {n fill: black;n text-anchor: end;n font-size: 11px; }nn/* Specific task settings for the sections*/n.taskText0,n.taskText1,n.taskText2,n.taskText3 {n fill: white; }nn.task0,n.task1,n.task2,n.task3 {n fill: #487e3a;n stroke: #13540c; }nn.taskTextOutside0,n.taskTextOutside2 {n fill: black; }nn.taskTextOutside1,n.taskTextOutside3 {n fill: black; }nn/* Active task */n.active0,n.active1,n.active2,n.active3 {n fill: cde498;n stroke: #13540c; }nn.activeText0,n.activeText1,n.activeText2,n.activeText3 {n fill: black !important; }nn/* Completed task */n.done0,n.done1,n.done2,n.done3 {n stroke: grey;n fill: lightgrey;n stroke-width: 2; }nn.doneText0,n.doneText1,n.doneText2,n.doneText3 {n fill: black !important; }nn/* Tasks on the critical line */n.crit0,n.crit1,n.crit2,n.crit3 {n stroke: ff8888;n fill: red;n stroke-width: 2; }nn.activeCrit0,n.activeCrit1,n.activeCrit2,n.activeCrit3 {n stroke: ff8888;n fill: cde498;n stroke-width: 2; }nn.doneCrit0,n.doneCrit1,n.doneCrit2,n.doneCrit3 {n stroke: ff8888;n fill: lightgrey;n stroke-width: 2;n cursor: pointer;n shape-rendering: crispEdges; }nn.doneCritText0,n.doneCritText1,n.doneCritText2,n.doneCritText3 {n fill: black !important; }nn.activeCritText0,n.activeCritText1,n.activeCritText2,n.activeCritText3 {n fill: black !important; }nn.titleText {n text-anchor: middle;n font-size: 18px;n fill: black; }nng.classGroup text {n fill: #13540c;n stroke: none;n font-family: 'trebuchet ms', verdana, arial;n font-size: 10px; }nng.classGroup rect {n fill: cde498;n stroke: #13540c; }nng.classGroup line {n stroke: #13540c;n stroke-width: 1; }nn.classLabel .box {n stroke: none;n stroke-width: 0;n fill: cde498;n opacity: 0.5; }nn.classLabel .label {n fill: #13540c;n font-size: 10px; }nn.relation {n stroke: #13540c;n stroke-width: 1;n fill: none; }nn#compositionStart {n fill: #13540c;n stroke: #13540c;n stroke-width: 1; }nn#compositionEnd {n fill: #13540c;n stroke: #13540c;n stroke-width: 1; }nn#aggregationStart {n fill: cde498;n stroke: #13540c;n stroke-width: 1; }nn#aggregationEnd {n fill: cde498;n stroke: #13540c;n stroke-width: 1; }nn#dependencyStart {n fill: #13540c;n stroke: #13540c;n stroke-width: 1; }nn#dependencyEnd {n fill: #13540c;n stroke: #13540c;n stroke-width: 1; }nn#extensionStart {n fill: #13540c;n stroke: #13540c;n stroke-width: 1; }nn#extensionEnd {n fill: #13540c;n stroke: #13540c;n stroke-width: 1; }nn.commit-id,n.commit-msg,n.branch-label {n fill: lightgrey;n color: lightgrey; }n”, “”]);

// exports

/***/ }),

/***/ “./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./src/themes/neutral/index.scss”: /*!**********************************************************************************************************!*\

!*** ./node_modules/css-loader!./node_modules/sass-loader/lib/loader.js!./src/themes/neutral/index.scss ***!
\**********************************************************************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

exports = module.exports = webpack_require(/*! ../../../node_modules/css-loader/lib/css-base.js */ “./node_modules/css-loader/lib/css-base.js”)(false); // imports

// module exports.push([module.i, “/* Flowchart variables */n/* Sequence Diagram variables */n/* Gantt chart variables */n.label {n font-family: 'trebuchet ms', verdana, arial;n color: #333; }nn.node rect,n.node circle,n.node ellipse,n.node polygon {n fill: eee;n stroke: #999;n stroke-width: 1px; }nn.node.clickable {n cursor: pointer; }nn.arrowheadPath {n fill: #333333; }nn.edgePath .path {n stroke: #666;n stroke-width: 1.5px; }nn.edgeLabel {n background-color: white; }nn.cluster rect {n fill: eaf2fb !important;n stroke: #26a !important;n stroke-width: 1px !important; }nn.cluster text {n fill: #333; }nndiv.mermaidTooltip {n position: absolute;n text-align: center;n max-width: 200px;n padding: 2px;n font-family: 'trebuchet ms', verdana, arial;n font-size: 12px;n background: eaf2fb;n border: 1px solid #26a;n border-radius: 2px;n pointer-events: none;n z-index: 100; }nn.actor {n stroke: #999;n fill: eee; }nntext.actor {n fill: #333;n stroke: none; }nn.actor-line {n stroke: #666; }nn.messageLine0 {n stroke-width: 1.5;n stroke-dasharray: '2 2';n marker-end: 'url(arrowhead)';n stroke: #333; }nn.messageLine1 {n stroke-width: 1.5;n stroke-dasharray: '2 2';n stroke: #333; }nn#arrowhead {n fill: #333; }nn#crosshead path {n fill: #333 !important;n stroke: #333 !important; }nn.messageText {n fill: #333;n stroke: none; }nn.labelBox {n stroke: #999;n fill: eee; }nn.labelText {n fill: white;n stroke: none; }nn.loopText {n fill: white;n stroke: none; }nn.loopLine {n stroke-width: 2;n stroke-dasharray: '2 2';n marker-end: 'url(arrowhead)';n stroke: #999; }nn.note {n stroke: #777700;n fill: ffa; }nn.noteText {n fill: black;n stroke: none;n font-family: 'trebuchet ms', verdana, arial;n font-size: 14px; }nn/** Section styling */n.section {n stroke: none;n opacity: 0.2; }nn.section0 {n fill: #80b3e6; }nn.section2 {n fill: #80b3e6; }nn.section1,n.section3 {n fill: white;n opacity: 0.2; }nn.sectionTitle0 {n fill: #333; }nn.sectionTitle1 {n fill: #333; }nn.sectionTitle2 {n fill: #333; }nn.sectionTitle3 {n fill: #333; }nn.sectionTitle {n text-anchor: start;n font-size: 11px;n text-height: 14px; }nn/* Grid and axis */n.grid .tick {n stroke: e6e6e6;n opacity: 0.3;n shape-rendering: crispEdges; }nn.grid path {n stroke-width: 0; }nn/* Today line */n.today {n fill: none;n stroke: d42;n stroke-width: 2px; }nn/* Task styling */n/* Default task */n.task {n stroke-width: 2; }nn.taskText {n text-anchor: middle;n font-size: 11px; }nn.taskTextOutsideRight {n fill: #333;n text-anchor: start;n font-size: 11px; }nn.taskTextOutsideLeft {n fill: #333;n text-anchor: end;n font-size: 11px; }nn/* Specific task settings for the sections*/n.taskText0,n.taskText1,n.taskText2,n.taskText3 {n fill: white; }nn.task0,n.task1,n.task2,n.task3 {n fill: #26a;n stroke: #1a4d80; }nn.taskTextOutside0,n.taskTextOutside2 {n fill: #333; }nn.taskTextOutside1,n.taskTextOutside3 {n fill: #333; }nn/* Active task */n.active0,n.active1,n.active2,n.active3 {n fill: eee;n stroke: #1a4d80; }nn.activeText0,n.activeText1,n.activeText2,n.activeText3 {n fill: #333 !important; }nn/* Completed task */n.done0,n.done1,n.done2,n.done3 {n stroke: #666;n fill: bbb;n stroke-width: 2; }nn.doneText0,n.doneText1,n.doneText2,n.doneText3 {n fill: #333 !important; }nn/* Tasks on the critical line */n.crit0,n.crit1,n.crit2,n.crit3 {n stroke: b1361b;n fill: d42;n stroke-width: 2; }nn.activeCrit0,n.activeCrit1,n.activeCrit2,n.activeCrit3 {n stroke: b1361b;n fill: eee;n stroke-width: 2; }nn.doneCrit0,n.doneCrit1,n.doneCrit2,n.doneCrit3 {n stroke: b1361b;n fill: bbb;n stroke-width: 2;n cursor: pointer;n shape-rendering: crispEdges; }nn.doneCritText0,n.doneCritText1,n.doneCritText2,n.doneCritText3 {n fill: #333 !important; }nn.activeCritText0,n.activeCritText1,n.activeCritText2,n.activeCritText3 {n fill: #333 !important; }nn.titleText {n text-anchor: middle;n font-size: 18px;n fill: #333; }nng.classGroup text {n fill: #999;n stroke: none;n font-family: 'trebuchet ms', verdana, arial;n font-size: 10px; }nng.classGroup rect {n fill: eee;n stroke: #999; }nng.classGroup line {n stroke: #999;n stroke-width: 1; }nn.classLabel .box {n stroke: none;n stroke-width: 0;n fill: eee;n opacity: 0.5; }nn.classLabel .label {n fill: #999;n font-size: 10px; }nn.relation {n stroke: #999;n stroke-width: 1;n fill: none; }nn#compositionStart {n fill: #999;n stroke: #999;n stroke-width: 1; }nn#compositionEnd {n fill: #999;n stroke: #999;n stroke-width: 1; }nn#aggregationStart {n fill: eee;n stroke: #999;n stroke-width: 1; }nn#aggregationEnd {n fill: eee;n stroke: #999;n stroke-width: 1; }nn#dependencyStart {n fill: #999;n stroke: #999;n stroke-width: 1; }nn#dependencyEnd {n fill: #999;n stroke: #999;n stroke-width: 1; }nn#extensionStart {n fill: #999;n stroke: #999;n stroke-width: 1; }nn#extensionEnd {n fill: #999;n stroke: #999;n stroke-width: 1; }nn.commit-id,n.commit-msg,n.branch-label {n fill: lightgrey;n color: lightgrey; }n”, “”]);

// exports

/***/ }),

/***/ “./node_modules/css-loader/lib/css-base.js”: /*!*************************************************!*\

!*** ./node_modules/css-loader/lib/css-base.js ***!
\*************************************************/

/*! no static exports found */ /***/ (function(module, exports) {

/*

MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra

*/ // css base code, injected by the css-loader module.exports = function(useSourceMap) {

var list = [];

// return the list of modules as css string
list.toString = function toString() {
        return this.map(function (item) {
                var content = cssWithMappingToString(item, useSourceMap);
                if(item[2]) {
                        return "@media " + item[2] + "{" + content + "}";
                } else {
                        return content;
                }
        }).join("");
};

// import a list of modules into the list
list.i = function(modules, mediaQuery) {
        if(typeof modules === "string")
                modules = [[null, modules, ""]];
        var alreadyImportedModules = {};
        for(var i = 0; i < this.length; i++) {
                var id = this[i][0];
                if(typeof id === "number")
                        alreadyImportedModules[id] = true;
        }
        for(i = 0; i < modules.length; i++) {
                var item = modules[i];
                // skip already imported module
                // this implementation is not 100% perfect for weird media query combinations
                //  when a module is imported multiple times with different media queries.
                //  I hope this will never occur (Hey this way we have smaller bundles)
                if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
                        if(mediaQuery && !item[2]) {
                                item[2] = mediaQuery;
                        } else if(mediaQuery) {
                                item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
                        }
                        list.push(item);
                }
        }
};
return list;

};

function cssWithMappingToString(item, useSourceMap) {

var content = item[1] || '';
var cssMapping = item[3];
if (!cssMapping) {
        return content;
}

if (useSourceMap && typeof btoa === 'function') {
        var sourceMapping = toComment(cssMapping);
        var sourceURLs = cssMapping.sources.map(function (source) {
                return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'
        });

        return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
}

return [content].join('\n');

}

// Adapted from convert-source-map (MIT) function toComment(sourceMap) {

// eslint-disable-next-line no-undef
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;

return '/*# ' + data + ' */';

}

/***/ }),

/***/ “./node_modules/d3-array/index.js”: /*!****************************************!*\

!*** ./node_modules/d3-array/index.js ***!
\****************************************/

/*! exports provided: bisect, bisectRight, bisectLeft, ascending, bisector, cross, descending, deviation, extent, histogram, thresholdFreedmanDiaconis, thresholdScott, thresholdSturges, max, mean, median, merge, min, pairs, permute, quantile, range, scan, shuffle, sum, ticks, tickIncrement, tickStep, transpose, variance, zip */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_bisect_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/bisect */ “./node_modules/d3-array/src/bisect.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “bisect”, function() { return src_bisect_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “bisectRight”, function() { return src_bisect_WEBPACK_IMPORTED_MODULE_0[“bisectRight”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “bisectLeft”, function() { return src_bisect_WEBPACK_IMPORTED_MODULE_0[“bisectLeft”]; });

/* harmony import */ var src_ascending_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/ascending */ “./node_modules/d3-array/src/ascending.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “ascending”, function() { return src_ascending_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_bisector_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/bisector */ “./node_modules/d3-array/src/bisector.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “bisector”, function() { return src_bisector_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_cross_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/cross */ “./node_modules/d3-array/src/cross.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “cross”, function() { return src_cross_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_descending_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/descending */ “./node_modules/d3-array/src/descending.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “descending”, function() { return src_descending_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony import */ var src_deviation_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/deviation */ “./node_modules/d3-array/src/deviation.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “deviation”, function() { return src_deviation_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/* harmony import */ var src_extent_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./src/extent */ “./node_modules/d3-array/src/extent.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “extent”, function() { return src_extent_WEBPACK_IMPORTED_MODULE_6[“default”]; });

/* harmony import */ var src_histogram_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./src/histogram */ “./node_modules/d3-array/src/histogram.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “histogram”, function() { return src_histogram_WEBPACK_IMPORTED_MODULE_7[“default”]; });

/* harmony import */ var src_threshold_freedmanDiaconis_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./src/threshold/freedmanDiaconis */ “./node_modules/d3-array/src/threshold/freedmanDiaconis.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “thresholdFreedmanDiaconis”, function() { return src_threshold_freedmanDiaconis_WEBPACK_IMPORTED_MODULE_8[“default”]; });

/* harmony import */ var src_threshold_scott_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./src/threshold/scott */ “./node_modules/d3-array/src/threshold/scott.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “thresholdScott”, function() { return src_threshold_scott_WEBPACK_IMPORTED_MODULE_9[“default”]; });

/* harmony import */ var src_threshold_sturges_WEBPACK_IMPORTED_MODULE_10 = webpack_require(/*! ./src/threshold/sturges */ “./node_modules/d3-array/src/threshold/sturges.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “thresholdSturges”, function() { return src_threshold_sturges_WEBPACK_IMPORTED_MODULE_10[“default”]; });

/* harmony import */ var src_max_WEBPACK_IMPORTED_MODULE_11 = webpack_require(/*! ./src/max */ “./node_modules/d3-array/src/max.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “max”, function() { return src_max_WEBPACK_IMPORTED_MODULE_11[“default”]; });

/* harmony import */ var src_mean_WEBPACK_IMPORTED_MODULE_12 = webpack_require(/*! ./src/mean */ “./node_modules/d3-array/src/mean.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “mean”, function() { return src_mean_WEBPACK_IMPORTED_MODULE_12[“default”]; });

/* harmony import */ var src_median_WEBPACK_IMPORTED_MODULE_13 = webpack_require(/*! ./src/median */ “./node_modules/d3-array/src/median.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “median”, function() { return src_median_WEBPACK_IMPORTED_MODULE_13[“default”]; });

/* harmony import */ var src_merge_WEBPACK_IMPORTED_MODULE_14 = webpack_require(/*! ./src/merge */ “./node_modules/d3-array/src/merge.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “merge”, function() { return src_merge_WEBPACK_IMPORTED_MODULE_14[“default”]; });

/* harmony import */ var src_min_WEBPACK_IMPORTED_MODULE_15 = webpack_require(/*! ./src/min */ “./node_modules/d3-array/src/min.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “min”, function() { return src_min_WEBPACK_IMPORTED_MODULE_15[“default”]; });

/* harmony import */ var src_pairs_WEBPACK_IMPORTED_MODULE_16 = webpack_require(/*! ./src/pairs */ “./node_modules/d3-array/src/pairs.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “pairs”, function() { return src_pairs_WEBPACK_IMPORTED_MODULE_16[“default”]; });

/* harmony import */ var src_permute_WEBPACK_IMPORTED_MODULE_17 = webpack_require(/*! ./src/permute */ “./node_modules/d3-array/src/permute.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “permute”, function() { return src_permute_WEBPACK_IMPORTED_MODULE_17[“default”]; });

/* harmony import */ var src_quantile_WEBPACK_IMPORTED_MODULE_18 = webpack_require(/*! ./src/quantile */ “./node_modules/d3-array/src/quantile.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “quantile”, function() { return src_quantile_WEBPACK_IMPORTED_MODULE_18[“default”]; });

/* harmony import */ var src_range_WEBPACK_IMPORTED_MODULE_19 = webpack_require(/*! ./src/range */ “./node_modules/d3-array/src/range.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “range”, function() { return src_range_WEBPACK_IMPORTED_MODULE_19[“default”]; });

/* harmony import */ var src_scan_WEBPACK_IMPORTED_MODULE_20 = webpack_require(/*! ./src/scan */ “./node_modules/d3-array/src/scan.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scan”, function() { return src_scan_WEBPACK_IMPORTED_MODULE_20[“default”]; });

/* harmony import */ var src_shuffle_WEBPACK_IMPORTED_MODULE_21 = webpack_require(/*! ./src/shuffle */ “./node_modules/d3-array/src/shuffle.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “shuffle”, function() { return src_shuffle_WEBPACK_IMPORTED_MODULE_21[“default”]; });

/* harmony import */ var src_sum_WEBPACK_IMPORTED_MODULE_22 = webpack_require(/*! ./src/sum */ “./node_modules/d3-array/src/sum.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “sum”, function() { return src_sum_WEBPACK_IMPORTED_MODULE_22[“default”]; });

/* harmony import */ var src_ticks_WEBPACK_IMPORTED_MODULE_23 = webpack_require(/*! ./src/ticks */ “./node_modules/d3-array/src/ticks.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “ticks”, function() { return src_ticks_WEBPACK_IMPORTED_MODULE_23[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tickIncrement”, function() { return src_ticks_WEBPACK_IMPORTED_MODULE_23[“tickIncrement”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tickStep”, function() { return src_ticks_WEBPACK_IMPORTED_MODULE_23[“tickStep”]; });

/* harmony import */ var src_transpose_WEBPACK_IMPORTED_MODULE_24 = webpack_require(/*! ./src/transpose */ “./node_modules/d3-array/src/transpose.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “transpose”, function() { return src_transpose_WEBPACK_IMPORTED_MODULE_24[“default”]; });

/* harmony import */ var src_variance_WEBPACK_IMPORTED_MODULE_25 = webpack_require(/*! ./src/variance */ “./node_modules/d3-array/src/variance.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “variance”, function() { return src_variance_WEBPACK_IMPORTED_MODULE_25[“default”]; });

/* harmony import */ var src_zip_WEBPACK_IMPORTED_MODULE_26 = webpack_require(/*! ./src/zip */ “./node_modules/d3-array/src/zip.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “zip”, function() { return src_zip_WEBPACK_IMPORTED_MODULE_26[“default”]; });

/***/ }),

/***/ “./node_modules/d3-array/src/array.js”: /*!********************************************!*\

!*** ./node_modules/d3-array/src/array.js ***!
\********************************************/

/*! exports provided: slice, map */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “slice”, function() { return slice; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “map”, function() { return map; }); var array = Array.prototype;

var slice = array.slice; var map = array.map;

/***/ }),

/***/ “./node_modules/d3-array/src/ascending.js”: /*!************************************************!*\

!*** ./node_modules/d3-array/src/ascending.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(a, b) {

return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;

});

/***/ }),

/***/ “./node_modules/d3-array/src/bisect.js”: /*!*********************************************!*\

!*** ./node_modules/d3-array/src/bisect.js ***!
\*********************************************/

/*! exports provided: bisectRight, bisectLeft, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “bisectRight”, function() { return bisectRight; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “bisectLeft”, function() { return bisectLeft; }); /* harmony import */ var ascending_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./ascending */ “./node_modules/d3-array/src/ascending.js”); /* harmony import */ var bisector_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./bisector */ “./node_modules/d3-array/src/bisector.js”);

var ascendingBisect = Object(bisector_WEBPACK_IMPORTED_MODULE_1[“default”])(ascending_WEBPACK_IMPORTED_MODULE_0[“default”]); var bisectRight = ascendingBisect.right; var bisectLeft = ascendingBisect.left; /* harmony default export */ webpack_exports[“default”] = (bisectRight);

/***/ }),

/***/ “./node_modules/d3-array/src/bisector.js”: /*!***********************************************!*\

!*** ./node_modules/d3-array/src/bisector.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var ascending_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./ascending */ “./node_modules/d3-array/src/ascending.js”);

/* harmony default export */ webpack_exports[“default”] = (function(compare) {

if (compare.length === 1) compare = ascendingComparator(compare);
return {
  left: function(a, x, lo, hi) {
    if (lo == null) lo = 0;
    if (hi == null) hi = a.length;
    while (lo < hi) {
      var mid = lo + hi >>> 1;
      if (compare(a[mid], x) < 0) lo = mid + 1;
      else hi = mid;
    }
    return lo;
  },
  right: function(a, x, lo, hi) {
    if (lo == null) lo = 0;
    if (hi == null) hi = a.length;
    while (lo < hi) {
      var mid = lo + hi >>> 1;
      if (compare(a[mid], x) > 0) hi = mid;
      else lo = mid + 1;
    }
    return lo;
  }
};

});

function ascendingComparator(f) {

return function(d, x) {
  return Object(_ascending__WEBPACK_IMPORTED_MODULE_0__["default"])(f(d), x);
};

}

/***/ }),

/***/ “./node_modules/d3-array/src/constant.js”: /*!***********************************************!*\

!*** ./node_modules/d3-array/src/constant.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return function() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-array/src/cross.js”: /*!********************************************!*\

!*** ./node_modules/d3-array/src/cross.js ***!
\********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var pairs_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./pairs */ “./node_modules/d3-array/src/pairs.js”);

/* harmony default export */ webpack_exports[“default”] = (function(values0, values1, reduce) {

var n0 = values0.length,
    n1 = values1.length,
    values = new Array(n0 * n1),
    i0,
    i1,
    i,
    value0;

if (reduce == null) reduce = _pairs__WEBPACK_IMPORTED_MODULE_0__["pair"];

for (i0 = i = 0; i0 < n0; ++i0) {
  for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {
    values[i] = reduce(value0, values1[i1]);
  }
}

return values;

});

/***/ }),

/***/ “./node_modules/d3-array/src/descending.js”: /*!*************************************************!*\

!*** ./node_modules/d3-array/src/descending.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(a, b) {

return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;

});

/***/ }),

/***/ “./node_modules/d3-array/src/deviation.js”: /*!************************************************!*\

!*** ./node_modules/d3-array/src/deviation.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var variance_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./variance */ “./node_modules/d3-array/src/variance.js”);

/* harmony default export */ webpack_exports[“default”] = (function(array, f) {

var v = Object(_variance__WEBPACK_IMPORTED_MODULE_0__["default"])(array, f);
return v ? Math.sqrt(v) : v;

});

/***/ }),

/***/ “./node_modules/d3-array/src/extent.js”: /*!*********************************************!*\

!*** ./node_modules/d3-array/src/extent.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(values, valueof) {

var n = values.length,
    i = -1,
    value,
    min,
    max;

if (valueof == null) {
  while (++i < n) { // Find the first comparable value.
    if ((value = values[i]) != null && value >= value) {
      min = max = value;
      while (++i < n) { // Compare the remaining values.
        if ((value = values[i]) != null) {
          if (min > value) min = value;
          if (max < value) max = value;
        }
      }
    }
  }
}

else {
  while (++i < n) { // Find the first comparable value.
    if ((value = valueof(values[i], i, values)) != null && value >= value) {
      min = max = value;
      while (++i < n) { // Compare the remaining values.
        if ((value = valueof(values[i], i, values)) != null) {
          if (min > value) min = value;
          if (max < value) max = value;
        }
      }
    }
  }
}

return [min, max];

});

/***/ }),

/***/ “./node_modules/d3-array/src/histogram.js”: /*!************************************************!*\

!*** ./node_modules/d3-array/src/histogram.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./array */ “./node_modules/d3-array/src/array.js”); /* harmony import */ var bisect_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./bisect */ “./node_modules/d3-array/src/bisect.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./constant */ “./node_modules/d3-array/src/constant.js”); /* harmony import */ var extent_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./extent */ “./node_modules/d3-array/src/extent.js”); /* harmony import */ var identity_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./identity */ “./node_modules/d3-array/src/identity.js”); /* harmony import */ var range_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./range */ “./node_modules/d3-array/src/range.js”); /* harmony import */ var ticks_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./ticks */ “./node_modules/d3-array/src/ticks.js”); /* harmony import */ var threshold_sturges_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./threshold/sturges */ “./node_modules/d3-array/src/threshold/sturges.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var value = _identity__WEBPACK_IMPORTED_MODULE_4__["default"],
    domain = _extent__WEBPACK_IMPORTED_MODULE_3__["default"],
    threshold = _threshold_sturges__WEBPACK_IMPORTED_MODULE_7__["default"];

function histogram(data) {
  var i,
      n = data.length,
      x,
      values = new Array(n);

  for (i = 0; i < n; ++i) {
    values[i] = value(data[i], i, data);
  }

  var xz = domain(values),
      x0 = xz[0],
      x1 = xz[1],
      tz = threshold(values, x0, x1);

  // Convert number of thresholds into uniform thresholds.
  if (!Array.isArray(tz)) {
    tz = Object(_ticks__WEBPACK_IMPORTED_MODULE_6__["tickStep"])(x0, x1, tz);
    tz = Object(_range__WEBPACK_IMPORTED_MODULE_5__["default"])(Math.ceil(x0 / tz) * tz, Math.floor(x1 / tz) * tz, tz); // exclusive
  }

  // Remove any thresholds outside the domain.
  var m = tz.length;
  while (tz[0] <= x0) tz.shift(), --m;
  while (tz[m - 1] > x1) tz.pop(), --m;

  var bins = new Array(m + 1),
      bin;

  // Initialize bins.
  for (i = 0; i <= m; ++i) {
    bin = bins[i] = [];
    bin.x0 = i > 0 ? tz[i - 1] : x0;
    bin.x1 = i < m ? tz[i] : x1;
  }

  // Assign data to bins by value, ignoring any outside the domain.
  for (i = 0; i < n; ++i) {
    x = values[i];
    if (x0 <= x && x <= x1) {
      bins[Object(_bisect__WEBPACK_IMPORTED_MODULE_1__["default"])(tz, x, 0, m)].push(data[i]);
    }
  }

  return bins;
}

histogram.value = function(_) {
  return arguments.length ? (value = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])(_), histogram) : value;
};

histogram.domain = function(_) {
  return arguments.length ? (domain = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])([_[0], _[1]]), histogram) : domain;
};

histogram.thresholds = function(_) {
  return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])(_array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(_)) : Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])(_), histogram) : threshold;
};

return histogram;

});

/***/ }),

/***/ “./node_modules/d3-array/src/identity.js”: /*!***********************************************!*\

!*** ./node_modules/d3-array/src/identity.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return x;

});

/***/ }),

/***/ “./node_modules/d3-array/src/max.js”: /*!******************************************!*\

!*** ./node_modules/d3-array/src/max.js ***!
\******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(values, valueof) {

var n = values.length,
    i = -1,
    value,
    max;

if (valueof == null) {
  while (++i < n) { // Find the first comparable value.
    if ((value = values[i]) != null && value >= value) {
      max = value;
      while (++i < n) { // Compare the remaining values.
        if ((value = values[i]) != null && value > max) {
          max = value;
        }
      }
    }
  }
}

else {
  while (++i < n) { // Find the first comparable value.
    if ((value = valueof(values[i], i, values)) != null && value >= value) {
      max = value;
      while (++i < n) { // Compare the remaining values.
        if ((value = valueof(values[i], i, values)) != null && value > max) {
          max = value;
        }
      }
    }
  }
}

return max;

});

/***/ }),

/***/ “./node_modules/d3-array/src/mean.js”: /*!*******************************************!*\

!*** ./node_modules/d3-array/src/mean.js ***!
\*******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var number_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./number */ “./node_modules/d3-array/src/number.js”);

/* harmony default export */ webpack_exports[“default”] = (function(values, valueof) {

var n = values.length,
    m = n,
    i = -1,
    value,
    sum = 0;

if (valueof == null) {
  while (++i < n) {
    if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(values[i]))) sum += value;
    else --m;
  }
}

else {
  while (++i < n) {
    if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(valueof(values[i], i, values)))) sum += value;
    else --m;
  }
}

if (m) return sum / m;

});

/***/ }),

/***/ “./node_modules/d3-array/src/median.js”: /*!*********************************************!*\

!*** ./node_modules/d3-array/src/median.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var ascending_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./ascending */ “./node_modules/d3-array/src/ascending.js”); /* harmony import */ var number_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./number */ “./node_modules/d3-array/src/number.js”); /* harmony import */ var quantile_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./quantile */ “./node_modules/d3-array/src/quantile.js”);

/* harmony default export */ webpack_exports[“default”] = (function(values, valueof) {

var n = values.length,
    i = -1,
    value,
    numbers = [];

if (valueof == null) {
  while (++i < n) {
    if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_1__["default"])(values[i]))) {
      numbers.push(value);
    }
  }
}

else {
  while (++i < n) {
    if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_1__["default"])(valueof(values[i], i, values)))) {
      numbers.push(value);
    }
  }
}

return Object(_quantile__WEBPACK_IMPORTED_MODULE_2__["default"])(numbers.sort(_ascending__WEBPACK_IMPORTED_MODULE_0__["default"]), 0.5);

});

/***/ }),

/***/ “./node_modules/d3-array/src/merge.js”: /*!********************************************!*\

!*** ./node_modules/d3-array/src/merge.js ***!
\********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(arrays) {

var n = arrays.length,
    m,
    i = -1,
    j = 0,
    merged,
    array;

while (++i < n) j += arrays[i].length;
merged = new Array(j);

while (--n >= 0) {
  array = arrays[n];
  m = array.length;
  while (--m >= 0) {
    merged[--j] = array[m];
  }
}

return merged;

});

/***/ }),

/***/ “./node_modules/d3-array/src/min.js”: /*!******************************************!*\

!*** ./node_modules/d3-array/src/min.js ***!
\******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(values, valueof) {

var n = values.length,
    i = -1,
    value,
    min;

if (valueof == null) {
  while (++i < n) { // Find the first comparable value.
    if ((value = values[i]) != null && value >= value) {
      min = value;
      while (++i < n) { // Compare the remaining values.
        if ((value = values[i]) != null && min > value) {
          min = value;
        }
      }
    }
  }
}

else {
  while (++i < n) { // Find the first comparable value.
    if ((value = valueof(values[i], i, values)) != null && value >= value) {
      min = value;
      while (++i < n) { // Compare the remaining values.
        if ((value = valueof(values[i], i, values)) != null && min > value) {
          min = value;
        }
      }
    }
  }
}

return min;

});

/***/ }),

/***/ “./node_modules/d3-array/src/number.js”: /*!*********************************************!*\

!*** ./node_modules/d3-array/src/number.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return x === null ? NaN : +x;

});

/***/ }),

/***/ “./node_modules/d3-array/src/pairs.js”: /*!********************************************!*\

!*** ./node_modules/d3-array/src/pairs.js ***!
\********************************************/

/*! exports provided: default, pair */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “pair”, function() { return pair; }); /* harmony default export */ webpack_exports[“default”] = (function(array, f) {

if (f == null) f = pair;
var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);
while (i < n) pairs[i] = f(p, p = array[++i]);
return pairs;

});

function pair(a, b) {

return [a, b];

}

/***/ }),

/***/ “./node_modules/d3-array/src/permute.js”: /*!**********************************************!*\

!*** ./node_modules/d3-array/src/permute.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(array, indexes) {

var i = indexes.length, permutes = new Array(i);
while (i--) permutes[i] = array[indexes[i]];
return permutes;

});

/***/ }),

/***/ “./node_modules/d3-array/src/quantile.js”: /*!***********************************************!*\

!*** ./node_modules/d3-array/src/quantile.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var number_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./number */ “./node_modules/d3-array/src/number.js”);

/* harmony default export */ webpack_exports[“default”] = (function(values, p, valueof) {

if (valueof == null) valueof = _number__WEBPACK_IMPORTED_MODULE_0__["default"];
if (!(n = values.length)) return;
if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);
if (p >= 1) return +valueof(values[n - 1], n - 1, values);
var n,
    i = (n - 1) * p,
    i0 = Math.floor(i),
    value0 = +valueof(values[i0], i0, values),
    value1 = +valueof(values[i0 + 1], i0 + 1, values);
return value0 + (value1 - value0) * (i - i0);

});

/***/ }),

/***/ “./node_modules/d3-array/src/range.js”: /*!********************************************!*\

!*** ./node_modules/d3-array/src/range.js ***!
\********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(start, stop, step) {

start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;

var i = -1,
    n = Math.max(0, Math.ceil((stop - start) / step)) | 0,
    range = new Array(n);

while (++i < n) {
  range[i] = start + i * step;
}

return range;

});

/***/ }),

/***/ “./node_modules/d3-array/src/scan.js”: /*!*******************************************!*\

!*** ./node_modules/d3-array/src/scan.js ***!
\*******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var ascending_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./ascending */ “./node_modules/d3-array/src/ascending.js”);

/* harmony default export */ webpack_exports[“default”] = (function(values, compare) {

if (!(n = values.length)) return;
var n,
    i = 0,
    j = 0,
    xi,
    xj = values[j];

if (compare == null) compare = _ascending__WEBPACK_IMPORTED_MODULE_0__["default"];

while (++i < n) {
  if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {
    xj = xi, j = i;
  }
}

if (compare(xj, xj) === 0) return j;

});

/***/ }),

/***/ “./node_modules/d3-array/src/shuffle.js”: /*!**********************************************!*\

!*** ./node_modules/d3-array/src/shuffle.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(array, i0, i1) {

var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),
    t,
    i;

while (m) {
  i = Math.random() * m-- | 0;
  t = array[m + i0];
  array[m + i0] = array[i + i0];
  array[i + i0] = t;
}

return array;

});

/***/ }),

/***/ “./node_modules/d3-array/src/sum.js”: /*!******************************************!*\

!*** ./node_modules/d3-array/src/sum.js ***!
\******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(values, valueof) {

var n = values.length,
    i = -1,
    value,
    sum = 0;

if (valueof == null) {
  while (++i < n) {
    if (value = +values[i]) sum += value; // Note: zero and null are equivalent.
  }
}

else {
  while (++i < n) {
    if (value = +valueof(values[i], i, values)) sum += value;
  }
}

return sum;

});

/***/ }),

/***/ “./node_modules/d3-array/src/threshold/freedmanDiaconis.js”: /*!*****************************************************************!*\

!*** ./node_modules/d3-array/src/threshold/freedmanDiaconis.js ***!
\*****************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../array */ “./node_modules/d3-array/src/array.js”); /* harmony import */ var ascending_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../ascending */ “./node_modules/d3-array/src/ascending.js”); /* harmony import */ var number_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ../number */ “./node_modules/d3-array/src/number.js”); /* harmony import */ var quantile_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ../quantile */ “./node_modules/d3-array/src/quantile.js”);

/* harmony default export */ webpack_exports[“default”] = (function(values, min, max) {

values = _array__WEBPACK_IMPORTED_MODULE_0__["map"].call(values, _number__WEBPACK_IMPORTED_MODULE_2__["default"]).sort(_ascending__WEBPACK_IMPORTED_MODULE_1__["default"]);
return Math.ceil((max - min) / (2 * (Object(_quantile__WEBPACK_IMPORTED_MODULE_3__["default"])(values, 0.75) - Object(_quantile__WEBPACK_IMPORTED_MODULE_3__["default"])(values, 0.25)) * Math.pow(values.length, -1 / 3)));

});

/***/ }),

/***/ “./node_modules/d3-array/src/threshold/scott.js”: /*!******************************************************!*\

!*** ./node_modules/d3-array/src/threshold/scott.js ***!
\******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var deviation_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../deviation */ “./node_modules/d3-array/src/deviation.js”);

/* harmony default export */ webpack_exports[“default”] = (function(values, min, max) {

return Math.ceil((max - min) / (3.5 * Object(_deviation__WEBPACK_IMPORTED_MODULE_0__["default"])(values) * Math.pow(values.length, -1 / 3)));

});

/***/ }),

/***/ “./node_modules/d3-array/src/threshold/sturges.js”: /*!********************************************************!*\

!*** ./node_modules/d3-array/src/threshold/sturges.js ***!
\********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(values) {

return Math.ceil(Math.log(values.length) / Math.LN2) + 1;

});

/***/ }),

/***/ “./node_modules/d3-array/src/ticks.js”: /*!********************************************!*\

!*** ./node_modules/d3-array/src/ticks.js ***!
\********************************************/

/*! exports provided: default, tickIncrement, tickStep */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tickIncrement”, function() { return tickIncrement; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tickStep”, function() { return tickStep; }); var e10 = Math.sqrt(50),

e5 = Math.sqrt(10),
e2 = Math.sqrt(2);

/* harmony default export */ webpack_exports[“default”] = (function(start, stop, count) {

var reverse,
    i = -1,
    n,
    ticks,
    step;

stop = +stop, start = +start, count = +count;
if (start === stop && count > 0) return [start];
if (reverse = stop < start) n = start, start = stop, stop = n;
if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];

if (step > 0) {
  start = Math.ceil(start / step);
  stop = Math.floor(stop / step);
  ticks = new Array(n = Math.ceil(stop - start + 1));
  while (++i < n) ticks[i] = (start + i) * step;
} else {
  start = Math.floor(start * step);
  stop = Math.ceil(stop * step);
  ticks = new Array(n = Math.ceil(start - stop + 1));
  while (++i < n) ticks[i] = (start - i) / step;
}

if (reverse) ticks.reverse();

return ticks;

});

function tickIncrement(start, stop, count) {

var step = (stop - start) / Math.max(0, count),
    power = Math.floor(Math.log(step) / Math.LN10),
    error = step / Math.pow(10, power);
return power >= 0
    ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)
    : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);

}

function tickStep(start, stop, count) {

var step0 = Math.abs(stop - start) / Math.max(0, count),
    step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),
    error = step0 / step1;
if (error >= e10) step1 *= 10;
else if (error >= e5) step1 *= 5;
else if (error >= e2) step1 *= 2;
return stop < start ? -step1 : step1;

}

/***/ }),

/***/ “./node_modules/d3-array/src/transpose.js”: /*!************************************************!*\

!*** ./node_modules/d3-array/src/transpose.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var min_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./min */ “./node_modules/d3-array/src/min.js”);

/* harmony default export */ webpack_exports[“default”] = (function(matrix) {

if (!(n = matrix.length)) return [];
for (var i = -1, m = Object(_min__WEBPACK_IMPORTED_MODULE_0__["default"])(matrix, length), transpose = new Array(m); ++i < m;) {
  for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {
    row[j] = matrix[j][i];
  }
}
return transpose;

});

function length(d) {

return d.length;

}

/***/ }),

/***/ “./node_modules/d3-array/src/variance.js”: /*!***********************************************!*\

!*** ./node_modules/d3-array/src/variance.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var number_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./number */ “./node_modules/d3-array/src/number.js”);

/* harmony default export */ webpack_exports[“default”] = (function(values, valueof) {

var n = values.length,
    m = 0,
    i = -1,
    mean = 0,
    value,
    delta,
    sum = 0;

if (valueof == null) {
  while (++i < n) {
    if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(values[i]))) {
      delta = value - mean;
      mean += delta / ++m;
      sum += delta * (value - mean);
    }
  }
}

else {
  while (++i < n) {
    if (!isNaN(value = Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(valueof(values[i], i, values)))) {
      delta = value - mean;
      mean += delta / ++m;
      sum += delta * (value - mean);
    }
  }
}

if (m > 1) return sum / (m - 1);

});

/***/ }),

/***/ “./node_modules/d3-array/src/zip.js”: /*!******************************************!*\

!*** ./node_modules/d3-array/src/zip.js ***!
\******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var transpose_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./transpose */ “./node_modules/d3-array/src/transpose.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_transpose__WEBPACK_IMPORTED_MODULE_0__["default"])(arguments);

});

/***/ }),

/***/ “./node_modules/d3-axis/index.js”: /*!***************************************!*\

!*** ./node_modules/d3-axis/index.js ***!
\***************************************/

/*! exports provided: axisTop, axisRight, axisBottom, axisLeft */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_axis_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/axis */ “./node_modules/d3-axis/src/axis.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “axisTop”, function() { return src_axis_WEBPACK_IMPORTED_MODULE_0[“axisTop”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “axisRight”, function() { return src_axis_WEBPACK_IMPORTED_MODULE_0[“axisRight”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “axisBottom”, function() { return src_axis_WEBPACK_IMPORTED_MODULE_0[“axisBottom”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “axisLeft”, function() { return src_axis_WEBPACK_IMPORTED_MODULE_0[“axisLeft”]; });

/***/ }),

/***/ “./node_modules/d3-axis/src/array.js”: /*!*******************************************!*\

!*** ./node_modules/d3-axis/src/array.js ***!
\*******************************************/

/*! exports provided: slice */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “slice”, function() { return slice; }); var slice = Array.prototype.slice;

/***/ }),

/***/ “./node_modules/d3-axis/src/axis.js”: /*!******************************************!*\

!*** ./node_modules/d3-axis/src/axis.js ***!
\******************************************/

/*! exports provided: axisTop, axisRight, axisBottom, axisLeft */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “axisTop”, function() { return axisTop; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “axisRight”, function() { return axisRight; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “axisBottom”, function() { return axisBottom; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “axisLeft”, function() { return axisLeft; }); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./array */ “./node_modules/d3-axis/src/array.js”); /* harmony import */ var identity_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./identity */ “./node_modules/d3-axis/src/identity.js”);

var top = 1,

right = 2,
bottom = 3,
left = 4,
epsilon = 1e-6;

function translateX(x) {

return "translate(" + (x + 0.5) + ",0)";

}

function translateY(y) {

return "translate(0," + (y + 0.5) + ")";

}

function number(scale) {

return function(d) {
  return +scale(d);
};

}

function center(scale) {

var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.
if (scale.round()) offset = Math.round(offset);
return function(d) {
  return +scale(d) + offset;
};

}

function entering() {

return !this.__axis;

}

function axis(orient, scale) {

var tickArguments = [],
    tickValues = null,
    tickFormat = null,
    tickSizeInner = 6,
    tickSizeOuter = 6,
    tickPadding = 3,
    k = orient === top || orient === left ? -1 : 1,
    x = orient === left || orient === right ? "x" : "y",
    transform = orient === top || orient === bottom ? translateX : translateY;

function axis(context) {
  var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,
      format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : _identity__WEBPACK_IMPORTED_MODULE_1__["default"]) : tickFormat,
      spacing = Math.max(tickSizeInner, 0) + tickPadding,
      range = scale.range(),
      range0 = +range[0] + 0.5,
      range1 = +range[range.length - 1] + 0.5,
      position = (scale.bandwidth ? center : number)(scale.copy()),
      selection = context.selection ? context.selection() : context,
      path = selection.selectAll(".domain").data([null]),
      tick = selection.selectAll(".tick").data(values, scale).order(),
      tickExit = tick.exit(),
      tickEnter = tick.enter().append("g").attr("class", "tick"),
      line = tick.select("line"),
      text = tick.select("text");

  path = path.merge(path.enter().insert("path", ".tick")
      .attr("class", "domain")
      .attr("stroke", "#000"));

  tick = tick.merge(tickEnter);

  line = line.merge(tickEnter.append("line")
      .attr("stroke", "#000")
      .attr(x + "2", k * tickSizeInner));

  text = text.merge(tickEnter.append("text")
      .attr("fill", "#000")
      .attr(x, k * spacing)
      .attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em"));

  if (context !== selection) {
    path = path.transition(context);
    tick = tick.transition(context);
    line = line.transition(context);
    text = text.transition(context);

    tickExit = tickExit.transition(context)
        .attr("opacity", epsilon)
        .attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute("transform"); });

    tickEnter
        .attr("opacity", epsilon)
        .attr("transform", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });
  }

  tickExit.remove();

  path
      .attr("d", orient === left || orient == right
          ? "M" + k * tickSizeOuter + "," + range0 + "H0.5V" + range1 + "H" + k * tickSizeOuter
          : "M" + range0 + "," + k * tickSizeOuter + "V0.5H" + range1 + "V" + k * tickSizeOuter);

  tick
      .attr("opacity", 1)
      .attr("transform", function(d) { return transform(position(d)); });

  line
      .attr(x + "2", k * tickSizeInner);

  text
      .attr(x, k * spacing)
      .text(format);

  selection.filter(entering)
      .attr("fill", "none")
      .attr("font-size", 10)
      .attr("font-family", "sans-serif")
      .attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle");

  selection
      .each(function() { this.__axis = position; });
}

axis.scale = function(_) {
  return arguments.length ? (scale = _, axis) : scale;
};

axis.ticks = function() {
  return tickArguments = _array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(arguments), axis;
};

axis.tickArguments = function(_) {
  return arguments.length ? (tickArguments = _ == null ? [] : _array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(_), axis) : tickArguments.slice();
};

axis.tickValues = function(_) {
  return arguments.length ? (tickValues = _ == null ? null : _array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(_), axis) : tickValues && tickValues.slice();
};

axis.tickFormat = function(_) {
  return arguments.length ? (tickFormat = _, axis) : tickFormat;
};

axis.tickSize = function(_) {
  return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;
};

axis.tickSizeInner = function(_) {
  return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;
};

axis.tickSizeOuter = function(_) {
  return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;
};

axis.tickPadding = function(_) {
  return arguments.length ? (tickPadding = +_, axis) : tickPadding;
};

return axis;

}

function axisTop(scale) {

return axis(top, scale);

}

function axisRight(scale) {

return axis(right, scale);

}

function axisBottom(scale) {

return axis(bottom, scale);

}

function axisLeft(scale) {

return axis(left, scale);

}

/***/ }),

/***/ “./node_modules/d3-axis/src/identity.js”: /*!**********************************************!*\

!*** ./node_modules/d3-axis/src/identity.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return x;

});

/***/ }),

/***/ “./node_modules/d3-brush/index.js”: /*!****************************************!*\

!*** ./node_modules/d3-brush/index.js ***!
\****************************************/

/*! exports provided: brush, brushX, brushY, brushSelection */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_brush_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/brush */ “./node_modules/d3-brush/src/brush.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “brush”, function() { return src_brush_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “brushX”, function() { return src_brush_WEBPACK_IMPORTED_MODULE_0[“brushX”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “brushY”, function() { return src_brush_WEBPACK_IMPORTED_MODULE_0[“brushY”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “brushSelection”, function() { return src_brush_WEBPACK_IMPORTED_MODULE_0[“brushSelection”]; });

/***/ }),

/***/ “./node_modules/d3-brush/src/brush.js”: /*!********************************************!*\

!*** ./node_modules/d3-brush/src/brush.js ***!
\********************************************/

/*! exports provided: brushSelection, brushX, brushY, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “brushSelection”, function() { return brushSelection; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “brushX”, function() { return brushX; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “brushY”, function() { return brushY; }); /* harmony import */ var d3_dispatch_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-dispatch */ “./node_modules/d3-dispatch/index.js”); /* harmony import */ var d3_drag_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-drag */ “./node_modules/d3-drag/index.js”); /* harmony import */ var d3_interpolate_WEBPACK_IMPORTED_MODULE_2_ = webpack_require(/*! d3-interpolate */ “./node_modules/d3-interpolate/index.js”); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_3_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”); /* harmony import */ var d3_transition_WEBPACK_IMPORTED_MODULE_4_ = webpack_require(/*! d3-transition */ “./node_modules/d3-transition/index.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./constant */ “./node_modules/d3-brush/src/constant.js”); /* harmony import */ var event_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./event */ “./node_modules/d3-brush/src/event.js”); /* harmony import */ var noevent_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./noevent */ “./node_modules/d3-brush/src/noevent.js”);

var MODE_DRAG = {name: “drag”},

MODE_SPACE = {name: "space"},
MODE_HANDLE = {name: "handle"},
MODE_CENTER = {name: "center"};

var X = {

name: "x",
handles: ["e", "w"].map(type),
input: function(x, e) { return x && [[x[0], e[0][1]], [x[1], e[1][1]]]; },
output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }

};

var Y = {

name: "y",
handles: ["n", "s"].map(type),
input: function(y, e) { return y && [[e[0][0], y[0]], [e[1][0], y[1]]]; },
output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }

};

var XY = {

name: "xy",
handles: ["n", "e", "s", "w", "nw", "ne", "se", "sw"].map(type),
input: function(xy) { return xy; },
output: function(xy) { return xy; }

};

var cursors = {

overlay: "crosshair",
selection: "move",
n: "ns-resize",
e: "ew-resize",
s: "ns-resize",
w: "ew-resize",
nw: "nwse-resize",
ne: "nesw-resize",
se: "nwse-resize",
sw: "nesw-resize"

};

var flipX = {

e: "w",
w: "e",
nw: "ne",
ne: "nw",
se: "sw",
sw: "se"

};

var flipY = {

n: "s",
s: "n",
nw: "sw",
ne: "se",
se: "ne",
sw: "nw"

};

var signsX = {

overlay: +1,
selection: +1,
n: null,
e: +1,
s: null,
w: -1,
nw: -1,
ne: +1,
se: +1,
sw: -1

};

var signsY = {

overlay: +1,
selection: +1,
n: -1,
e: null,
s: +1,
w: null,
nw: -1,
ne: -1,
se: +1,
sw: +1

};

function type(t) {

return {type: t};

}

// Ignore right-click, since that should open the context menu. function defaultFilter() {

return !d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].button;

}

function defaultExtent() {

var svg = this.ownerSVGElement || this;
return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];

}

// Like d3.local, but with the name “__brush” rather than auto-generated. function local(node) {

while (!node.__brush) if (!(node = node.parentNode)) return;
return node.__brush;

}

function empty(extent) {

return extent[0][0] === extent[1][0]
    || extent[0][1] === extent[1][1];

}

function brushSelection(node) {

var state = node.__brush;
return state ? state.dim.output(state.selection) : null;

}

function brushX() {

return brush(X);

}

function brushY() {

return brush(Y);

}

/* harmony default export */ webpack_exports[“default”] = (function() {

return brush(XY);

});

function brush(dim) {

var extent = defaultExtent,
    filter = defaultFilter,
    listeners = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__["dispatch"])(brush, "start", "brush", "end"),
    handleSize = 6,
    touchending;

function brush(group) {
  var overlay = group
      .property("__brush", initialize)
    .selectAll(".overlay")
    .data([type("overlay")]);

  overlay.enter().append("rect")
      .attr("class", "overlay")
      .attr("pointer-events", "all")
      .attr("cursor", cursors.overlay)
    .merge(overlay)
      .each(function() {
        var extent = local(this).extent;
        Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(this)
            .attr("x", extent[0][0])
            .attr("y", extent[0][1])
            .attr("width", extent[1][0] - extent[0][0])
            .attr("height", extent[1][1] - extent[0][1]);
      });

  group.selectAll(".selection")
    .data([type("selection")])
    .enter().append("rect")
      .attr("class", "selection")
      .attr("cursor", cursors.selection)
      .attr("fill", "#777")
      .attr("fill-opacity", 0.3)
      .attr("stroke", "#fff")
      .attr("shape-rendering", "crispEdges");

  var handle = group.selectAll(".handle")
    .data(dim.handles, function(d) { return d.type; });

  handle.exit().remove();

  handle.enter().append("rect")
      .attr("class", function(d) { return "handle handle--" + d.type; })
      .attr("cursor", function(d) { return cursors[d.type]; });

  group
      .each(redraw)
      .attr("fill", "none")
      .attr("pointer-events", "all")
      .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)")
      .on("mousedown.brush touchstart.brush", started);
}

brush.move = function(group, selection) {
  if (group.selection) {
    group
        .on("start.brush", function() { emitter(this, arguments).beforestart().start(); })
        .on("interrupt.brush end.brush", function() { emitter(this, arguments).end(); })
        .tween("brush", function() {
          var that = this,
              state = that.__brush,
              emit = emitter(that, arguments),
              selection0 = state.selection,
              selection1 = dim.input(typeof selection === "function" ? selection.apply(this, arguments) : selection, state.extent),
              i = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_2__["interpolate"])(selection0, selection1);

          function tween(t) {
            state.selection = t === 1 && empty(selection1) ? null : i(t);
            redraw.call(that);
            emit.brush();
          }

          return selection0 && selection1 ? tween : tween(1);
        });
  } else {
    group
        .each(function() {
          var that = this,
              args = arguments,
              state = that.__brush,
              selection1 = dim.input(typeof selection === "function" ? selection.apply(that, args) : selection, state.extent),
              emit = emitter(that, args).beforestart();

          Object(d3_transition__WEBPACK_IMPORTED_MODULE_4__["interrupt"])(that);
          state.selection = selection1 == null || empty(selection1) ? null : selection1;
          redraw.call(that);
          emit.start().brush().end();
        });
  }
};

function redraw() {
  var group = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(this),
      selection = local(this).selection;

  if (selection) {
    group.selectAll(".selection")
        .style("display", null)
        .attr("x", selection[0][0])
        .attr("y", selection[0][1])
        .attr("width", selection[1][0] - selection[0][0])
        .attr("height", selection[1][1] - selection[0][1]);

    group.selectAll(".handle")
        .style("display", null)
        .attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })
        .attr("y", function(d) { return d.type[0] === "s" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })
        .attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })
        .attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });
  }

  else {
    group.selectAll(".selection,.handle")
        .style("display", "none")
        .attr("x", null)
        .attr("y", null)
        .attr("width", null)
        .attr("height", null);
  }
}

function emitter(that, args) {
  return that.__brush.emitter || new Emitter(that, args);
}

function Emitter(that, args) {
  this.that = that;
  this.args = args;
  this.state = that.__brush;
  this.active = 0;
}

Emitter.prototype = {
  beforestart: function() {
    if (++this.active === 1) this.state.emitter = this, this.starting = true;
    return this;
  },
  start: function() {
    if (this.starting) this.starting = false, this.emit("start");
    return this;
  },
  brush: function() {
    this.emit("brush");
    return this;
  },
  end: function() {
    if (--this.active === 0) delete this.state.emitter, this.emit("end");
    return this;
  },
  emit: function(type) {
    Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["customEvent"])(new _event__WEBPACK_IMPORTED_MODULE_6__["default"](brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);
  }
};

function started() {
  if (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].touches) { if (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].changedTouches.length < d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].touches.length) return Object(_noevent__WEBPACK_IMPORTED_MODULE_7__["default"])(); }
  else if (touchending) return;
  if (!filter.apply(this, arguments)) return;

  var that = this,
      type = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].target.__data__.type,
      mode = (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].altKey ? MODE_CENTER : MODE_HANDLE),
      signX = dim === Y ? null : signsX[type],
      signY = dim === X ? null : signsY[type],
      state = local(that),
      extent = state.extent,
      selection = state.selection,
      W = extent[0][0], w0, w1,
      N = extent[0][1], n0, n1,
      E = extent[1][0], e0, e1,
      S = extent[1][1], s0, s1,
      dx,
      dy,
      moving,
      shifting = signX && signY && d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].shiftKey,
      lockX,
      lockY,
      point0 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["mouse"])(that),
      point = point0,
      emit = emitter(that, arguments).beforestart();

  if (type === "overlay") {
    state.selection = selection = [
      [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],
      [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]
    ];
  } else {
    w0 = selection[0][0];
    n0 = selection[0][1];
    e0 = selection[1][0];
    s0 = selection[1][1];
  }

  w1 = w0;
  n1 = n0;
  e1 = e0;
  s1 = s0;

  var group = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(that)
      .attr("pointer-events", "none");

  var overlay = group.selectAll(".overlay")
      .attr("cursor", cursors[type]);

  if (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].touches) {
    group
        .on("touchmove.brush", moved, true)
        .on("touchend.brush touchcancel.brush", ended, true);
  } else {
    var view = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].view)
        .on("keydown.brush", keydowned, true)
        .on("keyup.brush", keyupped, true)
        .on("mousemove.brush", moved, true)
        .on("mouseup.brush", ended, true);

    Object(d3_drag__WEBPACK_IMPORTED_MODULE_1__["dragDisable"])(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].view);
  }

  Object(_noevent__WEBPACK_IMPORTED_MODULE_7__["nopropagation"])();
  Object(d3_transition__WEBPACK_IMPORTED_MODULE_4__["interrupt"])(that);
  redraw.call(that);
  emit.start();

  function moved() {
    var point1 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["mouse"])(that);
    if (shifting && !lockX && !lockY) {
      if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;
      else lockX = true;
    }
    point = point1;
    moving = true;
    Object(_noevent__WEBPACK_IMPORTED_MODULE_7__["default"])();
    move();
  }

  function move() {
    var t;

    dx = point[0] - point0[0];
    dy = point[1] - point0[1];

    switch (mode) {
      case MODE_SPACE:
      case MODE_DRAG: {
        if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;
        if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;
        break;
      }
      case MODE_HANDLE: {
        if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;
        else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;
        if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;
        else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;
        break;
      }
      case MODE_CENTER: {
        if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));
        if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));
        break;
      }
    }

    if (e1 < w1) {
      signX *= -1;
      t = w0, w0 = e0, e0 = t;
      t = w1, w1 = e1, e1 = t;
      if (type in flipX) overlay.attr("cursor", cursors[type = flipX[type]]);
    }

    if (s1 < n1) {
      signY *= -1;
      t = n0, n0 = s0, s0 = t;
      t = n1, n1 = s1, s1 = t;
      if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]);
    }

    if (state.selection) selection = state.selection; // May be set by brush.move!
    if (lockX) w1 = selection[0][0], e1 = selection[1][0];
    if (lockY) n1 = selection[0][1], s1 = selection[1][1];

    if (selection[0][0] !== w1
        || selection[0][1] !== n1
        || selection[1][0] !== e1
        || selection[1][1] !== s1) {
      state.selection = [[w1, n1], [e1, s1]];
      redraw.call(that);
      emit.brush();
    }
  }

  function ended() {
    Object(_noevent__WEBPACK_IMPORTED_MODULE_7__["nopropagation"])();
    if (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].touches) {
      if (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].touches.length) return;
      if (touchending) clearTimeout(touchending);
      touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!
      group.on("touchmove.brush touchend.brush touchcancel.brush", null);
    } else {
      Object(d3_drag__WEBPACK_IMPORTED_MODULE_1__["dragEnable"])(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].view, moving);
      view.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null);
    }
    group.attr("pointer-events", "all");
    overlay.attr("cursor", cursors.overlay);
    if (state.selection) selection = state.selection; // May be set by brush.move (on start)!
    if (empty(selection)) state.selection = null, redraw.call(that);
    emit.end();
  }

  function keydowned() {
    switch (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].keyCode) {
      case 16: { // SHIFT
        shifting = signX && signY;
        break;
      }
      case 18: { // ALT
        if (mode === MODE_HANDLE) {
          if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;
          if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;
          mode = MODE_CENTER;
          move();
        }
        break;
      }
      case 32: { // SPACE; takes priority over ALT
        if (mode === MODE_HANDLE || mode === MODE_CENTER) {
          if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;
          if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;
          mode = MODE_SPACE;
          overlay.attr("cursor", cursors.selection);
          move();
        }
        break;
      }
      default: return;
    }
    Object(_noevent__WEBPACK_IMPORTED_MODULE_7__["default"])();
  }

  function keyupped() {
    switch (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].keyCode) {
      case 16: { // SHIFT
        if (shifting) {
          lockX = lockY = shifting = false;
          move();
        }
        break;
      }
      case 18: { // ALT
        if (mode === MODE_CENTER) {
          if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;
          if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;
          mode = MODE_HANDLE;
          move();
        }
        break;
      }
      case 32: { // SPACE
        if (mode === MODE_SPACE) {
          if (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].altKey) {
            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;
            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;
            mode = MODE_CENTER;
          } else {
            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;
            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;
            mode = MODE_HANDLE;
          }
          overlay.attr("cursor", cursors[type]);
          move();
        }
        break;
      }
      default: return;
    }
    Object(_noevent__WEBPACK_IMPORTED_MODULE_7__["default"])();
  }
}

function initialize() {
  var state = this.__brush || {selection: null};
  state.extent = extent.apply(this, arguments);
  state.dim = dim;
  return state;
}

brush.extent = function(_) {
  return arguments.length ? (extent = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_5__["default"])([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent;
};

brush.filter = function(_) {
  return arguments.length ? (filter = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_5__["default"])(!!_), brush) : filter;
};

brush.handleSize = function(_) {
  return arguments.length ? (handleSize = +_, brush) : handleSize;
};

brush.on = function() {
  var value = listeners.on.apply(listeners, arguments);
  return value === listeners ? brush : value;
};

return brush;

}

/***/ }),

/***/ “./node_modules/d3-brush/src/constant.js”: /*!***********************************************!*\

!*** ./node_modules/d3-brush/src/constant.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return function() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-brush/src/event.js”: /*!********************************************!*\

!*** ./node_modules/d3-brush/src/event.js ***!
\********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(target, type, selection) {

this.target = target;
this.type = type;
this.selection = selection;

});

/***/ }),

/***/ “./node_modules/d3-brush/src/noevent.js”: /*!**********************************************!*\

!*** ./node_modules/d3-brush/src/noevent.js ***!
\**********************************************/

/*! exports provided: nopropagation, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “nopropagation”, function() { return nopropagation; }); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”);

function nopropagation() {

d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].stopImmediatePropagation();

}

/* harmony default export */ webpack_exports[“default”] = (function() {

d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].preventDefault();
d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].stopImmediatePropagation();

});

/***/ }),

/***/ “./node_modules/d3-chord/index.js”: /*!****************************************!*\

!*** ./node_modules/d3-chord/index.js ***!
\****************************************/

/*! exports provided: chord, ribbon */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_chord_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/chord */ “./node_modules/d3-chord/src/chord.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “chord”, function() { return src_chord_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_ribbon_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/ribbon */ “./node_modules/d3-chord/src/ribbon.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “ribbon”, function() { return src_ribbon_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/***/ }),

/***/ “./node_modules/d3-chord/src/array.js”: /*!********************************************!*\

!*** ./node_modules/d3-chord/src/array.js ***!
\********************************************/

/*! exports provided: slice */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “slice”, function() { return slice; }); var slice = Array.prototype.slice;

/***/ }),

/***/ “./node_modules/d3-chord/src/chord.js”: /*!********************************************!*\

!*** ./node_modules/d3-chord/src/chord.js ***!
\********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./math */ “./node_modules/d3-chord/src/math.js”);

function compareValue(compare) {

return function(a, b) {
  return compare(
    a.source.value + a.target.value,
    b.source.value + b.target.value
  );
};

}

/* harmony default export */ webpack_exports[“default”] = (function() {

var padAngle = 0,
    sortGroups = null,
    sortSubgroups = null,
    sortChords = null;

function chord(matrix) {
  var n = matrix.length,
      groupSums = [],
      groupIndex = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(n),
      subgroupIndex = [],
      chords = [],
      groups = chords.groups = new Array(n),
      subgroups = new Array(n * n),
      k,
      x,
      x0,
      dx,
      i,
      j;

  // Compute the sum.
  k = 0, i = -1; while (++i < n) {
    x = 0, j = -1; while (++j < n) {
      x += matrix[i][j];
    }
    groupSums.push(x);
    subgroupIndex.push(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(n));
    k += x;
  }

  // Sort groups…
  if (sortGroups) groupIndex.sort(function(a, b) {
    return sortGroups(groupSums[a], groupSums[b]);
  });

  // Sort subgroups…
  if (sortSubgroups) subgroupIndex.forEach(function(d, i) {
    d.sort(function(a, b) {
      return sortSubgroups(matrix[i][a], matrix[i][b]);
    });
  });

  // Convert the sum to scaling factor for [0, 2pi].
  // TODO Allow start and end angle to be specified?
  // TODO Allow padding to be specified as percentage?
  k = Object(_math__WEBPACK_IMPORTED_MODULE_1__["max"])(0, _math__WEBPACK_IMPORTED_MODULE_1__["tau"] - padAngle * n) / k;
  dx = k ? padAngle : _math__WEBPACK_IMPORTED_MODULE_1__["tau"] / n;

  // Compute the start and end angle for each group and subgroup.
  // Note: Opera has a bug reordering object literal properties!
  x = 0, i = -1; while (++i < n) {
    x0 = x, j = -1; while (++j < n) {
      var di = groupIndex[i],
          dj = subgroupIndex[di][j],
          v = matrix[di][dj],
          a0 = x,
          a1 = x += v * k;
      subgroups[dj * n + di] = {
        index: di,
        subindex: dj,
        startAngle: a0,
        endAngle: a1,
        value: v
      };
    }
    groups[di] = {
      index: di,
      startAngle: x0,
      endAngle: x,
      value: groupSums[di]
    };
    x += dx;
  }

  // Generate chords for each (non-empty) subgroup-subgroup link.
  i = -1; while (++i < n) {
    j = i - 1; while (++j < n) {
      var source = subgroups[j * n + i],
          target = subgroups[i * n + j];
      if (source.value || target.value) {
        chords.push(source.value < target.value
            ? {source: target, target: source}
            : {source: source, target: target});
      }
    }
  }

  return sortChords ? chords.sort(sortChords) : chords;
}

chord.padAngle = function(_) {
  return arguments.length ? (padAngle = Object(_math__WEBPACK_IMPORTED_MODULE_1__["max"])(0, _), chord) : padAngle;
};

chord.sortGroups = function(_) {
  return arguments.length ? (sortGroups = _, chord) : sortGroups;
};

chord.sortSubgroups = function(_) {
  return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;
};

chord.sortChords = function(_) {
  return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;
};

return chord;

});

/***/ }),

/***/ “./node_modules/d3-chord/src/constant.js”: /*!***********************************************!*\

!*** ./node_modules/d3-chord/src/constant.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return function() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-chord/src/math.js”: /*!*******************************************!*\

!*** ./node_modules/d3-chord/src/math.js ***!
\*******************************************/

/*! exports provided: cos, sin, pi, halfPi, tau, max */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cos”, function() { return cos; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sin”, function() { return sin; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “pi”, function() { return pi; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “halfPi”, function() { return halfPi; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tau”, function() { return tau; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “max”, function() { return max; }); var cos = Math.cos; var sin = Math.sin; var pi = Math.PI; var halfPi = pi / 2; var tau = pi * 2; var max = Math.max;

/***/ }),

/***/ “./node_modules/d3-chord/src/ribbon.js”: /*!*********************************************!*\

!*** ./node_modules/d3-chord/src/ribbon.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./array */ “./node_modules/d3-chord/src/array.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./constant */ “./node_modules/d3-chord/src/constant.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./math */ “./node_modules/d3-chord/src/math.js”); /* harmony import */ var d3_path_WEBPACK_IMPORTED_MODULE_3_ = webpack_require(/*! d3-path */ “./node_modules/d3-path/index.js”);

function defaultSource(d) {

return d.source;

}

function defaultTarget(d) {

return d.target;

}

function defaultRadius(d) {

return d.radius;

}

function defaultStartAngle(d) {

return d.startAngle;

}

function defaultEndAngle(d) {

return d.endAngle;

}

/* harmony default export */ webpack_exports[“default”] = (function() {

var source = defaultSource,
    target = defaultTarget,
    radius = defaultRadius,
    startAngle = defaultStartAngle,
    endAngle = defaultEndAngle,
    context = null;

function ribbon() {
  var buffer,
      argv = _array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(arguments),
      s = source.apply(this, argv),
      t = target.apply(this, argv),
      sr = +radius.apply(this, (argv[0] = s, argv)),
      sa0 = startAngle.apply(this, argv) - _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"],
      sa1 = endAngle.apply(this, argv) - _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"],
      sx0 = sr * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(sa0),
      sy0 = sr * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(sa0),
      tr = +radius.apply(this, (argv[0] = t, argv)),
      ta0 = startAngle.apply(this, argv) - _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"],
      ta1 = endAngle.apply(this, argv) - _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"];

  if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_3__["path"])();

  context.moveTo(sx0, sy0);
  context.arc(0, 0, sr, sa0, sa1);
  if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?
    context.quadraticCurveTo(0, 0, tr * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(ta0), tr * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(ta0));
    context.arc(0, 0, tr, ta0, ta1);
  }
  context.quadraticCurveTo(0, 0, sx0, sy0);
  context.closePath();

  if (buffer) return context = null, buffer + "" || null;
}

ribbon.radius = function(_) {
  return arguments.length ? (radius = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), ribbon) : radius;
};

ribbon.startAngle = function(_) {
  return arguments.length ? (startAngle = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), ribbon) : startAngle;
};

ribbon.endAngle = function(_) {
  return arguments.length ? (endAngle = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), ribbon) : endAngle;
};

ribbon.source = function(_) {
  return arguments.length ? (source = _, ribbon) : source;
};

ribbon.target = function(_) {
  return arguments.length ? (target = _, ribbon) : target;
};

ribbon.context = function(_) {
  return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;
};

return ribbon;

});

/***/ }),

/***/ “./node_modules/d3-collection/index.js”: /*!*********************************************!*\

!*** ./node_modules/d3-collection/index.js ***!
\*********************************************/

/*! exports provided: nest, set, map, keys, values, entries */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_nest_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/nest */ “./node_modules/d3-collection/src/nest.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “nest”, function() { return src_nest_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_set_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/set */ “./node_modules/d3-collection/src/set.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “set”, function() { return src_set_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_map_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/map */ “./node_modules/d3-collection/src/map.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “map”, function() { return src_map_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_keys_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/keys */ “./node_modules/d3-collection/src/keys.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “keys”, function() { return src_keys_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_values_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/values */ “./node_modules/d3-collection/src/values.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “values”, function() { return src_values_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony import */ var src_entries_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/entries */ “./node_modules/d3-collection/src/entries.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “entries”, function() { return src_entries_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/***/ }),

/***/ “./node_modules/d3-collection/src/entries.js”: /*!***************************************************!*\

!*** ./node_modules/d3-collection/src/entries.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(map) {

var entries = [];
for (var key in map) entries.push({key: key, value: map[key]});
return entries;

});

/***/ }),

/***/ “./node_modules/d3-collection/src/keys.js”: /*!************************************************!*\

!*** ./node_modules/d3-collection/src/keys.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(map) {

var keys = [];
for (var key in map) keys.push(key);
return keys;

});

/***/ }),

/***/ “./node_modules/d3-collection/src/map.js”: /*!***********************************************!*\

!*** ./node_modules/d3-collection/src/map.js ***!
\***********************************************/

/*! exports provided: prefix, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “prefix”, function() { return prefix; }); var prefix = “$”;

function Map() {}

Map.prototype = map.prototype = {

constructor: Map,
has: function(key) {
  return (prefix + key) in this;
},
get: function(key) {
  return this[prefix + key];
},
set: function(key, value) {
  this[prefix + key] = value;
  return this;
},
remove: function(key) {
  var property = prefix + key;
  return property in this && delete this[property];
},
clear: function() {
  for (var property in this) if (property[0] === prefix) delete this[property];
},
keys: function() {
  var keys = [];
  for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));
  return keys;
},
values: function() {
  var values = [];
  for (var property in this) if (property[0] === prefix) values.push(this[property]);
  return values;
},
entries: function() {
  var entries = [];
  for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});
  return entries;
},
size: function() {
  var size = 0;
  for (var property in this) if (property[0] === prefix) ++size;
  return size;
},
empty: function() {
  for (var property in this) if (property[0] === prefix) return false;
  return true;
},
each: function(f) {
  for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);
}

};

function map(object, f) {

var map = new Map;

// Copy constructor.
if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });

// Index array by numeric index or specified key function.
else if (Array.isArray(object)) {
  var i = -1,
      n = object.length,
      o;

  if (f == null) while (++i < n) map.set(i, object[i]);
  else while (++i < n) map.set(f(o = object[i], i, object), o);
}

// Convert object to map.
else if (object) for (var key in object) map.set(key, object[key]);

return map;

}

/* harmony default export */ webpack_exports[“default”] = (map);

/***/ }),

/***/ “./node_modules/d3-collection/src/nest.js”: /*!************************************************!*\

!*** ./node_modules/d3-collection/src/nest.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var map_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./map */ “./node_modules/d3-collection/src/map.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var keys = [],
    sortKeys = [],
    sortValues,
    rollup,
    nest;

function apply(array, depth, createResult, setResult) {
  if (depth >= keys.length) {
    if (sortValues != null) array.sort(sortValues);
    return rollup != null ? rollup(array) : array;
  }

  var i = -1,
      n = array.length,
      key = keys[depth++],
      keyValue,
      value,
      valuesByKey = Object(_map__WEBPACK_IMPORTED_MODULE_0__["default"])(),
      values,
      result = createResult();

  while (++i < n) {
    if (values = valuesByKey.get(keyValue = key(value = array[i]) + "")) {
      values.push(value);
    } else {
      valuesByKey.set(keyValue, [value]);
    }
  }

  valuesByKey.each(function(values, key) {
    setResult(result, key, apply(values, depth, createResult, setResult));
  });

  return result;
}

function entries(map, depth) {
  if (++depth > keys.length) return map;
  var array, sortKey = sortKeys[depth - 1];
  if (rollup != null && depth >= keys.length) array = map.entries();
  else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });
  return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;
}

return nest = {
  object: function(array) { return apply(array, 0, createObject, setObject); },
  map: function(array) { return apply(array, 0, createMap, setMap); },
  entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },
  key: function(d) { keys.push(d); return nest; },
  sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },
  sortValues: function(order) { sortValues = order; return nest; },
  rollup: function(f) { rollup = f; return nest; }
};

});

function createObject() {

return {};

}

function setObject(object, key, value) {

object[key] = value;

}

function createMap() {

return Object(_map__WEBPACK_IMPORTED_MODULE_0__["default"])();

}

function setMap(map, key, value) {

map.set(key, value);

}

/***/ }),

/***/ “./node_modules/d3-collection/src/set.js”: /*!***********************************************!*\

!*** ./node_modules/d3-collection/src/set.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var map_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./map */ “./node_modules/d3-collection/src/map.js”);

function Set() {}

var proto = map_WEBPACK_IMPORTED_MODULE_0[“default”].prototype;

Set.prototype = set.prototype = {

constructor: Set,
has: proto.has,
add: function(value) {
  value += "";
  this[_map__WEBPACK_IMPORTED_MODULE_0__["prefix"] + value] = value;
  return this;
},
remove: proto.remove,
clear: proto.clear,
values: proto.keys,
size: proto.size,
empty: proto.empty,
each: proto.each

};

function set(object, f) {

var set = new Set;

// Copy constructor.
if (object instanceof Set) object.each(function(value) { set.add(value); });

// Otherwise, assume it’s an array.
else if (object) {
  var i = -1, n = object.length;
  if (f == null) while (++i < n) set.add(object[i]);
  else while (++i < n) set.add(f(object[i], i, object));
}

return set;

}

/* harmony default export */ webpack_exports[“default”] = (set);

/***/ }),

/***/ “./node_modules/d3-collection/src/values.js”: /*!**************************************************!*\

!*** ./node_modules/d3-collection/src/values.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(map) {

var values = [];
for (var key in map) values.push(map[key]);
return values;

});

/***/ }),

/***/ “./node_modules/d3-color/index.js”: /*!****************************************!*\

!*** ./node_modules/d3-color/index.js ***!
\****************************************/

/*! exports provided: color, rgb, hsl, lab, hcl, cubehelix */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_color_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/color */ “./node_modules/d3-color/src/color.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “color”, function() { return src_color_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “rgb”, function() { return src_color_WEBPACK_IMPORTED_MODULE_0[“rgb”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “hsl”, function() { return src_color_WEBPACK_IMPORTED_MODULE_0[“hsl”]; });

/* harmony import */ var src_lab_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/lab */ “./node_modules/d3-color/src/lab.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “lab”, function() { return src_lab_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “hcl”, function() { return src_lab_WEBPACK_IMPORTED_MODULE_1[“hcl”]; });

/* harmony import */ var src_cubehelix_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/cubehelix */ “./node_modules/d3-color/src/cubehelix.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “cubehelix”, function() { return src_cubehelix_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/***/ }),

/***/ “./node_modules/d3-color/src/color.js”: /*!********************************************!*\

!*** ./node_modules/d3-color/src/color.js ***!
\********************************************/

/*! exports provided: Color, darker, brighter, default, rgbConvert, rgb, Rgb, hslConvert, hsl */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “Color”, function() { return Color; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “darker”, function() { return darker; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “brighter”, function() { return brighter; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return color; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “rgbConvert”, function() { return rgbConvert; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “rgb”, function() { return rgb; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “Rgb”, function() { return Rgb; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “hslConvert”, function() { return hslConvert; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “hsl”, function() { return hsl; }); /* harmony import */ var define_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./define */ “./node_modules/d3-color/src/define.js”);

function Color() {}

var darker = 0.7; var brighter = 1 / darker;

var reI = “\s*(?\d+)\s*”,

reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",
reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",
reHex3 = /^#([0-9a-f]{3})$/,
reHex6 = /^#([0-9a-f]{6})$/,
reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"),
reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"),
reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"),
reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"),
reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"),
reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$");

var named = {

aliceblue: 0xf0f8ff,
antiquewhite: 0xfaebd7,
aqua: 0x00ffff,
aquamarine: 0x7fffd4,
azure: 0xf0ffff,
beige: 0xf5f5dc,
bisque: 0xffe4c4,
black: 0x000000,
blanchedalmond: 0xffebcd,
blue: 0x0000ff,
blueviolet: 0x8a2be2,
brown: 0xa52a2a,
burlywood: 0xdeb887,
cadetblue: 0x5f9ea0,
chartreuse: 0x7fff00,
chocolate: 0xd2691e,
coral: 0xff7f50,
cornflowerblue: 0x6495ed,
cornsilk: 0xfff8dc,
crimson: 0xdc143c,
cyan: 0x00ffff,
darkblue: 0x00008b,
darkcyan: 0x008b8b,
darkgoldenrod: 0xb8860b,
darkgray: 0xa9a9a9,
darkgreen: 0x006400,
darkgrey: 0xa9a9a9,
darkkhaki: 0xbdb76b,
darkmagenta: 0x8b008b,
darkolivegreen: 0x556b2f,
darkorange: 0xff8c00,
darkorchid: 0x9932cc,
darkred: 0x8b0000,
darksalmon: 0xe9967a,
darkseagreen: 0x8fbc8f,
darkslateblue: 0x483d8b,
darkslategray: 0x2f4f4f,
darkslategrey: 0x2f4f4f,
darkturquoise: 0x00ced1,
darkviolet: 0x9400d3,
deeppink: 0xff1493,
deepskyblue: 0x00bfff,
dimgray: 0x696969,
dimgrey: 0x696969,
dodgerblue: 0x1e90ff,
firebrick: 0xb22222,
floralwhite: 0xfffaf0,
forestgreen: 0x228b22,
fuchsia: 0xff00ff,
gainsboro: 0xdcdcdc,
ghostwhite: 0xf8f8ff,
gold: 0xffd700,
goldenrod: 0xdaa520,
gray: 0x808080,
green: 0x008000,
greenyellow: 0xadff2f,
grey: 0x808080,
honeydew: 0xf0fff0,
hotpink: 0xff69b4,
indianred: 0xcd5c5c,
indigo: 0x4b0082,
ivory: 0xfffff0,
khaki: 0xf0e68c,
lavender: 0xe6e6fa,
lavenderblush: 0xfff0f5,
lawngreen: 0x7cfc00,
lemonchiffon: 0xfffacd,
lightblue: 0xadd8e6,
lightcoral: 0xf08080,
lightcyan: 0xe0ffff,
lightgoldenrodyellow: 0xfafad2,
lightgray: 0xd3d3d3,
lightgreen: 0x90ee90,
lightgrey: 0xd3d3d3,
lightpink: 0xffb6c1,
lightsalmon: 0xffa07a,
lightseagreen: 0x20b2aa,
lightskyblue: 0x87cefa,
lightslategray: 0x778899,
lightslategrey: 0x778899,
lightsteelblue: 0xb0c4de,
lightyellow: 0xffffe0,
lime: 0x00ff00,
limegreen: 0x32cd32,
linen: 0xfaf0e6,
magenta: 0xff00ff,
maroon: 0x800000,
mediumaquamarine: 0x66cdaa,
mediumblue: 0x0000cd,
mediumorchid: 0xba55d3,
mediumpurple: 0x9370db,
mediumseagreen: 0x3cb371,
mediumslateblue: 0x7b68ee,
mediumspringgreen: 0x00fa9a,
mediumturquoise: 0x48d1cc,
mediumvioletred: 0xc71585,
midnightblue: 0x191970,
mintcream: 0xf5fffa,
mistyrose: 0xffe4e1,
moccasin: 0xffe4b5,
navajowhite: 0xffdead,
navy: 0x000080,
oldlace: 0xfdf5e6,
olive: 0x808000,
olivedrab: 0x6b8e23,
orange: 0xffa500,
orangered: 0xff4500,
orchid: 0xda70d6,
palegoldenrod: 0xeee8aa,
palegreen: 0x98fb98,
paleturquoise: 0xafeeee,
palevioletred: 0xdb7093,
papayawhip: 0xffefd5,
peachpuff: 0xffdab9,
peru: 0xcd853f,
pink: 0xffc0cb,
plum: 0xdda0dd,
powderblue: 0xb0e0e6,
purple: 0x800080,
rebeccapurple: 0x663399,
red: 0xff0000,
rosybrown: 0xbc8f8f,
royalblue: 0x4169e1,
saddlebrown: 0x8b4513,
salmon: 0xfa8072,
sandybrown: 0xf4a460,
seagreen: 0x2e8b57,
seashell: 0xfff5ee,
sienna: 0xa0522d,
silver: 0xc0c0c0,
skyblue: 0x87ceeb,
slateblue: 0x6a5acd,
slategray: 0x708090,
slategrey: 0x708090,
snow: 0xfffafa,
springgreen: 0x00ff7f,
steelblue: 0x4682b4,
tan: 0xd2b48c,
teal: 0x008080,
thistle: 0xd8bfd8,
tomato: 0xff6347,
turquoise: 0x40e0d0,
violet: 0xee82ee,
wheat: 0xf5deb3,
white: 0xffffff,
whitesmoke: 0xf5f5f5,
yellow: 0xffff00,
yellowgreen: 0x9acd32

};

Object(define_WEBPACK_IMPORTED_MODULE_0[“default”])(Color, color, {

displayable: function() {
  return this.rgb().displayable();
},
toString: function() {
  return this.rgb() + "";
}

});

function color(format) {

var m;
format = (format + "").trim().toLowerCase();
return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00
    : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000
    : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)
    : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)
    : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)
    : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)
    : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)
    : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)
    : named.hasOwnProperty(format) ? rgbn(named[format])
    : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0)
    : null;

}

function rgbn(n) {

return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);

}

function rgba(r, g, b, a) {

if (a <= 0) r = g = b = NaN;
return new Rgb(r, g, b, a);

}

function rgbConvert(o) {

if (!(o instanceof Color)) o = color(o);
if (!o) return new Rgb;
o = o.rgb();
return new Rgb(o.r, o.g, o.b, o.opacity);

}

function rgb(r, g, b, opacity) {

return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);

}

function Rgb(r, g, b, opacity) {

this.r = +r;
this.g = +g;
this.b = +b;
this.opacity = +opacity;

}

Object(define_WEBPACK_IMPORTED_MODULE_0[“default”])(Rgb, rgb, Object(define_WEBPACK_IMPORTED_MODULE_0[“extend”])(Color, {

brighter: function(k) {
  k = k == null ? brighter : Math.pow(brighter, k);
  return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
},
darker: function(k) {
  k = k == null ? darker : Math.pow(darker, k);
  return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);
},
rgb: function() {
  return this;
},
displayable: function() {
  return (0 <= this.r && this.r <= 255)
      && (0 <= this.g && this.g <= 255)
      && (0 <= this.b && this.b <= 255)
      && (0 <= this.opacity && this.opacity <= 1);
},
toString: function() {
  var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));
  return (a === 1 ? "rgb(" : "rgba(")
      + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", "
      + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", "
      + Math.max(0, Math.min(255, Math.round(this.b) || 0))
      + (a === 1 ? ")" : ", " + a + ")");
}

}));

function hsla(h, s, l, a) {

if (a <= 0) h = s = l = NaN;
else if (l <= 0 || l >= 1) h = s = NaN;
else if (s <= 0) h = NaN;
return new Hsl(h, s, l, a);

}

function hslConvert(o) {

if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);
if (!(o instanceof Color)) o = color(o);
if (!o) return new Hsl;
if (o instanceof Hsl) return o;
o = o.rgb();
var r = o.r / 255,
    g = o.g / 255,
    b = o.b / 255,
    min = Math.min(r, g, b),
    max = Math.max(r, g, b),
    h = NaN,
    s = max - min,
    l = (max + min) / 2;
if (s) {
  if (r === max) h = (g - b) / s + (g < b) * 6;
  else if (g === max) h = (b - r) / s + 2;
  else h = (r - g) / s + 4;
  s /= l < 0.5 ? max + min : 2 - max - min;
  h *= 60;
} else {
  s = l > 0 && l < 1 ? 0 : h;
}
return new Hsl(h, s, l, o.opacity);

}

function hsl(h, s, l, opacity) {

return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);

}

function Hsl(h, s, l, opacity) {

this.h = +h;
this.s = +s;
this.l = +l;
this.opacity = +opacity;

}

Object(define_WEBPACK_IMPORTED_MODULE_0[“default”])(Hsl, hsl, Object(define_WEBPACK_IMPORTED_MODULE_0[“extend”])(Color, {

brighter: function(k) {
  k = k == null ? brighter : Math.pow(brighter, k);
  return new Hsl(this.h, this.s, this.l * k, this.opacity);
},
darker: function(k) {
  k = k == null ? darker : Math.pow(darker, k);
  return new Hsl(this.h, this.s, this.l * k, this.opacity);
},
rgb: function() {
  var h = this.h % 360 + (this.h < 0) * 360,
      s = isNaN(h) || isNaN(this.s) ? 0 : this.s,
      l = this.l,
      m2 = l + (l < 0.5 ? l : 1 - l) * s,
      m1 = 2 * l - m2;
  return new Rgb(
    hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),
    hsl2rgb(h, m1, m2),
    hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),
    this.opacity
  );
},
displayable: function() {
  return (0 <= this.s && this.s <= 1 || isNaN(this.s))
      && (0 <= this.l && this.l <= 1)
      && (0 <= this.opacity && this.opacity <= 1);
}

}));

/* From FvD 13.37, CSS Color Module Level 3 */ function hsl2rgb(h, m1, m2) {

return (h < 60 ? m1 + (m2 - m1) * h / 60
    : h < 180 ? m2
    : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60
    : m1) * 255;

}

/***/ }),

/***/ “./node_modules/d3-color/src/cubehelix.js”: /*!************************************************!*\

!*** ./node_modules/d3-color/src/cubehelix.js ***!
\************************************************/

/*! exports provided: default, Cubehelix */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return cubehelix; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “Cubehelix”, function() { return Cubehelix; }); /* harmony import */ var define_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./define */ “./node_modules/d3-color/src/define.js”); /* harmony import */ var color_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./color */ “./node_modules/d3-color/src/color.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./math */ “./node_modules/d3-color/src/math.js”);

var A = -0.14861,

B = +1.78277,
C = -0.29227,
D = -0.90649,
E = +1.97294,
ED = E * D,
EB = E * B,
BC_DA = B * C - D * A;

function cubehelixConvert(o) {

if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);
if (!(o instanceof _color__WEBPACK_IMPORTED_MODULE_1__["Rgb"])) o = Object(_color__WEBPACK_IMPORTED_MODULE_1__["rgbConvert"])(o);
var r = o.r / 255,
    g = o.g / 255,
    b = o.b / 255,
    l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),
    bl = b - l,
    k = (E * (g - l) - C * bl) / D,
    s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1
    h = s ? Math.atan2(k, bl) * _math__WEBPACK_IMPORTED_MODULE_2__["rad2deg"] - 120 : NaN;
return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);

}

function cubehelix(h, s, l, opacity) {

return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);

}

function Cubehelix(h, s, l, opacity) {

this.h = +h;
this.s = +s;
this.l = +l;
this.opacity = +opacity;

}

Object(define_WEBPACK_IMPORTED_MODULE_0[“default”])(Cubehelix, cubehelix, Object(define_WEBPACK_IMPORTED_MODULE_0[“extend”])(color_WEBPACK_IMPORTED_MODULE_1[“Color”], {

brighter: function(k) {
  k = k == null ? _color__WEBPACK_IMPORTED_MODULE_1__["brighter"] : Math.pow(_color__WEBPACK_IMPORTED_MODULE_1__["brighter"], k);
  return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
},
darker: function(k) {
  k = k == null ? _color__WEBPACK_IMPORTED_MODULE_1__["darker"] : Math.pow(_color__WEBPACK_IMPORTED_MODULE_1__["darker"], k);
  return new Cubehelix(this.h, this.s, this.l * k, this.opacity);
},
rgb: function() {
  var h = isNaN(this.h) ? 0 : (this.h + 120) * _math__WEBPACK_IMPORTED_MODULE_2__["deg2rad"],
      l = +this.l,
      a = isNaN(this.s) ? 0 : this.s * l * (1 - l),
      cosh = Math.cos(h),
      sinh = Math.sin(h);
  return new _color__WEBPACK_IMPORTED_MODULE_1__["Rgb"](
    255 * (l + a * (A * cosh + B * sinh)),
    255 * (l + a * (C * cosh + D * sinh)),
    255 * (l + a * (E * cosh)),
    this.opacity
  );
}

}));

/***/ }),

/***/ “./node_modules/d3-color/src/define.js”: /*!*********************************************!*\

!*** ./node_modules/d3-color/src/define.js ***!
\*********************************************/

/*! exports provided: default, extend */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “extend”, function() { return extend; }); /* harmony default export */ webpack_exports[“default”] = (function(constructor, factory, prototype) {

constructor.prototype = factory.prototype = prototype;
prototype.constructor = constructor;

});

function extend(parent, definition) {

var prototype = Object.create(parent.prototype);
for (var key in definition) prototype[key] = definition[key];
return prototype;

}

/***/ }),

/***/ “./node_modules/d3-color/src/lab.js”: /*!******************************************!*\

!*** ./node_modules/d3-color/src/lab.js ***!
\******************************************/

/*! exports provided: default, Lab, hcl, Hcl */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return lab; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “Lab”, function() { return Lab; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “hcl”, function() { return hcl; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “Hcl”, function() { return Hcl; }); /* harmony import */ var define_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./define */ “./node_modules/d3-color/src/define.js”); /* harmony import */ var color_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./color */ “./node_modules/d3-color/src/color.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./math */ “./node_modules/d3-color/src/math.js”);

var Kn = 18,

Xn = 0.950470, // D65 standard referent
Yn = 1,
Zn = 1.088830,
t0 = 4 / 29,
t1 = 6 / 29,
t2 = 3 * t1 * t1,
t3 = t1 * t1 * t1;

function labConvert(o) {

if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);
if (o instanceof Hcl) {
  var h = o.h * _math__WEBPACK_IMPORTED_MODULE_2__["deg2rad"];
  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);
}
if (!(o instanceof _color__WEBPACK_IMPORTED_MODULE_1__["Rgb"])) o = Object(_color__WEBPACK_IMPORTED_MODULE_1__["rgbConvert"])(o);
var b = rgb2xyz(o.r),
    a = rgb2xyz(o.g),
    l = rgb2xyz(o.b),
    x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),
    y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),
    z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);
return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);

}

function lab(l, a, b, opacity) {

return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);

}

function Lab(l, a, b, opacity) {

this.l = +l;
this.a = +a;
this.b = +b;
this.opacity = +opacity;

}

Object(define_WEBPACK_IMPORTED_MODULE_0[“default”])(Lab, lab, Object(define_WEBPACK_IMPORTED_MODULE_0[“extend”])(color_WEBPACK_IMPORTED_MODULE_1[“Color”], {

brighter: function(k) {
  return new Lab(this.l + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);
},
darker: function(k) {
  return new Lab(this.l - Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);
},
rgb: function() {
  var y = (this.l + 16) / 116,
      x = isNaN(this.a) ? y : y + this.a / 500,
      z = isNaN(this.b) ? y : y - this.b / 200;
  y = Yn * lab2xyz(y);
  x = Xn * lab2xyz(x);
  z = Zn * lab2xyz(z);
  return new _color__WEBPACK_IMPORTED_MODULE_1__["Rgb"](
    xyz2rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB
    xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),
    xyz2rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z),
    this.opacity
  );
}

}));

function xyz2lab(t) {

return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;

}

function lab2xyz(t) {

return t > t1 ? t * t * t : t2 * (t - t0);

}

function xyz2rgb(x) {

return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);

}

function rgb2xyz(x) {

return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);

}

function hclConvert(o) {

if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);
if (!(o instanceof Lab)) o = labConvert(o);
var h = Math.atan2(o.b, o.a) * _math__WEBPACK_IMPORTED_MODULE_2__["rad2deg"];
return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);

}

function hcl(h, c, l, opacity) {

return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);

}

function Hcl(h, c, l, opacity) {

this.h = +h;
this.c = +c;
this.l = +l;
this.opacity = +opacity;

}

Object(define_WEBPACK_IMPORTED_MODULE_0[“default”])(Hcl, hcl, Object(define_WEBPACK_IMPORTED_MODULE_0[“extend”])(color_WEBPACK_IMPORTED_MODULE_1[“Color”], {

brighter: function(k) {
  return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity);
},
darker: function(k) {
  return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity);
},
rgb: function() {
  return labConvert(this).rgb();
}

}));

/***/ }),

/***/ “./node_modules/d3-color/src/math.js”: /*!*******************************************!*\

!*** ./node_modules/d3-color/src/math.js ***!
\*******************************************/

/*! exports provided: deg2rad, rad2deg */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “deg2rad”, function() { return deg2rad; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “rad2deg”, function() { return rad2deg; }); var deg2rad = Math.PI / 180; var rad2deg = 180 / Math.PI;

/***/ }),

/***/ “./node_modules/d3-dispatch/index.js”: /*!*******************************************!*\

!*** ./node_modules/d3-dispatch/index.js ***!
\*******************************************/

/*! exports provided: dispatch */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_dispatch_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/dispatch */ “./node_modules/d3-dispatch/src/dispatch.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “dispatch”, function() { return src_dispatch_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/***/ }),

/***/ “./node_modules/d3-dispatch/src/dispatch.js”: /*!**************************************************!*\

!*** ./node_modules/d3-dispatch/src/dispatch.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); var noop = {value: function() {}};

function dispatch() {

for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {
  if (!(t = arguments[i] + "") || (t in _)) throw new Error("illegal type: " + t);
  _[t] = [];
}
return new Dispatch(_);

}

function Dispatch(_) {

this._ = _;

}

function parseTypenames(typenames, types) {

return typenames.trim().split(/^|\s+/).map(function(t) {
  var name = "", i = t.indexOf(".");
  if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
  if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t);
  return {type: t, name: name};
});

}

Dispatch.prototype = dispatch.prototype = {

constructor: Dispatch,
on: function(typename, callback) {
  var _ = this._,
      T = parseTypenames(typename + "", _),
      t,
      i = -1,
      n = T.length;

  // If no callback was specified, return the callback of the given type and name.
  if (arguments.length < 2) {
    while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;
    return;
  }

  // If a type was specified, set the callback for the given type and name.
  // Otherwise, if a null callback was specified, remove callbacks of the given name.
  if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback);
  while (++i < n) {
    if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);
    else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);
  }

  return this;
},
copy: function() {
  var copy = {}, _ = this._;
  for (var t in _) copy[t] = _[t].slice();
  return new Dispatch(copy);
},
call: function(type, that) {
  if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];
  if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
  for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
},
apply: function(type, that, args) {
  if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type);
  for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);
}

};

function get(type, name) {

for (var i = 0, n = type.length, c; i < n; ++i) {
  if ((c = type[i]).name === name) {
    return c.value;
  }
}

}

function set(type, name, callback) {

for (var i = 0, n = type.length; i < n; ++i) {
  if (type[i].name === name) {
    type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));
    break;
  }
}
if (callback != null) type.push({name: name, value: callback});
return type;

}

/* harmony default export */ webpack_exports[“default”] = (dispatch);

/***/ }),

/***/ “./node_modules/d3-drag/index.js”: /*!***************************************!*\

!*** ./node_modules/d3-drag/index.js ***!
\***************************************/

/*! exports provided: drag, dragDisable, dragEnable */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_drag_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/drag */ “./node_modules/d3-drag/src/drag.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “drag”, function() { return src_drag_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_nodrag_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/nodrag */ “./node_modules/d3-drag/src/nodrag.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “dragDisable”, function() { return src_nodrag_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “dragEnable”, function() { return src_nodrag_WEBPACK_IMPORTED_MODULE_1[“yesdrag”]; });

/***/ }),

/***/ “./node_modules/d3-drag/src/constant.js”: /*!**********************************************!*\

!*** ./node_modules/d3-drag/src/constant.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return function() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-drag/src/drag.js”: /*!******************************************!*\

!*** ./node_modules/d3-drag/src/drag.js ***!
\******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_dispatch_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-dispatch */ “./node_modules/d3-dispatch/index.js”); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”); /* harmony import */ var nodrag_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./nodrag */ “./node_modules/d3-drag/src/nodrag.js”); /* harmony import */ var noevent_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./noevent */ “./node_modules/d3-drag/src/noevent.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./constant */ “./node_modules/d3-drag/src/constant.js”); /* harmony import */ var event_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./event */ “./node_modules/d3-drag/src/event.js”);

// Ignore right-click, since that should open the context menu. function defaultFilter() {

return !d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].button;

}

function defaultContainer() {

return this.parentNode;

}

function defaultSubject(d) {

return d == null ? {x: d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].x, y: d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].y} : d;

}

function defaultTouchable() {

return "ontouchstart" in this;

}

/* harmony default export */ webpack_exports[“default”] = (function() {

var filter = defaultFilter,
    container = defaultContainer,
    subject = defaultSubject,
    touchable = defaultTouchable,
    gestures = {},
    listeners = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__["dispatch"])("start", "drag", "end"),
    active = 0,
    mousedownx,
    mousedowny,
    mousemoving,
    touchending,
    clickDistance2 = 0;

function drag(selection) {
  selection
      .on("mousedown.drag", mousedowned)
    .filter(touchable)
      .on("touchstart.drag", touchstarted)
      .on("touchmove.drag", touchmoved)
      .on("touchend.drag touchcancel.drag", touchended)
      .style("touch-action", "none")
      .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
}

function mousedowned() {
  if (touchending || !filter.apply(this, arguments)) return;
  var gesture = beforestart("mouse", container.apply(this, arguments), d3_selection__WEBPACK_IMPORTED_MODULE_1__["mouse"], this, arguments);
  if (!gesture) return;
  Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["select"])(d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true);
  Object(_nodrag__WEBPACK_IMPORTED_MODULE_2__["default"])(d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].view);
  Object(_noevent__WEBPACK_IMPORTED_MODULE_3__["nopropagation"])();
  mousemoving = false;
  mousedownx = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].clientX;
  mousedowny = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].clientY;
  gesture("start");
}

function mousemoved() {
  Object(_noevent__WEBPACK_IMPORTED_MODULE_3__["default"])();
  if (!mousemoving) {
    var dx = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].clientX - mousedownx, dy = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].clientY - mousedowny;
    mousemoving = dx * dx + dy * dy > clickDistance2;
  }
  gestures.mouse("drag");
}

function mouseupped() {
  Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["select"])(d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].view).on("mousemove.drag mouseup.drag", null);
  Object(_nodrag__WEBPACK_IMPORTED_MODULE_2__["yesdrag"])(d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].view, mousemoving);
  Object(_noevent__WEBPACK_IMPORTED_MODULE_3__["default"])();
  gestures.mouse("end");
}

function touchstarted() {
  if (!filter.apply(this, arguments)) return;
  var touches = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].changedTouches,
      c = container.apply(this, arguments),
      n = touches.length, i, gesture;

  for (i = 0; i < n; ++i) {
    if (gesture = beforestart(touches[i].identifier, c, d3_selection__WEBPACK_IMPORTED_MODULE_1__["touch"], this, arguments)) {
      Object(_noevent__WEBPACK_IMPORTED_MODULE_3__["nopropagation"])();
      gesture("start");
    }
  }
}

function touchmoved() {
  var touches = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].changedTouches,
      n = touches.length, i, gesture;

  for (i = 0; i < n; ++i) {
    if (gesture = gestures[touches[i].identifier]) {
      Object(_noevent__WEBPACK_IMPORTED_MODULE_3__["default"])();
      gesture("drag");
    }
  }
}

function touchended() {
  var touches = d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].changedTouches,
      n = touches.length, i, gesture;

  if (touchending) clearTimeout(touchending);
  touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!
  for (i = 0; i < n; ++i) {
    if (gesture = gestures[touches[i].identifier]) {
      Object(_noevent__WEBPACK_IMPORTED_MODULE_3__["nopropagation"])();
      gesture("end");
    }
  }
}

function beforestart(id, container, point, that, args) {
  var p = point(container, id), s, dx, dy,
      sublisteners = listeners.copy();

  if (!Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["customEvent"])(new _event__WEBPACK_IMPORTED_MODULE_5__["default"](drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {
    if ((d3_selection__WEBPACK_IMPORTED_MODULE_1__["event"].subject = s = subject.apply(that, args)) == null) return false;
    dx = s.x - p[0] || 0;
    dy = s.y - p[1] || 0;
    return true;
  })) return;

  return function gesture(type) {
    var p0 = p, n;
    switch (type) {
      case "start": gestures[id] = gesture, n = active++; break;
      case "end": delete gestures[id], --active; // nobreak
      case "drag": p = point(container, id), n = active; break;
    }
    Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["customEvent"])(new _event__WEBPACK_IMPORTED_MODULE_5__["default"](drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);
  };
}

drag.filter = function(_) {
  return arguments.length ? (filter = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_4__["default"])(!!_), drag) : filter;
};

drag.container = function(_) {
  return arguments.length ? (container = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_4__["default"])(_), drag) : container;
};

drag.subject = function(_) {
  return arguments.length ? (subject = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_4__["default"])(_), drag) : subject;
};

drag.touchable = function(_) {
  return arguments.length ? (touchable = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_4__["default"])(!!_), drag) : touchable;
};

drag.on = function() {
  var value = listeners.on.apply(listeners, arguments);
  return value === listeners ? drag : value;
};

drag.clickDistance = function(_) {
  return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);
};

return drag;

});

/***/ }),

/***/ “./node_modules/d3-drag/src/event.js”: /*!*******************************************!*\

!*** ./node_modules/d3-drag/src/event.js ***!
\*******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return DragEvent; }); function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {

this.target = target;
this.type = type;
this.subject = subject;
this.identifier = id;
this.active = active;
this.x = x;
this.y = y;
this.dx = dx;
this.dy = dy;
this._ = dispatch;

}

DragEvent.prototype.on = function() {

var value = this._.on.apply(this._, arguments);
return value === this._ ? this : value;

};

/***/ }),

/***/ “./node_modules/d3-drag/src/nodrag.js”: /*!********************************************!*\

!*** ./node_modules/d3-drag/src/nodrag.js ***!
\********************************************/

/*! exports provided: default, yesdrag */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “yesdrag”, function() { return yesdrag; }); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”); /* harmony import */ var noevent_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./noevent */ “./node_modules/d3-drag/src/noevent.js”);

/* harmony default export */ webpack_exports[“default”] = (function(view) {

var root = view.document.documentElement,
    selection = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["select"])(view).on("dragstart.drag", _noevent__WEBPACK_IMPORTED_MODULE_1__["default"], true);
if ("onselectstart" in root) {
  selection.on("selectstart.drag", _noevent__WEBPACK_IMPORTED_MODULE_1__["default"], true);
} else {
  root.__noselect = root.style.MozUserSelect;
  root.style.MozUserSelect = "none";
}

});

function yesdrag(view, noclick) {

var root = view.document.documentElement,
    selection = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["select"])(view).on("dragstart.drag", null);
if (noclick) {
  selection.on("click.drag", _noevent__WEBPACK_IMPORTED_MODULE_1__["default"], true);
  setTimeout(function() { selection.on("click.drag", null); }, 0);
}
if ("onselectstart" in root) {
  selection.on("selectstart.drag", null);
} else {
  root.style.MozUserSelect = root.__noselect;
  delete root.__noselect;
}

}

/***/ }),

/***/ “./node_modules/d3-drag/src/noevent.js”: /*!*********************************************!*\

!*** ./node_modules/d3-drag/src/noevent.js ***!
\*********************************************/

/*! exports provided: nopropagation, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “nopropagation”, function() { return nopropagation; }); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”);

function nopropagation() {

d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].stopImmediatePropagation();

}

/* harmony default export */ webpack_exports[“default”] = (function() {

d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].preventDefault();
d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].stopImmediatePropagation();

});

/***/ }),

/***/ “./node_modules/d3-dsv/index.js”: /*!**************************************!*\

!*** ./node_modules/d3-dsv/index.js ***!
\**************************************/

/*! exports provided: dsvFormat, csvParse, csvParseRows, csvFormat, csvFormatRows, tsvParse, tsvParseRows, tsvFormat, tsvFormatRows */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_dsv_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/dsv */ “./node_modules/d3-dsv/src/dsv.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “dsvFormat”, function() { return src_dsv_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_csv_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/csv */ “./node_modules/d3-dsv/src/csv.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “csvParse”, function() { return src_csv_WEBPACK_IMPORTED_MODULE_1[“csvParse”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “csvParseRows”, function() { return src_csv_WEBPACK_IMPORTED_MODULE_1[“csvParseRows”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “csvFormat”, function() { return src_csv_WEBPACK_IMPORTED_MODULE_1[“csvFormat”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “csvFormatRows”, function() { return src_csv_WEBPACK_IMPORTED_MODULE_1[“csvFormatRows”]; });

/* harmony import */ var src_tsv_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/tsv */ “./node_modules/d3-dsv/src/tsv.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tsvParse”, function() { return src_tsv_WEBPACK_IMPORTED_MODULE_2[“tsvParse”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tsvParseRows”, function() { return src_tsv_WEBPACK_IMPORTED_MODULE_2[“tsvParseRows”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tsvFormat”, function() { return src_tsv_WEBPACK_IMPORTED_MODULE_2[“tsvFormat”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tsvFormatRows”, function() { return src_tsv_WEBPACK_IMPORTED_MODULE_2[“tsvFormatRows”]; });

/***/ }),

/***/ “./node_modules/d3-dsv/src/csv.js”: /*!****************************************!*\

!*** ./node_modules/d3-dsv/src/csv.js ***!
\****************************************/

/*! exports provided: csvParse, csvParseRows, csvFormat, csvFormatRows */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “csvParse”, function() { return csvParse; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “csvParseRows”, function() { return csvParseRows; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “csvFormat”, function() { return csvFormat; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “csvFormatRows”, function() { return csvFormatRows; }); /* harmony import */ var dsv_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./dsv */ “./node_modules/d3-dsv/src/dsv.js”);

var csv = Object(dsv_WEBPACK_IMPORTED_MODULE_0[“default”])(“,”);

var csvParse = csv.parse; var csvParseRows = csv.parseRows; var csvFormat = csv.format; var csvFormatRows = csv.formatRows;

/***/ }),

/***/ “./node_modules/d3-dsv/src/dsv.js”: /*!****************************************!*\

!*** ./node_modules/d3-dsv/src/dsv.js ***!
\****************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); var EOL = {},

EOF = {},
QUOTE = 34,
NEWLINE = 10,
RETURN = 13;

function objectConverter(columns) {

return new Function("d", "return {" + columns.map(function(name, i) {
  return JSON.stringify(name) + ": d[" + i + "]";
}).join(",") + "}");

}

function customConverter(columns, f) {

var object = objectConverter(columns);
return function(row, i) {
  return f(object(row), i, columns);
};

}

// Compute unique columns in order of discovery. function inferColumns(rows) {

var columnSet = Object.create(null),
    columns = [];

rows.forEach(function(row) {
  for (var column in row) {
    if (!(column in columnSet)) {
      columns.push(columnSet[column] = column);
    }
  }
});

return columns;

}

/* harmony default export */ webpack_exports[“default”] = (function(delimiter) {

var reFormat = new RegExp("[\"" + delimiter + "\n\r]"),
    DELIMITER = delimiter.charCodeAt(0);

function parse(text, f) {
  var convert, columns, rows = parseRows(text, function(row, i) {
    if (convert) return convert(row, i - 1);
    columns = row, convert = f ? customConverter(row, f) : objectConverter(row);
  });
  rows.columns = columns || [];
  return rows;
}

function parseRows(text, f) {
  var rows = [], // output rows
      N = text.length,
      I = 0, // current character index
      n = 0, // current line number
      t, // current token
      eof = N <= 0, // current token followed by EOF?
      eol = false; // current token followed by EOL?

  // Strip the trailing newline.
  if (text.charCodeAt(N - 1) === NEWLINE) --N;
  if (text.charCodeAt(N - 1) === RETURN) --N;

  function token() {
    if (eof) return EOF;
    if (eol) return eol = false, EOL;

    // Unescape quotes.
    var i, j = I, c;
    if (text.charCodeAt(j) === QUOTE) {
      while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);
      if ((i = I) >= N) eof = true;
      else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;
      else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }
      return text.slice(j + 1, i - 1).replace(/""/g, "\"");
    }

    // Find next delimiter or newline.
    while (I < N) {
      if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;
      else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }
      else if (c !== DELIMITER) continue;
      return text.slice(j, i);
    }

    // Return last token before EOF.
    return eof = true, text.slice(j, N);
  }

  while ((t = token()) !== EOF) {
    var row = [];
    while (t !== EOL && t !== EOF) row.push(t), t = token();
    if (f && (row = f(row, n++)) == null) continue;
    rows.push(row);
  }

  return rows;
}

function format(rows, columns) {
  if (columns == null) columns = inferColumns(rows);
  return [columns.map(formatValue).join(delimiter)].concat(rows.map(function(row) {
    return columns.map(function(column) {
      return formatValue(row[column]);
    }).join(delimiter);
  })).join("\n");
}

function formatRows(rows) {
  return rows.map(formatRow).join("\n");
}

function formatRow(row) {
  return row.map(formatValue).join(delimiter);
}

function formatValue(text) {
  return text == null ? ""
      : reFormat.test(text += "") ? "\"" + text.replace(/"/g, "\"\"") + "\""
      : text;
}

return {
  parse: parse,
  parseRows: parseRows,
  format: format,
  formatRows: formatRows
};

});

/***/ }),

/***/ “./node_modules/d3-dsv/src/tsv.js”: /*!****************************************!*\

!*** ./node_modules/d3-dsv/src/tsv.js ***!
\****************************************/

/*! exports provided: tsvParse, tsvParseRows, tsvFormat, tsvFormatRows */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tsvParse”, function() { return tsvParse; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tsvParseRows”, function() { return tsvParseRows; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tsvFormat”, function() { return tsvFormat; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tsvFormatRows”, function() { return tsvFormatRows; }); /* harmony import */ var dsv_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./dsv */ “./node_modules/d3-dsv/src/dsv.js”);

var tsv = Object(dsv_WEBPACK_IMPORTED_MODULE_0[“default”])(“t”);

var tsvParse = tsv.parse; var tsvParseRows = tsv.parseRows; var tsvFormat = tsv.format; var tsvFormatRows = tsv.formatRows;

/***/ }),

/***/ “./node_modules/d3-ease/index.js”: /*!***************************************!*\

!*** ./node_modules/d3-ease/index.js ***!
\***************************************/

/*! exports provided: easeLinear, easeQuad, easeQuadIn, easeQuadOut, easeQuadInOut, easeCubic, easeCubicIn, easeCubicOut, easeCubicInOut, easePoly, easePolyIn, easePolyOut, easePolyInOut, easeSin, easeSinIn, easeSinOut, easeSinInOut, easeExp, easeExpIn, easeExpOut, easeExpInOut, easeCircle, easeCircleIn, easeCircleOut, easeCircleInOut, easeBounce, easeBounceIn, easeBounceOut, easeBounceInOut, easeBack, easeBackIn, easeBackOut, easeBackInOut, easeElastic, easeElasticIn, easeElasticOut, easeElasticInOut */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_linear_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/linear */ “./node_modules/d3-ease/src/linear.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeLinear”, function() { return src_linear_WEBPACK_IMPORTED_MODULE_0[“linear”]; });

/* harmony import */ var src_quad_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/quad */ “./node_modules/d3-ease/src/quad.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeQuad”, function() { return src_quad_WEBPACK_IMPORTED_MODULE_1[“quadInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeQuadIn”, function() { return src_quad_WEBPACK_IMPORTED_MODULE_1[“quadIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeQuadOut”, function() { return src_quad_WEBPACK_IMPORTED_MODULE_1[“quadOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeQuadInOut”, function() { return src_quad_WEBPACK_IMPORTED_MODULE_1[“quadInOut”]; });

/* harmony import */ var src_cubic_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/cubic */ “./node_modules/d3-ease/src/cubic.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCubic”, function() { return src_cubic_WEBPACK_IMPORTED_MODULE_2[“cubicInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCubicIn”, function() { return src_cubic_WEBPACK_IMPORTED_MODULE_2[“cubicIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCubicOut”, function() { return src_cubic_WEBPACK_IMPORTED_MODULE_2[“cubicOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCubicInOut”, function() { return src_cubic_WEBPACK_IMPORTED_MODULE_2[“cubicInOut”]; });

/* harmony import */ var src_poly_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/poly */ “./node_modules/d3-ease/src/poly.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easePoly”, function() { return src_poly_WEBPACK_IMPORTED_MODULE_3[“polyInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easePolyIn”, function() { return src_poly_WEBPACK_IMPORTED_MODULE_3[“polyIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easePolyOut”, function() { return src_poly_WEBPACK_IMPORTED_MODULE_3[“polyOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easePolyInOut”, function() { return src_poly_WEBPACK_IMPORTED_MODULE_3[“polyInOut”]; });

/* harmony import */ var src_sin_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/sin */ “./node_modules/d3-ease/src/sin.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeSin”, function() { return src_sin_WEBPACK_IMPORTED_MODULE_4[“sinInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeSinIn”, function() { return src_sin_WEBPACK_IMPORTED_MODULE_4[“sinIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeSinOut”, function() { return src_sin_WEBPACK_IMPORTED_MODULE_4[“sinOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeSinInOut”, function() { return src_sin_WEBPACK_IMPORTED_MODULE_4[“sinInOut”]; });

/* harmony import */ var src_exp_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/exp */ “./node_modules/d3-ease/src/exp.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeExp”, function() { return src_exp_WEBPACK_IMPORTED_MODULE_5[“expInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeExpIn”, function() { return src_exp_WEBPACK_IMPORTED_MODULE_5[“expIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeExpOut”, function() { return src_exp_WEBPACK_IMPORTED_MODULE_5[“expOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeExpInOut”, function() { return src_exp_WEBPACK_IMPORTED_MODULE_5[“expInOut”]; });

/* harmony import */ var src_circle_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./src/circle */ “./node_modules/d3-ease/src/circle.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCircle”, function() { return src_circle_WEBPACK_IMPORTED_MODULE_6[“circleInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCircleIn”, function() { return src_circle_WEBPACK_IMPORTED_MODULE_6[“circleIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCircleOut”, function() { return src_circle_WEBPACK_IMPORTED_MODULE_6[“circleOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCircleInOut”, function() { return src_circle_WEBPACK_IMPORTED_MODULE_6[“circleInOut”]; });

/* harmony import */ var src_bounce_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./src/bounce */ “./node_modules/d3-ease/src/bounce.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBounce”, function() { return src_bounce_WEBPACK_IMPORTED_MODULE_7[“bounceOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBounceIn”, function() { return src_bounce_WEBPACK_IMPORTED_MODULE_7[“bounceIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBounceOut”, function() { return src_bounce_WEBPACK_IMPORTED_MODULE_7[“bounceOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBounceInOut”, function() { return src_bounce_WEBPACK_IMPORTED_MODULE_7[“bounceInOut”]; });

/* harmony import */ var src_back_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./src/back */ “./node_modules/d3-ease/src/back.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBack”, function() { return src_back_WEBPACK_IMPORTED_MODULE_8[“backInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBackIn”, function() { return src_back_WEBPACK_IMPORTED_MODULE_8[“backIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBackOut”, function() { return src_back_WEBPACK_IMPORTED_MODULE_8[“backOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBackInOut”, function() { return src_back_WEBPACK_IMPORTED_MODULE_8[“backInOut”]; });

/* harmony import */ var src_elastic_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./src/elastic */ “./node_modules/d3-ease/src/elastic.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeElastic”, function() { return src_elastic_WEBPACK_IMPORTED_MODULE_9[“elasticOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeElasticIn”, function() { return src_elastic_WEBPACK_IMPORTED_MODULE_9[“elasticIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeElasticOut”, function() { return src_elastic_WEBPACK_IMPORTED_MODULE_9[“elasticOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeElasticInOut”, function() { return src_elastic_WEBPACK_IMPORTED_MODULE_9[“elasticInOut”]; });

/***/ }),

/***/ “./node_modules/d3-ease/src/back.js”: /*!******************************************!*\

!*** ./node_modules/d3-ease/src/back.js ***!
\******************************************/

/*! exports provided: backIn, backOut, backInOut */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “backIn”, function() { return backIn; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “backOut”, function() { return backOut; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “backInOut”, function() { return backInOut; }); var overshoot = 1.70158;

var backIn = (function custom(s) {

s = +s;

function backIn(t) {
  return t * t * ((s + 1) * t - s);
}

backIn.overshoot = custom;

return backIn;

})(overshoot);

var backOut = (function custom(s) {

s = +s;

function backOut(t) {
  return --t * t * ((s + 1) * t + s) + 1;
}

backOut.overshoot = custom;

return backOut;

})(overshoot);

var backInOut = (function custom(s) {

s = +s;

function backInOut(t) {
  return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;
}

backInOut.overshoot = custom;

return backInOut;

})(overshoot);

/***/ }),

/***/ “./node_modules/d3-ease/src/bounce.js”: /*!********************************************!*\

!*** ./node_modules/d3-ease/src/bounce.js ***!
\********************************************/

/*! exports provided: bounceIn, bounceOut, bounceInOut */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “bounceIn”, function() { return bounceIn; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “bounceOut”, function() { return bounceOut; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “bounceInOut”, function() { return bounceInOut; }); var b1 = 4 / 11,

b2 = 6 / 11,
b3 = 8 / 11,
b4 = 3 / 4,
b5 = 9 / 11,
b6 = 10 / 11,
b7 = 15 / 16,
b8 = 21 / 22,
b9 = 63 / 64,
b0 = 1 / b1 / b1;

function bounceIn(t) {

return 1 - bounceOut(1 - t);

}

function bounceOut(t) {

return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;

}

function bounceInOut(t) {

return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;

}

/***/ }),

/***/ “./node_modules/d3-ease/src/circle.js”: /*!********************************************!*\

!*** ./node_modules/d3-ease/src/circle.js ***!
\********************************************/

/*! exports provided: circleIn, circleOut, circleInOut */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “circleIn”, function() { return circleIn; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “circleOut”, function() { return circleOut; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “circleInOut”, function() { return circleInOut; }); function circleIn(t) {

return 1 - Math.sqrt(1 - t * t);

}

function circleOut(t) {

return Math.sqrt(1 - --t * t);

}

function circleInOut(t) {

return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;

}

/***/ }),

/***/ “./node_modules/d3-ease/src/cubic.js”: /*!*******************************************!*\

!*** ./node_modules/d3-ease/src/cubic.js ***!
\*******************************************/

/*! exports provided: cubicIn, cubicOut, cubicInOut */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cubicIn”, function() { return cubicIn; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cubicOut”, function() { return cubicOut; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cubicInOut”, function() { return cubicInOut; }); function cubicIn(t) {

return t * t * t;

}

function cubicOut(t) {

return --t * t * t + 1;

}

function cubicInOut(t) {

return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;

}

/***/ }),

/***/ “./node_modules/d3-ease/src/elastic.js”: /*!*********************************************!*\

!*** ./node_modules/d3-ease/src/elastic.js ***!
\*********************************************/

/*! exports provided: elasticIn, elasticOut, elasticInOut */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “elasticIn”, function() { return elasticIn; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “elasticOut”, function() { return elasticOut; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “elasticInOut”, function() { return elasticInOut; }); var tau = 2 * Math.PI,

amplitude = 1,
period = 0.3;

var elasticIn = (function custom(a, p) {

var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);

function elasticIn(t) {
  return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);
}

elasticIn.amplitude = function(a) { return custom(a, p * tau); };
elasticIn.period = function(p) { return custom(a, p); };

return elasticIn;

})(amplitude, period);

var elasticOut = (function custom(a, p) {

var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);

function elasticOut(t) {
  return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);
}

elasticOut.amplitude = function(a) { return custom(a, p * tau); };
elasticOut.period = function(p) { return custom(a, p); };

return elasticOut;

})(amplitude, period);

var elasticInOut = (function custom(a, p) {

var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);

function elasticInOut(t) {
  return ((t = t * 2 - 1) < 0
      ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)
      : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;
}

elasticInOut.amplitude = function(a) { return custom(a, p * tau); };
elasticInOut.period = function(p) { return custom(a, p); };

return elasticInOut;

})(amplitude, period);

/***/ }),

/***/ “./node_modules/d3-ease/src/exp.js”: /*!*****************************************!*\

!*** ./node_modules/d3-ease/src/exp.js ***!
\*****************************************/

/*! exports provided: expIn, expOut, expInOut */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “expIn”, function() { return expIn; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “expOut”, function() { return expOut; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “expInOut”, function() { return expInOut; }); function expIn(t) {

return Math.pow(2, 10 * t - 10);

}

function expOut(t) {

return 1 - Math.pow(2, -10 * t);

}

function expInOut(t) {

return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;

}

/***/ }),

/***/ “./node_modules/d3-ease/src/linear.js”: /*!********************************************!*\

!*** ./node_modules/d3-ease/src/linear.js ***!
\********************************************/

/*! exports provided: linear */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “linear”, function() { return linear; }); function linear(t) {

return +t;

}

/***/ }),

/***/ “./node_modules/d3-ease/src/poly.js”: /*!******************************************!*\

!*** ./node_modules/d3-ease/src/poly.js ***!
\******************************************/

/*! exports provided: polyIn, polyOut, polyInOut */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “polyIn”, function() { return polyIn; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “polyOut”, function() { return polyOut; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “polyInOut”, function() { return polyInOut; }); var exponent = 3;

var polyIn = (function custom(e) {

e = +e;

function polyIn(t) {
  return Math.pow(t, e);
}

polyIn.exponent = custom;

return polyIn;

})(exponent);

var polyOut = (function custom(e) {

e = +e;

function polyOut(t) {
  return 1 - Math.pow(1 - t, e);
}

polyOut.exponent = custom;

return polyOut;

})(exponent);

var polyInOut = (function custom(e) {

e = +e;

function polyInOut(t) {
  return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;
}

polyInOut.exponent = custom;

return polyInOut;

})(exponent);

/***/ }),

/***/ “./node_modules/d3-ease/src/quad.js”: /*!******************************************!*\

!*** ./node_modules/d3-ease/src/quad.js ***!
\******************************************/

/*! exports provided: quadIn, quadOut, quadInOut */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “quadIn”, function() { return quadIn; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “quadOut”, function() { return quadOut; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “quadInOut”, function() { return quadInOut; }); function quadIn(t) {

return t * t;

}

function quadOut(t) {

return t * (2 - t);

}

function quadInOut(t) {

return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;

}

/***/ }),

/***/ “./node_modules/d3-ease/src/sin.js”: /*!*****************************************!*\

!*** ./node_modules/d3-ease/src/sin.js ***!
\*****************************************/

/*! exports provided: sinIn, sinOut, sinInOut */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sinIn”, function() { return sinIn; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sinOut”, function() { return sinOut; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sinInOut”, function() { return sinInOut; }); var pi = Math.PI,

halfPi = pi / 2;

function sinIn(t) {

return 1 - Math.cos(t * halfPi);

}

function sinOut(t) {

return Math.sin(t * halfPi);

}

function sinInOut(t) {

return (1 - Math.cos(pi * t)) / 2;

}

/***/ }),

/***/ “./node_modules/d3-force/index.js”: /*!****************************************!*\

!*** ./node_modules/d3-force/index.js ***!
\****************************************/

/*! exports provided: forceCenter, forceCollide, forceLink, forceManyBody, forceRadial, forceSimulation, forceX, forceY */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_center_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/center */ “./node_modules/d3-force/src/center.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceCenter”, function() { return src_center_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_collide_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/collide */ “./node_modules/d3-force/src/collide.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceCollide”, function() { return src_collide_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_link_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/link */ “./node_modules/d3-force/src/link.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceLink”, function() { return src_link_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_manyBody_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/manyBody */ “./node_modules/d3-force/src/manyBody.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceManyBody”, function() { return src_manyBody_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_radial_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/radial */ “./node_modules/d3-force/src/radial.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceRadial”, function() { return src_radial_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony import */ var src_simulation_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/simulation */ “./node_modules/d3-force/src/simulation.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceSimulation”, function() { return src_simulation_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/* harmony import */ var src_x_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./src/x */ “./node_modules/d3-force/src/x.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceX”, function() { return src_x_WEBPACK_IMPORTED_MODULE_6[“default”]; });

/* harmony import */ var src_y_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./src/y */ “./node_modules/d3-force/src/y.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceY”, function() { return src_y_WEBPACK_IMPORTED_MODULE_7[“default”]; });

/***/ }),

/***/ “./node_modules/d3-force/src/center.js”: /*!*********************************************!*\

!*** ./node_modules/d3-force/src/center.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x, y) {

var nodes;

if (x == null) x = 0;
if (y == null) y = 0;

function force() {
  var i,
      n = nodes.length,
      node,
      sx = 0,
      sy = 0;

  for (i = 0; i < n; ++i) {
    node = nodes[i], sx += node.x, sy += node.y;
  }

  for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {
    node = nodes[i], node.x -= sx, node.y -= sy;
  }
}

force.initialize = function(_) {
  nodes = _;
};

force.x = function(_) {
  return arguments.length ? (x = +_, force) : x;
};

force.y = function(_) {
  return arguments.length ? (y = +_, force) : y;
};

return force;

});

/***/ }),

/***/ “./node_modules/d3-force/src/collide.js”: /*!**********************************************!*\

!*** ./node_modules/d3-force/src/collide.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./constant */ “./node_modules/d3-force/src/constant.js”); /* harmony import */ var jiggle_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./jiggle */ “./node_modules/d3-force/src/jiggle.js”); /* harmony import */ var d3_quadtree_WEBPACK_IMPORTED_MODULE_2_ = webpack_require(/*! d3-quadtree */ “./node_modules/d3-quadtree/index.js”);

function x(d) {

return d.x + d.vx;

}

function y(d) {

return d.y + d.vy;

}

/* harmony default export */ webpack_exports[“default”] = (function(radius) {

var nodes,
    radii,
    strength = 1,
    iterations = 1;

if (typeof radius !== "function") radius = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(radius == null ? 1 : +radius);

function force() {
  var i, n = nodes.length,
      tree,
      node,
      xi,
      yi,
      ri,
      ri2;

  for (var k = 0; k < iterations; ++k) {
    tree = Object(d3_quadtree__WEBPACK_IMPORTED_MODULE_2__["quadtree"])(nodes, x, y).visitAfter(prepare);
    for (i = 0; i < n; ++i) {
      node = nodes[i];
      ri = radii[node.index], ri2 = ri * ri;
      xi = node.x + node.vx;
      yi = node.y + node.vy;
      tree.visit(apply);
    }
  }

  function apply(quad, x0, y0, x1, y1) {
    var data = quad.data, rj = quad.r, r = ri + rj;
    if (data) {
      if (data.index > node.index) {
        var x = xi - data.x - data.vx,
            y = yi - data.y - data.vy,
            l = x * x + y * y;
        if (l < r * r) {
          if (x === 0) x = Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])(), l += x * x;
          if (y === 0) y = Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])(), l += y * y;
          l = (r - (l = Math.sqrt(l))) / l * strength;
          node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));
          node.vy += (y *= l) * r;
          data.vx -= x * (r = 1 - r);
          data.vy -= y * r;
        }
      }
      return;
    }
    return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;
  }
}

function prepare(quad) {
  if (quad.data) return quad.r = radii[quad.data.index];
  for (var i = quad.r = 0; i < 4; ++i) {
    if (quad[i] && quad[i].r > quad.r) {
      quad.r = quad[i].r;
    }
  }
}

function initialize() {
  if (!nodes) return;
  var i, n = nodes.length, node;
  radii = new Array(n);
  for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);
}

force.initialize = function(_) {
  nodes = _;
  initialize();
};

force.iterations = function(_) {
  return arguments.length ? (iterations = +_, force) : iterations;
};

force.strength = function(_) {
  return arguments.length ? (strength = +_, force) : strength;
};

force.radius = function(_) {
  return arguments.length ? (radius = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : radius;
};

return force;

});

/***/ }),

/***/ “./node_modules/d3-force/src/constant.js”: /*!***********************************************!*\

!*** ./node_modules/d3-force/src/constant.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return function() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-force/src/jiggle.js”: /*!*********************************************!*\

!*** ./node_modules/d3-force/src/jiggle.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

return (Math.random() - 0.5) * 1e-6;

});

/***/ }),

/***/ “./node_modules/d3-force/src/link.js”: /*!*******************************************!*\

!*** ./node_modules/d3-force/src/link.js ***!
\*******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./constant */ “./node_modules/d3-force/src/constant.js”); /* harmony import */ var jiggle_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./jiggle */ “./node_modules/d3-force/src/jiggle.js”); /* harmony import */ var d3_collection_WEBPACK_IMPORTED_MODULE_2_ = webpack_require(/*! d3-collection */ “./node_modules/d3-collection/index.js”);

function index(d) {

return d.index;

}

function find(nodeById, nodeId) {

var node = nodeById.get(nodeId);
if (!node) throw new Error("missing: " + nodeId);
return node;

}

/* harmony default export */ webpack_exports[“default”] = (function(links) {

var id = index,
    strength = defaultStrength,
    strengths,
    distance = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(30),
    distances,
    nodes,
    count,
    bias,
    iterations = 1;

if (links == null) links = [];

function defaultStrength(link) {
  return 1 / Math.min(count[link.source.index], count[link.target.index]);
}

function force(alpha) {
  for (var k = 0, n = links.length; k < iterations; ++k) {
    for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {
      link = links[i], source = link.source, target = link.target;
      x = target.x + target.vx - source.x - source.vx || Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])();
      y = target.y + target.vy - source.y - source.vy || Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])();
      l = Math.sqrt(x * x + y * y);
      l = (l - distances[i]) / l * alpha * strengths[i];
      x *= l, y *= l;
      target.vx -= x * (b = bias[i]);
      target.vy -= y * b;
      source.vx += x * (b = 1 - b);
      source.vy += y * b;
    }
  }
}

function initialize() {
  if (!nodes) return;

  var i,
      n = nodes.length,
      m = links.length,
      nodeById = Object(d3_collection__WEBPACK_IMPORTED_MODULE_2__["map"])(nodes, id),
      link;

  for (i = 0, count = new Array(n); i < m; ++i) {
    link = links[i], link.index = i;
    if (typeof link.source !== "object") link.source = find(nodeById, link.source);
    if (typeof link.target !== "object") link.target = find(nodeById, link.target);
    count[link.source.index] = (count[link.source.index] || 0) + 1;
    count[link.target.index] = (count[link.target.index] || 0) + 1;
  }

  for (i = 0, bias = new Array(m); i < m; ++i) {
    link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);
  }

  strengths = new Array(m), initializeStrength();
  distances = new Array(m), initializeDistance();
}

function initializeStrength() {
  if (!nodes) return;

  for (var i = 0, n = links.length; i < n; ++i) {
    strengths[i] = +strength(links[i], i, links);
  }
}

function initializeDistance() {
  if (!nodes) return;

  for (var i = 0, n = links.length; i < n; ++i) {
    distances[i] = +distance(links[i], i, links);
  }
}

force.initialize = function(_) {
  nodes = _;
  initialize();
};

force.links = function(_) {
  return arguments.length ? (links = _, initialize(), force) : links;
};

force.id = function(_) {
  return arguments.length ? (id = _, force) : id;
};

force.iterations = function(_) {
  return arguments.length ? (iterations = +_, force) : iterations;
};

force.strength = function(_) {
  return arguments.length ? (strength = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initializeStrength(), force) : strength;
};

force.distance = function(_) {
  return arguments.length ? (distance = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initializeDistance(), force) : distance;
};

return force;

});

/***/ }),

/***/ “./node_modules/d3-force/src/manyBody.js”: /*!***********************************************!*\

!*** ./node_modules/d3-force/src/manyBody.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./constant */ “./node_modules/d3-force/src/constant.js”); /* harmony import */ var jiggle_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./jiggle */ “./node_modules/d3-force/src/jiggle.js”); /* harmony import */ var d3_quadtree_WEBPACK_IMPORTED_MODULE_2_ = webpack_require(/*! d3-quadtree */ “./node_modules/d3-quadtree/index.js”); /* harmony import */ var simulation_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./simulation */ “./node_modules/d3-force/src/simulation.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var nodes,
    node,
    alpha,
    strength = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(-30),
    strengths,
    distanceMin2 = 1,
    distanceMax2 = Infinity,
    theta2 = 0.81;

function force(_) {
  var i, n = nodes.length, tree = Object(d3_quadtree__WEBPACK_IMPORTED_MODULE_2__["quadtree"])(nodes, _simulation__WEBPACK_IMPORTED_MODULE_3__["x"], _simulation__WEBPACK_IMPORTED_MODULE_3__["y"]).visitAfter(accumulate);
  for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);
}

function initialize() {
  if (!nodes) return;
  var i, n = nodes.length, node;
  strengths = new Array(n);
  for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);
}

function accumulate(quad) {
  var strength = 0, q, c, weight = 0, x, y, i;

  // For internal nodes, accumulate forces from child quadrants.
  if (quad.length) {
    for (x = y = i = 0; i < 4; ++i) {
      if ((q = quad[i]) && (c = Math.abs(q.value))) {
        strength += q.value, weight += c, x += c * q.x, y += c * q.y;
      }
    }
    quad.x = x / weight;
    quad.y = y / weight;
  }

  // For leaf nodes, accumulate forces from coincident quadrants.
  else {
    q = quad;
    q.x = q.data.x;
    q.y = q.data.y;
    do strength += strengths[q.data.index];
    while (q = q.next);
  }

  quad.value = strength;
}

function apply(quad, x1, _, x2) {
  if (!quad.value) return true;

  var x = quad.x - node.x,
      y = quad.y - node.y,
      w = x2 - x1,
      l = x * x + y * y;

  // Apply the Barnes-Hut approximation if possible.
  // Limit forces for very close nodes; randomize direction if coincident.
  if (w * w / theta2 < l) {
    if (l < distanceMax2) {
      if (x === 0) x = Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])(), l += x * x;
      if (y === 0) y = Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])(), l += y * y;
      if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);
      node.vx += x * quad.value * alpha / l;
      node.vy += y * quad.value * alpha / l;
    }
    return true;
  }

  // Otherwise, process points directly.
  else if (quad.length || l >= distanceMax2) return;

  // Limit forces for very close nodes; randomize direction if coincident.
  if (quad.data !== node || quad.next) {
    if (x === 0) x = Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])(), l += x * x;
    if (y === 0) y = Object(_jiggle__WEBPACK_IMPORTED_MODULE_1__["default"])(), l += y * y;
    if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);
  }

  do if (quad.data !== node) {
    w = strengths[quad.data.index] * alpha / l;
    node.vx += x * w;
    node.vy += y * w;
  } while (quad = quad.next);
}

force.initialize = function(_) {
  nodes = _;
  initialize();
};

force.strength = function(_) {
  return arguments.length ? (strength = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : strength;
};

force.distanceMin = function(_) {
  return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);
};

force.distanceMax = function(_) {
  return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);
};

force.theta = function(_) {
  return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);
};

return force;

});

/***/ }),

/***/ “./node_modules/d3-force/src/radial.js”: /*!*********************************************!*\

!*** ./node_modules/d3-force/src/radial.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./constant */ “./node_modules/d3-force/src/constant.js”);

/* harmony default export */ webpack_exports[“default”] = (function(radius, x, y) {

var nodes,
    strength = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(0.1),
    strengths,
    radiuses;

if (typeof radius !== "function") radius = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+radius);
if (x == null) x = 0;
if (y == null) y = 0;

function force(alpha) {
  for (var i = 0, n = nodes.length; i < n; ++i) {
    var node = nodes[i],
        dx = node.x - x || 1e-6,
        dy = node.y - y || 1e-6,
        r = Math.sqrt(dx * dx + dy * dy),
        k = (radiuses[i] - r) * strengths[i] * alpha / r;
    node.vx += dx * k;
    node.vy += dy * k;
  }
}

function initialize() {
  if (!nodes) return;
  var i, n = nodes.length;
  strengths = new Array(n);
  radiuses = new Array(n);
  for (i = 0; i < n; ++i) {
    radiuses[i] = +radius(nodes[i], i, nodes);
    strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);
  }
}

force.initialize = function(_) {
  nodes = _, initialize();
};

force.strength = function(_) {
  return arguments.length ? (strength = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : strength;
};

force.radius = function(_) {
  return arguments.length ? (radius = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : radius;
};

force.x = function(_) {
  return arguments.length ? (x = +_, force) : x;
};

force.y = function(_) {
  return arguments.length ? (y = +_, force) : y;
};

return force;

});

/***/ }),

/***/ “./node_modules/d3-force/src/simulation.js”: /*!*************************************************!*\

!*** ./node_modules/d3-force/src/simulation.js ***!
\*************************************************/

/*! exports provided: x, y, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “x”, function() { return x; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “y”, function() { return y; }); /* harmony import */ var d3_dispatch_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-dispatch */ “./node_modules/d3-dispatch/index.js”); /* harmony import */ var d3_collection_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-collection */ “./node_modules/d3-collection/index.js”); /* harmony import */ var d3_timer_WEBPACK_IMPORTED_MODULE_2_ = webpack_require(/*! d3-timer */ “./node_modules/d3-timer/index.js”);

function x(d) {

return d.x;

}

function y(d) {

return d.y;

}

var initialRadius = 10,

initialAngle = Math.PI * (3 - Math.sqrt(5));

/* harmony default export */ webpack_exports[“default”] = (function(nodes) {

var simulation,
    alpha = 1,
    alphaMin = 0.001,
    alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),
    alphaTarget = 0,
    velocityDecay = 0.6,
    forces = Object(d3_collection__WEBPACK_IMPORTED_MODULE_1__["map"])(),
    stepper = Object(d3_timer__WEBPACK_IMPORTED_MODULE_2__["timer"])(step),
    event = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__["dispatch"])("tick", "end");

if (nodes == null) nodes = [];

function step() {
  tick();
  event.call("tick", simulation);
  if (alpha < alphaMin) {
    stepper.stop();
    event.call("end", simulation);
  }
}

function tick() {
  var i, n = nodes.length, node;

  alpha += (alphaTarget - alpha) * alphaDecay;

  forces.each(function(force) {
    force(alpha);
  });

  for (i = 0; i < n; ++i) {
    node = nodes[i];
    if (node.fx == null) node.x += node.vx *= velocityDecay;
    else node.x = node.fx, node.vx = 0;
    if (node.fy == null) node.y += node.vy *= velocityDecay;
    else node.y = node.fy, node.vy = 0;
  }
}

function initializeNodes() {
  for (var i = 0, n = nodes.length, node; i < n; ++i) {
    node = nodes[i], node.index = i;
    if (isNaN(node.x) || isNaN(node.y)) {
      var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;
      node.x = radius * Math.cos(angle);
      node.y = radius * Math.sin(angle);
    }
    if (isNaN(node.vx) || isNaN(node.vy)) {
      node.vx = node.vy = 0;
    }
  }
}

function initializeForce(force) {
  if (force.initialize) force.initialize(nodes);
  return force;
}

initializeNodes();

return simulation = {
  tick: tick,

  restart: function() {
    return stepper.restart(step), simulation;
  },

  stop: function() {
    return stepper.stop(), simulation;
  },

  nodes: function(_) {
    return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;
  },

  alpha: function(_) {
    return arguments.length ? (alpha = +_, simulation) : alpha;
  },

  alphaMin: function(_) {
    return arguments.length ? (alphaMin = +_, simulation) : alphaMin;
  },

  alphaDecay: function(_) {
    return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;
  },

  alphaTarget: function(_) {
    return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;
  },

  velocityDecay: function(_) {
    return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;
  },

  force: function(name, _) {
    return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);
  },

  find: function(x, y, radius) {
    var i = 0,
        n = nodes.length,
        dx,
        dy,
        d2,
        node,
        closest;

    if (radius == null) radius = Infinity;
    else radius *= radius;

    for (i = 0; i < n; ++i) {
      node = nodes[i];
      dx = x - node.x;
      dy = y - node.y;
      d2 = dx * dx + dy * dy;
      if (d2 < radius) closest = node, radius = d2;
    }

    return closest;
  },

  on: function(name, _) {
    return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);
  }
};

});

/***/ }),

/***/ “./node_modules/d3-force/src/x.js”: /*!****************************************!*\

!*** ./node_modules/d3-force/src/x.js ***!
\****************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./constant */ “./node_modules/d3-force/src/constant.js”);

/* harmony default export */ webpack_exports[“default”] = (function(x) {

var strength = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(0.1),
    nodes,
    strengths,
    xz;

if (typeof x !== "function") x = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(x == null ? 0 : +x);

function force(alpha) {
  for (var i = 0, n = nodes.length, node; i < n; ++i) {
    node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;
  }
}

function initialize() {
  if (!nodes) return;
  var i, n = nodes.length;
  strengths = new Array(n);
  xz = new Array(n);
  for (i = 0; i < n; ++i) {
    strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);
  }
}

force.initialize = function(_) {
  nodes = _;
  initialize();
};

force.strength = function(_) {
  return arguments.length ? (strength = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : strength;
};

force.x = function(_) {
  return arguments.length ? (x = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : x;
};

return force;

});

/***/ }),

/***/ “./node_modules/d3-force/src/y.js”: /*!****************************************!*\

!*** ./node_modules/d3-force/src/y.js ***!
\****************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./constant */ “./node_modules/d3-force/src/constant.js”);

/* harmony default export */ webpack_exports[“default”] = (function(y) {

var strength = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(0.1),
    nodes,
    strengths,
    yz;

if (typeof y !== "function") y = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(y == null ? 0 : +y);

function force(alpha) {
  for (var i = 0, n = nodes.length, node; i < n; ++i) {
    node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;
  }
}

function initialize() {
  if (!nodes) return;
  var i, n = nodes.length;
  strengths = new Array(n);
  yz = new Array(n);
  for (i = 0; i < n; ++i) {
    strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);
  }
}

force.initialize = function(_) {
  nodes = _;
  initialize();
};

force.strength = function(_) {
  return arguments.length ? (strength = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : strength;
};

force.y = function(_) {
  return arguments.length ? (y = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), initialize(), force) : y;
};

return force;

});

/***/ }),

/***/ “./node_modules/d3-format/index.js”: /*!*****************************************!*\

!*** ./node_modules/d3-format/index.js ***!
\*****************************************/

/*! exports provided: formatDefaultLocale, format, formatPrefix, formatLocale, formatSpecifier, precisionFixed, precisionPrefix, precisionRound */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_defaultLocale_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/defaultLocale */ “./node_modules/d3-format/src/defaultLocale.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “formatDefaultLocale”, function() { return src_defaultLocale_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “format”, function() { return src_defaultLocale_WEBPACK_IMPORTED_MODULE_0[“format”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “formatPrefix”, function() { return src_defaultLocale_WEBPACK_IMPORTED_MODULE_0[“formatPrefix”]; });

/* harmony import */ var src_locale_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/locale */ “./node_modules/d3-format/src/locale.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “formatLocale”, function() { return src_locale_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_formatSpecifier_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/formatSpecifier */ “./node_modules/d3-format/src/formatSpecifier.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “formatSpecifier”, function() { return src_formatSpecifier_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_precisionFixed_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/precisionFixed */ “./node_modules/d3-format/src/precisionFixed.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “precisionFixed”, function() { return src_precisionFixed_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_precisionPrefix_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/precisionPrefix */ “./node_modules/d3-format/src/precisionPrefix.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “precisionPrefix”, function() { return src_precisionPrefix_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony import */ var src_precisionRound_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/precisionRound */ “./node_modules/d3-format/src/precisionRound.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “precisionRound”, function() { return src_precisionRound_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/***/ }),

/***/ “./node_modules/d3-format/src/defaultLocale.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-format/src/defaultLocale.js ***!
\*****************************************************/

/*! exports provided: format, formatPrefix, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “format”, function() { return format; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “formatPrefix”, function() { return formatPrefix; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return defaultLocale; }); /* harmony import */ var locale_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./locale */ “./node_modules/d3-format/src/locale.js”);

var locale; var format; var formatPrefix;

defaultLocale({

decimal: ".",
thousands: ",",
grouping: [3],
currency: ["$", ""]

});

function defaultLocale(definition) {

locale = Object(_locale__WEBPACK_IMPORTED_MODULE_0__["default"])(definition);
format = locale.format;
formatPrefix = locale.formatPrefix;
return locale;

}

/***/ }),

/***/ “./node_modules/d3-format/src/exponent.js”: /*!************************************************!*\

!*** ./node_modules/d3-format/src/exponent.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var formatDecimal_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./formatDecimal */ “./node_modules/d3-format/src/formatDecimal.js”);

/* harmony default export */ webpack_exports[“default”] = (function(x) {

return x = Object(_formatDecimal__WEBPACK_IMPORTED_MODULE_0__["default"])(Math.abs(x)), x ? x[1] : NaN;

});

/***/ }),

/***/ “./node_modules/d3-format/src/formatDecimal.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-format/src/formatDecimal.js ***!
\*****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); // Computes the decimal coefficient and exponent of the specified number x with // significant digits p, where x is positive and p is in [1, 21] or undefined. // For example, formatDecimal(1.23) returns [“123”, 0]. /* harmony default export */ webpack_exports[“default”] = (function(x, p) {

if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity
var i, coefficient = x.slice(0, i);

// The string returned by toExponential either has the form \d\.\d+e[-+]\d+
// (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3).
return [
  coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,
  +x.slice(i + 1)
];

});

/***/ }),

/***/ “./node_modules/d3-format/src/formatDefault.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-format/src/formatDefault.js ***!
\*****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x, p) {

x = x.toPrecision(p);

out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {
  switch (x[i]) {
    case ".": i0 = i1 = i; break;
    case "0": if (i0 === 0) i0 = i; i1 = i; break;
    case "e": break out;
    default: if (i0 > 0) i0 = 0; break;
  }
}

return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;

});

/***/ }),

/***/ “./node_modules/d3-format/src/formatGroup.js”: /*!***************************************************!*\

!*** ./node_modules/d3-format/src/formatGroup.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(grouping, thousands) {

return function(value, width) {
  var i = value.length,
      t = [],
      j = 0,
      g = grouping[0],
      length = 0;

  while (i > 0 && g > 0) {
    if (length + g + 1 > width) g = Math.max(1, width - length);
    t.push(value.substring(i -= g, i + g));
    if ((length += g + 1) > width) break;
    g = grouping[j = (j + 1) % grouping.length];
  }

  return t.reverse().join(thousands);
};

});

/***/ }),

/***/ “./node_modules/d3-format/src/formatNumerals.js”: /*!******************************************************!*\

!*** ./node_modules/d3-format/src/formatNumerals.js ***!
\******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(numerals) {

return function(value) {
  return value.replace(/[0-9]/g, function(i) {
    return numerals[+i];
  });
};

});

/***/ }),

/***/ “./node_modules/d3-format/src/formatPrefixAuto.js”: /*!********************************************************!*\

!*** ./node_modules/d3-format/src/formatPrefixAuto.js ***!
\********************************************************/

/*! exports provided: prefixExponent, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “prefixExponent”, function() { return prefixExponent; }); /* harmony import */ var formatDecimal_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./formatDecimal */ “./node_modules/d3-format/src/formatDecimal.js”);

var prefixExponent;

/* harmony default export */ webpack_exports[“default”] = (function(x, p) {

var d = Object(_formatDecimal__WEBPACK_IMPORTED_MODULE_0__["default"])(x, p);
if (!d) return x + "";
var coefficient = d[0],
    exponent = d[1],
    i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,
    n = coefficient.length;
return i === n ? coefficient
    : i > n ? coefficient + new Array(i - n + 1).join("0")
    : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i)
    : "0." + new Array(1 - i).join("0") + Object(_formatDecimal__WEBPACK_IMPORTED_MODULE_0__["default"])(x, Math.max(0, p + i - 1))[0]; // less than 1y!

});

/***/ }),

/***/ “./node_modules/d3-format/src/formatRounded.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-format/src/formatRounded.js ***!
\*****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var formatDecimal_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./formatDecimal */ “./node_modules/d3-format/src/formatDecimal.js”);

/* harmony default export */ webpack_exports[“default”] = (function(x, p) {

var d = Object(_formatDecimal__WEBPACK_IMPORTED_MODULE_0__["default"])(x, p);
if (!d) return x + "";
var coefficient = d[0],
    exponent = d[1];
return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient
    : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1)
    : coefficient + new Array(exponent - coefficient.length + 2).join("0");

});

/***/ }),

/***/ “./node_modules/d3-format/src/formatSpecifier.js”: /*!*******************************************************!*\

!*** ./node_modules/d3-format/src/formatSpecifier.js ***!
\*******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return formatSpecifier; }); /* harmony import */ var formatTypes_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./formatTypes */ “./node_modules/d3-format/src/formatTypes.js”);

// [[fill]align][symbol][width][.precision] var re = /^(?:(.)?([<>=^]))?([+-( ])?([$#])?(0)?(d+)?(,)?(.d+)?()?$/i;

function formatSpecifier(specifier) {

return new FormatSpecifier(specifier);

}

formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof

function FormatSpecifier(specifier) {

if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier);

var match,
    fill = match[1] || " ",
    align = match[2] || ">",
    sign = match[3] || "-",
    symbol = match[4] || "",
    zero = !!match[5],
    width = match[6] && +match[6],
    comma = !!match[7],
    precision = match[8] && +match[8].slice(1),
    type = match[9] || "";

// The "n" type is an alias for ",g".
if (type === "n") comma = true, type = "g";

// Map invalid types to the default format.
else if (!_formatTypes__WEBPACK_IMPORTED_MODULE_0__["default"][type]) type = "";

// If zero fill is specified, padding goes after sign and before digits.
if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "=";

this.fill = fill;
this.align = align;
this.sign = sign;
this.symbol = symbol;
this.zero = zero;
this.width = width;
this.comma = comma;
this.precision = precision;
this.type = type;

}

FormatSpecifier.prototype.toString = function() {

return this.fill
    + this.align
    + this.sign
    + this.symbol
    + (this.zero ? "0" : "")
    + (this.width == null ? "" : Math.max(1, this.width | 0))
    + (this.comma ? "," : "")
    + (this.precision == null ? "" : "." + Math.max(0, this.precision | 0))
    + this.type;

};

/***/ }),

/***/ “./node_modules/d3-format/src/formatTypes.js”: /*!***************************************************!*\

!*** ./node_modules/d3-format/src/formatTypes.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var formatDefault_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./formatDefault */ “./node_modules/d3-format/src/formatDefault.js”); /* harmony import */ var formatPrefixAuto_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./formatPrefixAuto */ “./node_modules/d3-format/src/formatPrefixAuto.js”); /* harmony import */ var formatRounded_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./formatRounded */ “./node_modules/d3-format/src/formatRounded.js”);

/* harmony default export */ webpack_exports[“default”] = ({

"": _formatDefault__WEBPACK_IMPORTED_MODULE_0__["default"],
"%": function(x, p) { return (x * 100).toFixed(p); },
"b": function(x) { return Math.round(x).toString(2); },
"c": function(x) { return x + ""; },
"d": function(x) { return Math.round(x).toString(10); },
"e": function(x, p) { return x.toExponential(p); },
"f": function(x, p) { return x.toFixed(p); },
"g": function(x, p) { return x.toPrecision(p); },
"o": function(x) { return Math.round(x).toString(8); },
"p": function(x, p) { return Object(_formatRounded__WEBPACK_IMPORTED_MODULE_2__["default"])(x * 100, p); },
"r": _formatRounded__WEBPACK_IMPORTED_MODULE_2__["default"],
"s": _formatPrefixAuto__WEBPACK_IMPORTED_MODULE_1__["default"],
"X": function(x) { return Math.round(x).toString(16).toUpperCase(); },
"x": function(x) { return Math.round(x).toString(16); }

});

/***/ }),

/***/ “./node_modules/d3-format/src/identity.js”: /*!************************************************!*\

!*** ./node_modules/d3-format/src/identity.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return x;

});

/***/ }),

/***/ “./node_modules/d3-format/src/locale.js”: /*!**********************************************!*\

!*** ./node_modules/d3-format/src/locale.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var exponent_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./exponent */ “./node_modules/d3-format/src/exponent.js”); /* harmony import */ var formatGroup_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./formatGroup */ “./node_modules/d3-format/src/formatGroup.js”); /* harmony import */ var formatNumerals_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./formatNumerals */ “./node_modules/d3-format/src/formatNumerals.js”); /* harmony import */ var formatSpecifier_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./formatSpecifier */ “./node_modules/d3-format/src/formatSpecifier.js”); /* harmony import */ var formatTypes_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./formatTypes */ “./node_modules/d3-format/src/formatTypes.js”); /* harmony import */ var formatPrefixAuto_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./formatPrefixAuto */ “./node_modules/d3-format/src/formatPrefixAuto.js”); /* harmony import */ var identity_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./identity */ “./node_modules/d3-format/src/identity.js”);

var prefixes = [“y”,“z”,“a”,“f”,“p”,“n”,“µ”,“m”,“”,“k”,“M”,“G”,“T”,“P”,“E”,“Z”,“Y”];

/* harmony default export */ webpack_exports[“default”] = (function(locale) {

var group = locale.grouping && locale.thousands ? Object(_formatGroup__WEBPACK_IMPORTED_MODULE_1__["default"])(locale.grouping, locale.thousands) : _identity__WEBPACK_IMPORTED_MODULE_6__["default"],
    currency = locale.currency,
    decimal = locale.decimal,
    numerals = locale.numerals ? Object(_formatNumerals__WEBPACK_IMPORTED_MODULE_2__["default"])(locale.numerals) : _identity__WEBPACK_IMPORTED_MODULE_6__["default"],
    percent = locale.percent || "%";

function newFormat(specifier) {
  specifier = Object(_formatSpecifier__WEBPACK_IMPORTED_MODULE_3__["default"])(specifier);

  var fill = specifier.fill,
      align = specifier.align,
      sign = specifier.sign,
      symbol = specifier.symbol,
      zero = specifier.zero,
      width = specifier.width,
      comma = specifier.comma,
      precision = specifier.precision,
      type = specifier.type;

  // Compute the prefix and suffix.
  // For SI-prefix, the suffix is lazily computed.
  var prefix = symbol === "$" ? currency[0] : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "",
      suffix = symbol === "$" ? currency[1] : /[%p]/.test(type) ? percent : "";

  // What format function should we use?
  // Is this an integer type?
  // Can this type generate exponential notation?
  var formatType = _formatTypes__WEBPACK_IMPORTED_MODULE_4__["default"][type],
      maybeSuffix = !type || /[defgprs%]/.test(type);

  // Set the default precision if not specified,
  // or clamp the specified precision to the supported range.
  // For significant precision, it must be in [1, 21].
  // For fixed precision, it must be in [0, 20].
  precision = precision == null ? (type ? 6 : 12)
      : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))
      : Math.max(0, Math.min(20, precision));

  function format(value) {
    var valuePrefix = prefix,
        valueSuffix = suffix,
        i, n, c;

    if (type === "c") {
      valueSuffix = formatType(value) + valueSuffix;
      value = "";
    } else {
      value = +value;

      // Perform the initial formatting.
      var valueNegative = value < 0;
      value = formatType(Math.abs(value), precision);

      // If a negative value rounds to zero during formatting, treat as positive.
      if (valueNegative && +value === 0) valueNegative = false;

      // Compute the prefix and suffix.
      valuePrefix = (valueNegative ? (sign === "(" ? sign : "-") : sign === "-" || sign === "(" ? "" : sign) + valuePrefix;
      valueSuffix = (type === "s" ? prefixes[8 + _formatPrefixAuto__WEBPACK_IMPORTED_MODULE_5__["prefixExponent"] / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : "");

      // Break the formatted value into the integer “value” part that can be
      // grouped, and fractional or exponential “suffix” part that is not.
      if (maybeSuffix) {
        i = -1, n = value.length;
        while (++i < n) {
          if (c = value.charCodeAt(i), 48 > c || c > 57) {
            valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;
            value = value.slice(0, i);
            break;
          }
        }
      }
    }

    // If the fill character is not "0", grouping is applied before padding.
    if (comma && !zero) value = group(value, Infinity);

    // Compute the padding.
    var length = valuePrefix.length + value.length + valueSuffix.length,
        padding = length < width ? new Array(width - length + 1).join(fill) : "";

    // If the fill character is "0", grouping is applied after padding.
    if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = "";

    // Reconstruct the final output based on the desired alignment.
    switch (align) {
      case "<": value = valuePrefix + value + valueSuffix + padding; break;
      case "=": value = valuePrefix + padding + value + valueSuffix; break;
      case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;
      default: value = padding + valuePrefix + value + valueSuffix; break;
    }

    return numerals(value);
  }

  format.toString = function() {
    return specifier + "";
  };

  return format;
}

function formatPrefix(specifier, value) {
  var f = newFormat((specifier = Object(_formatSpecifier__WEBPACK_IMPORTED_MODULE_3__["default"])(specifier), specifier.type = "f", specifier)),
      e = Math.max(-8, Math.min(8, Math.floor(Object(_exponent__WEBPACK_IMPORTED_MODULE_0__["default"])(value) / 3))) * 3,
      k = Math.pow(10, -e),
      prefix = prefixes[8 + e / 3];
  return function(value) {
    return f(k * value) + prefix;
  };
}

return {
  format: newFormat,
  formatPrefix: formatPrefix
};

});

/***/ }),

/***/ “./node_modules/d3-format/src/precisionFixed.js”: /*!******************************************************!*\

!*** ./node_modules/d3-format/src/precisionFixed.js ***!
\******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var exponent_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./exponent */ “./node_modules/d3-format/src/exponent.js”);

/* harmony default export */ webpack_exports[“default”] = (function(step) {

return Math.max(0, -Object(_exponent__WEBPACK_IMPORTED_MODULE_0__["default"])(Math.abs(step)));

});

/***/ }),

/***/ “./node_modules/d3-format/src/precisionPrefix.js”: /*!*******************************************************!*\

!*** ./node_modules/d3-format/src/precisionPrefix.js ***!
\*******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var exponent_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./exponent */ “./node_modules/d3-format/src/exponent.js”);

/* harmony default export */ webpack_exports[“default”] = (function(step, value) {

return Math.max(0, Math.max(-8, Math.min(8, Math.floor(Object(_exponent__WEBPACK_IMPORTED_MODULE_0__["default"])(value) / 3))) * 3 - Object(_exponent__WEBPACK_IMPORTED_MODULE_0__["default"])(Math.abs(step)));

});

/***/ }),

/***/ “./node_modules/d3-format/src/precisionRound.js”: /*!******************************************************!*\

!*** ./node_modules/d3-format/src/precisionRound.js ***!
\******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var exponent_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./exponent */ “./node_modules/d3-format/src/exponent.js”);

/* harmony default export */ webpack_exports[“default”] = (function(step, max) {

step = Math.abs(step), max = Math.abs(max) - step;
return Math.max(0, Object(_exponent__WEBPACK_IMPORTED_MODULE_0__["default"])(max) - Object(_exponent__WEBPACK_IMPORTED_MODULE_0__["default"])(step)) + 1;

});

/***/ }),

/***/ “./node_modules/d3-geo/index.js”: /*!**************************************!*\

!*** ./node_modules/d3-geo/index.js ***!
\**************************************/

/*! exports provided: geoArea, geoBounds, geoCentroid, geoCircle, geoClipAntimeridian, geoClipCircle, geoClipExtent, geoClipRectangle, geoContains, geoDistance, geoGraticule, geoGraticule10, geoInterpolate, geoLength, geoPath, geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEqualAreaRaw, geoAzimuthalEquidistant, geoAzimuthalEquidistantRaw, geoConicConformal, geoConicConformalRaw, geoConicEqualArea, geoConicEqualAreaRaw, geoConicEquidistant, geoConicEquidistantRaw, geoEquirectangular, geoEquirectangularRaw, geoGnomonic, geoGnomonicRaw, geoIdentity, geoProjection, geoProjectionMutator, geoMercator, geoMercatorRaw, geoNaturalEarth1, geoNaturalEarth1Raw, geoOrthographic, geoOrthographicRaw, geoStereographic, geoStereographicRaw, geoTransverseMercator, geoTransverseMercatorRaw, geoRotation, geoStream, geoTransform */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_area_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/area */ “./node_modules/d3-geo/src/area.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoArea”, function() { return src_area_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_bounds_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/bounds */ “./node_modules/d3-geo/src/bounds.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoBounds”, function() { return src_bounds_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_centroid_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/centroid */ “./node_modules/d3-geo/src/centroid.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoCentroid”, function() { return src_centroid_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_circle_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/circle */ “./node_modules/d3-geo/src/circle.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoCircle”, function() { return src_circle_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_clip_antimeridian_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/clip/antimeridian */ “./node_modules/d3-geo/src/clip/antimeridian.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoClipAntimeridian”, function() { return src_clip_antimeridian_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony import */ var src_clip_circle_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/clip/circle */ “./node_modules/d3-geo/src/clip/circle.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoClipCircle”, function() { return src_clip_circle_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/* harmony import */ var src_clip_extent_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./src/clip/extent */ “./node_modules/d3-geo/src/clip/extent.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoClipExtent”, function() { return src_clip_extent_WEBPACK_IMPORTED_MODULE_6[“default”]; });

/* harmony import */ var src_clip_rectangle_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./src/clip/rectangle */ “./node_modules/d3-geo/src/clip/rectangle.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoClipRectangle”, function() { return src_clip_rectangle_WEBPACK_IMPORTED_MODULE_7[“default”]; });

/* harmony import */ var src_contains_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./src/contains */ “./node_modules/d3-geo/src/contains.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoContains”, function() { return src_contains_WEBPACK_IMPORTED_MODULE_8[“default”]; });

/* harmony import */ var src_distance_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./src/distance */ “./node_modules/d3-geo/src/distance.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoDistance”, function() { return src_distance_WEBPACK_IMPORTED_MODULE_9[“default”]; });

/* harmony import */ var src_graticule_WEBPACK_IMPORTED_MODULE_10 = webpack_require(/*! ./src/graticule */ “./node_modules/d3-geo/src/graticule.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoGraticule”, function() { return src_graticule_WEBPACK_IMPORTED_MODULE_10[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoGraticule10”, function() { return src_graticule_WEBPACK_IMPORTED_MODULE_10[“graticule10”]; });

/* harmony import */ var src_interpolate_WEBPACK_IMPORTED_MODULE_11 = webpack_require(/*! ./src/interpolate */ “./node_modules/d3-geo/src/interpolate.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoInterpolate”, function() { return src_interpolate_WEBPACK_IMPORTED_MODULE_11[“default”]; });

/* harmony import */ var src_length_WEBPACK_IMPORTED_MODULE_12 = webpack_require(/*! ./src/length */ “./node_modules/d3-geo/src/length.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoLength”, function() { return src_length_WEBPACK_IMPORTED_MODULE_12[“default”]; });

/* harmony import */ var src_path_index_WEBPACK_IMPORTED_MODULE_13 = webpack_require(/*! ./src/path/index */ “./node_modules/d3-geo/src/path/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoPath”, function() { return src_path_index_WEBPACK_IMPORTED_MODULE_13[“default”]; });

/* harmony import */ var src_projection_albers_WEBPACK_IMPORTED_MODULE_14 = webpack_require(/*! ./src/projection/albers */ “./node_modules/d3-geo/src/projection/albers.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoAlbers”, function() { return src_projection_albers_WEBPACK_IMPORTED_MODULE_14[“default”]; });

/* harmony import */ var src_projection_albersUsa_WEBPACK_IMPORTED_MODULE_15 = webpack_require(/*! ./src/projection/albersUsa */ “./node_modules/d3-geo/src/projection/albersUsa.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoAlbersUsa”, function() { return src_projection_albersUsa_WEBPACK_IMPORTED_MODULE_15[“default”]; });

/* harmony import */ var src_projection_azimuthalEqualArea_WEBPACK_IMPORTED_MODULE_16 = webpack_require(/*! ./src/projection/azimuthalEqualArea */ “./node_modules/d3-geo/src/projection/azimuthalEqualArea.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoAzimuthalEqualArea”, function() { return src_projection_azimuthalEqualArea_WEBPACK_IMPORTED_MODULE_16[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoAzimuthalEqualAreaRaw”, function() { return src_projection_azimuthalEqualArea_WEBPACK_IMPORTED_MODULE_16[“azimuthalEqualAreaRaw”]; });

/* harmony import */ var src_projection_azimuthalEquidistant_WEBPACK_IMPORTED_MODULE_17 = webpack_require(/*! ./src/projection/azimuthalEquidistant */ “./node_modules/d3-geo/src/projection/azimuthalEquidistant.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoAzimuthalEquidistant”, function() { return src_projection_azimuthalEquidistant_WEBPACK_IMPORTED_MODULE_17[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoAzimuthalEquidistantRaw”, function() { return src_projection_azimuthalEquidistant_WEBPACK_IMPORTED_MODULE_17[“azimuthalEquidistantRaw”]; });

/* harmony import */ var src_projection_conicConformal_WEBPACK_IMPORTED_MODULE_18 = webpack_require(/*! ./src/projection/conicConformal */ “./node_modules/d3-geo/src/projection/conicConformal.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoConicConformal”, function() { return src_projection_conicConformal_WEBPACK_IMPORTED_MODULE_18[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoConicConformalRaw”, function() { return src_projection_conicConformal_WEBPACK_IMPORTED_MODULE_18[“conicConformalRaw”]; });

/* harmony import */ var src_projection_conicEqualArea_WEBPACK_IMPORTED_MODULE_19 = webpack_require(/*! ./src/projection/conicEqualArea */ “./node_modules/d3-geo/src/projection/conicEqualArea.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoConicEqualArea”, function() { return src_projection_conicEqualArea_WEBPACK_IMPORTED_MODULE_19[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoConicEqualAreaRaw”, function() { return src_projection_conicEqualArea_WEBPACK_IMPORTED_MODULE_19[“conicEqualAreaRaw”]; });

/* harmony import */ var src_projection_conicEquidistant_WEBPACK_IMPORTED_MODULE_20 = webpack_require(/*! ./src/projection/conicEquidistant */ “./node_modules/d3-geo/src/projection/conicEquidistant.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoConicEquidistant”, function() { return src_projection_conicEquidistant_WEBPACK_IMPORTED_MODULE_20[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoConicEquidistantRaw”, function() { return src_projection_conicEquidistant_WEBPACK_IMPORTED_MODULE_20[“conicEquidistantRaw”]; });

/* harmony import */ var src_projection_equirectangular_WEBPACK_IMPORTED_MODULE_21 = webpack_require(/*! ./src/projection/equirectangular */ “./node_modules/d3-geo/src/projection/equirectangular.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoEquirectangular”, function() { return src_projection_equirectangular_WEBPACK_IMPORTED_MODULE_21[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoEquirectangularRaw”, function() { return src_projection_equirectangular_WEBPACK_IMPORTED_MODULE_21[“equirectangularRaw”]; });

/* harmony import */ var src_projection_gnomonic_WEBPACK_IMPORTED_MODULE_22 = webpack_require(/*! ./src/projection/gnomonic */ “./node_modules/d3-geo/src/projection/gnomonic.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoGnomonic”, function() { return src_projection_gnomonic_WEBPACK_IMPORTED_MODULE_22[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoGnomonicRaw”, function() { return src_projection_gnomonic_WEBPACK_IMPORTED_MODULE_22[“gnomonicRaw”]; });

/* harmony import */ var src_projection_identity_WEBPACK_IMPORTED_MODULE_23 = webpack_require(/*! ./src/projection/identity */ “./node_modules/d3-geo/src/projection/identity.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoIdentity”, function() { return src_projection_identity_WEBPACK_IMPORTED_MODULE_23[“default”]; });

/* harmony import */ var src_projection_index_WEBPACK_IMPORTED_MODULE_24 = webpack_require(/*! ./src/projection/index */ “./node_modules/d3-geo/src/projection/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoProjection”, function() { return src_projection_index_WEBPACK_IMPORTED_MODULE_24[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoProjectionMutator”, function() { return src_projection_index_WEBPACK_IMPORTED_MODULE_24[“projectionMutator”]; });

/* harmony import */ var src_projection_mercator_WEBPACK_IMPORTED_MODULE_25 = webpack_require(/*! ./src/projection/mercator */ “./node_modules/d3-geo/src/projection/mercator.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoMercator”, function() { return src_projection_mercator_WEBPACK_IMPORTED_MODULE_25[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoMercatorRaw”, function() { return src_projection_mercator_WEBPACK_IMPORTED_MODULE_25[“mercatorRaw”]; });

/* harmony import */ var src_projection_naturalEarth1_WEBPACK_IMPORTED_MODULE_26 = webpack_require(/*! ./src/projection/naturalEarth1 */ “./node_modules/d3-geo/src/projection/naturalEarth1.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoNaturalEarth1”, function() { return src_projection_naturalEarth1_WEBPACK_IMPORTED_MODULE_26[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoNaturalEarth1Raw”, function() { return src_projection_naturalEarth1_WEBPACK_IMPORTED_MODULE_26[“naturalEarth1Raw”]; });

/* harmony import */ var src_projection_orthographic_WEBPACK_IMPORTED_MODULE_27 = webpack_require(/*! ./src/projection/orthographic */ “./node_modules/d3-geo/src/projection/orthographic.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoOrthographic”, function() { return src_projection_orthographic_WEBPACK_IMPORTED_MODULE_27[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoOrthographicRaw”, function() { return src_projection_orthographic_WEBPACK_IMPORTED_MODULE_27[“orthographicRaw”]; });

/* harmony import */ var src_projection_stereographic_WEBPACK_IMPORTED_MODULE_28 = webpack_require(/*! ./src/projection/stereographic */ “./node_modules/d3-geo/src/projection/stereographic.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoStereographic”, function() { return src_projection_stereographic_WEBPACK_IMPORTED_MODULE_28[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoStereographicRaw”, function() { return src_projection_stereographic_WEBPACK_IMPORTED_MODULE_28[“stereographicRaw”]; });

/* harmony import */ var src_projection_transverseMercator_WEBPACK_IMPORTED_MODULE_29 = webpack_require(/*! ./src/projection/transverseMercator */ “./node_modules/d3-geo/src/projection/transverseMercator.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoTransverseMercator”, function() { return src_projection_transverseMercator_WEBPACK_IMPORTED_MODULE_29[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoTransverseMercatorRaw”, function() { return src_projection_transverseMercator_WEBPACK_IMPORTED_MODULE_29[“transverseMercatorRaw”]; });

/* harmony import */ var src_rotation_WEBPACK_IMPORTED_MODULE_30 = webpack_require(/*! ./src/rotation */ “./node_modules/d3-geo/src/rotation.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoRotation”, function() { return src_rotation_WEBPACK_IMPORTED_MODULE_30[“default”]; });

/* harmony import */ var src_stream_WEBPACK_IMPORTED_MODULE_31 = webpack_require(/*! ./src/stream */ “./node_modules/d3-geo/src/stream.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoStream”, function() { return src_stream_WEBPACK_IMPORTED_MODULE_31[“default”]; });

/* harmony import */ var src_transform_WEBPACK_IMPORTED_MODULE_32 = webpack_require(/*! ./src/transform */ “./node_modules/d3-geo/src/transform.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoTransform”, function() { return src_transform_WEBPACK_IMPORTED_MODULE_32[“default”]; });

// DEPRECATED! Use d3.geoIdentity().clipExtent(…).

/***/ }),

/***/ “./node_modules/d3-geo/src/adder.js”: /*!******************************************!*\

!*** ./node_modules/d3-geo/src/adder.js ***!
\******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); // Adds floating point numbers with twice the normal precision. // Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and // Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3) // 305–363 (1997). // Code adapted from GeographicLib by Charles F. F. Karney, // geographiclib.sourceforge.net/

/* harmony default export */ webpack_exports[“default”] = (function() {

return new Adder;

});

function Adder() {

this.reset();

}

Adder.prototype = {

constructor: Adder,
reset: function() {
  this.s = // rounded value
  this.t = 0; // exact error
},
add: function(y) {
  add(temp, y, this.t);
  add(this, temp.s, this.s);
  if (this.s) this.t += temp.t;
  else this.s = temp.t;
},
valueOf: function() {
  return this.s;
}

};

var temp = new Adder;

function add(adder, a, b) {

var x = adder.s = a + b,
    bv = x - a,
    av = x - bv;
adder.t = (a - av) + (b - bv);

}

/***/ }),

/***/ “./node_modules/d3-geo/src/area.js”: /*!*****************************************!*\

!*** ./node_modules/d3-geo/src/area.js ***!
\*****************************************/

/*! exports provided: areaRingSum, areaStream, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “areaRingSum”, function() { return areaRingSum; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “areaStream”, function() { return areaStream; }); /* harmony import */ var adder_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./adder */ “./node_modules/d3-geo/src/adder.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var noop_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./noop */ “./node_modules/d3-geo/src/noop.js”); /* harmony import */ var stream_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./stream */ “./node_modules/d3-geo/src/stream.js”);

var areaRingSum = Object(adder_WEBPACK_IMPORTED_MODULE_0[“default”])();

var areaSum = Object(adder_WEBPACK_IMPORTED_MODULE_0[“default”])(),

lambda00,
phi00,
lambda0,
cosPhi0,
sinPhi0;

var areaStream = {

point: _noop__WEBPACK_IMPORTED_MODULE_2__["default"],
lineStart: _noop__WEBPACK_IMPORTED_MODULE_2__["default"],
lineEnd: _noop__WEBPACK_IMPORTED_MODULE_2__["default"],
polygonStart: function() {
  areaRingSum.reset();
  areaStream.lineStart = areaRingStart;
  areaStream.lineEnd = areaRingEnd;
},
polygonEnd: function() {
  var areaRing = +areaRingSum;
  areaSum.add(areaRing < 0 ? _math__WEBPACK_IMPORTED_MODULE_1__["tau"] + areaRing : areaRing);
  this.lineStart = this.lineEnd = this.point = _noop__WEBPACK_IMPORTED_MODULE_2__["default"];
},
sphere: function() {
  areaSum.add(_math__WEBPACK_IMPORTED_MODULE_1__["tau"]);
}

};

function areaRingStart() {

areaStream.point = areaPointFirst;

}

function areaRingEnd() {

areaPoint(lambda00, phi00);

}

function areaPointFirst(lambda, phi) {

areaStream.point = areaPoint;
lambda00 = lambda, phi00 = phi;
lambda *= _math__WEBPACK_IMPORTED_MODULE_1__["radians"], phi *= _math__WEBPACK_IMPORTED_MODULE_1__["radians"];
lambda0 = lambda, cosPhi0 = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi = phi / 2 + _math__WEBPACK_IMPORTED_MODULE_1__["quarterPi"]), sinPhi0 = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi);

}

function areaPoint(lambda, phi) {

lambda *= _math__WEBPACK_IMPORTED_MODULE_1__["radians"], phi *= _math__WEBPACK_IMPORTED_MODULE_1__["radians"];
phi = phi / 2 + _math__WEBPACK_IMPORTED_MODULE_1__["quarterPi"]; // half the angular distance from south pole

// Spherical excess E for a spherical triangle with vertices: south pole,
// previous point, current point.  Uses a formula derived from Cagnoli’s
// theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).
var dLambda = lambda - lambda0,
    sdLambda = dLambda >= 0 ? 1 : -1,
    adLambda = sdLambda * dLambda,
    cosPhi = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi),
    sinPhi = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi),
    k = sinPhi0 * sinPhi,
    u = cosPhi0 * cosPhi + k * Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(adLambda),
    v = k * sdLambda * Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(adLambda);
areaRingSum.add(Object(_math__WEBPACK_IMPORTED_MODULE_1__["atan2"])(v, u));

// Advance the previous points.
lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;

}

/* harmony default export */ webpack_exports[“default”] = (function(object) {

areaSum.reset();
Object(_stream__WEBPACK_IMPORTED_MODULE_3__["default"])(object, areaStream);
return areaSum * 2;

});

/***/ }),

/***/ “./node_modules/d3-geo/src/bounds.js”: /*!*******************************************!*\

!*** ./node_modules/d3-geo/src/bounds.js ***!
\*******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var adder_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./adder */ “./node_modules/d3-geo/src/adder.js”); /* harmony import */ var area_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./area */ “./node_modules/d3-geo/src/area.js”); /* harmony import */ var cartesian_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./cartesian */ “./node_modules/d3-geo/src/cartesian.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var stream_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./stream */ “./node_modules/d3-geo/src/stream.js”);

var lambda0, phi0, lambda1, phi1, // bounds

lambda2, // previous lambda-coordinate
lambda00, phi00, // first point
p0, // previous 3D point
deltaSum = Object(_adder__WEBPACK_IMPORTED_MODULE_0__["default"])(),
ranges,
range;

var boundsStream = {

point: boundsPoint,
lineStart: boundsLineStart,
lineEnd: boundsLineEnd,
polygonStart: function() {
  boundsStream.point = boundsRingPoint;
  boundsStream.lineStart = boundsRingStart;
  boundsStream.lineEnd = boundsRingEnd;
  deltaSum.reset();
  _area__WEBPACK_IMPORTED_MODULE_1__["areaStream"].polygonStart();
},
polygonEnd: function() {
  _area__WEBPACK_IMPORTED_MODULE_1__["areaStream"].polygonEnd();
  boundsStream.point = boundsPoint;
  boundsStream.lineStart = boundsLineStart;
  boundsStream.lineEnd = boundsLineEnd;
  if (_area__WEBPACK_IMPORTED_MODULE_1__["areaRingSum"] < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);
  else if (deltaSum > _math__WEBPACK_IMPORTED_MODULE_3__["epsilon"]) phi1 = 90;
  else if (deltaSum < -_math__WEBPACK_IMPORTED_MODULE_3__["epsilon"]) phi0 = -90;
  range[0] = lambda0, range[1] = lambda1;
}

};

function boundsPoint(lambda, phi) {

ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);
if (phi < phi0) phi0 = phi;
if (phi > phi1) phi1 = phi;

}

function linePoint(lambda, phi) {

var p = Object(_cartesian__WEBPACK_IMPORTED_MODULE_2__["cartesian"])([lambda * _math__WEBPACK_IMPORTED_MODULE_3__["radians"], phi * _math__WEBPACK_IMPORTED_MODULE_3__["radians"]]);
if (p0) {
  var normal = Object(_cartesian__WEBPACK_IMPORTED_MODULE_2__["cartesianCross"])(p0, p),
      equatorial = [normal[1], -normal[0], 0],
      inflection = Object(_cartesian__WEBPACK_IMPORTED_MODULE_2__["cartesianCross"])(equatorial, normal);
  Object(_cartesian__WEBPACK_IMPORTED_MODULE_2__["cartesianNormalizeInPlace"])(inflection);
  inflection = Object(_cartesian__WEBPACK_IMPORTED_MODULE_2__["spherical"])(inflection);
  var delta = lambda - lambda2,
      sign = delta > 0 ? 1 : -1,
      lambdai = inflection[0] * _math__WEBPACK_IMPORTED_MODULE_3__["degrees"] * sign,
      phii,
      antimeridian = Object(_math__WEBPACK_IMPORTED_MODULE_3__["abs"])(delta) > 180;
  if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {
    phii = inflection[1] * _math__WEBPACK_IMPORTED_MODULE_3__["degrees"];
    if (phii > phi1) phi1 = phii;
  } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {
    phii = -inflection[1] * _math__WEBPACK_IMPORTED_MODULE_3__["degrees"];
    if (phii < phi0) phi0 = phii;
  } else {
    if (phi < phi0) phi0 = phi;
    if (phi > phi1) phi1 = phi;
  }
  if (antimeridian) {
    if (lambda < lambda2) {
      if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;
    } else {
      if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;
    }
  } else {
    if (lambda1 >= lambda0) {
      if (lambda < lambda0) lambda0 = lambda;
      if (lambda > lambda1) lambda1 = lambda;
    } else {
      if (lambda > lambda2) {
        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;
      } else {
        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;
      }
    }
  }
} else {
  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);
}
if (phi < phi0) phi0 = phi;
if (phi > phi1) phi1 = phi;
p0 = p, lambda2 = lambda;

}

function boundsLineStart() {

boundsStream.point = linePoint;

}

function boundsLineEnd() {

range[0] = lambda0, range[1] = lambda1;
boundsStream.point = boundsPoint;
p0 = null;

}

function boundsRingPoint(lambda, phi) {

if (p0) {
  var delta = lambda - lambda2;
  deltaSum.add(Object(_math__WEBPACK_IMPORTED_MODULE_3__["abs"])(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);
} else {
  lambda00 = lambda, phi00 = phi;
}
_area__WEBPACK_IMPORTED_MODULE_1__["areaStream"].point(lambda, phi);
linePoint(lambda, phi);

}

function boundsRingStart() {

_area__WEBPACK_IMPORTED_MODULE_1__["areaStream"].lineStart();

}

function boundsRingEnd() {

boundsRingPoint(lambda00, phi00);
_area__WEBPACK_IMPORTED_MODULE_1__["areaStream"].lineEnd();
if (Object(_math__WEBPACK_IMPORTED_MODULE_3__["abs"])(deltaSum) > _math__WEBPACK_IMPORTED_MODULE_3__["epsilon"]) lambda0 = -(lambda1 = 180);
range[0] = lambda0, range[1] = lambda1;
p0 = null;

}

// Finds the left-right distance between two longitudes. // This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want // the distance between ±180° to be 360°. function angle(lambda0, lambda1) {

return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;

}

function rangeCompare(a, b) {

return a[0] - b[0];

}

function rangeContains(range, x) {

return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;

}

/* harmony default export */ webpack_exports[“default”] = (function(feature) {

var i, n, a, b, merged, deltaMax, delta;

phi1 = lambda1 = -(lambda0 = phi0 = Infinity);
ranges = [];
Object(_stream__WEBPACK_IMPORTED_MODULE_4__["default"])(feature, boundsStream);

// First, sort ranges by their minimum longitudes.
if (n = ranges.length) {
  ranges.sort(rangeCompare);

  // Then, merge any ranges that overlap.
  for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {
    b = ranges[i];
    if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {
      if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];
      if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];
    } else {
      merged.push(a = b);
    }
  }

  // Finally, find the largest gap between the merged ranges.
  // The final bounding box will be the inverse of this gap.
  for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {
    b = merged[i];
    if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];
  }
}

ranges = range = null;

return lambda0 === Infinity || phi0 === Infinity
    ? [[NaN, NaN], [NaN, NaN]]
    : [[lambda0, phi0], [lambda1, phi1]];

});

/***/ }),

/***/ “./node_modules/d3-geo/src/cartesian.js”: /*!**********************************************!*\

!*** ./node_modules/d3-geo/src/cartesian.js ***!
\**********************************************/

/*! exports provided: spherical, cartesian, cartesianDot, cartesianCross, cartesianAddInPlace, cartesianScale, cartesianNormalizeInPlace */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “spherical”, function() { return spherical; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cartesian”, function() { return cartesian; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cartesianDot”, function() { return cartesianDot; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cartesianCross”, function() { return cartesianCross; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cartesianAddInPlace”, function() { return cartesianAddInPlace; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cartesianScale”, function() { return cartesianScale; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cartesianNormalizeInPlace”, function() { return cartesianNormalizeInPlace; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./math */ “./node_modules/d3-geo/src/math.js”);

function spherical(cartesian) {

return [Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan2"])(cartesian[1], cartesian[0]), Object(_math__WEBPACK_IMPORTED_MODULE_0__["asin"])(cartesian[2])];

}

function cartesian(spherical) {

var lambda = spherical[0], phi = spherical[1], cosPhi = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi);
return [cosPhi * Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(lambda), cosPhi * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(lambda), Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi)];

}

function cartesianDot(a, b) {

return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];

}

function cartesianCross(a, b) {

return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];

}

// TODO return a function cartesianAddInPlace(a, b) {

a[0] += b[0], a[1] += b[1], a[2] += b[2];

}

function cartesianScale(vector, k) {

return [vector[0] * k, vector[1] * k, vector[2] * k];

}

// TODO return d function cartesianNormalizeInPlace(d) {

var l = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
d[0] /= l, d[1] /= l, d[2] /= l;

}

/***/ }),

/***/ “./node_modules/d3-geo/src/centroid.js”: /*!*********************************************!*\

!*** ./node_modules/d3-geo/src/centroid.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var noop_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./noop */ “./node_modules/d3-geo/src/noop.js”); /* harmony import */ var stream_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./stream */ “./node_modules/d3-geo/src/stream.js”);

var W0, W1,

X0, Y0, Z0,
X1, Y1, Z1,
X2, Y2, Z2,
lambda00, phi00, // first point
x0, y0, z0; // previous point

var centroidStream = {

sphere: _noop__WEBPACK_IMPORTED_MODULE_1__["default"],
point: centroidPoint,
lineStart: centroidLineStart,
lineEnd: centroidLineEnd,
polygonStart: function() {
  centroidStream.lineStart = centroidRingStart;
  centroidStream.lineEnd = centroidRingEnd;
},
polygonEnd: function() {
  centroidStream.lineStart = centroidLineStart;
  centroidStream.lineEnd = centroidLineEnd;
}

};

// Arithmetic mean of Cartesian vectors. function centroidPoint(lambda, phi) {

lambda *= _math__WEBPACK_IMPORTED_MODULE_0__["radians"], phi *= _math__WEBPACK_IMPORTED_MODULE_0__["radians"];
var cosPhi = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi);
centroidPointCartesian(cosPhi * Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(lambda), cosPhi * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(lambda), Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi));

}

function centroidPointCartesian(x, y, z) {

++W0;
X0 += (x - X0) / W0;
Y0 += (y - Y0) / W0;
Z0 += (z - Z0) / W0;

}

function centroidLineStart() {

centroidStream.point = centroidLinePointFirst;

}

function centroidLinePointFirst(lambda, phi) {

lambda *= _math__WEBPACK_IMPORTED_MODULE_0__["radians"], phi *= _math__WEBPACK_IMPORTED_MODULE_0__["radians"];
var cosPhi = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi);
x0 = cosPhi * Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(lambda);
y0 = cosPhi * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(lambda);
z0 = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi);
centroidStream.point = centroidLinePoint;
centroidPointCartesian(x0, y0, z0);

}

function centroidLinePoint(lambda, phi) {

lambda *= _math__WEBPACK_IMPORTED_MODULE_0__["radians"], phi *= _math__WEBPACK_IMPORTED_MODULE_0__["radians"];
var cosPhi = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi),
    x = cosPhi * Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(lambda),
    y = cosPhi * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(lambda),
    z = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi),
    w = Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan2"])(Object(_math__WEBPACK_IMPORTED_MODULE_0__["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);
W1 += w;
X1 += w * (x0 + (x0 = x));
Y1 += w * (y0 + (y0 = y));
Z1 += w * (z0 + (z0 = z));
centroidPointCartesian(x0, y0, z0);

}

function centroidLineEnd() {

centroidStream.point = centroidPoint;

}

// See J. E. Brock, The Inertia Tensor for a Spherical Triangle, // J. Applied Mechanics 42, 239 (1975). function centroidRingStart() {

centroidStream.point = centroidRingPointFirst;

}

function centroidRingEnd() {

centroidRingPoint(lambda00, phi00);
centroidStream.point = centroidPoint;

}

function centroidRingPointFirst(lambda, phi) {

lambda00 = lambda, phi00 = phi;
lambda *= _math__WEBPACK_IMPORTED_MODULE_0__["radians"], phi *= _math__WEBPACK_IMPORTED_MODULE_0__["radians"];
centroidStream.point = centroidRingPoint;
var cosPhi = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi);
x0 = cosPhi * Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(lambda);
y0 = cosPhi * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(lambda);
z0 = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi);
centroidPointCartesian(x0, y0, z0);

}

function centroidRingPoint(lambda, phi) {

lambda *= _math__WEBPACK_IMPORTED_MODULE_0__["radians"], phi *= _math__WEBPACK_IMPORTED_MODULE_0__["radians"];
var cosPhi = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi),
    x = cosPhi * Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(lambda),
    y = cosPhi * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(lambda),
    z = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi),
    cx = y0 * z - z0 * y,
    cy = z0 * x - x0 * z,
    cz = x0 * y - y0 * x,
    m = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(cx * cx + cy * cy + cz * cz),
    w = Object(_math__WEBPACK_IMPORTED_MODULE_0__["asin"])(m), // line weight = angle
    v = m && -w / m; // area weight multiplier
X2 += v * cx;
Y2 += v * cy;
Z2 += v * cz;
W1 += w;
X1 += w * (x0 + (x0 = x));
Y1 += w * (y0 + (y0 = y));
Z1 += w * (z0 + (z0 = z));
centroidPointCartesian(x0, y0, z0);

}

/* harmony default export */ webpack_exports[“default”] = (function(object) {

W0 = W1 =
X0 = Y0 = Z0 =
X1 = Y1 = Z1 =
X2 = Y2 = Z2 = 0;
Object(_stream__WEBPACK_IMPORTED_MODULE_2__["default"])(object, centroidStream);

var x = X2,
    y = Y2,
    z = Z2,
    m = x * x + y * y + z * z;

// If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.
if (m < _math__WEBPACK_IMPORTED_MODULE_0__["epsilon2"]) {
  x = X1, y = Y1, z = Z1;
  // If the feature has zero length, fall back to arithmetic mean of point vectors.
  if (W1 < _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) x = X0, y = Y0, z = Z0;
  m = x * x + y * y + z * z;
  // If the feature still has an undefined ccentroid, then return.
  if (m < _math__WEBPACK_IMPORTED_MODULE_0__["epsilon2"]) return [NaN, NaN];
}

return [Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan2"])(y, x) * _math__WEBPACK_IMPORTED_MODULE_0__["degrees"], Object(_math__WEBPACK_IMPORTED_MODULE_0__["asin"])(z / Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(m)) * _math__WEBPACK_IMPORTED_MODULE_0__["degrees"]];

});

/***/ }),

/***/ “./node_modules/d3-geo/src/circle.js”: /*!*******************************************!*\

!*** ./node_modules/d3-geo/src/circle.js ***!
\*******************************************/

/*! exports provided: circleStream, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “circleStream”, function() { return circleStream; }); /* harmony import */ var cartesian_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./cartesian */ “./node_modules/d3-geo/src/cartesian.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./constant */ “./node_modules/d3-geo/src/constant.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var rotation_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./rotation */ “./node_modules/d3-geo/src/rotation.js”);

// Generates a circle centered at [0°, 0°], with a given radius and precision. function circleStream(stream, radius, delta, direction, t0, t1) {

if (!delta) return;
var cosRadius = Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(radius),
    sinRadius = Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(radius),
    step = direction * delta;
if (t0 == null) {
  t0 = radius + direction * _math__WEBPACK_IMPORTED_MODULE_2__["tau"];
  t1 = radius - step / 2;
} else {
  t0 = circleRadius(cosRadius, t0);
  t1 = circleRadius(cosRadius, t1);
  if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * _math__WEBPACK_IMPORTED_MODULE_2__["tau"];
}
for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {
  point = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["spherical"])([cosRadius, -sinRadius * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(t), -sinRadius * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(t)]);
  stream.point(point[0], point[1]);
}

}

// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0]. function circleRadius(cosRadius, point) {

point = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesian"])(point), point[0] -= cosRadius;
Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianNormalizeInPlace"])(point);
var radius = Object(_math__WEBPACK_IMPORTED_MODULE_2__["acos"])(-point[1]);
return ((-point[2] < 0 ? -radius : radius) + _math__WEBPACK_IMPORTED_MODULE_2__["tau"] - _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) % _math__WEBPACK_IMPORTED_MODULE_2__["tau"];

}

/* harmony default export */ webpack_exports[“default”] = (function() {

var center = Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])([0, 0]),
    radius = Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(90),
    precision = Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(6),
    ring,
    rotate,
    stream = {point: point};

function point(x, y) {
  ring.push(x = rotate(x, y));
  x[0] *= _math__WEBPACK_IMPORTED_MODULE_2__["degrees"], x[1] *= _math__WEBPACK_IMPORTED_MODULE_2__["degrees"];
}

function circle() {
  var c = center.apply(this, arguments),
      r = radius.apply(this, arguments) * _math__WEBPACK_IMPORTED_MODULE_2__["radians"],
      p = precision.apply(this, arguments) * _math__WEBPACK_IMPORTED_MODULE_2__["radians"];
  ring = [];
  rotate = Object(_rotation__WEBPACK_IMPORTED_MODULE_3__["rotateRadians"])(-c[0] * _math__WEBPACK_IMPORTED_MODULE_2__["radians"], -c[1] * _math__WEBPACK_IMPORTED_MODULE_2__["radians"], 0).invert;
  circleStream(stream, r, p, 1);
  c = {type: "Polygon", coordinates: [ring]};
  ring = rotate = null;
  return c;
}

circle.center = function(_) {
  return arguments.length ? (center = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])([+_[0], +_[1]]), circle) : center;
};

circle.radius = function(_) {
  return arguments.length ? (radius = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), circle) : radius;
};

circle.precision = function(_) {
  return arguments.length ? (precision = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), circle) : precision;
};

return circle;

});

/***/ }),

/***/ “./node_modules/d3-geo/src/clip/antimeridian.js”: /*!******************************************************!*\

!*** ./node_modules/d3-geo/src/clip/antimeridian.js ***!
\******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./index */ “./node_modules/d3-geo/src/clip/index.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”);

/* harmony default export */ webpack_exports[“default”] = (Object(index_WEBPACK_IMPORTED_MODULE_0[“default”])(

function() { return true; },
clipAntimeridianLine,
clipAntimeridianInterpolate,
[-_math__WEBPACK_IMPORTED_MODULE_1__["pi"], -_math__WEBPACK_IMPORTED_MODULE_1__["halfPi"]]

));

// Takes a line and cuts into visible segments. Return values: 0 - there were // intersections or the line was empty; 1 - no intersections; 2 - there were // intersections, and the first and last segments should be rejoined. function clipAntimeridianLine(stream) {

var lambda0 = NaN,
    phi0 = NaN,
    sign0 = NaN,
    clean; // no intersections

return {
  lineStart: function() {
    stream.lineStart();
    clean = 1;
  },
  point: function(lambda1, phi1) {
    var sign1 = lambda1 > 0 ? _math__WEBPACK_IMPORTED_MODULE_1__["pi"] : -_math__WEBPACK_IMPORTED_MODULE_1__["pi"],
        delta = Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(lambda1 - lambda0);
    if (Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(delta - _math__WEBPACK_IMPORTED_MODULE_1__["pi"]) < _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"]) { // line crosses a pole
      stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? _math__WEBPACK_IMPORTED_MODULE_1__["halfPi"] : -_math__WEBPACK_IMPORTED_MODULE_1__["halfPi"]);
      stream.point(sign0, phi0);
      stream.lineEnd();
      stream.lineStart();
      stream.point(sign1, phi0);
      stream.point(lambda1, phi0);
      clean = 0;
    } else if (sign0 !== sign1 && delta >= _math__WEBPACK_IMPORTED_MODULE_1__["pi"]) { // line crosses antimeridian
      if (Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(lambda0 - sign0) < _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"]) lambda0 -= sign0 * _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"]; // handle degeneracies
      if (Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(lambda1 - sign1) < _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"]) lambda1 -= sign1 * _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"];
      phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);
      stream.point(sign0, phi0);
      stream.lineEnd();
      stream.lineStart();
      stream.point(sign1, phi0);
      clean = 0;
    }
    stream.point(lambda0 = lambda1, phi0 = phi1);
    sign0 = sign1;
  },
  lineEnd: function() {
    stream.lineEnd();
    lambda0 = phi0 = NaN;
  },
  clean: function() {
    return 2 - clean; // if intersections, rejoin first and last segments
  }
};

}

function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {

var cosPhi0,
    cosPhi1,
    sinLambda0Lambda1 = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(lambda0 - lambda1);
return Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(sinLambda0Lambda1) > _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"]
    ? Object(_math__WEBPACK_IMPORTED_MODULE_1__["atan"])((Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi0) * (cosPhi1 = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi1)) * Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(lambda1)
        - Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi1) * (cosPhi0 = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi0)) * Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(lambda0))
        / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))
    : (phi0 + phi1) / 2;

}

function clipAntimeridianInterpolate(from, to, direction, stream) {

var phi;
if (from == null) {
  phi = direction * _math__WEBPACK_IMPORTED_MODULE_1__["halfPi"];
  stream.point(-_math__WEBPACK_IMPORTED_MODULE_1__["pi"], phi);
  stream.point(0, phi);
  stream.point(_math__WEBPACK_IMPORTED_MODULE_1__["pi"], phi);
  stream.point(_math__WEBPACK_IMPORTED_MODULE_1__["pi"], 0);
  stream.point(_math__WEBPACK_IMPORTED_MODULE_1__["pi"], -phi);
  stream.point(0, -phi);
  stream.point(-_math__WEBPACK_IMPORTED_MODULE_1__["pi"], -phi);
  stream.point(-_math__WEBPACK_IMPORTED_MODULE_1__["pi"], 0);
  stream.point(-_math__WEBPACK_IMPORTED_MODULE_1__["pi"], phi);
} else if (Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(from[0] - to[0]) > _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"]) {
  var lambda = from[0] < to[0] ? _math__WEBPACK_IMPORTED_MODULE_1__["pi"] : -_math__WEBPACK_IMPORTED_MODULE_1__["pi"];
  phi = direction * lambda / 2;
  stream.point(-lambda, phi);
  stream.point(0, phi);
  stream.point(lambda, phi);
} else {
  stream.point(to[0], to[1]);
}

}

/***/ }),

/***/ “./node_modules/d3-geo/src/clip/buffer.js”: /*!************************************************!*\

!*** ./node_modules/d3-geo/src/clip/buffer.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var noop_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../noop */ “./node_modules/d3-geo/src/noop.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var lines = [],
    line;
return {
  point: function(x, y) {
    line.push([x, y]);
  },
  lineStart: function() {
    lines.push(line = []);
  },
  lineEnd: _noop__WEBPACK_IMPORTED_MODULE_0__["default"],
  rejoin: function() {
    if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
  },
  result: function() {
    var result = lines;
    lines = [];
    line = null;
    return result;
  }
};

});

/***/ }),

/***/ “./node_modules/d3-geo/src/clip/circle.js”: /*!************************************************!*\

!*** ./node_modules/d3-geo/src/clip/circle.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var cartesian_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../cartesian */ “./node_modules/d3-geo/src/cartesian.js”); /* harmony import */ var circle_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../circle */ “./node_modules/d3-geo/src/circle.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var pointEqual_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ../pointEqual */ “./node_modules/d3-geo/src/pointEqual.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./index */ “./node_modules/d3-geo/src/clip/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function(radius) {

var cr = Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(radius),
    delta = 6 * _math__WEBPACK_IMPORTED_MODULE_2__["radians"],
    smallRadius = cr > 0,
    notHemisphere = Object(_math__WEBPACK_IMPORTED_MODULE_2__["abs"])(cr) > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]; // TODO optimise for this common case

function interpolate(from, to, direction, stream) {
  Object(_circle__WEBPACK_IMPORTED_MODULE_1__["circleStream"])(stream, radius, delta, direction, from, to);
}

function visible(lambda, phi) {
  return Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(lambda) * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(phi) > cr;
}

// Takes a line and cuts into visible segments. Return values used for polygon
// clipping: 0 - there were intersections or the line was empty; 1 - no
// intersections 2 - there were intersections, and the first and last segments
// should be rejoined.
function clipLine(stream) {
  var point0, // previous point
      c0, // code for previous point
      v0, // visibility of previous point
      v00, // visibility of first point
      clean; // no intersections
  return {
    lineStart: function() {
      v00 = v0 = false;
      clean = 1;
    },
    point: function(lambda, phi) {
      var point1 = [lambda, phi],
          point2,
          v = visible(lambda, phi),
          c = smallRadius
            ? v ? 0 : code(lambda, phi)
            : v ? code(lambda + (lambda < 0 ? _math__WEBPACK_IMPORTED_MODULE_2__["pi"] : -_math__WEBPACK_IMPORTED_MODULE_2__["pi"]), phi) : 0;
      if (!point0 && (v00 = v0 = v)) stream.lineStart();
      // Handle degeneracies.
      // TODO ignore if not clipping polygons.
      if (v !== v0) {
        point2 = intersect(point0, point1);
        if (!point2 || Object(_pointEqual__WEBPACK_IMPORTED_MODULE_3__["default"])(point0, point2) || Object(_pointEqual__WEBPACK_IMPORTED_MODULE_3__["default"])(point1, point2)) {
          point1[0] += _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"];
          point1[1] += _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"];
          v = visible(point1[0], point1[1]);
        }
      }
      if (v !== v0) {
        clean = 0;
        if (v) {
          // outside going in
          stream.lineStart();
          point2 = intersect(point1, point0);
          stream.point(point2[0], point2[1]);
        } else {
          // inside going out
          point2 = intersect(point0, point1);
          stream.point(point2[0], point2[1]);
          stream.lineEnd();
        }
        point0 = point2;
      } else if (notHemisphere && point0 && smallRadius ^ v) {
        var t;
        // If the codes for two points are different, or are both zero,
        // and there this segment intersects with the small circle.
        if (!(c & c0) && (t = intersect(point1, point0, true))) {
          clean = 0;
          if (smallRadius) {
            stream.lineStart();
            stream.point(t[0][0], t[0][1]);
            stream.point(t[1][0], t[1][1]);
            stream.lineEnd();
          } else {
            stream.point(t[1][0], t[1][1]);
            stream.lineEnd();
            stream.lineStart();
            stream.point(t[0][0], t[0][1]);
          }
        }
      }
      if (v && (!point0 || !Object(_pointEqual__WEBPACK_IMPORTED_MODULE_3__["default"])(point0, point1))) {
        stream.point(point1[0], point1[1]);
      }
      point0 = point1, v0 = v, c0 = c;
    },
    lineEnd: function() {
      if (v0) stream.lineEnd();
      point0 = null;
    },
    // Rejoin first and last segments if there were intersections and the first
    // and last points were visible.
    clean: function() {
      return clean | ((v00 && v0) << 1);
    }
  };
}

// Intersects the great circle between a and b with the clip circle.
function intersect(a, b, two) {
  var pa = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesian"])(a),
      pb = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesian"])(b);

  // We have two planes, n1.p = d1 and n2.p = d2.
  // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).
  var n1 = [1, 0, 0], // normal
      n2 = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianCross"])(pa, pb),
      n2n2 = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianDot"])(n2, n2),
      n1n2 = n2[0], // cartesianDot(n1, n2),
      determinant = n2n2 - n1n2 * n1n2;

  // Two polar points.
  if (!determinant) return !two && a;

  var c1 =  cr * n2n2 / determinant,
      c2 = -cr * n1n2 / determinant,
      n1xn2 = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianCross"])(n1, n2),
      A = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianScale"])(n1, c1),
      B = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianScale"])(n2, c2);
  Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianAddInPlace"])(A, B);

  // Solve |p(t)|^2 = 1.
  var u = n1xn2,
      w = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianDot"])(A, u),
      uu = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianDot"])(u, u),
      t2 = w * w - uu * (Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianDot"])(A, A) - 1);

  if (t2 < 0) return;

  var t = Object(_math__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(t2),
      q = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianScale"])(u, (-w - t) / uu);
  Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianAddInPlace"])(q, A);
  q = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["spherical"])(q);

  if (!two) return q;

  // Two intersection points.
  var lambda0 = a[0],
      lambda1 = b[0],
      phi0 = a[1],
      phi1 = b[1],
      z;

  if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;

  var delta = lambda1 - lambda0,
      polar = Object(_math__WEBPACK_IMPORTED_MODULE_2__["abs"])(delta - _math__WEBPACK_IMPORTED_MODULE_2__["pi"]) < _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"],
      meridian = polar || delta < _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"];

  if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;

  // Check that the first point is between a and b.
  if (meridian
      ? polar
        ? phi0 + phi1 > 0 ^ q[1] < (Object(_math__WEBPACK_IMPORTED_MODULE_2__["abs"])(q[0] - lambda0) < _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"] ? phi0 : phi1)
        : phi0 <= q[1] && q[1] <= phi1
      : delta > _math__WEBPACK_IMPORTED_MODULE_2__["pi"] ^ (lambda0 <= q[0] && q[0] <= lambda1)) {
    var q1 = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianScale"])(u, (-w + t) / uu);
    Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesianAddInPlace"])(q1, A);
    return [q, Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["spherical"])(q1)];
  }
}

// Generates a 4-bit vector representing the location of a point relative to
// the small circle's bounding box.
function code(lambda, phi) {
  var r = smallRadius ? radius : _math__WEBPACK_IMPORTED_MODULE_2__["pi"] - radius,
      code = 0;
  if (lambda < -r) code |= 1; // left
  else if (lambda > r) code |= 2; // right
  if (phi < -r) code |= 4; // below
  else if (phi > r) code |= 8; // above
  return code;
}

return Object(_index__WEBPACK_IMPORTED_MODULE_4__["default"])(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-_math__WEBPACK_IMPORTED_MODULE_2__["pi"], radius - _math__WEBPACK_IMPORTED_MODULE_2__["pi"]]);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/clip/extent.js”: /*!************************************************!*\

!*** ./node_modules/d3-geo/src/clip/extent.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var rectangle_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./rectangle */ “./node_modules/d3-geo/src/clip/rectangle.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var x0 = 0,
    y0 = 0,
    x1 = 960,
    y1 = 500,
    cache,
    cacheStream,
    clip;

return clip = {
  stream: function(stream) {
    return cache && cacheStream === stream ? cache : cache = Object(_rectangle__WEBPACK_IMPORTED_MODULE_0__["default"])(x0, y0, x1, y1)(cacheStream = stream);
  },
  extent: function(_) {
    return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];
  }
};

});

/***/ }),

/***/ “./node_modules/d3-geo/src/clip/index.js”: /*!***********************************************!*\

!*** ./node_modules/d3-geo/src/clip/index.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var buffer_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./buffer */ “./node_modules/d3-geo/src/clip/buffer.js”); /* harmony import */ var rejoin_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./rejoin */ “./node_modules/d3-geo/src/clip/rejoin.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var polygonContains_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ../polygonContains */ “./node_modules/d3-geo/src/polygonContains.js”); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_4_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function(pointVisible, clipLine, interpolate, start) {

return function(sink) {
  var line = clipLine(sink),
      ringBuffer = Object(_buffer__WEBPACK_IMPORTED_MODULE_0__["default"])(),
      ringSink = clipLine(ringBuffer),
      polygonStarted = false,
      polygon,
      segments,
      ring;

  var clip = {
    point: point,
    lineStart: lineStart,
    lineEnd: lineEnd,
    polygonStart: function() {
      clip.point = pointRing;
      clip.lineStart = ringStart;
      clip.lineEnd = ringEnd;
      segments = [];
      polygon = [];
    },
    polygonEnd: function() {
      clip.point = point;
      clip.lineStart = lineStart;
      clip.lineEnd = lineEnd;
      segments = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__["merge"])(segments);
      var startInside = Object(_polygonContains__WEBPACK_IMPORTED_MODULE_3__["default"])(polygon, start);
      if (segments.length) {
        if (!polygonStarted) sink.polygonStart(), polygonStarted = true;
        Object(_rejoin__WEBPACK_IMPORTED_MODULE_1__["default"])(segments, compareIntersection, startInside, interpolate, sink);
      } else if (startInside) {
        if (!polygonStarted) sink.polygonStart(), polygonStarted = true;
        sink.lineStart();
        interpolate(null, null, 1, sink);
        sink.lineEnd();
      }
      if (polygonStarted) sink.polygonEnd(), polygonStarted = false;
      segments = polygon = null;
    },
    sphere: function() {
      sink.polygonStart();
      sink.lineStart();
      interpolate(null, null, 1, sink);
      sink.lineEnd();
      sink.polygonEnd();
    }
  };

  function point(lambda, phi) {
    if (pointVisible(lambda, phi)) sink.point(lambda, phi);
  }

  function pointLine(lambda, phi) {
    line.point(lambda, phi);
  }

  function lineStart() {
    clip.point = pointLine;
    line.lineStart();
  }

  function lineEnd() {
    clip.point = point;
    line.lineEnd();
  }

  function pointRing(lambda, phi) {
    ring.push([lambda, phi]);
    ringSink.point(lambda, phi);
  }

  function ringStart() {
    ringSink.lineStart();
    ring = [];
  }

  function ringEnd() {
    pointRing(ring[0][0], ring[0][1]);
    ringSink.lineEnd();

    var clean = ringSink.clean(),
        ringSegments = ringBuffer.result(),
        i, n = ringSegments.length, m,
        segment,
        point;

    ring.pop();
    polygon.push(ring);
    ring = null;

    if (!n) return;

    // No intersections.
    if (clean & 1) {
      segment = ringSegments[0];
      if ((m = segment.length - 1) > 0) {
        if (!polygonStarted) sink.polygonStart(), polygonStarted = true;
        sink.lineStart();
        for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);
        sink.lineEnd();
      }
      return;
    }

    // Rejoin connected segments.
    // TODO reuse ringBuffer.rejoin()?
    if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));

    segments.push(ringSegments.filter(validSegment));
  }

  return clip;
};

});

function validSegment(segment) {

return segment.length > 1;

}

// Intersections are sorted along the clip edge. For both antimeridian cutting // and circle clipping, the same comparison is used. function compareIntersection(a, b) {

return ((a = a.x)[0] < 0 ? a[1] - _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"] - _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"] : _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"] - a[1])
     - ((b = b.x)[0] < 0 ? b[1] - _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"] - _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"] : _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"] - b[1]);

}

/***/ }),

/***/ “./node_modules/d3-geo/src/clip/line.js”: /*!**********************************************!*\

!*** ./node_modules/d3-geo/src/clip/line.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(a, b, x0, y0, x1, y1) {

var ax = a[0],
    ay = a[1],
    bx = b[0],
    by = b[1],
    t0 = 0,
    t1 = 1,
    dx = bx - ax,
    dy = by - ay,
    r;

r = x0 - ax;
if (!dx && r > 0) return;
r /= dx;
if (dx < 0) {
  if (r < t0) return;
  if (r < t1) t1 = r;
} else if (dx > 0) {
  if (r > t1) return;
  if (r > t0) t0 = r;
}

r = x1 - ax;
if (!dx && r < 0) return;
r /= dx;
if (dx < 0) {
  if (r > t1) return;
  if (r > t0) t0 = r;
} else if (dx > 0) {
  if (r < t0) return;
  if (r < t1) t1 = r;
}

r = y0 - ay;
if (!dy && r > 0) return;
r /= dy;
if (dy < 0) {
  if (r < t0) return;
  if (r < t1) t1 = r;
} else if (dy > 0) {
  if (r > t1) return;
  if (r > t0) t0 = r;
}

r = y1 - ay;
if (!dy && r < 0) return;
r /= dy;
if (dy < 0) {
  if (r > t1) return;
  if (r > t0) t0 = r;
} else if (dy > 0) {
  if (r < t0) return;
  if (r < t1) t1 = r;
}

if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;
if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;
return true;

});

/***/ }),

/***/ “./node_modules/d3-geo/src/clip/rectangle.js”: /*!***************************************************!*\

!*** ./node_modules/d3-geo/src/clip/rectangle.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return clipRectangle; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var buffer_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./buffer */ “./node_modules/d3-geo/src/clip/buffer.js”); /* harmony import */ var line_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./line */ “./node_modules/d3-geo/src/clip/line.js”); /* harmony import */ var rejoin_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./rejoin */ “./node_modules/d3-geo/src/clip/rejoin.js”); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_4_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”);

var clipMax = 1e9, clipMin = -clipMax;

// TODO Use d3-polygon’s polygonContains here for the ring check? // TODO Eliminate duplicate buffering in clipBuffer and polygon.push?

function clipRectangle(x0, y0, x1, y1) {

function visible(x, y) {
  return x0 <= x && x <= x1 && y0 <= y && y <= y1;
}

function interpolate(from, to, direction, stream) {
  var a = 0, a1 = 0;
  if (from == null
      || (a = corner(from, direction)) !== (a1 = corner(to, direction))
      || comparePoint(from, to) < 0 ^ direction > 0) {
    do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);
    while ((a = (a + direction + 4) % 4) !== a1);
  } else {
    stream.point(to[0], to[1]);
  }
}

function corner(p, direction) {
  return Object(_math__WEBPACK_IMPORTED_MODULE_0__["abs"])(p[0] - x0) < _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"] ? direction > 0 ? 0 : 3
      : Object(_math__WEBPACK_IMPORTED_MODULE_0__["abs"])(p[0] - x1) < _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"] ? direction > 0 ? 2 : 1
      : Object(_math__WEBPACK_IMPORTED_MODULE_0__["abs"])(p[1] - y0) < _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"] ? direction > 0 ? 1 : 0
      : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon
}

function compareIntersection(a, b) {
  return comparePoint(a.x, b.x);
}

function comparePoint(a, b) {
  var ca = corner(a, 1),
      cb = corner(b, 1);
  return ca !== cb ? ca - cb
      : ca === 0 ? b[1] - a[1]
      : ca === 1 ? a[0] - b[0]
      : ca === 2 ? a[1] - b[1]
      : b[0] - a[0];
}

return function(stream) {
  var activeStream = stream,
      bufferStream = Object(_buffer__WEBPACK_IMPORTED_MODULE_1__["default"])(),
      segments,
      polygon,
      ring,
      x__, y__, v__, // first point
      x_, y_, v_, // previous point
      first,
      clean;

  var clipStream = {
    point: point,
    lineStart: lineStart,
    lineEnd: lineEnd,
    polygonStart: polygonStart,
    polygonEnd: polygonEnd
  };

  function point(x, y) {
    if (visible(x, y)) activeStream.point(x, y);
  }

  function polygonInside() {
    var winding = 0;

    for (var i = 0, n = polygon.length; i < n; ++i) {
      for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {
        a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];
        if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }
        else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }
      }
    }

    return winding;
  }

  // Buffer geometry within a polygon and then clip it en masse.
  function polygonStart() {
    activeStream = bufferStream, segments = [], polygon = [], clean = true;
  }

  function polygonEnd() {
    var startInside = polygonInside(),
        cleanInside = clean && startInside,
        visible = (segments = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__["merge"])(segments)).length;
    if (cleanInside || visible) {
      stream.polygonStart();
      if (cleanInside) {
        stream.lineStart();
        interpolate(null, null, 1, stream);
        stream.lineEnd();
      }
      if (visible) {
        Object(_rejoin__WEBPACK_IMPORTED_MODULE_3__["default"])(segments, compareIntersection, startInside, interpolate, stream);
      }
      stream.polygonEnd();
    }
    activeStream = stream, segments = polygon = ring = null;
  }

  function lineStart() {
    clipStream.point = linePoint;
    if (polygon) polygon.push(ring = []);
    first = true;
    v_ = false;
    x_ = y_ = NaN;
  }

  // TODO rather than special-case polygons, simply handle them separately.
  // Ideally, coincident intersection points should be jittered to avoid
  // clipping issues.
  function lineEnd() {
    if (segments) {
      linePoint(x__, y__);
      if (v__ && v_) bufferStream.rejoin();
      segments.push(bufferStream.result());
    }
    clipStream.point = point;
    if (v_) activeStream.lineEnd();
  }

  function linePoint(x, y) {
    var v = visible(x, y);
    if (polygon) ring.push([x, y]);
    if (first) {
      x__ = x, y__ = y, v__ = v;
      first = false;
      if (v) {
        activeStream.lineStart();
        activeStream.point(x, y);
      }
    } else {
      if (v && v_) activeStream.point(x, y);
      else {
        var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],
            b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];
        if (Object(_line__WEBPACK_IMPORTED_MODULE_2__["default"])(a, b, x0, y0, x1, y1)) {
          if (!v_) {
            activeStream.lineStart();
            activeStream.point(a[0], a[1]);
          }
          activeStream.point(b[0], b[1]);
          if (!v) activeStream.lineEnd();
          clean = false;
        } else if (v) {
          activeStream.lineStart();
          activeStream.point(x, y);
          clean = false;
        }
      }
    }
    x_ = x, y_ = y, v_ = v;
  }

  return clipStream;
};

}

/***/ }),

/***/ “./node_modules/d3-geo/src/clip/rejoin.js”: /*!************************************************!*\

!*** ./node_modules/d3-geo/src/clip/rejoin.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var pointEqual_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../pointEqual */ “./node_modules/d3-geo/src/pointEqual.js”);

function Intersection(point, points, other, entry) {

this.x = point;
this.z = points;
this.o = other; // another intersection
this.e = entry; // is an entry?
this.v = false; // visited
this.n = this.p = null; // next & previous

}

// A generalized polygon clipping algorithm: given a polygon that has been cut // into its visible line segments, and rejoins the segments by interpolating // along the clip edge. /* harmony default export */ webpack_exports[“default”] = (function(segments, compareIntersection, startInside, interpolate, stream) {

var subject = [],
    clip = [],
    i,
    n;

segments.forEach(function(segment) {
  if ((n = segment.length - 1) <= 0) return;
  var n, p0 = segment[0], p1 = segment[n], x;

  // If the first and last points of a segment are coincident, then treat as a
  // closed ring. TODO if all rings are closed, then the winding order of the
  // exterior ring should be checked.
  if (Object(_pointEqual__WEBPACK_IMPORTED_MODULE_0__["default"])(p0, p1)) {
    stream.lineStart();
    for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);
    stream.lineEnd();
    return;
  }

  subject.push(x = new Intersection(p0, segment, null, true));
  clip.push(x.o = new Intersection(p0, null, x, false));
  subject.push(x = new Intersection(p1, segment, null, false));
  clip.push(x.o = new Intersection(p1, null, x, true));
});

if (!subject.length) return;

clip.sort(compareIntersection);
link(subject);
link(clip);

for (i = 0, n = clip.length; i < n; ++i) {
  clip[i].e = startInside = !startInside;
}

var start = subject[0],
    points,
    point;

while (1) {
  // Find first unvisited intersection.
  var current = start,
      isSubject = true;
  while (current.v) if ((current = current.n) === start) return;
  points = current.z;
  stream.lineStart();
  do {
    current.v = current.o.v = true;
    if (current.e) {
      if (isSubject) {
        for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);
      } else {
        interpolate(current.x, current.n.x, 1, stream);
      }
      current = current.n;
    } else {
      if (isSubject) {
        points = current.p.z;
        for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);
      } else {
        interpolate(current.x, current.p.x, -1, stream);
      }
      current = current.p;
    }
    current = current.o;
    points = current.z;
    isSubject = !isSubject;
  } while (!current.v);
  stream.lineEnd();
}

});

function link(array) {

if (!(n = array.length)) return;
var n,
    i = 0,
    a = array[0],
    b;
while (++i < n) {
  a.n = b = array[i];
  b.p = a;
  a = b;
}
a.n = b = array[0];
b.p = a;

}

/***/ }),

/***/ “./node_modules/d3-geo/src/compose.js”: /*!********************************************!*\

!*** ./node_modules/d3-geo/src/compose.js ***!
\********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(a, b) {

function compose(x, y) {
  return x = a(x, y), b(x[0], x[1]);
}

if (a.invert && b.invert) compose.invert = function(x, y) {
  return x = b.invert(x, y), x && a.invert(x[0], x[1]);
};

return compose;

});

/***/ }),

/***/ “./node_modules/d3-geo/src/constant.js”: /*!*********************************************!*\

!*** ./node_modules/d3-geo/src/constant.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return function() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-geo/src/contains.js”: /*!*********************************************!*\

!*** ./node_modules/d3-geo/src/contains.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var polygonContains_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./polygonContains */ “./node_modules/d3-geo/src/polygonContains.js”); /* harmony import */ var distance_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./distance */ “./node_modules/d3-geo/src/distance.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./math */ “./node_modules/d3-geo/src/math.js”);

var containsObjectType = {

Feature: function(object, point) {
  return containsGeometry(object.geometry, point);
},
FeatureCollection: function(object, point) {
  var features = object.features, i = -1, n = features.length;
  while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;
  return false;
}

};

var containsGeometryType = {

Sphere: function() {
  return true;
},
Point: function(object, point) {
  return containsPoint(object.coordinates, point);
},
MultiPoint: function(object, point) {
  var coordinates = object.coordinates, i = -1, n = coordinates.length;
  while (++i < n) if (containsPoint(coordinates[i], point)) return true;
  return false;
},
LineString: function(object, point) {
  return containsLine(object.coordinates, point);
},
MultiLineString: function(object, point) {
  var coordinates = object.coordinates, i = -1, n = coordinates.length;
  while (++i < n) if (containsLine(coordinates[i], point)) return true;
  return false;
},
Polygon: function(object, point) {
  return containsPolygon(object.coordinates, point);
},
MultiPolygon: function(object, point) {
  var coordinates = object.coordinates, i = -1, n = coordinates.length;
  while (++i < n) if (containsPolygon(coordinates[i], point)) return true;
  return false;
},
GeometryCollection: function(object, point) {
  var geometries = object.geometries, i = -1, n = geometries.length;
  while (++i < n) if (containsGeometry(geometries[i], point)) return true;
  return false;
}

};

function containsGeometry(geometry, point) {

return geometry && containsGeometryType.hasOwnProperty(geometry.type)
    ? containsGeometryType[geometry.type](geometry, point)
    : false;

}

function containsPoint(coordinates, point) {

return Object(_distance__WEBPACK_IMPORTED_MODULE_1__["default"])(coordinates, point) === 0;

}

function containsLine(coordinates, point) {

var ab = Object(_distance__WEBPACK_IMPORTED_MODULE_1__["default"])(coordinates[0], coordinates[1]),
    ao = Object(_distance__WEBPACK_IMPORTED_MODULE_1__["default"])(coordinates[0], point),
    ob = Object(_distance__WEBPACK_IMPORTED_MODULE_1__["default"])(point, coordinates[1]);
return ao + ob <= ab + _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"];

}

function containsPolygon(coordinates, point) {

return !!Object(_polygonContains__WEBPACK_IMPORTED_MODULE_0__["default"])(coordinates.map(ringRadians), pointRadians(point));

}

function ringRadians(ring) {

return ring = ring.map(pointRadians), ring.pop(), ring;

}

function pointRadians(point) {

return [point[0] * _math__WEBPACK_IMPORTED_MODULE_2__["radians"], point[1] * _math__WEBPACK_IMPORTED_MODULE_2__["radians"]];

}

/* harmony default export */ webpack_exports[“default”] = (function(object, point) {

return (object && containsObjectType.hasOwnProperty(object.type)
    ? containsObjectType[object.type]
    : containsGeometry)(object, point);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/distance.js”: /*!*********************************************!*\

!*** ./node_modules/d3-geo/src/distance.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var length_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./length */ “./node_modules/d3-geo/src/length.js”);

var coordinates = [null, null],

object = {type: "LineString", coordinates: coordinates};

/* harmony default export */ webpack_exports[“default”] = (function(a, b) {

coordinates[0] = a;
coordinates[1] = b;
return Object(_length__WEBPACK_IMPORTED_MODULE_0__["default"])(object);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/graticule.js”: /*!**********************************************!*\

!*** ./node_modules/d3-geo/src/graticule.js ***!
\**********************************************/

/*! exports provided: default, graticule10 */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return graticule; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “graticule10”, function() { return graticule10; }); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./math */ “./node_modules/d3-geo/src/math.js”);

function graticuleX(y0, y1, dy) {

var y = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(y0, y1 - _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"], dy).concat(y1);
return function(x) { return y.map(function(y) { return [x, y]; }); };

}

function graticuleY(x0, x1, dx) {

var x = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(x0, x1 - _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"], dx).concat(x1);
return function(y) { return x.map(function(x) { return [x, y]; }); };

}

function graticule() {

var x1, x0, X1, X0,
    y1, y0, Y1, Y0,
    dx = 10, dy = dx, DX = 90, DY = 360,
    x, y, X, Y,
    precision = 2.5;

function graticule() {
  return {type: "MultiLineString", coordinates: lines()};
}

function lines() {
  return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(Object(_math__WEBPACK_IMPORTED_MODULE_1__["ceil"])(X0 / DX) * DX, X1, DX).map(X)
      .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(Object(_math__WEBPACK_IMPORTED_MODULE_1__["ceil"])(Y0 / DY) * DY, Y1, DY).map(Y))
      .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(Object(_math__WEBPACK_IMPORTED_MODULE_1__["ceil"])(x0 / dx) * dx, x1, dx).filter(function(x) { return Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(x % DX) > _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"]; }).map(x))
      .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(Object(_math__WEBPACK_IMPORTED_MODULE_1__["ceil"])(y0 / dy) * dy, y1, dy).filter(function(y) { return Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(y % DY) > _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"]; }).map(y));
}

graticule.lines = function() {
  return lines().map(function(coordinates) { return {type: "LineString", coordinates: coordinates}; });
};

graticule.outline = function() {
  return {
    type: "Polygon",
    coordinates: [
      X(X0).concat(
      Y(Y1).slice(1),
      X(X1).reverse().slice(1),
      Y(Y0).reverse().slice(1))
    ]
  };
};

graticule.extent = function(_) {
  if (!arguments.length) return graticule.extentMinor();
  return graticule.extentMajor(_).extentMinor(_);
};

graticule.extentMajor = function(_) {
  if (!arguments.length) return [[X0, Y0], [X1, Y1]];
  X0 = +_[0][0], X1 = +_[1][0];
  Y0 = +_[0][1], Y1 = +_[1][1];
  if (X0 > X1) _ = X0, X0 = X1, X1 = _;
  if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;
  return graticule.precision(precision);
};

graticule.extentMinor = function(_) {
  if (!arguments.length) return [[x0, y0], [x1, y1]];
  x0 = +_[0][0], x1 = +_[1][0];
  y0 = +_[0][1], y1 = +_[1][1];
  if (x0 > x1) _ = x0, x0 = x1, x1 = _;
  if (y0 > y1) _ = y0, y0 = y1, y1 = _;
  return graticule.precision(precision);
};

graticule.step = function(_) {
  if (!arguments.length) return graticule.stepMinor();
  return graticule.stepMajor(_).stepMinor(_);
};

graticule.stepMajor = function(_) {
  if (!arguments.length) return [DX, DY];
  DX = +_[0], DY = +_[1];
  return graticule;
};

graticule.stepMinor = function(_) {
  if (!arguments.length) return [dx, dy];
  dx = +_[0], dy = +_[1];
  return graticule;
};

graticule.precision = function(_) {
  if (!arguments.length) return precision;
  precision = +_;
  x = graticuleX(y0, y1, 90);
  y = graticuleY(x0, x1, precision);
  X = graticuleX(Y0, Y1, 90);
  Y = graticuleY(X0, X1, precision);
  return graticule;
};

return graticule
    .extentMajor([[-180, -90 + _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"]], [180, 90 - _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"]]])
    .extentMinor([[-180, -80 - _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"]], [180, 80 + _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"]]]);

}

function graticule10() {

return graticule()();

}

/***/ }),

/***/ “./node_modules/d3-geo/src/identity.js”: /*!*********************************************!*\

!*** ./node_modules/d3-geo/src/identity.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return x;

});

/***/ }),

/***/ “./node_modules/d3-geo/src/interpolate.js”: /*!************************************************!*\

!*** ./node_modules/d3-geo/src/interpolate.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./math */ “./node_modules/d3-geo/src/math.js”);

/* harmony default export */ webpack_exports[“default”] = (function(a, b) {

var x0 = a[0] * _math__WEBPACK_IMPORTED_MODULE_0__["radians"],
    y0 = a[1] * _math__WEBPACK_IMPORTED_MODULE_0__["radians"],
    x1 = b[0] * _math__WEBPACK_IMPORTED_MODULE_0__["radians"],
    y1 = b[1] * _math__WEBPACK_IMPORTED_MODULE_0__["radians"],
    cy0 = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(y0),
    sy0 = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(y0),
    cy1 = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(y1),
    sy1 = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(y1),
    kx0 = cy0 * Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(x0),
    ky0 = cy0 * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(x0),
    kx1 = cy1 * Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(x1),
    ky1 = cy1 * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(x1),
    d = 2 * Object(_math__WEBPACK_IMPORTED_MODULE_0__["asin"])(Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(Object(_math__WEBPACK_IMPORTED_MODULE_0__["haversin"])(y1 - y0) + cy0 * cy1 * Object(_math__WEBPACK_IMPORTED_MODULE_0__["haversin"])(x1 - x0))),
    k = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(d);

var interpolate = d ? function(t) {
  var B = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(t *= d) / k,
      A = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(d - t) / k,
      x = A * kx0 + B * kx1,
      y = A * ky0 + B * ky1,
      z = A * sy0 + B * sy1;
  return [
    Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan2"])(y, x) * _math__WEBPACK_IMPORTED_MODULE_0__["degrees"],
    Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan2"])(z, Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(x * x + y * y)) * _math__WEBPACK_IMPORTED_MODULE_0__["degrees"]
  ];
} : function() {
  return [x0 * _math__WEBPACK_IMPORTED_MODULE_0__["degrees"], y0 * _math__WEBPACK_IMPORTED_MODULE_0__["degrees"]];
};

interpolate.distance = d;

return interpolate;

});

/***/ }),

/***/ “./node_modules/d3-geo/src/length.js”: /*!*******************************************!*\

!*** ./node_modules/d3-geo/src/length.js ***!
\*******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var adder_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./adder */ “./node_modules/d3-geo/src/adder.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var noop_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./noop */ “./node_modules/d3-geo/src/noop.js”); /* harmony import */ var stream_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./stream */ “./node_modules/d3-geo/src/stream.js”);

var lengthSum = Object(adder_WEBPACK_IMPORTED_MODULE_0[“default”])(),

lambda0,
sinPhi0,
cosPhi0;

var lengthStream = {

sphere: _noop__WEBPACK_IMPORTED_MODULE_2__["default"],
point: _noop__WEBPACK_IMPORTED_MODULE_2__["default"],
lineStart: lengthLineStart,
lineEnd: _noop__WEBPACK_IMPORTED_MODULE_2__["default"],
polygonStart: _noop__WEBPACK_IMPORTED_MODULE_2__["default"],
polygonEnd: _noop__WEBPACK_IMPORTED_MODULE_2__["default"]

};

function lengthLineStart() {

lengthStream.point = lengthPointFirst;
lengthStream.lineEnd = lengthLineEnd;

}

function lengthLineEnd() {

lengthStream.point = lengthStream.lineEnd = _noop__WEBPACK_IMPORTED_MODULE_2__["default"];

}

function lengthPointFirst(lambda, phi) {

lambda *= _math__WEBPACK_IMPORTED_MODULE_1__["radians"], phi *= _math__WEBPACK_IMPORTED_MODULE_1__["radians"];
lambda0 = lambda, sinPhi0 = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi), cosPhi0 = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi);
lengthStream.point = lengthPoint;

}

function lengthPoint(lambda, phi) {

lambda *= _math__WEBPACK_IMPORTED_MODULE_1__["radians"], phi *= _math__WEBPACK_IMPORTED_MODULE_1__["radians"];
var sinPhi = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi),
    cosPhi = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi),
    delta = Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(lambda - lambda0),
    cosDelta = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(delta),
    sinDelta = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(delta),
    x = cosPhi * sinDelta,
    y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,
    z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;
lengthSum.add(Object(_math__WEBPACK_IMPORTED_MODULE_1__["atan2"])(Object(_math__WEBPACK_IMPORTED_MODULE_1__["sqrt"])(x * x + y * y), z));
lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;

}

/* harmony default export */ webpack_exports[“default”] = (function(object) {

lengthSum.reset();
Object(_stream__WEBPACK_IMPORTED_MODULE_3__["default"])(object, lengthStream);
return +lengthSum;

});

/***/ }),

/***/ “./node_modules/d3-geo/src/math.js”: /*!*****************************************!*\

!*** ./node_modules/d3-geo/src/math.js ***!
\*****************************************/

/*! exports provided: epsilon, epsilon2, pi, halfPi, quarterPi, tau, degrees, radians, abs, atan, atan2, cos, ceil, exp, floor, log, pow, sin, sign, sqrt, tan, acos, asin, haversin */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “epsilon”, function() { return epsilon; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “epsilon2”, function() { return epsilon2; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “pi”, function() { return pi; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “halfPi”, function() { return halfPi; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “quarterPi”, function() { return quarterPi; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tau”, function() { return tau; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “degrees”, function() { return degrees; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “radians”, function() { return radians; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “abs”, function() { return abs; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “atan”, function() { return atan; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “atan2”, function() { return atan2; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cos”, function() { return cos; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “ceil”, function() { return ceil; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “exp”, function() { return exp; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “floor”, function() { return floor; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “log”, function() { return log; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “pow”, function() { return pow; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sin”, function() { return sin; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sign”, function() { return sign; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sqrt”, function() { return sqrt; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tan”, function() { return tan; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “acos”, function() { return acos; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “asin”, function() { return asin; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “haversin”, function() { return haversin; }); var epsilon = 1e-6; var epsilon2 = 1e-12; var pi = Math.PI; var halfPi = pi / 2; var quarterPi = pi / 4; var tau = pi * 2;

var degrees = 180 / pi; var radians = pi / 180;

var abs = Math.abs; var atan = Math.atan; var atan2 = Math.atan2; var cos = Math.cos; var ceil = Math.ceil; var exp = Math.exp; var floor = Math.floor; var log = Math.log; var pow = Math.pow; var sin = Math.sin; var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; }; var sqrt = Math.sqrt; var tan = Math.tan;

function acos(x) {

return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);

}

function asin(x) {

return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);

}

function haversin(x) {

return (x = sin(x / 2)) * x;

}

/***/ }),

/***/ “./node_modules/d3-geo/src/noop.js”: /*!*****************************************!*\

!*** ./node_modules/d3-geo/src/noop.js ***!
\*****************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return noop; }); function noop() {}

/***/ }),

/***/ “./node_modules/d3-geo/src/path/area.js”: /*!**********************************************!*\

!*** ./node_modules/d3-geo/src/path/area.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var adder_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../adder */ “./node_modules/d3-geo/src/adder.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var noop_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ../noop */ “./node_modules/d3-geo/src/noop.js”);

var areaSum = Object(adder_WEBPACK_IMPORTED_MODULE_0[“default”])(),

areaRingSum = Object(_adder__WEBPACK_IMPORTED_MODULE_0__["default"])(),
x00,
y00,
x0,
y0;

var areaStream = {

point: _noop__WEBPACK_IMPORTED_MODULE_2__["default"],
lineStart: _noop__WEBPACK_IMPORTED_MODULE_2__["default"],
lineEnd: _noop__WEBPACK_IMPORTED_MODULE_2__["default"],
polygonStart: function() {
  areaStream.lineStart = areaRingStart;
  areaStream.lineEnd = areaRingEnd;
},
polygonEnd: function() {
  areaStream.lineStart = areaStream.lineEnd = areaStream.point = _noop__WEBPACK_IMPORTED_MODULE_2__["default"];
  areaSum.add(Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(areaRingSum));
  areaRingSum.reset();
},
result: function() {
  var area = areaSum / 2;
  areaSum.reset();
  return area;
}

};

function areaRingStart() {

areaStream.point = areaPointFirst;

}

function areaPointFirst(x, y) {

areaStream.point = areaPoint;
x00 = x0 = x, y00 = y0 = y;

}

function areaPoint(x, y) {

areaRingSum.add(y0 * x - x0 * y);
x0 = x, y0 = y;

}

function areaRingEnd() {

areaPoint(x00, y00);

}

/* harmony default export */ webpack_exports[“default”] = (areaStream);

/***/ }),

/***/ “./node_modules/d3-geo/src/path/bounds.js”: /*!************************************************!*\

!*** ./node_modules/d3-geo/src/path/bounds.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var noop_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../noop */ “./node_modules/d3-geo/src/noop.js”);

var x0 = Infinity,

y0 = x0,
x1 = -x0,
y1 = x1;

var boundsStream = {

point: boundsPoint,
lineStart: _noop__WEBPACK_IMPORTED_MODULE_0__["default"],
lineEnd: _noop__WEBPACK_IMPORTED_MODULE_0__["default"],
polygonStart: _noop__WEBPACK_IMPORTED_MODULE_0__["default"],
polygonEnd: _noop__WEBPACK_IMPORTED_MODULE_0__["default"],
result: function() {
  var bounds = [[x0, y0], [x1, y1]];
  x1 = y1 = -(y0 = x0 = Infinity);
  return bounds;
}

};

function boundsPoint(x, y) {

if (x < x0) x0 = x;
if (x > x1) x1 = x;
if (y < y0) y0 = y;
if (y > y1) y1 = y;

}

/* harmony default export */ webpack_exports[“default”] = (boundsStream);

/***/ }),

/***/ “./node_modules/d3-geo/src/path/centroid.js”: /*!**************************************************!*\

!*** ./node_modules/d3-geo/src/path/centroid.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”);

// TODO Enforce positive area for exterior, negative area for interior?

var X0 = 0,

Y0 = 0,
Z0 = 0,
X1 = 0,
Y1 = 0,
Z1 = 0,
X2 = 0,
Y2 = 0,
Z2 = 0,
x00,
y00,
x0,
y0;

var centroidStream = {

point: centroidPoint,
lineStart: centroidLineStart,
lineEnd: centroidLineEnd,
polygonStart: function() {
  centroidStream.lineStart = centroidRingStart;
  centroidStream.lineEnd = centroidRingEnd;
},
polygonEnd: function() {
  centroidStream.point = centroidPoint;
  centroidStream.lineStart = centroidLineStart;
  centroidStream.lineEnd = centroidLineEnd;
},
result: function() {
  var centroid = Z2 ? [X2 / Z2, Y2 / Z2]
      : Z1 ? [X1 / Z1, Y1 / Z1]
      : Z0 ? [X0 / Z0, Y0 / Z0]
      : [NaN, NaN];
  X0 = Y0 = Z0 =
  X1 = Y1 = Z1 =
  X2 = Y2 = Z2 = 0;
  return centroid;
}

};

function centroidPoint(x, y) {

X0 += x;
Y0 += y;
++Z0;

}

function centroidLineStart() {

centroidStream.point = centroidPointFirstLine;

}

function centroidPointFirstLine(x, y) {

centroidStream.point = centroidPointLine;
centroidPoint(x0 = x, y0 = y);

}

function centroidPointLine(x, y) {

var dx = x - x0, dy = y - y0, z = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(dx * dx + dy * dy);
X1 += z * (x0 + x) / 2;
Y1 += z * (y0 + y) / 2;
Z1 += z;
centroidPoint(x0 = x, y0 = y);

}

function centroidLineEnd() {

centroidStream.point = centroidPoint;

}

function centroidRingStart() {

centroidStream.point = centroidPointFirstRing;

}

function centroidRingEnd() {

centroidPointRing(x00, y00);

}

function centroidPointFirstRing(x, y) {

centroidStream.point = centroidPointRing;
centroidPoint(x00 = x0 = x, y00 = y0 = y);

}

function centroidPointRing(x, y) {

var dx = x - x0,
    dy = y - y0,
    z = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(dx * dx + dy * dy);

X1 += z * (x0 + x) / 2;
Y1 += z * (y0 + y) / 2;
Z1 += z;

z = y0 * x - x0 * y;
X2 += z * (x0 + x);
Y2 += z * (y0 + y);
Z2 += z * 3;
centroidPoint(x0 = x, y0 = y);

}

/* harmony default export */ webpack_exports[“default”] = (centroidStream);

/***/ }),

/***/ “./node_modules/d3-geo/src/path/context.js”: /*!*************************************************!*\

!*** ./node_modules/d3-geo/src/path/context.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return PathContext; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var noop_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../noop */ “./node_modules/d3-geo/src/noop.js”);

function PathContext(context) {

this._context = context;

}

PathContext.prototype = {

_radius: 4.5,
pointRadius: function(_) {
  return this._radius = _, this;
},
polygonStart: function() {
  this._line = 0;
},
polygonEnd: function() {
  this._line = NaN;
},
lineStart: function() {
  this._point = 0;
},
lineEnd: function() {
  if (this._line === 0) this._context.closePath();
  this._point = NaN;
},
point: function(x, y) {
  switch (this._point) {
    case 0: {
      this._context.moveTo(x, y);
      this._point = 1;
      break;
    }
    case 1: {
      this._context.lineTo(x, y);
      break;
    }
    default: {
      this._context.moveTo(x + this._radius, y);
      this._context.arc(x, y, this._radius, 0, _math__WEBPACK_IMPORTED_MODULE_0__["tau"]);
      break;
    }
  }
},
result: _noop__WEBPACK_IMPORTED_MODULE_1__["default"]

};

/***/ }),

/***/ “./node_modules/d3-geo/src/path/index.js”: /*!***********************************************!*\

!*** ./node_modules/d3-geo/src/path/index.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var identity_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../identity */ “./node_modules/d3-geo/src/identity.js”); /* harmony import */ var stream_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../stream */ “./node_modules/d3-geo/src/stream.js”); /* harmony import */ var area_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./area */ “./node_modules/d3-geo/src/path/area.js”); /* harmony import */ var bounds_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./bounds */ “./node_modules/d3-geo/src/path/bounds.js”); /* harmony import */ var centroid_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./centroid */ “./node_modules/d3-geo/src/path/centroid.js”); /* harmony import */ var context_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./context */ “./node_modules/d3-geo/src/path/context.js”); /* harmony import */ var measure_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./measure */ “./node_modules/d3-geo/src/path/measure.js”); /* harmony import */ var string_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./string */ “./node_modules/d3-geo/src/path/string.js”);

/* harmony default export */ webpack_exports[“default”] = (function(projection, context) {

var pointRadius = 4.5,
    projectionStream,
    contextStream;

function path(object) {
  if (object) {
    if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments));
    Object(_stream__WEBPACK_IMPORTED_MODULE_1__["default"])(object, projectionStream(contextStream));
  }
  return contextStream.result();
}

path.area = function(object) {
  Object(_stream__WEBPACK_IMPORTED_MODULE_1__["default"])(object, projectionStream(_area__WEBPACK_IMPORTED_MODULE_2__["default"]));
  return _area__WEBPACK_IMPORTED_MODULE_2__["default"].result();
};

path.measure = function(object) {
  Object(_stream__WEBPACK_IMPORTED_MODULE_1__["default"])(object, projectionStream(_measure__WEBPACK_IMPORTED_MODULE_6__["default"]));
  return _measure__WEBPACK_IMPORTED_MODULE_6__["default"].result();
};

path.bounds = function(object) {
  Object(_stream__WEBPACK_IMPORTED_MODULE_1__["default"])(object, projectionStream(_bounds__WEBPACK_IMPORTED_MODULE_3__["default"]));
  return _bounds__WEBPACK_IMPORTED_MODULE_3__["default"].result();
};

path.centroid = function(object) {
  Object(_stream__WEBPACK_IMPORTED_MODULE_1__["default"])(object, projectionStream(_centroid__WEBPACK_IMPORTED_MODULE_4__["default"]));
  return _centroid__WEBPACK_IMPORTED_MODULE_4__["default"].result();
};

path.projection = function(_) {
  return arguments.length ? (projectionStream = _ == null ? (projection = null, _identity__WEBPACK_IMPORTED_MODULE_0__["default"]) : (projection = _).stream, path) : projection;
};

path.context = function(_) {
  if (!arguments.length) return context;
  contextStream = _ == null ? (context = null, new _string__WEBPACK_IMPORTED_MODULE_7__["default"]) : new _context__WEBPACK_IMPORTED_MODULE_5__["default"](context = _);
  if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius);
  return path;
};

path.pointRadius = function(_) {
  if (!arguments.length) return pointRadius;
  pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_);
  return path;
};

return path.projection(projection).context(context);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/path/measure.js”: /*!*************************************************!*\

!*** ./node_modules/d3-geo/src/path/measure.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var adder_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../adder */ “./node_modules/d3-geo/src/adder.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var noop_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ../noop */ “./node_modules/d3-geo/src/noop.js”);

var lengthSum = Object(adder_WEBPACK_IMPORTED_MODULE_0[“default”])(),

lengthRing,
x00,
y00,
x0,
y0;

var lengthStream = {

point: _noop__WEBPACK_IMPORTED_MODULE_2__["default"],
lineStart: function() {
  lengthStream.point = lengthPointFirst;
},
lineEnd: function() {
  if (lengthRing) lengthPoint(x00, y00);
  lengthStream.point = _noop__WEBPACK_IMPORTED_MODULE_2__["default"];
},
polygonStart: function() {
  lengthRing = true;
},
polygonEnd: function() {
  lengthRing = null;
},
result: function() {
  var length = +lengthSum;
  lengthSum.reset();
  return length;
}

};

function lengthPointFirst(x, y) {

lengthStream.point = lengthPoint;
x00 = x0 = x, y00 = y0 = y;

}

function lengthPoint(x, y) {

x0 -= x, y0 -= y;
lengthSum.add(Object(_math__WEBPACK_IMPORTED_MODULE_1__["sqrt"])(x0 * x0 + y0 * y0));
x0 = x, y0 = y;

}

/* harmony default export */ webpack_exports[“default”] = (lengthStream);

/***/ }),

/***/ “./node_modules/d3-geo/src/path/string.js”: /*!************************************************!*\

!*** ./node_modules/d3-geo/src/path/string.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return PathString; }); function PathString() {

this._string = [];

}

PathString.prototype = {

_radius: 4.5,
_circle: circle(4.5),
pointRadius: function(_) {
  if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;
  return this;
},
polygonStart: function() {
  this._line = 0;
},
polygonEnd: function() {
  this._line = NaN;
},
lineStart: function() {
  this._point = 0;
},
lineEnd: function() {
  if (this._line === 0) this._string.push("Z");
  this._point = NaN;
},
point: function(x, y) {
  switch (this._point) {
    case 0: {
      this._string.push("M", x, ",", y);
      this._point = 1;
      break;
    }
    case 1: {
      this._string.push("L", x, ",", y);
      break;
    }
    default: {
      if (this._circle == null) this._circle = circle(this._radius);
      this._string.push("M", x, ",", y, this._circle);
      break;
    }
  }
},
result: function() {
  if (this._string.length) {
    var result = this._string.join("");
    this._string = [];
    return result;
  } else {
    return null;
  }
}

};

function circle(radius) {

return "m0," + radius
    + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius
    + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius
    + "z";

}

/***/ }),

/***/ “./node_modules/d3-geo/src/pointEqual.js”: /*!***********************************************!*\

!*** ./node_modules/d3-geo/src/pointEqual.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./math */ “./node_modules/d3-geo/src/math.js”);

/* harmony default export */ webpack_exports[“default”] = (function(a, b) {

return Object(_math__WEBPACK_IMPORTED_MODULE_0__["abs"])(a[0] - b[0]) < _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"] && Object(_math__WEBPACK_IMPORTED_MODULE_0__["abs"])(a[1] - b[1]) < _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"];

});

/***/ }),

/***/ “./node_modules/d3-geo/src/polygonContains.js”: /*!****************************************************!*\

!*** ./node_modules/d3-geo/src/polygonContains.js ***!
\****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var adder_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./adder */ “./node_modules/d3-geo/src/adder.js”); /* harmony import */ var cartesian_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./cartesian */ “./node_modules/d3-geo/src/cartesian.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./math */ “./node_modules/d3-geo/src/math.js”);

var sum = Object(adder_WEBPACK_IMPORTED_MODULE_0[“default”])();

/* harmony default export */ webpack_exports[“default”] = (function(polygon, point) {

var lambda = point[0],
    phi = point[1],
    normal = [Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(lambda), -Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(lambda), 0],
    angle = 0,
    winding = 0;

sum.reset();

for (var i = 0, n = polygon.length; i < n; ++i) {
  if (!(m = (ring = polygon[i]).length)) continue;
  var ring,
      m,
      point0 = ring[m - 1],
      lambda0 = point0[0],
      phi0 = point0[1] / 2 + _math__WEBPACK_IMPORTED_MODULE_2__["quarterPi"],
      sinPhi0 = Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(phi0),
      cosPhi0 = Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(phi0);

  for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {
    var point1 = ring[j],
        lambda1 = point1[0],
        phi1 = point1[1] / 2 + _math__WEBPACK_IMPORTED_MODULE_2__["quarterPi"],
        sinPhi1 = Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(phi1),
        cosPhi1 = Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(phi1),
        delta = lambda1 - lambda0,
        sign = delta >= 0 ? 1 : -1,
        absDelta = sign * delta,
        antimeridian = absDelta > _math__WEBPACK_IMPORTED_MODULE_2__["pi"],
        k = sinPhi0 * sinPhi1;

    sum.add(Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(k * sign * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(absDelta), cosPhi0 * cosPhi1 + k * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(absDelta)));
    angle += antimeridian ? delta + sign * _math__WEBPACK_IMPORTED_MODULE_2__["tau"] : delta;

    // Are the longitudes either side of the point’s meridian (lambda),
    // and are the latitudes smaller than the parallel (phi)?
    if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {
      var arc = Object(_cartesian__WEBPACK_IMPORTED_MODULE_1__["cartesianCross"])(Object(_cartesian__WEBPACK_IMPORTED_MODULE_1__["cartesian"])(point0), Object(_cartesian__WEBPACK_IMPORTED_MODULE_1__["cartesian"])(point1));
      Object(_cartesian__WEBPACK_IMPORTED_MODULE_1__["cartesianNormalizeInPlace"])(arc);
      var intersection = Object(_cartesian__WEBPACK_IMPORTED_MODULE_1__["cartesianCross"])(normal, arc);
      Object(_cartesian__WEBPACK_IMPORTED_MODULE_1__["cartesianNormalizeInPlace"])(intersection);
      var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * Object(_math__WEBPACK_IMPORTED_MODULE_2__["asin"])(intersection[2]);
      if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {
        winding += antimeridian ^ delta >= 0 ? 1 : -1;
      }
    }
  }
}

// First, determine whether the South pole is inside or outside:
//
// It is inside if:
// * the polygon winds around it in a clockwise direction.
// * the polygon does not (cumulatively) wind around it, but has a negative
//   (counter-clockwise) area.
//
// Second, count the (signed) number of times a segment crosses a lambda
// from the point to the South pole.  If it is zero, then the point is the
// same side as the South pole.

return (angle < -_math__WEBPACK_IMPORTED_MODULE_2__["epsilon"] || angle < _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"] && sum < -_math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) ^ (winding & 1);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/albers.js”: /*!******************************************************!*\

!*** ./node_modules/d3-geo/src/projection/albers.js ***!
\******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var conicEqualArea_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./conicEqualArea */ “./node_modules/d3-geo/src/projection/conicEqualArea.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_conicEqualArea__WEBPACK_IMPORTED_MODULE_0__["default"])()
    .parallels([29.5, 45.5])
    .scale(1070)
    .translate([480, 250])
    .rotate([96, 0])
    .center([-0.6, 38.7]);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/albersUsa.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-geo/src/projection/albersUsa.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var albers_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./albers */ “./node_modules/d3-geo/src/projection/albers.js”); /* harmony import */ var conicEqualArea_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./conicEqualArea */ “./node_modules/d3-geo/src/projection/conicEqualArea.js”); /* harmony import */ var fit_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./fit */ “./node_modules/d3-geo/src/projection/fit.js”);

// The projections must have mutually exclusive clip regions on the sphere, // as this will avoid emitting interleaving lines and polygons. function multiplex(streams) {

var n = streams.length;
return {
  point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },
  sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },
  lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },
  lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },
  polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },
  polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }
};

}

// A composite projection for the United States, configured by default for // 960×500. The projection also works quite well at 960×600 if you change the // scale to 1285 and adjust the translate accordingly. The set of standard // parallels for each region comes from USGS, which is published here: // egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers /* harmony default export */ webpack_exports[“default”] = (function() {

var cache,
    cacheStream,
    lower48 = Object(_albers__WEBPACK_IMPORTED_MODULE_1__["default"])(), lower48Point,
    alaska = Object(_conicEqualArea__WEBPACK_IMPORTED_MODULE_2__["default"])().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338
    hawaii = Object(_conicEqualArea__WEBPACK_IMPORTED_MODULE_2__["default"])().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007
    point, pointStream = {point: function(x, y) { point = [x, y]; }};

function albersUsa(coordinates) {
  var x = coordinates[0], y = coordinates[1];
  return point = null,
      (lower48Point.point(x, y), point)
      || (alaskaPoint.point(x, y), point)
      || (hawaiiPoint.point(x, y), point);
}

albersUsa.invert = function(coordinates) {
  var k = lower48.scale(),
      t = lower48.translate(),
      x = (coordinates[0] - t[0]) / k,
      y = (coordinates[1] - t[1]) / k;
  return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska
      : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii
      : lower48).invert(coordinates);
};

albersUsa.stream = function(stream) {
  return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);
};

albersUsa.precision = function(_) {
  if (!arguments.length) return lower48.precision();
  lower48.precision(_), alaska.precision(_), hawaii.precision(_);
  return reset();
};

albersUsa.scale = function(_) {
  if (!arguments.length) return lower48.scale();
  lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);
  return albersUsa.translate(lower48.translate());
};

albersUsa.translate = function(_) {
  if (!arguments.length) return lower48.translate();
  var k = lower48.scale(), x = +_[0], y = +_[1];

  lower48Point = lower48
      .translate(_)
      .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])
      .stream(pointStream);

  alaskaPoint = alaska
      .translate([x - 0.307 * k, y + 0.201 * k])
      .clipExtent([[x - 0.425 * k + _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"], y + 0.120 * k + _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]], [x - 0.214 * k - _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"], y + 0.234 * k - _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]]])
      .stream(pointStream);

  hawaiiPoint = hawaii
      .translate([x - 0.205 * k, y + 0.212 * k])
      .clipExtent([[x - 0.214 * k + _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"], y + 0.166 * k + _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]], [x - 0.115 * k - _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"], y + 0.234 * k - _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]]])
      .stream(pointStream);

  return reset();
};

albersUsa.fitExtent = function(extent, object) {
  return Object(_fit__WEBPACK_IMPORTED_MODULE_3__["fitExtent"])(albersUsa, extent, object);
};

albersUsa.fitSize = function(size, object) {
  return Object(_fit__WEBPACK_IMPORTED_MODULE_3__["fitSize"])(albersUsa, size, object);
};

albersUsa.fitWidth = function(width, object) {
  return Object(_fit__WEBPACK_IMPORTED_MODULE_3__["fitWidth"])(albersUsa, width, object);
};

albersUsa.fitHeight = function(height, object) {
  return Object(_fit__WEBPACK_IMPORTED_MODULE_3__["fitHeight"])(albersUsa, height, object);
};

function reset() {
  cache = cacheStream = null;
  return albersUsa;
}

return albersUsa.scale(1070);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/azimuthal.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-geo/src/projection/azimuthal.js ***!
\*********************************************************/

/*! exports provided: azimuthalRaw, azimuthalInvert */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “azimuthalRaw”, function() { return azimuthalRaw; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “azimuthalInvert”, function() { return azimuthalInvert; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”);

function azimuthalRaw(scale) {

return function(x, y) {
  var cx = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(x),
      cy = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(y),
      k = scale(cx * cy);
  return [
    k * cy * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(x),
    k * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(y)
  ];
}

}

function azimuthalInvert(angle) {

return function(x, y) {
  var z = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(x * x + y * y),
      c = angle(z),
      sc = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(c),
      cc = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(c);
  return [
    Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan2"])(x * sc, z * cc),
    Object(_math__WEBPACK_IMPORTED_MODULE_0__["asin"])(z && y * sc / z)
  ];
}

}

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/azimuthalEqualArea.js”: /*!******************************************************************!*\

!*** ./node_modules/d3-geo/src/projection/azimuthalEqualArea.js ***!
\******************************************************************/

/*! exports provided: azimuthalEqualAreaRaw, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “azimuthalEqualAreaRaw”, function() { return azimuthalEqualAreaRaw; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var azimuthal_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./azimuthal */ “./node_modules/d3-geo/src/projection/azimuthal.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./index */ “./node_modules/d3-geo/src/projection/index.js”);

var azimuthalEqualAreaRaw = Object(azimuthal_WEBPACK_IMPORTED_MODULE_1[“azimuthalRaw”])(function(cxcy) {

return Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(2 / (1 + cxcy));

});

azimuthalEqualAreaRaw.invert = Object(azimuthal_WEBPACK_IMPORTED_MODULE_1[“azimuthalInvert”])(function(z) {

return 2 * Object(_math__WEBPACK_IMPORTED_MODULE_0__["asin"])(z / 2);

});

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_index__WEBPACK_IMPORTED_MODULE_2__["default"])(azimuthalEqualAreaRaw)
    .scale(124.75)
    .clipAngle(180 - 1e-3);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/azimuthalEquidistant.js”: /*!********************************************************************!*\

!*** ./node_modules/d3-geo/src/projection/azimuthalEquidistant.js ***!
\********************************************************************/

/*! exports provided: azimuthalEquidistantRaw, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “azimuthalEquidistantRaw”, function() { return azimuthalEquidistantRaw; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var azimuthal_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./azimuthal */ “./node_modules/d3-geo/src/projection/azimuthal.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./index */ “./node_modules/d3-geo/src/projection/index.js”);

var azimuthalEquidistantRaw = Object(azimuthal_WEBPACK_IMPORTED_MODULE_1[“azimuthalRaw”])(function© {

return (c = Object(_math__WEBPACK_IMPORTED_MODULE_0__["acos"])(c)) && c / Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(c);

});

azimuthalEquidistantRaw.invert = Object(azimuthal_WEBPACK_IMPORTED_MODULE_1[“azimuthalInvert”])(function(z) {

return z;

});

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_index__WEBPACK_IMPORTED_MODULE_2__["default"])(azimuthalEquidistantRaw)
    .scale(79.4188)
    .clipAngle(180 - 1e-3);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/conic.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-geo/src/projection/conic.js ***!
\*****************************************************/

/*! exports provided: conicProjection */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “conicProjection”, function() { return conicProjection; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./index */ “./node_modules/d3-geo/src/projection/index.js”);

function conicProjection(projectAt) {

var phi0 = 0,
    phi1 = _math__WEBPACK_IMPORTED_MODULE_0__["pi"] / 3,
    m = Object(_index__WEBPACK_IMPORTED_MODULE_1__["projectionMutator"])(projectAt),
    p = m(phi0, phi1);

p.parallels = function(_) {
  return arguments.length ? m(phi0 = _[0] * _math__WEBPACK_IMPORTED_MODULE_0__["radians"], phi1 = _[1] * _math__WEBPACK_IMPORTED_MODULE_0__["radians"]) : [phi0 * _math__WEBPACK_IMPORTED_MODULE_0__["degrees"], phi1 * _math__WEBPACK_IMPORTED_MODULE_0__["degrees"]];
};

return p;

}

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/conicConformal.js”: /*!**************************************************************!*\

!*** ./node_modules/d3-geo/src/projection/conicConformal.js ***!
\**************************************************************/

/*! exports provided: conicConformalRaw, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “conicConformalRaw”, function() { return conicConformalRaw; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var conic_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./conic */ “./node_modules/d3-geo/src/projection/conic.js”); /* harmony import */ var mercator_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./mercator */ “./node_modules/d3-geo/src/projection/mercator.js”);

function tany(y) {

return Object(_math__WEBPACK_IMPORTED_MODULE_0__["tan"])((_math__WEBPACK_IMPORTED_MODULE_0__["halfPi"] + y) / 2);

}

function conicConformalRaw(y0, y1) {

var cy0 = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(y0),
    n = y0 === y1 ? Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(y0) : Object(_math__WEBPACK_IMPORTED_MODULE_0__["log"])(cy0 / Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(y1)) / Object(_math__WEBPACK_IMPORTED_MODULE_0__["log"])(tany(y1) / tany(y0)),
    f = cy0 * Object(_math__WEBPACK_IMPORTED_MODULE_0__["pow"])(tany(y0), n) / n;

if (!n) return _mercator__WEBPACK_IMPORTED_MODULE_2__["mercatorRaw"];

function project(x, y) {
  if (f > 0) { if (y < -_math__WEBPACK_IMPORTED_MODULE_0__["halfPi"] + _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) y = -_math__WEBPACK_IMPORTED_MODULE_0__["halfPi"] + _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]; }
  else { if (y > _math__WEBPACK_IMPORTED_MODULE_0__["halfPi"] - _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) y = _math__WEBPACK_IMPORTED_MODULE_0__["halfPi"] - _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]; }
  var r = f / Object(_math__WEBPACK_IMPORTED_MODULE_0__["pow"])(tany(y), n);
  return [r * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(n * x), f - r * Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(n * x)];
}

project.invert = function(x, y) {
  var fy = f - y, r = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sign"])(n) * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(x * x + fy * fy);
  return [Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan2"])(x, Object(_math__WEBPACK_IMPORTED_MODULE_0__["abs"])(fy)) / n * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sign"])(fy), 2 * Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan"])(Object(_math__WEBPACK_IMPORTED_MODULE_0__["pow"])(f / r, 1 / n)) - _math__WEBPACK_IMPORTED_MODULE_0__["halfPi"]];
};

return project;

}

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_conic__WEBPACK_IMPORTED_MODULE_1__["conicProjection"])(conicConformalRaw)
    .scale(109.5)
    .parallels([30, 30]);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/conicEqualArea.js”: /*!**************************************************************!*\

!*** ./node_modules/d3-geo/src/projection/conicEqualArea.js ***!
\**************************************************************/

/*! exports provided: conicEqualAreaRaw, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “conicEqualAreaRaw”, function() { return conicEqualAreaRaw; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var conic_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./conic */ “./node_modules/d3-geo/src/projection/conic.js”); /* harmony import */ var cylindricalEqualArea_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./cylindricalEqualArea */ “./node_modules/d3-geo/src/projection/cylindricalEqualArea.js”);

function conicEqualAreaRaw(y0, y1) {

var sy0 = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(y0), n = (sy0 + Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(y1)) / 2;

// Are the parallels symmetrical around the Equator?
if (Object(_math__WEBPACK_IMPORTED_MODULE_0__["abs"])(n) < _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) return Object(_cylindricalEqualArea__WEBPACK_IMPORTED_MODULE_2__["cylindricalEqualAreaRaw"])(y0);

var c = 1 + sy0 * (2 * n - sy0), r0 = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(c) / n;

function project(x, y) {
  var r = Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(c - 2 * n * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(y)) / n;
  return [r * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(x *= n), r0 - r * Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(x)];
}

project.invert = function(x, y) {
  var r0y = r0 - y;
  return [Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan2"])(x, Object(_math__WEBPACK_IMPORTED_MODULE_0__["abs"])(r0y)) / n * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sign"])(r0y), Object(_math__WEBPACK_IMPORTED_MODULE_0__["asin"])((c - (x * x + r0y * r0y) * n * n) / (2 * n))];
};

return project;

}

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_conic__WEBPACK_IMPORTED_MODULE_1__["conicProjection"])(conicEqualAreaRaw)
    .scale(155.424)
    .center([0, 33.6442]);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/conicEquidistant.js”: /*!****************************************************************!*\

!*** ./node_modules/d3-geo/src/projection/conicEquidistant.js ***!
\****************************************************************/

/*! exports provided: conicEquidistantRaw, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “conicEquidistantRaw”, function() { return conicEquidistantRaw; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var conic_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./conic */ “./node_modules/d3-geo/src/projection/conic.js”); /* harmony import */ var equirectangular_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./equirectangular */ “./node_modules/d3-geo/src/projection/equirectangular.js”);

function conicEquidistantRaw(y0, y1) {

var cy0 = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(y0),
    n = y0 === y1 ? Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(y0) : (cy0 - Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(y1)) / (y1 - y0),
    g = cy0 / n + y0;

if (Object(_math__WEBPACK_IMPORTED_MODULE_0__["abs"])(n) < _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) return _equirectangular__WEBPACK_IMPORTED_MODULE_2__["equirectangularRaw"];

function project(x, y) {
  var gy = g - y, nx = n * x;
  return [gy * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(nx), g - gy * Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(nx)];
}

project.invert = function(x, y) {
  var gy = g - y;
  return [Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan2"])(x, Object(_math__WEBPACK_IMPORTED_MODULE_0__["abs"])(gy)) / n * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sign"])(gy), g - Object(_math__WEBPACK_IMPORTED_MODULE_0__["sign"])(n) * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sqrt"])(x * x + gy * gy)];
};

return project;

}

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_conic__WEBPACK_IMPORTED_MODULE_1__["conicProjection"])(conicEquidistantRaw)
    .scale(131.154)
    .center([0, 13.9389]);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/cylindricalEqualArea.js”: /*!********************************************************************!*\

!*** ./node_modules/d3-geo/src/projection/cylindricalEqualArea.js ***!
\********************************************************************/

/*! exports provided: cylindricalEqualAreaRaw */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cylindricalEqualAreaRaw”, function() { return cylindricalEqualAreaRaw; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”);

function cylindricalEqualAreaRaw(phi0) {

var cosPhi0 = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(phi0);

function forward(lambda, phi) {
  return [lambda * cosPhi0, Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(phi) / cosPhi0];
}

forward.invert = function(x, y) {
  return [x / cosPhi0, Object(_math__WEBPACK_IMPORTED_MODULE_0__["asin"])(y * cosPhi0)];
};

return forward;

}

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/equirectangular.js”: /*!***************************************************************!*\

!*** ./node_modules/d3-geo/src/projection/equirectangular.js ***!
\***************************************************************/

/*! exports provided: equirectangularRaw, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “equirectangularRaw”, function() { return equirectangularRaw; }); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./index */ “./node_modules/d3-geo/src/projection/index.js”);

function equirectangularRaw(lambda, phi) {

return [lambda, phi];

}

equirectangularRaw.invert = equirectangularRaw;

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_index__WEBPACK_IMPORTED_MODULE_0__["default"])(equirectangularRaw)
    .scale(152.63);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/fit.js”: /*!***************************************************!*\

!*** ./node_modules/d3-geo/src/projection/fit.js ***!
\***************************************************/

/*! exports provided: fitExtent, fitSize, fitWidth, fitHeight */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “fitExtent”, function() { return fitExtent; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “fitSize”, function() { return fitSize; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “fitWidth”, function() { return fitWidth; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “fitHeight”, function() { return fitHeight; }); /* harmony import */ var stream_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../stream */ “./node_modules/d3-geo/src/stream.js”); /* harmony import */ var path_bounds_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../path/bounds */ “./node_modules/d3-geo/src/path/bounds.js”);

function fit(projection, fitBounds, object) {

var clip = projection.clipExtent && projection.clipExtent();
projection.scale(150).translate([0, 0]);
if (clip != null) projection.clipExtent(null);
Object(_stream__WEBPACK_IMPORTED_MODULE_0__["default"])(object, projection.stream(_path_bounds__WEBPACK_IMPORTED_MODULE_1__["default"]));
fitBounds(_path_bounds__WEBPACK_IMPORTED_MODULE_1__["default"].result());
if (clip != null) projection.clipExtent(clip);
return projection;

}

function fitExtent(projection, extent, object) {

return fit(projection, function(b) {
  var w = extent[1][0] - extent[0][0],
      h = extent[1][1] - extent[0][1],
      k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),
      x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,
      y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;
  projection.scale(150 * k).translate([x, y]);
}, object);

}

function fitSize(projection, size, object) {

return fitExtent(projection, [[0, 0], size], object);

}

function fitWidth(projection, width, object) {

return fit(projection, function(b) {
  var w = +width,
      k = w / (b[1][0] - b[0][0]),
      x = (w - k * (b[1][0] + b[0][0])) / 2,
      y = -k * b[0][1];
  projection.scale(150 * k).translate([x, y]);
}, object);

}

function fitHeight(projection, height, object) {

return fit(projection, function(b) {
  var h = +height,
      k = h / (b[1][1] - b[0][1]),
      x = -k * b[0][0],
      y = (h - k * (b[1][1] + b[0][1])) / 2;
  projection.scale(150 * k).translate([x, y]);
}, object);

}

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/gnomonic.js”: /*!********************************************************!*\

!*** ./node_modules/d3-geo/src/projection/gnomonic.js ***!
\********************************************************/

/*! exports provided: gnomonicRaw, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “gnomonicRaw”, function() { return gnomonicRaw; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var azimuthal_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./azimuthal */ “./node_modules/d3-geo/src/projection/azimuthal.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./index */ “./node_modules/d3-geo/src/projection/index.js”);

function gnomonicRaw(x, y) {

var cy = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(y), k = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(x) * cy;
return [cy * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(x) / k, Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(y) / k];

}

gnomonicRaw.invert = Object(azimuthal_WEBPACK_IMPORTED_MODULE_1[“azimuthalInvert”])(math_WEBPACK_IMPORTED_MODULE_0[“atan”]);

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_index__WEBPACK_IMPORTED_MODULE_2__["default"])(gnomonicRaw)
    .scale(144.049)
    .clipAngle(60);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/identity.js”: /*!********************************************************!*\

!*** ./node_modules/d3-geo/src/projection/identity.js ***!
\********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var clip_rectangle_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../clip/rectangle */ “./node_modules/d3-geo/src/clip/rectangle.js”); /* harmony import */ var identity_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../identity */ “./node_modules/d3-geo/src/identity.js”); /* harmony import */ var transform_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ../transform */ “./node_modules/d3-geo/src/transform.js”); /* harmony import */ var fit_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./fit */ “./node_modules/d3-geo/src/projection/fit.js”);

function scaleTranslate(kx, ky, tx, ty) {

return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? _identity__WEBPACK_IMPORTED_MODULE_1__["default"] : Object(_transform__WEBPACK_IMPORTED_MODULE_2__["transformer"])({
  point: function(x, y) {
    this.stream.point(x * kx + tx, y * ky + ty);
  }
});

}

/* harmony default export */ webpack_exports[“default”] = (function() {

var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = _identity__WEBPACK_IMPORTED_MODULE_1__["default"], // scale, translate and reflect
    x0 = null, y0, x1, y1, // clip extent
    postclip = _identity__WEBPACK_IMPORTED_MODULE_1__["default"],
    cache,
    cacheStream,
    projection;

function reset() {
  cache = cacheStream = null;
  return projection;
}

return projection = {
  stream: function(stream) {
    return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));
  },
  postclip: function(_) {
    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;
  },
  clipExtent: function(_) {
    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, _identity__WEBPACK_IMPORTED_MODULE_1__["default"]) : Object(_clip_rectangle__WEBPACK_IMPORTED_MODULE_0__["default"])(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];
  },
  scale: function(_) {
    return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;
  },
  translate: function(_) {
    return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];
  },
  reflectX: function(_) {
    return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;
  },
  reflectY: function(_) {
    return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;
  },
  fitExtent: function(extent, object) {
    return Object(_fit__WEBPACK_IMPORTED_MODULE_3__["fitExtent"])(projection, extent, object);
  },
  fitSize: function(size, object) {
    return Object(_fit__WEBPACK_IMPORTED_MODULE_3__["fitSize"])(projection, size, object);
  },
  fitWidth: function(width, object) {
    return Object(_fit__WEBPACK_IMPORTED_MODULE_3__["fitWidth"])(projection, width, object);
  },
  fitHeight: function(height, object) {
    return Object(_fit__WEBPACK_IMPORTED_MODULE_3__["fitHeight"])(projection, height, object);
  }
};

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/index.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-geo/src/projection/index.js ***!
\*****************************************************/

/*! exports provided: default, projectionMutator */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return projection; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “projectionMutator”, function() { return projectionMutator; }); /* harmony import */ var clip_antimeridian_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../clip/antimeridian */ “./node_modules/d3-geo/src/clip/antimeridian.js”); /* harmony import */ var clip_circle_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../clip/circle */ “./node_modules/d3-geo/src/clip/circle.js”); /* harmony import */ var clip_rectangle_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ../clip/rectangle */ “./node_modules/d3-geo/src/clip/rectangle.js”); /* harmony import */ var compose_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ../compose */ “./node_modules/d3-geo/src/compose.js”); /* harmony import */ var identity_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ../identity */ “./node_modules/d3-geo/src/identity.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var rotation_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ../rotation */ “./node_modules/d3-geo/src/rotation.js”); /* harmony import */ var transform_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ../transform */ “./node_modules/d3-geo/src/transform.js”); /* harmony import */ var fit_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./fit */ “./node_modules/d3-geo/src/projection/fit.js”); /* harmony import */ var resample_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./resample */ “./node_modules/d3-geo/src/projection/resample.js”);

var transformRadians = Object(transform_WEBPACK_IMPORTED_MODULE_7[“transformer”])({

point: function(x, y) {
  this.stream.point(x * _math__WEBPACK_IMPORTED_MODULE_5__["radians"], y * _math__WEBPACK_IMPORTED_MODULE_5__["radians"]);
}

});

function transformRotate(rotate) {

return Object(_transform__WEBPACK_IMPORTED_MODULE_7__["transformer"])({
  point: function(x, y) {
    var r = rotate(x, y);
    return this.stream.point(r[0], r[1]);
  }
});

}

function projection(project) {

return projectionMutator(function() { return project; })();

}

function projectionMutator(projectAt) {

var project,
    k = 150, // scale
    x = 480, y = 250, // translate
    dx, dy, lambda = 0, phi = 0, // center
    deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate
    theta = null, preclip = _clip_antimeridian__WEBPACK_IMPORTED_MODULE_0__["default"], // clip angle
    x0 = null, y0, x1, y1, postclip = _identity__WEBPACK_IMPORTED_MODULE_4__["default"], // clip extent
    delta2 = 0.5, projectResample = Object(_resample__WEBPACK_IMPORTED_MODULE_9__["default"])(projectTransform, delta2), // precision
    cache,
    cacheStream;

function projection(point) {
  point = projectRotate(point[0] * _math__WEBPACK_IMPORTED_MODULE_5__["radians"], point[1] * _math__WEBPACK_IMPORTED_MODULE_5__["radians"]);
  return [point[0] * k + dx, dy - point[1] * k];
}

function invert(point) {
  point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);
  return point && [point[0] * _math__WEBPACK_IMPORTED_MODULE_5__["degrees"], point[1] * _math__WEBPACK_IMPORTED_MODULE_5__["degrees"]];
}

function projectTransform(x, y) {
  return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];
}

projection.stream = function(stream) {
  return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));
};

projection.preclip = function(_) {
  return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;
};

projection.postclip = function(_) {
  return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;
};

projection.clipAngle = function(_) {
  return arguments.length ? (preclip = +_ ? Object(_clip_circle__WEBPACK_IMPORTED_MODULE_1__["default"])(theta = _ * _math__WEBPACK_IMPORTED_MODULE_5__["radians"]) : (theta = null, _clip_antimeridian__WEBPACK_IMPORTED_MODULE_0__["default"]), reset()) : theta * _math__WEBPACK_IMPORTED_MODULE_5__["degrees"];
};

projection.clipExtent = function(_) {
  return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, _identity__WEBPACK_IMPORTED_MODULE_4__["default"]) : Object(_clip_rectangle__WEBPACK_IMPORTED_MODULE_2__["default"])(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];
};

projection.scale = function(_) {
  return arguments.length ? (k = +_, recenter()) : k;
};

projection.translate = function(_) {
  return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];
};

projection.center = function(_) {
  return arguments.length ? (lambda = _[0] % 360 * _math__WEBPACK_IMPORTED_MODULE_5__["radians"], phi = _[1] % 360 * _math__WEBPACK_IMPORTED_MODULE_5__["radians"], recenter()) : [lambda * _math__WEBPACK_IMPORTED_MODULE_5__["degrees"], phi * _math__WEBPACK_IMPORTED_MODULE_5__["degrees"]];
};

projection.rotate = function(_) {
  return arguments.length ? (deltaLambda = _[0] % 360 * _math__WEBPACK_IMPORTED_MODULE_5__["radians"], deltaPhi = _[1] % 360 * _math__WEBPACK_IMPORTED_MODULE_5__["radians"], deltaGamma = _.length > 2 ? _[2] % 360 * _math__WEBPACK_IMPORTED_MODULE_5__["radians"] : 0, recenter()) : [deltaLambda * _math__WEBPACK_IMPORTED_MODULE_5__["degrees"], deltaPhi * _math__WEBPACK_IMPORTED_MODULE_5__["degrees"], deltaGamma * _math__WEBPACK_IMPORTED_MODULE_5__["degrees"]];
};

projection.precision = function(_) {
  return arguments.length ? (projectResample = Object(_resample__WEBPACK_IMPORTED_MODULE_9__["default"])(projectTransform, delta2 = _ * _), reset()) : Object(_math__WEBPACK_IMPORTED_MODULE_5__["sqrt"])(delta2);
};

projection.fitExtent = function(extent, object) {
  return Object(_fit__WEBPACK_IMPORTED_MODULE_8__["fitExtent"])(projection, extent, object);
};

projection.fitSize = function(size, object) {
  return Object(_fit__WEBPACK_IMPORTED_MODULE_8__["fitSize"])(projection, size, object);
};

projection.fitWidth = function(width, object) {
  return Object(_fit__WEBPACK_IMPORTED_MODULE_8__["fitWidth"])(projection, width, object);
};

projection.fitHeight = function(height, object) {
  return Object(_fit__WEBPACK_IMPORTED_MODULE_8__["fitHeight"])(projection, height, object);
};

function recenter() {
  projectRotate = Object(_compose__WEBPACK_IMPORTED_MODULE_3__["default"])(rotate = Object(_rotation__WEBPACK_IMPORTED_MODULE_6__["rotateRadians"])(deltaLambda, deltaPhi, deltaGamma), project);
  var center = project(lambda, phi);
  dx = x - center[0] * k;
  dy = y + center[1] * k;
  return reset();
}

function reset() {
  cache = cacheStream = null;
  return projection;
}

return function() {
  project = projectAt.apply(this, arguments);
  projection.invert = project.invert && invert;
  return recenter();
};

}

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/mercator.js”: /*!********************************************************!*\

!*** ./node_modules/d3-geo/src/projection/mercator.js ***!
\********************************************************/

/*! exports provided: mercatorRaw, default, mercatorProjection */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “mercatorRaw”, function() { return mercatorRaw; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “mercatorProjection”, function() { return mercatorProjection; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var rotation_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../rotation */ “./node_modules/d3-geo/src/rotation.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./index */ “./node_modules/d3-geo/src/projection/index.js”);

function mercatorRaw(lambda, phi) {

return [lambda, Object(_math__WEBPACK_IMPORTED_MODULE_0__["log"])(Object(_math__WEBPACK_IMPORTED_MODULE_0__["tan"])((_math__WEBPACK_IMPORTED_MODULE_0__["halfPi"] + phi) / 2))];

}

mercatorRaw.invert = function(x, y) {

return [x, 2 * Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan"])(Object(_math__WEBPACK_IMPORTED_MODULE_0__["exp"])(y)) - _math__WEBPACK_IMPORTED_MODULE_0__["halfPi"]];

};

/* harmony default export */ webpack_exports[“default”] = (function() {

return mercatorProjection(mercatorRaw)
    .scale(961 / _math__WEBPACK_IMPORTED_MODULE_0__["tau"]);

});

function mercatorProjection(project) {

var m = Object(_index__WEBPACK_IMPORTED_MODULE_2__["default"])(project),
    center = m.center,
    scale = m.scale,
    translate = m.translate,
    clipExtent = m.clipExtent,
    x0 = null, y0, x1, y1; // clip extent

m.scale = function(_) {
  return arguments.length ? (scale(_), reclip()) : scale();
};

m.translate = function(_) {
  return arguments.length ? (translate(_), reclip()) : translate();
};

m.center = function(_) {
  return arguments.length ? (center(_), reclip()) : center();
};

m.clipExtent = function(_) {
  return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];
};

function reclip() {
  var k = _math__WEBPACK_IMPORTED_MODULE_0__["pi"] * scale(),
      t = m(Object(_rotation__WEBPACK_IMPORTED_MODULE_1__["default"])(m.rotate()).invert([0, 0]));
  return clipExtent(x0 == null
      ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw
      ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]
      : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);
}

return reclip();

}

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/naturalEarth1.js”: /*!*************************************************************!*\

!*** ./node_modules/d3-geo/src/projection/naturalEarth1.js ***!
\*************************************************************/

/*! exports provided: naturalEarth1Raw, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “naturalEarth1Raw”, function() { return naturalEarth1Raw; }); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./index */ “./node_modules/d3-geo/src/projection/index.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”);

function naturalEarth1Raw(lambda, phi) {

var phi2 = phi * phi, phi4 = phi2 * phi2;
return [
  lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),
  phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))
];

}

naturalEarth1Raw.invert = function(x, y) {

var phi = y, i = 25, delta;
do {
  var phi2 = phi * phi, phi4 = phi2 * phi2;
  phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /
      (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));
} while (Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(delta) > _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"] && --i > 0);
return [
  x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),
  phi
];

};

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_index__WEBPACK_IMPORTED_MODULE_0__["default"])(naturalEarth1Raw)
    .scale(175.295);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/orthographic.js”: /*!************************************************************!*\

!*** ./node_modules/d3-geo/src/projection/orthographic.js ***!
\************************************************************/

/*! exports provided: orthographicRaw, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “orthographicRaw”, function() { return orthographicRaw; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var azimuthal_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./azimuthal */ “./node_modules/d3-geo/src/projection/azimuthal.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./index */ “./node_modules/d3-geo/src/projection/index.js”);

function orthographicRaw(x, y) {

return [Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(y) * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(x), Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(y)];

}

orthographicRaw.invert = Object(azimuthal_WEBPACK_IMPORTED_MODULE_1[“azimuthalInvert”])(math_WEBPACK_IMPORTED_MODULE_0[“asin”]);

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_index__WEBPACK_IMPORTED_MODULE_2__["default"])(orthographicRaw)
    .scale(249.5)
    .clipAngle(90 + _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/resample.js”: /*!********************************************************!*\

!*** ./node_modules/d3-geo/src/projection/resample.js ***!
\********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var cartesian_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../cartesian */ “./node_modules/d3-geo/src/cartesian.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var transform_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ../transform */ “./node_modules/d3-geo/src/transform.js”);

var maxDepth = 16, // maximum depth of subdivision

cosMinDistance = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(30 * _math__WEBPACK_IMPORTED_MODULE_1__["radians"]); // cos(minimum angular distance)

/* harmony default export */ webpack_exports[“default”] = (function(project, delta2) {

return +delta2 ? resample(project, delta2) : resampleNone(project);

});

function resampleNone(project) {

return Object(_transform__WEBPACK_IMPORTED_MODULE_2__["transformer"])({
  point: function(x, y) {
    x = project(x, y);
    this.stream.point(x[0], x[1]);
  }
});

}

function resample(project, delta2) {

function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {
  var dx = x1 - x0,
      dy = y1 - y0,
      d2 = dx * dx + dy * dy;
  if (d2 > 4 * delta2 && depth--) {
    var a = a0 + a1,
        b = b0 + b1,
        c = c0 + c1,
        m = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sqrt"])(a * a + b * b + c * c),
        phi2 = Object(_math__WEBPACK_IMPORTED_MODULE_1__["asin"])(c /= m),
        lambda2 = Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(c) - 1) < _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"] || Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])(lambda0 - lambda1) < _math__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? (lambda0 + lambda1) / 2 : Object(_math__WEBPACK_IMPORTED_MODULE_1__["atan2"])(b, a),
        p = project(lambda2, phi2),
        x2 = p[0],
        y2 = p[1],
        dx2 = x2 - x0,
        dy2 = y2 - y0,
        dz = dy * dx2 - dx * dy2;
    if (dz * dz / d2 > delta2 // perpendicular projected distance
        || Object(_math__WEBPACK_IMPORTED_MODULE_1__["abs"])((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end
        || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance
      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);
      stream.point(x2, y2);
      resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);
    }
  }
}
return function(stream) {
  var lambda00, x00, y00, a00, b00, c00, // first point
      lambda0, x0, y0, a0, b0, c0; // previous point

  var resampleStream = {
    point: point,
    lineStart: lineStart,
    lineEnd: lineEnd,
    polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },
    polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }
  };

  function point(x, y) {
    x = project(x, y);
    stream.point(x[0], x[1]);
  }

  function lineStart() {
    x0 = NaN;
    resampleStream.point = linePoint;
    stream.lineStart();
  }

  function linePoint(lambda, phi) {
    var c = Object(_cartesian__WEBPACK_IMPORTED_MODULE_0__["cartesian"])([lambda, phi]), p = project(lambda, phi);
    resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
    stream.point(x0, y0);
  }

  function lineEnd() {
    resampleStream.point = point;
    stream.lineEnd();
  }

  function ringStart() {
    lineStart();
    resampleStream.point = ringPoint;
    resampleStream.lineEnd = ringEnd;
  }

  function ringPoint(lambda, phi) {
    linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
    resampleStream.point = linePoint;
  }

  function ringEnd() {
    resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);
    resampleStream.lineEnd = lineEnd;
    lineEnd();
  }

  return resampleStream;
};

}

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/stereographic.js”: /*!*************************************************************!*\

!*** ./node_modules/d3-geo/src/projection/stereographic.js ***!
\*************************************************************/

/*! exports provided: stereographicRaw, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “stereographicRaw”, function() { return stereographicRaw; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var azimuthal_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./azimuthal */ “./node_modules/d3-geo/src/projection/azimuthal.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./index */ “./node_modules/d3-geo/src/projection/index.js”);

function stereographicRaw(x, y) {

var cy = Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(y), k = 1 + Object(_math__WEBPACK_IMPORTED_MODULE_0__["cos"])(x) * cy;
return [cy * Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(x) / k, Object(_math__WEBPACK_IMPORTED_MODULE_0__["sin"])(y) / k];

}

stereographicRaw.invert = Object(azimuthal_WEBPACK_IMPORTED_MODULE_1[“azimuthalInvert”])(function(z) {

return 2 * Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan"])(z);

});

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_index__WEBPACK_IMPORTED_MODULE_2__["default"])(stereographicRaw)
    .scale(250)
    .clipAngle(142);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/projection/transverseMercator.js”: /*!******************************************************************!*\

!*** ./node_modules/d3-geo/src/projection/transverseMercator.js ***!
\******************************************************************/

/*! exports provided: transverseMercatorRaw, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “transverseMercatorRaw”, function() { return transverseMercatorRaw; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-geo/src/math.js”); /* harmony import */ var mercator_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./mercator */ “./node_modules/d3-geo/src/projection/mercator.js”);

function transverseMercatorRaw(lambda, phi) {

return [Object(_math__WEBPACK_IMPORTED_MODULE_0__["log"])(Object(_math__WEBPACK_IMPORTED_MODULE_0__["tan"])((_math__WEBPACK_IMPORTED_MODULE_0__["halfPi"] + phi) / 2)), -lambda];

}

transverseMercatorRaw.invert = function(x, y) {

return [-y, 2 * Object(_math__WEBPACK_IMPORTED_MODULE_0__["atan"])(Object(_math__WEBPACK_IMPORTED_MODULE_0__["exp"])(x)) - _math__WEBPACK_IMPORTED_MODULE_0__["halfPi"]];

};

/* harmony default export */ webpack_exports[“default”] = (function() {

var m = Object(_mercator__WEBPACK_IMPORTED_MODULE_1__["mercatorProjection"])(transverseMercatorRaw),
    center = m.center,
    rotate = m.rotate;

m.center = function(_) {
  return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);
};

m.rotate = function(_) {
  return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);
};

return rotate([0, 0, 90])
    .scale(159.155);

});

/***/ }),

/***/ “./node_modules/d3-geo/src/rotation.js”: /*!*********************************************!*\

!*** ./node_modules/d3-geo/src/rotation.js ***!
\*********************************************/

/*! exports provided: rotateRadians, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “rotateRadians”, function() { return rotateRadians; }); /* harmony import */ var compose_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./compose */ “./node_modules/d3-geo/src/compose.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./math */ “./node_modules/d3-geo/src/math.js”);

function rotationIdentity(lambda, phi) {

return [lambda > _math__WEBPACK_IMPORTED_MODULE_1__["pi"] ? lambda - _math__WEBPACK_IMPORTED_MODULE_1__["tau"] : lambda < -_math__WEBPACK_IMPORTED_MODULE_1__["pi"] ? lambda + _math__WEBPACK_IMPORTED_MODULE_1__["tau"] : lambda, phi];

}

rotationIdentity.invert = rotationIdentity;

function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {

return (deltaLambda %= _math__WEBPACK_IMPORTED_MODULE_1__["tau"]) ? (deltaPhi || deltaGamma ? Object(_compose__WEBPACK_IMPORTED_MODULE_0__["default"])(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))
  : rotationLambda(deltaLambda))
  : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)
  : rotationIdentity);

}

function forwardRotationLambda(deltaLambda) {

return function(lambda, phi) {
  return lambda += deltaLambda, [lambda > _math__WEBPACK_IMPORTED_MODULE_1__["pi"] ? lambda - _math__WEBPACK_IMPORTED_MODULE_1__["tau"] : lambda < -_math__WEBPACK_IMPORTED_MODULE_1__["pi"] ? lambda + _math__WEBPACK_IMPORTED_MODULE_1__["tau"] : lambda, phi];
};

}

function rotationLambda(deltaLambda) {

var rotation = forwardRotationLambda(deltaLambda);
rotation.invert = forwardRotationLambda(-deltaLambda);
return rotation;

}

function rotationPhiGamma(deltaPhi, deltaGamma) {

var cosDeltaPhi = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(deltaPhi),
    sinDeltaPhi = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(deltaPhi),
    cosDeltaGamma = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(deltaGamma),
    sinDeltaGamma = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(deltaGamma);

function rotation(lambda, phi) {
  var cosPhi = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi),
      x = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(lambda) * cosPhi,
      y = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(lambda) * cosPhi,
      z = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi),
      k = z * cosDeltaPhi + x * sinDeltaPhi;
  return [
    Object(_math__WEBPACK_IMPORTED_MODULE_1__["atan2"])(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),
    Object(_math__WEBPACK_IMPORTED_MODULE_1__["asin"])(k * cosDeltaGamma + y * sinDeltaGamma)
  ];
}

rotation.invert = function(lambda, phi) {
  var cosPhi = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(phi),
      x = Object(_math__WEBPACK_IMPORTED_MODULE_1__["cos"])(lambda) * cosPhi,
      y = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(lambda) * cosPhi,
      z = Object(_math__WEBPACK_IMPORTED_MODULE_1__["sin"])(phi),
      k = z * cosDeltaGamma - y * sinDeltaGamma;
  return [
    Object(_math__WEBPACK_IMPORTED_MODULE_1__["atan2"])(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),
    Object(_math__WEBPACK_IMPORTED_MODULE_1__["asin"])(k * cosDeltaPhi - x * sinDeltaPhi)
  ];
};

return rotation;

}

/* harmony default export */ webpack_exports[“default”] = (function(rotate) {

rotate = rotateRadians(rotate[0] * _math__WEBPACK_IMPORTED_MODULE_1__["radians"], rotate[1] * _math__WEBPACK_IMPORTED_MODULE_1__["radians"], rotate.length > 2 ? rotate[2] * _math__WEBPACK_IMPORTED_MODULE_1__["radians"] : 0);

function forward(coordinates) {
  coordinates = rotate(coordinates[0] * _math__WEBPACK_IMPORTED_MODULE_1__["radians"], coordinates[1] * _math__WEBPACK_IMPORTED_MODULE_1__["radians"]);
  return coordinates[0] *= _math__WEBPACK_IMPORTED_MODULE_1__["degrees"], coordinates[1] *= _math__WEBPACK_IMPORTED_MODULE_1__["degrees"], coordinates;
}

forward.invert = function(coordinates) {
  coordinates = rotate.invert(coordinates[0] * _math__WEBPACK_IMPORTED_MODULE_1__["radians"], coordinates[1] * _math__WEBPACK_IMPORTED_MODULE_1__["radians"]);
  return coordinates[0] *= _math__WEBPACK_IMPORTED_MODULE_1__["degrees"], coordinates[1] *= _math__WEBPACK_IMPORTED_MODULE_1__["degrees"], coordinates;
};

return forward;

});

/***/ }),

/***/ “./node_modules/d3-geo/src/stream.js”: /*!*******************************************!*\

!*** ./node_modules/d3-geo/src/stream.js ***!
\*******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function streamGeometry(geometry, stream) {

if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {
  streamGeometryType[geometry.type](geometry, stream);
}

}

var streamObjectType = {

Feature: function(object, stream) {
  streamGeometry(object.geometry, stream);
},
FeatureCollection: function(object, stream) {
  var features = object.features, i = -1, n = features.length;
  while (++i < n) streamGeometry(features[i].geometry, stream);
}

};

var streamGeometryType = {

Sphere: function(object, stream) {
  stream.sphere();
},
Point: function(object, stream) {
  object = object.coordinates;
  stream.point(object[0], object[1], object[2]);
},
MultiPoint: function(object, stream) {
  var coordinates = object.coordinates, i = -1, n = coordinates.length;
  while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);
},
LineString: function(object, stream) {
  streamLine(object.coordinates, stream, 0);
},
MultiLineString: function(object, stream) {
  var coordinates = object.coordinates, i = -1, n = coordinates.length;
  while (++i < n) streamLine(coordinates[i], stream, 0);
},
Polygon: function(object, stream) {
  streamPolygon(object.coordinates, stream);
},
MultiPolygon: function(object, stream) {
  var coordinates = object.coordinates, i = -1, n = coordinates.length;
  while (++i < n) streamPolygon(coordinates[i], stream);
},
GeometryCollection: function(object, stream) {
  var geometries = object.geometries, i = -1, n = geometries.length;
  while (++i < n) streamGeometry(geometries[i], stream);
}

};

function streamLine(coordinates, stream, closed) {

var i = -1, n = coordinates.length - closed, coordinate;
stream.lineStart();
while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);
stream.lineEnd();

}

function streamPolygon(coordinates, stream) {

var i = -1, n = coordinates.length;
stream.polygonStart();
while (++i < n) streamLine(coordinates[i], stream, 1);
stream.polygonEnd();

}

/* harmony default export */ webpack_exports[“default”] = (function(object, stream) {

if (object && streamObjectType.hasOwnProperty(object.type)) {
  streamObjectType[object.type](object, stream);
} else {
  streamGeometry(object, stream);
}

});

/***/ }),

/***/ “./node_modules/d3-geo/src/transform.js”: /*!**********************************************!*\

!*** ./node_modules/d3-geo/src/transform.js ***!
\**********************************************/

/*! exports provided: default, transformer */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “transformer”, function() { return transformer; }); /* harmony default export */ webpack_exports[“default”] = (function(methods) {

return {
  stream: transformer(methods)
};

});

function transformer(methods) {

return function(stream) {
  var s = new TransformStream;
  for (var key in methods) s[key] = methods[key];
  s.stream = stream;
  return s;
};

}

function TransformStream() {}

TransformStream.prototype = {

constructor: TransformStream,
point: function(x, y) { this.stream.point(x, y); },
sphere: function() { this.stream.sphere(); },
lineStart: function() { this.stream.lineStart(); },
lineEnd: function() { this.stream.lineEnd(); },
polygonStart: function() { this.stream.polygonStart(); },
polygonEnd: function() { this.stream.polygonEnd(); }

};

/***/ }),

/***/ “./node_modules/d3-hierarchy/index.js”: /*!********************************************!*\

!*** ./node_modules/d3-hierarchy/index.js ***!
\********************************************/

/*! exports provided: cluster, hierarchy, pack, packSiblings, packEnclose, partition, stratify, tree, treemap, treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_cluster_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/cluster */ “./node_modules/d3-hierarchy/src/cluster.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “cluster”, function() { return src_cluster_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_hierarchy_index_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/hierarchy/index */ “./node_modules/d3-hierarchy/src/hierarchy/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “hierarchy”, function() { return src_hierarchy_index_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_pack_index_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/pack/index */ “./node_modules/d3-hierarchy/src/pack/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “pack”, function() { return src_pack_index_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_pack_siblings_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/pack/siblings */ “./node_modules/d3-hierarchy/src/pack/siblings.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “packSiblings”, function() { return src_pack_siblings_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_pack_enclose_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/pack/enclose */ “./node_modules/d3-hierarchy/src/pack/enclose.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “packEnclose”, function() { return src_pack_enclose_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony import */ var src_partition_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/partition */ “./node_modules/d3-hierarchy/src/partition.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “partition”, function() { return src_partition_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/* harmony import */ var src_stratify_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./src/stratify */ “./node_modules/d3-hierarchy/src/stratify.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stratify”, function() { return src_stratify_WEBPACK_IMPORTED_MODULE_6[“default”]; });

/* harmony import */ var src_tree_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./src/tree */ “./node_modules/d3-hierarchy/src/tree.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tree”, function() { return src_tree_WEBPACK_IMPORTED_MODULE_7[“default”]; });

/* harmony import */ var src_treemap_index_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./src/treemap/index */ “./node_modules/d3-hierarchy/src/treemap/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemap”, function() { return src_treemap_index_WEBPACK_IMPORTED_MODULE_8[“default”]; });

/* harmony import */ var src_treemap_binary_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./src/treemap/binary */ “./node_modules/d3-hierarchy/src/treemap/binary.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemapBinary”, function() { return src_treemap_binary_WEBPACK_IMPORTED_MODULE_9[“default”]; });

/* harmony import */ var src_treemap_dice_WEBPACK_IMPORTED_MODULE_10 = webpack_require(/*! ./src/treemap/dice */ “./node_modules/d3-hierarchy/src/treemap/dice.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemapDice”, function() { return src_treemap_dice_WEBPACK_IMPORTED_MODULE_10[“default”]; });

/* harmony import */ var src_treemap_slice_WEBPACK_IMPORTED_MODULE_11 = webpack_require(/*! ./src/treemap/slice */ “./node_modules/d3-hierarchy/src/treemap/slice.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemapSlice”, function() { return src_treemap_slice_WEBPACK_IMPORTED_MODULE_11[“default”]; });

/* harmony import */ var src_treemap_sliceDice_WEBPACK_IMPORTED_MODULE_12 = webpack_require(/*! ./src/treemap/sliceDice */ “./node_modules/d3-hierarchy/src/treemap/sliceDice.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemapSliceDice”, function() { return src_treemap_sliceDice_WEBPACK_IMPORTED_MODULE_12[“default”]; });

/* harmony import */ var src_treemap_squarify_WEBPACK_IMPORTED_MODULE_13 = webpack_require(/*! ./src/treemap/squarify */ “./node_modules/d3-hierarchy/src/treemap/squarify.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemapSquarify”, function() { return src_treemap_squarify_WEBPACK_IMPORTED_MODULE_13[“default”]; });

/* harmony import */ var src_treemap_resquarify_WEBPACK_IMPORTED_MODULE_14 = webpack_require(/*! ./src/treemap/resquarify */ “./node_modules/d3-hierarchy/src/treemap/resquarify.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemapResquarify”, function() { return src_treemap_resquarify_WEBPACK_IMPORTED_MODULE_14[“default”]; });

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/accessors.js”: /*!****************************************************!*\

!*** ./node_modules/d3-hierarchy/src/accessors.js ***!
\****************************************************/

/*! exports provided: optional, required */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “optional”, function() { return optional; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “required”, function() { return required; }); function optional(f) {

return f == null ? null : required(f);

}

function required(f) {

if (typeof f !== "function") throw new Error;
return f;

}

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/array.js”: /*!************************************************!*\

!*** ./node_modules/d3-hierarchy/src/array.js ***!
\************************************************/

/*! exports provided: slice, shuffle */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “slice”, function() { return slice; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “shuffle”, function() { return shuffle; }); var slice = Array.prototype.slice;

function shuffle(array) {

var m = array.length,
    t,
    i;

while (m) {
  i = Math.random() * m-- | 0;
  t = array[m];
  array[m] = array[i];
  array[i] = t;
}

return array;

}

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/cluster.js”: /*!**************************************************!*\

!*** ./node_modules/d3-hierarchy/src/cluster.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function defaultSeparation(a, b) {

return a.parent === b.parent ? 1 : 2;

}

function meanX(children) {

return children.reduce(meanXReduce, 0) / children.length;

}

function meanXReduce(x, c) {

return x + c.x;

}

function maxY(children) {

return 1 + children.reduce(maxYReduce, 0);

}

function maxYReduce(y, c) {

return Math.max(y, c.y);

}

function leafLeft(node) {

var children;
while (children = node.children) node = children[0];
return node;

}

function leafRight(node) {

var children;
while (children = node.children) node = children[children.length - 1];
return node;

}

/* harmony default export */ webpack_exports[“default”] = (function() {

var separation = defaultSeparation,
    dx = 1,
    dy = 1,
    nodeSize = false;

function cluster(root) {
  var previousNode,
      x = 0;

  // First walk, computing the initial x & y values.
  root.eachAfter(function(node) {
    var children = node.children;
    if (children) {
      node.x = meanX(children);
      node.y = maxY(children);
    } else {
      node.x = previousNode ? x += separation(node, previousNode) : 0;
      node.y = 0;
      previousNode = node;
    }
  });

  var left = leafLeft(root),
      right = leafRight(root),
      x0 = left.x - separation(left, right) / 2,
      x1 = right.x + separation(right, left) / 2;

  // Second walk, normalizing x & y to the desired size.
  return root.eachAfter(nodeSize ? function(node) {
    node.x = (node.x - root.x) * dx;
    node.y = (root.y - node.y) * dy;
  } : function(node) {
    node.x = (node.x - x0) / (x1 - x0) * dx;
    node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;
  });
}

cluster.separation = function(x) {
  return arguments.length ? (separation = x, cluster) : separation;
};

cluster.size = function(x) {
  return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);
};

cluster.nodeSize = function(x) {
  return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);
};

return cluster;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/constant.js”: /*!***************************************************!*\

!*** ./node_modules/d3-hierarchy/src/constant.js ***!
\***************************************************/

/*! exports provided: constantZero, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “constantZero”, function() { return constantZero; }); function constantZero() {

return 0;

}

/* harmony default export */ webpack_exports[“default”] = (function(x) {

return function() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/hierarchy/ancestors.js”: /*!**************************************************************!*\

!*** ./node_modules/d3-hierarchy/src/hierarchy/ancestors.js ***!
\**************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

var node = this, nodes = [node];
while (node = node.parent) {
  nodes.push(node);
}
return nodes;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/hierarchy/count.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/hierarchy/count.js ***!
\**********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function count(node) {

var sum = 0,
    children = node.children,
    i = children && children.length;
if (!i) sum = 1;
else while (--i >= 0) sum += children[i].value;
node.value = sum;

}

/* harmony default export */ webpack_exports[“default”] = (function() {

return this.eachAfter(count);

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/hierarchy/descendants.js”: /*!****************************************************************!*\

!*** ./node_modules/d3-hierarchy/src/hierarchy/descendants.js ***!
\****************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

var nodes = [];
this.each(function(node) {
  nodes.push(node);
});
return nodes;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/hierarchy/each.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/hierarchy/each.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(callback) {

var node = this, current, next = [node], children, i, n;
do {
  current = next.reverse(), next = [];
  while (node = current.pop()) {
    callback(node), children = node.children;
    if (children) for (i = 0, n = children.length; i < n; ++i) {
      next.push(children[i]);
    }
  }
} while (next.length);
return this;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js”: /*!**************************************************************!*\

!*** ./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js ***!
\**************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(callback) {

var node = this, nodes = [node], next = [], children, i, n;
while (node = nodes.pop()) {
  next.push(node), children = node.children;
  if (children) for (i = 0, n = children.length; i < n; ++i) {
    nodes.push(children[i]);
  }
}
while (node = next.pop()) {
  callback(node);
}
return this;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js”: /*!***************************************************************!*\

!*** ./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js ***!
\***************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(callback) {

var node = this, nodes = [node], children, i;
while (node = nodes.pop()) {
  callback(node), children = node.children;
  if (children) for (i = children.length - 1; i >= 0; --i) {
    nodes.push(children[i]);
  }
}
return this;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/hierarchy/index.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/hierarchy/index.js ***!
\**********************************************************/

/*! exports provided: default, computeHeight, Node */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return hierarchy; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “computeHeight”, function() { return computeHeight; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “Node”, function() { return Node; }); /* harmony import */ var count_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./count */ “./node_modules/d3-hierarchy/src/hierarchy/count.js”); /* harmony import */ var each_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./each */ “./node_modules/d3-hierarchy/src/hierarchy/each.js”); /* harmony import */ var eachBefore_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./eachBefore */ “./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js”); /* harmony import */ var eachAfter_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./eachAfter */ “./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js”); /* harmony import */ var sum_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./sum */ “./node_modules/d3-hierarchy/src/hierarchy/sum.js”); /* harmony import */ var sort_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./sort */ “./node_modules/d3-hierarchy/src/hierarchy/sort.js”); /* harmony import */ var path_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./path */ “./node_modules/d3-hierarchy/src/hierarchy/path.js”); /* harmony import */ var ancestors_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./ancestors */ “./node_modules/d3-hierarchy/src/hierarchy/ancestors.js”); /* harmony import */ var descendants_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./descendants */ “./node_modules/d3-hierarchy/src/hierarchy/descendants.js”); /* harmony import */ var leaves_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./leaves */ “./node_modules/d3-hierarchy/src/hierarchy/leaves.js”); /* harmony import */ var links_WEBPACK_IMPORTED_MODULE_10 = webpack_require(/*! ./links */ “./node_modules/d3-hierarchy/src/hierarchy/links.js”);

function hierarchy(data, children) {

var root = new Node(data),
    valued = +data.value && (root.value = data.value),
    node,
    nodes = [root],
    child,
    childs,
    i,
    n;

if (children == null) children = defaultChildren;

while (node = nodes.pop()) {
  if (valued) node.value = +node.data.value;
  if ((childs = children(node.data)) && (n = childs.length)) {
    node.children = new Array(n);
    for (i = n - 1; i >= 0; --i) {
      nodes.push(child = node.children[i] = new Node(childs[i]));
      child.parent = node;
      child.depth = node.depth + 1;
    }
  }
}

return root.eachBefore(computeHeight);

}

function node_copy() {

return hierarchy(this).eachBefore(copyData);

}

function defaultChildren(d) {

return d.children;

}

function copyData(node) {

node.data = node.data.data;

}

function computeHeight(node) {

var height = 0;
do node.height = height;
while ((node = node.parent) && (node.height < ++height));

}

function Node(data) {

this.data = data;
this.depth =
this.height = 0;
this.parent = null;

}

Node.prototype = hierarchy.prototype = {

constructor: Node,
count: _count__WEBPACK_IMPORTED_MODULE_0__["default"],
each: _each__WEBPACK_IMPORTED_MODULE_1__["default"],
eachAfter: _eachAfter__WEBPACK_IMPORTED_MODULE_3__["default"],
eachBefore: _eachBefore__WEBPACK_IMPORTED_MODULE_2__["default"],
sum: _sum__WEBPACK_IMPORTED_MODULE_4__["default"],
sort: _sort__WEBPACK_IMPORTED_MODULE_5__["default"],
path: _path__WEBPACK_IMPORTED_MODULE_6__["default"],
ancestors: _ancestors__WEBPACK_IMPORTED_MODULE_7__["default"],
descendants: _descendants__WEBPACK_IMPORTED_MODULE_8__["default"],
leaves: _leaves__WEBPACK_IMPORTED_MODULE_9__["default"],
links: _links__WEBPACK_IMPORTED_MODULE_10__["default"],
copy: node_copy

};

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/hierarchy/leaves.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/hierarchy/leaves.js ***!
\***********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

var leaves = [];
this.eachBefore(function(node) {
  if (!node.children) {
    leaves.push(node);
  }
});
return leaves;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/hierarchy/links.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/hierarchy/links.js ***!
\**********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

var root = this, links = [];
root.each(function(node) {
  if (node !== root) { // Don’t include the root’s parent, if any.
    links.push({source: node.parent, target: node});
  }
});
return links;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/hierarchy/path.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/hierarchy/path.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(end) {

var start = this,
    ancestor = leastCommonAncestor(start, end),
    nodes = [start];
while (start !== ancestor) {
  start = start.parent;
  nodes.push(start);
}
var k = nodes.length;
while (end !== ancestor) {
  nodes.splice(k, 0, end);
  end = end.parent;
}
return nodes;

});

function leastCommonAncestor(a, b) {

if (a === b) return a;
var aNodes = a.ancestors(),
    bNodes = b.ancestors(),
    c = null;
a = aNodes.pop();
b = bNodes.pop();
while (a === b) {
  c = a;
  a = aNodes.pop();
  b = bNodes.pop();
}
return c;

}

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/hierarchy/sort.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/hierarchy/sort.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(compare) {

return this.eachBefore(function(node) {
  if (node.children) {
    node.children.sort(compare);
  }
});

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/hierarchy/sum.js”: /*!********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/hierarchy/sum.js ***!
\********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(value) {

return this.eachAfter(function(node) {
  var sum = +value(node.data) || 0,
      children = node.children,
      i = children && children.length;
  while (--i >= 0) sum += children[i].value;
  node.value = sum;
});

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/pack/enclose.js”: /*!*******************************************************!*\

!*** ./node_modules/d3-hierarchy/src/pack/enclose.js ***!
\*******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../array */ “./node_modules/d3-hierarchy/src/array.js”);

/* harmony default export */ webpack_exports[“default”] = (function(circles) {

var i = 0, n = (circles = Object(_array__WEBPACK_IMPORTED_MODULE_0__["shuffle"])(_array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(circles))).length, B = [], p, e;

while (i < n) {
  p = circles[i];
  if (e && enclosesWeak(e, p)) ++i;
  else e = encloseBasis(B = extendBasis(B, p)), i = 0;
}

return e;

});

function extendBasis(B, p) {

var i, j;

if (enclosesWeakAll(p, B)) return [p];

// If we get here then B must have at least one element.
for (i = 0; i < B.length; ++i) {
  if (enclosesNot(p, B[i])
      && enclosesWeakAll(encloseBasis2(B[i], p), B)) {
    return [B[i], p];
  }
}

// If we get here then B must have at least two elements.
for (i = 0; i < B.length - 1; ++i) {
  for (j = i + 1; j < B.length; ++j) {
    if (enclosesNot(encloseBasis2(B[i], B[j]), p)
        && enclosesNot(encloseBasis2(B[i], p), B[j])
        && enclosesNot(encloseBasis2(B[j], p), B[i])
        && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {
      return [B[i], B[j], p];
    }
  }
}

// If we get here then something is very wrong.
throw new Error;

}

function enclosesNot(a, b) {

var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;
return dr < 0 || dr * dr < dx * dx + dy * dy;

}

function enclosesWeak(a, b) {

var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;
return dr > 0 && dr * dr > dx * dx + dy * dy;

}

function enclosesWeakAll(a, B) {

for (var i = 0; i < B.length; ++i) {
  if (!enclosesWeak(a, B[i])) {
    return false;
  }
}
return true;

}

function encloseBasis(B) {

switch (B.length) {
  case 1: return encloseBasis1(B[0]);
  case 2: return encloseBasis2(B[0], B[1]);
  case 3: return encloseBasis3(B[0], B[1], B[2]);
}

}

function encloseBasis1(a) {

return {
  x: a.x,
  y: a.y,
  r: a.r
};

}

function encloseBasis2(a, b) {

var x1 = a.x, y1 = a.y, r1 = a.r,
    x2 = b.x, y2 = b.y, r2 = b.r,
    x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,
    l = Math.sqrt(x21 * x21 + y21 * y21);
return {
  x: (x1 + x2 + x21 / l * r21) / 2,
  y: (y1 + y2 + y21 / l * r21) / 2,
  r: (l + r1 + r2) / 2
};

}

function encloseBasis3(a, b, c) {

var x1 = a.x, y1 = a.y, r1 = a.r,
    x2 = b.x, y2 = b.y, r2 = b.r,
    x3 = c.x, y3 = c.y, r3 = c.r,
    a2 = x1 - x2,
    a3 = x1 - x3,
    b2 = y1 - y2,
    b3 = y1 - y3,
    c2 = r2 - r1,
    c3 = r3 - r1,
    d1 = x1 * x1 + y1 * y1 - r1 * r1,
    d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,
    d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,
    ab = a3 * b2 - a2 * b3,
    xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,
    xb = (b3 * c2 - b2 * c3) / ab,
    ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,
    yb = (a2 * c3 - a3 * c2) / ab,
    A = xb * xb + yb * yb - 1,
    B = 2 * (r1 + xa * xb + ya * yb),
    C = xa * xa + ya * ya - r1 * r1,
    r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);
return {
  x: x1 + xa + xb * r,
  y: y1 + ya + yb * r,
  r: r
};

}

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/pack/index.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-hierarchy/src/pack/index.js ***!
\*****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var siblings_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./siblings */ “./node_modules/d3-hierarchy/src/pack/siblings.js”); /* harmony import */ var accessors_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../accessors */ “./node_modules/d3-hierarchy/src/accessors.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ../constant */ “./node_modules/d3-hierarchy/src/constant.js”);

function defaultRadius(d) {

return Math.sqrt(d.value);

}

/* harmony default export */ webpack_exports[“default”] = (function() {

var radius = null,
    dx = 1,
    dy = 1,
    padding = _constant__WEBPACK_IMPORTED_MODULE_2__["constantZero"];

function pack(root) {
  root.x = dx / 2, root.y = dy / 2;
  if (radius) {
    root.eachBefore(radiusLeaf(radius))
        .eachAfter(packChildren(padding, 0.5))
        .eachBefore(translateChild(1));
  } else {
    root.eachBefore(radiusLeaf(defaultRadius))
        .eachAfter(packChildren(_constant__WEBPACK_IMPORTED_MODULE_2__["constantZero"], 1))
        .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))
        .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));
  }
  return root;
}

pack.radius = function(x) {
  return arguments.length ? (radius = Object(_accessors__WEBPACK_IMPORTED_MODULE_1__["optional"])(x), pack) : radius;
};

pack.size = function(x) {
  return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];
};

pack.padding = function(x) {
  return arguments.length ? (padding = typeof x === "function" ? x : Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])(+x), pack) : padding;
};

return pack;

});

function radiusLeaf(radius) {

return function(node) {
  if (!node.children) {
    node.r = Math.max(0, +radius(node) || 0);
  }
};

}

function packChildren(padding, k) {

return function(node) {
  if (children = node.children) {
    var children,
        i,
        n = children.length,
        r = padding(node) * k || 0,
        e;

    if (r) for (i = 0; i < n; ++i) children[i].r += r;
    e = Object(_siblings__WEBPACK_IMPORTED_MODULE_0__["packEnclose"])(children);
    if (r) for (i = 0; i < n; ++i) children[i].r -= r;
    node.r = e + r;
  }
};

}

function translateChild(k) {

return function(node) {
  var parent = node.parent;
  node.r *= k;
  if (parent) {
    node.x = parent.x + k * node.x;
    node.y = parent.y + k * node.y;
  }
};

}

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/pack/siblings.js”: /*!********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/pack/siblings.js ***!
\********************************************************/

/*! exports provided: packEnclose, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “packEnclose”, function() { return packEnclose; }); /* harmony import */ var enclose_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./enclose */ “./node_modules/d3-hierarchy/src/pack/enclose.js”);

function place(a, b, c) {

var ax = a.x,
    ay = a.y,
    da = b.r + c.r,
    db = a.r + c.r,
    dx = b.x - ax,
    dy = b.y - ay,
    dc = dx * dx + dy * dy;
if (dc) {
  var x = 0.5 + ((db *= db) - (da *= da)) / (2 * dc),
      y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);
  c.x = ax + x * dx + y * dy;
  c.y = ay + x * dy - y * dx;
} else {
  c.x = ax + db;
  c.y = ay;
}

}

function intersects(a, b) {

var dx = b.x - a.x,
    dy = b.y - a.y,
    dr = a.r + b.r;
return dr * dr - 1e-6 > dx * dx + dy * dy;

}

function score(node) {

var a = node._,
    b = node.next._,
    ab = a.r + b.r,
    dx = (a.x * b.r + b.x * a.r) / ab,
    dy = (a.y * b.r + b.y * a.r) / ab;
return dx * dx + dy * dy;

}

function Node(circle) {

this._ = circle;
this.next = null;
this.previous = null;

}

function packEnclose(circles) {

if (!(n = circles.length)) return 0;

var a, b, c, n, aa, ca, i, j, k, sj, sk;

// Place the first circle.
a = circles[0], a.x = 0, a.y = 0;
if (!(n > 1)) return a.r;

// Place the second circle.
b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;
if (!(n > 2)) return a.r + b.r;

// Place the third circle.
place(b, a, c = circles[2]);

// Initialize the front-chain using the first three circles a, b and c.
a = new Node(a), b = new Node(b), c = new Node(c);
a.next = c.previous = b;
b.next = a.previous = c;
c.next = b.previous = a;

// Attempt to place each remaining circle…
pack: for (i = 3; i < n; ++i) {
  place(a._, b._, c = circles[i]), c = new Node(c);

  // Find the closest intersecting circle on the front-chain, if any.
  // “Closeness” is determined by linear distance along the front-chain.
  // “Ahead” or “behind” is likewise determined by linear distance.
  j = b.next, k = a.previous, sj = b._.r, sk = a._.r;
  do {
    if (sj <= sk) {
      if (intersects(j._, c._)) {
        b = j, a.next = b, b.previous = a, --i;
        continue pack;
      }
      sj += j._.r, j = j.next;
    } else {
      if (intersects(k._, c._)) {
        a = k, a.next = b, b.previous = a, --i;
        continue pack;
      }
      sk += k._.r, k = k.previous;
    }
  } while (j !== k.next);

  // Success! Insert the new circle c between a and b.
  c.previous = a, c.next = b, a.next = b.previous = b = c;

  // Compute the new closest circle pair to the centroid.
  aa = score(a);
  while ((c = c.next) !== b) {
    if ((ca = score(c)) < aa) {
      a = c, aa = ca;
    }
  }
  b = a.next;
}

// Compute the enclosing circle of the front chain.
a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = Object(_enclose__WEBPACK_IMPORTED_MODULE_0__["default"])(a);

// Translate the circles to put the enclosing circle around the origin.
for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;

return c.r;

}

/* harmony default export */ webpack_exports[“default”] = (function(circles) {

packEnclose(circles);
return circles;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/partition.js”: /*!****************************************************!*\

!*** ./node_modules/d3-hierarchy/src/partition.js ***!
\****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var treemap_round_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./treemap/round */ “./node_modules/d3-hierarchy/src/treemap/round.js”); /* harmony import */ var treemap_dice_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./treemap/dice */ “./node_modules/d3-hierarchy/src/treemap/dice.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var dx = 1,
    dy = 1,
    padding = 0,
    round = false;

function partition(root) {
  var n = root.height + 1;
  root.x0 =
  root.y0 = padding;
  root.x1 = dx;
  root.y1 = dy / n;
  root.eachBefore(positionNode(dy, n));
  if (round) root.eachBefore(_treemap_round__WEBPACK_IMPORTED_MODULE_0__["default"]);
  return root;
}

function positionNode(dy, n) {
  return function(node) {
    if (node.children) {
      Object(_treemap_dice__WEBPACK_IMPORTED_MODULE_1__["default"])(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);
    }
    var x0 = node.x0,
        y0 = node.y0,
        x1 = node.x1 - padding,
        y1 = node.y1 - padding;
    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
    node.x0 = x0;
    node.y0 = y0;
    node.x1 = x1;
    node.y1 = y1;
  };
}

partition.round = function(x) {
  return arguments.length ? (round = !!x, partition) : round;
};

partition.size = function(x) {
  return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];
};

partition.padding = function(x) {
  return arguments.length ? (padding = +x, partition) : padding;
};

return partition;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/stratify.js”: /*!***************************************************!*\

!*** ./node_modules/d3-hierarchy/src/stratify.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var accessors_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./accessors */ “./node_modules/d3-hierarchy/src/accessors.js”); /* harmony import */ var hierarchy_index_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./hierarchy/index */ “./node_modules/d3-hierarchy/src/hierarchy/index.js”);

var keyPrefix = “$”, // Protect against keys like “__proto__”.

preroot = {depth: -1},
ambiguous = {};

function defaultId(d) {

return d.id;

}

function defaultParentId(d) {

return d.parentId;

}

/* harmony default export */ webpack_exports[“default”] = (function() {

var id = defaultId,
    parentId = defaultParentId;

function stratify(data) {
  var d,
      i,
      n = data.length,
      root,
      parent,
      node,
      nodes = new Array(n),
      nodeId,
      nodeKey,
      nodeByKey = {};

  for (i = 0; i < n; ++i) {
    d = data[i], node = nodes[i] = new _hierarchy_index__WEBPACK_IMPORTED_MODULE_1__["Node"](d);
    if ((nodeId = id(d, i, data)) != null && (nodeId += "")) {
      nodeKey = keyPrefix + (node.id = nodeId);
      nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;
    }
  }

  for (i = 0; i < n; ++i) {
    node = nodes[i], nodeId = parentId(data[i], i, data);
    if (nodeId == null || !(nodeId += "")) {
      if (root) throw new Error("multiple roots");
      root = node;
    } else {
      parent = nodeByKey[keyPrefix + nodeId];
      if (!parent) throw new Error("missing: " + nodeId);
      if (parent === ambiguous) throw new Error("ambiguous: " + nodeId);
      if (parent.children) parent.children.push(node);
      else parent.children = [node];
      node.parent = parent;
    }
  }

  if (!root) throw new Error("no root");
  root.parent = preroot;
  root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(_hierarchy_index__WEBPACK_IMPORTED_MODULE_1__["computeHeight"]);
  root.parent = null;
  if (n > 0) throw new Error("cycle");

  return root;
}

stratify.id = function(x) {
  return arguments.length ? (id = Object(_accessors__WEBPACK_IMPORTED_MODULE_0__["required"])(x), stratify) : id;
};

stratify.parentId = function(x) {
  return arguments.length ? (parentId = Object(_accessors__WEBPACK_IMPORTED_MODULE_0__["required"])(x), stratify) : parentId;
};

return stratify;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/tree.js”: /*!***********************************************!*\

!*** ./node_modules/d3-hierarchy/src/tree.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var hierarchy_index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./hierarchy/index */ “./node_modules/d3-hierarchy/src/hierarchy/index.js”);

function defaultSeparation(a, b) {

return a.parent === b.parent ? 1 : 2;

}

// function radialSeparation(a, b) { // return (a.parent === b.parent ? 1 : 2) / a.depth; // }

// This function is used to traverse the left contour of a subtree (or // subforest). It returns the successor of v on this contour. This successor is // either given by the leftmost child of v or by the thread of v. The function // returns null if and only if v is on the highest level of its subtree. function nextLeft(v) {

var children = v.children;
return children ? children[0] : v.t;

}

// This function works analogously to nextLeft. function nextRight(v) {

var children = v.children;
return children ? children[children.length - 1] : v.t;

}

// Shifts the current subtree rooted at w+. This is done by increasing // prelim(w+) and mod(w+) by shift. function moveSubtree(wm, wp, shift) {

var change = shift / (wp.i - wm.i);
wp.c -= change;
wp.s += shift;
wm.c += change;
wp.z += shift;
wp.m += shift;

}

// All other shifts, applied to the smaller subtrees between w- and w+, are // performed by this function. To prepare the shifts, we have to adjust // change(w+), shift(w+), and change(w-). function executeShifts(v) {

var shift = 0,
    change = 0,
    children = v.children,
    i = children.length,
    w;
while (--i >= 0) {
  w = children[i];
  w.z += shift;
  w.m += shift;
  shift += w.s + (change += w.c);
}

}

// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise, // returns the specified (default) ancestor. function nextAncestor(vim, v, ancestor) {

return vim.a.parent === v.parent ? vim.a : ancestor;

}

function TreeNode(node, i) {

this._ = node;
this.parent = null;
this.children = null;
this.A = null; // default ancestor
this.a = this; // ancestor
this.z = 0; // prelim
this.m = 0; // mod
this.c = 0; // change
this.s = 0; // shift
this.t = null; // thread
this.i = i; // number

}

TreeNode.prototype = Object.create(hierarchy_index_WEBPACK_IMPORTED_MODULE_0[“Node”].prototype);

function treeRoot(root) {

var tree = new TreeNode(root, 0),
    node,
    nodes = [tree],
    child,
    children,
    i,
    n;

while (node = nodes.pop()) {
  if (children = node._.children) {
    node.children = new Array(n = children.length);
    for (i = n - 1; i >= 0; --i) {
      nodes.push(child = node.children[i] = new TreeNode(children[i], i));
      child.parent = node;
    }
  }
}

(tree.parent = new TreeNode(null, 0)).children = [tree];
return tree;

}

// Node-link tree diagram using the Reingold-Tilford “tidy” algorithm /* harmony default export */ webpack_exports[“default”] = (function() {

var separation = defaultSeparation,
    dx = 1,
    dy = 1,
    nodeSize = null;

function tree(root) {
  var t = treeRoot(root);

  // Compute the layout using Buchheim et al.’s algorithm.
  t.eachAfter(firstWalk), t.parent.m = -t.z;
  t.eachBefore(secondWalk);

  // If a fixed node size is specified, scale x and y.
  if (nodeSize) root.eachBefore(sizeNode);

  // If a fixed tree size is specified, scale x and y based on the extent.
  // Compute the left-most, right-most, and depth-most nodes for extents.
  else {
    var left = root,
        right = root,
        bottom = root;
    root.eachBefore(function(node) {
      if (node.x < left.x) left = node;
      if (node.x > right.x) right = node;
      if (node.depth > bottom.depth) bottom = node;
    });
    var s = left === right ? 1 : separation(left, right) / 2,
        tx = s - left.x,
        kx = dx / (right.x + s + tx),
        ky = dy / (bottom.depth || 1);
    root.eachBefore(function(node) {
      node.x = (node.x + tx) * kx;
      node.y = node.depth * ky;
    });
  }

  return root;
}

// Computes a preliminary x-coordinate for v. Before that, FIRST WALK is
// applied recursively to the children of v, as well as the function
// APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the
// node v is placed to the midpoint of its outermost children.
function firstWalk(v) {
  var children = v.children,
      siblings = v.parent.children,
      w = v.i ? siblings[v.i - 1] : null;
  if (children) {
    executeShifts(v);
    var midpoint = (children[0].z + children[children.length - 1].z) / 2;
    if (w) {
      v.z = w.z + separation(v._, w._);
      v.m = v.z - midpoint;
    } else {
      v.z = midpoint;
    }
  } else if (w) {
    v.z = w.z + separation(v._, w._);
  }
  v.parent.A = apportion(v, w, v.parent.A || siblings[0]);
}

// Computes all real x-coordinates by summing up the modifiers recursively.
function secondWalk(v) {
  v._.x = v.z + v.parent.m;
  v.m += v.parent.m;
}

// The core of the algorithm. Here, a new subtree is combined with the
// previous subtrees. Threads are used to traverse the inside and outside
// contours of the left and right subtree up to the highest common level. The
// vertices used for the traversals are vi+, vi-, vo-, and vo+, where the
// superscript o means outside and i means inside, the subscript - means left
// subtree and + means right subtree. For summing up the modifiers along the
// contour, we use respective variables si+, si-, so-, and so+. Whenever two
// nodes of the inside contours conflict, we compute the left one of the
// greatest uncommon ancestors using the function ANCESTOR and call MOVE
// SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.
// Finally, we add a new thread (if necessary).
function apportion(v, w, ancestor) {
  if (w) {
    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;
    while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {
      vom = nextLeft(vom);
      vop = nextRight(vop);
      vop.a = v;
      shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);
      if (shift > 0) {
        moveSubtree(nextAncestor(vim, v, ancestor), v, shift);
        sip += shift;
        sop += shift;
      }
      sim += vim.m;
      sip += vip.m;
      som += vom.m;
      sop += vop.m;
    }
    if (vim && !nextRight(vop)) {
      vop.t = vim;
      vop.m += sim - sop;
    }
    if (vip && !nextLeft(vom)) {
      vom.t = vip;
      vom.m += sip - som;
      ancestor = v;
    }
  }
  return ancestor;
}

function sizeNode(node) {
  node.x *= dx;
  node.y = node.depth * dy;
}

tree.separation = function(x) {
  return arguments.length ? (separation = x, tree) : separation;
};

tree.size = function(x) {
  return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);
};

tree.nodeSize = function(x) {
  return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);
};

return tree;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/treemap/binary.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/treemap/binary.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(parent, x0, y0, x1, y1) {

var nodes = parent.children,
    i, n = nodes.length,
    sum, sums = new Array(n + 1);

for (sums[0] = sum = i = 0; i < n; ++i) {
  sums[i + 1] = sum += nodes[i].value;
}

partition(0, n, parent.value, x0, y0, x1, y1);

function partition(i, j, value, x0, y0, x1, y1) {
  if (i >= j - 1) {
    var node = nodes[i];
    node.x0 = x0, node.y0 = y0;
    node.x1 = x1, node.y1 = y1;
    return;
  }

  var valueOffset = sums[i],
      valueTarget = (value / 2) + valueOffset,
      k = i + 1,
      hi = j - 1;

  while (k < hi) {
    var mid = k + hi >>> 1;
    if (sums[mid] < valueTarget) k = mid + 1;
    else hi = mid;
  }

  if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;

  var valueLeft = sums[k] - valueOffset,
      valueRight = value - valueLeft;

  if ((x1 - x0) > (y1 - y0)) {
    var xk = (x0 * valueRight + x1 * valueLeft) / value;
    partition(i, k, valueLeft, x0, y0, xk, y1);
    partition(k, j, valueRight, xk, y0, x1, y1);
  } else {
    var yk = (y0 * valueRight + y1 * valueLeft) / value;
    partition(i, k, valueLeft, x0, y0, x1, yk);
    partition(k, j, valueRight, x0, yk, x1, y1);
  }
}

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/treemap/dice.js”: /*!*******************************************************!*\

!*** ./node_modules/d3-hierarchy/src/treemap/dice.js ***!
\*******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(parent, x0, y0, x1, y1) {

var nodes = parent.children,
    node,
    i = -1,
    n = nodes.length,
    k = parent.value && (x1 - x0) / parent.value;

while (++i < n) {
  node = nodes[i], node.y0 = y0, node.y1 = y1;
  node.x0 = x0, node.x1 = x0 += node.value * k;
}

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/treemap/index.js”: /*!********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/treemap/index.js ***!
\********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var round_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./round */ “./node_modules/d3-hierarchy/src/treemap/round.js”); /* harmony import */ var squarify_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./squarify */ “./node_modules/d3-hierarchy/src/treemap/squarify.js”); /* harmony import */ var accessors_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ../accessors */ “./node_modules/d3-hierarchy/src/accessors.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ../constant */ “./node_modules/d3-hierarchy/src/constant.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var tile = _squarify__WEBPACK_IMPORTED_MODULE_1__["default"],
    round = false,
    dx = 1,
    dy = 1,
    paddingStack = [0],
    paddingInner = _constant__WEBPACK_IMPORTED_MODULE_3__["constantZero"],
    paddingTop = _constant__WEBPACK_IMPORTED_MODULE_3__["constantZero"],
    paddingRight = _constant__WEBPACK_IMPORTED_MODULE_3__["constantZero"],
    paddingBottom = _constant__WEBPACK_IMPORTED_MODULE_3__["constantZero"],
    paddingLeft = _constant__WEBPACK_IMPORTED_MODULE_3__["constantZero"];

function treemap(root) {
  root.x0 =
  root.y0 = 0;
  root.x1 = dx;
  root.y1 = dy;
  root.eachBefore(positionNode);
  paddingStack = [0];
  if (round) root.eachBefore(_round__WEBPACK_IMPORTED_MODULE_0__["default"]);
  return root;
}

function positionNode(node) {
  var p = paddingStack[node.depth],
      x0 = node.x0 + p,
      y0 = node.y0 + p,
      x1 = node.x1 - p,
      y1 = node.y1 - p;
  if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
  if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
  node.x0 = x0;
  node.y0 = y0;
  node.x1 = x1;
  node.y1 = y1;
  if (node.children) {
    p = paddingStack[node.depth + 1] = paddingInner(node) / 2;
    x0 += paddingLeft(node) - p;
    y0 += paddingTop(node) - p;
    x1 -= paddingRight(node) - p;
    y1 -= paddingBottom(node) - p;
    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;
    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;
    tile(node, x0, y0, x1, y1);
  }
}

treemap.round = function(x) {
  return arguments.length ? (round = !!x, treemap) : round;
};

treemap.size = function(x) {
  return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];
};

treemap.tile = function(x) {
  return arguments.length ? (tile = Object(_accessors__WEBPACK_IMPORTED_MODULE_2__["required"])(x), treemap) : tile;
};

treemap.padding = function(x) {
  return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();
};

treemap.paddingInner = function(x) {
  return arguments.length ? (paddingInner = typeof x === "function" ? x : Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(+x), treemap) : paddingInner;
};

treemap.paddingOuter = function(x) {
  return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();
};

treemap.paddingTop = function(x) {
  return arguments.length ? (paddingTop = typeof x === "function" ? x : Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(+x), treemap) : paddingTop;
};

treemap.paddingRight = function(x) {
  return arguments.length ? (paddingRight = typeof x === "function" ? x : Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(+x), treemap) : paddingRight;
};

treemap.paddingBottom = function(x) {
  return arguments.length ? (paddingBottom = typeof x === "function" ? x : Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(+x), treemap) : paddingBottom;
};

treemap.paddingLeft = function(x) {
  return arguments.length ? (paddingLeft = typeof x === "function" ? x : Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(+x), treemap) : paddingLeft;
};

return treemap;

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/treemap/resquarify.js”: /*!*************************************************************!*\

!*** ./node_modules/d3-hierarchy/src/treemap/resquarify.js ***!
\*************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var dice_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./dice */ “./node_modules/d3-hierarchy/src/treemap/dice.js”); /* harmony import */ var slice_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./slice */ “./node_modules/d3-hierarchy/src/treemap/slice.js”); /* harmony import */ var squarify_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./squarify */ “./node_modules/d3-hierarchy/src/treemap/squarify.js”);

/* harmony default export */ webpack_exports[“default”] = ((function custom(ratio) {

function resquarify(parent, x0, y0, x1, y1) {
  if ((rows = parent._squarify) && (rows.ratio === ratio)) {
    var rows,
        row,
        nodes,
        i,
        j = -1,
        n,
        m = rows.length,
        value = parent.value;

    while (++j < m) {
      row = rows[j], nodes = row.children;
      for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;
      if (row.dice) Object(_dice__WEBPACK_IMPORTED_MODULE_0__["default"])(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);
      else Object(_slice__WEBPACK_IMPORTED_MODULE_1__["default"])(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);
      value -= row.value;
    }
  } else {
    parent._squarify = rows = Object(_squarify__WEBPACK_IMPORTED_MODULE_2__["squarifyRatio"])(ratio, parent, x0, y0, x1, y1);
    rows.ratio = ratio;
  }
}

resquarify.ratio = function(x) {
  return custom((x = +x) > 1 ? x : 1);
};

return resquarify;

})(squarify_WEBPACK_IMPORTED_MODULE_2[“phi”]));

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/treemap/round.js”: /*!********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/treemap/round.js ***!
\********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(node) {

node.x0 = Math.round(node.x0);
node.y0 = Math.round(node.y0);
node.x1 = Math.round(node.x1);
node.y1 = Math.round(node.y1);

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/treemap/slice.js”: /*!********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/treemap/slice.js ***!
\********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(parent, x0, y0, x1, y1) {

var nodes = parent.children,
    node,
    i = -1,
    n = nodes.length,
    k = parent.value && (y1 - y0) / parent.value;

while (++i < n) {
  node = nodes[i], node.x0 = x0, node.x1 = x1;
  node.y0 = y0, node.y1 = y0 += node.value * k;
}

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/treemap/sliceDice.js”: /*!************************************************************!*\

!*** ./node_modules/d3-hierarchy/src/treemap/sliceDice.js ***!
\************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var dice_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./dice */ “./node_modules/d3-hierarchy/src/treemap/dice.js”); /* harmony import */ var slice_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./slice */ “./node_modules/d3-hierarchy/src/treemap/slice.js”);

/* harmony default export */ webpack_exports[“default”] = (function(parent, x0, y0, x1, y1) {

(parent.depth & 1 ? _slice__WEBPACK_IMPORTED_MODULE_1__["default"] : _dice__WEBPACK_IMPORTED_MODULE_0__["default"])(parent, x0, y0, x1, y1);

});

/***/ }),

/***/ “./node_modules/d3-hierarchy/src/treemap/squarify.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-hierarchy/src/treemap/squarify.js ***!
\***********************************************************/

/*! exports provided: phi, squarifyRatio, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “phi”, function() { return phi; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “squarifyRatio”, function() { return squarifyRatio; }); /* harmony import */ var dice_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./dice */ “./node_modules/d3-hierarchy/src/treemap/dice.js”); /* harmony import */ var slice_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./slice */ “./node_modules/d3-hierarchy/src/treemap/slice.js”);

var phi = (1 + Math.sqrt(5)) / 2;

function squarifyRatio(ratio, parent, x0, y0, x1, y1) {

var rows = [],
    nodes = parent.children,
    row,
    nodeValue,
    i0 = 0,
    i1 = 0,
    n = nodes.length,
    dx, dy,
    value = parent.value,
    sumValue,
    minValue,
    maxValue,
    newRatio,
    minRatio,
    alpha,
    beta;

while (i0 < n) {
  dx = x1 - x0, dy = y1 - y0;

  // Find the next non-empty node.
  do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);
  minValue = maxValue = sumValue;
  alpha = Math.max(dy / dx, dx / dy) / (value * ratio);
  beta = sumValue * sumValue * alpha;
  minRatio = Math.max(maxValue / beta, beta / minValue);

  // Keep adding nodes while the aspect ratio maintains or improves.
  for (; i1 < n; ++i1) {
    sumValue += nodeValue = nodes[i1].value;
    if (nodeValue < minValue) minValue = nodeValue;
    if (nodeValue > maxValue) maxValue = nodeValue;
    beta = sumValue * sumValue * alpha;
    newRatio = Math.max(maxValue / beta, beta / minValue);
    if (newRatio > minRatio) { sumValue -= nodeValue; break; }
    minRatio = newRatio;
  }

  // Position and record the row orientation.
  rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});
  if (row.dice) Object(_dice__WEBPACK_IMPORTED_MODULE_0__["default"])(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);
  else Object(_slice__WEBPACK_IMPORTED_MODULE_1__["default"])(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);
  value -= sumValue, i0 = i1;
}

return rows;

}

/* harmony default export */ webpack_exports[“default”] = ((function custom(ratio) {

function squarify(parent, x0, y0, x1, y1) {
  squarifyRatio(ratio, parent, x0, y0, x1, y1);
}

squarify.ratio = function(x) {
  return custom((x = +x) > 1 ? x : 1);
};

return squarify;

})(phi));

/***/ }),

/***/ “./node_modules/d3-interpolate/index.js”: /*!**********************************************!*\

!*** ./node_modules/d3-interpolate/index.js ***!
\**********************************************/

/*! exports provided: interpolate, interpolateArray, interpolateBasis, interpolateBasisClosed, interpolateDate, interpolateNumber, interpolateObject, interpolateRound, interpolateString, interpolateTransformCss, interpolateTransformSvg, interpolateZoom, interpolateRgb, interpolateRgbBasis, interpolateRgbBasisClosed, interpolateHsl, interpolateHslLong, interpolateLab, interpolateHcl, interpolateHclLong, interpolateCubehelix, interpolateCubehelixLong, quantize */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_value_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/value */ “./node_modules/d3-interpolate/src/value.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolate”, function() { return src_value_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_array_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/array */ “./node_modules/d3-interpolate/src/array.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateArray”, function() { return src_array_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_basis_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/basis */ “./node_modules/d3-interpolate/src/basis.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateBasis”, function() { return src_basis_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_basisClosed_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/basisClosed */ “./node_modules/d3-interpolate/src/basisClosed.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateBasisClosed”, function() { return src_basisClosed_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_date_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/date */ “./node_modules/d3-interpolate/src/date.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateDate”, function() { return src_date_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony import */ var src_number_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/number */ “./node_modules/d3-interpolate/src/number.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateNumber”, function() { return src_number_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/* harmony import */ var src_object_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./src/object */ “./node_modules/d3-interpolate/src/object.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateObject”, function() { return src_object_WEBPACK_IMPORTED_MODULE_6[“default”]; });

/* harmony import */ var src_round_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./src/round */ “./node_modules/d3-interpolate/src/round.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateRound”, function() { return src_round_WEBPACK_IMPORTED_MODULE_7[“default”]; });

/* harmony import */ var src_string_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./src/string */ “./node_modules/d3-interpolate/src/string.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateString”, function() { return src_string_WEBPACK_IMPORTED_MODULE_8[“default”]; });

/* harmony import */ var src_transform_index_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./src/transform/index */ “./node_modules/d3-interpolate/src/transform/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateTransformCss”, function() { return src_transform_index_WEBPACK_IMPORTED_MODULE_9[“interpolateTransformCss”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateTransformSvg”, function() { return src_transform_index_WEBPACK_IMPORTED_MODULE_9[“interpolateTransformSvg”]; });

/* harmony import */ var src_zoom_WEBPACK_IMPORTED_MODULE_10 = webpack_require(/*! ./src/zoom */ “./node_modules/d3-interpolate/src/zoom.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateZoom”, function() { return src_zoom_WEBPACK_IMPORTED_MODULE_10[“default”]; });

/* harmony import */ var src_rgb_WEBPACK_IMPORTED_MODULE_11 = webpack_require(/*! ./src/rgb */ “./node_modules/d3-interpolate/src/rgb.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateRgb”, function() { return src_rgb_WEBPACK_IMPORTED_MODULE_11[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateRgbBasis”, function() { return src_rgb_WEBPACK_IMPORTED_MODULE_11[“rgbBasis”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateRgbBasisClosed”, function() { return src_rgb_WEBPACK_IMPORTED_MODULE_11[“rgbBasisClosed”]; });

/* harmony import */ var src_hsl_WEBPACK_IMPORTED_MODULE_12 = webpack_require(/*! ./src/hsl */ “./node_modules/d3-interpolate/src/hsl.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateHsl”, function() { return src_hsl_WEBPACK_IMPORTED_MODULE_12[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateHslLong”, function() { return src_hsl_WEBPACK_IMPORTED_MODULE_12[“hslLong”]; });

/* harmony import */ var src_lab_WEBPACK_IMPORTED_MODULE_13 = webpack_require(/*! ./src/lab */ “./node_modules/d3-interpolate/src/lab.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateLab”, function() { return src_lab_WEBPACK_IMPORTED_MODULE_13[“default”]; });

/* harmony import */ var src_hcl_WEBPACK_IMPORTED_MODULE_14 = webpack_require(/*! ./src/hcl */ “./node_modules/d3-interpolate/src/hcl.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateHcl”, function() { return src_hcl_WEBPACK_IMPORTED_MODULE_14[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateHclLong”, function() { return src_hcl_WEBPACK_IMPORTED_MODULE_14[“hclLong”]; });

/* harmony import */ var src_cubehelix_WEBPACK_IMPORTED_MODULE_15 = webpack_require(/*! ./src/cubehelix */ “./node_modules/d3-interpolate/src/cubehelix.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateCubehelix”, function() { return src_cubehelix_WEBPACK_IMPORTED_MODULE_15[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateCubehelixLong”, function() { return src_cubehelix_WEBPACK_IMPORTED_MODULE_15[“cubehelixLong”]; });

/* harmony import */ var src_quantize_WEBPACK_IMPORTED_MODULE_16 = webpack_require(/*! ./src/quantize */ “./node_modules/d3-interpolate/src/quantize.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “quantize”, function() { return src_quantize_WEBPACK_IMPORTED_MODULE_16[“default”]; });

/***/ }),

/***/ “./node_modules/d3-interpolate/src/array.js”: /*!**************************************************!*\

!*** ./node_modules/d3-interpolate/src/array.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var value_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./value */ “./node_modules/d3-interpolate/src/value.js”);

/* harmony default export */ webpack_exports[“default”] = (function(a, b) {

var nb = b ? b.length : 0,
    na = a ? Math.min(nb, a.length) : 0,
    x = new Array(na),
    c = new Array(nb),
    i;

for (i = 0; i < na; ++i) x[i] = Object(_value__WEBPACK_IMPORTED_MODULE_0__["default"])(a[i], b[i]);
for (; i < nb; ++i) c[i] = b[i];

return function(t) {
  for (i = 0; i < na; ++i) c[i] = x[i](t);
  return c;
};

});

/***/ }),

/***/ “./node_modules/d3-interpolate/src/basis.js”: /*!**************************************************!*\

!*** ./node_modules/d3-interpolate/src/basis.js ***!
\**************************************************/

/*! exports provided: basis, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “basis”, function() { return basis; }); function basis(t1, v0, v1, v2, v3) {

var t2 = t1 * t1, t3 = t2 * t1;
return ((1 - 3 * t1 + 3 * t2 - t3) * v0
    + (4 - 6 * t2 + 3 * t3) * v1
    + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2
    + t3 * v3) / 6;

}

/* harmony default export */ webpack_exports[“default”] = (function(values) {

var n = values.length - 1;
return function(t) {
  var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),
      v1 = values[i],
      v2 = values[i + 1],
      v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,
      v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;
  return basis((t - i / n) * n, v0, v1, v2, v3);
};

});

/***/ }),

/***/ “./node_modules/d3-interpolate/src/basisClosed.js”: /*!********************************************************!*\

!*** ./node_modules/d3-interpolate/src/basisClosed.js ***!
\********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var basis_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./basis */ “./node_modules/d3-interpolate/src/basis.js”);

/* harmony default export */ webpack_exports[“default”] = (function(values) {

var n = values.length;
return function(t) {
  var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),
      v0 = values[(i + n - 1) % n],
      v1 = values[i % n],
      v2 = values[(i + 1) % n],
      v3 = values[(i + 2) % n];
  return Object(_basis__WEBPACK_IMPORTED_MODULE_0__["basis"])((t - i / n) * n, v0, v1, v2, v3);
};

});

/***/ }),

/***/ “./node_modules/d3-interpolate/src/color.js”: /*!**************************************************!*\

!*** ./node_modules/d3-interpolate/src/color.js ***!
\**************************************************/

/*! exports provided: hue, gamma, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “hue”, function() { return hue; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “gamma”, function() { return gamma; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return nogamma; }); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./constant */ “./node_modules/d3-interpolate/src/constant.js”);

function linear(a, d) {

return function(t) {
  return a + t * d;
};

}

function exponential(a, b, y) {

return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {
  return Math.pow(a + t * b, y);
};

}

function hue(a, b) {

var d = b - a;
return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(isNaN(a) ? b : a);

}

function gamma(y) {

return (y = +y) === 1 ? nogamma : function(a, b) {
  return b - a ? exponential(a, b, y) : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(isNaN(a) ? b : a);
};

}

function nogamma(a, b) {

var d = b - a;
return d ? linear(a, d) : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(isNaN(a) ? b : a);

}

/***/ }),

/***/ “./node_modules/d3-interpolate/src/constant.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-interpolate/src/constant.js ***!
\*****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return function() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-interpolate/src/cubehelix.js”: /*!******************************************************!*\

!*** ./node_modules/d3-interpolate/src/cubehelix.js ***!
\******************************************************/

/*! exports provided: default, cubehelixLong */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cubehelixLong”, function() { return cubehelixLong; }); /* harmony import */ var d3_color_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-color */ “./node_modules/d3-color/index.js”); /* harmony import */ var color_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./color */ “./node_modules/d3-interpolate/src/color.js”);

function cubehelix(hue) {

return (function cubehelixGamma(y) {
  y = +y;

  function cubehelix(start, end) {
    var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["cubehelix"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["cubehelix"])(end)).h),
        s = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])(start.s, end.s),
        l = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])(start.l, end.l),
        opacity = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])(start.opacity, end.opacity);
    return function(t) {
      start.h = h(t);
      start.s = s(t);
      start.l = l(Math.pow(t, y));
      start.opacity = opacity(t);
      return start + "";
    };
  }

  cubehelix.gamma = cubehelixGamma;

  return cubehelix;
})(1);

}

/* harmony default export */ webpack_exports[“default”] = (cubehelix(color_WEBPACK_IMPORTED_MODULE_1[“hue”])); var cubehelixLong = cubehelix(color_WEBPACK_IMPORTED_MODULE_1[“default”]);

/***/ }),

/***/ “./node_modules/d3-interpolate/src/date.js”: /*!*************************************************!*\

!*** ./node_modules/d3-interpolate/src/date.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(a, b) {

var d = new Date;
return a = +a, b -= a, function(t) {
  return d.setTime(a + b * t), d;
};

});

/***/ }),

/***/ “./node_modules/d3-interpolate/src/hcl.js”: /*!************************************************!*\

!*** ./node_modules/d3-interpolate/src/hcl.js ***!
\************************************************/

/*! exports provided: default, hclLong */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “hclLong”, function() { return hclLong; }); /* harmony import */ var d3_color_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-color */ “./node_modules/d3-color/index.js”); /* harmony import */ var color_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./color */ “./node_modules/d3-interpolate/src/color.js”);

function hcl(hue) {

return function(start, end) {
  var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["hcl"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["hcl"])(end)).h),
      c = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])(start.c, end.c),
      l = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])(start.l, end.l),
      opacity = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])(start.opacity, end.opacity);
  return function(t) {
    start.h = h(t);
    start.c = c(t);
    start.l = l(t);
    start.opacity = opacity(t);
    return start + "";
  };
}

}

/* harmony default export */ webpack_exports[“default”] = (hcl(color_WEBPACK_IMPORTED_MODULE_1[“hue”])); var hclLong = hcl(color_WEBPACK_IMPORTED_MODULE_1[“default”]);

/***/ }),

/***/ “./node_modules/d3-interpolate/src/hsl.js”: /*!************************************************!*\

!*** ./node_modules/d3-interpolate/src/hsl.js ***!
\************************************************/

/*! exports provided: default, hslLong */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “hslLong”, function() { return hslLong; }); /* harmony import */ var d3_color_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-color */ “./node_modules/d3-color/index.js”); /* harmony import */ var color_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./color */ “./node_modules/d3-interpolate/src/color.js”);

function hsl(hue) {

return function(start, end) {
  var h = hue((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["hsl"])(start)).h, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["hsl"])(end)).h),
      s = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])(start.s, end.s),
      l = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])(start.l, end.l),
      opacity = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])(start.opacity, end.opacity);
  return function(t) {
    start.h = h(t);
    start.s = s(t);
    start.l = l(t);
    start.opacity = opacity(t);
    return start + "";
  };
}

}

/* harmony default export */ webpack_exports[“default”] = (hsl(color_WEBPACK_IMPORTED_MODULE_1[“hue”])); var hslLong = hsl(color_WEBPACK_IMPORTED_MODULE_1[“default”]);

/***/ }),

/***/ “./node_modules/d3-interpolate/src/lab.js”: /*!************************************************!*\

!*** ./node_modules/d3-interpolate/src/lab.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return lab; }); /* harmony import */ var d3_color_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-color */ “./node_modules/d3-color/index.js”); /* harmony import */ var color_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./color */ “./node_modules/d3-interpolate/src/color.js”);

function lab(start, end) {

var l = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["lab"])(start)).l, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["lab"])(end)).l),
    a = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])(start.a, end.a),
    b = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])(start.b, end.b),
    opacity = Object(_color__WEBPACK_IMPORTED_MODULE_1__["default"])(start.opacity, end.opacity);
return function(t) {
  start.l = l(t);
  start.a = a(t);
  start.b = b(t);
  start.opacity = opacity(t);
  return start + "";
};

}

/***/ }),

/***/ “./node_modules/d3-interpolate/src/number.js”: /*!***************************************************!*\

!*** ./node_modules/d3-interpolate/src/number.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(a, b) {

return a = +a, b -= a, function(t) {
  return a + b * t;
};

});

/***/ }),

/***/ “./node_modules/d3-interpolate/src/object.js”: /*!***************************************************!*\

!*** ./node_modules/d3-interpolate/src/object.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var value_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./value */ “./node_modules/d3-interpolate/src/value.js”);

/* harmony default export */ webpack_exports[“default”] = (function(a, b) {

var i = {},
    c = {},
    k;

if (a === null || typeof a !== "object") a = {};
if (b === null || typeof b !== "object") b = {};

for (k in b) {
  if (k in a) {
    i[k] = Object(_value__WEBPACK_IMPORTED_MODULE_0__["default"])(a[k], b[k]);
  } else {
    c[k] = b[k];
  }
}

return function(t) {
  for (k in i) c[k] = i[k](t);
  return c;
};

});

/***/ }),

/***/ “./node_modules/d3-interpolate/src/quantize.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-interpolate/src/quantize.js ***!
\*****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(interpolator, n) {

var samples = new Array(n);
for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));
return samples;

});

/***/ }),

/***/ “./node_modules/d3-interpolate/src/rgb.js”: /*!************************************************!*\

!*** ./node_modules/d3-interpolate/src/rgb.js ***!
\************************************************/

/*! exports provided: default, rgbBasis, rgbBasisClosed */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “rgbBasis”, function() { return rgbBasis; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “rgbBasisClosed”, function() { return rgbBasisClosed; }); /* harmony import */ var d3_color_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-color */ “./node_modules/d3-color/index.js”); /* harmony import */ var basis_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./basis */ “./node_modules/d3-interpolate/src/basis.js”); /* harmony import */ var basisClosed_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./basisClosed */ “./node_modules/d3-interpolate/src/basisClosed.js”); /* harmony import */ var color_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./color */ “./node_modules/d3-interpolate/src/color.js”);

/* harmony default export */ webpack_exports[“default”] = ((function rgbGamma(y) {

var color = Object(_color__WEBPACK_IMPORTED_MODULE_3__["gamma"])(y);

function rgb(start, end) {
  var r = color((start = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["rgb"])(start)).r, (end = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["rgb"])(end)).r),
      g = color(start.g, end.g),
      b = color(start.b, end.b),
      opacity = Object(_color__WEBPACK_IMPORTED_MODULE_3__["default"])(start.opacity, end.opacity);
  return function(t) {
    start.r = r(t);
    start.g = g(t);
    start.b = b(t);
    start.opacity = opacity(t);
    return start + "";
  };
}

rgb.gamma = rgbGamma;

return rgb;

})(1));

function rgbSpline(spline) {

return function(colors) {
  var n = colors.length,
      r = new Array(n),
      g = new Array(n),
      b = new Array(n),
      i, color;
  for (i = 0; i < n; ++i) {
    color = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["rgb"])(colors[i]);
    r[i] = color.r || 0;
    g[i] = color.g || 0;
    b[i] = color.b || 0;
  }
  r = spline(r);
  g = spline(g);
  b = spline(b);
  color.opacity = 1;
  return function(t) {
    color.r = r(t);
    color.g = g(t);
    color.b = b(t);
    return color + "";
  };
};

}

var rgbBasis = rgbSpline(basis_WEBPACK_IMPORTED_MODULE_1[“default”]); var rgbBasisClosed = rgbSpline(basisClosed_WEBPACK_IMPORTED_MODULE_2[“default”]);

/***/ }),

/***/ “./node_modules/d3-interpolate/src/round.js”: /*!**************************************************!*\

!*** ./node_modules/d3-interpolate/src/round.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(a, b) {

return a = +a, b -= a, function(t) {
  return Math.round(a + b * t);
};

});

/***/ }),

/***/ “./node_modules/d3-interpolate/src/string.js”: /*!***************************************************!*\

!*** ./node_modules/d3-interpolate/src/string.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var number_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./number */ “./node_modules/d3-interpolate/src/number.js”);

var reA = /[-+]?(?:d+.?d*|.?d+)(?:[-+]?d+)?/g,

reB = new RegExp(reA.source, "g");

function zero(b) {

return function() {
  return b;
};

}

function one(b) {

return function(t) {
  return b(t) + "";
};

}

/* harmony default export */ webpack_exports[“default”] = (function(a, b) {

var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b
    am, // current match in a
    bm, // current match in b
    bs, // string preceding current number in b, if any
    i = -1, // index in s
    s = [], // string constants and placeholders
    q = []; // number interpolators

// Coerce inputs to strings.
a = a + "", b = b + "";

// Interpolate pairs of numbers in a & b.
while ((am = reA.exec(a))
    && (bm = reB.exec(b))) {
  if ((bs = bm.index) > bi) { // a string precedes the next number in b
    bs = b.slice(bi, bs);
    if (s[i]) s[i] += bs; // coalesce with previous string
    else s[++i] = bs;
  }
  if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match
    if (s[i]) s[i] += bm; // coalesce with previous string
    else s[++i] = bm;
  } else { // interpolate non-matching numbers
    s[++i] = null;
    q.push({i: i, x: Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(am, bm)});
  }
  bi = reB.lastIndex;
}

// Add remains of b.
if (bi < b.length) {
  bs = b.slice(bi);
  if (s[i]) s[i] += bs; // coalesce with previous string
  else s[++i] = bs;
}

// Special optimization for only a single match.
// Otherwise, interpolate each of the numbers and rejoin the string.
return s.length < 2 ? (q[0]
    ? one(q[0].x)
    : zero(b))
    : (b = q.length, function(t) {
        for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
        return s.join("");
      });

});

/***/ }),

/***/ “./node_modules/d3-interpolate/src/transform/decompose.js”: /*!****************************************************************!*\

!*** ./node_modules/d3-interpolate/src/transform/decompose.js ***!
\****************************************************************/

/*! exports provided: identity, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “identity”, function() { return identity; }); var degrees = 180 / Math.PI;

var identity = {

translateX: 0,
translateY: 0,
rotate: 0,
skewX: 0,
scaleX: 1,
scaleY: 1

};

/* harmony default export */ webpack_exports[“default”] = (function(a, b, c, d, e, f) {

var scaleX, scaleY, skewX;
if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;
if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;
if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;
if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;
return {
  translateX: e,
  translateY: f,
  rotate: Math.atan2(b, a) * degrees,
  skewX: Math.atan(skewX) * degrees,
  scaleX: scaleX,
  scaleY: scaleY
};

});

/***/ }),

/***/ “./node_modules/d3-interpolate/src/transform/index.js”: /*!************************************************************!*\

!*** ./node_modules/d3-interpolate/src/transform/index.js ***!
\************************************************************/

/*! exports provided: interpolateTransformCss, interpolateTransformSvg */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “interpolateTransformCss”, function() { return interpolateTransformCss; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “interpolateTransformSvg”, function() { return interpolateTransformSvg; }); /* harmony import */ var number_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../number */ “./node_modules/d3-interpolate/src/number.js”); /* harmony import */ var parse_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./parse */ “./node_modules/d3-interpolate/src/transform/parse.js”);

function interpolateTransform(parse, pxComma, pxParen, degParen) {

function pop(s) {
  return s.length ? s.pop() + " " : "";
}

function translate(xa, ya, xb, yb, s, q) {
  if (xa !== xb || ya !== yb) {
    var i = s.push("translate(", null, pxComma, null, pxParen);
    q.push({i: i - 4, x: Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(xa, xb)}, {i: i - 2, x: Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(ya, yb)});
  } else if (xb || yb) {
    s.push("translate(" + xb + pxComma + yb + pxParen);
  }
}

function rotate(a, b, s, q) {
  if (a !== b) {
    if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path
    q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(a, b)});
  } else if (b) {
    s.push(pop(s) + "rotate(" + b + degParen);
  }
}

function skewX(a, b, s, q) {
  if (a !== b) {
    q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(a, b)});
  } else if (b) {
    s.push(pop(s) + "skewX(" + b + degParen);
  }
}

function scale(xa, ya, xb, yb, s, q) {
  if (xa !== xb || ya !== yb) {
    var i = s.push(pop(s) + "scale(", null, ",", null, ")");
    q.push({i: i - 4, x: Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(xa, xb)}, {i: i - 2, x: Object(_number__WEBPACK_IMPORTED_MODULE_0__["default"])(ya, yb)});
  } else if (xb !== 1 || yb !== 1) {
    s.push(pop(s) + "scale(" + xb + "," + yb + ")");
  }
}

return function(a, b) {
  var s = [], // string constants and placeholders
      q = []; // number interpolators
  a = parse(a), b = parse(b);
  translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);
  rotate(a.rotate, b.rotate, s, q);
  skewX(a.skewX, b.skewX, s, q);
  scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);
  a = b = null; // gc
  return function(t) {
    var i = -1, n = q.length, o;
    while (++i < n) s[(o = q[i]).i] = o.x(t);
    return s.join("");
  };
};

}

var interpolateTransformCss = interpolateTransform(parse_WEBPACK_IMPORTED_MODULE_1[“parseCss”], “px, ”, “px)”, “deg)”); var interpolateTransformSvg = interpolateTransform(parse_WEBPACK_IMPORTED_MODULE_1[“parseSvg”], “, ”, “)”, “)”);

/***/ }),

/***/ “./node_modules/d3-interpolate/src/transform/parse.js”: /*!************************************************************!*\

!*** ./node_modules/d3-interpolate/src/transform/parse.js ***!
\************************************************************/

/*! exports provided: parseCss, parseSvg */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “parseCss”, function() { return parseCss; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “parseSvg”, function() { return parseSvg; }); /* harmony import */ var decompose_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./decompose */ “./node_modules/d3-interpolate/src/transform/decompose.js”);

var cssNode,

cssRoot,
cssView,
svgNode;

function parseCss(value) {

if (value === "none") return _decompose__WEBPACK_IMPORTED_MODULE_0__["identity"];
if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView;
cssNode.style.transform = value;
value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform");
cssRoot.removeChild(cssNode);
value = value.slice(7, -1).split(",");
return Object(_decompose__WEBPACK_IMPORTED_MODULE_0__["default"])(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);

}

function parseSvg(value) {

if (value == null) return _decompose__WEBPACK_IMPORTED_MODULE_0__["identity"];
if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g");
svgNode.setAttribute("transform", value);
if (!(value = svgNode.transform.baseVal.consolidate())) return _decompose__WEBPACK_IMPORTED_MODULE_0__["identity"];
value = value.matrix;
return Object(_decompose__WEBPACK_IMPORTED_MODULE_0__["default"])(value.a, value.b, value.c, value.d, value.e, value.f);

}

/***/ }),

/***/ “./node_modules/d3-interpolate/src/value.js”: /*!**************************************************!*\

!*** ./node_modules/d3-interpolate/src/value.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_color_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-color */ “./node_modules/d3-color/index.js”); /* harmony import */ var rgb_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./rgb */ “./node_modules/d3-interpolate/src/rgb.js”); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./array */ “./node_modules/d3-interpolate/src/array.js”); /* harmony import */ var date_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./date */ “./node_modules/d3-interpolate/src/date.js”); /* harmony import */ var number_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./number */ “./node_modules/d3-interpolate/src/number.js”); /* harmony import */ var object_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./object */ “./node_modules/d3-interpolate/src/object.js”); /* harmony import */ var string_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./string */ “./node_modules/d3-interpolate/src/string.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./constant */ “./node_modules/d3-interpolate/src/constant.js”);

/* harmony default export */ webpack_exports[“default”] = (function(a, b) {

var t = typeof b, c;
return b == null || t === "boolean" ? Object(_constant__WEBPACK_IMPORTED_MODULE_7__["default"])(b)
    : (t === "number" ? _number__WEBPACK_IMPORTED_MODULE_4__["default"]
    : t === "string" ? ((c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["color"])(b)) ? (b = c, _rgb__WEBPACK_IMPORTED_MODULE_1__["default"]) : _string__WEBPACK_IMPORTED_MODULE_6__["default"])
    : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_0__["color"] ? _rgb__WEBPACK_IMPORTED_MODULE_1__["default"]
    : b instanceof Date ? _date__WEBPACK_IMPORTED_MODULE_3__["default"]
    : Array.isArray(b) ? _array__WEBPACK_IMPORTED_MODULE_2__["default"]
    : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? _object__WEBPACK_IMPORTED_MODULE_5__["default"]
    : _number__WEBPACK_IMPORTED_MODULE_4__["default"])(a, b);

});

/***/ }),

/***/ “./node_modules/d3-interpolate/src/zoom.js”: /*!*************************************************!*\

!*** ./node_modules/d3-interpolate/src/zoom.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); var rho = Math.SQRT2,

rho2 = 2,
rho4 = 4,
epsilon2 = 1e-12;

function cosh(x) {

return ((x = Math.exp(x)) + 1 / x) / 2;

}

function sinh(x) {

return ((x = Math.exp(x)) - 1 / x) / 2;

}

function tanh(x) {

return ((x = Math.exp(2 * x)) - 1) / (x + 1);

}

// p0 = [ux0, uy0, w0] // p1 = [ux1, uy1, w1] /* harmony default export */ webpack_exports[“default”] = (function(p0, p1) {

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;

// Special case for u0 ≅ u1.
if (d2 < epsilon2) {
  S = Math.log(w1 / w0) / rho;
  i = function(t) {
    return [
      ux0 + t * dx,
      uy0 + t * dy,
      w0 * Math.exp(rho * t * S)
    ];
  }
}

// General case.
else {
  var d1 = Math.sqrt(d2),
      b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),
      b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),
      r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),
      r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);
  S = (r1 - r0) / rho;
  i = function(t) {
    var s = t * S,
        coshr0 = cosh(r0),
        u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));
    return [
      ux0 + u * dx,
      uy0 + u * dy,
      w0 * coshr0 / cosh(rho * s + r0)
    ];
  }
}

i.duration = S * 1000;

return i;

});

/***/ }),

/***/ “./node_modules/d3-path/index.js”: /*!***************************************!*\

!*** ./node_modules/d3-path/index.js ***!
\***************************************/

/*! exports provided: path */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_path_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/path */ “./node_modules/d3-path/src/path.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “path”, function() { return src_path_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/***/ }),

/***/ “./node_modules/d3-path/src/path.js”: /*!******************************************!*\

!*** ./node_modules/d3-path/src/path.js ***!
\******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); var pi = Math.PI,

tau = 2 * pi,
epsilon = 1e-6,
tauEpsilon = tau - epsilon;

function Path() {

this._x0 = this._y0 = // start of current subpath
this._x1 = this._y1 = null; // end of current subpath
this._ = "";

}

function path() {

return new Path;

}

Path.prototype = path.prototype = {

constructor: Path,
moveTo: function(x, y) {
  this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y);
},
closePath: function() {
  if (this._x1 !== null) {
    this._x1 = this._x0, this._y1 = this._y0;
    this._ += "Z";
  }
},
lineTo: function(x, y) {
  this._ += "L" + (this._x1 = +x) + "," + (this._y1 = +y);
},
quadraticCurveTo: function(x1, y1, x, y) {
  this._ += "Q" + (+x1) + "," + (+y1) + "," + (this._x1 = +x) + "," + (this._y1 = +y);
},
bezierCurveTo: function(x1, y1, x2, y2, x, y) {
  this._ += "C" + (+x1) + "," + (+y1) + "," + (+x2) + "," + (+y2) + "," + (this._x1 = +x) + "," + (this._y1 = +y);
},
arcTo: function(x1, y1, x2, y2, r) {
  x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;
  var x0 = this._x1,
      y0 = this._y1,
      x21 = x2 - x1,
      y21 = y2 - y1,
      x01 = x0 - x1,
      y01 = y0 - y1,
      l01_2 = x01 * x01 + y01 * y01;

  // Is the radius negative? Error.
  if (r < 0) throw new Error("negative radius: " + r);

  // Is this path empty? Move to (x1,y1).
  if (this._x1 === null) {
    this._ += "M" + (this._x1 = x1) + "," + (this._y1 = y1);
  }

  // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.
  else if (!(l01_2 > epsilon)) {}

  // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?
  // Equivalently, is (x1,y1) coincident with (x2,y2)?
  // Or, is the radius zero? Line to (x1,y1).
  else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {
    this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1);
  }

  // Otherwise, draw an arc!
  else {
    var x20 = x2 - x0,
        y20 = y2 - y0,
        l21_2 = x21 * x21 + y21 * y21,
        l20_2 = x20 * x20 + y20 * y20,
        l21 = Math.sqrt(l21_2),
        l01 = Math.sqrt(l01_2),
        l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),
        t01 = l / l01,
        t21 = l / l21;

    // If the start tangent is not coincident with (x0,y0), line to.
    if (Math.abs(t01 - 1) > epsilon) {
      this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01);
    }

    this._ += "A" + r + "," + r + ",0,0," + (+(y01 * x20 > x01 * y20)) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21);
  }
},
arc: function(x, y, r, a0, a1, ccw) {
  x = +x, y = +y, r = +r;
  var dx = r * Math.cos(a0),
      dy = r * Math.sin(a0),
      x0 = x + dx,
      y0 = y + dy,
      cw = 1 ^ ccw,
      da = ccw ? a0 - a1 : a1 - a0;

  // Is the radius negative? Error.
  if (r < 0) throw new Error("negative radius: " + r);

  // Is this path empty? Move to (x0,y0).
  if (this._x1 === null) {
    this._ += "M" + x0 + "," + y0;
  }

  // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).
  else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {
    this._ += "L" + x0 + "," + y0;
  }

  // Is this arc empty? We’re done.
  if (!r) return;

  // Does the angle go the wrong way? Flip the direction.
  if (da < 0) da = da % tau + tau;

  // Is this a complete circle? Draw two arcs to complete the circle.
  if (da > tauEpsilon) {
    this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x - dx) + "," + (y - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0);
  }

  // Is this arc non-empty? Draw an arc!
  else if (da > epsilon) {
    this._ += "A" + r + "," + r + ",0," + (+(da >= pi)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1));
  }
},
rect: function(x, y, w, h) {
  this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y) + "h" + (+w) + "v" + (+h) + "h" + (-w) + "Z";
},
toString: function() {
  return this._;
}

};

/* harmony default export */ webpack_exports[“default”] = (path);

/***/ }),

/***/ “./node_modules/d3-polygon/index.js”: /*!******************************************!*\

!*** ./node_modules/d3-polygon/index.js ***!
\******************************************/

/*! exports provided: polygonArea, polygonCentroid, polygonHull, polygonContains, polygonLength */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_area_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/area */ “./node_modules/d3-polygon/src/area.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “polygonArea”, function() { return src_area_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_centroid_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/centroid */ “./node_modules/d3-polygon/src/centroid.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “polygonCentroid”, function() { return src_centroid_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_hull_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/hull */ “./node_modules/d3-polygon/src/hull.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “polygonHull”, function() { return src_hull_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_contains_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/contains */ “./node_modules/d3-polygon/src/contains.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “polygonContains”, function() { return src_contains_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_length_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/length */ “./node_modules/d3-polygon/src/length.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “polygonLength”, function() { return src_length_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/***/ }),

/***/ “./node_modules/d3-polygon/src/area.js”: /*!*********************************************!*\

!*** ./node_modules/d3-polygon/src/area.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(polygon) {

var i = -1,
    n = polygon.length,
    a,
    b = polygon[n - 1],
    area = 0;

while (++i < n) {
  a = b;
  b = polygon[i];
  area += a[1] * b[0] - a[0] * b[1];
}

return area / 2;

});

/***/ }),

/***/ “./node_modules/d3-polygon/src/centroid.js”: /*!*************************************************!*\

!*** ./node_modules/d3-polygon/src/centroid.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(polygon) {

var i = -1,
    n = polygon.length,
    x = 0,
    y = 0,
    a,
    b = polygon[n - 1],
    c,
    k = 0;

while (++i < n) {
  a = b;
  b = polygon[i];
  k += c = a[0] * b[1] - b[0] * a[1];
  x += (a[0] + b[0]) * c;
  y += (a[1] + b[1]) * c;
}

return k *= 3, [x / k, y / k];

});

/***/ }),

/***/ “./node_modules/d3-polygon/src/contains.js”: /*!*************************************************!*\

!*** ./node_modules/d3-polygon/src/contains.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(polygon, point) {

var n = polygon.length,
    p = polygon[n - 1],
    x = point[0], y = point[1],
    x0 = p[0], y0 = p[1],
    x1, y1,
    inside = false;

for (var i = 0; i < n; ++i) {
  p = polygon[i], x1 = p[0], y1 = p[1];
  if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;
  x0 = x1, y0 = y1;
}

return inside;

});

/***/ }),

/***/ “./node_modules/d3-polygon/src/cross.js”: /*!**********************************************!*\

!*** ./node_modules/d3-polygon/src/cross.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); // Returns the 2D cross product of AB and AC vectors, i.e., the z-component of // the 3D cross product in a quadrant I Cartesian coordinate system (+x is // right, +y is up). Returns a positive value if ABC is counter-clockwise, // negative if clockwise, and zero if the points are collinear. /* harmony default export */ webpack_exports[“default”] = (function(a, b, c) {

return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);

});

/***/ }),

/***/ “./node_modules/d3-polygon/src/hull.js”: /*!*********************************************!*\

!*** ./node_modules/d3-polygon/src/hull.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var cross_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./cross */ “./node_modules/d3-polygon/src/cross.js”);

function lexicographicOrder(a, b) {

return a[0] - b[0] || a[1] - b[1];

}

// Computes the upper convex hull per the monotone chain algorithm. // Assumes points.length >= 3, is sorted by x, unique in y. // Returns an array of indices into points in left-to-right order. function computeUpperHullIndexes(points) {

var n = points.length,
    indexes = [0, 1],
    size = 2;

for (var i = 2; i < n; ++i) {
  while (size > 1 && Object(_cross__WEBPACK_IMPORTED_MODULE_0__["default"])(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;
  indexes[size++] = i;
}

return indexes.slice(0, size); // remove popped points

}

/* harmony default export */ webpack_exports[“default”] = (function(points) {

if ((n = points.length) < 3) return null;

var i,
    n,
    sortedPoints = new Array(n),
    flippedPoints = new Array(n);

for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];
sortedPoints.sort(lexicographicOrder);
for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];

var upperIndexes = computeUpperHullIndexes(sortedPoints),
    lowerIndexes = computeUpperHullIndexes(flippedPoints);

// Construct the hull polygon, removing possible duplicate endpoints.
var skipLeft = lowerIndexes[0] === upperIndexes[0],
    skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],
    hull = [];

// Add upper hull in right-to-l order.
// Then add lower hull in left-to-right order.
for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);
for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);

return hull;

});

/***/ }),

/***/ “./node_modules/d3-polygon/src/length.js”: /*!***********************************************!*\

!*** ./node_modules/d3-polygon/src/length.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(polygon) {

var i = -1,
    n = polygon.length,
    b = polygon[n - 1],
    xa,
    ya,
    xb = b[0],
    yb = b[1],
    perimeter = 0;

while (++i < n) {
  xa = xb;
  ya = yb;
  b = polygon[i];
  xb = b[0];
  yb = b[1];
  xa -= xb;
  ya -= yb;
  perimeter += Math.sqrt(xa * xa + ya * ya);
}

return perimeter;

});

/***/ }),

/***/ “./node_modules/d3-quadtree/index.js”: /*!*******************************************!*\

!*** ./node_modules/d3-quadtree/index.js ***!
\*******************************************/

/*! exports provided: quadtree */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_quadtree_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/quadtree */ “./node_modules/d3-quadtree/src/quadtree.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “quadtree”, function() { return src_quadtree_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/***/ }),

/***/ “./node_modules/d3-quadtree/src/add.js”: /*!*********************************************!*\

!*** ./node_modules/d3-quadtree/src/add.js ***!
\*********************************************/

/*! exports provided: default, addAll */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “addAll”, function() { return addAll; }); /* harmony default export */ webpack_exports[“default”] = (function(d) {

var x = +this._x.call(null, d),
    y = +this._y.call(null, d);
return add(this.cover(x, y), x, y, d);

});

function add(tree, x, y, d) {

if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points

var parent,
    node = tree._root,
    leaf = {data: d},
    x0 = tree._x0,
    y0 = tree._y0,
    x1 = tree._x1,
    y1 = tree._y1,
    xm,
    ym,
    xp,
    yp,
    right,
    bottom,
    i,
    j;

// If the tree is empty, initialize the root as a leaf.
if (!node) return tree._root = leaf, tree;

// Find the existing leaf for the new point, or add it.
while (node.length) {
  if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;
  if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;
  if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;
}

// Is the new point is exactly coincident with the existing point?
xp = +tree._x.call(null, node.data);
yp = +tree._y.call(null, node.data);
if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;

// Otherwise, split the leaf node until the old and new point are separated.
do {
  parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);
  if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;
  if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;
} while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));
return parent[j] = node, parent[i] = leaf, tree;

}

function addAll(data) {

var d, i, n = data.length,
    x,
    y,
    xz = new Array(n),
    yz = new Array(n),
    x0 = Infinity,
    y0 = Infinity,
    x1 = -Infinity,
    y1 = -Infinity;

// Compute the points and their extent.
for (i = 0; i < n; ++i) {
  if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;
  xz[i] = x;
  yz[i] = y;
  if (x < x0) x0 = x;
  if (x > x1) x1 = x;
  if (y < y0) y0 = y;
  if (y > y1) y1 = y;
}

// If there were no (valid) points, inherit the existing extent.
if (x1 < x0) x0 = this._x0, x1 = this._x1;
if (y1 < y0) y0 = this._y0, y1 = this._y1;

// Expand the tree to cover the new points.
this.cover(x0, y0).cover(x1, y1);

// Add the new points.
for (i = 0; i < n; ++i) {
  add(this, xz[i], yz[i], data[i]);
}

return this;

}

/***/ }),

/***/ “./node_modules/d3-quadtree/src/cover.js”: /*!***********************************************!*\

!*** ./node_modules/d3-quadtree/src/cover.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x, y) {

if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points

var x0 = this._x0,
    y0 = this._y0,
    x1 = this._x1,
    y1 = this._y1;

// If the quadtree has no extent, initialize them.
// Integer extent are necessary so that if we later double the extent,
// the existing quadrant boundaries don’t change due to floating point error!
if (isNaN(x0)) {
  x1 = (x0 = Math.floor(x)) + 1;
  y1 = (y0 = Math.floor(y)) + 1;
}

// Otherwise, double repeatedly to cover.
else if (x0 > x || x > x1 || y0 > y || y > y1) {
  var z = x1 - x0,
      node = this._root,
      parent,
      i;

  switch (i = (y < (y0 + y1) / 2) << 1 | (x < (x0 + x1) / 2)) {
    case 0: {
      do parent = new Array(4), parent[i] = node, node = parent;
      while (z *= 2, x1 = x0 + z, y1 = y0 + z, x > x1 || y > y1);
      break;
    }
    case 1: {
      do parent = new Array(4), parent[i] = node, node = parent;
      while (z *= 2, x0 = x1 - z, y1 = y0 + z, x0 > x || y > y1);
      break;
    }
    case 2: {
      do parent = new Array(4), parent[i] = node, node = parent;
      while (z *= 2, x1 = x0 + z, y0 = y1 - z, x > x1 || y0 > y);
      break;
    }
    case 3: {
      do parent = new Array(4), parent[i] = node, node = parent;
      while (z *= 2, x0 = x1 - z, y0 = y1 - z, x0 > x || y0 > y);
      break;
    }
  }

  if (this._root && this._root.length) this._root = node;
}

// If the quadtree covers the point already, just return.
else return this;

this._x0 = x0;
this._y0 = y0;
this._x1 = x1;
this._y1 = y1;
return this;

});

/***/ }),

/***/ “./node_modules/d3-quadtree/src/data.js”: /*!**********************************************!*\

!*** ./node_modules/d3-quadtree/src/data.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

var data = [];
this.visit(function(node) {
  if (!node.length) do data.push(node.data); while (node = node.next)
});
return data;

});

/***/ }),

/***/ “./node_modules/d3-quadtree/src/extent.js”: /*!************************************************!*\

!*** ./node_modules/d3-quadtree/src/extent.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(_) {

return arguments.length
    ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])
    : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];

});

/***/ }),

/***/ “./node_modules/d3-quadtree/src/find.js”: /*!**********************************************!*\

!*** ./node_modules/d3-quadtree/src/find.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var quad_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./quad */ “./node_modules/d3-quadtree/src/quad.js”);

/* harmony default export */ webpack_exports[“default”] = (function(x, y, radius) {

var data,
    x0 = this._x0,
    y0 = this._y0,
    x1,
    y1,
    x2,
    y2,
    x3 = this._x1,
    y3 = this._y1,
    quads = [],
    node = this._root,
    q,
    i;

if (node) quads.push(new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](node, x0, y0, x3, y3));
if (radius == null) radius = Infinity;
else {
  x0 = x - radius, y0 = y - radius;
  x3 = x + radius, y3 = y + radius;
  radius *= radius;
}

while (q = quads.pop()) {

  // Stop searching if this quadrant can’t contain a closer node.
  if (!(node = q.node)
      || (x1 = q.x0) > x3
      || (y1 = q.y0) > y3
      || (x2 = q.x1) < x0
      || (y2 = q.y1) < y0) continue;

  // Bisect the current quadrant.
  if (node.length) {
    var xm = (x1 + x2) / 2,
        ym = (y1 + y2) / 2;

    quads.push(
      new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](node[3], xm, ym, x2, y2),
      new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](node[2], x1, ym, xm, y2),
      new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](node[1], xm, y1, x2, ym),
      new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](node[0], x1, y1, xm, ym)
    );

    // Visit the closest quadrant first.
    if (i = (y >= ym) << 1 | (x >= xm)) {
      q = quads[quads.length - 1];
      quads[quads.length - 1] = quads[quads.length - 1 - i];
      quads[quads.length - 1 - i] = q;
    }
  }

  // Visit this point. (Visiting coincident points isn’t necessary!)
  else {
    var dx = x - +this._x.call(null, node.data),
        dy = y - +this._y.call(null, node.data),
        d2 = dx * dx + dy * dy;
    if (d2 < radius) {
      var d = Math.sqrt(radius = d2);
      x0 = x - d, y0 = y - d;
      x3 = x + d, y3 = y + d;
      data = node.data;
    }
  }
}

return data;

});

/***/ }),

/***/ “./node_modules/d3-quadtree/src/quad.js”: /*!**********************************************!*\

!*** ./node_modules/d3-quadtree/src/quad.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(node, x0, y0, x1, y1) {

this.node = node;
this.x0 = x0;
this.y0 = y0;
this.x1 = x1;
this.y1 = y1;

});

/***/ }),

/***/ “./node_modules/d3-quadtree/src/quadtree.js”: /*!**************************************************!*\

!*** ./node_modules/d3-quadtree/src/quadtree.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return quadtree; }); /* harmony import */ var add_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./add */ “./node_modules/d3-quadtree/src/add.js”); /* harmony import */ var cover_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./cover */ “./node_modules/d3-quadtree/src/cover.js”); /* harmony import */ var data_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./data */ “./node_modules/d3-quadtree/src/data.js”); /* harmony import */ var extent_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./extent */ “./node_modules/d3-quadtree/src/extent.js”); /* harmony import */ var find_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./find */ “./node_modules/d3-quadtree/src/find.js”); /* harmony import */ var remove_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./remove */ “./node_modules/d3-quadtree/src/remove.js”); /* harmony import */ var root_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./root */ “./node_modules/d3-quadtree/src/root.js”); /* harmony import */ var size_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./size */ “./node_modules/d3-quadtree/src/size.js”); /* harmony import */ var visit_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./visit */ “./node_modules/d3-quadtree/src/visit.js”); /* harmony import */ var visitAfter_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./visitAfter */ “./node_modules/d3-quadtree/src/visitAfter.js”); /* harmony import */ var x_WEBPACK_IMPORTED_MODULE_10 = webpack_require(/*! ./x */ “./node_modules/d3-quadtree/src/x.js”); /* harmony import */ var y_WEBPACK_IMPORTED_MODULE_11 = webpack_require(/*! ./y */ “./node_modules/d3-quadtree/src/y.js”);

function quadtree(nodes, x, y) {

var tree = new Quadtree(x == null ? _x__WEBPACK_IMPORTED_MODULE_10__["defaultX"] : x, y == null ? _y__WEBPACK_IMPORTED_MODULE_11__["defaultY"] : y, NaN, NaN, NaN, NaN);
return nodes == null ? tree : tree.addAll(nodes);

}

function Quadtree(x, y, x0, y0, x1, y1) {

this._x = x;
this._y = y;
this._x0 = x0;
this._y0 = y0;
this._x1 = x1;
this._y1 = y1;
this._root = undefined;

}

function leaf_copy(leaf) {

var copy = {data: leaf.data}, next = copy;
while (leaf = leaf.next) next = next.next = {data: leaf.data};
return copy;

}

var treeProto = quadtree.prototype = Quadtree.prototype;

treeProto.copy = function() {

var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),
    node = this._root,
    nodes,
    child;

if (!node) return copy;

if (!node.length) return copy._root = leaf_copy(node), copy;

nodes = [{source: node, target: copy._root = new Array(4)}];
while (node = nodes.pop()) {
  for (var i = 0; i < 4; ++i) {
    if (child = node.source[i]) {
      if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});
      else node.target[i] = leaf_copy(child);
    }
  }
}

return copy;

};

treeProto.add = add_WEBPACK_IMPORTED_MODULE_0[“default”]; treeProto.addAll = add_WEBPACK_IMPORTED_MODULE_0[“addAll”]; treeProto.cover = cover_WEBPACK_IMPORTED_MODULE_1[“default”]; treeProto.data = data_WEBPACK_IMPORTED_MODULE_2[“default”]; treeProto.extent = extent_WEBPACK_IMPORTED_MODULE_3[“default”]; treeProto.find = find_WEBPACK_IMPORTED_MODULE_4[“default”]; treeProto.remove = remove_WEBPACK_IMPORTED_MODULE_5[“default”]; treeProto.removeAll = remove_WEBPACK_IMPORTED_MODULE_5[“removeAll”]; treeProto.root = root_WEBPACK_IMPORTED_MODULE_6[“default”]; treeProto.size = size_WEBPACK_IMPORTED_MODULE_7[“default”]; treeProto.visit = visit_WEBPACK_IMPORTED_MODULE_8[“default”]; treeProto.visitAfter = visitAfter_WEBPACK_IMPORTED_MODULE_9[“default”]; treeProto.x = x_WEBPACK_IMPORTED_MODULE_10[“default”]; treeProto.y = y_WEBPACK_IMPORTED_MODULE_11[“default”];

/***/ }),

/***/ “./node_modules/d3-quadtree/src/remove.js”: /*!************************************************!*\

!*** ./node_modules/d3-quadtree/src/remove.js ***!
\************************************************/

/*! exports provided: default, removeAll */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “removeAll”, function() { return removeAll; }); /* harmony default export */ webpack_exports[“default”] = (function(d) {

if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points

var parent,
    node = this._root,
    retainer,
    previous,
    next,
    x0 = this._x0,
    y0 = this._y0,
    x1 = this._x1,
    y1 = this._y1,
    x,
    y,
    xm,
    ym,
    right,
    bottom,
    i,
    j;

// If the tree is empty, initialize the root as a leaf.
if (!node) return this;

// Find the leaf node for the point.
// While descending, also retain the deepest parent with a non-removed sibling.
if (node.length) while (true) {
  if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;
  if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;
  if (!(parent = node, node = node[i = bottom << 1 | right])) return this;
  if (!node.length) break;
  if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;
}

// Find the point to remove.
while (node.data !== d) if (!(previous = node, node = node.next)) return this;
if (next = node.next) delete node.next;

// If there are multiple coincident points, remove just the point.
if (previous) return (next ? previous.next = next : delete previous.next), this;

// If this is the root point, remove it.
if (!parent) return this._root = next, this;

// Remove this leaf.
next ? parent[i] = next : delete parent[i];

// If the parent now contains exactly one leaf, collapse superfluous parents.
if ((node = parent[0] || parent[1] || parent[2] || parent[3])
    && node === (parent[3] || parent[2] || parent[1] || parent[0])
    && !node.length) {
  if (retainer) retainer[j] = node;
  else this._root = node;
}

return this;

});

function removeAll(data) {

for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);
return this;

}

/***/ }),

/***/ “./node_modules/d3-quadtree/src/root.js”: /*!**********************************************!*\

!*** ./node_modules/d3-quadtree/src/root.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

return this._root;

});

/***/ }),

/***/ “./node_modules/d3-quadtree/src/size.js”: /*!**********************************************!*\

!*** ./node_modules/d3-quadtree/src/size.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

var size = 0;
this.visit(function(node) {
  if (!node.length) do ++size; while (node = node.next)
});
return size;

});

/***/ }),

/***/ “./node_modules/d3-quadtree/src/visit.js”: /*!***********************************************!*\

!*** ./node_modules/d3-quadtree/src/visit.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var quad_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./quad */ “./node_modules/d3-quadtree/src/quad.js”);

/* harmony default export */ webpack_exports[“default”] = (function(callback) {

var quads = [], q, node = this._root, child, x0, y0, x1, y1;
if (node) quads.push(new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](node, this._x0, this._y0, this._x1, this._y1));
while (q = quads.pop()) {
  if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {
    var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;
    if (child = node[3]) quads.push(new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](child, xm, ym, x1, y1));
    if (child = node[2]) quads.push(new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](child, x0, ym, xm, y1));
    if (child = node[1]) quads.push(new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](child, xm, y0, x1, ym));
    if (child = node[0]) quads.push(new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](child, x0, y0, xm, ym));
  }
}
return this;

});

/***/ }),

/***/ “./node_modules/d3-quadtree/src/visitAfter.js”: /*!****************************************************!*\

!*** ./node_modules/d3-quadtree/src/visitAfter.js ***!
\****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var quad_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./quad */ “./node_modules/d3-quadtree/src/quad.js”);

/* harmony default export */ webpack_exports[“default”] = (function(callback) {

var quads = [], next = [], q;
if (this._root) quads.push(new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](this._root, this._x0, this._y0, this._x1, this._y1));
while (q = quads.pop()) {
  var node = q.node;
  if (node.length) {
    var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;
    if (child = node[0]) quads.push(new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](child, x0, y0, xm, ym));
    if (child = node[1]) quads.push(new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](child, xm, y0, x1, ym));
    if (child = node[2]) quads.push(new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](child, x0, ym, xm, y1));
    if (child = node[3]) quads.push(new _quad__WEBPACK_IMPORTED_MODULE_0__["default"](child, xm, ym, x1, y1));
  }
  next.push(q);
}
while (q = next.pop()) {
  callback(q.node, q.x0, q.y0, q.x1, q.y1);
}
return this;

});

/***/ }),

/***/ “./node_modules/d3-quadtree/src/x.js”: /*!*******************************************!*\

!*** ./node_modules/d3-quadtree/src/x.js ***!
\*******************************************/

/*! exports provided: defaultX, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “defaultX”, function() { return defaultX; }); function defaultX(d) {

return d[0];

}

/* harmony default export */ webpack_exports[“default”] = (function(_) {

return arguments.length ? (this._x = _, this) : this._x;

});

/***/ }),

/***/ “./node_modules/d3-quadtree/src/y.js”: /*!*******************************************!*\

!*** ./node_modules/d3-quadtree/src/y.js ***!
\*******************************************/

/*! exports provided: defaultY, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “defaultY”, function() { return defaultY; }); function defaultY(d) {

return d[1];

}

/* harmony default export */ webpack_exports[“default”] = (function(_) {

return arguments.length ? (this._y = _, this) : this._y;

});

/***/ }),

/***/ “./node_modules/d3-queue/index.js”: /*!****************************************!*\

!*** ./node_modules/d3-queue/index.js ***!
\****************************************/

/*! exports provided: queue */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_queue_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/queue */ “./node_modules/d3-queue/src/queue.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “queue”, function() { return src_queue_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/***/ }),

/***/ “./node_modules/d3-queue/src/array.js”: /*!********************************************!*\

!*** ./node_modules/d3-queue/src/array.js ***!
\********************************************/

/*! exports provided: slice */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “slice”, function() { return slice; }); var slice = [].slice;

/***/ }),

/***/ “./node_modules/d3-queue/src/queue.js”: /*!********************************************!*\

!*** ./node_modules/d3-queue/src/queue.js ***!
\********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return queue; }); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./array */ “./node_modules/d3-queue/src/array.js”);

var noabort = {};

function Queue(size) {

this._size = size;
this._call =
this._error = null;
this._tasks = [];
this._data = [];
this._waiting =
this._active =
this._ended =
this._start = 0; // inside a synchronous task callback?

}

Queue.prototype = queue.prototype = {

constructor: Queue,
defer: function(callback) {
  if (typeof callback !== "function") throw new Error("invalid callback");
  if (this._call) throw new Error("defer after await");
  if (this._error != null) return this;
  var t = _array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(arguments, 1);
  t.push(callback);
  ++this._waiting, this._tasks.push(t);
  poke(this);
  return this;
},
abort: function() {
  if (this._error == null) abort(this, new Error("abort"));
  return this;
},
await: function(callback) {
  if (typeof callback !== "function") throw new Error("invalid callback");
  if (this._call) throw new Error("multiple await");
  this._call = function(error, results) { callback.apply(null, [error].concat(results)); };
  maybeNotify(this);
  return this;
},
awaitAll: function(callback) {
  if (typeof callback !== "function") throw new Error("invalid callback");
  if (this._call) throw new Error("multiple await");
  this._call = callback;
  maybeNotify(this);
  return this;
}

};

function poke(q) {

if (!q._start) {
  try { start(q); } // let the current task complete
  catch (e) {
    if (q._tasks[q._ended + q._active - 1]) abort(q, e); // task errored synchronously
    else if (!q._data) throw e; // await callback errored synchronously
  }
}

}

function start(q) {

while (q._start = q._waiting && q._active < q._size) {
  var i = q._ended + q._active,
      t = q._tasks[i],
      j = t.length - 1,
      c = t[j];
  t[j] = end(q, i);
  --q._waiting, ++q._active;
  t = c.apply(null, t);
  if (!q._tasks[i]) continue; // task finished synchronously
  q._tasks[i] = t || noabort;
}

}

function end(q, i) {

return function(e, r) {
  if (!q._tasks[i]) return; // ignore multiple callbacks
  --q._active, ++q._ended;
  q._tasks[i] = null;
  if (q._error != null) return; // ignore secondary errors
  if (e != null) {
    abort(q, e);
  } else {
    q._data[i] = r;
    if (q._waiting) poke(q);
    else maybeNotify(q);
  }
};

}

function abort(q, e) {

var i = q._tasks.length, t;
q._error = e; // ignore active callbacks
q._data = undefined; // allow gc
q._waiting = NaN; // prevent starting

while (--i >= 0) {
  if (t = q._tasks[i]) {
    q._tasks[i] = null;
    if (t.abort) {
      try { t.abort(); }
      catch (e) { /* ignore */ }
    }
  }
}

q._active = NaN; // allow notification
maybeNotify(q);

}

function maybeNotify(q) {

if (!q._active && q._call) {
  var d = q._data;
  q._data = undefined; // allow gc
  q._call(q._error, d);
}

}

function queue(concurrency) {

if (concurrency == null) concurrency = Infinity;
else if (!((concurrency = +concurrency) >= 1)) throw new Error("invalid concurrency");
return new Queue(concurrency);

}

/***/ }),

/***/ “./node_modules/d3-random/index.js”: /*!*****************************************!*\

!*** ./node_modules/d3-random/index.js ***!
\*****************************************/

/*! exports provided: randomUniform, randomNormal, randomLogNormal, randomBates, randomIrwinHall, randomExponential */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_uniform_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/uniform */ “./node_modules/d3-random/src/uniform.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “randomUniform”, function() { return src_uniform_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_normal_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/normal */ “./node_modules/d3-random/src/normal.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “randomNormal”, function() { return src_normal_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_logNormal_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/logNormal */ “./node_modules/d3-random/src/logNormal.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “randomLogNormal”, function() { return src_logNormal_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_bates_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/bates */ “./node_modules/d3-random/src/bates.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “randomBates”, function() { return src_bates_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_irwinHall_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/irwinHall */ “./node_modules/d3-random/src/irwinHall.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “randomIrwinHall”, function() { return src_irwinHall_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony import */ var src_exponential_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/exponential */ “./node_modules/d3-random/src/exponential.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “randomExponential”, function() { return src_exponential_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/***/ }),

/***/ “./node_modules/d3-random/src/bates.js”: /*!*********************************************!*\

!*** ./node_modules/d3-random/src/bates.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var defaultSource_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./defaultSource */ “./node_modules/d3-random/src/defaultSource.js”); /* harmony import */ var irwinHall_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./irwinHall */ “./node_modules/d3-random/src/irwinHall.js”);

/* harmony default export */ webpack_exports[“default”] = ((function sourceRandomBates(source) {

function randomBates(n) {
  var randomIrwinHall = _irwinHall__WEBPACK_IMPORTED_MODULE_1__["default"].source(source)(n);
  return function() {
    return randomIrwinHall() / n;
  };
}

randomBates.source = sourceRandomBates;

return randomBates;

})(defaultSource_WEBPACK_IMPORTED_MODULE_0[“default”]));

/***/ }),

/***/ “./node_modules/d3-random/src/defaultSource.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-random/src/defaultSource.js ***!
\*****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

return Math.random();

});

/***/ }),

/***/ “./node_modules/d3-random/src/exponential.js”: /*!***************************************************!*\

!*** ./node_modules/d3-random/src/exponential.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var defaultSource_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./defaultSource */ “./node_modules/d3-random/src/defaultSource.js”);

/* harmony default export */ webpack_exports[“default”] = ((function sourceRandomExponential(source) {

function randomExponential(lambda) {
  return function() {
    return -Math.log(1 - source()) / lambda;
  };
}

randomExponential.source = sourceRandomExponential;

return randomExponential;

})(defaultSource_WEBPACK_IMPORTED_MODULE_0[“default”]));

/***/ }),

/***/ “./node_modules/d3-random/src/irwinHall.js”: /*!*************************************************!*\

!*** ./node_modules/d3-random/src/irwinHall.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var defaultSource_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./defaultSource */ “./node_modules/d3-random/src/defaultSource.js”);

/* harmony default export */ webpack_exports[“default”] = ((function sourceRandomIrwinHall(source) {

function randomIrwinHall(n) {
  return function() {
    for (var sum = 0, i = 0; i < n; ++i) sum += source();
    return sum;
  };
}

randomIrwinHall.source = sourceRandomIrwinHall;

return randomIrwinHall;

})(defaultSource_WEBPACK_IMPORTED_MODULE_0[“default”]));

/***/ }),

/***/ “./node_modules/d3-random/src/logNormal.js”: /*!*************************************************!*\

!*** ./node_modules/d3-random/src/logNormal.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var defaultSource_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./defaultSource */ “./node_modules/d3-random/src/defaultSource.js”); /* harmony import */ var normal_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./normal */ “./node_modules/d3-random/src/normal.js”);

/* harmony default export */ webpack_exports[“default”] = ((function sourceRandomLogNormal(source) {

function randomLogNormal() {
  var randomNormal = _normal__WEBPACK_IMPORTED_MODULE_1__["default"].source(source).apply(this, arguments);
  return function() {
    return Math.exp(randomNormal());
  };
}

randomLogNormal.source = sourceRandomLogNormal;

return randomLogNormal;

})(defaultSource_WEBPACK_IMPORTED_MODULE_0[“default”]));

/***/ }),

/***/ “./node_modules/d3-random/src/normal.js”: /*!**********************************************!*\

!*** ./node_modules/d3-random/src/normal.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var defaultSource_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./defaultSource */ “./node_modules/d3-random/src/defaultSource.js”);

/* harmony default export */ webpack_exports[“default”] = ((function sourceRandomNormal(source) {

function randomNormal(mu, sigma) {
  var x, r;
  mu = mu == null ? 0 : +mu;
  sigma = sigma == null ? 1 : +sigma;
  return function() {
    var y;

    // If available, use the second previously-generated uniform random.
    if (x != null) y = x, x = null;

    // Otherwise, generate a new x and y.
    else do {
      x = source() * 2 - 1;
      y = source() * 2 - 1;
      r = x * x + y * y;
    } while (!r || r > 1);

    return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);
  };
}

randomNormal.source = sourceRandomNormal;

return randomNormal;

})(defaultSource_WEBPACK_IMPORTED_MODULE_0[“default”]));

/***/ }),

/***/ “./node_modules/d3-random/src/uniform.js”: /*!***********************************************!*\

!*** ./node_modules/d3-random/src/uniform.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var defaultSource_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./defaultSource */ “./node_modules/d3-random/src/defaultSource.js”);

/* harmony default export */ webpack_exports[“default”] = ((function sourceRandomUniform(source) {

function randomUniform(min, max) {
  min = min == null ? 0 : +min;
  max = max == null ? 1 : +max;
  if (arguments.length === 1) max = min, min = 0;
  else max -= min;
  return function() {
    return source() * max + min;
  };
}

randomUniform.source = sourceRandomUniform;

return randomUniform;

})(defaultSource_WEBPACK_IMPORTED_MODULE_0[“default”]));

/***/ }),

/***/ “./node_modules/d3-request/index.js”: /*!******************************************!*\

!*** ./node_modules/d3-request/index.js ***!
\******************************************/

/*! exports provided: request, html, json, text, xml, csv, tsv */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_request_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/request */ “./node_modules/d3-request/src/request.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “request”, function() { return src_request_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_html_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/html */ “./node_modules/d3-request/src/html.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “html”, function() { return src_html_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_json_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/json */ “./node_modules/d3-request/src/json.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “json”, function() { return src_json_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_text_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/text */ “./node_modules/d3-request/src/text.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “text”, function() { return src_text_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_xml_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/xml */ “./node_modules/d3-request/src/xml.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “xml”, function() { return src_xml_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony import */ var src_csv_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/csv */ “./node_modules/d3-request/src/csv.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “csv”, function() { return src_csv_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/* harmony import */ var src_tsv_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./src/tsv */ “./node_modules/d3-request/src/tsv.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tsv”, function() { return src_tsv_WEBPACK_IMPORTED_MODULE_6[“default”]; });

/***/ }),

/***/ “./node_modules/d3-request/src/csv.js”: /*!********************************************!*\

!*** ./node_modules/d3-request/src/csv.js ***!
\********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_dsv_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-dsv */ “./node_modules/d3-dsv/index.js”); /* harmony import */ var dsv_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./dsv */ “./node_modules/d3-request/src/dsv.js”);

/* harmony default export */ webpack_exports[“default”] = (Object(dsv_WEBPACK_IMPORTED_MODULE_1[“default”])(“text/csv”, d3_dsv_WEBPACK_IMPORTED_MODULE_0_[“csvParse”]));

/***/ }),

/***/ “./node_modules/d3-request/src/dsv.js”: /*!********************************************!*\

!*** ./node_modules/d3-request/src/dsv.js ***!
\********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var request_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./request */ “./node_modules/d3-request/src/request.js”);

/* harmony default export */ webpack_exports[“default”] = (function(defaultMimeType, parse) {

return function(url, row, callback) {
  if (arguments.length < 3) callback = row, row = null;
  var r = Object(_request__WEBPACK_IMPORTED_MODULE_0__["default"])(url).mimeType(defaultMimeType);
  r.row = function(_) { return arguments.length ? r.response(responseOf(parse, row = _)) : row; };
  r.row(row);
  return callback ? r.get(callback) : r;
};

});

function responseOf(parse, row) {

return function(request) {
  return parse(request.responseText, row);
};

}

/***/ }),

/***/ “./node_modules/d3-request/src/html.js”: /*!*********************************************!*\

!*** ./node_modules/d3-request/src/html.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var type_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./type */ “./node_modules/d3-request/src/type.js”);

/* harmony default export */ webpack_exports[“default”] = (Object(type_WEBPACK_IMPORTED_MODULE_0[“default”])(“text/html”, function(xhr) {

return document.createRange().createContextualFragment(xhr.responseText);

}));

/***/ }),

/***/ “./node_modules/d3-request/src/json.js”: /*!*********************************************!*\

!*** ./node_modules/d3-request/src/json.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var type_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./type */ “./node_modules/d3-request/src/type.js”);

/* harmony default export */ webpack_exports[“default”] = (Object(type_WEBPACK_IMPORTED_MODULE_0[“default”])(“application/json”, function(xhr) {

return JSON.parse(xhr.responseText);

}));

/***/ }),

/***/ “./node_modules/d3-request/src/request.js”: /*!************************************************!*\

!*** ./node_modules/d3-request/src/request.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_collection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-collection */ “./node_modules/d3-collection/index.js”); /* harmony import */ var d3_dispatch_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-dispatch */ “./node_modules/d3-dispatch/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function(url, callback) {

var request,
    event = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_1__["dispatch"])("beforesend", "progress", "load", "error"),
    mimeType,
    headers = Object(d3_collection__WEBPACK_IMPORTED_MODULE_0__["map"])(),
    xhr = new XMLHttpRequest,
    user = null,
    password = null,
    response,
    responseType,
    timeout = 0;

// If IE does not support CORS, use XDomainRequest.
if (typeof XDomainRequest !== "undefined"
    && !("withCredentials" in xhr)
    && /^(http(s)?:)?\/\//.test(url)) xhr = new XDomainRequest;

"onload" in xhr
    ? xhr.onload = xhr.onerror = xhr.ontimeout = respond
    : xhr.onreadystatechange = function(o) { xhr.readyState > 3 && respond(o); };

function respond(o) {
  var status = xhr.status, result;
  if (!status && hasResponse(xhr)
      || status >= 200 && status < 300
      || status === 304) {
    if (response) {
      try {
        result = response.call(request, xhr);
      } catch (e) {
        event.call("error", request, e);
        return;
      }
    } else {
      result = xhr;
    }
    event.call("load", request, result);
  } else {
    event.call("error", request, o);
  }
}

xhr.onprogress = function(e) {
  event.call("progress", request, e);
};

request = {
  header: function(name, value) {
    name = (name + "").toLowerCase();
    if (arguments.length < 2) return headers.get(name);
    if (value == null) headers.remove(name);
    else headers.set(name, value + "");
    return request;
  },

  // If mimeType is non-null and no Accept header is set, a default is used.
  mimeType: function(value) {
    if (!arguments.length) return mimeType;
    mimeType = value == null ? null : value + "";
    return request;
  },

  // Specifies what type the response value should take;
  // for instance, arraybuffer, blob, document, or text.
  responseType: function(value) {
    if (!arguments.length) return responseType;
    responseType = value;
    return request;
  },

  timeout: function(value) {
    if (!arguments.length) return timeout;
    timeout = +value;
    return request;
  },

  user: function(value) {
    return arguments.length < 1 ? user : (user = value == null ? null : value + "", request);
  },

  password: function(value) {
    return arguments.length < 1 ? password : (password = value == null ? null : value + "", request);
  },

  // Specify how to convert the response content to a specific type;
  // changes the callback value on "load" events.
  response: function(value) {
    response = value;
    return request;
  },

  // Alias for send("GET", …).
  get: function(data, callback) {
    return request.send("GET", data, callback);
  },

  // Alias for send("POST", …).
  post: function(data, callback) {
    return request.send("POST", data, callback);
  },

  // If callback is non-null, it will be used for error and load events.
  send: function(method, data, callback) {
    xhr.open(method, url, true, user, password);
    if (mimeType != null && !headers.has("accept")) headers.set("accept", mimeType + ",*/*");
    if (xhr.setRequestHeader) headers.each(function(value, name) { xhr.setRequestHeader(name, value); });
    if (mimeType != null && xhr.overrideMimeType) xhr.overrideMimeType(mimeType);
    if (responseType != null) xhr.responseType = responseType;
    if (timeout > 0) xhr.timeout = timeout;
    if (callback == null && typeof data === "function") callback = data, data = null;
    if (callback != null && callback.length === 1) callback = fixCallback(callback);
    if (callback != null) request.on("error", callback).on("load", function(xhr) { callback(null, xhr); });
    event.call("beforesend", request, xhr);
    xhr.send(data == null ? null : data);
    return request;
  },

  abort: function() {
    xhr.abort();
    return request;
  },

  on: function() {
    var value = event.on.apply(event, arguments);
    return value === event ? request : value;
  }
};

if (callback != null) {
  if (typeof callback !== "function") throw new Error("invalid callback: " + callback);
  return request.get(callback);
}

return request;

});

function fixCallback(callback) {

return function(error, xhr) {
  callback(error == null ? xhr : null);
};

}

function hasResponse(xhr) {

var type = xhr.responseType;
return type && type !== "text"
    ? xhr.response // null on error
    : xhr.responseText; // "" on error

}

/***/ }),

/***/ “./node_modules/d3-request/src/text.js”: /*!*********************************************!*\

!*** ./node_modules/d3-request/src/text.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var type_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./type */ “./node_modules/d3-request/src/type.js”);

/* harmony default export */ webpack_exports[“default”] = (Object(type_WEBPACK_IMPORTED_MODULE_0[“default”])(“text/plain”, function(xhr) {

return xhr.responseText;

}));

/***/ }),

/***/ “./node_modules/d3-request/src/tsv.js”: /*!********************************************!*\

!*** ./node_modules/d3-request/src/tsv.js ***!
\********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_dsv_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-dsv */ “./node_modules/d3-dsv/index.js”); /* harmony import */ var dsv_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./dsv */ “./node_modules/d3-request/src/dsv.js”);

/* harmony default export */ webpack_exports[“default”] = (Object(dsv_WEBPACK_IMPORTED_MODULE_1[“default”])(“text/tab-separated-values”, d3_dsv_WEBPACK_IMPORTED_MODULE_0_[“tsvParse”]));

/***/ }),

/***/ “./node_modules/d3-request/src/type.js”: /*!*********************************************!*\

!*** ./node_modules/d3-request/src/type.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var request_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./request */ “./node_modules/d3-request/src/request.js”);

/* harmony default export */ webpack_exports[“default”] = (function(defaultMimeType, response) {

return function(url, callback) {
  var r = Object(_request__WEBPACK_IMPORTED_MODULE_0__["default"])(url).mimeType(defaultMimeType).response(response);
  if (callback != null) {
    if (typeof callback !== "function") throw new Error("invalid callback: " + callback);
    return r.get(callback);
  }
  return r;
};

});

/***/ }),

/***/ “./node_modules/d3-request/src/xml.js”: /*!********************************************!*\

!*** ./node_modules/d3-request/src/xml.js ***!
\********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var type_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./type */ “./node_modules/d3-request/src/type.js”);

/* harmony default export */ webpack_exports[“default”] = (Object(type_WEBPACK_IMPORTED_MODULE_0[“default”])(“application/xml”, function(xhr) {

var xml = xhr.responseXML;
if (!xml) throw new Error("parse error");
return xml;

}));

/***/ }),

/***/ “./node_modules/d3-scale/index.js”: /*!****************************************!*\

!*** ./node_modules/d3-scale/index.js ***!
\****************************************/

/*! exports provided: scaleBand, scalePoint, scaleIdentity, scaleLinear, scaleLog, scaleOrdinal, scaleImplicit, scalePow, scaleSqrt, scaleQuantile, scaleQuantize, scaleThreshold, scaleTime, scaleUtc, schemeCategory10, schemeCategory20b, schemeCategory20c, schemeCategory20, interpolateCubehelixDefault, interpolateRainbow, interpolateWarm, interpolateCool, interpolateViridis, interpolateMagma, interpolateInferno, interpolatePlasma, scaleSequential */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_band_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/band */ “./node_modules/d3-scale/src/band.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleBand”, function() { return src_band_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scalePoint”, function() { return src_band_WEBPACK_IMPORTED_MODULE_0[“point”]; });

/* harmony import */ var src_identity_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/identity */ “./node_modules/d3-scale/src/identity.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleIdentity”, function() { return src_identity_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_linear_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/linear */ “./node_modules/d3-scale/src/linear.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleLinear”, function() { return src_linear_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_log_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/log */ “./node_modules/d3-scale/src/log.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleLog”, function() { return src_log_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_ordinal_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/ordinal */ “./node_modules/d3-scale/src/ordinal.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleOrdinal”, function() { return src_ordinal_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleImplicit”, function() { return src_ordinal_WEBPACK_IMPORTED_MODULE_4[“implicit”]; });

/* harmony import */ var src_pow_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/pow */ “./node_modules/d3-scale/src/pow.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scalePow”, function() { return src_pow_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleSqrt”, function() { return src_pow_WEBPACK_IMPORTED_MODULE_5[“sqrt”]; });

/* harmony import */ var src_quantile_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./src/quantile */ “./node_modules/d3-scale/src/quantile.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleQuantile”, function() { return src_quantile_WEBPACK_IMPORTED_MODULE_6[“default”]; });

/* harmony import */ var src_quantize_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./src/quantize */ “./node_modules/d3-scale/src/quantize.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleQuantize”, function() { return src_quantize_WEBPACK_IMPORTED_MODULE_7[“default”]; });

/* harmony import */ var src_threshold_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./src/threshold */ “./node_modules/d3-scale/src/threshold.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleThreshold”, function() { return src_threshold_WEBPACK_IMPORTED_MODULE_8[“default”]; });

/* harmony import */ var src_time_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./src/time */ “./node_modules/d3-scale/src/time.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleTime”, function() { return src_time_WEBPACK_IMPORTED_MODULE_9[“default”]; });

/* harmony import */ var src_utcTime_WEBPACK_IMPORTED_MODULE_10 = webpack_require(/*! ./src/utcTime */ “./node_modules/d3-scale/src/utcTime.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleUtc”, function() { return src_utcTime_WEBPACK_IMPORTED_MODULE_10[“default”]; });

/* harmony import */ var src_category10_WEBPACK_IMPORTED_MODULE_11 = webpack_require(/*! ./src/category10 */ “./node_modules/d3-scale/src/category10.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “schemeCategory10”, function() { return src_category10_WEBPACK_IMPORTED_MODULE_11[“default”]; });

/* harmony import */ var src_category20b_WEBPACK_IMPORTED_MODULE_12 = webpack_require(/*! ./src/category20b */ “./node_modules/d3-scale/src/category20b.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “schemeCategory20b”, function() { return src_category20b_WEBPACK_IMPORTED_MODULE_12[“default”]; });

/* harmony import */ var src_category20c_WEBPACK_IMPORTED_MODULE_13 = webpack_require(/*! ./src/category20c */ “./node_modules/d3-scale/src/category20c.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “schemeCategory20c”, function() { return src_category20c_WEBPACK_IMPORTED_MODULE_13[“default”]; });

/* harmony import */ var src_category20_WEBPACK_IMPORTED_MODULE_14 = webpack_require(/*! ./src/category20 */ “./node_modules/d3-scale/src/category20.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “schemeCategory20”, function() { return src_category20_WEBPACK_IMPORTED_MODULE_14[“default”]; });

/* harmony import */ var src_cubehelix_WEBPACK_IMPORTED_MODULE_15 = webpack_require(/*! ./src/cubehelix */ “./node_modules/d3-scale/src/cubehelix.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateCubehelixDefault”, function() { return src_cubehelix_WEBPACK_IMPORTED_MODULE_15[“default”]; });

/* harmony import */ var src_rainbow_WEBPACK_IMPORTED_MODULE_16 = webpack_require(/*! ./src/rainbow */ “./node_modules/d3-scale/src/rainbow.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateRainbow”, function() { return src_rainbow_WEBPACK_IMPORTED_MODULE_16[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateWarm”, function() { return src_rainbow_WEBPACK_IMPORTED_MODULE_16[“warm”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateCool”, function() { return src_rainbow_WEBPACK_IMPORTED_MODULE_16[“cool”]; });

/* harmony import */ var src_viridis_WEBPACK_IMPORTED_MODULE_17 = webpack_require(/*! ./src/viridis */ “./node_modules/d3-scale/src/viridis.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateViridis”, function() { return src_viridis_WEBPACK_IMPORTED_MODULE_17[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateMagma”, function() { return src_viridis_WEBPACK_IMPORTED_MODULE_17[“magma”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateInferno”, function() { return src_viridis_WEBPACK_IMPORTED_MODULE_17[“inferno”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolatePlasma”, function() { return src_viridis_WEBPACK_IMPORTED_MODULE_17[“plasma”]; });

/* harmony import */ var src_sequential_WEBPACK_IMPORTED_MODULE_18 = webpack_require(/*! ./src/sequential */ “./node_modules/d3-scale/src/sequential.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleSequential”, function() { return src_sequential_WEBPACK_IMPORTED_MODULE_18[“default”]; });

/***/ }),

/***/ “./node_modules/d3-scale/src/array.js”: /*!********************************************!*\

!*** ./node_modules/d3-scale/src/array.js ***!
\********************************************/

/*! exports provided: map, slice */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “map”, function() { return map; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “slice”, function() { return slice; }); var array = Array.prototype;

var map = array.map; var slice = array.slice;

/***/ }),

/***/ “./node_modules/d3-scale/src/band.js”: /*!*******************************************!*\

!*** ./node_modules/d3-scale/src/band.js ***!
\*******************************************/

/*! exports provided: default, point */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return band; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “point”, function() { return point; }); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”); /* harmony import */ var ordinal_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./ordinal */ “./node_modules/d3-scale/src/ordinal.js”);

function band() {

var scale = Object(_ordinal__WEBPACK_IMPORTED_MODULE_1__["default"])().unknown(undefined),
    domain = scale.domain,
    ordinalRange = scale.range,
    range = [0, 1],
    step,
    bandwidth,
    round = false,
    paddingInner = 0,
    paddingOuter = 0,
    align = 0.5;

delete scale.unknown;

function rescale() {
  var n = domain().length,
      reverse = range[1] < range[0],
      start = range[reverse - 0],
      stop = range[1 - reverse];
  step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);
  if (round) step = Math.floor(step);
  start += (stop - start - step * (n - paddingInner)) * align;
  bandwidth = step * (1 - paddingInner);
  if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);
  var values = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["range"])(n).map(function(i) { return start + step * i; });
  return ordinalRange(reverse ? values.reverse() : values);
}

scale.domain = function(_) {
  return arguments.length ? (domain(_), rescale()) : domain();
};

scale.range = function(_) {
  return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();
};

scale.rangeRound = function(_) {
  return range = [+_[0], +_[1]], round = true, rescale();
};

scale.bandwidth = function() {
  return bandwidth;
};

scale.step = function() {
  return step;
};

scale.round = function(_) {
  return arguments.length ? (round = !!_, rescale()) : round;
};

scale.padding = function(_) {
  return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;
};

scale.paddingInner = function(_) {
  return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;
};

scale.paddingOuter = function(_) {
  return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;
};

scale.align = function(_) {
  return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;
};

scale.copy = function() {
  return band()
      .domain(domain())
      .range(range)
      .round(round)
      .paddingInner(paddingInner)
      .paddingOuter(paddingOuter)
      .align(align);
};

return rescale();

}

function pointish(scale) {

var copy = scale.copy;

scale.padding = scale.paddingOuter;
delete scale.paddingInner;
delete scale.paddingOuter;

scale.copy = function() {
  return pointish(copy());
};

return scale;

}

function point() {

return pointish(band().paddingInner(1));

}

/***/ }),

/***/ “./node_modules/d3-scale/src/category10.js”: /*!*************************************************!*\

!*** ./node_modules/d3-scale/src/category10.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var colors_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./colors */ “./node_modules/d3-scale/src/colors.js”);

/* harmony default export */ webpack_exports[“default”] = (Object(colors_WEBPACK_IMPORTED_MODULE_0[“default”])(“1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf”));

/***/ }),

/***/ “./node_modules/d3-scale/src/category20.js”: /*!*************************************************!*\

!*** ./node_modules/d3-scale/src/category20.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var colors_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./colors */ “./node_modules/d3-scale/src/colors.js”);

/* harmony default export */ webpack_exports[“default”] = (Object(colors_WEBPACK_IMPORTED_MODULE_0[“default”])(“1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5”));

/***/ }),

/***/ “./node_modules/d3-scale/src/category20b.js”: /*!**************************************************!*\

!*** ./node_modules/d3-scale/src/category20b.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var colors_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./colors */ “./node_modules/d3-scale/src/colors.js”);

/* harmony default export */ webpack_exports[“default”] = (Object(colors_WEBPACK_IMPORTED_MODULE_0[“default”])(“393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6”));

/***/ }),

/***/ “./node_modules/d3-scale/src/category20c.js”: /*!**************************************************!*\

!*** ./node_modules/d3-scale/src/category20c.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var colors_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./colors */ “./node_modules/d3-scale/src/colors.js”);

/* harmony default export */ webpack_exports[“default”] = (Object(colors_WEBPACK_IMPORTED_MODULE_0[“default”])(“3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9”));

/***/ }),

/***/ “./node_modules/d3-scale/src/colors.js”: /*!*********************************************!*\

!*** ./node_modules/d3-scale/src/colors.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(s) {

return s.match(/.{6}/g).map(function(x) {
  return "#" + x;
});

});

/***/ }),

/***/ “./node_modules/d3-scale/src/constant.js”: /*!***********************************************!*\

!*** ./node_modules/d3-scale/src/constant.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return function() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-scale/src/continuous.js”: /*!*************************************************!*\

!*** ./node_modules/d3-scale/src/continuous.js ***!
\*************************************************/

/*! exports provided: deinterpolateLinear, copy, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “deinterpolateLinear”, function() { return deinterpolateLinear; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “copy”, function() { return copy; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return continuous; }); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”); /* harmony import */ var d3_interpolate_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-interpolate */ “./node_modules/d3-interpolate/index.js”); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./array */ “./node_modules/d3-scale/src/array.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./constant */ “./node_modules/d3-scale/src/constant.js”); /* harmony import */ var number_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./number */ “./node_modules/d3-scale/src/number.js”);

var unit = [0, 1];

function deinterpolateLinear(a, b) {

return (b -= (a = +a))
    ? function(x) { return (x - a) / b; }
    : Object(_constant__WEBPACK_IMPORTED_MODULE_3__["default"])(b);

}

function deinterpolateClamp(deinterpolate) {

return function(a, b) {
  var d = deinterpolate(a = +a, b = +b);
  return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };
};

}

function reinterpolateClamp(reinterpolate) {

return function(a, b) {
  var r = reinterpolate(a = +a, b = +b);
  return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };
};

}

function bimap(domain, range, deinterpolate, reinterpolate) {

var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];
if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);
else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);
return function(x) { return r0(d0(x)); };

}

function polymap(domain, range, deinterpolate, reinterpolate) {

var j = Math.min(domain.length, range.length) - 1,
    d = new Array(j),
    r = new Array(j),
    i = -1;

// Reverse descending domains.
if (domain[j] < domain[0]) {
  domain = domain.slice().reverse();
  range = range.slice().reverse();
}

while (++i < j) {
  d[i] = deinterpolate(domain[i], domain[i + 1]);
  r[i] = reinterpolate(range[i], range[i + 1]);
}

return function(x) {
  var i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["bisect"])(domain, x, 1, j) - 1;
  return r[i](d[i](x));
};

}

function copy(source, target) {

return target
    .domain(source.domain())
    .range(source.range())
    .interpolate(source.interpolate())
    .clamp(source.clamp());

}

// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. // reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b]. function continuous(deinterpolate, reinterpolate) {

var domain = unit,
    range = unit,
    interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolate"],
    clamp = false,
    piecewise,
    output,
    input;

function rescale() {
  piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;
  output = input = null;
  return scale;
}

function scale(x) {
  return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate)))(+x);
}

scale.invert = function(y) {
  return (input || (input = piecewise(range, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);
};

scale.domain = function(_) {
  return arguments.length ? (domain = _array__WEBPACK_IMPORTED_MODULE_2__["map"].call(_, _number__WEBPACK_IMPORTED_MODULE_4__["default"]), rescale()) : domain.slice();
};

scale.range = function(_) {
  return arguments.length ? (range = _array__WEBPACK_IMPORTED_MODULE_2__["slice"].call(_), rescale()) : range.slice();
};

scale.rangeRound = function(_) {
  return range = _array__WEBPACK_IMPORTED_MODULE_2__["slice"].call(_), interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateRound"], rescale();
};

scale.clamp = function(_) {
  return arguments.length ? (clamp = !!_, rescale()) : clamp;
};

scale.interpolate = function(_) {
  return arguments.length ? (interpolate = _, rescale()) : interpolate;
};

return rescale();

}

/***/ }),

/***/ “./node_modules/d3-scale/src/cubehelix.js”: /*!************************************************!*\

!*** ./node_modules/d3-scale/src/cubehelix.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_color_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-color */ “./node_modules/d3-color/index.js”); /* harmony import */ var d3_interpolate_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-interpolate */ “./node_modules/d3-interpolate/index.js”);

/* harmony default export */ webpack_exports[“default”] = (Object(d3_interpolate_WEBPACK_IMPORTED_MODULE_1_[“interpolateCubehelixLong”])(Object(d3_color_WEBPACK_IMPORTED_MODULE_0_[“cubehelix”])(300, 0.5, 0.0), Object(d3_color_WEBPACK_IMPORTED_MODULE_0_[“cubehelix”])(-240, 0.5, 1.0)));

/***/ }),

/***/ “./node_modules/d3-scale/src/identity.js”: /*!***********************************************!*\

!*** ./node_modules/d3-scale/src/identity.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return identity; }); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./array */ “./node_modules/d3-scale/src/array.js”); /* harmony import */ var linear_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./linear */ “./node_modules/d3-scale/src/linear.js”); /* harmony import */ var number_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./number */ “./node_modules/d3-scale/src/number.js”);

function identity() {

var domain = [0, 1];

function scale(x) {
  return +x;
}

scale.invert = scale;

scale.domain = scale.range = function(_) {
  return arguments.length ? (domain = _array__WEBPACK_IMPORTED_MODULE_0__["map"].call(_, _number__WEBPACK_IMPORTED_MODULE_2__["default"]), scale) : domain.slice();
};

scale.copy = function() {
  return identity().domain(domain);
};

return Object(_linear__WEBPACK_IMPORTED_MODULE_1__["linearish"])(scale);

}

/***/ }),

/***/ “./node_modules/d3-scale/src/linear.js”: /*!*********************************************!*\

!*** ./node_modules/d3-scale/src/linear.js ***!
\*********************************************/

/*! exports provided: linearish, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “linearish”, function() { return linearish; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return linear; }); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”); /* harmony import */ var d3_interpolate_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-interpolate */ “./node_modules/d3-interpolate/index.js”); /* harmony import */ var continuous_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./continuous */ “./node_modules/d3-scale/src/continuous.js”); /* harmony import */ var tickFormat_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./tickFormat */ “./node_modules/d3-scale/src/tickFormat.js”);

function linearish(scale) {

var domain = scale.domain;

scale.ticks = function(count) {
  var d = domain();
  return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["ticks"])(d[0], d[d.length - 1], count == null ? 10 : count);
};

scale.tickFormat = function(count, specifier) {
  return Object(_tickFormat__WEBPACK_IMPORTED_MODULE_3__["default"])(domain(), count, specifier);
};

scale.nice = function(count) {
  if (count == null) count = 10;

  var d = domain(),
      i0 = 0,
      i1 = d.length - 1,
      start = d[i0],
      stop = d[i1],
      step;

  if (stop < start) {
    step = start, start = stop, stop = step;
    step = i0, i0 = i1, i1 = step;
  }

  step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickIncrement"])(start, stop, count);

  if (step > 0) {
    start = Math.floor(start / step) * step;
    stop = Math.ceil(stop / step) * step;
    step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickIncrement"])(start, stop, count);
  } else if (step < 0) {
    start = Math.ceil(start * step) / step;
    stop = Math.floor(stop * step) / step;
    step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickIncrement"])(start, stop, count);
  }

  if (step > 0) {
    d[i0] = Math.floor(start / step) * step;
    d[i1] = Math.ceil(stop / step) * step;
    domain(d);
  } else if (step < 0) {
    d[i0] = Math.ceil(start * step) / step;
    d[i1] = Math.floor(stop * step) / step;
    domain(d);
  }

  return scale;
};

return scale;

}

function linear() {

var scale = Object(_continuous__WEBPACK_IMPORTED_MODULE_2__["default"])(_continuous__WEBPACK_IMPORTED_MODULE_2__["deinterpolateLinear"], d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateNumber"]);

scale.copy = function() {
  return Object(_continuous__WEBPACK_IMPORTED_MODULE_2__["copy"])(scale, linear());
};

return linearish(scale);

}

/***/ }),

/***/ “./node_modules/d3-scale/src/log.js”: /*!******************************************!*\

!*** ./node_modules/d3-scale/src/log.js ***!
\******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return log; }); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”); /* harmony import */ var d3_format_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-format */ “./node_modules/d3-format/index.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./constant */ “./node_modules/d3-scale/src/constant.js”); /* harmony import */ var nice_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./nice */ “./node_modules/d3-scale/src/nice.js”); /* harmony import */ var continuous_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./continuous */ “./node_modules/d3-scale/src/continuous.js”);

function deinterpolate(a, b) {

return (b = Math.log(b / a))
    ? function(x) { return Math.log(x / a) / b; }
    : Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])(b);

}

function reinterpolate(a, b) {

return a < 0
    ? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }
    : function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };

}

function pow10(x) {

return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x;

}

function powp(base) {

return base === 10 ? pow10
    : base === Math.E ? Math.exp
    : function(x) { return Math.pow(base, x); };

}

function logp(base) {

return base === Math.E ? Math.log
    : base === 10 && Math.log10
    || base === 2 && Math.log2
    || (base = Math.log(base), function(x) { return Math.log(x) / base; });

}

function reflect(f) {

return function(x) {
  return -f(-x);
};

}

function log() {

var scale = Object(_continuous__WEBPACK_IMPORTED_MODULE_4__["default"])(deinterpolate, reinterpolate).domain([1, 10]),
    domain = scale.domain,
    base = 10,
    logs = logp(10),
    pows = powp(10);

function rescale() {
  logs = logp(base), pows = powp(base);
  if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);
  return scale;
}

scale.base = function(_) {
  return arguments.length ? (base = +_, rescale()) : base;
};

scale.domain = function(_) {
  return arguments.length ? (domain(_), rescale()) : domain();
};

scale.ticks = function(count) {
  var d = domain(),
      u = d[0],
      v = d[d.length - 1],
      r;

  if (r = v < u) i = u, u = v, v = i;

  var i = logs(u),
      j = logs(v),
      p,
      k,
      t,
      n = count == null ? 10 : +count,
      z = [];

  if (!(base % 1) && j - i < n) {
    i = Math.round(i) - 1, j = Math.round(j) + 1;
    if (u > 0) for (; i < j; ++i) {
      for (k = 1, p = pows(i); k < base; ++k) {
        t = p * k;
        if (t < u) continue;
        if (t > v) break;
        z.push(t);
      }
    } else for (; i < j; ++i) {
      for (k = base - 1, p = pows(i); k >= 1; --k) {
        t = p * k;
        if (t < u) continue;
        if (t > v) break;
        z.push(t);
      }
    }
  } else {
    z = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["ticks"])(i, j, Math.min(j - i, n)).map(pows);
  }

  return r ? z.reverse() : z;
};

scale.tickFormat = function(count, specifier) {
  if (specifier == null) specifier = base === 10 ? ".0e" : ",";
  if (typeof specifier !== "function") specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["format"])(specifier);
  if (count === Infinity) return specifier;
  if (count == null) count = 10;
  var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?
  return function(d) {
    var i = d / pows(Math.round(logs(d)));
    if (i * base < base - 0.5) i *= base;
    return i <= k ? specifier(d) : "";
  };
};

scale.nice = function() {
  return domain(Object(_nice__WEBPACK_IMPORTED_MODULE_3__["default"])(domain(), {
    floor: function(x) { return pows(Math.floor(logs(x))); },
    ceil: function(x) { return pows(Math.ceil(logs(x))); }
  }));
};

scale.copy = function() {
  return Object(_continuous__WEBPACK_IMPORTED_MODULE_4__["copy"])(scale, log().base(base));
};

return scale;

}

/***/ }),

/***/ “./node_modules/d3-scale/src/nice.js”: /*!*******************************************!*\

!*** ./node_modules/d3-scale/src/nice.js ***!
\*******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(domain, interval) {

domain = domain.slice();

var i0 = 0,
    i1 = domain.length - 1,
    x0 = domain[i0],
    x1 = domain[i1],
    t;

if (x1 < x0) {
  t = i0, i0 = i1, i1 = t;
  t = x0, x0 = x1, x1 = t;
}

domain[i0] = interval.floor(x0);
domain[i1] = interval.ceil(x1);
return domain;

});

/***/ }),

/***/ “./node_modules/d3-scale/src/number.js”: /*!*********************************************!*\

!*** ./node_modules/d3-scale/src/number.js ***!
\*********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return +x;

});

/***/ }),

/***/ “./node_modules/d3-scale/src/ordinal.js”: /*!**********************************************!*\

!*** ./node_modules/d3-scale/src/ordinal.js ***!
\**********************************************/

/*! exports provided: implicit, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “implicit”, function() { return implicit; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return ordinal; }); /* harmony import */ var d3_collection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-collection */ “./node_modules/d3-collection/index.js”); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./array */ “./node_modules/d3-scale/src/array.js”);

var implicit = {name: “implicit”};

function ordinal(range) {

var index = Object(d3_collection__WEBPACK_IMPORTED_MODULE_0__["map"])(),
    domain = [],
    unknown = implicit;

range = range == null ? [] : _array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(range);

function scale(d) {
  var key = d + "", i = index.get(key);
  if (!i) {
    if (unknown !== implicit) return unknown;
    index.set(key, i = domain.push(d));
  }
  return range[(i - 1) % range.length];
}

scale.domain = function(_) {
  if (!arguments.length) return domain.slice();
  domain = [], index = Object(d3_collection__WEBPACK_IMPORTED_MODULE_0__["map"])();
  var i = -1, n = _.length, d, key;
  while (++i < n) if (!index.has(key = (d = _[i]) + "")) index.set(key, domain.push(d));
  return scale;
};

scale.range = function(_) {
  return arguments.length ? (range = _array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(_), scale) : range.slice();
};

scale.unknown = function(_) {
  return arguments.length ? (unknown = _, scale) : unknown;
};

scale.copy = function() {
  return ordinal()
      .domain(domain)
      .range(range)
      .unknown(unknown);
};

return scale;

}

/***/ }),

/***/ “./node_modules/d3-scale/src/pow.js”: /*!******************************************!*\

!*** ./node_modules/d3-scale/src/pow.js ***!
\******************************************/

/*! exports provided: default, sqrt */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return pow; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sqrt”, function() { return sqrt; }); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./constant */ “./node_modules/d3-scale/src/constant.js”); /* harmony import */ var linear_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./linear */ “./node_modules/d3-scale/src/linear.js”); /* harmony import */ var continuous_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./continuous */ “./node_modules/d3-scale/src/continuous.js”);

function raise(x, exponent) {

return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);

}

function pow() {

var exponent = 1,
    scale = Object(_continuous__WEBPACK_IMPORTED_MODULE_2__["default"])(deinterpolate, reinterpolate),
    domain = scale.domain;

function deinterpolate(a, b) {
  return (b = raise(b, exponent) - (a = raise(a, exponent)))
      ? function(x) { return (raise(x, exponent) - a) / b; }
      : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(b);
}

function reinterpolate(a, b) {
  b = raise(b, exponent) - (a = raise(a, exponent));
  return function(t) { return raise(a + b * t, 1 / exponent); };
}

scale.exponent = function(_) {
  return arguments.length ? (exponent = +_, domain(domain())) : exponent;
};

scale.copy = function() {
  return Object(_continuous__WEBPACK_IMPORTED_MODULE_2__["copy"])(scale, pow().exponent(exponent));
};

return Object(_linear__WEBPACK_IMPORTED_MODULE_1__["linearish"])(scale);

}

function sqrt() {

return pow().exponent(0.5);

}

/***/ }),

/***/ “./node_modules/d3-scale/src/quantile.js”: /*!***********************************************!*\

!*** ./node_modules/d3-scale/src/quantile.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return quantile; }); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./array */ “./node_modules/d3-scale/src/array.js”);

function quantile() {

var domain = [],
    range = [],
    thresholds = [];

function rescale() {
  var i = 0, n = Math.max(1, range.length);
  thresholds = new Array(n - 1);
  while (++i < n) thresholds[i - 1] = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["quantile"])(domain, i / n);
  return scale;
}

function scale(x) {
  if (!isNaN(x = +x)) return range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["bisect"])(thresholds, x)];
}

scale.invertExtent = function(y) {
  var i = range.indexOf(y);
  return i < 0 ? [NaN, NaN] : [
    i > 0 ? thresholds[i - 1] : domain[0],
    i < thresholds.length ? thresholds[i] : domain[domain.length - 1]
  ];
};

scale.domain = function(_) {
  if (!arguments.length) return domain.slice();
  domain = [];
  for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);
  domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_0__["ascending"]);
  return rescale();
};

scale.range = function(_) {
  return arguments.length ? (range = _array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(_), rescale()) : range.slice();
};

scale.quantiles = function() {
  return thresholds.slice();
};

scale.copy = function() {
  return quantile()
      .domain(domain)
      .range(range);
};

return scale;

}

/***/ }),

/***/ “./node_modules/d3-scale/src/quantize.js”: /*!***********************************************!*\

!*** ./node_modules/d3-scale/src/quantize.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return quantize; }); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./array */ “./node_modules/d3-scale/src/array.js”); /* harmony import */ var linear_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./linear */ “./node_modules/d3-scale/src/linear.js”);

function quantize() {

var x0 = 0,
    x1 = 1,
    n = 1,
    domain = [0.5],
    range = [0, 1];

function scale(x) {
  if (x <= x) return range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["bisect"])(domain, x, 0, n)];
}

function rescale() {
  var i = -1;
  domain = new Array(n);
  while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);
  return scale;
}

scale.domain = function(_) {
  return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];
};

scale.range = function(_) {
  return arguments.length ? (n = (range = _array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(_)).length - 1, rescale()) : range.slice();
};

scale.invertExtent = function(y) {
  var i = range.indexOf(y);
  return i < 0 ? [NaN, NaN]
      : i < 1 ? [x0, domain[0]]
      : i >= n ? [domain[n - 1], x1]
      : [domain[i - 1], domain[i]];
};

scale.copy = function() {
  return quantize()
      .domain([x0, x1])
      .range(range);
};

return Object(_linear__WEBPACK_IMPORTED_MODULE_2__["linearish"])(scale);

}

/***/ }),

/***/ “./node_modules/d3-scale/src/rainbow.js”: /*!**********************************************!*\

!*** ./node_modules/d3-scale/src/rainbow.js ***!
\**********************************************/

/*! exports provided: warm, cool, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “warm”, function() { return warm; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cool”, function() { return cool; }); /* harmony import */ var d3_color_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-color */ “./node_modules/d3-color/index.js”); /* harmony import */ var d3_interpolate_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-interpolate */ “./node_modules/d3-interpolate/index.js”);

var warm = Object(d3_interpolate_WEBPACK_IMPORTED_MODULE_1_[“interpolateCubehelixLong”])(Object(d3_color_WEBPACK_IMPORTED_MODULE_0_[“cubehelix”])(-100, 0.75, 0.35), Object(d3_color_WEBPACK_IMPORTED_MODULE_0_[“cubehelix”])(80, 1.50, 0.8));

var cool = Object(d3_interpolate_WEBPACK_IMPORTED_MODULE_1_[“interpolateCubehelixLong”])(Object(d3_color_WEBPACK_IMPORTED_MODULE_0_[“cubehelix”])(260, 0.75, 0.35), Object(d3_color_WEBPACK_IMPORTED_MODULE_0_[“cubehelix”])(80, 1.50, 0.8));

var rainbow = Object(d3_color_WEBPACK_IMPORTED_MODULE_0_[“cubehelix”])();

/* harmony default export */ webpack_exports[“default”] = (function(t) {

if (t < 0 || t > 1) t -= Math.floor(t);
var ts = Math.abs(t - 0.5);
rainbow.h = 360 * t - 100;
rainbow.s = 1.5 - 1.5 * ts;
rainbow.l = 0.8 - 0.9 * ts;
return rainbow + "";

});

/***/ }),

/***/ “./node_modules/d3-scale/src/sequential.js”: /*!*************************************************!*\

!*** ./node_modules/d3-scale/src/sequential.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return sequential; }); /* harmony import */ var linear_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./linear */ “./node_modules/d3-scale/src/linear.js”);

function sequential(interpolator) {

var x0 = 0,
    x1 = 1,
    clamp = false;

function scale(x) {
  var t = (x - x0) / (x1 - x0);
  return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);
}

scale.domain = function(_) {
  return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];
};

scale.clamp = function(_) {
  return arguments.length ? (clamp = !!_, scale) : clamp;
};

scale.interpolator = function(_) {
  return arguments.length ? (interpolator = _, scale) : interpolator;
};

scale.copy = function() {
  return sequential(interpolator).domain([x0, x1]).clamp(clamp);
};

return Object(_linear__WEBPACK_IMPORTED_MODULE_0__["linearish"])(scale);

}

/***/ }),

/***/ “./node_modules/d3-scale/src/threshold.js”: /*!************************************************!*\

!*** ./node_modules/d3-scale/src/threshold.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return threshold; }); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./array */ “./node_modules/d3-scale/src/array.js”);

function threshold() {

var domain = [0.5],
    range = [0, 1],
    n = 1;

function scale(x) {
  if (x <= x) return range[Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["bisect"])(domain, x, 0, n)];
}

scale.domain = function(_) {
  return arguments.length ? (domain = _array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();
};

scale.range = function(_) {
  return arguments.length ? (range = _array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();
};

scale.invertExtent = function(y) {
  var i = range.indexOf(y);
  return [domain[i - 1], domain[i]];
};

scale.copy = function() {
  return threshold()
      .domain(domain)
      .range(range);
};

return scale;

}

/***/ }),

/***/ “./node_modules/d3-scale/src/tickFormat.js”: /*!*************************************************!*\

!*** ./node_modules/d3-scale/src/tickFormat.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”); /* harmony import */ var d3_format_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-format */ “./node_modules/d3-format/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function(domain, count, specifier) {

var start = domain[0],
    stop = domain[domain.length - 1],
    step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickStep"])(start, stop, count == null ? 10 : count),
    precision;
specifier = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["formatSpecifier"])(specifier == null ? ",f" : specifier);
switch (specifier.type) {
  case "s": {
    var value = Math.max(Math.abs(start), Math.abs(stop));
    if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["precisionPrefix"])(step, value))) specifier.precision = precision;
    return Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["formatPrefix"])(specifier, value);
  }
  case "":
  case "e":
  case "g":
  case "p":
  case "r": {
    if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["precisionRound"])(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e");
    break;
  }
  case "f":
  case "%": {
    if (specifier.precision == null && !isNaN(precision = Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["precisionFixed"])(step))) specifier.precision = precision - (specifier.type === "%") * 2;
    break;
  }
}
return Object(d3_format__WEBPACK_IMPORTED_MODULE_1__["format"])(specifier);

});

/***/ }),

/***/ “./node_modules/d3-scale/src/time.js”: /*!*******************************************!*\

!*** ./node_modules/d3-scale/src/time.js ***!
\*******************************************/

/*! exports provided: calendar, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “calendar”, function() { return calendar; }); /* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”); /* harmony import */ var d3_interpolate_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-interpolate */ “./node_modules/d3-interpolate/index.js”); /* harmony import */ var d3_time_WEBPACK_IMPORTED_MODULE_2_ = webpack_require(/*! d3-time */ “./node_modules/d3-time/index.js”); /* harmony import */ var d3_time_format_WEBPACK_IMPORTED_MODULE_3_ = webpack_require(/*! d3-time-format */ “./node_modules/d3-time-format/index.js”); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./array */ “./node_modules/d3-scale/src/array.js”); /* harmony import */ var continuous_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./continuous */ “./node_modules/d3-scale/src/continuous.js”); /* harmony import */ var nice_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./nice */ “./node_modules/d3-scale/src/nice.js”);

var durationSecond = 1000,

durationMinute = durationSecond * 60,
durationHour = durationMinute * 60,
durationDay = durationHour * 24,
durationWeek = durationDay * 7,
durationMonth = durationDay * 30,
durationYear = durationDay * 365;

function date(t) {

return new Date(t);

}

function number(t) {

return t instanceof Date ? +t : +new Date(+t);

}

function calendar(year, month, week, day, hour, minute, second, millisecond, format) {

var scale = Object(_continuous__WEBPACK_IMPORTED_MODULE_5__["default"])(_continuous__WEBPACK_IMPORTED_MODULE_5__["deinterpolateLinear"], d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateNumber"]),
    invert = scale.invert,
    domain = scale.domain;

var formatMillisecond = format(".%L"),
    formatSecond = format(":%S"),
    formatMinute = format("%I:%M"),
    formatHour = format("%I %p"),
    formatDay = format("%a %d"),
    formatWeek = format("%b %d"),
    formatMonth = format("%B"),
    formatYear = format("%Y");

var tickIntervals = [
  [second,  1,      durationSecond],
  [second,  5,  5 * durationSecond],
  [second, 15, 15 * durationSecond],
  [second, 30, 30 * durationSecond],
  [minute,  1,      durationMinute],
  [minute,  5,  5 * durationMinute],
  [minute, 15, 15 * durationMinute],
  [minute, 30, 30 * durationMinute],
  [  hour,  1,      durationHour  ],
  [  hour,  3,  3 * durationHour  ],
  [  hour,  6,  6 * durationHour  ],
  [  hour, 12, 12 * durationHour  ],
  [   day,  1,      durationDay   ],
  [   day,  2,  2 * durationDay   ],
  [  week,  1,      durationWeek  ],
  [ month,  1,      durationMonth ],
  [ month,  3,  3 * durationMonth ],
  [  year,  1,      durationYear  ]
];

function tickFormat(date) {
  return (second(date) < date ? formatMillisecond
      : minute(date) < date ? formatSecond
      : hour(date) < date ? formatMinute
      : day(date) < date ? formatHour
      : month(date) < date ? (week(date) < date ? formatDay : formatWeek)
      : year(date) < date ? formatMonth
      : formatYear)(date);
}

function tickInterval(interval, start, stop, step) {
  if (interval == null) interval = 10;

  // If a desired tick count is specified, pick a reasonable tick interval
  // based on the extent of the domain and a rough estimate of tick size.
  // Otherwise, assume interval is already a time interval and use it.
  if (typeof interval === "number") {
    var target = Math.abs(stop - start) / interval,
        i = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["bisector"])(function(i) { return i[2]; }).right(tickIntervals, target);
    if (i === tickIntervals.length) {
      step = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickStep"])(start / durationYear, stop / durationYear, interval);
      interval = year;
    } else if (i) {
      i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];
      step = i[1];
      interval = i[0];
    } else {
      step = Math.max(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["tickStep"])(start, stop, interval), 1);
      interval = millisecond;
    }
  }

  return step == null ? interval : interval.every(step);
}

scale.invert = function(y) {
  return new Date(invert(y));
};

scale.domain = function(_) {
  return arguments.length ? domain(_array__WEBPACK_IMPORTED_MODULE_4__["map"].call(_, number)) : domain().map(date);
};

scale.ticks = function(interval, step) {
  var d = domain(),
      t0 = d[0],
      t1 = d[d.length - 1],
      r = t1 < t0,
      t;
  if (r) t = t0, t0 = t1, t1 = t;
  t = tickInterval(interval, t0, t1, step);
  t = t ? t.range(t0, t1 + 1) : []; // inclusive stop
  return r ? t.reverse() : t;
};

scale.tickFormat = function(count, specifier) {
  return specifier == null ? tickFormat : format(specifier);
};

scale.nice = function(interval, step) {
  var d = domain();
  return (interval = tickInterval(interval, d[0], d[d.length - 1], step))
      ? domain(Object(_nice__WEBPACK_IMPORTED_MODULE_6__["default"])(d, interval))
      : scale;
};

scale.copy = function() {
  return Object(_continuous__WEBPACK_IMPORTED_MODULE_5__["copy"])(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));
};

return scale;

}

/* harmony default export */ webpack_exports[“default”] = (function() {

return calendar(d3_time__WEBPACK_IMPORTED_MODULE_2__["timeYear"], d3_time__WEBPACK_IMPORTED_MODULE_2__["timeMonth"], d3_time__WEBPACK_IMPORTED_MODULE_2__["timeWeek"], d3_time__WEBPACK_IMPORTED_MODULE_2__["timeDay"], d3_time__WEBPACK_IMPORTED_MODULE_2__["timeHour"], d3_time__WEBPACK_IMPORTED_MODULE_2__["timeMinute"], d3_time__WEBPACK_IMPORTED_MODULE_2__["timeSecond"], d3_time__WEBPACK_IMPORTED_MODULE_2__["timeMillisecond"], d3_time_format__WEBPACK_IMPORTED_MODULE_3__["timeFormat"]).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);

});

/***/ }),

/***/ “./node_modules/d3-scale/src/utcTime.js”: /*!**********************************************!*\

!*** ./node_modules/d3-scale/src/utcTime.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var time_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./time */ “./node_modules/d3-scale/src/time.js”); /* harmony import */ var d3_time_format_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-time-format */ “./node_modules/d3-time-format/index.js”); /* harmony import */ var d3_time_WEBPACK_IMPORTED_MODULE_2_ = webpack_require(/*! d3-time */ “./node_modules/d3-time/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

return Object(_time__WEBPACK_IMPORTED_MODULE_0__["calendar"])(d3_time__WEBPACK_IMPORTED_MODULE_2__["utcYear"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcMonth"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcWeek"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcDay"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcHour"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcMinute"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcSecond"], d3_time__WEBPACK_IMPORTED_MODULE_2__["utcMillisecond"], d3_time_format__WEBPACK_IMPORTED_MODULE_1__["utcFormat"]).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);

});

/***/ }),

/***/ “./node_modules/d3-scale/src/viridis.js”: /*!**********************************************!*\

!*** ./node_modules/d3-scale/src/viridis.js ***!
\**********************************************/

/*! exports provided: default, magma, inferno, plasma */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “magma”, function() { return magma; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “inferno”, function() { return inferno; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “plasma”, function() { return plasma; }); /* harmony import */ var colors_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./colors */ “./node_modules/d3-scale/src/colors.js”);

function ramp(range) {

var n = range.length;
return function(t) {
  return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];
};

}

/* harmony default export */ webpack_exports[“default”] = (ramp(Object(colors_WEBPACK_IMPORTED_MODULE_0[“default”])(“44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725”)));

var magma = ramp(Object(colors_WEBPACK_IMPORTED_MODULE_0[“default”])(“00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf”));

var inferno = ramp(Object(colors_WEBPACK_IMPORTED_MODULE_0[“default”])(“00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4”));

var plasma = ramp(Object(colors_WEBPACK_IMPORTED_MODULE_0[“default”])(“0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921”));

/***/ }),

/***/ “./node_modules/d3-selection/index.js”: /*!********************************************!*\

!*** ./node_modules/d3-selection/index.js ***!
\********************************************/

/*! exports provided: create, creator, local, matcher, mouse, namespace, namespaces, clientPoint, select, selectAll, selection, selector, selectorAll, style, touch, touches, window, event, customEvent */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_create_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/create */ “./node_modules/d3-selection/src/create.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “create”, function() { return src_create_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_creator_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/creator */ “./node_modules/d3-selection/src/creator.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “creator”, function() { return src_creator_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_local_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/local */ “./node_modules/d3-selection/src/local.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “local”, function() { return src_local_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_matcher_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/matcher */ “./node_modules/d3-selection/src/matcher.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “matcher”, function() { return src_matcher_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_mouse_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/mouse */ “./node_modules/d3-selection/src/mouse.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “mouse”, function() { return src_mouse_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony import */ var src_namespace_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/namespace */ “./node_modules/d3-selection/src/namespace.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “namespace”, function() { return src_namespace_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/* harmony import */ var src_namespaces_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./src/namespaces */ “./node_modules/d3-selection/src/namespaces.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “namespaces”, function() { return src_namespaces_WEBPACK_IMPORTED_MODULE_6[“default”]; });

/* harmony import */ var src_point_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./src/point */ “./node_modules/d3-selection/src/point.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “clientPoint”, function() { return src_point_WEBPACK_IMPORTED_MODULE_7[“default”]; });

/* harmony import */ var src_select_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./src/select */ “./node_modules/d3-selection/src/select.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “select”, function() { return src_select_WEBPACK_IMPORTED_MODULE_8[“default”]; });

/* harmony import */ var src_selectAll_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./src/selectAll */ “./node_modules/d3-selection/src/selectAll.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “selectAll”, function() { return src_selectAll_WEBPACK_IMPORTED_MODULE_9[“default”]; });

/* harmony import */ var src_selection_index_WEBPACK_IMPORTED_MODULE_10 = webpack_require(/*! ./src/selection/index */ “./node_modules/d3-selection/src/selection/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “selection”, function() { return src_selection_index_WEBPACK_IMPORTED_MODULE_10[“default”]; });

/* harmony import */ var src_selector_WEBPACK_IMPORTED_MODULE_11 = webpack_require(/*! ./src/selector */ “./node_modules/d3-selection/src/selector.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “selector”, function() { return src_selector_WEBPACK_IMPORTED_MODULE_11[“default”]; });

/* harmony import */ var src_selectorAll_WEBPACK_IMPORTED_MODULE_12 = webpack_require(/*! ./src/selectorAll */ “./node_modules/d3-selection/src/selectorAll.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “selectorAll”, function() { return src_selectorAll_WEBPACK_IMPORTED_MODULE_12[“default”]; });

/* harmony import */ var src_selection_style_WEBPACK_IMPORTED_MODULE_13 = webpack_require(/*! ./src/selection/style */ “./node_modules/d3-selection/src/selection/style.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “style”, function() { return src_selection_style_WEBPACK_IMPORTED_MODULE_13[“styleValue”]; });

/* harmony import */ var src_touch_WEBPACK_IMPORTED_MODULE_14 = webpack_require(/*! ./src/touch */ “./node_modules/d3-selection/src/touch.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “touch”, function() { return src_touch_WEBPACK_IMPORTED_MODULE_14[“default”]; });

/* harmony import */ var src_touches_WEBPACK_IMPORTED_MODULE_15 = webpack_require(/*! ./src/touches */ “./node_modules/d3-selection/src/touches.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “touches”, function() { return src_touches_WEBPACK_IMPORTED_MODULE_15[“default”]; });

/* harmony import */ var src_window_WEBPACK_IMPORTED_MODULE_16 = webpack_require(/*! ./src/window */ “./node_modules/d3-selection/src/window.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “window”, function() { return src_window_WEBPACK_IMPORTED_MODULE_16[“default”]; });

/* harmony import */ var src_selection_on_WEBPACK_IMPORTED_MODULE_17 = webpack_require(/*! ./src/selection/on */ “./node_modules/d3-selection/src/selection/on.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “event”, function() { return src_selection_on_WEBPACK_IMPORTED_MODULE_17[“event”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “customEvent”, function() { return src_selection_on_WEBPACK_IMPORTED_MODULE_17[“customEvent”]; });

/***/ }),

/***/ “./node_modules/d3-selection/src/constant.js”: /*!***************************************************!*\

!*** ./node_modules/d3-selection/src/constant.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return function() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-selection/src/create.js”: /*!*************************************************!*\

!*** ./node_modules/d3-selection/src/create.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var creator_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./creator */ “./node_modules/d3-selection/src/creator.js”); /* harmony import */ var select_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./select */ “./node_modules/d3-selection/src/select.js”);

/* harmony default export */ webpack_exports[“default”] = (function(name) {

return Object(_select__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_creator__WEBPACK_IMPORTED_MODULE_0__["default"])(name).call(document.documentElement));

});

/***/ }),

/***/ “./node_modules/d3-selection/src/creator.js”: /*!**************************************************!*\

!*** ./node_modules/d3-selection/src/creator.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var namespace_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./namespace */ “./node_modules/d3-selection/src/namespace.js”); /* harmony import */ var namespaces_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./namespaces */ “./node_modules/d3-selection/src/namespaces.js”);

function creatorInherit(name) {

return function() {
  var document = this.ownerDocument,
      uri = this.namespaceURI;
  return uri === _namespaces__WEBPACK_IMPORTED_MODULE_1__["xhtml"] && document.documentElement.namespaceURI === _namespaces__WEBPACK_IMPORTED_MODULE_1__["xhtml"]
      ? document.createElement(name)
      : document.createElementNS(uri, name);
};

}

function creatorFixed(fullname) {

return function() {
  return this.ownerDocument.createElementNS(fullname.space, fullname.local);
};

}

/* harmony default export */ webpack_exports[“default”] = (function(name) {

var fullname = Object(_namespace__WEBPACK_IMPORTED_MODULE_0__["default"])(name);
return (fullname.local
    ? creatorFixed
    : creatorInherit)(fullname);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/local.js”: /*!************************************************!*\

!*** ./node_modules/d3-selection/src/local.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return local; }); var nextId = 0;

function local() {

return new Local;

}

function Local() {

this._ = "@" + (++nextId).toString(36);

}

Local.prototype = local.prototype = {

constructor: Local,
get: function(node) {
  var id = this._;
  while (!(id in node)) if (!(node = node.parentNode)) return;
  return node[id];
},
set: function(node, value) {
  return node[this._] = value;
},
remove: function(node) {
  return this._ in node && delete node[this._];
},
toString: function() {
  return this._;
}

};

/***/ }),

/***/ “./node_modules/d3-selection/src/matcher.js”: /*!**************************************************!*\

!*** ./node_modules/d3-selection/src/matcher.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); var matcher = function(selector) {

return function() {
  return this.matches(selector);
};

};

if (typeof document !== “undefined”) {

var element = document.documentElement;
if (!element.matches) {
  var vendorMatches = element.webkitMatchesSelector
      || element.msMatchesSelector
      || element.mozMatchesSelector
      || element.oMatchesSelector;
  matcher = function(selector) {
    return function() {
      return vendorMatches.call(this, selector);
    };
  };
}

}

/* harmony default export */ webpack_exports[“default”] = (matcher);

/***/ }),

/***/ “./node_modules/d3-selection/src/mouse.js”: /*!************************************************!*\

!*** ./node_modules/d3-selection/src/mouse.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var sourceEvent_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./sourceEvent */ “./node_modules/d3-selection/src/sourceEvent.js”); /* harmony import */ var point_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./point */ “./node_modules/d3-selection/src/point.js”);

/* harmony default export */ webpack_exports[“default”] = (function(node) {

var event = Object(_sourceEvent__WEBPACK_IMPORTED_MODULE_0__["default"])();
if (event.changedTouches) event = event.changedTouches[0];
return Object(_point__WEBPACK_IMPORTED_MODULE_1__["default"])(node, event);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/namespace.js”: /*!****************************************************!*\

!*** ./node_modules/d3-selection/src/namespace.js ***!
\****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var namespaces_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./namespaces */ “./node_modules/d3-selection/src/namespaces.js”);

/* harmony default export */ webpack_exports[“default”] = (function(name) {

var prefix = name += "", i = prefix.indexOf(":");
if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
return _namespaces__WEBPACK_IMPORTED_MODULE_0__["default"].hasOwnProperty(prefix) ? {space: _namespaces__WEBPACK_IMPORTED_MODULE_0__["default"][prefix], local: name} : name;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/namespaces.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-selection/src/namespaces.js ***!
\*****************************************************/

/*! exports provided: xhtml, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “xhtml”, function() { return xhtml; }); var xhtml = “www.w3.org/1999/xhtml”;

/* harmony default export */ webpack_exports[“default”] = ({

svg: "http://www.w3.org/2000/svg",
xhtml: xhtml,
xlink: "http://www.w3.org/1999/xlink",
xml: "http://www.w3.org/XML/1998/namespace",
xmlns: "http://www.w3.org/2000/xmlns/"

});

/***/ }),

/***/ “./node_modules/d3-selection/src/point.js”: /*!************************************************!*\

!*** ./node_modules/d3-selection/src/point.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(node, event) {

var svg = node.ownerSVGElement || node;

if (svg.createSVGPoint) {
  var point = svg.createSVGPoint();
  point.x = event.clientX, point.y = event.clientY;
  point = point.matrixTransform(node.getScreenCTM().inverse());
  return [point.x, point.y];
}

var rect = node.getBoundingClientRect();
return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];

});

/***/ }),

/***/ “./node_modules/d3-selection/src/select.js”: /*!*************************************************!*\

!*** ./node_modules/d3-selection/src/select.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var selection_index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./selection/index */ “./node_modules/d3-selection/src/selection/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function(selector) {

return typeof selector === "string"
    ? new _selection_index__WEBPACK_IMPORTED_MODULE_0__["Selection"]([[document.querySelector(selector)]], [document.documentElement])
    : new _selection_index__WEBPACK_IMPORTED_MODULE_0__["Selection"]([[selector]], _selection_index__WEBPACK_IMPORTED_MODULE_0__["root"]);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selectAll.js”: /*!****************************************************!*\

!*** ./node_modules/d3-selection/src/selectAll.js ***!
\****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var selection_index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./selection/index */ “./node_modules/d3-selection/src/selection/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function(selector) {

return typeof selector === "string"
    ? new _selection_index__WEBPACK_IMPORTED_MODULE_0__["Selection"]([document.querySelectorAll(selector)], [document.documentElement])
    : new _selection_index__WEBPACK_IMPORTED_MODULE_0__["Selection"]([selector == null ? [] : selector], _selection_index__WEBPACK_IMPORTED_MODULE_0__["root"]);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/append.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/append.js ***!
\***********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var creator_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../creator */ “./node_modules/d3-selection/src/creator.js”);

/* harmony default export */ webpack_exports[“default”] = (function(name) {

var create = typeof name === "function" ? name : Object(_creator__WEBPACK_IMPORTED_MODULE_0__["default"])(name);
return this.select(function() {
  return this.appendChild(create.apply(this, arguments));
});

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/attr.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/attr.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var namespace_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../namespace */ “./node_modules/d3-selection/src/namespace.js”);

function attrRemove(name) {

return function() {
  this.removeAttribute(name);
};

}

function attrRemoveNS(fullname) {

return function() {
  this.removeAttributeNS(fullname.space, fullname.local);
};

}

function attrConstant(name, value) {

return function() {
  this.setAttribute(name, value);
};

}

function attrConstantNS(fullname, value) {

return function() {
  this.setAttributeNS(fullname.space, fullname.local, value);
};

}

function attrFunction(name, value) {

return function() {
  var v = value.apply(this, arguments);
  if (v == null) this.removeAttribute(name);
  else this.setAttribute(name, v);
};

}

function attrFunctionNS(fullname, value) {

return function() {
  var v = value.apply(this, arguments);
  if (v == null) this.removeAttributeNS(fullname.space, fullname.local);
  else this.setAttributeNS(fullname.space, fullname.local, v);
};

}

/* harmony default export */ webpack_exports[“default”] = (function(name, value) {

var fullname = Object(_namespace__WEBPACK_IMPORTED_MODULE_0__["default"])(name);

if (arguments.length < 2) {
  var node = this.node();
  return fullname.local
      ? node.getAttributeNS(fullname.space, fullname.local)
      : node.getAttribute(fullname);
}

return this.each((value == null
    ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function"
    ? (fullname.local ? attrFunctionNS : attrFunction)
    : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/call.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/call.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

var callback = arguments[0];
arguments[0] = this;
callback.apply(null, arguments);
return this;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/classed.js”: /*!************************************************************!*\

!*** ./node_modules/d3-selection/src/selection/classed.js ***!
\************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function classArray(string) {

return string.trim().split(/^|\s+/);

}

function classList(node) {

return node.classList || new ClassList(node);

}

function ClassList(node) {

this._node = node;
this._names = classArray(node.getAttribute("class") || "");

}

ClassList.prototype = {

add: function(name) {
  var i = this._names.indexOf(name);
  if (i < 0) {
    this._names.push(name);
    this._node.setAttribute("class", this._names.join(" "));
  }
},
remove: function(name) {
  var i = this._names.indexOf(name);
  if (i >= 0) {
    this._names.splice(i, 1);
    this._node.setAttribute("class", this._names.join(" "));
  }
},
contains: function(name) {
  return this._names.indexOf(name) >= 0;
}

};

function classedAdd(node, names) {

var list = classList(node), i = -1, n = names.length;
while (++i < n) list.add(names[i]);

}

function classedRemove(node, names) {

var list = classList(node), i = -1, n = names.length;
while (++i < n) list.remove(names[i]);

}

function classedTrue(names) {

return function() {
  classedAdd(this, names);
};

}

function classedFalse(names) {

return function() {
  classedRemove(this, names);
};

}

function classedFunction(names, value) {

return function() {
  (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);
};

}

/* harmony default export */ webpack_exports[“default”] = (function(name, value) {

var names = classArray(name + "");

if (arguments.length < 2) {
  var list = classList(this.node()), i = -1, n = names.length;
  while (++i < n) if (!list.contains(names[i])) return false;
  return true;
}

return this.each((typeof value === "function"
    ? classedFunction : value
    ? classedTrue
    : classedFalse)(names, value));

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/clone.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/clone.js ***!
\**********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function selection_cloneShallow() {

return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);

}

function selection_cloneDeep() {

return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);

}

/* harmony default export */ webpack_exports[“default”] = (function(deep) {

return this.select(deep ? selection_cloneDeep : selection_cloneShallow);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/data.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/data.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./index */ “./node_modules/d3-selection/src/selection/index.js”); /* harmony import */ var enter_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./enter */ “./node_modules/d3-selection/src/selection/enter.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ../constant */ “./node_modules/d3-selection/src/constant.js”);

var keyPrefix = “$”; // Protect against keys like “__proto__”.

function bindIndex(parent, group, enter, update, exit, data) {

var i = 0,
    node,
    groupLength = group.length,
    dataLength = data.length;

// Put any non-null nodes that fit into update.
// Put any null nodes into enter.
// Put any remaining data into enter.
for (; i < dataLength; ++i) {
  if (node = group[i]) {
    node.__data__ = data[i];
    update[i] = node;
  } else {
    enter[i] = new _enter__WEBPACK_IMPORTED_MODULE_1__["EnterNode"](parent, data[i]);
  }
}

// Put any non-null nodes that don’t fit into exit.
for (; i < groupLength; ++i) {
  if (node = group[i]) {
    exit[i] = node;
  }
}

}

function bindKey(parent, group, enter, update, exit, data, key) {

var i,
    node,
    nodeByKeyValue = {},
    groupLength = group.length,
    dataLength = data.length,
    keyValues = new Array(groupLength),
    keyValue;

// Compute the key for each node.
// If multiple nodes have the same key, the duplicates are added to exit.
for (i = 0; i < groupLength; ++i) {
  if (node = group[i]) {
    keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);
    if (keyValue in nodeByKeyValue) {
      exit[i] = node;
    } else {
      nodeByKeyValue[keyValue] = node;
    }
  }
}

// Compute the key for each datum.
// If there a node associated with this key, join and add it to update.
// If there is not (or the key is a duplicate), add it to enter.
for (i = 0; i < dataLength; ++i) {
  keyValue = keyPrefix + key.call(parent, data[i], i, data);
  if (node = nodeByKeyValue[keyValue]) {
    update[i] = node;
    node.__data__ = data[i];
    nodeByKeyValue[keyValue] = null;
  } else {
    enter[i] = new _enter__WEBPACK_IMPORTED_MODULE_1__["EnterNode"](parent, data[i]);
  }
}

// Add any remaining nodes that were not bound to data to exit.
for (i = 0; i < groupLength; ++i) {
  if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {
    exit[i] = node;
  }
}

}

/* harmony default export */ webpack_exports[“default”] = (function(value, key) {

if (!value) {
  data = new Array(this.size()), j = -1;
  this.each(function(d) { data[++j] = d; });
  return data;
}

var bind = key ? bindKey : bindIndex,
    parents = this._parents,
    groups = this._groups;

if (typeof value !== "function") value = Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])(value);

for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {
  var parent = parents[j],
      group = groups[j],
      groupLength = group.length,
      data = value.call(parent, parent && parent.__data__, j, parents),
      dataLength = data.length,
      enterGroup = enter[j] = new Array(dataLength),
      updateGroup = update[j] = new Array(dataLength),
      exitGroup = exit[j] = new Array(groupLength);

  bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);

  // Now connect the enter nodes to their following update node, such that
  // appendChild can insert the materialized enter node before this node,
  // rather than at the end of the parent node.
  for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {
    if (previous = enterGroup[i0]) {
      if (i0 >= i1) i1 = i0 + 1;
      while (!(next = updateGroup[i1]) && ++i1 < dataLength);
      previous._next = next || null;
    }
  }
}

update = new _index__WEBPACK_IMPORTED_MODULE_0__["Selection"](update, parents);
update._enter = enter;
update._exit = exit;
return update;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/datum.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/datum.js ***!
\**********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(value) {

return arguments.length
    ? this.property("__data__", value)
    : this.node().__data__;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/dispatch.js”: /*!*************************************************************!*\

!*** ./node_modules/d3-selection/src/selection/dispatch.js ***!
\*************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var window_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../window */ “./node_modules/d3-selection/src/window.js”);

function dispatchEvent(node, type, params) {

var window = Object(_window__WEBPACK_IMPORTED_MODULE_0__["default"])(node),
    event = window.CustomEvent;

if (typeof event === "function") {
  event = new event(type, params);
} else {
  event = window.document.createEvent("Event");
  if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;
  else event.initEvent(type, false, false);
}

node.dispatchEvent(event);

}

function dispatchConstant(type, params) {

return function() {
  return dispatchEvent(this, type, params);
};

}

function dispatchFunction(type, params) {

return function() {
  return dispatchEvent(this, type, params.apply(this, arguments));
};

}

/* harmony default export */ webpack_exports[“default”] = (function(type, params) {

return this.each((typeof params === "function"
    ? dispatchFunction
    : dispatchConstant)(type, params));

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/each.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/each.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(callback) {

for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
  for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
    if (node = group[i]) callback.call(node, node.__data__, i, group);
  }
}

return this;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/empty.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/empty.js ***!
\**********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

return !this.node();

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/enter.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/enter.js ***!
\**********************************************************/

/*! exports provided: default, EnterNode */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “EnterNode”, function() { return EnterNode; }); /* harmony import */ var sparse_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./sparse */ “./node_modules/d3-selection/src/selection/sparse.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./index */ “./node_modules/d3-selection/src/selection/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

return new _index__WEBPACK_IMPORTED_MODULE_1__["Selection"](this._enter || this._groups.map(_sparse__WEBPACK_IMPORTED_MODULE_0__["default"]), this._parents);

});

function EnterNode(parent, datum) {

this.ownerDocument = parent.ownerDocument;
this.namespaceURI = parent.namespaceURI;
this._next = null;
this._parent = parent;
this.__data__ = datum;

}

EnterNode.prototype = {

constructor: EnterNode,
appendChild: function(child) { return this._parent.insertBefore(child, this._next); },
insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },
querySelector: function(selector) { return this._parent.querySelector(selector); },
querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }

};

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/exit.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/exit.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var sparse_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./sparse */ “./node_modules/d3-selection/src/selection/sparse.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./index */ “./node_modules/d3-selection/src/selection/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

return new _index__WEBPACK_IMPORTED_MODULE_1__["Selection"](this._exit || this._groups.map(_sparse__WEBPACK_IMPORTED_MODULE_0__["default"]), this._parents);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/filter.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/filter.js ***!
\***********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./index */ “./node_modules/d3-selection/src/selection/index.js”); /* harmony import */ var matcher_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../matcher */ “./node_modules/d3-selection/src/matcher.js”);

/* harmony default export */ webpack_exports[“default”] = (function(match) {

if (typeof match !== "function") match = Object(_matcher__WEBPACK_IMPORTED_MODULE_1__["default"])(match);

for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
  for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
    if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
      subgroup.push(node);
    }
  }
}

return new _index__WEBPACK_IMPORTED_MODULE_0__["Selection"](subgroups, this._parents);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/html.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/html.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function htmlRemove() {

this.innerHTML = "";

}

function htmlConstant(value) {

return function() {
  this.innerHTML = value;
};

}

function htmlFunction(value) {

return function() {
  var v = value.apply(this, arguments);
  this.innerHTML = v == null ? "" : v;
};

}

/* harmony default export */ webpack_exports[“default”] = (function(value) {

return arguments.length
    ? this.each(value == null
        ? htmlRemove : (typeof value === "function"
        ? htmlFunction
        : htmlConstant)(value))
    : this.node().innerHTML;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/index.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/index.js ***!
\**********************************************************/

/*! exports provided: root, Selection, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “root”, function() { return root; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “Selection”, function() { return Selection; }); /* harmony import */ var select_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./select */ “./node_modules/d3-selection/src/selection/select.js”); /* harmony import */ var selectAll_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./selectAll */ “./node_modules/d3-selection/src/selection/selectAll.js”); /* harmony import */ var filter_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./filter */ “./node_modules/d3-selection/src/selection/filter.js”); /* harmony import */ var data_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./data */ “./node_modules/d3-selection/src/selection/data.js”); /* harmony import */ var enter_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./enter */ “./node_modules/d3-selection/src/selection/enter.js”); /* harmony import */ var exit_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./exit */ “./node_modules/d3-selection/src/selection/exit.js”); /* harmony import */ var merge_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./merge */ “./node_modules/d3-selection/src/selection/merge.js”); /* harmony import */ var order_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./order */ “./node_modules/d3-selection/src/selection/order.js”); /* harmony import */ var sort_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./sort */ “./node_modules/d3-selection/src/selection/sort.js”); /* harmony import */ var call_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./call */ “./node_modules/d3-selection/src/selection/call.js”); /* harmony import */ var nodes_WEBPACK_IMPORTED_MODULE_10 = webpack_require(/*! ./nodes */ “./node_modules/d3-selection/src/selection/nodes.js”); /* harmony import */ var node_WEBPACK_IMPORTED_MODULE_11 = webpack_require(/*! ./node */ “./node_modules/d3-selection/src/selection/node.js”); /* harmony import */ var size_WEBPACK_IMPORTED_MODULE_12 = webpack_require(/*! ./size */ “./node_modules/d3-selection/src/selection/size.js”); /* harmony import */ var empty_WEBPACK_IMPORTED_MODULE_13 = webpack_require(/*! ./empty */ “./node_modules/d3-selection/src/selection/empty.js”); /* harmony import */ var each_WEBPACK_IMPORTED_MODULE_14 = webpack_require(/*! ./each */ “./node_modules/d3-selection/src/selection/each.js”); /* harmony import */ var attr_WEBPACK_IMPORTED_MODULE_15 = webpack_require(/*! ./attr */ “./node_modules/d3-selection/src/selection/attr.js”); /* harmony import */ var style_WEBPACK_IMPORTED_MODULE_16 = webpack_require(/*! ./style */ “./node_modules/d3-selection/src/selection/style.js”); /* harmony import */ var property_WEBPACK_IMPORTED_MODULE_17 = webpack_require(/*! ./property */ “./node_modules/d3-selection/src/selection/property.js”); /* harmony import */ var classed_WEBPACK_IMPORTED_MODULE_18 = webpack_require(/*! ./classed */ “./node_modules/d3-selection/src/selection/classed.js”); /* harmony import */ var text_WEBPACK_IMPORTED_MODULE_19 = webpack_require(/*! ./text */ “./node_modules/d3-selection/src/selection/text.js”); /* harmony import */ var html_WEBPACK_IMPORTED_MODULE_20 = webpack_require(/*! ./html */ “./node_modules/d3-selection/src/selection/html.js”); /* harmony import */ var raise_WEBPACK_IMPORTED_MODULE_21 = webpack_require(/*! ./raise */ “./node_modules/d3-selection/src/selection/raise.js”); /* harmony import */ var lower_WEBPACK_IMPORTED_MODULE_22 = webpack_require(/*! ./lower */ “./node_modules/d3-selection/src/selection/lower.js”); /* harmony import */ var append_WEBPACK_IMPORTED_MODULE_23 = webpack_require(/*! ./append */ “./node_modules/d3-selection/src/selection/append.js”); /* harmony import */ var insert_WEBPACK_IMPORTED_MODULE_24 = webpack_require(/*! ./insert */ “./node_modules/d3-selection/src/selection/insert.js”); /* harmony import */ var remove_WEBPACK_IMPORTED_MODULE_25 = webpack_require(/*! ./remove */ “./node_modules/d3-selection/src/selection/remove.js”); /* harmony import */ var clone_WEBPACK_IMPORTED_MODULE_26 = webpack_require(/*! ./clone */ “./node_modules/d3-selection/src/selection/clone.js”); /* harmony import */ var datum_WEBPACK_IMPORTED_MODULE_27 = webpack_require(/*! ./datum */ “./node_modules/d3-selection/src/selection/datum.js”); /* harmony import */ var on_WEBPACK_IMPORTED_MODULE_28 = webpack_require(/*! ./on */ “./node_modules/d3-selection/src/selection/on.js”); /* harmony import */ var dispatch_WEBPACK_IMPORTED_MODULE_29 = webpack_require(/*! ./dispatch */ “./node_modules/d3-selection/src/selection/dispatch.js”);

var root = [null];

function Selection(groups, parents) {

this._groups = groups;
this._parents = parents;

}

function selection() {

return new Selection([[document.documentElement]], root);

}

Selection.prototype = selection.prototype = {

constructor: Selection,
select: _select__WEBPACK_IMPORTED_MODULE_0__["default"],
selectAll: _selectAll__WEBPACK_IMPORTED_MODULE_1__["default"],
filter: _filter__WEBPACK_IMPORTED_MODULE_2__["default"],
data: _data__WEBPACK_IMPORTED_MODULE_3__["default"],
enter: _enter__WEBPACK_IMPORTED_MODULE_4__["default"],
exit: _exit__WEBPACK_IMPORTED_MODULE_5__["default"],
merge: _merge__WEBPACK_IMPORTED_MODULE_6__["default"],
order: _order__WEBPACK_IMPORTED_MODULE_7__["default"],
sort: _sort__WEBPACK_IMPORTED_MODULE_8__["default"],
call: _call__WEBPACK_IMPORTED_MODULE_9__["default"],
nodes: _nodes__WEBPACK_IMPORTED_MODULE_10__["default"],
node: _node__WEBPACK_IMPORTED_MODULE_11__["default"],
size: _size__WEBPACK_IMPORTED_MODULE_12__["default"],
empty: _empty__WEBPACK_IMPORTED_MODULE_13__["default"],
each: _each__WEBPACK_IMPORTED_MODULE_14__["default"],
attr: _attr__WEBPACK_IMPORTED_MODULE_15__["default"],
style: _style__WEBPACK_IMPORTED_MODULE_16__["default"],
property: _property__WEBPACK_IMPORTED_MODULE_17__["default"],
classed: _classed__WEBPACK_IMPORTED_MODULE_18__["default"],
text: _text__WEBPACK_IMPORTED_MODULE_19__["default"],
html: _html__WEBPACK_IMPORTED_MODULE_20__["default"],
raise: _raise__WEBPACK_IMPORTED_MODULE_21__["default"],
lower: _lower__WEBPACK_IMPORTED_MODULE_22__["default"],
append: _append__WEBPACK_IMPORTED_MODULE_23__["default"],
insert: _insert__WEBPACK_IMPORTED_MODULE_24__["default"],
remove: _remove__WEBPACK_IMPORTED_MODULE_25__["default"],
clone: _clone__WEBPACK_IMPORTED_MODULE_26__["default"],
datum: _datum__WEBPACK_IMPORTED_MODULE_27__["default"],
on: _on__WEBPACK_IMPORTED_MODULE_28__["default"],
dispatch: _dispatch__WEBPACK_IMPORTED_MODULE_29__["default"]

};

/* harmony default export */ webpack_exports[“default”] = (selection);

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/insert.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/insert.js ***!
\***********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var creator_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../creator */ “./node_modules/d3-selection/src/creator.js”); /* harmony import */ var selector_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../selector */ “./node_modules/d3-selection/src/selector.js”);

function constantNull() {

return null;

}

/* harmony default export */ webpack_exports[“default”] = (function(name, before) {

var create = typeof name === "function" ? name : Object(_creator__WEBPACK_IMPORTED_MODULE_0__["default"])(name),
    select = before == null ? constantNull : typeof before === "function" ? before : Object(_selector__WEBPACK_IMPORTED_MODULE_1__["default"])(before);
return this.select(function() {
  return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);
});

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/lower.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/lower.js ***!
\**********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function lower() {

if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);

}

/* harmony default export */ webpack_exports[“default”] = (function() {

return this.each(lower);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/merge.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/merge.js ***!
\**********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./index */ “./node_modules/d3-selection/src/selection/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function(selection) {

for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
  for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
    if (node = group0[i] || group1[i]) {
      merge[i] = node;
    }
  }
}

for (; j < m0; ++j) {
  merges[j] = groups0[j];
}

return new _index__WEBPACK_IMPORTED_MODULE_0__["Selection"](merges, this._parents);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/node.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/node.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
  for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {
    var node = group[i];
    if (node) return node;
  }
}

return null;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/nodes.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/nodes.js ***!
\**********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

var nodes = new Array(this.size()), i = -1;
this.each(function() { nodes[++i] = this; });
return nodes;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/on.js”: /*!*******************************************************!*\

!*** ./node_modules/d3-selection/src/selection/on.js ***!
\*******************************************************/

/*! exports provided: event, default, customEvent */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “event”, function() { return event; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “customEvent”, function() { return customEvent; }); var filterEvents = {};

var event = null;

if (typeof document !== “undefined”) {

var element = document.documentElement;
if (!("onmouseenter" in element)) {
  filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"};
}

}

function filterContextListener(listener, index, group) {

listener = contextListener(listener, index, group);
return function(event) {
  var related = event.relatedTarget;
  if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {
    listener.call(this, event);
  }
};

}

function contextListener(listener, index, group) {

return function(event1) {
  var event0 = event; // Events can be reentrant (e.g., focus).
  event = event1;
  try {
    listener.call(this, this.__data__, index, group);
  } finally {
    event = event0;
  }
};

}

function parseTypenames(typenames) {

return typenames.trim().split(/^|\s+/).map(function(t) {
  var name = "", i = t.indexOf(".");
  if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
  return {type: t, name: name};
});

}

function onRemove(typename) {

return function() {
  var on = this.__on;
  if (!on) return;
  for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {
    if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {
      this.removeEventListener(o.type, o.listener, o.capture);
    } else {
      on[++i] = o;
    }
  }
  if (++i) on.length = i;
  else delete this.__on;
};

}

function onAdd(typename, value, capture) {

var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;
return function(d, i, group) {
  var on = this.__on, o, listener = wrap(value, i, group);
  if (on) for (var j = 0, m = on.length; j < m; ++j) {
    if ((o = on[j]).type === typename.type && o.name === typename.name) {
      this.removeEventListener(o.type, o.listener, o.capture);
      this.addEventListener(o.type, o.listener = listener, o.capture = capture);
      o.value = value;
      return;
    }
  }
  this.addEventListener(typename.type, listener, capture);
  o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};
  if (!on) this.__on = [o];
  else on.push(o);
};

}

/* harmony default export */ webpack_exports[“default”] = (function(typename, value, capture) {

var typenames = parseTypenames(typename + ""), i, n = typenames.length, t;

if (arguments.length < 2) {
  var on = this.node().__on;
  if (on) for (var j = 0, m = on.length, o; j < m; ++j) {
    for (i = 0, o = on[j]; i < n; ++i) {
      if ((t = typenames[i]).type === o.type && t.name === o.name) {
        return o.value;
      }
    }
  }
  return;
}

on = value ? onAdd : onRemove;
if (capture == null) capture = false;
for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));
return this;

});

function customEvent(event1, listener, that, args) {

var event0 = event;
event1.sourceEvent = event;
event = event1;
try {
  return listener.apply(that, args);
} finally {
  event = event0;
}

}

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/order.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/order.js ***!
\**********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {
  for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
    if (node = group[i]) {
      if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
      next = node;
    }
  }
}

return this;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/property.js”: /*!*************************************************************!*\

!*** ./node_modules/d3-selection/src/selection/property.js ***!
\*************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function propertyRemove(name) {

return function() {
  delete this[name];
};

}

function propertyConstant(name, value) {

return function() {
  this[name] = value;
};

}

function propertyFunction(name, value) {

return function() {
  var v = value.apply(this, arguments);
  if (v == null) delete this[name];
  else this[name] = v;
};

}

/* harmony default export */ webpack_exports[“default”] = (function(name, value) {

return arguments.length > 1
    ? this.each((value == null
        ? propertyRemove : typeof value === "function"
        ? propertyFunction
        : propertyConstant)(name, value))
    : this.node()[name];

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/raise.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/raise.js ***!
\**********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function raise() {

if (this.nextSibling) this.parentNode.appendChild(this);

}

/* harmony default export */ webpack_exports[“default”] = (function() {

return this.each(raise);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/remove.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/remove.js ***!
\***********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function remove() {

var parent = this.parentNode;
if (parent) parent.removeChild(this);

}

/* harmony default export */ webpack_exports[“default”] = (function() {

return this.each(remove);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/select.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/select.js ***!
\***********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./index */ “./node_modules/d3-selection/src/selection/index.js”); /* harmony import */ var selector_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../selector */ “./node_modules/d3-selection/src/selector.js”);

/* harmony default export */ webpack_exports[“default”] = (function(select) {

if (typeof select !== "function") select = Object(_selector__WEBPACK_IMPORTED_MODULE_1__["default"])(select);

for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
  for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
    if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
      if ("__data__" in node) subnode.__data__ = node.__data__;
      subgroup[i] = subnode;
    }
  }
}

return new _index__WEBPACK_IMPORTED_MODULE_0__["Selection"](subgroups, this._parents);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/selectAll.js”: /*!**************************************************************!*\

!*** ./node_modules/d3-selection/src/selection/selectAll.js ***!
\**************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./index */ “./node_modules/d3-selection/src/selection/index.js”); /* harmony import */ var selectorAll_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../selectorAll */ “./node_modules/d3-selection/src/selectorAll.js”);

/* harmony default export */ webpack_exports[“default”] = (function(select) {

if (typeof select !== "function") select = Object(_selectorAll__WEBPACK_IMPORTED_MODULE_1__["default"])(select);

for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
  for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
    if (node = group[i]) {
      subgroups.push(select.call(node, node.__data__, i, group));
      parents.push(node);
    }
  }
}

return new _index__WEBPACK_IMPORTED_MODULE_0__["Selection"](subgroups, parents);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/size.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/size.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {

var size = 0;
this.each(function() { ++size; });
return size;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/sort.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/sort.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./index */ “./node_modules/d3-selection/src/selection/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function(compare) {

if (!compare) compare = ascending;

function compareNode(a, b) {
  return a && b ? compare(a.__data__, b.__data__) : !a - !b;
}

for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
  for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
    if (node = group[i]) {
      sortgroup[i] = node;
    }
  }
  sortgroup.sort(compareNode);
}

return new _index__WEBPACK_IMPORTED_MODULE_0__["Selection"](sortgroups, this._parents).order();

});

function ascending(a, b) {

return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;

}

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/sparse.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/sparse.js ***!
\***********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(update) {

return new Array(update.length);

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/style.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/style.js ***!
\**********************************************************/

/*! exports provided: default, styleValue */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “styleValue”, function() { return styleValue; }); /* harmony import */ var window_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../window */ “./node_modules/d3-selection/src/window.js”);

function styleRemove(name) {

return function() {
  this.style.removeProperty(name);
};

}

function styleConstant(name, value, priority) {

return function() {
  this.style.setProperty(name, value, priority);
};

}

function styleFunction(name, value, priority) {

return function() {
  var v = value.apply(this, arguments);
  if (v == null) this.style.removeProperty(name);
  else this.style.setProperty(name, v, priority);
};

}

/* harmony default export */ webpack_exports[“default”] = (function(name, value, priority) {

return arguments.length > 1
    ? this.each((value == null
          ? styleRemove : typeof value === "function"
          ? styleFunction
          : styleConstant)(name, value, priority == null ? "" : priority))
    : styleValue(this.node(), name);

});

function styleValue(node, name) {

return node.style.getPropertyValue(name)
    || Object(_window__WEBPACK_IMPORTED_MODULE_0__["default"])(node).getComputedStyle(node, null).getPropertyValue(name);

}

/***/ }),

/***/ “./node_modules/d3-selection/src/selection/text.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-selection/src/selection/text.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function textRemove() {

this.textContent = "";

}

function textConstant(value) {

return function() {
  this.textContent = value;
};

}

function textFunction(value) {

return function() {
  var v = value.apply(this, arguments);
  this.textContent = v == null ? "" : v;
};

}

/* harmony default export */ webpack_exports[“default”] = (function(value) {

return arguments.length
    ? this.each(value == null
        ? textRemove : (typeof value === "function"
        ? textFunction
        : textConstant)(value))
    : this.node().textContent;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selector.js”: /*!***************************************************!*\

!*** ./node_modules/d3-selection/src/selector.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function none() {}

/* harmony default export */ webpack_exports[“default”] = (function(selector) {

return selector == null ? none : function() {
  return this.querySelector(selector);
};

});

/***/ }),

/***/ “./node_modules/d3-selection/src/selectorAll.js”: /*!******************************************************!*\

!*** ./node_modules/d3-selection/src/selectorAll.js ***!
\******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function empty() {

return [];

}

/* harmony default export */ webpack_exports[“default”] = (function(selector) {

return selector == null ? empty : function() {
  return this.querySelectorAll(selector);
};

});

/***/ }),

/***/ “./node_modules/d3-selection/src/sourceEvent.js”: /*!******************************************************!*\

!*** ./node_modules/d3-selection/src/sourceEvent.js ***!
\******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var selection_on_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./selection/on */ “./node_modules/d3-selection/src/selection/on.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var current = _selection_on__WEBPACK_IMPORTED_MODULE_0__["event"], source;
while (source = current.sourceEvent) current = source;
return current;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/touch.js”: /*!************************************************!*\

!*** ./node_modules/d3-selection/src/touch.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var sourceEvent_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./sourceEvent */ “./node_modules/d3-selection/src/sourceEvent.js”); /* harmony import */ var point_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./point */ “./node_modules/d3-selection/src/point.js”);

/* harmony default export */ webpack_exports[“default”] = (function(node, touches, identifier) {

if (arguments.length < 3) identifier = touches, touches = Object(_sourceEvent__WEBPACK_IMPORTED_MODULE_0__["default"])().changedTouches;

for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {
  if ((touch = touches[i]).identifier === identifier) {
    return Object(_point__WEBPACK_IMPORTED_MODULE_1__["default"])(node, touch);
  }
}

return null;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/touches.js”: /*!**************************************************!*\

!*** ./node_modules/d3-selection/src/touches.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var sourceEvent_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./sourceEvent */ “./node_modules/d3-selection/src/sourceEvent.js”); /* harmony import */ var point_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./point */ “./node_modules/d3-selection/src/point.js”);

/* harmony default export */ webpack_exports[“default”] = (function(node, touches) {

if (touches == null) touches = Object(_sourceEvent__WEBPACK_IMPORTED_MODULE_0__["default"])().touches;

for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {
  points[i] = Object(_point__WEBPACK_IMPORTED_MODULE_1__["default"])(node, touches[i]);
}

return points;

});

/***/ }),

/***/ “./node_modules/d3-selection/src/window.js”: /*!*************************************************!*\

!*** ./node_modules/d3-selection/src/window.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(node) {

return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
    || (node.document && node) // node is a Window
    || node.defaultView; // node is a Document

});

/***/ }),

/***/ “./node_modules/d3-shape/index.js”: /*!****************************************!*\

!*** ./node_modules/d3-shape/index.js ***!
\****************************************/

/*! exports provided: arc, area, line, pie, areaRadial, radialArea, lineRadial, radialLine, pointRadial, linkHorizontal, linkVertical, linkRadial, symbol, symbols, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye, curveBasisClosed, curveBasisOpen, curveBasis, curveBundle, curveCardinalClosed, curveCardinalOpen, curveCardinal, curveCatmullRomClosed, curveCatmullRomOpen, curveCatmullRom, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore, stack, stackOffsetExpand, stackOffsetDiverging, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderAscending, stackOrderDescending, stackOrderInsideOut, stackOrderNone, stackOrderReverse */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_arc_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/arc */ “./node_modules/d3-shape/src/arc.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “arc”, function() { return src_arc_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_area_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/area */ “./node_modules/d3-shape/src/area.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “area”, function() { return src_area_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_line_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/line */ “./node_modules/d3-shape/src/line.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “line”, function() { return src_line_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_pie_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/pie */ “./node_modules/d3-shape/src/pie.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “pie”, function() { return src_pie_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony import */ var src_areaRadial_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/areaRadial */ “./node_modules/d3-shape/src/areaRadial.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “areaRadial”, function() { return src_areaRadial_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “radialArea”, function() { return src_areaRadial_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony import */ var src_lineRadial_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/lineRadial */ “./node_modules/d3-shape/src/lineRadial.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “lineRadial”, function() { return src_lineRadial_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “radialLine”, function() { return src_lineRadial_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/* harmony import */ var src_pointRadial_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./src/pointRadial */ “./node_modules/d3-shape/src/pointRadial.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “pointRadial”, function() { return src_pointRadial_WEBPACK_IMPORTED_MODULE_6[“default”]; });

/* harmony import */ var src_link_index_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./src/link/index */ “./node_modules/d3-shape/src/link/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “linkHorizontal”, function() { return src_link_index_WEBPACK_IMPORTED_MODULE_7[“linkHorizontal”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “linkVertical”, function() { return src_link_index_WEBPACK_IMPORTED_MODULE_7[“linkVertical”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “linkRadial”, function() { return src_link_index_WEBPACK_IMPORTED_MODULE_7[“linkRadial”]; });

/* harmony import */ var src_symbol_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./src/symbol */ “./node_modules/d3-shape/src/symbol.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbol”, function() { return src_symbol_WEBPACK_IMPORTED_MODULE_8[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbols”, function() { return src_symbol_WEBPACK_IMPORTED_MODULE_8[“symbols”]; });

/* harmony import */ var src_symbol_circle_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./src/symbol/circle */ “./node_modules/d3-shape/src/symbol/circle.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolCircle”, function() { return src_symbol_circle_WEBPACK_IMPORTED_MODULE_9[“default”]; });

/* harmony import */ var src_symbol_cross_WEBPACK_IMPORTED_MODULE_10 = webpack_require(/*! ./src/symbol/cross */ “./node_modules/d3-shape/src/symbol/cross.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolCross”, function() { return src_symbol_cross_WEBPACK_IMPORTED_MODULE_10[“default”]; });

/* harmony import */ var src_symbol_diamond_WEBPACK_IMPORTED_MODULE_11 = webpack_require(/*! ./src/symbol/diamond */ “./node_modules/d3-shape/src/symbol/diamond.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolDiamond”, function() { return src_symbol_diamond_WEBPACK_IMPORTED_MODULE_11[“default”]; });

/* harmony import */ var src_symbol_square_WEBPACK_IMPORTED_MODULE_12 = webpack_require(/*! ./src/symbol/square */ “./node_modules/d3-shape/src/symbol/square.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolSquare”, function() { return src_symbol_square_WEBPACK_IMPORTED_MODULE_12[“default”]; });

/* harmony import */ var src_symbol_star_WEBPACK_IMPORTED_MODULE_13 = webpack_require(/*! ./src/symbol/star */ “./node_modules/d3-shape/src/symbol/star.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolStar”, function() { return src_symbol_star_WEBPACK_IMPORTED_MODULE_13[“default”]; });

/* harmony import */ var src_symbol_triangle_WEBPACK_IMPORTED_MODULE_14 = webpack_require(/*! ./src/symbol/triangle */ “./node_modules/d3-shape/src/symbol/triangle.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolTriangle”, function() { return src_symbol_triangle_WEBPACK_IMPORTED_MODULE_14[“default”]; });

/* harmony import */ var src_symbol_wye_WEBPACK_IMPORTED_MODULE_15 = webpack_require(/*! ./src/symbol/wye */ “./node_modules/d3-shape/src/symbol/wye.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolWye”, function() { return src_symbol_wye_WEBPACK_IMPORTED_MODULE_15[“default”]; });

/* harmony import */ var src_curve_basisClosed_WEBPACK_IMPORTED_MODULE_16 = webpack_require(/*! ./src/curve/basisClosed */ “./node_modules/d3-shape/src/curve/basisClosed.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveBasisClosed”, function() { return src_curve_basisClosed_WEBPACK_IMPORTED_MODULE_16[“default”]; });

/* harmony import */ var src_curve_basisOpen_WEBPACK_IMPORTED_MODULE_17 = webpack_require(/*! ./src/curve/basisOpen */ “./node_modules/d3-shape/src/curve/basisOpen.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveBasisOpen”, function() { return src_curve_basisOpen_WEBPACK_IMPORTED_MODULE_17[“default”]; });

/* harmony import */ var src_curve_basis_WEBPACK_IMPORTED_MODULE_18 = webpack_require(/*! ./src/curve/basis */ “./node_modules/d3-shape/src/curve/basis.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveBasis”, function() { return src_curve_basis_WEBPACK_IMPORTED_MODULE_18[“default”]; });

/* harmony import */ var src_curve_bundle_WEBPACK_IMPORTED_MODULE_19 = webpack_require(/*! ./src/curve/bundle */ “./node_modules/d3-shape/src/curve/bundle.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveBundle”, function() { return src_curve_bundle_WEBPACK_IMPORTED_MODULE_19[“default”]; });

/* harmony import */ var src_curve_cardinalClosed_WEBPACK_IMPORTED_MODULE_20 = webpack_require(/*! ./src/curve/cardinalClosed */ “./node_modules/d3-shape/src/curve/cardinalClosed.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveCardinalClosed”, function() { return src_curve_cardinalClosed_WEBPACK_IMPORTED_MODULE_20[“default”]; });

/* harmony import */ var src_curve_cardinalOpen_WEBPACK_IMPORTED_MODULE_21 = webpack_require(/*! ./src/curve/cardinalOpen */ “./node_modules/d3-shape/src/curve/cardinalOpen.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveCardinalOpen”, function() { return src_curve_cardinalOpen_WEBPACK_IMPORTED_MODULE_21[“default”]; });

/* harmony import */ var src_curve_cardinal_WEBPACK_IMPORTED_MODULE_22 = webpack_require(/*! ./src/curve/cardinal */ “./node_modules/d3-shape/src/curve/cardinal.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveCardinal”, function() { return src_curve_cardinal_WEBPACK_IMPORTED_MODULE_22[“default”]; });

/* harmony import */ var src_curve_catmullRomClosed_WEBPACK_IMPORTED_MODULE_23 = webpack_require(/*! ./src/curve/catmullRomClosed */ “./node_modules/d3-shape/src/curve/catmullRomClosed.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveCatmullRomClosed”, function() { return src_curve_catmullRomClosed_WEBPACK_IMPORTED_MODULE_23[“default”]; });

/* harmony import */ var src_curve_catmullRomOpen_WEBPACK_IMPORTED_MODULE_24 = webpack_require(/*! ./src/curve/catmullRomOpen */ “./node_modules/d3-shape/src/curve/catmullRomOpen.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveCatmullRomOpen”, function() { return src_curve_catmullRomOpen_WEBPACK_IMPORTED_MODULE_24[“default”]; });

/* harmony import */ var src_curve_catmullRom_WEBPACK_IMPORTED_MODULE_25 = webpack_require(/*! ./src/curve/catmullRom */ “./node_modules/d3-shape/src/curve/catmullRom.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveCatmullRom”, function() { return src_curve_catmullRom_WEBPACK_IMPORTED_MODULE_25[“default”]; });

/* harmony import */ var src_curve_linearClosed_WEBPACK_IMPORTED_MODULE_26 = webpack_require(/*! ./src/curve/linearClosed */ “./node_modules/d3-shape/src/curve/linearClosed.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveLinearClosed”, function() { return src_curve_linearClosed_WEBPACK_IMPORTED_MODULE_26[“default”]; });

/* harmony import */ var src_curve_linear_WEBPACK_IMPORTED_MODULE_27 = webpack_require(/*! ./src/curve/linear */ “./node_modules/d3-shape/src/curve/linear.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveLinear”, function() { return src_curve_linear_WEBPACK_IMPORTED_MODULE_27[“default”]; });

/* harmony import */ var src_curve_monotone_WEBPACK_IMPORTED_MODULE_28 = webpack_require(/*! ./src/curve/monotone */ “./node_modules/d3-shape/src/curve/monotone.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveMonotoneX”, function() { return src_curve_monotone_WEBPACK_IMPORTED_MODULE_28[“monotoneX”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveMonotoneY”, function() { return src_curve_monotone_WEBPACK_IMPORTED_MODULE_28[“monotoneY”]; });

/* harmony import */ var src_curve_natural_WEBPACK_IMPORTED_MODULE_29 = webpack_require(/*! ./src/curve/natural */ “./node_modules/d3-shape/src/curve/natural.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveNatural”, function() { return src_curve_natural_WEBPACK_IMPORTED_MODULE_29[“default”]; });

/* harmony import */ var src_curve_step_WEBPACK_IMPORTED_MODULE_30 = webpack_require(/*! ./src/curve/step */ “./node_modules/d3-shape/src/curve/step.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveStep”, function() { return src_curve_step_WEBPACK_IMPORTED_MODULE_30[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveStepAfter”, function() { return src_curve_step_WEBPACK_IMPORTED_MODULE_30[“stepAfter”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveStepBefore”, function() { return src_curve_step_WEBPACK_IMPORTED_MODULE_30[“stepBefore”]; });

/* harmony import */ var src_stack_WEBPACK_IMPORTED_MODULE_31 = webpack_require(/*! ./src/stack */ “./node_modules/d3-shape/src/stack.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stack”, function() { return src_stack_WEBPACK_IMPORTED_MODULE_31[“default”]; });

/* harmony import */ var src_offset_expand_WEBPACK_IMPORTED_MODULE_32 = webpack_require(/*! ./src/offset/expand */ “./node_modules/d3-shape/src/offset/expand.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOffsetExpand”, function() { return src_offset_expand_WEBPACK_IMPORTED_MODULE_32[“default”]; });

/* harmony import */ var src_offset_diverging_WEBPACK_IMPORTED_MODULE_33 = webpack_require(/*! ./src/offset/diverging */ “./node_modules/d3-shape/src/offset/diverging.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOffsetDiverging”, function() { return src_offset_diverging_WEBPACK_IMPORTED_MODULE_33[“default”]; });

/* harmony import */ var src_offset_none_WEBPACK_IMPORTED_MODULE_34 = webpack_require(/*! ./src/offset/none */ “./node_modules/d3-shape/src/offset/none.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOffsetNone”, function() { return src_offset_none_WEBPACK_IMPORTED_MODULE_34[“default”]; });

/* harmony import */ var src_offset_silhouette_WEBPACK_IMPORTED_MODULE_35 = webpack_require(/*! ./src/offset/silhouette */ “./node_modules/d3-shape/src/offset/silhouette.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOffsetSilhouette”, function() { return src_offset_silhouette_WEBPACK_IMPORTED_MODULE_35[“default”]; });

/* harmony import */ var src_offset_wiggle_WEBPACK_IMPORTED_MODULE_36 = webpack_require(/*! ./src/offset/wiggle */ “./node_modules/d3-shape/src/offset/wiggle.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOffsetWiggle”, function() { return src_offset_wiggle_WEBPACK_IMPORTED_MODULE_36[“default”]; });

/* harmony import */ var src_order_ascending_WEBPACK_IMPORTED_MODULE_37 = webpack_require(/*! ./src/order/ascending */ “./node_modules/d3-shape/src/order/ascending.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOrderAscending”, function() { return src_order_ascending_WEBPACK_IMPORTED_MODULE_37[“default”]; });

/* harmony import */ var src_order_descending_WEBPACK_IMPORTED_MODULE_38 = webpack_require(/*! ./src/order/descending */ “./node_modules/d3-shape/src/order/descending.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOrderDescending”, function() { return src_order_descending_WEBPACK_IMPORTED_MODULE_38[“default”]; });

/* harmony import */ var src_order_insideOut_WEBPACK_IMPORTED_MODULE_39 = webpack_require(/*! ./src/order/insideOut */ “./node_modules/d3-shape/src/order/insideOut.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOrderInsideOut”, function() { return src_order_insideOut_WEBPACK_IMPORTED_MODULE_39[“default”]; });

/* harmony import */ var src_order_none_WEBPACK_IMPORTED_MODULE_40 = webpack_require(/*! ./src/order/none */ “./node_modules/d3-shape/src/order/none.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOrderNone”, function() { return src_order_none_WEBPACK_IMPORTED_MODULE_40[“default”]; });

/* harmony import */ var src_order_reverse_WEBPACK_IMPORTED_MODULE_41 = webpack_require(/*! ./src/order/reverse */ “./node_modules/d3-shape/src/order/reverse.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOrderReverse”, function() { return src_order_reverse_WEBPACK_IMPORTED_MODULE_41[“default”]; });

// Note: radialArea is deprecated!
// Note: radialLine is deprecated!

/***/ }),

/***/ “./node_modules/d3-shape/src/arc.js”: /*!******************************************!*\

!*** ./node_modules/d3-shape/src/arc.js ***!
\******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_path_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-path */ “./node_modules/d3-path/index.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./constant */ “./node_modules/d3-shape/src/constant.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./math */ “./node_modules/d3-shape/src/math.js”);

function arcInnerRadius(d) {

return d.innerRadius;

}

function arcOuterRadius(d) {

return d.outerRadius;

}

function arcStartAngle(d) {

return d.startAngle;

}

function arcEndAngle(d) {

return d.endAngle;

}

function arcPadAngle(d) {

return d && d.padAngle; // Note: optional!

}

function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {

var x10 = x1 - x0, y10 = y1 - y0,
    x32 = x3 - x2, y32 = y3 - y2,
    t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / (y32 * x10 - x32 * y10);
return [x0 + t * x10, y0 + t * y10];

}

// Compute perpendicular offset line of length rc. // mathworld.wolfram.com/Circle-LineIntersection.html function cornerTangents(x0, y0, x1, y1, r1, rc, cw) {

var x01 = x0 - x1,
    y01 = y0 - y1,
    lo = (cw ? rc : -rc) / Object(_math__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(x01 * x01 + y01 * y01),
    ox = lo * y01,
    oy = -lo * x01,
    x11 = x0 + ox,
    y11 = y0 + oy,
    x10 = x1 + ox,
    y10 = y1 + oy,
    x00 = (x11 + x10) / 2,
    y00 = (y11 + y10) / 2,
    dx = x10 - x11,
    dy = y10 - y11,
    d2 = dx * dx + dy * dy,
    r = r1 - rc,
    D = x11 * y10 - x10 * y11,
    d = (dy < 0 ? -1 : 1) * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(Object(_math__WEBPACK_IMPORTED_MODULE_2__["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 - x00,
    dy0 = cy0 - y00,
    dx1 = cx1 - x00,
    dy1 = cy1 - y00;

// Pick the closer of the two intersection points.
// TODO Is there a faster way to determine which intersection to use?
if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;

return {
  cx: cx0,
  cy: cy0,
  x01: -ox,
  y01: -oy,
  x11: cx0 * (r1 / r - 1),
  y11: cy0 * (r1 / r - 1)
};

}

/* harmony default export */ webpack_exports[“default”] = (function() {

var innerRadius = arcInnerRadius,
    outerRadius = arcOuterRadius,
    cornerRadius = Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(0),
    padRadius = null,
    startAngle = arcStartAngle,
    endAngle = arcEndAngle,
    padAngle = arcPadAngle,
    context = null;

function arc() {
  var buffer,
      r,
      r0 = +innerRadius.apply(this, arguments),
      r1 = +outerRadius.apply(this, arguments),
      a0 = startAngle.apply(this, arguments) - _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"],
      a1 = endAngle.apply(this, arguments) - _math__WEBPACK_IMPORTED_MODULE_2__["halfPi"],
      da = Object(_math__WEBPACK_IMPORTED_MODULE_2__["abs"])(a1 - a0),
      cw = a1 > a0;

  if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__["path"])();

  // Ensure that the outer radius is always larger than the inner radius.
  if (r1 < r0) r = r1, r1 = r0, r0 = r;

  // Is it a point?
  if (!(r1 > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"])) context.moveTo(0, 0);

  // Or is it a circle or annulus?
  else if (da > _math__WEBPACK_IMPORTED_MODULE_2__["tau"] - _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) {
    context.moveTo(r1 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(a0), r1 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(a0));
    context.arc(0, 0, r1, a0, a1, !cw);
    if (r0 > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) {
      context.moveTo(r0 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(a1), r0 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(a1));
      context.arc(0, 0, r0, a1, a0, cw);
    }
  }

  // Or is it a circular or annular sector?
  else {
    var a01 = a0,
        a11 = a1,
        a00 = a0,
        a10 = a1,
        da0 = da,
        da1 = da,
        ap = padAngle.apply(this, arguments) / 2,
        rp = (ap > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) && (padRadius ? +padRadius.apply(this, arguments) : Object(_math__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(r0 * r0 + r1 * r1)),
        rc = Object(_math__WEBPACK_IMPORTED_MODULE_2__["min"])(Object(_math__WEBPACK_IMPORTED_MODULE_2__["abs"])(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),
        rc0 = rc,
        rc1 = rc,
        t0,
        t1;

    // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.
    if (rp > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) {
      var p0 = Object(_math__WEBPACK_IMPORTED_MODULE_2__["asin"])(rp / r0 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(ap)),
          p1 = Object(_math__WEBPACK_IMPORTED_MODULE_2__["asin"])(rp / r1 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(ap));
      if ((da0 -= p0 * 2) > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;
      else da0 = 0, a00 = a10 = (a0 + a1) / 2;
      if ((da1 -= p1 * 2) > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;
      else da1 = 0, a01 = a11 = (a0 + a1) / 2;
    }

    var x01 = r1 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(a01),
        y01 = r1 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(a01),
        x10 = r0 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(a10),
        y10 = r0 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(a10);

    // Apply rounded corners?
    if (rc > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) {
      var x11 = r1 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(a11),
          y11 = r1 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(a11),
          x00 = r0 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(a00),
          y00 = r0 * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(a00);

      // Restrict the corner radius according to the sector angle.
      if (da < _math__WEBPACK_IMPORTED_MODULE_2__["pi"]) {
        var oc = da0 > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"] ? intersect(x01, y01, x00, y00, x11, y11, x10, y10) : [x10, y10],
            ax = x01 - oc[0],
            ay = y01 - oc[1],
            bx = x11 - oc[0],
            by = y11 - oc[1],
            kc = 1 / Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(Object(_math__WEBPACK_IMPORTED_MODULE_2__["acos"])((ax * bx + ay * by) / (Object(_math__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(ax * ax + ay * ay) * Object(_math__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(bx * bx + by * by))) / 2),
            lc = Object(_math__WEBPACK_IMPORTED_MODULE_2__["sqrt"])(oc[0] * oc[0] + oc[1] * oc[1]);
        rc0 = Object(_math__WEBPACK_IMPORTED_MODULE_2__["min"])(rc, (r0 - lc) / (kc - 1));
        rc1 = Object(_math__WEBPACK_IMPORTED_MODULE_2__["min"])(rc, (r1 - lc) / (kc + 1));
      }
    }

    // Is the sector collapsed to a line?
    if (!(da1 > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"])) context.moveTo(x01, y01);

    // Does the sector’s outer ring have rounded corners?
    else if (rc1 > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) {
      t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);
      t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);

      context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);

      // Have the corners merged?
      if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.y01, t0.x01), Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.y01, t1.x01), !cw);

      // Otherwise, draw the two corners and the ring.
      else {
        context.arc(t0.cx, t0.cy, rc1, Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.y01, t0.x01), Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.y11, t0.x11), !cw);
        context.arc(0, 0, r1, Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.cy + t0.y11, t0.cx + t0.x11), Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.cy + t1.y11, t1.cx + t1.x11), !cw);
        context.arc(t1.cx, t1.cy, rc1, Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.y11, t1.x11), Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.y01, t1.x01), !cw);
      }
    }

    // Or is the outer ring just a circular arc?
    else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);

    // Is there no inner ring, and it’s a circular sector?
    // Or perhaps it’s an annular sector collapsed due to padding?
    if (!(r0 > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) || !(da0 > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"])) context.lineTo(x10, y10);

    // Does the sector’s inner ring (or point) have rounded corners?
    else if (rc0 > _math__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) {
      t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);
      t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);

      context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);

      // Have the corners merged?
      if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.y01, t0.x01), Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.y01, t1.x01), !cw);

      // Otherwise, draw the two corners and the ring.
      else {
        context.arc(t0.cx, t0.cy, rc0, Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.y01, t0.x01), Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.y11, t0.x11), !cw);
        context.arc(0, 0, r0, Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t0.cy + t0.y11, t0.cx + t0.x11), Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.cy + t1.y11, t1.cx + t1.x11), cw);
        context.arc(t1.cx, t1.cy, rc0, Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.y11, t1.x11), Object(_math__WEBPACK_IMPORTED_MODULE_2__["atan2"])(t1.y01, t1.x01), !cw);
      }
    }

    // Or is the inner ring just a circular arc?
    else context.arc(0, 0, r0, a10, a00, cw);
  }

  context.closePath();

  if (buffer) return context = null, buffer + "" || null;
}

arc.centroid = function() {
  var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,
      a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - _math__WEBPACK_IMPORTED_MODULE_2__["pi"] / 2;
  return [Object(_math__WEBPACK_IMPORTED_MODULE_2__["cos"])(a) * r, Object(_math__WEBPACK_IMPORTED_MODULE_2__["sin"])(a) * r];
};

arc.innerRadius = function(_) {
  return arguments.length ? (innerRadius = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : innerRadius;
};

arc.outerRadius = function(_) {
  return arguments.length ? (outerRadius = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : outerRadius;
};

arc.cornerRadius = function(_) {
  return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : cornerRadius;
};

arc.padRadius = function(_) {
  return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : padRadius;
};

arc.startAngle = function(_) {
  return arguments.length ? (startAngle = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : startAngle;
};

arc.endAngle = function(_) {
  return arguments.length ? (endAngle = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : endAngle;
};

arc.padAngle = function(_) {
  return arguments.length ? (padAngle = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), arc) : padAngle;
};

arc.context = function(_) {
  return arguments.length ? ((context = _ == null ? null : _), arc) : context;
};

return arc;

});

/***/ }),

/***/ “./node_modules/d3-shape/src/area.js”: /*!*******************************************!*\

!*** ./node_modules/d3-shape/src/area.js ***!
\*******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_path_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-path */ “./node_modules/d3-path/index.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./constant */ “./node_modules/d3-shape/src/constant.js”); /* harmony import */ var curve_linear_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./curve/linear */ “./node_modules/d3-shape/src/curve/linear.js”); /* harmony import */ var line_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./line */ “./node_modules/d3-shape/src/line.js”); /* harmony import */ var point_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./point */ “./node_modules/d3-shape/src/point.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var x0 = _point__WEBPACK_IMPORTED_MODULE_4__["x"],
    x1 = null,
    y0 = Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(0),
    y1 = _point__WEBPACK_IMPORTED_MODULE_4__["y"],
    defined = Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(true),
    context = null,
    curve = _curve_linear__WEBPACK_IMPORTED_MODULE_2__["default"],
    output = null;

function area(data) {
  var i,
      j,
      k,
      n = data.length,
      d,
      defined0 = false,
      buffer,
      x0z = new Array(n),
      y0z = new Array(n);

  if (context == null) output = curve(buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__["path"])());

  for (i = 0; i <= n; ++i) {
    if (!(i < n && defined(d = data[i], i, data)) === defined0) {
      if (defined0 = !defined0) {
        j = i;
        output.areaStart();
        output.lineStart();
      } else {
        output.lineEnd();
        output.lineStart();
        for (k = i - 1; k >= j; --k) {
          output.point(x0z[k], y0z[k]);
        }
        output.lineEnd();
        output.areaEnd();
      }
    }
    if (defined0) {
      x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);
      output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);
    }
  }

  if (buffer) return output = null, buffer + "" || null;
}

function arealine() {
  return Object(_line__WEBPACK_IMPORTED_MODULE_3__["default"])().defined(defined).curve(curve).context(context);
}

area.x = function(_) {
  return arguments.length ? (x0 = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), x1 = null, area) : x0;
};

area.x0 = function(_) {
  return arguments.length ? (x0 = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), area) : x0;
};

area.x1 = function(_) {
  return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), area) : x1;
};

area.y = function(_) {
  return arguments.length ? (y0 = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), y1 = null, area) : y0;
};

area.y0 = function(_) {
  return arguments.length ? (y0 = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), area) : y0;
};

area.y1 = function(_) {
  return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), area) : y1;
};

area.lineX0 =
area.lineY0 = function() {
  return arealine().x(x0).y(y0);
};

area.lineY1 = function() {
  return arealine().x(x0).y(y1);
};

area.lineX1 = function() {
  return arealine().x(x1).y(y0);
};

area.defined = function(_) {
  return arguments.length ? (defined = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(!!_), area) : defined;
};

area.curve = function(_) {
  return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;
};

area.context = function(_) {
  return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;
};

return area;

});

/***/ }),

/***/ “./node_modules/d3-shape/src/areaRadial.js”: /*!*************************************************!*\

!*** ./node_modules/d3-shape/src/areaRadial.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var curve_radial_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./curve/radial */ “./node_modules/d3-shape/src/curve/radial.js”); /* harmony import */ var area_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./area */ “./node_modules/d3-shape/src/area.js”); /* harmony import */ var lineRadial_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./lineRadial */ “./node_modules/d3-shape/src/lineRadial.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var a = Object(_area__WEBPACK_IMPORTED_MODULE_1__["default"])().curve(_curve_radial__WEBPACK_IMPORTED_MODULE_0__["curveRadialLinear"]),
    c = a.curve,
    x0 = a.lineX0,
    x1 = a.lineX1,
    y0 = a.lineY0,
    y1 = a.lineY1;

a.angle = a.x, delete a.x;
a.startAngle = a.x0, delete a.x0;
a.endAngle = a.x1, delete a.x1;
a.radius = a.y, delete a.y;
a.innerRadius = a.y0, delete a.y0;
a.outerRadius = a.y1, delete a.y1;
a.lineStartAngle = function() { return Object(_lineRadial__WEBPACK_IMPORTED_MODULE_2__["lineRadial"])(x0()); }, delete a.lineX0;
a.lineEndAngle = function() { return Object(_lineRadial__WEBPACK_IMPORTED_MODULE_2__["lineRadial"])(x1()); }, delete a.lineX1;
a.lineInnerRadius = function() { return Object(_lineRadial__WEBPACK_IMPORTED_MODULE_2__["lineRadial"])(y0()); }, delete a.lineY0;
a.lineOuterRadius = function() { return Object(_lineRadial__WEBPACK_IMPORTED_MODULE_2__["lineRadial"])(y1()); }, delete a.lineY1;

a.curve = function(_) {
  return arguments.length ? c(Object(_curve_radial__WEBPACK_IMPORTED_MODULE_0__["default"])(_)) : c()._curve;
};

return a;

});

/***/ }),

/***/ “./node_modules/d3-shape/src/array.js”: /*!********************************************!*\

!*** ./node_modules/d3-shape/src/array.js ***!
\********************************************/

/*! exports provided: slice */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “slice”, function() { return slice; }); var slice = Array.prototype.slice;

/***/ }),

/***/ “./node_modules/d3-shape/src/constant.js”: /*!***********************************************!*\

!*** ./node_modules/d3-shape/src/constant.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return function constant() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/basis.js”: /*!**************************************************!*\

!*** ./node_modules/d3-shape/src/curve/basis.js ***!
\**************************************************/

/*! exports provided: point, Basis, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “point”, function() { return point; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “Basis”, function() { return Basis; }); function point(that, x, y) {

that._context.bezierCurveTo(
  (2 * that._x0 + that._x1) / 3,
  (2 * that._y0 + that._y1) / 3,
  (that._x0 + 2 * that._x1) / 3,
  (that._y0 + 2 * that._y1) / 3,
  (that._x0 + 4 * that._x1 + x) / 6,
  (that._y0 + 4 * that._y1 + y) / 6
);

}

function Basis(context) {

this._context = context;

}

Basis.prototype = {

areaStart: function() {
  this._line = 0;
},
areaEnd: function() {
  this._line = NaN;
},
lineStart: function() {
  this._x0 = this._x1 =
  this._y0 = this._y1 = NaN;
  this._point = 0;
},
lineEnd: function() {
  switch (this._point) {
    case 3: point(this, this._x1, this._y1); // proceed
    case 2: this._context.lineTo(this._x1, this._y1); break;
  }
  if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
  this._line = 1 - this._line;
},
point: function(x, y) {
  x = +x, y = +y;
  switch (this._point) {
    case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
    case 1: this._point = 2; break;
    case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed
    default: point(this, x, y); break;
  }
  this._x0 = this._x1, this._x1 = x;
  this._y0 = this._y1, this._y1 = y;
}

};

/* harmony default export */ webpack_exports[“default”] = (function(context) {

return new Basis(context);

});

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/basisClosed.js”: /*!********************************************************!*\

!*** ./node_modules/d3-shape/src/curve/basisClosed.js ***!
\********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var noop_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../noop */ “./node_modules/d3-shape/src/noop.js”); /* harmony import */ var basis_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./basis */ “./node_modules/d3-shape/src/curve/basis.js”);

function BasisClosed(context) {

this._context = context;

}

BasisClosed.prototype = {

areaStart: _noop__WEBPACK_IMPORTED_MODULE_0__["default"],
areaEnd: _noop__WEBPACK_IMPORTED_MODULE_0__["default"],
lineStart: function() {
  this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =
  this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;
  this._point = 0;
},
lineEnd: function() {
  switch (this._point) {
    case 1: {
      this._context.moveTo(this._x2, this._y2);
      this._context.closePath();
      break;
    }
    case 2: {
      this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);
      this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);
      this._context.closePath();
      break;
    }
    case 3: {
      this.point(this._x2, this._y2);
      this.point(this._x3, this._y3);
      this.point(this._x4, this._y4);
      break;
    }
  }
},
point: function(x, y) {
  x = +x, y = +y;
  switch (this._point) {
    case 0: this._point = 1; this._x2 = x, this._y2 = y; break;
    case 1: this._point = 2; this._x3 = x, this._y3 = y; break;
    case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;
    default: Object(_basis__WEBPACK_IMPORTED_MODULE_1__["point"])(this, x, y); break;
  }
  this._x0 = this._x1, this._x1 = x;
  this._y0 = this._y1, this._y1 = y;
}

};

/* harmony default export */ webpack_exports[“default”] = (function(context) {

return new BasisClosed(context);

});

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/basisOpen.js”: /*!******************************************************!*\

!*** ./node_modules/d3-shape/src/curve/basisOpen.js ***!
\******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var basis_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./basis */ “./node_modules/d3-shape/src/curve/basis.js”);

function BasisOpen(context) {

this._context = context;

}

BasisOpen.prototype = {

areaStart: function() {
  this._line = 0;
},
areaEnd: function() {
  this._line = NaN;
},
lineStart: function() {
  this._x0 = this._x1 =
  this._y0 = this._y1 = NaN;
  this._point = 0;
},
lineEnd: function() {
  if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();
  this._line = 1 - this._line;
},
point: function(x, y) {
  x = +x, y = +y;
  switch (this._point) {
    case 0: this._point = 1; break;
    case 1: this._point = 2; break;
    case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;
    case 3: this._point = 4; // proceed
    default: Object(_basis__WEBPACK_IMPORTED_MODULE_0__["point"])(this, x, y); break;
  }
  this._x0 = this._x1, this._x1 = x;
  this._y0 = this._y1, this._y1 = y;
}

};

/* harmony default export */ webpack_exports[“default”] = (function(context) {

return new BasisOpen(context);

});

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/bundle.js”: /*!***************************************************!*\

!*** ./node_modules/d3-shape/src/curve/bundle.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var basis_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./basis */ “./node_modules/d3-shape/src/curve/basis.js”);

function Bundle(context, beta) {

this._basis = new _basis__WEBPACK_IMPORTED_MODULE_0__["Basis"](context);
this._beta = beta;

}

Bundle.prototype = {

lineStart: function() {
  this._x = [];
  this._y = [];
  this._basis.lineStart();
},
lineEnd: function() {
  var x = this._x,
      y = this._y,
      j = x.length - 1;

  if (j > 0) {
    var x0 = x[0],
        y0 = y[0],
        dx = x[j] - x0,
        dy = y[j] - y0,
        i = -1,
        t;

    while (++i <= j) {
      t = i / j;
      this._basis.point(
        this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),
        this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)
      );
    }
  }

  this._x = this._y = null;
  this._basis.lineEnd();
},
point: function(x, y) {
  this._x.push(+x);
  this._y.push(+y);
}

};

/* harmony default export */ webpack_exports[“default”] = ((function custom(beta) {

function bundle(context) {
  return beta === 1 ? new _basis__WEBPACK_IMPORTED_MODULE_0__["Basis"](context) : new Bundle(context, beta);
}

bundle.beta = function(beta) {
  return custom(+beta);
};

return bundle;

})(0.85));

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/cardinal.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-shape/src/curve/cardinal.js ***!
\*****************************************************/

/*! exports provided: point, Cardinal, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “point”, function() { return point; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “Cardinal”, function() { return Cardinal; }); function point(that, x, y) {

that._context.bezierCurveTo(
  that._x1 + that._k * (that._x2 - that._x0),
  that._y1 + that._k * (that._y2 - that._y0),
  that._x2 + that._k * (that._x1 - x),
  that._y2 + that._k * (that._y1 - y),
  that._x2,
  that._y2
);

}

function Cardinal(context, tension) {

this._context = context;
this._k = (1 - tension) / 6;

}

Cardinal.prototype = {

areaStart: function() {
  this._line = 0;
},
areaEnd: function() {
  this._line = NaN;
},
lineStart: function() {
  this._x0 = this._x1 = this._x2 =
  this._y0 = this._y1 = this._y2 = NaN;
  this._point = 0;
},
lineEnd: function() {
  switch (this._point) {
    case 2: this._context.lineTo(this._x2, this._y2); break;
    case 3: point(this, this._x1, this._y1); break;
  }
  if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
  this._line = 1 - this._line;
},
point: function(x, y) {
  x = +x, y = +y;
  switch (this._point) {
    case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
    case 1: this._point = 2; this._x1 = x, this._y1 = y; break;
    case 2: this._point = 3; // proceed
    default: point(this, x, y); break;
  }
  this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
  this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;
}

};

/* harmony default export */ webpack_exports[“default”] = ((function custom(tension) {

function cardinal(context) {
  return new Cardinal(context, tension);
}

cardinal.tension = function(tension) {
  return custom(+tension);
};

return cardinal;

})(0));

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/cardinalClosed.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-shape/src/curve/cardinalClosed.js ***!
\***********************************************************/

/*! exports provided: CardinalClosed, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “CardinalClosed”, function() { return CardinalClosed; }); /* harmony import */ var noop_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../noop */ “./node_modules/d3-shape/src/noop.js”); /* harmony import */ var cardinal_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./cardinal */ “./node_modules/d3-shape/src/curve/cardinal.js”);

function CardinalClosed(context, tension) {

this._context = context;
this._k = (1 - tension) / 6;

}

CardinalClosed.prototype = {

areaStart: _noop__WEBPACK_IMPORTED_MODULE_0__["default"],
areaEnd: _noop__WEBPACK_IMPORTED_MODULE_0__["default"],
lineStart: function() {
  this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =
  this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;
  this._point = 0;
},
lineEnd: function() {
  switch (this._point) {
    case 1: {
      this._context.moveTo(this._x3, this._y3);
      this._context.closePath();
      break;
    }
    case 2: {
      this._context.lineTo(this._x3, this._y3);
      this._context.closePath();
      break;
    }
    case 3: {
      this.point(this._x3, this._y3);
      this.point(this._x4, this._y4);
      this.point(this._x5, this._y5);
      break;
    }
  }
},
point: function(x, y) {
  x = +x, y = +y;
  switch (this._point) {
    case 0: this._point = 1; this._x3 = x, this._y3 = y; break;
    case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;
    case 2: this._point = 3; this._x5 = x, this._y5 = y; break;
    default: Object(_cardinal__WEBPACK_IMPORTED_MODULE_1__["point"])(this, x, y); break;
  }
  this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
  this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;
}

};

/* harmony default export */ webpack_exports[“default”] = ((function custom(tension) {

function cardinal(context) {
  return new CardinalClosed(context, tension);
}

cardinal.tension = function(tension) {
  return custom(+tension);
};

return cardinal;

})(0));

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/cardinalOpen.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-shape/src/curve/cardinalOpen.js ***!
\*********************************************************/

/*! exports provided: CardinalOpen, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “CardinalOpen”, function() { return CardinalOpen; }); /* harmony import */ var cardinal_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./cardinal */ “./node_modules/d3-shape/src/curve/cardinal.js”);

function CardinalOpen(context, tension) {

this._context = context;
this._k = (1 - tension) / 6;

}

CardinalOpen.prototype = {

areaStart: function() {
  this._line = 0;
},
areaEnd: function() {
  this._line = NaN;
},
lineStart: function() {
  this._x0 = this._x1 = this._x2 =
  this._y0 = this._y1 = this._y2 = NaN;
  this._point = 0;
},
lineEnd: function() {
  if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();
  this._line = 1 - this._line;
},
point: function(x, y) {
  x = +x, y = +y;
  switch (this._point) {
    case 0: this._point = 1; break;
    case 1: this._point = 2; break;
    case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;
    case 3: this._point = 4; // proceed
    default: Object(_cardinal__WEBPACK_IMPORTED_MODULE_0__["point"])(this, x, y); break;
  }
  this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
  this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;
}

};

/* harmony default export */ webpack_exports[“default”] = ((function custom(tension) {

function cardinal(context) {
  return new CardinalOpen(context, tension);
}

cardinal.tension = function(tension) {
  return custom(+tension);
};

return cardinal;

})(0));

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/catmullRom.js”: /*!*******************************************************!*\

!*** ./node_modules/d3-shape/src/curve/catmullRom.js ***!
\*******************************************************/

/*! exports provided: point, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “point”, function() { return point; }); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-shape/src/math.js”); /* harmony import */ var cardinal_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./cardinal */ “./node_modules/d3-shape/src/curve/cardinal.js”);

function point(that, x, y) {

var x1 = that._x1,
    y1 = that._y1,
    x2 = that._x2,
    y2 = that._y2;

if (that._l01_a > _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) {
  var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,
      n = 3 * that._l01_a * (that._l01_a + that._l12_a);
  x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;
  y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;
}

if (that._l23_a > _math__WEBPACK_IMPORTED_MODULE_0__["epsilon"]) {
  var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,
      m = 3 * that._l23_a * (that._l23_a + that._l12_a);
  x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;
  y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;
}

that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);

}

function CatmullRom(context, alpha) {

this._context = context;
this._alpha = alpha;

}

CatmullRom.prototype = {

areaStart: function() {
  this._line = 0;
},
areaEnd: function() {
  this._line = NaN;
},
lineStart: function() {
  this._x0 = this._x1 = this._x2 =
  this._y0 = this._y1 = this._y2 = NaN;
  this._l01_a = this._l12_a = this._l23_a =
  this._l01_2a = this._l12_2a = this._l23_2a =
  this._point = 0;
},
lineEnd: function() {
  switch (this._point) {
    case 2: this._context.lineTo(this._x2, this._y2); break;
    case 3: this.point(this._x2, this._y2); break;
  }
  if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
  this._line = 1 - this._line;
},
point: function(x, y) {
  x = +x, y = +y;

  if (this._point) {
    var x23 = this._x2 - x,
        y23 = this._y2 - y;
    this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));
  }

  switch (this._point) {
    case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
    case 1: this._point = 2; break;
    case 2: this._point = 3; // proceed
    default: point(this, x, y); break;
  }

  this._l01_a = this._l12_a, this._l12_a = this._l23_a;
  this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;
  this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
  this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;
}

};

/* harmony default export */ webpack_exports[“default”] = ((function custom(alpha) {

function catmullRom(context) {
  return alpha ? new CatmullRom(context, alpha) : new _cardinal__WEBPACK_IMPORTED_MODULE_1__["Cardinal"](context, 0);
}

catmullRom.alpha = function(alpha) {
  return custom(+alpha);
};

return catmullRom;

})(0.5));

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/catmullRomClosed.js”: /*!*************************************************************!*\

!*** ./node_modules/d3-shape/src/curve/catmullRomClosed.js ***!
\*************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var cardinalClosed_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./cardinalClosed */ “./node_modules/d3-shape/src/curve/cardinalClosed.js”); /* harmony import */ var noop_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../noop */ “./node_modules/d3-shape/src/noop.js”); /* harmony import */ var catmullRom_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./catmullRom */ “./node_modules/d3-shape/src/curve/catmullRom.js”);

function CatmullRomClosed(context, alpha) {

this._context = context;
this._alpha = alpha;

}

CatmullRomClosed.prototype = {

areaStart: _noop__WEBPACK_IMPORTED_MODULE_1__["default"],
areaEnd: _noop__WEBPACK_IMPORTED_MODULE_1__["default"],
lineStart: function() {
  this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =
  this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;
  this._l01_a = this._l12_a = this._l23_a =
  this._l01_2a = this._l12_2a = this._l23_2a =
  this._point = 0;
},
lineEnd: function() {
  switch (this._point) {
    case 1: {
      this._context.moveTo(this._x3, this._y3);
      this._context.closePath();
      break;
    }
    case 2: {
      this._context.lineTo(this._x3, this._y3);
      this._context.closePath();
      break;
    }
    case 3: {
      this.point(this._x3, this._y3);
      this.point(this._x4, this._y4);
      this.point(this._x5, this._y5);
      break;
    }
  }
},
point: function(x, y) {
  x = +x, y = +y;

  if (this._point) {
    var x23 = this._x2 - x,
        y23 = this._y2 - y;
    this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));
  }

  switch (this._point) {
    case 0: this._point = 1; this._x3 = x, this._y3 = y; break;
    case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;
    case 2: this._point = 3; this._x5 = x, this._y5 = y; break;
    default: Object(_catmullRom__WEBPACK_IMPORTED_MODULE_2__["point"])(this, x, y); break;
  }

  this._l01_a = this._l12_a, this._l12_a = this._l23_a;
  this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;
  this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
  this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;
}

};

/* harmony default export */ webpack_exports[“default”] = ((function custom(alpha) {

function catmullRom(context) {
  return alpha ? new CatmullRomClosed(context, alpha) : new _cardinalClosed__WEBPACK_IMPORTED_MODULE_0__["CardinalClosed"](context, 0);
}

catmullRom.alpha = function(alpha) {
  return custom(+alpha);
};

return catmullRom;

})(0.5));

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/catmullRomOpen.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-shape/src/curve/catmullRomOpen.js ***!
\***********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var cardinalOpen_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./cardinalOpen */ “./node_modules/d3-shape/src/curve/cardinalOpen.js”); /* harmony import */ var catmullRom_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./catmullRom */ “./node_modules/d3-shape/src/curve/catmullRom.js”);

function CatmullRomOpen(context, alpha) {

this._context = context;
this._alpha = alpha;

}

CatmullRomOpen.prototype = {

areaStart: function() {
  this._line = 0;
},
areaEnd: function() {
  this._line = NaN;
},
lineStart: function() {
  this._x0 = this._x1 = this._x2 =
  this._y0 = this._y1 = this._y2 = NaN;
  this._l01_a = this._l12_a = this._l23_a =
  this._l01_2a = this._l12_2a = this._l23_2a =
  this._point = 0;
},
lineEnd: function() {
  if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();
  this._line = 1 - this._line;
},
point: function(x, y) {
  x = +x, y = +y;

  if (this._point) {
    var x23 = this._x2 - x,
        y23 = this._y2 - y;
    this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));
  }

  switch (this._point) {
    case 0: this._point = 1; break;
    case 1: this._point = 2; break;
    case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;
    case 3: this._point = 4; // proceed
    default: Object(_catmullRom__WEBPACK_IMPORTED_MODULE_1__["point"])(this, x, y); break;
  }

  this._l01_a = this._l12_a, this._l12_a = this._l23_a;
  this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;
  this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;
  this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;
}

};

/* harmony default export */ webpack_exports[“default”] = ((function custom(alpha) {

function catmullRom(context) {
  return alpha ? new CatmullRomOpen(context, alpha) : new _cardinalOpen__WEBPACK_IMPORTED_MODULE_0__["CardinalOpen"](context, 0);
}

catmullRom.alpha = function(alpha) {
  return custom(+alpha);
};

return catmullRom;

})(0.5));

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/linear.js”: /*!***************************************************!*\

!*** ./node_modules/d3-shape/src/curve/linear.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function Linear(context) {

this._context = context;

}

Linear.prototype = {

areaStart: function() {
  this._line = 0;
},
areaEnd: function() {
  this._line = NaN;
},
lineStart: function() {
  this._point = 0;
},
lineEnd: function() {
  if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
  this._line = 1 - this._line;
},
point: function(x, y) {
  x = +x, y = +y;
  switch (this._point) {
    case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
    case 1: this._point = 2; // proceed
    default: this._context.lineTo(x, y); break;
  }
}

};

/* harmony default export */ webpack_exports[“default”] = (function(context) {

return new Linear(context);

});

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/linearClosed.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-shape/src/curve/linearClosed.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var noop_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../noop */ “./node_modules/d3-shape/src/noop.js”);

function LinearClosed(context) {

this._context = context;

}

LinearClosed.prototype = {

areaStart: _noop__WEBPACK_IMPORTED_MODULE_0__["default"],
areaEnd: _noop__WEBPACK_IMPORTED_MODULE_0__["default"],
lineStart: function() {
  this._point = 0;
},
lineEnd: function() {
  if (this._point) this._context.closePath();
},
point: function(x, y) {
  x = +x, y = +y;
  if (this._point) this._context.lineTo(x, y);
  else this._point = 1, this._context.moveTo(x, y);
}

};

/* harmony default export */ webpack_exports[“default”] = (function(context) {

return new LinearClosed(context);

});

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/monotone.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-shape/src/curve/monotone.js ***!
\*****************************************************/

/*! exports provided: monotoneX, monotoneY */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “monotoneX”, function() { return monotoneX; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “monotoneY”, function() { return monotoneY; }); function sign(x) {

return x < 0 ? -1 : 1;

}

// Calculate the slopes of the tangents (Hermite-type interpolation) based on // the following paper: Steffen, M. 1990. A Simple Method for Monotonic // Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO. // NOV(II), P. 443, 1990. function slope3(that, x2, y2) {

var h0 = that._x1 - that._x0,
    h1 = x2 - that._x1,
    s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),
    s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),
    p = (s0 * h1 + s1 * h0) / (h0 + h1);
return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;

}

// Calculate a one-sided slope. function slope2(that, t) {

var h = that._x1 - that._x0;
return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;

}

// According to en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations // “you can express cubic Hermite interpolation in terms of cubic Bézier curves // with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1”. function point(that, t0, t1) {

var x0 = that._x0,
    y0 = that._y0,
    x1 = that._x1,
    y1 = that._y1,
    dx = (x1 - x0) / 3;
that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);

}

function MonotoneX(context) {

this._context = context;

}

MonotoneX.prototype = {

areaStart: function() {
  this._line = 0;
},
areaEnd: function() {
  this._line = NaN;
},
lineStart: function() {
  this._x0 = this._x1 =
  this._y0 = this._y1 =
  this._t0 = NaN;
  this._point = 0;
},
lineEnd: function() {
  switch (this._point) {
    case 2: this._context.lineTo(this._x1, this._y1); break;
    case 3: point(this, this._t0, slope2(this, this._t0)); break;
  }
  if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
  this._line = 1 - this._line;
},
point: function(x, y) {
  var t1 = NaN;

  x = +x, y = +y;
  if (x === this._x1 && y === this._y1) return; // Ignore coincident points.
  switch (this._point) {
    case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
    case 1: this._point = 2; break;
    case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;
    default: point(this, this._t0, t1 = slope3(this, x, y)); break;
  }

  this._x0 = this._x1, this._x1 = x;
  this._y0 = this._y1, this._y1 = y;
  this._t0 = t1;
}

}

function MonotoneY(context) {

this._context = new ReflectContext(context);

}

(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {

MonotoneX.prototype.point.call(this, y, x);

};

function ReflectContext(context) {

this._context = context;

}

ReflectContext.prototype = {

moveTo: function(x, y) { this._context.moveTo(y, x); },
closePath: function() { this._context.closePath(); },
lineTo: function(x, y) { this._context.lineTo(y, x); },
bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }

};

function monotoneX(context) {

return new MonotoneX(context);

}

function monotoneY(context) {

return new MonotoneY(context);

}

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/natural.js”: /*!****************************************************!*\

!*** ./node_modules/d3-shape/src/curve/natural.js ***!
\****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function Natural(context) {

this._context = context;

}

Natural.prototype = {

areaStart: function() {
  this._line = 0;
},
areaEnd: function() {
  this._line = NaN;
},
lineStart: function() {
  this._x = [];
  this._y = [];
},
lineEnd: function() {
  var x = this._x,
      y = this._y,
      n = x.length;

  if (n) {
    this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);
    if (n === 2) {
      this._context.lineTo(x[1], y[1]);
    } else {
      var px = controlPoints(x),
          py = controlPoints(y);
      for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {
        this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);
      }
    }
  }

  if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();
  this._line = 1 - this._line;
  this._x = this._y = null;
},
point: function(x, y) {
  this._x.push(+x);
  this._y.push(+y);
}

};

// See www.particleincell.com/2012/bezier-splines/ for derivation. function controlPoints(x) {

var i,
    n = x.length - 1,
    m,
    a = new Array(n),
    b = new Array(n),
    r = new Array(n);
a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];
for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];
a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];
for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];
a[n - 1] = r[n - 1] / b[n - 1];
for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];
b[n - 1] = (x[n] + a[n - 1]) / 2;
for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];
return [a, b];

}

/* harmony default export */ webpack_exports[“default”] = (function(context) {

return new Natural(context);

});

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/radial.js”: /*!***************************************************!*\

!*** ./node_modules/d3-shape/src/curve/radial.js ***!
\***************************************************/

/*! exports provided: curveRadialLinear, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “curveRadialLinear”, function() { return curveRadialLinear; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return curveRadial; }); /* harmony import */ var linear_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./linear */ “./node_modules/d3-shape/src/curve/linear.js”);

var curveRadialLinear = curveRadial(linear_WEBPACK_IMPORTED_MODULE_0[“default”]);

function Radial(curve) {

this._curve = curve;

}

Radial.prototype = {

areaStart: function() {
  this._curve.areaStart();
},
areaEnd: function() {
  this._curve.areaEnd();
},
lineStart: function() {
  this._curve.lineStart();
},
lineEnd: function() {
  this._curve.lineEnd();
},
point: function(a, r) {
  this._curve.point(r * Math.sin(a), r * -Math.cos(a));
}

};

function curveRadial(curve) {

function radial(context) {
  return new Radial(curve(context));
}

radial._curve = curve;

return radial;

}

/***/ }),

/***/ “./node_modules/d3-shape/src/curve/step.js”: /*!*************************************************!*\

!*** ./node_modules/d3-shape/src/curve/step.js ***!
\*************************************************/

/*! exports provided: default, stepBefore, stepAfter */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “stepBefore”, function() { return stepBefore; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “stepAfter”, function() { return stepAfter; }); function Step(context, t) {

this._context = context;
this._t = t;

}

Step.prototype = {

areaStart: function() {
  this._line = 0;
},
areaEnd: function() {
  this._line = NaN;
},
lineStart: function() {
  this._x = this._y = NaN;
  this._point = 0;
},
lineEnd: function() {
  if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);
  if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();
  if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;
},
point: function(x, y) {
  x = +x, y = +y;
  switch (this._point) {
    case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;
    case 1: this._point = 2; // proceed
    default: {
      if (this._t <= 0) {
        this._context.lineTo(this._x, y);
        this._context.lineTo(x, y);
      } else {
        var x1 = this._x * (1 - this._t) + x * this._t;
        this._context.lineTo(x1, this._y);
        this._context.lineTo(x1, y);
      }
      break;
    }
  }
  this._x = x, this._y = y;
}

};

/* harmony default export */ webpack_exports[“default”] = (function(context) {

return new Step(context, 0.5);

});

function stepBefore(context) {

return new Step(context, 0);

}

function stepAfter(context) {

return new Step(context, 1);

}

/***/ }),

/***/ “./node_modules/d3-shape/src/descending.js”: /*!*************************************************!*\

!*** ./node_modules/d3-shape/src/descending.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(a, b) {

return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;

});

/***/ }),

/***/ “./node_modules/d3-shape/src/identity.js”: /*!***********************************************!*\

!*** ./node_modules/d3-shape/src/identity.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(d) {

return d;

});

/***/ }),

/***/ “./node_modules/d3-shape/src/line.js”: /*!*******************************************!*\

!*** ./node_modules/d3-shape/src/line.js ***!
\*******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_path_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-path */ “./node_modules/d3-path/index.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./constant */ “./node_modules/d3-shape/src/constant.js”); /* harmony import */ var curve_linear_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./curve/linear */ “./node_modules/d3-shape/src/curve/linear.js”); /* harmony import */ var point_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./point */ “./node_modules/d3-shape/src/point.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var x = _point__WEBPACK_IMPORTED_MODULE_3__["x"],
    y = _point__WEBPACK_IMPORTED_MODULE_3__["y"],
    defined = Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(true),
    context = null,
    curve = _curve_linear__WEBPACK_IMPORTED_MODULE_2__["default"],
    output = null;

function line(data) {
  var i,
      n = data.length,
      d,
      defined0 = false,
      buffer;

  if (context == null) output = curve(buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__["path"])());

  for (i = 0; i <= n; ++i) {
    if (!(i < n && defined(d = data[i], i, data)) === defined0) {
      if (defined0 = !defined0) output.lineStart();
      else output.lineEnd();
    }
    if (defined0) output.point(+x(d, i, data), +y(d, i, data));
  }

  if (buffer) return output = null, buffer + "" || null;
}

line.x = function(_) {
  return arguments.length ? (x = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), line) : x;
};

line.y = function(_) {
  return arguments.length ? (y = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), line) : y;
};

line.defined = function(_) {
  return arguments.length ? (defined = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(!!_), line) : defined;
};

line.curve = function(_) {
  return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;
};

line.context = function(_) {
  return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;
};

return line;

});

/***/ }),

/***/ “./node_modules/d3-shape/src/lineRadial.js”: /*!*************************************************!*\

!*** ./node_modules/d3-shape/src/lineRadial.js ***!
\*************************************************/

/*! exports provided: lineRadial, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “lineRadial”, function() { return lineRadial; }); /* harmony import */ var curve_radial_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./curve/radial */ “./node_modules/d3-shape/src/curve/radial.js”); /* harmony import */ var line_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./line */ “./node_modules/d3-shape/src/line.js”);

function lineRadial(l) {

var c = l.curve;

l.angle = l.x, delete l.x;
l.radius = l.y, delete l.y;

l.curve = function(_) {
  return arguments.length ? c(Object(_curve_radial__WEBPACK_IMPORTED_MODULE_0__["default"])(_)) : c()._curve;
};

return l;

}

/* harmony default export */ webpack_exports[“default”] = (function() {

return lineRadial(Object(_line__WEBPACK_IMPORTED_MODULE_1__["default"])().curve(_curve_radial__WEBPACK_IMPORTED_MODULE_0__["curveRadialLinear"]));

});

/***/ }),

/***/ “./node_modules/d3-shape/src/link/index.js”: /*!*************************************************!*\

!*** ./node_modules/d3-shape/src/link/index.js ***!
\*************************************************/

/*! exports provided: linkHorizontal, linkVertical, linkRadial */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “linkHorizontal”, function() { return linkHorizontal; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “linkVertical”, function() { return linkVertical; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “linkRadial”, function() { return linkRadial; }); /* harmony import */ var d3_path_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-path */ “./node_modules/d3-path/index.js”); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../array */ “./node_modules/d3-shape/src/array.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ../constant */ “./node_modules/d3-shape/src/constant.js”); /* harmony import */ var point_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ../point */ “./node_modules/d3-shape/src/point.js”); /* harmony import */ var pointRadial_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ../pointRadial */ “./node_modules/d3-shape/src/pointRadial.js”);

function linkSource(d) {

return d.source;

}

function linkTarget(d) {

return d.target;

}

function link(curve) {

var source = linkSource,
    target = linkTarget,
    x = _point__WEBPACK_IMPORTED_MODULE_3__["x"],
    y = _point__WEBPACK_IMPORTED_MODULE_3__["y"],
    context = null;

function link() {
  var buffer, argv = _array__WEBPACK_IMPORTED_MODULE_1__["slice"].call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);
  if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__["path"])();
  curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));
  if (buffer) return context = null, buffer + "" || null;
}

link.source = function(_) {
  return arguments.length ? (source = _, link) : source;
};

link.target = function(_) {
  return arguments.length ? (target = _, link) : target;
};

link.x = function(_) {
  return arguments.length ? (x = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])(+_), link) : x;
};

link.y = function(_) {
  return arguments.length ? (y = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_2__["default"])(+_), link) : y;
};

link.context = function(_) {
  return arguments.length ? ((context = _ == null ? null : _), link) : context;
};

return link;

}

function curveHorizontal(context, x0, y0, x1, y1) {

context.moveTo(x0, y0);
context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);

}

function curveVertical(context, x0, y0, x1, y1) {

context.moveTo(x0, y0);
context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);

}

function curveRadial(context, x0, y0, x1, y1) {

var p0 = Object(_pointRadial__WEBPACK_IMPORTED_MODULE_4__["default"])(x0, y0),
    p1 = Object(_pointRadial__WEBPACK_IMPORTED_MODULE_4__["default"])(x0, y0 = (y0 + y1) / 2),
    p2 = Object(_pointRadial__WEBPACK_IMPORTED_MODULE_4__["default"])(x1, y0),
    p3 = Object(_pointRadial__WEBPACK_IMPORTED_MODULE_4__["default"])(x1, y1);
context.moveTo(p0[0], p0[1]);
context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);

}

function linkHorizontal() {

return link(curveHorizontal);

}

function linkVertical() {

return link(curveVertical);

}

function linkRadial() {

var l = link(curveRadial);
l.angle = l.x, delete l.x;
l.radius = l.y, delete l.y;
return l;

}

/***/ }),

/***/ “./node_modules/d3-shape/src/math.js”: /*!*******************************************!*\

!*** ./node_modules/d3-shape/src/math.js ***!
\*******************************************/

/*! exports provided: abs, atan2, cos, max, min, sin, sqrt, epsilon, pi, halfPi, tau, acos, asin */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “abs”, function() { return abs; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “atan2”, function() { return atan2; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cos”, function() { return cos; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “max”, function() { return max; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “min”, function() { return min; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sin”, function() { return sin; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sqrt”, function() { return sqrt; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “epsilon”, function() { return epsilon; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “pi”, function() { return pi; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “halfPi”, function() { return halfPi; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tau”, function() { return tau; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “acos”, function() { return acos; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “asin”, function() { return asin; }); var abs = Math.abs; var atan2 = Math.atan2; var cos = Math.cos; var max = Math.max; var min = Math.min; var sin = Math.sin; var sqrt = Math.sqrt;

var epsilon = 1e-12; var pi = Math.PI; var halfPi = pi / 2; var tau = 2 * pi;

function acos(x) {

return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);

}

function asin(x) {

return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);

}

/***/ }),

/***/ “./node_modules/d3-shape/src/noop.js”: /*!*******************************************!*\

!*** ./node_modules/d3-shape/src/noop.js ***!
\*******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function() {});

/***/ }),

/***/ “./node_modules/d3-shape/src/offset/diverging.js”: /*!*******************************************************!*\

!*** ./node_modules/d3-shape/src/offset/diverging.js ***!
\*******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(series, order) {

if (!((n = series.length) > 1)) return;
for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {
  for (yp = yn = 0, i = 0; i < n; ++i) {
    if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {
      d[0] = yp, d[1] = yp += dy;
    } else if (dy < 0) {
      d[1] = yn, d[0] = yn += dy;
    } else {
      d[0] = yp;
    }
  }
}

});

/***/ }),

/***/ “./node_modules/d3-shape/src/offset/expand.js”: /*!****************************************************!*\

!*** ./node_modules/d3-shape/src/offset/expand.js ***!
\****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var none_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./none */ “./node_modules/d3-shape/src/offset/none.js”);

/* harmony default export */ webpack_exports[“default”] = (function(series, order) {

if (!((n = series.length) > 0)) return;
for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {
  for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;
  if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;
}
Object(_none__WEBPACK_IMPORTED_MODULE_0__["default"])(series, order);

});

/***/ }),

/***/ “./node_modules/d3-shape/src/offset/none.js”: /*!**************************************************!*\

!*** ./node_modules/d3-shape/src/offset/none.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(series, order) {

if (!((n = series.length) > 1)) return;
for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {
  s0 = s1, s1 = series[order[i]];
  for (j = 0; j < m; ++j) {
    s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];
  }
}

});

/***/ }),

/***/ “./node_modules/d3-shape/src/offset/silhouette.js”: /*!********************************************************!*\

!*** ./node_modules/d3-shape/src/offset/silhouette.js ***!
\********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var none_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./none */ “./node_modules/d3-shape/src/offset/none.js”);

/* harmony default export */ webpack_exports[“default”] = (function(series, order) {

if (!((n = series.length) > 0)) return;
for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {
  for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;
  s0[j][1] += s0[j][0] = -y / 2;
}
Object(_none__WEBPACK_IMPORTED_MODULE_0__["default"])(series, order);

});

/***/ }),

/***/ “./node_modules/d3-shape/src/offset/wiggle.js”: /*!****************************************************!*\

!*** ./node_modules/d3-shape/src/offset/wiggle.js ***!
\****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var none_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./none */ “./node_modules/d3-shape/src/offset/none.js”);

/* harmony default export */ webpack_exports[“default”] = (function(series, order) {

if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;
for (var y = 0, j = 1, s0, m, n; j < m; ++j) {
  for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {
    var si = series[order[i]],
        sij0 = si[j][1] || 0,
        sij1 = si[j - 1][1] || 0,
        s3 = (sij0 - sij1) / 2;
    for (var k = 0; k < i; ++k) {
      var sk = series[order[k]],
          skj0 = sk[j][1] || 0,
          skj1 = sk[j - 1][1] || 0;
      s3 += skj0 - skj1;
    }
    s1 += sij0, s2 += s3 * sij0;
  }
  s0[j - 1][1] += s0[j - 1][0] = y;
  if (s1) y -= s2 / s1;
}
s0[j - 1][1] += s0[j - 1][0] = y;
Object(_none__WEBPACK_IMPORTED_MODULE_0__["default"])(series, order);

});

/***/ }),

/***/ “./node_modules/d3-shape/src/order/ascending.js”: /*!******************************************************!*\

!*** ./node_modules/d3-shape/src/order/ascending.js ***!
\******************************************************/

/*! exports provided: default, sum */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sum”, function() { return sum; }); /* harmony import */ var none_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./none */ “./node_modules/d3-shape/src/order/none.js”);

/* harmony default export */ webpack_exports[“default”] = (function(series) {

var sums = series.map(sum);
return Object(_none__WEBPACK_IMPORTED_MODULE_0__["default"])(series).sort(function(a, b) { return sums[a] - sums[b]; });

});

function sum(series) {

var s = 0, i = -1, n = series.length, v;
while (++i < n) if (v = +series[i][1]) s += v;
return s;

}

/***/ }),

/***/ “./node_modules/d3-shape/src/order/descending.js”: /*!*******************************************************!*\

!*** ./node_modules/d3-shape/src/order/descending.js ***!
\*******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var ascending_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./ascending */ “./node_modules/d3-shape/src/order/ascending.js”);

/* harmony default export */ webpack_exports[“default”] = (function(series) {

return Object(_ascending__WEBPACK_IMPORTED_MODULE_0__["default"])(series).reverse();

});

/***/ }),

/***/ “./node_modules/d3-shape/src/order/insideOut.js”: /*!******************************************************!*\

!*** ./node_modules/d3-shape/src/order/insideOut.js ***!
\******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var none_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./none */ “./node_modules/d3-shape/src/order/none.js”); /* harmony import */ var ascending_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./ascending */ “./node_modules/d3-shape/src/order/ascending.js”);

/* harmony default export */ webpack_exports[“default”] = (function(series) {

var n = series.length,
    i,
    j,
    sums = series.map(_ascending__WEBPACK_IMPORTED_MODULE_1__["sum"]),
    order = Object(_none__WEBPACK_IMPORTED_MODULE_0__["default"])(series).sort(function(a, b) { return sums[b] - sums[a]; }),
    top = 0,
    bottom = 0,
    tops = [],
    bottoms = [];

for (i = 0; i < n; ++i) {
  j = order[i];
  if (top < bottom) {
    top += sums[j];
    tops.push(j);
  } else {
    bottom += sums[j];
    bottoms.push(j);
  }
}

return bottoms.reverse().concat(tops);

});

/***/ }),

/***/ “./node_modules/d3-shape/src/order/none.js”: /*!*************************************************!*\

!*** ./node_modules/d3-shape/src/order/none.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(series) {

var n = series.length, o = new Array(n);
while (--n >= 0) o[n] = n;
return o;

});

/***/ }),

/***/ “./node_modules/d3-shape/src/order/reverse.js”: /*!****************************************************!*\

!*** ./node_modules/d3-shape/src/order/reverse.js ***!
\****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var none_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./none */ “./node_modules/d3-shape/src/order/none.js”);

/* harmony default export */ webpack_exports[“default”] = (function(series) {

return Object(_none__WEBPACK_IMPORTED_MODULE_0__["default"])(series).reverse();

});

/***/ }),

/***/ “./node_modules/d3-shape/src/pie.js”: /*!******************************************!*\

!*** ./node_modules/d3-shape/src/pie.js ***!
\******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./constant */ “./node_modules/d3-shape/src/constant.js”); /* harmony import */ var descending_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./descending */ “./node_modules/d3-shape/src/descending.js”); /* harmony import */ var identity_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./identity */ “./node_modules/d3-shape/src/identity.js”); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./math */ “./node_modules/d3-shape/src/math.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var value = _identity__WEBPACK_IMPORTED_MODULE_2__["default"],
    sortValues = _descending__WEBPACK_IMPORTED_MODULE_1__["default"],
    sort = null,
    startAngle = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(0),
    endAngle = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(_math__WEBPACK_IMPORTED_MODULE_3__["tau"]),
    padAngle = Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(0);

function pie(data) {
  var i,
      n = data.length,
      j,
      k,
      sum = 0,
      index = new Array(n),
      arcs = new Array(n),
      a0 = +startAngle.apply(this, arguments),
      da = Math.min(_math__WEBPACK_IMPORTED_MODULE_3__["tau"], Math.max(-_math__WEBPACK_IMPORTED_MODULE_3__["tau"], endAngle.apply(this, arguments) - a0)),
      a1,
      p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),
      pa = p * (da < 0 ? -1 : 1),
      v;

  for (i = 0; i < n; ++i) {
    if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {
      sum += v;
    }
  }

  // Optionally sort the arcs by previously-computed values or by data.
  if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });
  else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });

  // Compute the arcs! They are stored in the original data's order.
  for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {
    j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {
      data: data[j],
      index: i,
      value: v,
      startAngle: a0,
      endAngle: a1,
      padAngle: p
    };
  }

  return arcs;
}

pie.value = function(_) {
  return arguments.length ? (value = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), pie) : value;
};

pie.sortValues = function(_) {
  return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;
};

pie.sort = function(_) {
  return arguments.length ? (sort = _, sortValues = null, pie) : sort;
};

pie.startAngle = function(_) {
  return arguments.length ? (startAngle = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), pie) : startAngle;
};

pie.endAngle = function(_) {
  return arguments.length ? (endAngle = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), pie) : endAngle;
};

pie.padAngle = function(_) {
  return arguments.length ? (padAngle = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), pie) : padAngle;
};

return pie;

});

/***/ }),

/***/ “./node_modules/d3-shape/src/point.js”: /*!********************************************!*\

!*** ./node_modules/d3-shape/src/point.js ***!
\********************************************/

/*! exports provided: x, y */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “x”, function() { return x; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “y”, function() { return y; }); function x(p) {

return p[0];

}

function y(p) {

return p[1];

}

/***/ }),

/***/ “./node_modules/d3-shape/src/pointRadial.js”: /*!**************************************************!*\

!*** ./node_modules/d3-shape/src/pointRadial.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x, y) {

return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];

});

/***/ }),

/***/ “./node_modules/d3-shape/src/stack.js”: /*!********************************************!*\

!*** ./node_modules/d3-shape/src/stack.js ***!
\********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var array_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./array */ “./node_modules/d3-shape/src/array.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./constant */ “./node_modules/d3-shape/src/constant.js”); /* harmony import */ var offset_none_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./offset/none */ “./node_modules/d3-shape/src/offset/none.js”); /* harmony import */ var order_none_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./order/none */ “./node_modules/d3-shape/src/order/none.js”);

function stackValue(d, key) {

return d[key];

}

/* harmony default export */ webpack_exports[“default”] = (function() {

var keys = Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])([]),
    order = _order_none__WEBPACK_IMPORTED_MODULE_3__["default"],
    offset = _offset_none__WEBPACK_IMPORTED_MODULE_2__["default"],
    value = stackValue;

function stack(data) {
  var kz = keys.apply(this, arguments),
      i,
      m = data.length,
      n = kz.length,
      sz = new Array(n),
      oz;

  for (i = 0; i < n; ++i) {
    for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {
      si[j] = sij = [0, +value(data[j], ki, j, data)];
      sij.data = data[j];
    }
    si.key = ki;
  }

  for (i = 0, oz = order(sz); i < n; ++i) {
    sz[oz[i]].index = i;
  }

  offset(sz, oz);
  return sz;
}

stack.keys = function(_) {
  return arguments.length ? (keys = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(_array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(_)), stack) : keys;
};

stack.value = function(_) {
  return arguments.length ? (value = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(+_), stack) : value;
};

stack.order = function(_) {
  return arguments.length ? (order = _ == null ? _order_none__WEBPACK_IMPORTED_MODULE_3__["default"] : typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_1__["default"])(_array__WEBPACK_IMPORTED_MODULE_0__["slice"].call(_)), stack) : order;
};

stack.offset = function(_) {
  return arguments.length ? (offset = _ == null ? _offset_none__WEBPACK_IMPORTED_MODULE_2__["default"] : _, stack) : offset;
};

return stack;

});

/***/ }),

/***/ “./node_modules/d3-shape/src/symbol.js”: /*!*********************************************!*\

!*** ./node_modules/d3-shape/src/symbol.js ***!
\*********************************************/

/*! exports provided: symbols, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “symbols”, function() { return symbols; }); /* harmony import */ var d3_path_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-path */ “./node_modules/d3-path/index.js”); /* harmony import */ var symbol_circle_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./symbol/circle */ “./node_modules/d3-shape/src/symbol/circle.js”); /* harmony import */ var symbol_cross_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./symbol/cross */ “./node_modules/d3-shape/src/symbol/cross.js”); /* harmony import */ var symbol_diamond_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./symbol/diamond */ “./node_modules/d3-shape/src/symbol/diamond.js”); /* harmony import */ var symbol_star_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./symbol/star */ “./node_modules/d3-shape/src/symbol/star.js”); /* harmony import */ var symbol_square_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./symbol/square */ “./node_modules/d3-shape/src/symbol/square.js”); /* harmony import */ var symbol_triangle_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./symbol/triangle */ “./node_modules/d3-shape/src/symbol/triangle.js”); /* harmony import */ var symbol_wye_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./symbol/wye */ “./node_modules/d3-shape/src/symbol/wye.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./constant */ “./node_modules/d3-shape/src/constant.js”);

var symbols = [

_symbol_circle__WEBPACK_IMPORTED_MODULE_1__["default"],
_symbol_cross__WEBPACK_IMPORTED_MODULE_2__["default"],
_symbol_diamond__WEBPACK_IMPORTED_MODULE_3__["default"],
_symbol_square__WEBPACK_IMPORTED_MODULE_5__["default"],
_symbol_star__WEBPACK_IMPORTED_MODULE_4__["default"],
_symbol_triangle__WEBPACK_IMPORTED_MODULE_6__["default"],
_symbol_wye__WEBPACK_IMPORTED_MODULE_7__["default"]

];

/* harmony default export */ webpack_exports[“default”] = (function() {

var type = Object(_constant__WEBPACK_IMPORTED_MODULE_8__["default"])(_symbol_circle__WEBPACK_IMPORTED_MODULE_1__["default"]),
    size = Object(_constant__WEBPACK_IMPORTED_MODULE_8__["default"])(64),
    context = null;

function symbol() {
  var buffer;
  if (!context) context = buffer = Object(d3_path__WEBPACK_IMPORTED_MODULE_0__["path"])();
  type.apply(this, arguments).draw(context, +size.apply(this, arguments));
  if (buffer) return context = null, buffer + "" || null;
}

symbol.type = function(_) {
  return arguments.length ? (type = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_8__["default"])(_), symbol) : type;
};

symbol.size = function(_) {
  return arguments.length ? (size = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_8__["default"])(+_), symbol) : size;
};

symbol.context = function(_) {
  return arguments.length ? (context = _ == null ? null : _, symbol) : context;
};

return symbol;

});

/***/ }),

/***/ “./node_modules/d3-shape/src/symbol/circle.js”: /*!****************************************************!*\

!*** ./node_modules/d3-shape/src/symbol/circle.js ***!
\****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-shape/src/math.js”);

/* harmony default export */ webpack_exports[“default”] = ({

draw: function(context, size) {
  var r = Math.sqrt(size / _math__WEBPACK_IMPORTED_MODULE_0__["pi"]);
  context.moveTo(r, 0);
  context.arc(0, 0, r, 0, _math__WEBPACK_IMPORTED_MODULE_0__["tau"]);
}

});

/***/ }),

/***/ “./node_modules/d3-shape/src/symbol/cross.js”: /*!***************************************************!*\

!*** ./node_modules/d3-shape/src/symbol/cross.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = ({

draw: function(context, size) {
  var r = Math.sqrt(size / 5) / 2;
  context.moveTo(-3 * r, -r);
  context.lineTo(-r, -r);
  context.lineTo(-r, -3 * r);
  context.lineTo(r, -3 * r);
  context.lineTo(r, -r);
  context.lineTo(3 * r, -r);
  context.lineTo(3 * r, r);
  context.lineTo(r, r);
  context.lineTo(r, 3 * r);
  context.lineTo(-r, 3 * r);
  context.lineTo(-r, r);
  context.lineTo(-3 * r, r);
  context.closePath();
}

});

/***/ }),

/***/ “./node_modules/d3-shape/src/symbol/diamond.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-shape/src/symbol/diamond.js ***!
\*****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); var tan30 = Math.sqrt(1 / 3),

tan30_2 = tan30 * 2;

/* harmony default export */ webpack_exports[“default”] = ({

draw: function(context, size) {
  var y = Math.sqrt(size / tan30_2),
      x = y * tan30;
  context.moveTo(0, -y);
  context.lineTo(x, 0);
  context.lineTo(0, y);
  context.lineTo(-x, 0);
  context.closePath();
}

});

/***/ }),

/***/ “./node_modules/d3-shape/src/symbol/square.js”: /*!****************************************************!*\

!*** ./node_modules/d3-shape/src/symbol/square.js ***!
\****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = ({

draw: function(context, size) {
  var w = Math.sqrt(size),
      x = -w / 2;
  context.rect(x, x, w, w);
}

});

/***/ }),

/***/ “./node_modules/d3-shape/src/symbol/star.js”: /*!**************************************************!*\

!*** ./node_modules/d3-shape/src/symbol/star.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var math_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../math */ “./node_modules/d3-shape/src/math.js”);

var ka = 0.89081309152928522810,

kr = Math.sin(_math__WEBPACK_IMPORTED_MODULE_0__["pi"] / 10) / Math.sin(7 * _math__WEBPACK_IMPORTED_MODULE_0__["pi"] / 10),
kx = Math.sin(_math__WEBPACK_IMPORTED_MODULE_0__["tau"] / 10) * kr,
ky = -Math.cos(_math__WEBPACK_IMPORTED_MODULE_0__["tau"] / 10) * kr;

/* harmony default export */ webpack_exports[“default”] = ({

draw: function(context, size) {
  var r = Math.sqrt(size * ka),
      x = kx * r,
      y = ky * r;
  context.moveTo(0, -r);
  context.lineTo(x, y);
  for (var i = 1; i < 5; ++i) {
    var a = _math__WEBPACK_IMPORTED_MODULE_0__["tau"] * i / 5,
        c = Math.cos(a),
        s = Math.sin(a);
    context.lineTo(s * r, -c * r);
    context.lineTo(c * x - s * y, s * x + c * y);
  }
  context.closePath();
}

});

/***/ }),

/***/ “./node_modules/d3-shape/src/symbol/triangle.js”: /*!******************************************************!*\

!*** ./node_modules/d3-shape/src/symbol/triangle.js ***!
\******************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); var sqrt3 = Math.sqrt(3);

/* harmony default export */ webpack_exports[“default”] = ({

draw: function(context, size) {
  var y = -Math.sqrt(size / (sqrt3 * 3));
  context.moveTo(0, y * 2);
  context.lineTo(-sqrt3 * y, -y);
  context.lineTo(sqrt3 * y, -y);
  context.closePath();
}

});

/***/ }),

/***/ “./node_modules/d3-shape/src/symbol/wye.js”: /*!*************************************************!*\

!*** ./node_modules/d3-shape/src/symbol/wye.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); var c = -0.5,

s = Math.sqrt(3) / 2,
k = 1 / Math.sqrt(12),
a = (k / 2 + 1) * 3;

/* harmony default export */ webpack_exports[“default”] = ({

draw: function(context, size) {
  var r = Math.sqrt(size / a),
      x0 = r / 2,
      y0 = r * k,
      x1 = x0,
      y1 = r * k + r,
      x2 = -x1,
      y2 = y1;
  context.moveTo(x0, y0);
  context.lineTo(x1, y1);
  context.lineTo(x2, y2);
  context.lineTo(c * x0 - s * y0, s * x0 + c * y0);
  context.lineTo(c * x1 - s * y1, s * x1 + c * y1);
  context.lineTo(c * x2 - s * y2, s * x2 + c * y2);
  context.lineTo(c * x0 + s * y0, c * y0 - s * x0);
  context.lineTo(c * x1 + s * y1, c * y1 - s * x1);
  context.lineTo(c * x2 + s * y2, c * y2 - s * x2);
  context.closePath();
}

});

/***/ }),

/***/ “./node_modules/d3-time-format/index.js”: /*!**********************************************!*\

!*** ./node_modules/d3-time-format/index.js ***!
\**********************************************/

/*! exports provided: timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale, isoFormat, isoParse */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_defaultLocale_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/defaultLocale */ “./node_modules/d3-time-format/src/defaultLocale.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeFormatDefaultLocale”, function() { return src_defaultLocale_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeFormat”, function() { return src_defaultLocale_WEBPACK_IMPORTED_MODULE_0[“timeFormat”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeParse”, function() { return src_defaultLocale_WEBPACK_IMPORTED_MODULE_0[“timeParse”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcFormat”, function() { return src_defaultLocale_WEBPACK_IMPORTED_MODULE_0[“utcFormat”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcParse”, function() { return src_defaultLocale_WEBPACK_IMPORTED_MODULE_0[“utcParse”]; });

/* harmony import */ var src_locale_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/locale */ “./node_modules/d3-time-format/src/locale.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeFormatLocale”, function() { return src_locale_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_isoFormat_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/isoFormat */ “./node_modules/d3-time-format/src/isoFormat.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “isoFormat”, function() { return src_isoFormat_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_isoParse_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/isoParse */ “./node_modules/d3-time-format/src/isoParse.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “isoParse”, function() { return src_isoParse_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/***/ }),

/***/ “./node_modules/d3-time-format/src/defaultLocale.js”: /*!**********************************************************!*\

!*** ./node_modules/d3-time-format/src/defaultLocale.js ***!
\**********************************************************/

/*! exports provided: timeFormat, timeParse, utcFormat, utcParse, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “timeFormat”, function() { return timeFormat; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “timeParse”, function() { return timeParse; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcFormat”, function() { return utcFormat; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcParse”, function() { return utcParse; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return defaultLocale; }); /* harmony import */ var locale_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./locale */ “./node_modules/d3-time-format/src/locale.js”);

var locale; var timeFormat; var timeParse; var utcFormat; var utcParse;

defaultLocale({

dateTime: "%x, %X",
date: "%-m/%-d/%Y",
time: "%-I:%M:%S %p",
periods: ["AM", "PM"],
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

});

function defaultLocale(definition) {

locale = Object(_locale__WEBPACK_IMPORTED_MODULE_0__["default"])(definition);
timeFormat = locale.format;
timeParse = locale.parse;
utcFormat = locale.utcFormat;
utcParse = locale.utcParse;
return locale;

}

/***/ }),

/***/ “./node_modules/d3-time-format/src/isoFormat.js”: /*!******************************************************!*\

!*** ./node_modules/d3-time-format/src/isoFormat.js ***!
\******************************************************/

/*! exports provided: isoSpecifier, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “isoSpecifier”, function() { return isoSpecifier; }); /* harmony import */ var defaultLocale_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./defaultLocale */ “./node_modules/d3-time-format/src/defaultLocale.js”);

var isoSpecifier = “%Y-%m-%dT%H:%M:%S.%LZ”;

function formatIsoNative(date) {

return date.toISOString();

}

var formatIso = Date.prototype.toISOString

? formatIsoNative
: Object(_defaultLocale__WEBPACK_IMPORTED_MODULE_0__["utcFormat"])(isoSpecifier);

/* harmony default export */ webpack_exports[“default”] = (formatIso);

/***/ }),

/***/ “./node_modules/d3-time-format/src/isoParse.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-time-format/src/isoParse.js ***!
\*****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var isoFormat_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./isoFormat */ “./node_modules/d3-time-format/src/isoFormat.js”); /* harmony import */ var defaultLocale_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./defaultLocale */ “./node_modules/d3-time-format/src/defaultLocale.js”);

function parseIsoNative(string) {

var date = new Date(string);
return isNaN(date) ? null : date;

}

var parseIso = +new Date(“2000-01-01T00:00:00.000Z”)

? parseIsoNative
: Object(_defaultLocale__WEBPACK_IMPORTED_MODULE_1__["utcParse"])(_isoFormat__WEBPACK_IMPORTED_MODULE_0__["isoSpecifier"]);

/* harmony default export */ webpack_exports[“default”] = (parseIso);

/***/ }),

/***/ “./node_modules/d3-time-format/src/locale.js”: /*!***************************************************!*\

!*** ./node_modules/d3-time-format/src/locale.js ***!
\***************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return formatLocale; }); /* harmony import */ var d3_time_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-time */ “./node_modules/d3-time/index.js”);

function localDate(d) {

if (0 <= d.y && d.y < 100) {
  var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);
  date.setFullYear(d.y);
  return date;
}
return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);

}

function utcDate(d) {

if (0 <= d.y && d.y < 100) {
  var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));
  date.setUTCFullYear(d.y);
  return date;
}
return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));

}

function newYear(y) {

return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};

}

function formatLocale(locale) {

var locale_dateTime = locale.dateTime,
    locale_date = locale.date,
    locale_time = locale.time,
    locale_periods = locale.periods,
    locale_weekdays = locale.days,
    locale_shortWeekdays = locale.shortDays,
    locale_months = locale.months,
    locale_shortMonths = locale.shortMonths;

var periodRe = formatRe(locale_periods),
    periodLookup = formatLookup(locale_periods),
    weekdayRe = formatRe(locale_weekdays),
    weekdayLookup = formatLookup(locale_weekdays),
    shortWeekdayRe = formatRe(locale_shortWeekdays),
    shortWeekdayLookup = formatLookup(locale_shortWeekdays),
    monthRe = formatRe(locale_months),
    monthLookup = formatLookup(locale_months),
    shortMonthRe = formatRe(locale_shortMonths),
    shortMonthLookup = formatLookup(locale_shortMonths);

var formats = {
  "a": formatShortWeekday,
  "A": formatWeekday,
  "b": formatShortMonth,
  "B": formatMonth,
  "c": null,
  "d": formatDayOfMonth,
  "e": formatDayOfMonth,
  "f": formatMicroseconds,
  "H": formatHour24,
  "I": formatHour12,
  "j": formatDayOfYear,
  "L": formatMilliseconds,
  "m": formatMonthNumber,
  "M": formatMinutes,
  "p": formatPeriod,
  "Q": formatUnixTimestamp,
  "s": formatUnixTimestampSeconds,
  "S": formatSeconds,
  "u": formatWeekdayNumberMonday,
  "U": formatWeekNumberSunday,
  "V": formatWeekNumberISO,
  "w": formatWeekdayNumberSunday,
  "W": formatWeekNumberMonday,
  "x": null,
  "X": null,
  "y": formatYear,
  "Y": formatFullYear,
  "Z": formatZone,
  "%": formatLiteralPercent
};

var utcFormats = {
  "a": formatUTCShortWeekday,
  "A": formatUTCWeekday,
  "b": formatUTCShortMonth,
  "B": formatUTCMonth,
  "c": null,
  "d": formatUTCDayOfMonth,
  "e": formatUTCDayOfMonth,
  "f": formatUTCMicroseconds,
  "H": formatUTCHour24,
  "I": formatUTCHour12,
  "j": formatUTCDayOfYear,
  "L": formatUTCMilliseconds,
  "m": formatUTCMonthNumber,
  "M": formatUTCMinutes,
  "p": formatUTCPeriod,
  "Q": formatUnixTimestamp,
  "s": formatUnixTimestampSeconds,
  "S": formatUTCSeconds,
  "u": formatUTCWeekdayNumberMonday,
  "U": formatUTCWeekNumberSunday,
  "V": formatUTCWeekNumberISO,
  "w": formatUTCWeekdayNumberSunday,
  "W": formatUTCWeekNumberMonday,
  "x": null,
  "X": null,
  "y": formatUTCYear,
  "Y": formatUTCFullYear,
  "Z": formatUTCZone,
  "%": formatLiteralPercent
};

var parses = {
  "a": parseShortWeekday,
  "A": parseWeekday,
  "b": parseShortMonth,
  "B": parseMonth,
  "c": parseLocaleDateTime,
  "d": parseDayOfMonth,
  "e": parseDayOfMonth,
  "f": parseMicroseconds,
  "H": parseHour24,
  "I": parseHour24,
  "j": parseDayOfYear,
  "L": parseMilliseconds,
  "m": parseMonthNumber,
  "M": parseMinutes,
  "p": parsePeriod,
  "Q": parseUnixTimestamp,
  "s": parseUnixTimestampSeconds,
  "S": parseSeconds,
  "u": parseWeekdayNumberMonday,
  "U": parseWeekNumberSunday,
  "V": parseWeekNumberISO,
  "w": parseWeekdayNumberSunday,
  "W": parseWeekNumberMonday,
  "x": parseLocaleDate,
  "X": parseLocaleTime,
  "y": parseYear,
  "Y": parseFullYear,
  "Z": parseZone,
  "%": parseLiteralPercent
};

// These recursive directive definitions must be deferred.
formats.x = newFormat(locale_date, formats);
formats.X = newFormat(locale_time, formats);
formats.c = newFormat(locale_dateTime, formats);
utcFormats.x = newFormat(locale_date, utcFormats);
utcFormats.X = newFormat(locale_time, utcFormats);
utcFormats.c = newFormat(locale_dateTime, utcFormats);

function newFormat(specifier, formats) {
  return function(date) {
    var string = [],
        i = -1,
        j = 0,
        n = specifier.length,
        c,
        pad,
        format;

    if (!(date instanceof Date)) date = new Date(+date);

    while (++i < n) {
      if (specifier.charCodeAt(i) === 37) {
        string.push(specifier.slice(j, i));
        if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);
        else pad = c === "e" ? " " : "0";
        if (format = formats[c]) c = format(date, pad);
        string.push(c);
        j = i + 1;
      }
    }

    string.push(specifier.slice(j, i));
    return string.join("");
  };
}

function newParse(specifier, newDate) {
  return function(string) {
    var d = newYear(1900),
        i = parseSpecifier(d, specifier, string += "", 0),
        week, day;
    if (i != string.length) return null;

    // If a UNIX timestamp is specified, return it.
    if ("Q" in d) return new Date(d.Q);

    // The am-pm flag is 0 for AM, and 1 for PM.
    if ("p" in d) d.H = d.H % 12 + d.p * 12;

    // Convert day-of-week and week-of-year to day-of-year.
    if ("V" in d) {
      if (d.V < 1 || d.V > 53) return null;
      if (!("w" in d)) d.w = 1;
      if ("Z" in d) {
        week = utcDate(newYear(d.y)), day = week.getUTCDay();
        week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__["utcMonday"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcMonday"])(week);
        week = d3_time__WEBPACK_IMPORTED_MODULE_0__["utcDay"].offset(week, (d.V - 1) * 7);
        d.y = week.getUTCFullYear();
        d.m = week.getUTCMonth();
        d.d = week.getUTCDate() + (d.w + 6) % 7;
      } else {
        week = newDate(newYear(d.y)), day = week.getDay();
        week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__["timeMonday"].ceil(week) : Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeMonday"])(week);
        week = d3_time__WEBPACK_IMPORTED_MODULE_0__["timeDay"].offset(week, (d.V - 1) * 7);
        d.y = week.getFullYear();
        d.m = week.getMonth();
        d.d = week.getDate() + (d.w + 6) % 7;
      }
    } else if ("W" in d || "U" in d) {
      if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0;
      day = "Z" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();
      d.m = 0;
      d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;
    }

    // If a time zone is specified, all fields are interpreted as UTC and then
    // offset according to the specified time zone.
    if ("Z" in d) {
      d.H += d.Z / 100 | 0;
      d.M += d.Z % 100;
      return utcDate(d);
    }

    // Otherwise, all fields are in local time.
    return newDate(d);
  };
}

function parseSpecifier(d, specifier, string, j) {
  var i = 0,
      n = specifier.length,
      m = string.length,
      c,
      parse;

  while (i < n) {
    if (j >= m) return -1;
    c = specifier.charCodeAt(i++);
    if (c === 37) {
      c = specifier.charAt(i++);
      parse = parses[c in pads ? specifier.charAt(i++) : c];
      if (!parse || ((j = parse(d, string, j)) < 0)) return -1;
    } else if (c != string.charCodeAt(j++)) {
      return -1;
    }
  }

  return j;
}

function parsePeriod(d, string, i) {
  var n = periodRe.exec(string.slice(i));
  return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}

function parseShortWeekday(d, string, i) {
  var n = shortWeekdayRe.exec(string.slice(i));
  return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}

function parseWeekday(d, string, i) {
  var n = weekdayRe.exec(string.slice(i));
  return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}

function parseShortMonth(d, string, i) {
  var n = shortMonthRe.exec(string.slice(i));
  return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}

function parseMonth(d, string, i) {
  var n = monthRe.exec(string.slice(i));
  return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;
}

function parseLocaleDateTime(d, string, i) {
  return parseSpecifier(d, locale_dateTime, string, i);
}

function parseLocaleDate(d, string, i) {
  return parseSpecifier(d, locale_date, string, i);
}

function parseLocaleTime(d, string, i) {
  return parseSpecifier(d, locale_time, string, i);
}

function formatShortWeekday(d) {
  return locale_shortWeekdays[d.getDay()];
}

function formatWeekday(d) {
  return locale_weekdays[d.getDay()];
}

function formatShortMonth(d) {
  return locale_shortMonths[d.getMonth()];
}

function formatMonth(d) {
  return locale_months[d.getMonth()];
}

function formatPeriod(d) {
  return locale_periods[+(d.getHours() >= 12)];
}

function formatUTCShortWeekday(d) {
  return locale_shortWeekdays[d.getUTCDay()];
}

function formatUTCWeekday(d) {
  return locale_weekdays[d.getUTCDay()];
}

function formatUTCShortMonth(d) {
  return locale_shortMonths[d.getUTCMonth()];
}

function formatUTCMonth(d) {
  return locale_months[d.getUTCMonth()];
}

function formatUTCPeriod(d) {
  return locale_periods[+(d.getUTCHours() >= 12)];
}

return {
  format: function(specifier) {
    var f = newFormat(specifier += "", formats);
    f.toString = function() { return specifier; };
    return f;
  },
  parse: function(specifier) {
    var p = newParse(specifier += "", localDate);
    p.toString = function() { return specifier; };
    return p;
  },
  utcFormat: function(specifier) {
    var f = newFormat(specifier += "", utcFormats);
    f.toString = function() { return specifier; };
    return f;
  },
  utcParse: function(specifier) {
    var p = newParse(specifier, utcDate);
    p.toString = function() { return specifier; };
    return p;
  }
};

}

var pads = {“-”: “”, “_”: “ ”, “0”: “0”},

numberRe = /^\s*\d+/, // note: ignores next directive
percentRe = /^%/,
requoteRe = /[\\^$*+?|[\]().{}]/g;

function pad(value, fill, width) {

var sign = value < 0 ? "-" : "",
    string = (sign ? -value : value) + "",
    length = string.length;
return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);

}

function requote(s) {

return s.replace(requoteRe, "\\$&");

}

function formatRe(names) {

return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i");

}

function formatLookup(names) {

var map = {}, i = -1, n = names.length;
while (++i < n) map[names[i].toLowerCase()] = i;
return map;

}

function parseWeekdayNumberSunday(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 1));
return n ? (d.w = +n[0], i + n[0].length) : -1;

}

function parseWeekdayNumberMonday(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 1));
return n ? (d.u = +n[0], i + n[0].length) : -1;

}

function parseWeekNumberSunday(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.U = +n[0], i + n[0].length) : -1;

}

function parseWeekNumberISO(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.V = +n[0], i + n[0].length) : -1;

}

function parseWeekNumberMonday(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.W = +n[0], i + n[0].length) : -1;

}

function parseFullYear(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 4));
return n ? (d.y = +n[0], i + n[0].length) : -1;

}

function parseYear(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;

}

function parseZone(d, string, i) {

var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6));
return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1;

}

function parseMonthNumber(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.m = n[0] - 1, i + n[0].length) : -1;

}

function parseDayOfMonth(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.d = +n[0], i + n[0].length) : -1;

}

function parseDayOfYear(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 3));
return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;

}

function parseHour24(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.H = +n[0], i + n[0].length) : -1;

}

function parseMinutes(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.M = +n[0], i + n[0].length) : -1;

}

function parseSeconds(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 2));
return n ? (d.S = +n[0], i + n[0].length) : -1;

}

function parseMilliseconds(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 3));
return n ? (d.L = +n[0], i + n[0].length) : -1;

}

function parseMicroseconds(d, string, i) {

var n = numberRe.exec(string.slice(i, i + 6));
return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;

}

function parseLiteralPercent(d, string, i) {

var n = percentRe.exec(string.slice(i, i + 1));
return n ? i + n[0].length : -1;

}

function parseUnixTimestamp(d, string, i) {

var n = numberRe.exec(string.slice(i));
return n ? (d.Q = +n[0], i + n[0].length) : -1;

}

function parseUnixTimestampSeconds(d, string, i) {

var n = numberRe.exec(string.slice(i));
return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;

}

function formatDayOfMonth(d, p) {

return pad(d.getDate(), p, 2);

}

function formatHour24(d, p) {

return pad(d.getHours(), p, 2);

}

function formatHour12(d, p) {

return pad(d.getHours() % 12 || 12, p, 2);

}

function formatDayOfYear(d, p) {

return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__["timeDay"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeYear"])(d), d), p, 3);

}

function formatMilliseconds(d, p) {

return pad(d.getMilliseconds(), p, 3);

}

function formatMicroseconds(d, p) {

return formatMilliseconds(d, p) + "000";

}

function formatMonthNumber(d, p) {

return pad(d.getMonth() + 1, p, 2);

}

function formatMinutes(d, p) {

return pad(d.getMinutes(), p, 2);

}

function formatSeconds(d, p) {

return pad(d.getSeconds(), p, 2);

}

function formatWeekdayNumberMonday(d) {

var day = d.getDay();
return day === 0 ? 7 : day;

}

function formatWeekNumberSunday(d, p) {

return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeSunday"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeYear"])(d), d), p, 2);

}

function formatWeekNumberISO(d, p) {

var day = d.getDay();
d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeThursday"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__["timeThursday"].ceil(d);
return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeThursday"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeYear"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeYear"])(d).getDay() === 4), p, 2);

}

function formatWeekdayNumberSunday(d) {

return d.getDay();

}

function formatWeekNumberMonday(d, p) {

return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeMonday"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["timeYear"])(d), d), p, 2);

}

function formatYear(d, p) {

return pad(d.getFullYear() % 100, p, 2);

}

function formatFullYear(d, p) {

return pad(d.getFullYear() % 10000, p, 4);

}

function formatZone(d) {

var z = d.getTimezoneOffset();
return (z > 0 ? "-" : (z *= -1, "+"))
    + pad(z / 60 | 0, "0", 2)
    + pad(z % 60, "0", 2);

}

function formatUTCDayOfMonth(d, p) {

return pad(d.getUTCDate(), p, 2);

}

function formatUTCHour24(d, p) {

return pad(d.getUTCHours(), p, 2);

}

function formatUTCHour12(d, p) {

return pad(d.getUTCHours() % 12 || 12, p, 2);

}

function formatUTCDayOfYear(d, p) {

return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_0__["utcDay"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcYear"])(d), d), p, 3);

}

function formatUTCMilliseconds(d, p) {

return pad(d.getUTCMilliseconds(), p, 3);

}

function formatUTCMicroseconds(d, p) {

return formatUTCMilliseconds(d, p) + "000";

}

function formatUTCMonthNumber(d, p) {

return pad(d.getUTCMonth() + 1, p, 2);

}

function formatUTCMinutes(d, p) {

return pad(d.getUTCMinutes(), p, 2);

}

function formatUTCSeconds(d, p) {

return pad(d.getUTCSeconds(), p, 2);

}

function formatUTCWeekdayNumberMonday(d) {

var dow = d.getUTCDay();
return dow === 0 ? 7 : dow;

}

function formatUTCWeekNumberSunday(d, p) {

return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcSunday"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcYear"])(d), d), p, 2);

}

function formatUTCWeekNumberISO(d, p) {

var day = d.getUTCDay();
d = (day >= 4 || day === 0) ? Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcThursday"])(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__["utcThursday"].ceil(d);
return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcThursday"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcYear"])(d), d) + (Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcYear"])(d).getUTCDay() === 4), p, 2);

}

function formatUTCWeekdayNumberSunday(d) {

return d.getUTCDay();

}

function formatUTCWeekNumberMonday(d, p) {

return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcMonday"].count(Object(d3_time__WEBPACK_IMPORTED_MODULE_0__["utcYear"])(d), d), p, 2);

}

function formatUTCYear(d, p) {

return pad(d.getUTCFullYear() % 100, p, 2);

}

function formatUTCFullYear(d, p) {

return pad(d.getUTCFullYear() % 10000, p, 4);

}

function formatUTCZone() {

return "+0000";

}

function formatLiteralPercent() {

return "%";

}

function formatUnixTimestamp(d) {

return +d;

}

function formatUnixTimestampSeconds(d) {

return Math.floor(+d / 1000);

}

/***/ }),

/***/ “./node_modules/d3-time/index.js”: /*!***************************************!*\

!*** ./node_modules/d3-time/index.js ***!
\***************************************/

/*! exports provided: timeInterval, timeMillisecond, timeMilliseconds, utcMillisecond, utcMilliseconds, timeSecond, timeSeconds, utcSecond, utcSeconds, timeMinute, timeMinutes, timeHour, timeHours, timeDay, timeDays, timeWeek, timeWeeks, timeSunday, timeSundays, timeMonday, timeMondays, timeTuesday, timeTuesdays, timeWednesday, timeWednesdays, timeThursday, timeThursdays, timeFriday, timeFridays, timeSaturday, timeSaturdays, timeMonth, timeMonths, timeYear, timeYears, utcMinute, utcMinutes, utcHour, utcHours, utcDay, utcDays, utcWeek, utcWeeks, utcSunday, utcSundays, utcMonday, utcMondays, utcTuesday, utcTuesdays, utcWednesday, utcWednesdays, utcThursday, utcThursdays, utcFriday, utcFridays, utcSaturday, utcSaturdays, utcMonth, utcMonths, utcYear, utcYears */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/interval */ “./node_modules/d3-time/src/interval.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeInterval”, function() { return src_interval_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_millisecond_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/millisecond */ “./node_modules/d3-time/src/millisecond.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMillisecond”, function() { return src_millisecond_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMilliseconds”, function() { return src_millisecond_WEBPACK_IMPORTED_MODULE_1[“milliseconds”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMillisecond”, function() { return src_millisecond_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMilliseconds”, function() { return src_millisecond_WEBPACK_IMPORTED_MODULE_1[“milliseconds”]; });

/* harmony import */ var src_second_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/second */ “./node_modules/d3-time/src/second.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeSecond”, function() { return src_second_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeSeconds”, function() { return src_second_WEBPACK_IMPORTED_MODULE_2[“seconds”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcSecond”, function() { return src_second_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcSeconds”, function() { return src_second_WEBPACK_IMPORTED_MODULE_2[“seconds”]; });

/* harmony import */ var src_minute_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/minute */ “./node_modules/d3-time/src/minute.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMinute”, function() { return src_minute_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMinutes”, function() { return src_minute_WEBPACK_IMPORTED_MODULE_3[“minutes”]; });

/* harmony import */ var src_hour_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./src/hour */ “./node_modules/d3-time/src/hour.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeHour”, function() { return src_hour_WEBPACK_IMPORTED_MODULE_4[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeHours”, function() { return src_hour_WEBPACK_IMPORTED_MODULE_4[“hours”]; });

/* harmony import */ var src_day_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./src/day */ “./node_modules/d3-time/src/day.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeDay”, function() { return src_day_WEBPACK_IMPORTED_MODULE_5[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeDays”, function() { return src_day_WEBPACK_IMPORTED_MODULE_5[“days”]; });

/* harmony import */ var src_week_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./src/week */ “./node_modules/d3-time/src/week.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeWeek”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“sunday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeWeeks”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“sundays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeSunday”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“sunday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeSundays”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“sundays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMonday”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“monday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMondays”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“mondays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeTuesday”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“tuesday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeTuesdays”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“tuesdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeWednesday”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“wednesday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeWednesdays”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“wednesdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeThursday”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“thursday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeThursdays”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“thursdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeFriday”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“friday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeFridays”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“fridays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeSaturday”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“saturday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeSaturdays”, function() { return src_week_WEBPACK_IMPORTED_MODULE_6[“saturdays”]; });

/* harmony import */ var src_month_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./src/month */ “./node_modules/d3-time/src/month.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMonth”, function() { return src_month_WEBPACK_IMPORTED_MODULE_7[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMonths”, function() { return src_month_WEBPACK_IMPORTED_MODULE_7[“months”]; });

/* harmony import */ var src_year_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./src/year */ “./node_modules/d3-time/src/year.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeYear”, function() { return src_year_WEBPACK_IMPORTED_MODULE_8[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeYears”, function() { return src_year_WEBPACK_IMPORTED_MODULE_8[“years”]; });

/* harmony import */ var src_utcMinute_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./src/utcMinute */ “./node_modules/d3-time/src/utcMinute.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMinute”, function() { return src_utcMinute_WEBPACK_IMPORTED_MODULE_9[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMinutes”, function() { return src_utcMinute_WEBPACK_IMPORTED_MODULE_9[“utcMinutes”]; });

/* harmony import */ var src_utcHour_WEBPACK_IMPORTED_MODULE_10 = webpack_require(/*! ./src/utcHour */ “./node_modules/d3-time/src/utcHour.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcHour”, function() { return src_utcHour_WEBPACK_IMPORTED_MODULE_10[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcHours”, function() { return src_utcHour_WEBPACK_IMPORTED_MODULE_10[“utcHours”]; });

/* harmony import */ var src_utcDay_WEBPACK_IMPORTED_MODULE_11 = webpack_require(/*! ./src/utcDay */ “./node_modules/d3-time/src/utcDay.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcDay”, function() { return src_utcDay_WEBPACK_IMPORTED_MODULE_11[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcDays”, function() { return src_utcDay_WEBPACK_IMPORTED_MODULE_11[“utcDays”]; });

/* harmony import */ var src_utcWeek_WEBPACK_IMPORTED_MODULE_12 = webpack_require(/*! ./src/utcWeek */ “./node_modules/d3-time/src/utcWeek.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcWeek”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcSunday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcWeeks”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcSundays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcSunday”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcSunday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcSundays”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcSundays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMonday”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcMonday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMondays”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcMondays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcTuesday”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcTuesday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcTuesdays”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcTuesdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcWednesday”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcWednesday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcWednesdays”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcWednesdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcThursday”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcThursday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcThursdays”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcThursdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcFriday”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcFriday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcFridays”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcFridays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcSaturday”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcSaturday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcSaturdays”, function() { return src_utcWeek_WEBPACK_IMPORTED_MODULE_12[“utcSaturdays”]; });

/* harmony import */ var src_utcMonth_WEBPACK_IMPORTED_MODULE_13 = webpack_require(/*! ./src/utcMonth */ “./node_modules/d3-time/src/utcMonth.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMonth”, function() { return src_utcMonth_WEBPACK_IMPORTED_MODULE_13[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMonths”, function() { return src_utcMonth_WEBPACK_IMPORTED_MODULE_13[“utcMonths”]; });

/* harmony import */ var src_utcYear_WEBPACK_IMPORTED_MODULE_14 = webpack_require(/*! ./src/utcYear */ “./node_modules/d3-time/src/utcYear.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcYear”, function() { return src_utcYear_WEBPACK_IMPORTED_MODULE_14[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcYears”, function() { return src_utcYear_WEBPACK_IMPORTED_MODULE_14[“utcYears”]; });

/***/ }),

/***/ “./node_modules/d3-time/src/day.js”: /*!*****************************************!*\

!*** ./node_modules/d3-time/src/day.js ***!
\*****************************************/

/*! exports provided: default, days */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “days”, function() { return days; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”); /* harmony import */ var duration_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./duration */ “./node_modules/d3-time/src/duration.js”);

var day = Object(interval_WEBPACK_IMPORTED_MODULE_0[“default”])(function(date) {

date.setHours(0, 0, 0, 0);

}, function(date, step) {

date.setDate(date.getDate() + step);

}, function(start, end) {

return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration__WEBPACK_IMPORTED_MODULE_1__["durationMinute"]) / _duration__WEBPACK_IMPORTED_MODULE_1__["durationDay"];

}, function(date) {

return date.getDate() - 1;

});

/* harmony default export */ webpack_exports[“default”] = (day); var days = day.range;

/***/ }),

/***/ “./node_modules/d3-time/src/duration.js”: /*!**********************************************!*\

!*** ./node_modules/d3-time/src/duration.js ***!
\**********************************************/

/*! exports provided: durationSecond, durationMinute, durationHour, durationDay, durationWeek */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “durationSecond”, function() { return durationSecond; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “durationMinute”, function() { return durationMinute; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “durationHour”, function() { return durationHour; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “durationDay”, function() { return durationDay; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “durationWeek”, function() { return durationWeek; }); var durationSecond = 1e3; var durationMinute = 6e4; var durationHour = 36e5; var durationDay = 864e5; var durationWeek = 6048e5;

/***/ }),

/***/ “./node_modules/d3-time/src/hour.js”: /*!******************************************!*\

!*** ./node_modules/d3-time/src/hour.js ***!
\******************************************/

/*! exports provided: default, hours */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “hours”, function() { return hours; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”); /* harmony import */ var duration_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./duration */ “./node_modules/d3-time/src/duration.js”);

var hour = Object(interval_WEBPACK_IMPORTED_MODULE_0[“default”])(function(date) {

var offset = date.getTimezoneOffset() * _duration__WEBPACK_IMPORTED_MODULE_1__["durationMinute"] % _duration__WEBPACK_IMPORTED_MODULE_1__["durationHour"];
if (offset < 0) offset += _duration__WEBPACK_IMPORTED_MODULE_1__["durationHour"];
date.setTime(Math.floor((+date - offset) / _duration__WEBPACK_IMPORTED_MODULE_1__["durationHour"]) * _duration__WEBPACK_IMPORTED_MODULE_1__["durationHour"] + offset);

}, function(date, step) {

date.setTime(+date + step * _duration__WEBPACK_IMPORTED_MODULE_1__["durationHour"]);

}, function(start, end) {

return (end - start) / _duration__WEBPACK_IMPORTED_MODULE_1__["durationHour"];

}, function(date) {

return date.getHours();

});

/* harmony default export */ webpack_exports[“default”] = (hour); var hours = hour.range;

/***/ }),

/***/ “./node_modules/d3-time/src/interval.js”: /*!**********************************************!*\

!*** ./node_modules/d3-time/src/interval.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return newInterval; }); var t0 = new Date,

t1 = new Date;

function newInterval(floori, offseti, count, field) {

function interval(date) {
  return floori(date = new Date(+date)), date;
}

interval.floor = interval;

interval.ceil = function(date) {
  return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;
};

interval.round = function(date) {
  var d0 = interval(date),
      d1 = interval.ceil(date);
  return date - d0 < d1 - date ? d0 : d1;
};

interval.offset = function(date, step) {
  return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;
};

interval.range = function(start, stop, step) {
  var range = [], previous;
  start = interval.ceil(start);
  step = step == null ? 1 : Math.floor(step);
  if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date
  do range.push(previous = new Date(+start)), offseti(start, step), floori(start);
  while (previous < start && start < stop);
  return range;
};

interval.filter = function(test) {
  return newInterval(function(date) {
    if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);
  }, function(date, step) {
    if (date >= date) {
      if (step < 0) while (++step <= 0) {
        while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty
      } else while (--step >= 0) {
        while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty
      }
    }
  });
};

if (count) {
  interval.count = function(start, end) {
    t0.setTime(+start), t1.setTime(+end);
    floori(t0), floori(t1);
    return Math.floor(count(t0, t1));
  };

  interval.every = function(step) {
    step = Math.floor(step);
    return !isFinite(step) || !(step > 0) ? null
        : !(step > 1) ? interval
        : interval.filter(field
            ? function(d) { return field(d) % step === 0; }
            : function(d) { return interval.count(0, d) % step === 0; });
  };
}

return interval;

}

/***/ }),

/***/ “./node_modules/d3-time/src/millisecond.js”: /*!*************************************************!*\

!*** ./node_modules/d3-time/src/millisecond.js ***!
\*************************************************/

/*! exports provided: default, milliseconds */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “milliseconds”, function() { return milliseconds; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”);

var millisecond = Object(interval_WEBPACK_IMPORTED_MODULE_0[“default”])(function() {

// noop

}, function(date, step) {

date.setTime(+date + step);

}, function(start, end) {

return end - start;

});

// An optimized implementation for this simple case. millisecond.every = function(k) {

k = Math.floor(k);
if (!isFinite(k) || !(k > 0)) return null;
if (!(k > 1)) return millisecond;
return Object(_interval__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
  date.setTime(Math.floor(date / k) * k);
}, function(date, step) {
  date.setTime(+date + step * k);
}, function(start, end) {
  return (end - start) / k;
});

};

/* harmony default export */ webpack_exports[“default”] = (millisecond); var milliseconds = millisecond.range;

/***/ }),

/***/ “./node_modules/d3-time/src/minute.js”: /*!********************************************!*\

!*** ./node_modules/d3-time/src/minute.js ***!
\********************************************/

/*! exports provided: default, minutes */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “minutes”, function() { return minutes; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”); /* harmony import */ var duration_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./duration */ “./node_modules/d3-time/src/duration.js”);

var minute = Object(interval_WEBPACK_IMPORTED_MODULE_0[“default”])(function(date) {

date.setTime(Math.floor(date / _duration__WEBPACK_IMPORTED_MODULE_1__["durationMinute"]) * _duration__WEBPACK_IMPORTED_MODULE_1__["durationMinute"]);

}, function(date, step) {

date.setTime(+date + step * _duration__WEBPACK_IMPORTED_MODULE_1__["durationMinute"]);

}, function(start, end) {

return (end - start) / _duration__WEBPACK_IMPORTED_MODULE_1__["durationMinute"];

}, function(date) {

return date.getMinutes();

});

/* harmony default export */ webpack_exports[“default”] = (minute); var minutes = minute.range;

/***/ }),

/***/ “./node_modules/d3-time/src/month.js”: /*!*******************************************!*\

!*** ./node_modules/d3-time/src/month.js ***!
\*******************************************/

/*! exports provided: default, months */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “months”, function() { return months; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”);

var month = Object(interval_WEBPACK_IMPORTED_MODULE_0[“default”])(function(date) {

date.setDate(1);
date.setHours(0, 0, 0, 0);

}, function(date, step) {

date.setMonth(date.getMonth() + step);

}, function(start, end) {

return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;

}, function(date) {

return date.getMonth();

});

/* harmony default export */ webpack_exports[“default”] = (month); var months = month.range;

/***/ }),

/***/ “./node_modules/d3-time/src/second.js”: /*!********************************************!*\

!*** ./node_modules/d3-time/src/second.js ***!
\********************************************/

/*! exports provided: default, seconds */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “seconds”, function() { return seconds; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”); /* harmony import */ var duration_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./duration */ “./node_modules/d3-time/src/duration.js”);

var second = Object(interval_WEBPACK_IMPORTED_MODULE_0[“default”])(function(date) {

date.setTime(Math.floor(date / _duration__WEBPACK_IMPORTED_MODULE_1__["durationSecond"]) * _duration__WEBPACK_IMPORTED_MODULE_1__["durationSecond"]);

}, function(date, step) {

date.setTime(+date + step * _duration__WEBPACK_IMPORTED_MODULE_1__["durationSecond"]);

}, function(start, end) {

return (end - start) / _duration__WEBPACK_IMPORTED_MODULE_1__["durationSecond"];

}, function(date) {

return date.getUTCSeconds();

});

/* harmony default export */ webpack_exports[“default”] = (second); var seconds = second.range;

/***/ }),

/***/ “./node_modules/d3-time/src/utcDay.js”: /*!********************************************!*\

!*** ./node_modules/d3-time/src/utcDay.js ***!
\********************************************/

/*! exports provided: default, utcDays */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcDays”, function() { return utcDays; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”); /* harmony import */ var duration_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./duration */ “./node_modules/d3-time/src/duration.js”);

var utcDay = Object(interval_WEBPACK_IMPORTED_MODULE_0[“default”])(function(date) {

date.setUTCHours(0, 0, 0, 0);

}, function(date, step) {

date.setUTCDate(date.getUTCDate() + step);

}, function(start, end) {

return (end - start) / _duration__WEBPACK_IMPORTED_MODULE_1__["durationDay"];

}, function(date) {

return date.getUTCDate() - 1;

});

/* harmony default export */ webpack_exports[“default”] = (utcDay); var utcDays = utcDay.range;

/***/ }),

/***/ “./node_modules/d3-time/src/utcHour.js”: /*!*********************************************!*\

!*** ./node_modules/d3-time/src/utcHour.js ***!
\*********************************************/

/*! exports provided: default, utcHours */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcHours”, function() { return utcHours; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”); /* harmony import */ var duration_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./duration */ “./node_modules/d3-time/src/duration.js”);

var utcHour = Object(interval_WEBPACK_IMPORTED_MODULE_0[“default”])(function(date) {

date.setUTCMinutes(0, 0, 0);

}, function(date, step) {

date.setTime(+date + step * _duration__WEBPACK_IMPORTED_MODULE_1__["durationHour"]);

}, function(start, end) {

return (end - start) / _duration__WEBPACK_IMPORTED_MODULE_1__["durationHour"];

}, function(date) {

return date.getUTCHours();

});

/* harmony default export */ webpack_exports[“default”] = (utcHour); var utcHours = utcHour.range;

/***/ }),

/***/ “./node_modules/d3-time/src/utcMinute.js”: /*!***********************************************!*\

!*** ./node_modules/d3-time/src/utcMinute.js ***!
\***********************************************/

/*! exports provided: default, utcMinutes */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcMinutes”, function() { return utcMinutes; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”); /* harmony import */ var duration_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./duration */ “./node_modules/d3-time/src/duration.js”);

var utcMinute = Object(interval_WEBPACK_IMPORTED_MODULE_0[“default”])(function(date) {

date.setUTCSeconds(0, 0);

}, function(date, step) {

date.setTime(+date + step * _duration__WEBPACK_IMPORTED_MODULE_1__["durationMinute"]);

}, function(start, end) {

return (end - start) / _duration__WEBPACK_IMPORTED_MODULE_1__["durationMinute"];

}, function(date) {

return date.getUTCMinutes();

});

/* harmony default export */ webpack_exports[“default”] = (utcMinute); var utcMinutes = utcMinute.range;

/***/ }),

/***/ “./node_modules/d3-time/src/utcMonth.js”: /*!**********************************************!*\

!*** ./node_modules/d3-time/src/utcMonth.js ***!
\**********************************************/

/*! exports provided: default, utcMonths */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcMonths”, function() { return utcMonths; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”);

var utcMonth = Object(interval_WEBPACK_IMPORTED_MODULE_0[“default”])(function(date) {

date.setUTCDate(1);
date.setUTCHours(0, 0, 0, 0);

}, function(date, step) {

date.setUTCMonth(date.getUTCMonth() + step);

}, function(start, end) {

return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;

}, function(date) {

return date.getUTCMonth();

});

/* harmony default export */ webpack_exports[“default”] = (utcMonth); var utcMonths = utcMonth.range;

/***/ }),

/***/ “./node_modules/d3-time/src/utcWeek.js”: /*!*********************************************!*\

!*** ./node_modules/d3-time/src/utcWeek.js ***!
\*********************************************/

/*! exports provided: utcSunday, utcMonday, utcTuesday, utcWednesday, utcThursday, utcFriday, utcSaturday, utcSundays, utcMondays, utcTuesdays, utcWednesdays, utcThursdays, utcFridays, utcSaturdays */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcSunday”, function() { return utcSunday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcMonday”, function() { return utcMonday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcTuesday”, function() { return utcTuesday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcWednesday”, function() { return utcWednesday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcThursday”, function() { return utcThursday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcFriday”, function() { return utcFriday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcSaturday”, function() { return utcSaturday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcSundays”, function() { return utcSundays; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcMondays”, function() { return utcMondays; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcTuesdays”, function() { return utcTuesdays; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcWednesdays”, function() { return utcWednesdays; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcThursdays”, function() { return utcThursdays; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcFridays”, function() { return utcFridays; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcSaturdays”, function() { return utcSaturdays; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”); /* harmony import */ var duration_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./duration */ “./node_modules/d3-time/src/duration.js”);

function utcWeekday(i) {

return Object(_interval__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
  date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);
  date.setUTCHours(0, 0, 0, 0);
}, function(date, step) {
  date.setUTCDate(date.getUTCDate() + step * 7);
}, function(start, end) {
  return (end - start) / _duration__WEBPACK_IMPORTED_MODULE_1__["durationWeek"];
});

}

var utcSunday = utcWeekday(0); var utcMonday = utcWeekday(1); var utcTuesday = utcWeekday(2); var utcWednesday = utcWeekday(3); var utcThursday = utcWeekday(4); var utcFriday = utcWeekday(5); var utcSaturday = utcWeekday(6);

var utcSundays = utcSunday.range; var utcMondays = utcMonday.range; var utcTuesdays = utcTuesday.range; var utcWednesdays = utcWednesday.range; var utcThursdays = utcThursday.range; var utcFridays = utcFriday.range; var utcSaturdays = utcSaturday.range;

/***/ }),

/***/ “./node_modules/d3-time/src/utcYear.js”: /*!*********************************************!*\

!*** ./node_modules/d3-time/src/utcYear.js ***!
\*********************************************/

/*! exports provided: default, utcYears */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “utcYears”, function() { return utcYears; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”);

var utcYear = Object(interval_WEBPACK_IMPORTED_MODULE_0[“default”])(function(date) {

date.setUTCMonth(0, 1);
date.setUTCHours(0, 0, 0, 0);

}, function(date, step) {

date.setUTCFullYear(date.getUTCFullYear() + step);

}, function(start, end) {

return end.getUTCFullYear() - start.getUTCFullYear();

}, function(date) {

return date.getUTCFullYear();

});

// An optimized implementation for this simple case. utcYear.every = function(k) {

return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
  date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);
  date.setUTCMonth(0, 1);
  date.setUTCHours(0, 0, 0, 0);
}, function(date, step) {
  date.setUTCFullYear(date.getUTCFullYear() + step * k);
});

};

/* harmony default export */ webpack_exports[“default”] = (utcYear); var utcYears = utcYear.range;

/***/ }),

/***/ “./node_modules/d3-time/src/week.js”: /*!******************************************!*\

!*** ./node_modules/d3-time/src/week.js ***!
\******************************************/

/*! exports provided: sunday, monday, tuesday, wednesday, thursday, friday, saturday, sundays, mondays, tuesdays, wednesdays, thursdays, fridays, saturdays */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sunday”, function() { return sunday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “monday”, function() { return monday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tuesday”, function() { return tuesday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “wednesday”, function() { return wednesday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “thursday”, function() { return thursday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “friday”, function() { return friday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “saturday”, function() { return saturday; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sundays”, function() { return sundays; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “mondays”, function() { return mondays; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tuesdays”, function() { return tuesdays; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “wednesdays”, function() { return wednesdays; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “thursdays”, function() { return thursdays; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “fridays”, function() { return fridays; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “saturdays”, function() { return saturdays; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”); /* harmony import */ var duration_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./duration */ “./node_modules/d3-time/src/duration.js”);

function weekday(i) {

return Object(_interval__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
  date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);
  date.setHours(0, 0, 0, 0);
}, function(date, step) {
  date.setDate(date.getDate() + step * 7);
}, function(start, end) {
  return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration__WEBPACK_IMPORTED_MODULE_1__["durationMinute"]) / _duration__WEBPACK_IMPORTED_MODULE_1__["durationWeek"];
});

}

var sunday = weekday(0); var monday = weekday(1); var tuesday = weekday(2); var wednesday = weekday(3); var thursday = weekday(4); var friday = weekday(5); var saturday = weekday(6);

var sundays = sunday.range; var mondays = monday.range; var tuesdays = tuesday.range; var wednesdays = wednesday.range; var thursdays = thursday.range; var fridays = friday.range; var saturdays = saturday.range;

/***/ }),

/***/ “./node_modules/d3-time/src/year.js”: /*!******************************************!*\

!*** ./node_modules/d3-time/src/year.js ***!
\******************************************/

/*! exports provided: default, years */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “years”, function() { return years; }); /* harmony import */ var interval_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./interval */ “./node_modules/d3-time/src/interval.js”);

var year = Object(interval_WEBPACK_IMPORTED_MODULE_0[“default”])(function(date) {

date.setMonth(0, 1);
date.setHours(0, 0, 0, 0);

}, function(date, step) {

date.setFullYear(date.getFullYear() + step);

}, function(start, end) {

return end.getFullYear() - start.getFullYear();

}, function(date) {

return date.getFullYear();

});

// An optimized implementation for this simple case. year.every = function(k) {

return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : Object(_interval__WEBPACK_IMPORTED_MODULE_0__["default"])(function(date) {
  date.setFullYear(Math.floor(date.getFullYear() / k) * k);
  date.setMonth(0, 1);
  date.setHours(0, 0, 0, 0);
}, function(date, step) {
  date.setFullYear(date.getFullYear() + step * k);
});

};

/* harmony default export */ webpack_exports[“default”] = (year); var years = year.range;

/***/ }),

/***/ “./node_modules/d3-timer/index.js”: /*!****************************************!*\

!*** ./node_modules/d3-timer/index.js ***!
\****************************************/

/*! exports provided: now, timer, timerFlush, timeout, interval */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_timer_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/timer */ “./node_modules/d3-timer/src/timer.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “now”, function() { return src_timer_WEBPACK_IMPORTED_MODULE_0[“now”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timer”, function() { return src_timer_WEBPACK_IMPORTED_MODULE_0[“timer”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timerFlush”, function() { return src_timer_WEBPACK_IMPORTED_MODULE_0[“timerFlush”]; });

/* harmony import */ var src_timeout_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/timeout */ “./node_modules/d3-timer/src/timeout.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeout”, function() { return src_timeout_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_interval_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/interval */ “./node_modules/d3-timer/src/interval.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interval”, function() { return src_interval_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/***/ }),

/***/ “./node_modules/d3-timer/src/interval.js”: /*!***********************************************!*\

!*** ./node_modules/d3-timer/src/interval.js ***!
\***********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var timer_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./timer */ “./node_modules/d3-timer/src/timer.js”);

/* harmony default export */ webpack_exports[“default”] = (function(callback, delay, time) {

var t = new _timer__WEBPACK_IMPORTED_MODULE_0__["Timer"], total = delay;
if (delay == null) return t.restart(callback, delay, time), t;
delay = +delay, time = time == null ? Object(_timer__WEBPACK_IMPORTED_MODULE_0__["now"])() : +time;
t.restart(function tick(elapsed) {
  elapsed += total;
  t.restart(tick, total += delay, time);
  callback(elapsed);
}, delay, time);
return t;

});

/***/ }),

/***/ “./node_modules/d3-timer/src/timeout.js”: /*!**********************************************!*\

!*** ./node_modules/d3-timer/src/timeout.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var timer_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./timer */ “./node_modules/d3-timer/src/timer.js”);

/* harmony default export */ webpack_exports[“default”] = (function(callback, delay, time) {

var t = new _timer__WEBPACK_IMPORTED_MODULE_0__["Timer"];
delay = delay == null ? 0 : +delay;
t.restart(function(elapsed) {
  t.stop();
  callback(elapsed + delay);
}, delay, time);
return t;

});

/***/ }),

/***/ “./node_modules/d3-timer/src/timer.js”: /*!********************************************!*\

!*** ./node_modules/d3-timer/src/timer.js ***!
\********************************************/

/*! exports provided: now, Timer, timer, timerFlush */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “now”, function() { return now; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “Timer”, function() { return Timer; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “timer”, function() { return timer; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “timerFlush”, function() { return timerFlush; }); var frame = 0, // is an animation frame pending?

timeout = 0, // is a timeout pending?
interval = 0, // are any timers active?
pokeDelay = 1000, // how frequently we check for clock skew
taskHead,
taskTail,
clockLast = 0,
clockNow = 0,
clockSkew = 0,
clock = typeof performance === "object" && performance.now ? performance : Date,
setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };

function now() {

return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);

}

function clearNow() {

clockNow = 0;

}

function Timer() {

this._call =
this._time =
this._next = null;

}

Timer.prototype = timer.prototype = {

constructor: Timer,
restart: function(callback, delay, time) {
  if (typeof callback !== "function") throw new TypeError("callback is not a function");
  time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);
  if (!this._next && taskTail !== this) {
    if (taskTail) taskTail._next = this;
    else taskHead = this;
    taskTail = this;
  }
  this._call = callback;
  this._time = time;
  sleep();
},
stop: function() {
  if (this._call) {
    this._call = null;
    this._time = Infinity;
    sleep();
  }
}

};

function timer(callback, delay, time) {

var t = new Timer;
t.restart(callback, delay, time);
return t;

}

function timerFlush() {

now(); // Get the current time, if not already set.
++frame; // Pretend we’ve set an alarm, if we haven’t already.
var t = taskHead, e;
while (t) {
  if ((e = clockNow - t._time) >= 0) t._call.call(null, e);
  t = t._next;
}
--frame;

}

function wake() {

clockNow = (clockLast = clock.now()) + clockSkew;
frame = timeout = 0;
try {
  timerFlush();
} finally {
  frame = 0;
  nap();
  clockNow = 0;
}

}

function poke() {

var now = clock.now(), delay = now - clockLast;
if (delay > pokeDelay) clockSkew -= delay, clockLast = now;

}

function nap() {

var t0, t1 = taskHead, t2, time = Infinity;
while (t1) {
  if (t1._call) {
    if (time > t1._time) time = t1._time;
    t0 = t1, t1 = t1._next;
  } else {
    t2 = t1._next, t1._next = null;
    t1 = t0 ? t0._next = t2 : taskHead = t2;
  }
}
taskTail = t0;
sleep(time);

}

function sleep(time) {

if (frame) return; // Soonest alarm already set, or will be.
if (timeout) timeout = clearTimeout(timeout);
var delay = time - clockNow; // Strictly less than if we recomputed clockNow.
if (delay > 24) {
  if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);
  if (interval) interval = clearInterval(interval);
} else {
  if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);
  frame = 1, setFrame(wake);
}

}

/***/ }),

/***/ “./node_modules/d3-transition/index.js”: /*!*********************************************!*\

!*** ./node_modules/d3-transition/index.js ***!
\*********************************************/

/*! exports provided: transition, active, interrupt */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_selection_index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/selection/index */ “./node_modules/d3-transition/src/selection/index.js”); /* harmony import */ var src_transition_index_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/transition/index */ “./node_modules/d3-transition/src/transition/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “transition”, function() { return src_transition_index_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony import */ var src_active_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./src/active */ “./node_modules/d3-transition/src/active.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “active”, function() { return src_active_WEBPACK_IMPORTED_MODULE_2[“default”]; });

/* harmony import */ var src_interrupt_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./src/interrupt */ “./node_modules/d3-transition/src/interrupt.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interrupt”, function() { return src_interrupt_WEBPACK_IMPORTED_MODULE_3[“default”]; });

/***/ }),

/***/ “./node_modules/d3-transition/src/active.js”: /*!**************************************************!*\

!*** ./node_modules/d3-transition/src/active.js ***!
\**************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var transition_index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./transition/index */ “./node_modules/d3-transition/src/transition/index.js”); /* harmony import */ var transition_schedule_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./transition/schedule */ “./node_modules/d3-transition/src/transition/schedule.js”);

var root = [null];

/* harmony default export */ webpack_exports[“default”] = (function(node, name) {

var schedules = node.__transition,
    schedule,
    i;

if (schedules) {
  name = name == null ? null : name + "";
  for (i in schedules) {
    if ((schedule = schedules[i]).state > _transition_schedule__WEBPACK_IMPORTED_MODULE_1__["SCHEDULED"] && schedule.name === name) {
      return new _transition_index__WEBPACK_IMPORTED_MODULE_0__["Transition"]([[node]], root, name, +i);
    }
  }
}

return null;

});

/***/ }),

/***/ “./node_modules/d3-transition/src/interrupt.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-transition/src/interrupt.js ***!
\*****************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var transition_schedule_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./transition/schedule */ “./node_modules/d3-transition/src/transition/schedule.js”);

/* harmony default export */ webpack_exports[“default”] = (function(node, name) {

var schedules = node.__transition,
    schedule,
    active,
    empty = true,
    i;

if (!schedules) return;

name = name == null ? null : name + "";

for (i in schedules) {
  if ((schedule = schedules[i]).name !== name) { empty = false; continue; }
  active = schedule.state > _transition_schedule__WEBPACK_IMPORTED_MODULE_0__["STARTING"] && schedule.state < _transition_schedule__WEBPACK_IMPORTED_MODULE_0__["ENDING"];
  schedule.state = _transition_schedule__WEBPACK_IMPORTED_MODULE_0__["ENDED"];
  schedule.timer.stop();
  if (active) schedule.on.call("interrupt", node, node.__data__, schedule.index, schedule.group);
  delete schedules[i];
}

if (empty) delete node.__transition;

});

/***/ }),

/***/ “./node_modules/d3-transition/src/selection/index.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-transition/src/selection/index.js ***!
\***********************************************************/

/*! no exports provided */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”); /* harmony import */ var interrupt_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./interrupt */ “./node_modules/d3-transition/src/selection/interrupt.js”); /* harmony import */ var transition_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./transition */ “./node_modules/d3-transition/src/selection/transition.js”);

d3_selection_WEBPACK_IMPORTED_MODULE_0_[“selection”].prototype.interrupt = interrupt_WEBPACK_IMPORTED_MODULE_1[“default”]; d3_selection_WEBPACK_IMPORTED_MODULE_0_[“selection”].prototype.transition = transition_WEBPACK_IMPORTED_MODULE_2[“default”];

/***/ }),

/***/ “./node_modules/d3-transition/src/selection/interrupt.js”: /*!***************************************************************!*\

!*** ./node_modules/d3-transition/src/selection/interrupt.js ***!
\***************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var interrupt_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../interrupt */ “./node_modules/d3-transition/src/interrupt.js”);

/* harmony default export */ webpack_exports[“default”] = (function(name) {

return this.each(function() {
  Object(_interrupt__WEBPACK_IMPORTED_MODULE_0__["default"])(this, name);
});

});

/***/ }),

/***/ “./node_modules/d3-transition/src/selection/transition.js”: /*!****************************************************************!*\

!*** ./node_modules/d3-transition/src/selection/transition.js ***!
\****************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var transition_index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ../transition/index */ “./node_modules/d3-transition/src/transition/index.js”); /* harmony import */ var transition_schedule_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ../transition/schedule */ “./node_modules/d3-transition/src/transition/schedule.js”); /* harmony import */ var d3_ease_WEBPACK_IMPORTED_MODULE_2_ = webpack_require(/*! d3-ease */ “./node_modules/d3-ease/index.js”); /* harmony import */ var d3_timer_WEBPACK_IMPORTED_MODULE_3_ = webpack_require(/*! d3-timer */ “./node_modules/d3-timer/index.js”);

var defaultTiming = {

time: null, // Set on use.
delay: 0,
duration: 250,
ease: d3_ease__WEBPACK_IMPORTED_MODULE_2__["easeCubicInOut"]

};

function inherit(node, id) {

var timing;
while (!(timing = node.__transition) || !(timing = timing[id])) {
  if (!(node = node.parentNode)) {
    return defaultTiming.time = Object(d3_timer__WEBPACK_IMPORTED_MODULE_3__["now"])(), defaultTiming;
  }
}
return timing;

}

/* harmony default export */ webpack_exports[“default”] = (function(name) {

var id,
    timing;

if (name instanceof _transition_index__WEBPACK_IMPORTED_MODULE_0__["Transition"]) {
  id = name._id, name = name._name;
} else {
  id = Object(_transition_index__WEBPACK_IMPORTED_MODULE_0__["newId"])(), (timing = defaultTiming).time = Object(d3_timer__WEBPACK_IMPORTED_MODULE_3__["now"])(), name = name == null ? null : name + "";
}

for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {
  for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
    if (node = group[i]) {
      Object(_transition_schedule__WEBPACK_IMPORTED_MODULE_1__["default"])(node, name, id, i, group, timing || inherit(node, id));
    }
  }
}

return new _transition_index__WEBPACK_IMPORTED_MODULE_0__["Transition"](groups, this._parents, name, id);

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/attr.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-transition/src/transition/attr.js ***!
\***********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_interpolate_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-interpolate */ “./node_modules/d3-interpolate/index.js”); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”); /* harmony import */ var tween_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./tween */ “./node_modules/d3-transition/src/transition/tween.js”); /* harmony import */ var interpolate_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./interpolate */ “./node_modules/d3-transition/src/transition/interpolate.js”);

function attrRemove(name) {

return function() {
  this.removeAttribute(name);
};

}

function attrRemoveNS(fullname) {

return function() {
  this.removeAttributeNS(fullname.space, fullname.local);
};

}

function attrConstant(name, interpolate, value1) {

var value00,
    interpolate0;
return function() {
  var value0 = this.getAttribute(name);
  return value0 === value1 ? null
      : value0 === value00 ? interpolate0
      : interpolate0 = interpolate(value00 = value0, value1);
};

}

function attrConstantNS(fullname, interpolate, value1) {

var value00,
    interpolate0;
return function() {
  var value0 = this.getAttributeNS(fullname.space, fullname.local);
  return value0 === value1 ? null
      : value0 === value00 ? interpolate0
      : interpolate0 = interpolate(value00 = value0, value1);
};

}

function attrFunction(name, interpolate, value) {

var value00,
    value10,
    interpolate0;
return function() {
  var value0, value1 = value(this);
  if (value1 == null) return void this.removeAttribute(name);
  value0 = this.getAttribute(name);
  return value0 === value1 ? null
      : value0 === value00 && value1 === value10 ? interpolate0
      : interpolate0 = interpolate(value00 = value0, value10 = value1);
};

}

function attrFunctionNS(fullname, interpolate, value) {

var value00,
    value10,
    interpolate0;
return function() {
  var value0, value1 = value(this);
  if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);
  value0 = this.getAttributeNS(fullname.space, fullname.local);
  return value0 === value1 ? null
      : value0 === value00 && value1 === value10 ? interpolate0
      : interpolate0 = interpolate(value00 = value0, value10 = value1);
};

}

/* harmony default export */ webpack_exports[“default”] = (function(name, value) {

var fullname = Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["namespace"])(name), i = fullname === "transform" ? d3_interpolate__WEBPACK_IMPORTED_MODULE_0__["interpolateTransformSvg"] : _interpolate__WEBPACK_IMPORTED_MODULE_3__["default"];
return this.attrTween(name, typeof value === "function"
    ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, Object(_tween__WEBPACK_IMPORTED_MODULE_2__["tweenValue"])(this, "attr." + name, value))
    : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)
    : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value + ""));

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/attrTween.js”: /*!****************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/attrTween.js ***!
\****************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”);

function attrTweenNS(fullname, value) {

function tween() {
  var node = this, i = value.apply(node, arguments);
  return i && function(t) {
    node.setAttributeNS(fullname.space, fullname.local, i(t));
  };
}
tween._value = value;
return tween;

}

function attrTween(name, value) {

function tween() {
  var node = this, i = value.apply(node, arguments);
  return i && function(t) {
    node.setAttribute(name, i(t));
  };
}
tween._value = value;
return tween;

}

/* harmony default export */ webpack_exports[“default”] = (function(name, value) {

var key = "attr." + name;
if (arguments.length < 2) return (key = this.tween(key)) && key._value;
if (value == null) return this.tween(key, null);
if (typeof value !== "function") throw new Error;
var fullname = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["namespace"])(name);
return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/delay.js”: /*!************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/delay.js ***!
\************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var schedule_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./schedule */ “./node_modules/d3-transition/src/transition/schedule.js”);

function delayFunction(id, value) {

return function() {
  Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["init"])(this, id).delay = +value.apply(this, arguments);
};

}

function delayConstant(id, value) {

return value = +value, function() {
  Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["init"])(this, id).delay = value;
};

}

/* harmony default export */ webpack_exports[“default”] = (function(value) {

var id = this._id;

return arguments.length
    ? this.each((typeof value === "function"
        ? delayFunction
        : delayConstant)(id, value))
    : Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["get"])(this.node(), id).delay;

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/duration.js”: /*!***************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/duration.js ***!
\***************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var schedule_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./schedule */ “./node_modules/d3-transition/src/transition/schedule.js”);

function durationFunction(id, value) {

return function() {
  Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id).duration = +value.apply(this, arguments);
};

}

function durationConstant(id, value) {

return value = +value, function() {
  Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id).duration = value;
};

}

/* harmony default export */ webpack_exports[“default”] = (function(value) {

var id = this._id;

return arguments.length
    ? this.each((typeof value === "function"
        ? durationFunction
        : durationConstant)(id, value))
    : Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["get"])(this.node(), id).duration;

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/ease.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-transition/src/transition/ease.js ***!
\***********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var schedule_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./schedule */ “./node_modules/d3-transition/src/transition/schedule.js”);

function easeConstant(id, value) {

if (typeof value !== "function") throw new Error;
return function() {
  Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id).ease = value;
};

}

/* harmony default export */ webpack_exports[“default”] = (function(value) {

var id = this._id;

return arguments.length
    ? this.each(easeConstant(id, value))
    : Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["get"])(this.node(), id).ease;

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/filter.js”: /*!*************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/filter.js ***!
\*************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./index */ “./node_modules/d3-transition/src/transition/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function(match) {

if (typeof match !== "function") match = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["matcher"])(match);

for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
  for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
    if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
      subgroup.push(node);
    }
  }
}

return new _index__WEBPACK_IMPORTED_MODULE_1__["Transition"](subgroups, this._parents, this._name, this._id);

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/index.js”: /*!************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/index.js ***!
\************************************************************/

/*! exports provided: Transition, default, newId */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “Transition”, function() { return Transition; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return transition; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “newId”, function() { return newId; }); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”); /* harmony import */ var attr_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./attr */ “./node_modules/d3-transition/src/transition/attr.js”); /* harmony import */ var attrTween_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./attrTween */ “./node_modules/d3-transition/src/transition/attrTween.js”); /* harmony import */ var delay_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./delay */ “./node_modules/d3-transition/src/transition/delay.js”); /* harmony import */ var duration_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./duration */ “./node_modules/d3-transition/src/transition/duration.js”); /* harmony import */ var ease_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./ease */ “./node_modules/d3-transition/src/transition/ease.js”); /* harmony import */ var filter_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./filter */ “./node_modules/d3-transition/src/transition/filter.js”); /* harmony import */ var merge_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./merge */ “./node_modules/d3-transition/src/transition/merge.js”); /* harmony import */ var on_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./on */ “./node_modules/d3-transition/src/transition/on.js”); /* harmony import */ var remove_WEBPACK_IMPORTED_MODULE_9 = webpack_require(/*! ./remove */ “./node_modules/d3-transition/src/transition/remove.js”); /* harmony import */ var select_WEBPACK_IMPORTED_MODULE_10 = webpack_require(/*! ./select */ “./node_modules/d3-transition/src/transition/select.js”); /* harmony import */ var selectAll_WEBPACK_IMPORTED_MODULE_11 = webpack_require(/*! ./selectAll */ “./node_modules/d3-transition/src/transition/selectAll.js”); /* harmony import */ var selection_WEBPACK_IMPORTED_MODULE_12 = webpack_require(/*! ./selection */ “./node_modules/d3-transition/src/transition/selection.js”); /* harmony import */ var style_WEBPACK_IMPORTED_MODULE_13 = webpack_require(/*! ./style */ “./node_modules/d3-transition/src/transition/style.js”); /* harmony import */ var styleTween_WEBPACK_IMPORTED_MODULE_14 = webpack_require(/*! ./styleTween */ “./node_modules/d3-transition/src/transition/styleTween.js”); /* harmony import */ var text_WEBPACK_IMPORTED_MODULE_15 = webpack_require(/*! ./text */ “./node_modules/d3-transition/src/transition/text.js”); /* harmony import */ var transition_WEBPACK_IMPORTED_MODULE_16 = webpack_require(/*! ./transition */ “./node_modules/d3-transition/src/transition/transition.js”); /* harmony import */ var tween_WEBPACK_IMPORTED_MODULE_17 = webpack_require(/*! ./tween */ “./node_modules/d3-transition/src/transition/tween.js”);

var id = 0;

function Transition(groups, parents, name, id) {

this._groups = groups;
this._parents = parents;
this._name = name;
this._id = id;

}

function transition(name) {

return Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["selection"])().transition(name);

}

function newId() {

return ++id;

}

var selection_prototype = d3_selection_WEBPACK_IMPORTED_MODULE_0_[“selection”].prototype;

Transition.prototype = transition.prototype = {

constructor: Transition,
select: _select__WEBPACK_IMPORTED_MODULE_10__["default"],
selectAll: _selectAll__WEBPACK_IMPORTED_MODULE_11__["default"],
filter: _filter__WEBPACK_IMPORTED_MODULE_6__["default"],
merge: _merge__WEBPACK_IMPORTED_MODULE_7__["default"],
selection: _selection__WEBPACK_IMPORTED_MODULE_12__["default"],
transition: _transition__WEBPACK_IMPORTED_MODULE_16__["default"],
call: selection_prototype.call,
nodes: selection_prototype.nodes,
node: selection_prototype.node,
size: selection_prototype.size,
empty: selection_prototype.empty,
each: selection_prototype.each,
on: _on__WEBPACK_IMPORTED_MODULE_8__["default"],
attr: _attr__WEBPACK_IMPORTED_MODULE_1__["default"],
attrTween: _attrTween__WEBPACK_IMPORTED_MODULE_2__["default"],
style: _style__WEBPACK_IMPORTED_MODULE_13__["default"],
styleTween: _styleTween__WEBPACK_IMPORTED_MODULE_14__["default"],
text: _text__WEBPACK_IMPORTED_MODULE_15__["default"],
remove: _remove__WEBPACK_IMPORTED_MODULE_9__["default"],
tween: _tween__WEBPACK_IMPORTED_MODULE_17__["default"],
delay: _delay__WEBPACK_IMPORTED_MODULE_3__["default"],
duration: _duration__WEBPACK_IMPORTED_MODULE_4__["default"],
ease: _ease__WEBPACK_IMPORTED_MODULE_5__["default"]

};

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/interpolate.js”: /*!******************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/interpolate.js ***!
\******************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_color_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-color */ “./node_modules/d3-color/index.js”); /* harmony import */ var d3_interpolate_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-interpolate */ “./node_modules/d3-interpolate/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function(a, b) {

var c;
return (typeof b === "number" ? d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateNumber"]
    : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_0__["color"] ? d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateRgb"]
    : (c = Object(d3_color__WEBPACK_IMPORTED_MODULE_0__["color"])(b)) ? (b = c, d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateRgb"])
    : d3_interpolate__WEBPACK_IMPORTED_MODULE_1__["interpolateString"])(a, b);

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/merge.js”: /*!************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/merge.js ***!
\************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./index */ “./node_modules/d3-transition/src/transition/index.js”);

/* harmony default export */ webpack_exports[“default”] = (function(transition) {

if (transition._id !== this._id) throw new Error;

for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
  for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
    if (node = group0[i] || group1[i]) {
      merge[i] = node;
    }
  }
}

for (; j < m0; ++j) {
  merges[j] = groups0[j];
}

return new _index__WEBPACK_IMPORTED_MODULE_0__["Transition"](merges, this._parents, this._name, this._id);

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/on.js”: /*!*********************************************************!*\

!*** ./node_modules/d3-transition/src/transition/on.js ***!
\*********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var schedule_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./schedule */ “./node_modules/d3-transition/src/transition/schedule.js”);

function start(name) {

return (name + "").trim().split(/^|\s+/).every(function(t) {
  var i = t.indexOf(".");
  if (i >= 0) t = t.slice(0, i);
  return !t || t === "start";
});

}

function onFunction(id, name, listener) {

var on0, on1, sit = start(name) ? _schedule__WEBPACK_IMPORTED_MODULE_0__["init"] : _schedule__WEBPACK_IMPORTED_MODULE_0__["set"];
return function() {
  var schedule = sit(this, id),
      on = schedule.on;

  // If this node shared a dispatch with the previous node,
  // just assign the updated shared dispatch and we’re done!
  // Otherwise, copy-on-write.
  if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);

  schedule.on = on1;
};

}

/* harmony default export */ webpack_exports[“default”] = (function(name, listener) {

var id = this._id;

return arguments.length < 2
    ? Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["get"])(this.node(), id).on.on(name)
    : this.each(onFunction(id, name, listener));

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/remove.js”: /*!*************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/remove.js ***!
\*************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function removeFunction(id) {

return function() {
  var parent = this.parentNode;
  for (var i in this.__transition) if (+i !== id) return;
  if (parent) parent.removeChild(this);
};

}

/* harmony default export */ webpack_exports[“default”] = (function() {

return this.on("end.remove", removeFunction(this._id));

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/schedule.js”: /*!***************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/schedule.js ***!
\***************************************************************/

/*! exports provided: CREATED, SCHEDULED, STARTING, STARTED, RUNNING, ENDING, ENDED, default, init, set, get */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “CREATED”, function() { return CREATED; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “SCHEDULED”, function() { return SCHEDULED; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “STARTING”, function() { return STARTING; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “STARTED”, function() { return STARTED; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “RUNNING”, function() { return RUNNING; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “ENDING”, function() { return ENDING; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “ENDED”, function() { return ENDED; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “init”, function() { return init; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “set”, function() { return set; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “get”, function() { return get; }); /* harmony import */ var d3_dispatch_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-dispatch */ “./node_modules/d3-dispatch/index.js”); /* harmony import */ var d3_timer_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-timer */ “./node_modules/d3-timer/index.js”);

var emptyOn = Object(d3_dispatch_WEBPACK_IMPORTED_MODULE_0_[“dispatch”])(“start”, “end”, “interrupt”); var emptyTween = [];

var CREATED = 0; var SCHEDULED = 1; var STARTING = 2; var STARTED = 3; var RUNNING = 4; var ENDING = 5; var ENDED = 6;

/* harmony default export */ webpack_exports[“default”] = (function(node, name, id, index, group, timing) {

var schedules = node.__transition;
if (!schedules) node.__transition = {};
else if (id in schedules) return;
create(node, id, {
  name: name,
  index: index, // For context during callback.
  group: group, // For context during callback.
  on: emptyOn,
  tween: emptyTween,
  time: timing.time,
  delay: timing.delay,
  duration: timing.duration,
  ease: timing.ease,
  timer: null,
  state: CREATED
});

});

function init(node, id) {

var schedule = get(node, id);
if (schedule.state > CREATED) throw new Error("too late; already scheduled");
return schedule;

}

function set(node, id) {

var schedule = get(node, id);
if (schedule.state > STARTING) throw new Error("too late; already started");
return schedule;

}

function get(node, id) {

var schedule = node.__transition;
if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found");
return schedule;

}

function create(node, id, self) {

var schedules = node.__transition,
    tween;

// Initialize the self timer when the transition is created.
// Note the actual delay is not known until the first callback!
schedules[id] = self;
self.timer = Object(d3_timer__WEBPACK_IMPORTED_MODULE_1__["timer"])(schedule, 0, self.time);

function schedule(elapsed) {
  self.state = SCHEDULED;
  self.timer.restart(start, self.delay, self.time);

  // If the elapsed delay is less than our first sleep, start immediately.
  if (self.delay <= elapsed) start(elapsed - self.delay);
}

function start(elapsed) {
  var i, j, n, o;

  // If the state is not SCHEDULED, then we previously errored on start.
  if (self.state !== SCHEDULED) return stop();

  for (i in schedules) {
    o = schedules[i];
    if (o.name !== self.name) continue;

    // While this element already has a starting transition during this frame,
    // defer starting an interrupting transition until that transition has a
    // chance to tick (and possibly end); see d3/d3-transition#54!
    if (o.state === STARTED) return Object(d3_timer__WEBPACK_IMPORTED_MODULE_1__["timeout"])(start);

    // Interrupt the active transition, if any.
    // Dispatch the interrupt event.
    if (o.state === RUNNING) {
      o.state = ENDED;
      o.timer.stop();
      o.on.call("interrupt", node, node.__data__, o.index, o.group);
      delete schedules[i];
    }

    // Cancel any pre-empted transitions. No interrupt event is dispatched
    // because the cancelled transitions never started. Note that this also
    // removes this transition from the pending list!
    else if (+i < id) {
      o.state = ENDED;
      o.timer.stop();
      delete schedules[i];
    }
  }

  // Defer the first tick to end of the current frame; see d3/d3#1576.
  // Note the transition may be canceled after start and before the first tick!
  // Note this must be scheduled before the start event; see d3/d3-transition#16!
  // Assuming this is successful, subsequent callbacks go straight to tick.
  Object(d3_timer__WEBPACK_IMPORTED_MODULE_1__["timeout"])(function() {
    if (self.state === STARTED) {
      self.state = RUNNING;
      self.timer.restart(tick, self.delay, self.time);
      tick(elapsed);
    }
  });

  // Dispatch the start event.
  // Note this must be done before the tween are initialized.
  self.state = STARTING;
  self.on.call("start", node, node.__data__, self.index, self.group);
  if (self.state !== STARTING) return; // interrupted
  self.state = STARTED;

  // Initialize the tween, deleting null tween.
  tween = new Array(n = self.tween.length);
  for (i = 0, j = -1; i < n; ++i) {
    if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {
      tween[++j] = o;
    }
  }
  tween.length = j + 1;
}

function tick(elapsed) {
  var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),
      i = -1,
      n = tween.length;

  while (++i < n) {
    tween[i].call(null, t);
  }

  // Dispatch the end event.
  if (self.state === ENDING) {
    self.on.call("end", node, node.__data__, self.index, self.group);
    stop();
  }
}

function stop() {
  self.state = ENDED;
  self.timer.stop();
  delete schedules[id];
  for (var i in schedules) return; // eslint-disable-line no-unused-vars
  delete node.__transition;
}

}

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/select.js”: /*!*************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/select.js ***!
\*************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./index */ “./node_modules/d3-transition/src/transition/index.js”); /* harmony import */ var schedule_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./schedule */ “./node_modules/d3-transition/src/transition/schedule.js”);

/* harmony default export */ webpack_exports[“default”] = (function(select) {

var name = this._name,
    id = this._id;

if (typeof select !== "function") select = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["selector"])(select);

for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
  for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
    if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
      if ("__data__" in node) subnode.__data__ = node.__data__;
      subgroup[i] = subnode;
      Object(_schedule__WEBPACK_IMPORTED_MODULE_2__["default"])(subgroup[i], name, id, i, subgroup, Object(_schedule__WEBPACK_IMPORTED_MODULE_2__["get"])(node, id));
    }
  }
}

return new _index__WEBPACK_IMPORTED_MODULE_1__["Transition"](subgroups, this._parents, name, id);

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/selectAll.js”: /*!****************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/selectAll.js ***!
\****************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./index */ “./node_modules/d3-transition/src/transition/index.js”); /* harmony import */ var schedule_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./schedule */ “./node_modules/d3-transition/src/transition/schedule.js”);

/* harmony default export */ webpack_exports[“default”] = (function(select) {

var name = this._name,
    id = this._id;

if (typeof select !== "function") select = Object(d3_selection__WEBPACK_IMPORTED_MODULE_0__["selectorAll"])(select);

for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
  for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
    if (node = group[i]) {
      for (var children = select.call(node, node.__data__, i, group), child, inherit = Object(_schedule__WEBPACK_IMPORTED_MODULE_2__["get"])(node, id), k = 0, l = children.length; k < l; ++k) {
        if (child = children[k]) {
          Object(_schedule__WEBPACK_IMPORTED_MODULE_2__["default"])(child, name, id, k, children, inherit);
        }
      }
      subgroups.push(children);
      parents.push(node);
    }
  }
}

return new _index__WEBPACK_IMPORTED_MODULE_1__["Transition"](subgroups, parents, name, id);

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/selection.js”: /*!****************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/selection.js ***!
\****************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”);

var Selection = d3_selection_WEBPACK_IMPORTED_MODULE_0_[“selection”].prototype.constructor;

/* harmony default export */ webpack_exports[“default”] = (function() {

return new Selection(this._groups, this._parents);

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/style.js”: /*!************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/style.js ***!
\************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_interpolate_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-interpolate */ “./node_modules/d3-interpolate/index.js”); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”); /* harmony import */ var tween_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./tween */ “./node_modules/d3-transition/src/transition/tween.js”); /* harmony import */ var interpolate_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./interpolate */ “./node_modules/d3-transition/src/transition/interpolate.js”);

function styleRemove(name, interpolate) {

var value00,
    value10,
    interpolate0;
return function() {
  var value0 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["style"])(this, name),
      value1 = (this.style.removeProperty(name), Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["style"])(this, name));
  return value0 === value1 ? null
      : value0 === value00 && value1 === value10 ? interpolate0
      : interpolate0 = interpolate(value00 = value0, value10 = value1);
};

}

function styleRemoveEnd(name) {

return function() {
  this.style.removeProperty(name);
};

}

function styleConstant(name, interpolate, value1) {

var value00,
    interpolate0;
return function() {
  var value0 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["style"])(this, name);
  return value0 === value1 ? null
      : value0 === value00 ? interpolate0
      : interpolate0 = interpolate(value00 = value0, value1);
};

}

function styleFunction(name, interpolate, value) {

var value00,
    value10,
    interpolate0;
return function() {
  var value0 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["style"])(this, name),
      value1 = value(this);
  if (value1 == null) value1 = (this.style.removeProperty(name), Object(d3_selection__WEBPACK_IMPORTED_MODULE_1__["style"])(this, name));
  return value0 === value1 ? null
      : value0 === value00 && value1 === value10 ? interpolate0
      : interpolate0 = interpolate(value00 = value0, value10 = value1);
};

}

/* harmony default export */ webpack_exports[“default”] = (function(name, value, priority) {

var i = (name += "") === "transform" ? d3_interpolate__WEBPACK_IMPORTED_MODULE_0__["interpolateTransformCss"] : _interpolate__WEBPACK_IMPORTED_MODULE_3__["default"];
return value == null ? this
        .styleTween(name, styleRemove(name, i))
        .on("end.style." + name, styleRemoveEnd(name))
    : this.styleTween(name, typeof value === "function"
        ? styleFunction(name, i, Object(_tween__WEBPACK_IMPORTED_MODULE_2__["tweenValue"])(this, "style." + name, value))
        : styleConstant(name, i, value + ""), priority);

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/styleTween.js”: /*!*****************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/styleTween.js ***!
\*****************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); function styleTween(name, value, priority) {

function tween() {
  var node = this, i = value.apply(node, arguments);
  return i && function(t) {
    node.style.setProperty(name, i(t), priority);
  };
}
tween._value = value;
return tween;

}

/* harmony default export */ webpack_exports[“default”] = (function(name, value, priority) {

var key = "style." + (name += "");
if (arguments.length < 2) return (key = this.tween(key)) && key._value;
if (value == null) return this.tween(key, null);
if (typeof value !== "function") throw new Error;
return this.tween(key, styleTween(name, value, priority == null ? "" : priority));

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/text.js”: /*!***********************************************************!*\

!*** ./node_modules/d3-transition/src/transition/text.js ***!
\***********************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var tween_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./tween */ “./node_modules/d3-transition/src/transition/tween.js”);

function textConstant(value) {

return function() {
  this.textContent = value;
};

}

function textFunction(value) {

return function() {
  var value1 = value(this);
  this.textContent = value1 == null ? "" : value1;
};

}

/* harmony default export */ webpack_exports[“default”] = (function(value) {

return this.tween("text", typeof value === "function"
    ? textFunction(Object(_tween__WEBPACK_IMPORTED_MODULE_0__["tweenValue"])(this, "text", value))
    : textConstant(value == null ? "" : value + ""));

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/transition.js”: /*!*****************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/transition.js ***!
\*****************************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var index_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./index */ “./node_modules/d3-transition/src/transition/index.js”); /* harmony import */ var schedule_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./schedule */ “./node_modules/d3-transition/src/transition/schedule.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var name = this._name,
    id0 = this._id,
    id1 = Object(_index__WEBPACK_IMPORTED_MODULE_0__["newId"])();

for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {
  for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
    if (node = group[i]) {
      var inherit = Object(_schedule__WEBPACK_IMPORTED_MODULE_1__["get"])(node, id0);
      Object(_schedule__WEBPACK_IMPORTED_MODULE_1__["default"])(node, name, id1, i, group, {
        time: inherit.time + inherit.delay + inherit.duration,
        delay: 0,
        duration: inherit.duration,
        ease: inherit.ease
      });
    }
  }
}

return new _index__WEBPACK_IMPORTED_MODULE_0__["Transition"](groups, this._parents, name, id1);

});

/***/ }),

/***/ “./node_modules/d3-transition/src/transition/tween.js”: /*!************************************************************!*\

!*** ./node_modules/d3-transition/src/transition/tween.js ***!
\************************************************************/

/*! exports provided: default, tweenValue */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “tweenValue”, function() { return tweenValue; }); /* harmony import */ var schedule_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./schedule */ “./node_modules/d3-transition/src/transition/schedule.js”);

function tweenRemove(id, name) {

var tween0, tween1;
return function() {
  var schedule = Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id),
      tween = schedule.tween;

  // If this node shared tween with the previous node,
  // just assign the updated shared tween and we’re done!
  // Otherwise, copy-on-write.
  if (tween !== tween0) {
    tween1 = tween0 = tween;
    for (var i = 0, n = tween1.length; i < n; ++i) {
      if (tween1[i].name === name) {
        tween1 = tween1.slice();
        tween1.splice(i, 1);
        break;
      }
    }
  }

  schedule.tween = tween1;
};

}

function tweenFunction(id, name, value) {

var tween0, tween1;
if (typeof value !== "function") throw new Error;
return function() {
  var schedule = Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id),
      tween = schedule.tween;

  // If this node shared tween with the previous node,
  // just assign the updated shared tween and we’re done!
  // Otherwise, copy-on-write.
  if (tween !== tween0) {
    tween1 = (tween0 = tween).slice();
    for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {
      if (tween1[i].name === name) {
        tween1[i] = t;
        break;
      }
    }
    if (i === n) tween1.push(t);
  }

  schedule.tween = tween1;
};

}

/* harmony default export */ webpack_exports[“default”] = (function(name, value) {

var id = this._id;

name += "";

if (arguments.length < 2) {
  var tween = Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["get"])(this.node(), id).tween;
  for (var i = 0, n = tween.length, t; i < n; ++i) {
    if ((t = tween[i]).name === name) {
      return t.value;
    }
  }
  return null;
}

return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));

});

function tweenValue(transition, name, value) {

var id = transition._id;

transition.each(function() {
  var schedule = Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["set"])(this, id);
  (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);
});

return function(node) {
  return Object(_schedule__WEBPACK_IMPORTED_MODULE_0__["get"])(node, id).value[name];
};

}

/***/ }),

/***/ “./node_modules/d3-voronoi/index.js”: /*!******************************************!*\

!*** ./node_modules/d3-voronoi/index.js ***!
\******************************************/

/*! exports provided: voronoi */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_voronoi_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/voronoi */ “./node_modules/d3-voronoi/src/voronoi.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “voronoi”, function() { return src_voronoi_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/***/ }),

/***/ “./node_modules/d3-voronoi/src/Beach.js”: /*!**********************************************!*\

!*** ./node_modules/d3-voronoi/src/Beach.js ***!
\**********************************************/

/*! exports provided: removeBeach, addBeach */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “removeBeach”, function() { return removeBeach; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “addBeach”, function() { return addBeach; }); /* harmony import */ var RedBlackTree_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./RedBlackTree */ “./node_modules/d3-voronoi/src/RedBlackTree.js”); /* harmony import */ var Cell_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./Cell */ “./node_modules/d3-voronoi/src/Cell.js”); /* harmony import */ var Circle_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./Circle */ “./node_modules/d3-voronoi/src/Circle.js”); /* harmony import */ var Edge_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./Edge */ “./node_modules/d3-voronoi/src/Edge.js”); /* harmony import */ var Diagram_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./Diagram */ “./node_modules/d3-voronoi/src/Diagram.js”);

var beachPool = [];

function Beach() {

Object(_RedBlackTree__WEBPACK_IMPORTED_MODULE_0__["RedBlackNode"])(this);
this.edge =
this.site =
this.circle = null;

}

function createBeach(site) {

var beach = beachPool.pop() || new Beach;
beach.site = site;
return beach;

}

function detachBeach(beach) {

Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["detachCircle"])(beach);
_Diagram__WEBPACK_IMPORTED_MODULE_4__["beaches"].remove(beach);
beachPool.push(beach);
Object(_RedBlackTree__WEBPACK_IMPORTED_MODULE_0__["RedBlackNode"])(beach);

}

function removeBeach(beach) {

var circle = beach.circle,
    x = circle.x,
    y = circle.cy,
    vertex = [x, y],
    previous = beach.P,
    next = beach.N,
    disappearing = [beach];

detachBeach(beach);

var lArc = previous;
while (lArc.circle
    && Math.abs(x - lArc.circle.x) < _Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]
    && Math.abs(y - lArc.circle.cy) < _Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]) {
  previous = lArc.P;
  disappearing.unshift(lArc);
  detachBeach(lArc);
  lArc = previous;
}

disappearing.unshift(lArc);
Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["detachCircle"])(lArc);

var rArc = next;
while (rArc.circle
    && Math.abs(x - rArc.circle.x) < _Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]
    && Math.abs(y - rArc.circle.cy) < _Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]) {
  next = rArc.N;
  disappearing.push(rArc);
  detachBeach(rArc);
  rArc = next;
}

disappearing.push(rArc);
Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["detachCircle"])(rArc);

var nArcs = disappearing.length,
    iArc;
for (iArc = 1; iArc < nArcs; ++iArc) {
  rArc = disappearing[iArc];
  lArc = disappearing[iArc - 1];
  Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["setEdgeEnd"])(rArc.edge, lArc.site, rArc.site, vertex);
}

lArc = disappearing[0];
rArc = disappearing[nArcs - 1];
rArc.edge = Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["createEdge"])(lArc.site, rArc.site, null, vertex);

Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["attachCircle"])(lArc);
Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["attachCircle"])(rArc);

}

function addBeach(site) {

var x = site[0],
    directrix = site[1],
    lArc,
    rArc,
    dxl,
    dxr,
    node = _Diagram__WEBPACK_IMPORTED_MODULE_4__["beaches"]._;

while (node) {
  dxl = leftBreakPoint(node, directrix) - x;
  if (dxl > _Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]) node = node.L; else {
    dxr = x - rightBreakPoint(node, directrix);
    if (dxr > _Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]) {
      if (!node.R) {
        lArc = node;
        break;
      }
      node = node.R;
    } else {
      if (dxl > -_Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]) {
        lArc = node.P;
        rArc = node;
      } else if (dxr > -_Diagram__WEBPACK_IMPORTED_MODULE_4__["epsilon"]) {
        lArc = node;
        rArc = node.N;
      } else {
        lArc = rArc = node;
      }
      break;
    }
  }
}

Object(_Cell__WEBPACK_IMPORTED_MODULE_1__["createCell"])(site);
var newArc = createBeach(site);
_Diagram__WEBPACK_IMPORTED_MODULE_4__["beaches"].insert(lArc, newArc);

if (!lArc && !rArc) return;

if (lArc === rArc) {
  Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["detachCircle"])(lArc);
  rArc = createBeach(lArc.site);
  _Diagram__WEBPACK_IMPORTED_MODULE_4__["beaches"].insert(newArc, rArc);
  newArc.edge = rArc.edge = Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["createEdge"])(lArc.site, newArc.site);
  Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["attachCircle"])(lArc);
  Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["attachCircle"])(rArc);
  return;
}

if (!rArc) { // && lArc
  newArc.edge = Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["createEdge"])(lArc.site, newArc.site);
  return;
}

// else lArc !== rArc
Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["detachCircle"])(lArc);
Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["detachCircle"])(rArc);

var lSite = lArc.site,
    ax = lSite[0],
    ay = lSite[1],
    bx = site[0] - ax,
    by = site[1] - ay,
    rSite = rArc.site,
    cx = rSite[0] - ax,
    cy = rSite[1] - ay,
    d = 2 * (bx * cy - by * cx),
    hb = bx * bx + by * by,
    hc = cx * cx + cy * cy,
    vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];

Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["setEdgeEnd"])(rArc.edge, lSite, rSite, vertex);
newArc.edge = Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["createEdge"])(lSite, site, null, vertex);
rArc.edge = Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["createEdge"])(site, rSite, null, vertex);
Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["attachCircle"])(lArc);
Object(_Circle__WEBPACK_IMPORTED_MODULE_2__["attachCircle"])(rArc);

}

function leftBreakPoint(arc, directrix) {

var site = arc.site,
    rfocx = site[0],
    rfocy = site[1],
    pby2 = rfocy - directrix;

if (!pby2) return rfocx;

var lArc = arc.P;
if (!lArc) return -Infinity;

site = lArc.site;
var lfocx = site[0],
    lfocy = site[1],
    plby2 = lfocy - directrix;

if (!plby2) return lfocx;

var hl = lfocx - rfocx,
    aby2 = 1 / pby2 - 1 / plby2,
    b = hl / plby2;

if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;

return (rfocx + lfocx) / 2;

}

function rightBreakPoint(arc, directrix) {

var rArc = arc.N;
if (rArc) return leftBreakPoint(rArc, directrix);
var site = arc.site;
return site[1] === directrix ? site[0] : Infinity;

}

/***/ }),

/***/ “./node_modules/d3-voronoi/src/Cell.js”: /*!*********************************************!*\

!*** ./node_modules/d3-voronoi/src/Cell.js ***!
\*********************************************/

/*! exports provided: createCell, cellHalfedgeStart, cellHalfedgeEnd, sortCellHalfedges, clipCells */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “createCell”, function() { return createCell; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cellHalfedgeStart”, function() { return cellHalfedgeStart; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cellHalfedgeEnd”, function() { return cellHalfedgeEnd; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “sortCellHalfedges”, function() { return sortCellHalfedges; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “clipCells”, function() { return clipCells; }); /* harmony import */ var Edge_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./Edge */ “./node_modules/d3-voronoi/src/Edge.js”); /* harmony import */ var Diagram_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./Diagram */ “./node_modules/d3-voronoi/src/Diagram.js”);

function createCell(site) {

return _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"][site.index] = {
  site: site,
  halfedges: []
};

}

function cellHalfedgeAngle(cell, edge) {

var site = cell.site,
    va = edge.left,
    vb = edge.right;
if (site === vb) vb = va, va = site;
if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);
if (site === va) va = edge[1], vb = edge[0];
else va = edge[0], vb = edge[1];
return Math.atan2(va[0] - vb[0], vb[1] - va[1]);

}

function cellHalfedgeStart(cell, edge) {

return edge[+(edge.left !== cell.site)];

}

function cellHalfedgeEnd(cell, edge) {

return edge[+(edge.left === cell.site)];

}

function sortCellHalfedges() {

for (var i = 0, n = _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"].length, cell, halfedges, j, m; i < n; ++i) {
  if ((cell = _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"][i]) && (m = (halfedges = cell.halfedges).length)) {
    var index = new Array(m),
        array = new Array(m);
    for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"][halfedges[j]]);
    index.sort(function(i, j) { return array[j] - array[i]; });
    for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];
    for (j = 0; j < m; ++j) halfedges[j] = array[j];
  }
}

}

function clipCells(x0, y0, x1, y1) {

var nCells = _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"].length,
    iCell,
    cell,
    site,
    iHalfedge,
    halfedges,
    nHalfedges,
    start,
    startX,
    startY,
    end,
    endX,
    endY,
    cover = true;

for (iCell = 0; iCell < nCells; ++iCell) {
  if (cell = _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"][iCell]) {
    site = cell.site;
    halfedges = cell.halfedges;
    iHalfedge = halfedges.length;

    // Remove any dangling clipped edges.
    while (iHalfedge--) {
      if (!_Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"][halfedges[iHalfedge]]) {
        halfedges.splice(iHalfedge, 1);
      }
    }

    // Insert any border edges as necessary.
    iHalfedge = 0, nHalfedges = halfedges.length;
    while (iHalfedge < nHalfedges) {
      end = cellHalfedgeEnd(cell, _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"][halfedges[iHalfedge]]), endX = end[0], endY = end[1];
      start = cellHalfedgeStart(cell, _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"][halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];
      if (Math.abs(endX - startX) > _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] || Math.abs(endY - startY) > _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"]) {
        halfedges.splice(iHalfedge, 0, _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"].push(Object(_Edge__WEBPACK_IMPORTED_MODULE_0__["createBorderEdge"])(site, end,
            Math.abs(endX - x0) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] && y1 - endY > _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? [x0, Math.abs(startX - x0) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? startY : y1]
            : Math.abs(endY - y1) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] && x1 - endX > _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? [Math.abs(startY - y1) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? startX : x1, y1]
            : Math.abs(endX - x1) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] && endY - y0 > _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? [x1, Math.abs(startX - x1) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? startY : y0]
            : Math.abs(endY - y0) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] && endX - x0 > _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? [Math.abs(startY - y0) < _Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon"] ? startX : x0, y0]
            : null)) - 1);
        ++nHalfedges;
      }
    }

    if (nHalfedges) cover = false;
  }
}

// If there weren’t any edges, have the closest site cover the extent.
// It doesn’t matter which corner of the extent we measure!
if (cover) {
  var dx, dy, d2, dc = Infinity;

  for (iCell = 0, cover = null; iCell < nCells; ++iCell) {
    if (cell = _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"][iCell]) {
      site = cell.site;
      dx = site[0] - x0;
      dy = site[1] - y0;
      d2 = dx * dx + dy * dy;
      if (d2 < dc) dc = d2, cover = cell;
    }
  }

  if (cover) {
    var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];
    cover.halfedges.push(
      _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"].push(Object(_Edge__WEBPACK_IMPORTED_MODULE_0__["createBorderEdge"])(site = cover.site, v00, v01)) - 1,
      _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"].push(Object(_Edge__WEBPACK_IMPORTED_MODULE_0__["createBorderEdge"])(site, v01, v11)) - 1,
      _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"].push(Object(_Edge__WEBPACK_IMPORTED_MODULE_0__["createBorderEdge"])(site, v11, v10)) - 1,
      _Diagram__WEBPACK_IMPORTED_MODULE_1__["edges"].push(Object(_Edge__WEBPACK_IMPORTED_MODULE_0__["createBorderEdge"])(site, v10, v00)) - 1
    );
  }
}

// Lastly delete any cells with no edges; these were entirely clipped.
for (iCell = 0; iCell < nCells; ++iCell) {
  if (cell = _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"][iCell]) {
    if (!cell.halfedges.length) {
      delete _Diagram__WEBPACK_IMPORTED_MODULE_1__["cells"][iCell];
    }
  }
}

}

/***/ }),

/***/ “./node_modules/d3-voronoi/src/Circle.js”: /*!***********************************************!*\

!*** ./node_modules/d3-voronoi/src/Circle.js ***!
\***********************************************/

/*! exports provided: firstCircle, attachCircle, detachCircle */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “firstCircle”, function() { return firstCircle; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “attachCircle”, function() { return attachCircle; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “detachCircle”, function() { return detachCircle; }); /* harmony import */ var RedBlackTree_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./RedBlackTree */ “./node_modules/d3-voronoi/src/RedBlackTree.js”); /* harmony import */ var Diagram_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./Diagram */ “./node_modules/d3-voronoi/src/Diagram.js”);

var circlePool = [];

var firstCircle;

function Circle() {

Object(_RedBlackTree__WEBPACK_IMPORTED_MODULE_0__["RedBlackNode"])(this);
this.x =
this.y =
this.arc =
this.site =
this.cy = null;

}

function attachCircle(arc) {

var lArc = arc.P,
    rArc = arc.N;

if (!lArc || !rArc) return;

var lSite = lArc.site,
    cSite = arc.site,
    rSite = rArc.site;

if (lSite === rSite) return;

var bx = cSite[0],
    by = cSite[1],
    ax = lSite[0] - bx,
    ay = lSite[1] - by,
    cx = rSite[0] - bx,
    cy = rSite[1] - by;

var d = 2 * (ax * cy - ay * cx);
if (d >= -_Diagram__WEBPACK_IMPORTED_MODULE_1__["epsilon2"]) return;

var ha = ax * ax + ay * ay,
    hc = cx * cx + cy * cy,
    x = (cy * ha - ay * hc) / d,
    y = (ax * hc - cx * ha) / d;

var circle = circlePool.pop() || new Circle;
circle.arc = arc;
circle.site = cSite;
circle.x = x + bx;
circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom

arc.circle = circle;

var before = null,
    node = _Diagram__WEBPACK_IMPORTED_MODULE_1__["circles"]._;

while (node) {
  if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {
    if (node.L) node = node.L;
    else { before = node.P; break; }
  } else {
    if (node.R) node = node.R;
    else { before = node; break; }
  }
}

_Diagram__WEBPACK_IMPORTED_MODULE_1__["circles"].insert(before, circle);
if (!before) firstCircle = circle;

}

function detachCircle(arc) {

var circle = arc.circle;
if (circle) {
  if (!circle.P) firstCircle = circle.N;
  _Diagram__WEBPACK_IMPORTED_MODULE_1__["circles"].remove(circle);
  circlePool.push(circle);
  Object(_RedBlackTree__WEBPACK_IMPORTED_MODULE_0__["RedBlackNode"])(circle);
  arc.circle = null;
}

}

/***/ }),

/***/ “./node_modules/d3-voronoi/src/Diagram.js”: /*!************************************************!*\

!*** ./node_modules/d3-voronoi/src/Diagram.js ***!
\************************************************/

/*! exports provided: epsilon, epsilon2, beaches, cells, circles, edges, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “epsilon”, function() { return epsilon; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “epsilon2”, function() { return epsilon2; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “beaches”, function() { return beaches; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “cells”, function() { return cells; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “circles”, function() { return circles; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “edges”, function() { return edges; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return Diagram; }); /* harmony import */ var Beach_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./Beach */ “./node_modules/d3-voronoi/src/Beach.js”); /* harmony import */ var Cell_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./Cell */ “./node_modules/d3-voronoi/src/Cell.js”); /* harmony import */ var Circle_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./Circle */ “./node_modules/d3-voronoi/src/Circle.js”); /* harmony import */ var Edge_WEBPACK_IMPORTED_MODULE_3 = webpack_require(/*! ./Edge */ “./node_modules/d3-voronoi/src/Edge.js”); /* harmony import */ var RedBlackTree_WEBPACK_IMPORTED_MODULE_4 = webpack_require(/*! ./RedBlackTree */ “./node_modules/d3-voronoi/src/RedBlackTree.js”);

var epsilon = 1e-6; var epsilon2 = 1e-12; var beaches; var cells; var circles; var edges;

function triangleArea(a, b, c) {

return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);

}

function lexicographic(a, b) {

return b[1] - a[1]
    || b[0] - a[0];

}

function Diagram(sites, extent) {

var site = sites.sort(lexicographic).pop(),
    x,
    y,
    circle;

edges = [];
cells = new Array(sites.length);
beaches = new _RedBlackTree__WEBPACK_IMPORTED_MODULE_4__["default"];
circles = new _RedBlackTree__WEBPACK_IMPORTED_MODULE_4__["default"];

while (true) {
  circle = _Circle__WEBPACK_IMPORTED_MODULE_2__["firstCircle"];
  if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {
    if (site[0] !== x || site[1] !== y) {
      Object(_Beach__WEBPACK_IMPORTED_MODULE_0__["addBeach"])(site);
      x = site[0], y = site[1];
    }
    site = sites.pop();
  } else if (circle) {
    Object(_Beach__WEBPACK_IMPORTED_MODULE_0__["removeBeach"])(circle.arc);
  } else {
    break;
  }
}

Object(_Cell__WEBPACK_IMPORTED_MODULE_1__["sortCellHalfedges"])();

if (extent) {
  var x0 = +extent[0][0],
      y0 = +extent[0][1],
      x1 = +extent[1][0],
      y1 = +extent[1][1];
  Object(_Edge__WEBPACK_IMPORTED_MODULE_3__["clipEdges"])(x0, y0, x1, y1);
  Object(_Cell__WEBPACK_IMPORTED_MODULE_1__["clipCells"])(x0, y0, x1, y1);
}

this.edges = edges;
this.cells = cells;

beaches =
circles =
edges =
cells = null;

}

Diagram.prototype = {

constructor: Diagram,

polygons: function() {
  var edges = this.edges;

  return this.cells.map(function(cell) {
    var polygon = cell.halfedges.map(function(i) { return Object(_Cell__WEBPACK_IMPORTED_MODULE_1__["cellHalfedgeStart"])(cell, edges[i]); });
    polygon.data = cell.site.data;
    return polygon;
  });
},

triangles: function() {
  var triangles = [],
      edges = this.edges;

  this.cells.forEach(function(cell, i) {
    if (!(m = (halfedges = cell.halfedges).length)) return;
    var site = cell.site,
        halfedges,
        j = -1,
        m,
        s0,
        e1 = edges[halfedges[m - 1]],
        s1 = e1.left === site ? e1.right : e1.left;

    while (++j < m) {
      s0 = s1;
      e1 = edges[halfedges[j]];
      s1 = e1.left === site ? e1.right : e1.left;
      if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {
        triangles.push([site.data, s0.data, s1.data]);
      }
    }
  });

  return triangles;
},

links: function() {
  return this.edges.filter(function(edge) {
    return edge.right;
  }).map(function(edge) {
    return {
      source: edge.left.data,
      target: edge.right.data
    };
  });
},

find: function(x, y, radius) {
  var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;

  // Use the previously-found cell, or start with an arbitrary one.
  while (!(cell = that.cells[i1])) if (++i1 >= n) return null;
  var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;

  // Traverse the half-edges to find a closer cell, if any.
  do {
    cell = that.cells[i0 = i1], i1 = null;
    cell.halfedges.forEach(function(e) {
      var edge = that.edges[e], v = edge.left;
      if ((v === cell.site || !v) && !(v = edge.right)) return;
      var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;
      if (v2 < d2) d2 = v2, i1 = v.index;
    });
  } while (i1 !== null);

  that._found = i0;

  return radius == null || d2 <= radius * radius ? cell.site : null;
}

}

/***/ }),

/***/ “./node_modules/d3-voronoi/src/Edge.js”: /*!*********************************************!*\

!*** ./node_modules/d3-voronoi/src/Edge.js ***!
\*********************************************/

/*! exports provided: createEdge, createBorderEdge, setEdgeEnd, clipEdges */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “createEdge”, function() { return createEdge; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “createBorderEdge”, function() { return createBorderEdge; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “setEdgeEnd”, function() { return setEdgeEnd; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “clipEdges”, function() { return clipEdges; }); /* harmony import */ var Diagram_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./Diagram */ “./node_modules/d3-voronoi/src/Diagram.js”);

function createEdge(left, right, v0, v1) {

var edge = [null, null],
    index = _Diagram__WEBPACK_IMPORTED_MODULE_0__["edges"].push(edge) - 1;
edge.left = left;
edge.right = right;
if (v0) setEdgeEnd(edge, left, right, v0);
if (v1) setEdgeEnd(edge, right, left, v1);
_Diagram__WEBPACK_IMPORTED_MODULE_0__["cells"][left.index].halfedges.push(index);
_Diagram__WEBPACK_IMPORTED_MODULE_0__["cells"][right.index].halfedges.push(index);
return edge;

}

function createBorderEdge(left, v0, v1) {

var edge = [v0, v1];
edge.left = left;
return edge;

}

function setEdgeEnd(edge, left, right, vertex) {

if (!edge[0] && !edge[1]) {
  edge[0] = vertex;
  edge.left = left;
  edge.right = right;
} else if (edge.left === right) {
  edge[1] = vertex;
} else {
  edge[0] = vertex;
}

}

// Liang–Barsky line clipping. function clipEdge(edge, x0, y0, x1, y1) {

var a = edge[0],
    b = edge[1],
    ax = a[0],
    ay = a[1],
    bx = b[0],
    by = b[1],
    t0 = 0,
    t1 = 1,
    dx = bx - ax,
    dy = by - ay,
    r;

r = x0 - ax;
if (!dx && r > 0) return;
r /= dx;
if (dx < 0) {
  if (r < t0) return;
  if (r < t1) t1 = r;
} else if (dx > 0) {
  if (r > t1) return;
  if (r > t0) t0 = r;
}

r = x1 - ax;
if (!dx && r < 0) return;
r /= dx;
if (dx < 0) {
  if (r > t1) return;
  if (r > t0) t0 = r;
} else if (dx > 0) {
  if (r < t0) return;
  if (r < t1) t1 = r;
}

r = y0 - ay;
if (!dy && r > 0) return;
r /= dy;
if (dy < 0) {
  if (r < t0) return;
  if (r < t1) t1 = r;
} else if (dy > 0) {
  if (r > t1) return;
  if (r > t0) t0 = r;
}

r = y1 - ay;
if (!dy && r < 0) return;
r /= dy;
if (dy < 0) {
  if (r > t1) return;
  if (r > t0) t0 = r;
} else if (dy > 0) {
  if (r < t0) return;
  if (r < t1) t1 = r;
}

if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?

if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];
if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];
return true;

}

function connectEdge(edge, x0, y0, x1, y1) {

var v1 = edge[1];
if (v1) return true;

var v0 = edge[0],
    left = edge.left,
    right = edge.right,
    lx = left[0],
    ly = left[1],
    rx = right[0],
    ry = right[1],
    fx = (lx + rx) / 2,
    fy = (ly + ry) / 2,
    fm,
    fb;

if (ry === ly) {
  if (fx < x0 || fx >= x1) return;
  if (lx > rx) {
    if (!v0) v0 = [fx, y0];
    else if (v0[1] >= y1) return;
    v1 = [fx, y1];
  } else {
    if (!v0) v0 = [fx, y1];
    else if (v0[1] < y0) return;
    v1 = [fx, y0];
  }
} else {
  fm = (lx - rx) / (ry - ly);
  fb = fy - fm * fx;
  if (fm < -1 || fm > 1) {
    if (lx > rx) {
      if (!v0) v0 = [(y0 - fb) / fm, y0];
      else if (v0[1] >= y1) return;
      v1 = [(y1 - fb) / fm, y1];
    } else {
      if (!v0) v0 = [(y1 - fb) / fm, y1];
      else if (v0[1] < y0) return;
      v1 = [(y0 - fb) / fm, y0];
    }
  } else {
    if (ly < ry) {
      if (!v0) v0 = [x0, fm * x0 + fb];
      else if (v0[0] >= x1) return;
      v1 = [x1, fm * x1 + fb];
    } else {
      if (!v0) v0 = [x1, fm * x1 + fb];
      else if (v0[0] < x0) return;
      v1 = [x0, fm * x0 + fb];
    }
  }
}

edge[0] = v0;
edge[1] = v1;
return true;

}

function clipEdges(x0, y0, x1, y1) {

var i = _Diagram__WEBPACK_IMPORTED_MODULE_0__["edges"].length,
    edge;

while (i--) {
  if (!connectEdge(edge = _Diagram__WEBPACK_IMPORTED_MODULE_0__["edges"][i], x0, y0, x1, y1)
      || !clipEdge(edge, x0, y0, x1, y1)
      || !(Math.abs(edge[0][0] - edge[1][0]) > _Diagram__WEBPACK_IMPORTED_MODULE_0__["epsilon"]
          || Math.abs(edge[0][1] - edge[1][1]) > _Diagram__WEBPACK_IMPORTED_MODULE_0__["epsilon"])) {
    delete _Diagram__WEBPACK_IMPORTED_MODULE_0__["edges"][i];
  }
}

}

/***/ }),

/***/ “./node_modules/d3-voronoi/src/RedBlackTree.js”: /*!*****************************************************!*\

!*** ./node_modules/d3-voronoi/src/RedBlackTree.js ***!
\*****************************************************/

/*! exports provided: RedBlackNode, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “RedBlackNode”, function() { return RedBlackNode; }); function RedBlackTree() {

this._ = null; // root node

}

function RedBlackNode(node) {

node.U = // parent node
node.C = // color - true for red, false for black
node.L = // left node
node.R = // right node
node.P = // previous node
node.N = null; // next node

}

RedBlackTree.prototype = {

constructor: RedBlackTree,

insert: function(after, node) {
  var parent, grandpa, uncle;

  if (after) {
    node.P = after;
    node.N = after.N;
    if (after.N) after.N.P = node;
    after.N = node;
    if (after.R) {
      after = after.R;
      while (after.L) after = after.L;
      after.L = node;
    } else {
      after.R = node;
    }
    parent = after;
  } else if (this._) {
    after = RedBlackFirst(this._);
    node.P = null;
    node.N = after;
    after.P = after.L = node;
    parent = after;
  } else {
    node.P = node.N = null;
    this._ = node;
    parent = null;
  }
  node.L = node.R = null;
  node.U = parent;
  node.C = true;

  after = node;
  while (parent && parent.C) {
    grandpa = parent.U;
    if (parent === grandpa.L) {
      uncle = grandpa.R;
      if (uncle && uncle.C) {
        parent.C = uncle.C = false;
        grandpa.C = true;
        after = grandpa;
      } else {
        if (after === parent.R) {
          RedBlackRotateLeft(this, parent);
          after = parent;
          parent = after.U;
        }
        parent.C = false;
        grandpa.C = true;
        RedBlackRotateRight(this, grandpa);
      }
    } else {
      uncle = grandpa.L;
      if (uncle && uncle.C) {
        parent.C = uncle.C = false;
        grandpa.C = true;
        after = grandpa;
      } else {
        if (after === parent.L) {
          RedBlackRotateRight(this, parent);
          after = parent;
          parent = after.U;
        }
        parent.C = false;
        grandpa.C = true;
        RedBlackRotateLeft(this, grandpa);
      }
    }
    parent = after.U;
  }
  this._.C = false;
},

remove: function(node) {
  if (node.N) node.N.P = node.P;
  if (node.P) node.P.N = node.N;
  node.N = node.P = null;

  var parent = node.U,
      sibling,
      left = node.L,
      right = node.R,
      next,
      red;

  if (!left) next = right;
  else if (!right) next = left;
  else next = RedBlackFirst(right);

  if (parent) {
    if (parent.L === node) parent.L = next;
    else parent.R = next;
  } else {
    this._ = next;
  }

  if (left && right) {
    red = next.C;
    next.C = node.C;
    next.L = left;
    left.U = next;
    if (next !== right) {
      parent = next.U;
      next.U = node.U;
      node = next.R;
      parent.L = node;
      next.R = right;
      right.U = next;
    } else {
      next.U = parent;
      parent = next;
      node = next.R;
    }
  } else {
    red = node.C;
    node = next;
  }

  if (node) node.U = parent;
  if (red) return;
  if (node && node.C) { node.C = false; return; }

  do {
    if (node === this._) break;
    if (node === parent.L) {
      sibling = parent.R;
      if (sibling.C) {
        sibling.C = false;
        parent.C = true;
        RedBlackRotateLeft(this, parent);
        sibling = parent.R;
      }
      if ((sibling.L && sibling.L.C)
          || (sibling.R && sibling.R.C)) {
        if (!sibling.R || !sibling.R.C) {
          sibling.L.C = false;
          sibling.C = true;
          RedBlackRotateRight(this, sibling);
          sibling = parent.R;
        }
        sibling.C = parent.C;
        parent.C = sibling.R.C = false;
        RedBlackRotateLeft(this, parent);
        node = this._;
        break;
      }
    } else {
      sibling = parent.L;
      if (sibling.C) {
        sibling.C = false;
        parent.C = true;
        RedBlackRotateRight(this, parent);
        sibling = parent.L;
      }
      if ((sibling.L && sibling.L.C)
        || (sibling.R && sibling.R.C)) {
        if (!sibling.L || !sibling.L.C) {
          sibling.R.C = false;
          sibling.C = true;
          RedBlackRotateLeft(this, sibling);
          sibling = parent.L;
        }
        sibling.C = parent.C;
        parent.C = sibling.L.C = false;
        RedBlackRotateRight(this, parent);
        node = this._;
        break;
      }
    }
    sibling.C = true;
    node = parent;
    parent = parent.U;
  } while (!node.C);

  if (node) node.C = false;
}

};

function RedBlackRotateLeft(tree, node) {

var p = node,
    q = node.R,
    parent = p.U;

if (parent) {
  if (parent.L === p) parent.L = q;
  else parent.R = q;
} else {
  tree._ = q;
}

q.U = parent;
p.U = q;
p.R = q.L;
if (p.R) p.R.U = p;
q.L = p;

}

function RedBlackRotateRight(tree, node) {

var p = node,
    q = node.L,
    parent = p.U;

if (parent) {
  if (parent.L === p) parent.L = q;
  else parent.R = q;
} else {
  tree._ = q;
}

q.U = parent;
p.U = q;
p.L = q.R;
if (p.L) p.L.U = p;
q.R = p;

}

function RedBlackFirst(node) {

while (node.L) node = node.L;
return node;

}

/* harmony default export */ webpack_exports[“default”] = (RedBlackTree);

/***/ }),

/***/ “./node_modules/d3-voronoi/src/constant.js”: /*!*************************************************!*\

!*** ./node_modules/d3-voronoi/src/constant.js ***!
\*************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return function() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-voronoi/src/point.js”: /*!**********************************************!*\

!*** ./node_modules/d3-voronoi/src/point.js ***!
\**********************************************/

/*! exports provided: x, y */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “x”, function() { return x; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “y”, function() { return y; }); function x(d) {

return d[0];

}

function y(d) {

return d[1];

}

/***/ }),

/***/ “./node_modules/d3-voronoi/src/voronoi.js”: /*!************************************************!*\

!*** ./node_modules/d3-voronoi/src/voronoi.js ***!
\************************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./constant */ “./node_modules/d3-voronoi/src/constant.js”); /* harmony import */ var point_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./point */ “./node_modules/d3-voronoi/src/point.js”); /* harmony import */ var Diagram_WEBPACK_IMPORTED_MODULE_2 = webpack_require(/*! ./Diagram */ “./node_modules/d3-voronoi/src/Diagram.js”);

/* harmony default export */ webpack_exports[“default”] = (function() {

var x = _point__WEBPACK_IMPORTED_MODULE_1__["x"],
    y = _point__WEBPACK_IMPORTED_MODULE_1__["y"],
    extent = null;

function voronoi(data) {
  return new _Diagram__WEBPACK_IMPORTED_MODULE_2__["default"](data.map(function(d, i) {
    var s = [Math.round(x(d, i, data) / _Diagram__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) * _Diagram__WEBPACK_IMPORTED_MODULE_2__["epsilon"], Math.round(y(d, i, data) / _Diagram__WEBPACK_IMPORTED_MODULE_2__["epsilon"]) * _Diagram__WEBPACK_IMPORTED_MODULE_2__["epsilon"]];
    s.index = i;
    s.data = d;
    return s;
  }), extent);
}

voronoi.polygons = function(data) {
  return voronoi(data).polygons();
};

voronoi.links = function(data) {
  return voronoi(data).links();
};

voronoi.triangles = function(data) {
  return voronoi(data).triangles();
};

voronoi.x = function(_) {
  return arguments.length ? (x = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), voronoi) : x;
};

voronoi.y = function(_) {
  return arguments.length ? (y = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_0__["default"])(+_), voronoi) : y;
};

voronoi.extent = function(_) {
  return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];
};

voronoi.size = function(_) {
  return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];
};

return voronoi;

});

/***/ }),

/***/ “./node_modules/d3-zoom/index.js”: /*!***************************************!*\

!*** ./node_modules/d3-zoom/index.js ***!
\***************************************/

/*! exports provided: zoom, zoomTransform, zoomIdentity */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var src_zoom_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./src/zoom */ “./node_modules/d3-zoom/src/zoom.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “zoom”, function() { return src_zoom_WEBPACK_IMPORTED_MODULE_0[“default”]; });

/* harmony import */ var src_transform_WEBPACK_IMPORTED_MODULE_1 = webpack_require(/*! ./src/transform */ “./node_modules/d3-zoom/src/transform.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “zoomTransform”, function() { return src_transform_WEBPACK_IMPORTED_MODULE_1[“default”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “zoomIdentity”, function() { return src_transform_WEBPACK_IMPORTED_MODULE_1[“identity”]; });

/***/ }),

/***/ “./node_modules/d3-zoom/src/constant.js”: /*!**********************************************!*\

!*** ./node_modules/d3-zoom/src/constant.js ***!
\**********************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony default export */ webpack_exports[“default”] = (function(x) {

return function() {
  return x;
};

});

/***/ }),

/***/ “./node_modules/d3-zoom/src/event.js”: /*!*******************************************!*\

!*** ./node_modules/d3-zoom/src/event.js ***!
\*******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return ZoomEvent; }); function ZoomEvent(target, type, transform) {

this.target = target;
this.type = type;
this.transform = transform;

}

/***/ }),

/***/ “./node_modules/d3-zoom/src/noevent.js”: /*!*********************************************!*\

!*** ./node_modules/d3-zoom/src/noevent.js ***!
\*********************************************/

/*! exports provided: nopropagation, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “nopropagation”, function() { return nopropagation; }); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”);

function nopropagation() {

d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].stopImmediatePropagation();

}

/* harmony default export */ webpack_exports[“default”] = (function() {

d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].preventDefault();
d3_selection__WEBPACK_IMPORTED_MODULE_0__["event"].stopImmediatePropagation();

});

/***/ }),

/***/ “./node_modules/d3-zoom/src/transform.js”: /*!***********************************************!*\

!*** ./node_modules/d3-zoom/src/transform.js ***!
\***********************************************/

/*! exports provided: Transform, identity, default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “Transform”, function() { return Transform; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “identity”, function() { return identity; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “default”, function() { return transform; }); function Transform(k, x, y) {

this.k = k;
this.x = x;
this.y = y;

}

Transform.prototype = {

constructor: Transform,
scale: function(k) {
  return k === 1 ? this : new Transform(this.k * k, this.x, this.y);
},
translate: function(x, y) {
  return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);
},
apply: function(point) {
  return [point[0] * this.k + this.x, point[1] * this.k + this.y];
},
applyX: function(x) {
  return x * this.k + this.x;
},
applyY: function(y) {
  return y * this.k + this.y;
},
invert: function(location) {
  return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];
},
invertX: function(x) {
  return (x - this.x) / this.k;
},
invertY: function(y) {
  return (y - this.y) / this.k;
},
rescaleX: function(x) {
  return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));
},
rescaleY: function(y) {
  return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));
},
toString: function() {
  return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")";
}

};

var identity = new Transform(1, 0, 0);

transform.prototype = Transform.prototype;

function transform(node) {

return node.__zoom || identity;

}

/***/ }),

/***/ “./node_modules/d3-zoom/src/zoom.js”: /*!******************************************!*\

!*** ./node_modules/d3-zoom/src/zoom.js ***!
\******************************************/

/*! exports provided: default */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var d3_dispatch_WEBPACK_IMPORTED_MODULE_0_ = webpack_require(/*! d3-dispatch */ “./node_modules/d3-dispatch/index.js”); /* harmony import */ var d3_drag_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-drag */ “./node_modules/d3-drag/index.js”); /* harmony import */ var d3_interpolate_WEBPACK_IMPORTED_MODULE_2_ = webpack_require(/*! d3-interpolate */ “./node_modules/d3-interpolate/index.js”); /* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_3_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”); /* harmony import */ var d3_transition_WEBPACK_IMPORTED_MODULE_4_ = webpack_require(/*! d3-transition */ “./node_modules/d3-transition/index.js”); /* harmony import */ var constant_WEBPACK_IMPORTED_MODULE_5 = webpack_require(/*! ./constant */ “./node_modules/d3-zoom/src/constant.js”); /* harmony import */ var event_WEBPACK_IMPORTED_MODULE_6 = webpack_require(/*! ./event */ “./node_modules/d3-zoom/src/event.js”); /* harmony import */ var transform_WEBPACK_IMPORTED_MODULE_7 = webpack_require(/*! ./transform */ “./node_modules/d3-zoom/src/transform.js”); /* harmony import */ var noevent_WEBPACK_IMPORTED_MODULE_8 = webpack_require(/*! ./noevent */ “./node_modules/d3-zoom/src/noevent.js”);

// Ignore right-click, since that should open the context menu. function defaultFilter() {

return !d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].button;

}

function defaultExtent() {

var e = this, w, h;
if (e instanceof SVGElement) {
  e = e.ownerSVGElement || e;
  w = e.width.baseVal.value;
  h = e.height.baseVal.value;
} else {
  w = e.clientWidth;
  h = e.clientHeight;
}
return [[0, 0], [w, h]];

}

function defaultTransform() {

return this.__zoom || _transform__WEBPACK_IMPORTED_MODULE_7__["identity"];

}

function defaultWheelDelta() {

return -d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].deltaY * (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].deltaMode ? 120 : 1) / 500;

}

function defaultTouchable() {

return "ontouchstart" in this;

}

function defaultConstrain(transform, extent, translateExtent) {

var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],
    dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],
    dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],
    dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];
return transform.translate(
  dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),
  dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)
);

}

/* harmony default export */ webpack_exports[“default”] = (function() {

var filter = defaultFilter,
    extent = defaultExtent,
    constrain = defaultConstrain,
    wheelDelta = defaultWheelDelta,
    touchable = defaultTouchable,
    scaleExtent = [0, Infinity],
    translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],
    duration = 250,
    interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_2__["interpolateZoom"],
    gestures = [],
    listeners = Object(d3_dispatch__WEBPACK_IMPORTED_MODULE_0__["dispatch"])("start", "zoom", "end"),
    touchstarting,
    touchending,
    touchDelay = 500,
    wheelDelay = 150,
    clickDistance2 = 0;

function zoom(selection) {
  selection
      .property("__zoom", defaultTransform)
      .on("wheel.zoom", wheeled)
      .on("mousedown.zoom", mousedowned)
      .on("dblclick.zoom", dblclicked)
    .filter(touchable)
      .on("touchstart.zoom", touchstarted)
      .on("touchmove.zoom", touchmoved)
      .on("touchend.zoom touchcancel.zoom", touchended)
      .style("touch-action", "none")
      .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
}

zoom.transform = function(collection, transform) {
  var selection = collection.selection ? collection.selection() : collection;
  selection.property("__zoom", defaultTransform);
  if (collection !== selection) {
    schedule(collection, transform);
  } else {
    selection.interrupt().each(function() {
      gesture(this, arguments)
          .start()
          .zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform)
          .end();
    });
  }
};

zoom.scaleBy = function(selection, k) {
  zoom.scaleTo(selection, function() {
    var k0 = this.__zoom.k,
        k1 = typeof k === "function" ? k.apply(this, arguments) : k;
    return k0 * k1;
  });
};

zoom.scaleTo = function(selection, k) {
  zoom.transform(selection, function() {
    var e = extent.apply(this, arguments),
        t0 = this.__zoom,
        p0 = centroid(e),
        p1 = t0.invert(p0),
        k1 = typeof k === "function" ? k.apply(this, arguments) : k;
    return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);
  });
};

zoom.translateBy = function(selection, x, y) {
  zoom.transform(selection, function() {
    return constrain(this.__zoom.translate(
      typeof x === "function" ? x.apply(this, arguments) : x,
      typeof y === "function" ? y.apply(this, arguments) : y
    ), extent.apply(this, arguments), translateExtent);
  });
};

zoom.translateTo = function(selection, x, y) {
  zoom.transform(selection, function() {
    var e = extent.apply(this, arguments),
        t = this.__zoom,
        p = centroid(e);
    return constrain(_transform__WEBPACK_IMPORTED_MODULE_7__["identity"].translate(p[0], p[1]).scale(t.k).translate(
      typeof x === "function" ? -x.apply(this, arguments) : -x,
      typeof y === "function" ? -y.apply(this, arguments) : -y
    ), e, translateExtent);
  });
};

function scale(transform, k) {
  k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));
  return k === transform.k ? transform : new _transform__WEBPACK_IMPORTED_MODULE_7__["Transform"](k, transform.x, transform.y);
}

function translate(transform, p0, p1) {
  var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;
  return x === transform.x && y === transform.y ? transform : new _transform__WEBPACK_IMPORTED_MODULE_7__["Transform"](transform.k, x, y);
}

function centroid(extent) {
  return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];
}

function schedule(transition, transform, center) {
  transition
      .on("start.zoom", function() { gesture(this, arguments).start(); })
      .on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); })
      .tween("zoom", function() {
        var that = this,
            args = arguments,
            g = gesture(that, args),
            e = extent.apply(that, args),
            p = center || centroid(e),
            w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),
            a = that.__zoom,
            b = typeof transform === "function" ? transform.apply(that, args) : transform,
            i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));
        return function(t) {
          if (t === 1) t = b; // Avoid rounding error on end.
          else { var l = i(t), k = w / l[2]; t = new _transform__WEBPACK_IMPORTED_MODULE_7__["Transform"](k, p[0] - l[0] * k, p[1] - l[1] * k); }
          g.zoom(null, t);
        };
      });
}

function gesture(that, args) {
  for (var i = 0, n = gestures.length, g; i < n; ++i) {
    if ((g = gestures[i]).that === that) {
      return g;
    }
  }
  return new Gesture(that, args);
}

function Gesture(that, args) {
  this.that = that;
  this.args = args;
  this.index = -1;
  this.active = 0;
  this.extent = extent.apply(that, args);
}

Gesture.prototype = {
  start: function() {
    if (++this.active === 1) {
      this.index = gestures.push(this) - 1;
      this.emit("start");
    }
    return this;
  },
  zoom: function(key, transform) {
    if (this.mouse && key !== "mouse") this.mouse[1] = transform.invert(this.mouse[0]);
    if (this.touch0 && key !== "touch") this.touch0[1] = transform.invert(this.touch0[0]);
    if (this.touch1 && key !== "touch") this.touch1[1] = transform.invert(this.touch1[0]);
    this.that.__zoom = transform;
    this.emit("zoom");
    return this;
  },
  end: function() {
    if (--this.active === 0) {
      gestures.splice(this.index, 1);
      this.index = -1;
      this.emit("end");
    }
    return this;
  },
  emit: function(type) {
    Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["customEvent"])(new _event__WEBPACK_IMPORTED_MODULE_6__["default"](zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);
  }
};

function wheeled() {
  if (!filter.apply(this, arguments)) return;
  var g = gesture(this, arguments),
      t = this.__zoom,
      k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),
      p = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["mouse"])(this);

  // If the mouse is in the same location as before, reuse it.
  // If there were recent wheel events, reset the wheel idle timeout.
  if (g.wheel) {
    if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {
      g.mouse[1] = t.invert(g.mouse[0] = p);
    }
    clearTimeout(g.wheel);
  }

  // If this wheel event won’t trigger a transform change, ignore it.
  else if (t.k === k) return;

  // Otherwise, capture the mouse point and location at the start.
  else {
    g.mouse = [p, t.invert(p)];
    Object(d3_transition__WEBPACK_IMPORTED_MODULE_4__["interrupt"])(this);
    g.start();
  }

  Object(_noevent__WEBPACK_IMPORTED_MODULE_8__["default"])();
  g.wheel = setTimeout(wheelidled, wheelDelay);
  g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));

  function wheelidled() {
    g.wheel = null;
    g.end();
  }
}

function mousedowned() {
  if (touchending || !filter.apply(this, arguments)) return;
  var g = gesture(this, arguments),
      v = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true),
      p = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["mouse"])(this),
      x0 = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].clientX,
      y0 = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].clientY;

  Object(d3_drag__WEBPACK_IMPORTED_MODULE_1__["dragDisable"])(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].view);
  Object(_noevent__WEBPACK_IMPORTED_MODULE_8__["nopropagation"])();
  g.mouse = [p, this.__zoom.invert(p)];
  Object(d3_transition__WEBPACK_IMPORTED_MODULE_4__["interrupt"])(this);
  g.start();

  function mousemoved() {
    Object(_noevent__WEBPACK_IMPORTED_MODULE_8__["default"])();
    if (!g.moved) {
      var dx = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].clientX - x0, dy = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].clientY - y0;
      g.moved = dx * dx + dy * dy > clickDistance2;
    }
    g.zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["mouse"])(g.that), g.mouse[1]), g.extent, translateExtent));
  }

  function mouseupped() {
    v.on("mousemove.zoom mouseup.zoom", null);
    Object(d3_drag__WEBPACK_IMPORTED_MODULE_1__["dragEnable"])(d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].view, g.moved);
    Object(_noevent__WEBPACK_IMPORTED_MODULE_8__["default"])();
    g.end();
  }
}

function dblclicked() {
  if (!filter.apply(this, arguments)) return;
  var t0 = this.__zoom,
      p0 = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["mouse"])(this),
      p1 = t0.invert(p0),
      k1 = t0.k * (d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].shiftKey ? 0.5 : 2),
      t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);

  Object(_noevent__WEBPACK_IMPORTED_MODULE_8__["default"])();
  if (duration > 0) Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(this).transition().duration(duration).call(schedule, t1, p0);
  else Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(this).call(zoom.transform, t1);
}

function touchstarted() {
  if (!filter.apply(this, arguments)) return;
  var g = gesture(this, arguments),
      touches = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].changedTouches,
      started,
      n = touches.length, i, t, p;

  Object(_noevent__WEBPACK_IMPORTED_MODULE_8__["nopropagation"])();
  for (i = 0; i < n; ++i) {
    t = touches[i], p = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["touch"])(this, touches, t.identifier);
    p = [p, this.__zoom.invert(p), t.identifier];
    if (!g.touch0) g.touch0 = p, started = true;
    else if (!g.touch1) g.touch1 = p;
  }

  // If this is a dbltap, reroute to the (optional) dblclick.zoom handler.
  if (touchstarting) {
    touchstarting = clearTimeout(touchstarting);
    if (!g.touch1) {
      g.end();
      p = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["select"])(this).on("dblclick.zoom");
      if (p) p.apply(this, arguments);
      return;
    }
  }

  if (started) {
    touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);
    Object(d3_transition__WEBPACK_IMPORTED_MODULE_4__["interrupt"])(this);
    g.start();
  }
}

function touchmoved() {
  var g = gesture(this, arguments),
      touches = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].changedTouches,
      n = touches.length, i, t, p, l;

  Object(_noevent__WEBPACK_IMPORTED_MODULE_8__["default"])();
  if (touchstarting) touchstarting = clearTimeout(touchstarting);
  for (i = 0; i < n; ++i) {
    t = touches[i], p = Object(d3_selection__WEBPACK_IMPORTED_MODULE_3__["touch"])(this, touches, t.identifier);
    if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;
    else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;
  }
  t = g.that.__zoom;
  if (g.touch1) {
    var p0 = g.touch0[0], l0 = g.touch0[1],
        p1 = g.touch1[0], l1 = g.touch1[1],
        dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,
        dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;
    t = scale(t, Math.sqrt(dp / dl));
    p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];
    l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];
  }
  else if (g.touch0) p = g.touch0[0], l = g.touch0[1];
  else return;
  g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent));
}

function touchended() {
  var g = gesture(this, arguments),
      touches = d3_selection__WEBPACK_IMPORTED_MODULE_3__["event"].changedTouches,
      n = touches.length, i, t;

  Object(_noevent__WEBPACK_IMPORTED_MODULE_8__["nopropagation"])();
  if (touchending) clearTimeout(touchending);
  touchending = setTimeout(function() { touchending = null; }, touchDelay);
  for (i = 0; i < n; ++i) {
    t = touches[i];
    if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;
    else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;
  }
  if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;
  if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);
  else g.end();
}

zoom.wheelDelta = function(_) {
  return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_5__["default"])(+_), zoom) : wheelDelta;
};

zoom.filter = function(_) {
  return arguments.length ? (filter = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_5__["default"])(!!_), zoom) : filter;
};

zoom.touchable = function(_) {
  return arguments.length ? (touchable = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_5__["default"])(!!_), zoom) : touchable;
};

zoom.extent = function(_) {
  return arguments.length ? (extent = typeof _ === "function" ? _ : Object(_constant__WEBPACK_IMPORTED_MODULE_5__["default"])([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;
};

zoom.scaleExtent = function(_) {
  return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];
};

zoom.translateExtent = function(_) {
  return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];
};

zoom.constrain = function(_) {
  return arguments.length ? (constrain = _, zoom) : constrain;
};

zoom.duration = function(_) {
  return arguments.length ? (duration = +_, zoom) : duration;
};

zoom.interpolate = function(_) {
  return arguments.length ? (interpolate = _, zoom) : interpolate;
};

zoom.on = function() {
  var value = listeners.on.apply(listeners, arguments);
  return value === listeners ? zoom : value;
};

zoom.clickDistance = function(_) {
  return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);
};

return zoom;

});

/***/ }),

/***/ “./node_modules/d3/build/package.js”: /*!******************************************!*\

!*** ./node_modules/d3/build/package.js ***!
\******************************************/

/*! exports provided: name, version, description, keywords, homepage, license, author, main, unpkg, jsdelivr, module, repository, scripts, devDependencies, dependencies */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony export (binding) */ webpack_require.d(webpack_exports, “name”, function() { return name; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “version”, function() { return version; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “description”, function() { return description; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “keywords”, function() { return keywords; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “homepage”, function() { return homepage; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “license”, function() { return license; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “author”, function() { return author; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “main”, function() { return main; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “unpkg”, function() { return unpkg; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “jsdelivr”, function() { return jsdelivr; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “module”, function() { return module; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “repository”, function() { return repository; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “scripts”, function() { return scripts; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “devDependencies”, function() { return devDependencies; }); /* harmony export (binding) */ webpack_require.d(webpack_exports, “dependencies”, function() { return dependencies; }); var name = “d3”; var version = “4.13.0”; var description = “Data-Driven Documents”; var keywords = [“dom”,“visualization”,“svg”,“animation”,“canvas”]; var homepage = “d3js.org”; var license = “BSD-3-Clause”; var author = {“name”:“Mike Bostock”,“url”:“bost.ocks.org/mike”}; var main = “build/d3.node.js”; var unpkg = “build/d3.min.js”; var jsdelivr = “build/d3.min.js”; var module = “index”; var repository = {“type”:“git”,“url”:“github.com/d3/d3.git”}; var scripts = {“pretest”:“rimraf build && mkdir build && json2module package.json > build/package.js && node rollup.node”,“test”:“tape 'test/*/-test.js'”,“prepublishOnly”:“npm run test && rollup -c –banner "$(preamble)" && uglifyjs -b beautify=false,preamble="'$(preamble)'" build/d3.js -c negate_iife=false -m -o build/d3.min.js”,“postpublish”:“git push && git push –tags && cd ../d3.github.com && git pull && cp ../d3/build/d3.js d3.v4.js && cp ../d3/build/d3.min.js d3.v4.min.js && git add d3.v4.js d3.v4.min.js && git commit -m "d3 ${npm_package_version}" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/build/d3.js ../d3/build/d3.min.js . && git add – LICENSE README.md d3.js d3.min.js && git commit -m "${npm_package_version}" && git tag -am "${npm_package_version}" v${npm_package_version} && git push && git push –tags && cd - && zip -j build/d3.zip – LICENSE README.md API.md CHANGES.md build/d3.js build/d3.min.js”}; var devDependencies = {“json2module”:“0.0”,“package-preamble”:“0.1”,“rimraf”:“2”,“rollup”:“0.53”,“rollup-plugin-ascii”:“0.0”,“rollup-plugin-node-resolve”:“3”,“tape”:“4”,“uglify-js”:“3.2”}; var dependencies = {“d3-array”:“1.2.1”,“d3-axis”:“1.0.8”,“d3-brush”:“1.0.4”,“d3-chord”:“1.0.4”,“d3-collection”:“1.0.4”,“d3-color”:“1.0.3”,“d3-dispatch”:“1.0.3”,“d3-drag”:“1.2.1”,“d3-dsv”:“1.0.8”,“d3-ease”:“1.0.3”,“d3-force”:“1.1.0”,“d3-format”:“1.2.2”,“d3-geo”:“1.9.1”,“d3-hierarchy”:“1.1.5”,“d3-interpolate”:“1.1.6”,“d3-path”:“1.0.5”,“d3-polygon”:“1.0.3”,“d3-quadtree”:“1.0.3”,“d3-queue”:“3.0.7”,“d3-random”:“1.1.0”,“d3-request”:“1.0.6”,“d3-scale”:“1.0.7”,“d3-selection”:“1.3.0”,“d3-shape”:“1.2.0”,“d3-time”:“1.0.8”,“d3-time-format”:“2.1.1”,“d3-timer”:“1.0.7”,“d3-transition”:“1.1.1”,“d3-voronoi”:“1.1.2”,“d3-zoom”:“1.7.1”};

/***/ }),

/***/ “./node_modules/d3/index.js”: /*!**********************************!*\

!*** ./node_modules/d3/index.js ***!
\**********************************/

/*! exports provided: version, bisect, bisectRight, bisectLeft, ascending, bisector, cross, descending, deviation, extent, histogram, thresholdFreedmanDiaconis, thresholdScott, thresholdSturges, max, mean, median, merge, min, pairs, permute, quantile, range, scan, shuffle, sum, ticks, tickIncrement, tickStep, transpose, variance, zip, axisTop, axisRight, axisBottom, axisLeft, brush, brushX, brushY, brushSelection, chord, ribbon, nest, set, map, keys, values, entries, color, rgb, hsl, lab, hcl, cubehelix, dispatch, drag, dragDisable, dragEnable, dsvFormat, csvParse, csvParseRows, csvFormat, csvFormatRows, tsvParse, tsvParseRows, tsvFormat, tsvFormatRows, easeLinear, easeQuad, easeQuadIn, easeQuadOut, easeQuadInOut, easeCubic, easeCubicIn, easeCubicOut, easeCubicInOut, easePoly, easePolyIn, easePolyOut, easePolyInOut, easeSin, easeSinIn, easeSinOut, easeSinInOut, easeExp, easeExpIn, easeExpOut, easeExpInOut, easeCircle, easeCircleIn, easeCircleOut, easeCircleInOut, easeBounce, easeBounceIn, easeBounceOut, easeBounceInOut, easeBack, easeBackIn, easeBackOut, easeBackInOut, easeElastic, easeElasticIn, easeElasticOut, easeElasticInOut, forceCenter, forceCollide, forceLink, forceManyBody, forceRadial, forceSimulation, forceX, forceY, formatDefaultLocale, format, formatPrefix, formatLocale, formatSpecifier, precisionFixed, precisionPrefix, precisionRound, geoArea, geoBounds, geoCentroid, geoCircle, geoClipAntimeridian, geoClipCircle, geoClipExtent, geoClipRectangle, geoContains, geoDistance, geoGraticule, geoGraticule10, geoInterpolate, geoLength, geoPath, geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEqualAreaRaw, geoAzimuthalEquidistant, geoAzimuthalEquidistantRaw, geoConicConformal, geoConicConformalRaw, geoConicEqualArea, geoConicEqualAreaRaw, geoConicEquidistant, geoConicEquidistantRaw, geoEquirectangular, geoEquirectangularRaw, geoGnomonic, geoGnomonicRaw, geoIdentity, geoProjection, geoProjectionMutator, geoMercator, geoMercatorRaw, geoNaturalEarth1, geoNaturalEarth1Raw, geoOrthographic, geoOrthographicRaw, geoStereographic, geoStereographicRaw, geoTransverseMercator, geoTransverseMercatorRaw, geoRotation, geoStream, geoTransform, cluster, hierarchy, pack, packSiblings, packEnclose, partition, stratify, tree, treemap, treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify, interpolate, interpolateArray, interpolateBasis, interpolateBasisClosed, interpolateDate, interpolateNumber, interpolateObject, interpolateRound, interpolateString, interpolateTransformCss, interpolateTransformSvg, interpolateZoom, interpolateRgb, interpolateRgbBasis, interpolateRgbBasisClosed, interpolateHsl, interpolateHslLong, interpolateLab, interpolateHcl, interpolateHclLong, interpolateCubehelix, interpolateCubehelixLong, quantize, path, polygonArea, polygonCentroid, polygonHull, polygonContains, polygonLength, quadtree, queue, randomUniform, randomNormal, randomLogNormal, randomBates, randomIrwinHall, randomExponential, request, html, json, text, xml, csv, tsv, scaleBand, scalePoint, scaleIdentity, scaleLinear, scaleLog, scaleOrdinal, scaleImplicit, scalePow, scaleSqrt, scaleQuantile, scaleQuantize, scaleThreshold, scaleTime, scaleUtc, schemeCategory10, schemeCategory20b, schemeCategory20c, schemeCategory20, interpolateCubehelixDefault, interpolateRainbow, interpolateWarm, interpolateCool, interpolateViridis, interpolateMagma, interpolateInferno, interpolatePlasma, scaleSequential, create, creator, local, matcher, mouse, namespace, namespaces, clientPoint, select, selectAll, selection, selector, selectorAll, style, touch, touches, window, event, customEvent, arc, area, line, pie, areaRadial, radialArea, lineRadial, radialLine, pointRadial, linkHorizontal, linkVertical, linkRadial, symbol, symbols, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye, curveBasisClosed, curveBasisOpen, curveBasis, curveBundle, curveCardinalClosed, curveCardinalOpen, curveCardinal, curveCatmullRomClosed, curveCatmullRomOpen, curveCatmullRom, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore, stack, stackOffsetExpand, stackOffsetDiverging, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderAscending, stackOrderDescending, stackOrderInsideOut, stackOrderNone, stackOrderReverse, timeInterval, timeMillisecond, timeMilliseconds, utcMillisecond, utcMilliseconds, timeSecond, timeSeconds, utcSecond, utcSeconds, timeMinute, timeMinutes, timeHour, timeHours, timeDay, timeDays, timeWeek, timeWeeks, timeSunday, timeSundays, timeMonday, timeMondays, timeTuesday, timeTuesdays, timeWednesday, timeWednesdays, timeThursday, timeThursdays, timeFriday, timeFridays, timeSaturday, timeSaturdays, timeMonth, timeMonths, timeYear, timeYears, utcMinute, utcMinutes, utcHour, utcHours, utcDay, utcDays, utcWeek, utcWeeks, utcSunday, utcSundays, utcMonday, utcMondays, utcTuesday, utcTuesdays, utcWednesday, utcWednesdays, utcThursday, utcThursdays, utcFriday, utcFridays, utcSaturday, utcSaturdays, utcMonth, utcMonths, utcYear, utcYears, timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale, isoFormat, isoParse, now, timer, timerFlush, timeout, interval, transition, active, interrupt, voronoi, zoom, zoomTransform, zoomIdentity */ /***/ (function(module, webpack_exports, webpack_require) {

“use strict”; webpack_require.r(webpack_exports); /* harmony import */ var build_package_WEBPACK_IMPORTED_MODULE_0 = webpack_require(/*! ./build/package */ “./node_modules/d3/build/package.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “version”, function() { return build_package_WEBPACK_IMPORTED_MODULE_0[“version”]; });

/* harmony import */ var d3_array_WEBPACK_IMPORTED_MODULE_1_ = webpack_require(/*! d3-array */ “./node_modules/d3-array/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “bisect”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“bisect”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “bisectRight”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“bisectRight”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “bisectLeft”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“bisectLeft”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “ascending”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“ascending”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “bisector”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“bisector”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “cross”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“cross”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “descending”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“descending”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “deviation”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“deviation”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “extent”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“extent”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “histogram”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“histogram”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “thresholdFreedmanDiaconis”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“thresholdFreedmanDiaconis”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “thresholdScott”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“thresholdScott”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “thresholdSturges”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“thresholdSturges”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “max”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“max”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “mean”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“mean”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “median”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“median”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “merge”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“merge”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “min”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“min”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “pairs”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“pairs”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “permute”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“permute”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “quantile”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“quantile”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “range”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“range”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scan”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“scan”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “shuffle”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“shuffle”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “sum”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“sum”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “ticks”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“ticks”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tickIncrement”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“tickIncrement”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tickStep”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“tickStep”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “transpose”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“transpose”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “variance”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“variance”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “zip”, function() { return d3_array_WEBPACK_IMPORTED_MODULE_1_[“zip”]; });

/* harmony import */ var d3_axis_WEBPACK_IMPORTED_MODULE_2_ = webpack_require(/*! d3-axis */ “./node_modules/d3-axis/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “axisTop”, function() { return d3_axis_WEBPACK_IMPORTED_MODULE_2_[“axisTop”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “axisRight”, function() { return d3_axis_WEBPACK_IMPORTED_MODULE_2_[“axisRight”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “axisBottom”, function() { return d3_axis_WEBPACK_IMPORTED_MODULE_2_[“axisBottom”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “axisLeft”, function() { return d3_axis_WEBPACK_IMPORTED_MODULE_2_[“axisLeft”]; });

/* harmony import */ var d3_brush_WEBPACK_IMPORTED_MODULE_3_ = webpack_require(/*! d3-brush */ “./node_modules/d3-brush/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “brush”, function() { return d3_brush_WEBPACK_IMPORTED_MODULE_3_[“brush”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “brushX”, function() { return d3_brush_WEBPACK_IMPORTED_MODULE_3_[“brushX”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “brushY”, function() { return d3_brush_WEBPACK_IMPORTED_MODULE_3_[“brushY”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “brushSelection”, function() { return d3_brush_WEBPACK_IMPORTED_MODULE_3_[“brushSelection”]; });

/* harmony import */ var d3_chord_WEBPACK_IMPORTED_MODULE_4_ = webpack_require(/*! d3-chord */ “./node_modules/d3-chord/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “chord”, function() { return d3_chord_WEBPACK_IMPORTED_MODULE_4_[“chord”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “ribbon”, function() { return d3_chord_WEBPACK_IMPORTED_MODULE_4_[“ribbon”]; });

/* harmony import */ var d3_collection_WEBPACK_IMPORTED_MODULE_5_ = webpack_require(/*! d3-collection */ “./node_modules/d3-collection/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “nest”, function() { return d3_collection_WEBPACK_IMPORTED_MODULE_5_[“nest”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “set”, function() { return d3_collection_WEBPACK_IMPORTED_MODULE_5_[“set”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “map”, function() { return d3_collection_WEBPACK_IMPORTED_MODULE_5_[“map”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “keys”, function() { return d3_collection_WEBPACK_IMPORTED_MODULE_5_[“keys”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “values”, function() { return d3_collection_WEBPACK_IMPORTED_MODULE_5_[“values”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “entries”, function() { return d3_collection_WEBPACK_IMPORTED_MODULE_5_[“entries”]; });

/* harmony import */ var d3_color_WEBPACK_IMPORTED_MODULE_6_ = webpack_require(/*! d3-color */ “./node_modules/d3-color/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “color”, function() { return d3_color_WEBPACK_IMPORTED_MODULE_6_[“color”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “rgb”, function() { return d3_color_WEBPACK_IMPORTED_MODULE_6_[“rgb”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “hsl”, function() { return d3_color_WEBPACK_IMPORTED_MODULE_6_[“hsl”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “lab”, function() { return d3_color_WEBPACK_IMPORTED_MODULE_6_[“lab”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “hcl”, function() { return d3_color_WEBPACK_IMPORTED_MODULE_6_[“hcl”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “cubehelix”, function() { return d3_color_WEBPACK_IMPORTED_MODULE_6_[“cubehelix”]; });

/* harmony import */ var d3_dispatch_WEBPACK_IMPORTED_MODULE_7_ = webpack_require(/*! d3-dispatch */ “./node_modules/d3-dispatch/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “dispatch”, function() { return d3_dispatch_WEBPACK_IMPORTED_MODULE_7_[“dispatch”]; });

/* harmony import */ var d3_drag_WEBPACK_IMPORTED_MODULE_8_ = webpack_require(/*! d3-drag */ “./node_modules/d3-drag/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “drag”, function() { return d3_drag_WEBPACK_IMPORTED_MODULE_8_[“drag”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “dragDisable”, function() { return d3_drag_WEBPACK_IMPORTED_MODULE_8_[“dragDisable”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “dragEnable”, function() { return d3_drag_WEBPACK_IMPORTED_MODULE_8_[“dragEnable”]; });

/* harmony import */ var d3_dsv_WEBPACK_IMPORTED_MODULE_9_ = webpack_require(/*! d3-dsv */ “./node_modules/d3-dsv/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “dsvFormat”, function() { return d3_dsv_WEBPACK_IMPORTED_MODULE_9_[“dsvFormat”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “csvParse”, function() { return d3_dsv_WEBPACK_IMPORTED_MODULE_9_[“csvParse”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “csvParseRows”, function() { return d3_dsv_WEBPACK_IMPORTED_MODULE_9_[“csvParseRows”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “csvFormat”, function() { return d3_dsv_WEBPACK_IMPORTED_MODULE_9_[“csvFormat”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “csvFormatRows”, function() { return d3_dsv_WEBPACK_IMPORTED_MODULE_9_[“csvFormatRows”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tsvParse”, function() { return d3_dsv_WEBPACK_IMPORTED_MODULE_9_[“tsvParse”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tsvParseRows”, function() { return d3_dsv_WEBPACK_IMPORTED_MODULE_9_[“tsvParseRows”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tsvFormat”, function() { return d3_dsv_WEBPACK_IMPORTED_MODULE_9_[“tsvFormat”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tsvFormatRows”, function() { return d3_dsv_WEBPACK_IMPORTED_MODULE_9_[“tsvFormatRows”]; });

/* harmony import */ var d3_ease_WEBPACK_IMPORTED_MODULE_10_ = webpack_require(/*! d3-ease */ “./node_modules/d3-ease/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeLinear”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeLinear”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeQuad”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeQuad”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeQuadIn”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeQuadIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeQuadOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeQuadOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeQuadInOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeQuadInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCubic”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeCubic”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCubicIn”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeCubicIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCubicOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeCubicOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCubicInOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeCubicInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easePoly”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easePoly”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easePolyIn”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easePolyIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easePolyOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easePolyOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easePolyInOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easePolyInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeSin”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeSin”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeSinIn”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeSinIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeSinOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeSinOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeSinInOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeSinInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeExp”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeExp”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeExpIn”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeExpIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeExpOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeExpOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeExpInOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeExpInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCircle”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeCircle”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCircleIn”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeCircleIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCircleOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeCircleOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeCircleInOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeCircleInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBounce”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeBounce”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBounceIn”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeBounceIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBounceOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeBounceOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBounceInOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeBounceInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBack”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeBack”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBackIn”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeBackIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBackOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeBackOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeBackInOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeBackInOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeElastic”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeElastic”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeElasticIn”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeElasticIn”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeElasticOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeElasticOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “easeElasticInOut”, function() { return d3_ease_WEBPACK_IMPORTED_MODULE_10_[“easeElasticInOut”]; });

/* harmony import */ var d3_force_WEBPACK_IMPORTED_MODULE_11_ = webpack_require(/*! d3-force */ “./node_modules/d3-force/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceCenter”, function() { return d3_force_WEBPACK_IMPORTED_MODULE_11_[“forceCenter”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceCollide”, function() { return d3_force_WEBPACK_IMPORTED_MODULE_11_[“forceCollide”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceLink”, function() { return d3_force_WEBPACK_IMPORTED_MODULE_11_[“forceLink”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceManyBody”, function() { return d3_force_WEBPACK_IMPORTED_MODULE_11_[“forceManyBody”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceRadial”, function() { return d3_force_WEBPACK_IMPORTED_MODULE_11_[“forceRadial”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceSimulation”, function() { return d3_force_WEBPACK_IMPORTED_MODULE_11_[“forceSimulation”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceX”, function() { return d3_force_WEBPACK_IMPORTED_MODULE_11_[“forceX”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “forceY”, function() { return d3_force_WEBPACK_IMPORTED_MODULE_11_[“forceY”]; });

/* harmony import */ var d3_format_WEBPACK_IMPORTED_MODULE_12_ = webpack_require(/*! d3-format */ “./node_modules/d3-format/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “formatDefaultLocale”, function() { return d3_format_WEBPACK_IMPORTED_MODULE_12_[“formatDefaultLocale”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “format”, function() { return d3_format_WEBPACK_IMPORTED_MODULE_12_[“format”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “formatPrefix”, function() { return d3_format_WEBPACK_IMPORTED_MODULE_12_[“formatPrefix”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “formatLocale”, function() { return d3_format_WEBPACK_IMPORTED_MODULE_12_[“formatLocale”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “formatSpecifier”, function() { return d3_format_WEBPACK_IMPORTED_MODULE_12_[“formatSpecifier”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “precisionFixed”, function() { return d3_format_WEBPACK_IMPORTED_MODULE_12_[“precisionFixed”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “precisionPrefix”, function() { return d3_format_WEBPACK_IMPORTED_MODULE_12_[“precisionPrefix”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “precisionRound”, function() { return d3_format_WEBPACK_IMPORTED_MODULE_12_[“precisionRound”]; });

/* harmony import */ var d3_geo_WEBPACK_IMPORTED_MODULE_13_ = webpack_require(/*! d3-geo */ “./node_modules/d3-geo/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoArea”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoArea”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoBounds”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoBounds”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoCentroid”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoCentroid”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoCircle”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoCircle”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoClipAntimeridian”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoClipAntimeridian”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoClipCircle”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoClipCircle”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoClipExtent”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoClipExtent”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoClipRectangle”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoClipRectangle”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoContains”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoContains”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoDistance”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoDistance”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoGraticule”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoGraticule”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoGraticule10”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoGraticule10”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoInterpolate”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoInterpolate”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoLength”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoLength”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoPath”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoPath”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoAlbers”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoAlbers”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoAlbersUsa”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoAlbersUsa”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoAzimuthalEqualArea”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoAzimuthalEqualArea”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoAzimuthalEqualAreaRaw”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoAzimuthalEqualAreaRaw”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoAzimuthalEquidistant”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoAzimuthalEquidistant”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoAzimuthalEquidistantRaw”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoAzimuthalEquidistantRaw”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoConicConformal”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoConicConformal”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoConicConformalRaw”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoConicConformalRaw”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoConicEqualArea”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoConicEqualArea”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoConicEqualAreaRaw”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoConicEqualAreaRaw”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoConicEquidistant”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoConicEquidistant”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoConicEquidistantRaw”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoConicEquidistantRaw”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoEquirectangular”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoEquirectangular”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoEquirectangularRaw”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoEquirectangularRaw”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoGnomonic”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoGnomonic”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoGnomonicRaw”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoGnomonicRaw”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoIdentity”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoIdentity”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoProjection”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoProjection”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoProjectionMutator”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoProjectionMutator”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoMercator”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoMercator”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoMercatorRaw”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoMercatorRaw”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoNaturalEarth1”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoNaturalEarth1”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoNaturalEarth1Raw”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoNaturalEarth1Raw”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoOrthographic”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoOrthographic”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoOrthographicRaw”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoOrthographicRaw”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoStereographic”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoStereographic”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoStereographicRaw”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoStereographicRaw”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoTransverseMercator”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoTransverseMercator”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoTransverseMercatorRaw”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoTransverseMercatorRaw”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoRotation”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoRotation”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoStream”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoStream”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “geoTransform”, function() { return d3_geo_WEBPACK_IMPORTED_MODULE_13_[“geoTransform”]; });

/* harmony import */ var d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_ = webpack_require(/*! d3-hierarchy */ “./node_modules/d3-hierarchy/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “cluster”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“cluster”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “hierarchy”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“hierarchy”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “pack”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“pack”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “packSiblings”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“packSiblings”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “packEnclose”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“packEnclose”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “partition”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“partition”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stratify”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“stratify”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tree”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“tree”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemap”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“treemap”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemapBinary”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“treemapBinary”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemapDice”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“treemapDice”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemapSlice”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“treemapSlice”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemapSliceDice”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“treemapSliceDice”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemapSquarify”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“treemapSquarify”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “treemapResquarify”, function() { return d3_hierarchy_WEBPACK_IMPORTED_MODULE_14_[“treemapResquarify”]; });

/* harmony import */ var d3_interpolate_WEBPACK_IMPORTED_MODULE_15_ = webpack_require(/*! d3-interpolate */ “./node_modules/d3-interpolate/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolate”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolate”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateArray”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateArray”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateBasis”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateBasis”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateBasisClosed”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateBasisClosed”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateDate”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateDate”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateNumber”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateNumber”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateObject”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateObject”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateRound”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateRound”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateString”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateString”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateTransformCss”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateTransformCss”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateTransformSvg”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateTransformSvg”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateZoom”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateZoom”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateRgb”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateRgb”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateRgbBasis”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateRgbBasis”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateRgbBasisClosed”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateRgbBasisClosed”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateHsl”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateHsl”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateHslLong”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateHslLong”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateLab”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateLab”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateHcl”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateHcl”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateHclLong”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateHclLong”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateCubehelix”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateCubehelix”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateCubehelixLong”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“interpolateCubehelixLong”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “quantize”, function() { return d3_interpolate_WEBPACK_IMPORTED_MODULE_15_[“quantize”]; });

/* harmony import */ var d3_path_WEBPACK_IMPORTED_MODULE_16_ = webpack_require(/*! d3-path */ “./node_modules/d3-path/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “path”, function() { return d3_path_WEBPACK_IMPORTED_MODULE_16_[“path”]; });

/* harmony import */ var d3_polygon_WEBPACK_IMPORTED_MODULE_17_ = webpack_require(/*! d3-polygon */ “./node_modules/d3-polygon/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “polygonArea”, function() { return d3_polygon_WEBPACK_IMPORTED_MODULE_17_[“polygonArea”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “polygonCentroid”, function() { return d3_polygon_WEBPACK_IMPORTED_MODULE_17_[“polygonCentroid”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “polygonHull”, function() { return d3_polygon_WEBPACK_IMPORTED_MODULE_17_[“polygonHull”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “polygonContains”, function() { return d3_polygon_WEBPACK_IMPORTED_MODULE_17_[“polygonContains”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “polygonLength”, function() { return d3_polygon_WEBPACK_IMPORTED_MODULE_17_[“polygonLength”]; });

/* harmony import */ var d3_quadtree_WEBPACK_IMPORTED_MODULE_18_ = webpack_require(/*! d3-quadtree */ “./node_modules/d3-quadtree/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “quadtree”, function() { return d3_quadtree_WEBPACK_IMPORTED_MODULE_18_[“quadtree”]; });

/* harmony import */ var d3_queue_WEBPACK_IMPORTED_MODULE_19_ = webpack_require(/*! d3-queue */ “./node_modules/d3-queue/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “queue”, function() { return d3_queue_WEBPACK_IMPORTED_MODULE_19_[“queue”]; });

/* harmony import */ var d3_random_WEBPACK_IMPORTED_MODULE_20_ = webpack_require(/*! d3-random */ “./node_modules/d3-random/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “randomUniform”, function() { return d3_random_WEBPACK_IMPORTED_MODULE_20_[“randomUniform”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “randomNormal”, function() { return d3_random_WEBPACK_IMPORTED_MODULE_20_[“randomNormal”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “randomLogNormal”, function() { return d3_random_WEBPACK_IMPORTED_MODULE_20_[“randomLogNormal”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “randomBates”, function() { return d3_random_WEBPACK_IMPORTED_MODULE_20_[“randomBates”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “randomIrwinHall”, function() { return d3_random_WEBPACK_IMPORTED_MODULE_20_[“randomIrwinHall”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “randomExponential”, function() { return d3_random_WEBPACK_IMPORTED_MODULE_20_[“randomExponential”]; });

/* harmony import */ var d3_request_WEBPACK_IMPORTED_MODULE_21_ = webpack_require(/*! d3-request */ “./node_modules/d3-request/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “request”, function() { return d3_request_WEBPACK_IMPORTED_MODULE_21_[“request”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “html”, function() { return d3_request_WEBPACK_IMPORTED_MODULE_21_[“html”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “json”, function() { return d3_request_WEBPACK_IMPORTED_MODULE_21_[“json”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “text”, function() { return d3_request_WEBPACK_IMPORTED_MODULE_21_[“text”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “xml”, function() { return d3_request_WEBPACK_IMPORTED_MODULE_21_[“xml”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “csv”, function() { return d3_request_WEBPACK_IMPORTED_MODULE_21_[“csv”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “tsv”, function() { return d3_request_WEBPACK_IMPORTED_MODULE_21_[“tsv”]; });

/* harmony import */ var d3_scale_WEBPACK_IMPORTED_MODULE_22_ = webpack_require(/*! d3-scale */ “./node_modules/d3-scale/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleBand”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleBand”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scalePoint”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scalePoint”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleIdentity”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleIdentity”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleLinear”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleLinear”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleLog”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleLog”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleOrdinal”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleOrdinal”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleImplicit”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleImplicit”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scalePow”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scalePow”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleSqrt”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleSqrt”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleQuantile”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleQuantile”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleQuantize”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleQuantize”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleThreshold”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleThreshold”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleTime”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleTime”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleUtc”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleUtc”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “schemeCategory10”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“schemeCategory10”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “schemeCategory20b”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“schemeCategory20b”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “schemeCategory20c”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“schemeCategory20c”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “schemeCategory20”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“schemeCategory20”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateCubehelixDefault”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“interpolateCubehelixDefault”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateRainbow”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“interpolateRainbow”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateWarm”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“interpolateWarm”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateCool”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“interpolateCool”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateViridis”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“interpolateViridis”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateMagma”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“interpolateMagma”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolateInferno”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“interpolateInferno”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interpolatePlasma”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“interpolatePlasma”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “scaleSequential”, function() { return d3_scale_WEBPACK_IMPORTED_MODULE_22_[“scaleSequential”]; });

/* harmony import */ var d3_selection_WEBPACK_IMPORTED_MODULE_23_ = webpack_require(/*! d3-selection */ “./node_modules/d3-selection/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “create”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“create”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “creator”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“creator”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “local”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“local”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “matcher”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“matcher”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “mouse”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“mouse”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “namespace”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“namespace”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “namespaces”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“namespaces”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “clientPoint”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“clientPoint”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “select”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“select”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “selectAll”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“selectAll”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “selection”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“selection”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “selector”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“selector”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “selectorAll”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“selectorAll”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “style”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“style”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “touch”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“touch”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “touches”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“touches”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “window”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“window”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “event”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“event”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “customEvent”, function() { return d3_selection_WEBPACK_IMPORTED_MODULE_23_[“customEvent”]; });

/* harmony import */ var d3_shape_WEBPACK_IMPORTED_MODULE_24_ = webpack_require(/*! d3-shape */ “./node_modules/d3-shape/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “arc”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“arc”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “area”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“area”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “line”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“line”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “pie”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“pie”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “areaRadial”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“areaRadial”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “radialArea”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“radialArea”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “lineRadial”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“lineRadial”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “radialLine”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“radialLine”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “pointRadial”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“pointRadial”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “linkHorizontal”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“linkHorizontal”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “linkVertical”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“linkVertical”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “linkRadial”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“linkRadial”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbol”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“symbol”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbols”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“symbols”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolCircle”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“symbolCircle”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolCross”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“symbolCross”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolDiamond”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“symbolDiamond”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolSquare”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“symbolSquare”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolStar”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“symbolStar”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolTriangle”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“symbolTriangle”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “symbolWye”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“symbolWye”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveBasisClosed”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveBasisClosed”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveBasisOpen”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveBasisOpen”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveBasis”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveBasis”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveBundle”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveBundle”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveCardinalClosed”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveCardinalClosed”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveCardinalOpen”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveCardinalOpen”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveCardinal”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveCardinal”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveCatmullRomClosed”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveCatmullRomClosed”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveCatmullRomOpen”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveCatmullRomOpen”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveCatmullRom”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveCatmullRom”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveLinearClosed”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveLinearClosed”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveLinear”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveLinear”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveMonotoneX”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveMonotoneX”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveMonotoneY”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveMonotoneY”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveNatural”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveNatural”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveStep”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveStep”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveStepAfter”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveStepAfter”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “curveStepBefore”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“curveStepBefore”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stack”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“stack”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOffsetExpand”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“stackOffsetExpand”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOffsetDiverging”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“stackOffsetDiverging”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOffsetNone”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“stackOffsetNone”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOffsetSilhouette”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“stackOffsetSilhouette”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOffsetWiggle”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“stackOffsetWiggle”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOrderAscending”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“stackOrderAscending”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOrderDescending”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“stackOrderDescending”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOrderInsideOut”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“stackOrderInsideOut”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOrderNone”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“stackOrderNone”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “stackOrderReverse”, function() { return d3_shape_WEBPACK_IMPORTED_MODULE_24_[“stackOrderReverse”]; });

/* harmony import */ var d3_time_WEBPACK_IMPORTED_MODULE_25_ = webpack_require(/*! d3-time */ “./node_modules/d3-time/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeInterval”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeInterval”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMillisecond”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeMillisecond”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMilliseconds”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeMilliseconds”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMillisecond”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcMillisecond”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMilliseconds”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcMilliseconds”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeSecond”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeSecond”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeSeconds”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeSeconds”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcSecond”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcSecond”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcSeconds”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcSeconds”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMinute”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeMinute”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMinutes”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeMinutes”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeHour”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeHour”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeHours”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeHours”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeDay”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeDay”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeDays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeDays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeWeek”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeWeek”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeWeeks”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeWeeks”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeSunday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeSunday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeSundays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeSundays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMonday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeMonday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMondays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeMondays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeTuesday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeTuesday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeTuesdays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeTuesdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeWednesday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeWednesday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeWednesdays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeWednesdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeThursday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeThursday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeThursdays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeThursdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeFriday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeFriday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeFridays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeFridays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeSaturday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeSaturday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeSaturdays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeSaturdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMonth”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeMonth”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeMonths”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeMonths”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeYear”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeYear”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeYears”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“timeYears”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMinute”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcMinute”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMinutes”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcMinutes”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcHour”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcHour”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcHours”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcHours”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcDay”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcDay”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcDays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcDays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcWeek”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcWeek”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcWeeks”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcWeeks”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcSunday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcSunday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcSundays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcSundays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMonday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcMonday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMondays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcMondays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcTuesday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcTuesday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcTuesdays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcTuesdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcWednesday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcWednesday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcWednesdays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcWednesdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcThursday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcThursday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcThursdays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcThursdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcFriday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcFriday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcFridays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcFridays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcSaturday”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcSaturday”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcSaturdays”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcSaturdays”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMonth”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcMonth”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcMonths”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcMonths”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcYear”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcYear”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcYears”, function() { return d3_time_WEBPACK_IMPORTED_MODULE_25_[“utcYears”]; });

/* harmony import */ var d3_time_format_WEBPACK_IMPORTED_MODULE_26_ = webpack_require(/*! d3-time-format */ “./node_modules/d3-time-format/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeFormatDefaultLocale”, function() { return d3_time_format_WEBPACK_IMPORTED_MODULE_26_[“timeFormatDefaultLocale”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeFormat”, function() { return d3_time_format_WEBPACK_IMPORTED_MODULE_26_[“timeFormat”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeParse”, function() { return d3_time_format_WEBPACK_IMPORTED_MODULE_26_[“timeParse”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcFormat”, function() { return d3_time_format_WEBPACK_IMPORTED_MODULE_26_[“utcFormat”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “utcParse”, function() { return d3_time_format_WEBPACK_IMPORTED_MODULE_26_[“utcParse”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeFormatLocale”, function() { return d3_time_format_WEBPACK_IMPORTED_MODULE_26_[“timeFormatLocale”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “isoFormat”, function() { return d3_time_format_WEBPACK_IMPORTED_MODULE_26_[“isoFormat”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “isoParse”, function() { return d3_time_format_WEBPACK_IMPORTED_MODULE_26_[“isoParse”]; });

/* harmony import */ var d3_timer_WEBPACK_IMPORTED_MODULE_27_ = webpack_require(/*! d3-timer */ “./node_modules/d3-timer/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “now”, function() { return d3_timer_WEBPACK_IMPORTED_MODULE_27_[“now”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timer”, function() { return d3_timer_WEBPACK_IMPORTED_MODULE_27_[“timer”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timerFlush”, function() { return d3_timer_WEBPACK_IMPORTED_MODULE_27_[“timerFlush”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “timeout”, function() { return d3_timer_WEBPACK_IMPORTED_MODULE_27_[“timeout”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interval”, function() { return d3_timer_WEBPACK_IMPORTED_MODULE_27_[“interval”]; });

/* harmony import */ var d3_transition_WEBPACK_IMPORTED_MODULE_28_ = webpack_require(/*! d3-transition */ “./node_modules/d3-transition/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “transition”, function() { return d3_transition_WEBPACK_IMPORTED_MODULE_28_[“transition”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “active”, function() { return d3_transition_WEBPACK_IMPORTED_MODULE_28_[“active”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “interrupt”, function() { return d3_transition_WEBPACK_IMPORTED_MODULE_28_[“interrupt”]; });

/* harmony import */ var d3_voronoi_WEBPACK_IMPORTED_MODULE_29_ = webpack_require(/*! d3-voronoi */ “./node_modules/d3-voronoi/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “voronoi”, function() { return d3_voronoi_WEBPACK_IMPORTED_MODULE_29_[“voronoi”]; });

/* harmony import */ var d3_zoom_WEBPACK_IMPORTED_MODULE_30_ = webpack_require(/*! d3-zoom */ “./node_modules/d3-zoom/index.js”); /* harmony reexport (safe) */ webpack_require.d(webpack_exports, “zoom”, function() { return d3_zoom_WEBPACK_IMPORTED_MODULE_30_[“zoom”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “zoomTransform”, function() { return d3_zoom_WEBPACK_IMPORTED_MODULE_30_[“zoomTransform”]; });

/* harmony reexport (safe) */ webpack_require.d(webpack_exports, “zoomIdentity”, function() { return d3_zoom_WEBPACK_IMPORTED_MODULE_30_[“zoomIdentity”]; });

/***/ }),

/***/ “./node_modules/dagre-d3-renderer/dist/dagre-d3.core.js”: /*!**************************************************************!*\

!*** ./node_modules/dagre-d3-renderer/dist/dagre-d3.core.js ***!
\**************************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

module.exports=function(t){var e={};function a®{if(e)return e.exports;var n=e={i:r,l:!1,exports:{}};return t.call(n.exports,n,n.exports,a),n.l=!0,n.exports}return a.m=t,a.c=e,a.d=function(t,e,r){a.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},a.r=function(t){Object.defineProperty(t,“__esModule”,{value:!0})},a.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(e,“a”,e),e},a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},a.p=“”,a.w={},a(a.s=25)}([function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r,n=a(2),l=(r=n)&&r.__esModule?r:{default:r};var u=/:/g;function i(t){return t?String(t).replace(u,“\:”):“”}e.default={isSubgraph:function(t,e){return!!t.children(e).length},edgeToId:function(t){return i(t.v)+“:”+i(t.w)+“:”+i(t.name)},applyStyle:function(t,e){e&&t.attr(“style”,e)},applyClass:function(t,e,a){e&&t.attr(“class”,e).attr(“class”,a+“ ”+t.attr(“class”))},applyTransition:function(t,e){var a=e.graph();if(l.default.isPlainObject(a)){var r=a.transition;if(l.default.isFunction®)return r(t)}return t}}},function(t,e){t.exports=webpack_require(/*! d3 */ “./node_modules/d3/index.js”)},function(t,e){t.exports=webpack_require(/*! lodash */ “./node_modules/lodash/lodash.js”)},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r=u(a(16)),n=u(a(15)),l=u(a(14));function u(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e,a){var u=e.label,i=t.append(“g”);“svg”===e.labelType?(0,l.default)(i,e):“string”!=typeof u||“html”===e.labelType?(0,n.default)(i,e):(0,r.default)(i,e);var d=i.node().getBBox(),o=void 0;switch(a){case“top”:o=-e.height/2;break;case“bottom”:o=e.height/2-d.height;break;default:o=-d.height/2}return i.attr(“transform”,“translate(”-d.width/2“,”o“)”),i}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0}),e.default=function(t,e,a,r){var n=t.x,l=t.y,u=n-r.x,i=l-r.y,d=Math.sqrt(e*e*i*i+a*a*u*u),o=Math.abs(e*a*u/d);r.x<n&&(o=-o);var s=Math.abs(e*a*i/d);return r.y<l&&(s=-s),{x:n+o,y:l+s}}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0}),e.default=function(t,e){var a=t.x,r=t.y,n=e.x-a,l=e.y-r,u=t.width/2,i=t.height/2,d=void 0,o=void 0;return Math.abs(l)*u>Math.abs(n)*i?(l<0&&(i=-i),d=0===l?0:i*n/l,o=i):(n<0&&(u=-u),d=u,o=0===n?0:u*l/n),{x:a+d,y:r+o}}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r,n=a(23),l=(r=n)&&r.__esModule?r:{default:r};e.default=function(t,e,a){var r=t.x,n=t.y,u=[],i=Number.POSITIVE_INFINITY,d=Number.POSITIVE_INFINITY;e.forEach(function(t){i=Math.min(i,t.x),d=Math.min(d,t.y)});for(var o=r-t.width/2-i,s=n-t.height/2-d,f=0;f<e.length;f+=1){var c=e,h=e,p=(0,l.default)(t,a,{x:o+c.x,y:s+c.y},{x:o+h.x,y:s+h.y});p&&u.push(p)}return u.length?(u.length>1&&u.sort(function(t,e){var r=t.x-a.x,n=t.y-a.y,l=Math.sqrt(r*r+n*n),u=e.x-a.x,i=e.y-a.y,d=Math.sqrt(u*u+i*i);return l<d?-1:l===d?0:1}),u):(console.log(“NO INTERSECTION FOUND, RETURN NODE CENTER”,t),t)}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r,n=a(4),l=(r=n)&&r.__esModule?r:{default:r};e.default=function(t,e,a){return(0,l.default)(t,e,e,a)}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0}),e.default=function(t,e){return t.intersect(e)}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r,n=a(0),l=(r=n)&&r.__esModule?r:{default:r};function u(t,e,a,r){var n=t.append(“marker”).attr(“id”,e).attr(“viewBox”,“0 0 10 10”).attr(“refX”,9).attr(“refY”,5).attr(“markerUnits”,“strokeWidth”).attr(“markerWidth”,8).attr(“markerHeight”,6).attr(“orient”,“auto”).append(“path”).attr(“d”,“M 0 0 L 10 5 L 0 10 z”).style(“stroke-width”,1).style(“stroke-dasharray”,“1,0”);l.default.applyStyle(n,a),a&&n.attr(“class”,a)}e.default={normal:u,vee:function(t,e,a,r){var n=t.append(“marker”).attr(“id”,e).attr(“viewBox”,“0 0 10 10”).attr(“refX”,9).attr(“refY”,5).attr(“markerUnits”,“strokeWidth”).attr(“markerWidth”,8).attr(“markerHeight”,6).attr(“orient”,“auto”).append(“path”).attr(“d”,“M 0 0 L 10 5 L 0 10 L 4 5 z”).style(“stroke-width”,1).style(“stroke-dasharray”,“1,0”);l.default.applyStyle(n,a),a&&n.attr(“class”,a)},undirected:function(t,e,a,r){var n=t.append(“marker”).attr(“id”,e).attr(“viewBox”,“0 0 10 10”).attr(“refX”,9).attr(“refY”,5).attr(“markerUnits”,“strokeWidth”).attr(“markerWidth”,8).attr(“markerHeight”,6).attr(“orient”,“auto”).append(“path”).attr(“d”,“M 0 5 L 10 5”).style(“stroke-width”,1).style(“stroke-dasharray”,“1,0”);l.default.applyStyle(n,a),a&&n.attr(“class”,a)},default:u}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r=i(a(5)),n=i(a(4)),l=i(a(7)),u=i(a(6));function i(t){return t&&t.__esModule?t:{default:t}}e.default={rect:function(t,e,a){var n=t.insert(“rect”,“:first-child”).attr(“rx”,a.rx).attr(“ry”,a.ry).attr(“x”,-e.width/2).attr(“y”,-e.height/2).attr(“width”,e.width).attr(“height”,e.height);return a.intersect=function(t){return(0,r.default)(a,t)},n},ellipse:function(t,e,a){var r=e.width/2,l=e.height/2,u=t.insert(“ellipse”,“:first-child”).attr(“x”,-e.width/2).attr(“y”,-e.height/2).attr(“rx”,r).attr(“ry”,l);return a.intersect=function(t){return(0,n.default)(a,r,l,t)},u},circle:function(t,e,a){var r=Math.max(e.width,e.height)/2,n=t.insert(“circle”,“:first-child”).attr(“x”,-e.width/2).attr(“y”,-e.height/2).attr(“r”,r);return a.intersect=function(t){return(0,l.default)(a,r,t)},n},diamond:function(t,e,a){var r=e.width*Math.SQRT2/2,n=e.height*Math.SQRT2/2,l=,i=t.insert(“polygon”,“:first-child”).attr(“points”,l.map(function(t){return t.x+“,”+t.y}).join(“ ”));return a.intersect=function(t){return(0,u.default)(a,l,t)},i}}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e=t);return e.default=t,e}(a(1)),n=i(a(2)),l=i(a(8)),u=i(a(0));function i(t){return t&&t.__esModule?t:{default:t}}function d(t,e){var a=r.line().x(function(t){return t.x}).y(function(t){return t.y});return a.curve(t.curve),a(e)}e.default=function(t,e,a){var i=t.selectAll(“g.edgePath”).data(e.edges(),function(t){return u.default.edgeToId(t)}).classed(“update”,!0);return function(t,e){var a=t.enter().append(“g”).attr(“class”,“edgePath”).style(“opacity”,0);a.append(“path”).attr(“class”,“path”).attr(“d”,function(t){var a=e.edge(t),r=e.node(t.v).elem,l=n.default.range(a.points.length).map(function(){return e=(t=r).getBBox(),{x:(a=t.ownerSVGElement.getScreenCTM().inverse().multiply(t.getScreenCTM()).translate(e.width/2,e.height/2)).e,y:a.f};var t,e,a});return d(a,l)}),a.append(“defs”)}(i,e),function(t,e){var a=t.exit();u.default.applyTransition(a,e).style(“opacity”,0).remove(),u.default.applyTransition(a.select(“path.path”),e).attr(“d”,function(t){var a=e.node(t.v);if(a){var l=n.default.range(this.getTotalLength()).map(function(){return a});return d({},l)}return r.select(this).attr(“d”)})}(i,e),i=t.selectAll(“g.edgePath”),u.default.applyTransition(i,e).style(“opacity”,1),i.each(function(t){var a=r.select(this),n=e.edge(t);n.elem=this,n.id&&a.attr(“id”,n.id),u.default.applyClass(a,n.class,(a.classed(“update”)?“update ”:“”)+“edgePath”)}),i.selectAll(“path.path”).each(function(t){var a=e.edge(t);a.arrowheadId=n.default.uniqueId(“arrowhead”);var i=r.select(this).attr(“marker-end”,function(){return“url(#”a.arrowheadId“)”}).style(“fill”,“none”);u.default.applyTransition(i,e).attr(“d”,function(t){return function(t,e){var a=t.edge(e),r=t.node(e.v),n=t.node(e.w),u=a.points.slice(1,a.points.length-1);return u.unshift((0,l.default)(r,u)),u.push((0,l.default)(n,u)),d(a,u)}(e,t)}),u.default.applyStyle(i,a.style)}),i.selectAll(“defs *”).remove(),i.selectAll(“defs”).each(function(t){var n=e.edge(t);(0,a)(r.select(this),n.arrowheadId,n,“arrowhead”)}),i}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e=t);return e.default=t,e}(a(1)),n=i(a(2)),l=i(a(3)),u=i(a(0));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){var a=t.selectAll(“g.edgeLabel”).data(e.edges(),function(t){return u.default.edgeToId(t)}).classed(“update”,!0);return a.selectAll(“*”).remove(),a.enter().append(“g”).classed(“edgeLabel”,!0).style(“opacity”,0),(a=t.selectAll(“g.edgeLabel”)).each(function(t){var a=e.edge(t),u=(0,l.default)(r.select(this),e.edge(t),0,0).classed(“label”,!0),i=u.node().getBBox();a.labelId&&u.attr(“id”,a.labelId),n.default.has(a,“width”)||(a.width=i.width),n.default.has(a,“height”)||(a.height=i.height)}),u.default.applyTransition(a.exit(),e).style(“opacity”,0).remove(),a}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e=t);return e.default=t,e}(a(1)),n=u(a(0)),l=u(a(3));function u(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){var a=e.nodes().filter(function(t){return n.default.isSubgraph(e,t)}),u=t.selectAll(“g.cluster”).data(a,function(t){return t});return u.selectAll(“*”).remove(),u.enter().append(“g”).attr(“class”,“cluster”).attr(“id”,function(t){return e.node(t).id}).style(“opacity”,0),u=t.selectAll(“g.cluster”),n.default.applyTransition(u,e).style(“opacity”,1),u.each(function(t){var a=e.node(t),n=r.select(this);r.select(this).append(“rect”);var u=n.append(“g”).attr(“class”,“label”);(0,l.default)(u,a,a.clusterLabelPos)}),u.selectAll(“rect”).each(function(t){var a=e.node(t),l=r.select(this);n.default.applyStyle(l,a.style)}),n.default.applyTransition(u.exit(),e).style(“opacity”,0).remove(),u}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r,n=a(0),l=(r=n)&&r.__esModule?r:{default:r};e.default=function(t,e){var a=t;return a.node().appendChild(e.label),l.default.applyStyle(a,e.labelStyle),a}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r,n=“function”==typeof Symbol&&“symbol”==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&“function”==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?“symbol”:typeof t},l=a(0),u=(r=l)&&r.__esModule?r:{default:r};e.default=function(t,e){var a=t.append(“foreignObject”).attr(“width”,“100000”),r=a.append(“xhtml:div”);r.attr(“xmlns”,“www.w3.org/1999/xhtml”);var l=e.label;switch(void 0===l?“undefined”:n(l)){case“function”:r.insert(l);break;case“object”:r.insert(function(){return l});break;default:r.html(l)}u.default.applyStyle(r,e.labelStyle),r.style(“display”,“inline-block”),r.style(“white-space”,“nowrap”);var i=r.node().getBoundingClientRect();return a.attr(“width”,i.width).attr(“height”,i.height),a}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r,n=a(0),l=(r=n)&&r.__esModule?r:{default:r};e.default=function(t,e){for(var a=t.append(“text”),r=function(t){for(var e=“”,a=!1,r=null,n=0;n,a){switch®{case“n”:e+=“n”;break;default:e+=r}a=!1}else“\”===r?a=!0:e+=r;return e}(e.label).split(“n”),n=0;n);return l.default.applyStyle(a,e.labelStyle),a}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r=i(a(2)),n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e=t);return e.default=t,e}(a(1)),l=i(a(3)),u=i(a(0));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e,a){var i=e.nodes().filter(function(t){return!u.default.isSubgraph(e,t)}),d=t.selectAll(“g.node”).data(i,function(t){return t}).classed(“update”,!0);return d.selectAll(“*”).remove(),d.enter().append(“g”).attr(“class”,“node”).style(“opacity”,0),(d=t.selectAll(“g.node”)).each(function(t){var i=e.node(t),d=n.select(this);u.default.applyClass(d,i.class,(d.classed(“update”)?“update ”:“”)+“node”);var o=d.append(“g”).attr(“class”,“label”),s=(0,l.default)(o,i),f=a,c=r.default.pick(s.node().getBBox(),“width”,“height”);i.elem=this,i.id&&d.attr(“id”,i.id),i.labelId&&o.attr(“id”,i.labelId),r.default.has(i,“width”)&&(c.width=i.width),r.default.has(i,“height”)&&(c.height=i.height),c.width+=i.paddingLeft+i.paddingRight,c.height+=i.paddingTop+i.paddingBottom,o.attr(“transform”,“translate(”+(i.paddingLeft-i.paddingRight)/2+“,”+(i.paddingTop-i.paddingBottom)/2+“)”);var h=f(n.select(this),c,i);u.default.applyStyle(h,i.style);var p=h.node().getBBox();i.width=p.width,i.height=p.height}),u.default.applyTransition(d.exit(),e).style(“opacity”,0).remove(),d}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r,n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e=t);return e.default=t,e}(a(1)),l=a(0),u=(r=l)&&r.__esModule?r:{default:r};e.default=function(t,e){var a=t.filter(function(){return!n.select(this).classed(“update”)});function r(t){var a=e.node(t);return“translate(”a.x“,”a.y“)”}a.attr(“transform”,r),u.default.applyTransition(t,e).style(“opacity”,1).attr(“transform”,r),u.default.applyTransition(a.selectAll(“rect”),e).attr(“width”,function(t){return e.node(t).width}).attr(“height”,function(t){return e.node(t).height}).attr(“x”,function(t){return-e.node(t).width/2}).attr(“y”,function(t){return-e.node(t).height/2})}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e=t);return e.default=t,e}(a(1)),n=u(a(2)),l=u(a(0));function u(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){function a(t){var a=e.edge(t);return n.default.has(a,“x”)?“translate(”a.x“,”a.y“)”:“”}t.filter(function(){return!r.select(this).classed(“update”)}).attr(“transform”,a),l.default.applyTransition(t,e).style(“opacity”,1).attr(“transform”,a)}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r,n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e=t);return e.default=t,e}(a(1)),l=a(0),u=(r=l)&&r.__esModule?r:{default:r};e.default=function(t,e){function a(t){var a=e.node(t);return“translate(”a.x“,”a.y“)”}t.filter(function(){return!n.select(this).classed(“update”)}).attr(“transform”,a),u.default.applyTransition(t,e).style(“opacity”,1).attr(“transform”,a)}},function(t,e){t.exports=webpack_require(/*! dagre-layout */ “./node_modules/dagre-layout/dist/dagre-layout.core.js”)},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r=y(a(2)),n=y(a(21)),l=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e=t);return e.default=t,e}(a(1)),u=y(a(20)),i=y(a(19)),d=y(a(18)),o=y(a(17)),s=y(a(13)),f=y(a(12)),c=y(a(11)),h=y(a(10)),p=y(a(9));function y(t){return t&&t.__esModule?t:{default:t}}var g={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:“rect”},v={arrowhead:“normal”,curve:l.curveLinear};function _(t,e){var a=t.select(“g.”+e);return a.empty()&&(a=t.append(“g”).attr(“class”,e)),a}e.default=function(){var t=o.default,e=s.default,a=f.default,l=c.default,y=h.default,x=p.default,b=function(o,s){!function(t){t.nodes().forEach(function(e){var a=t.node(e);r.default.has(a,“label”)||t.children(e).length||(a.label=e),r.default.has(a,“paddingX”)&&r.default.defaults(a,{paddingLeft:a.paddingX,paddingRight:a.paddingX}),r.default.has(a,“paddingY”)&&r.default.defaults(a,{paddingTop:a.paddingY,paddingBottom:a.paddingY}),r.default.has(a,“padding”)&&r.default.defaults(a,{paddingLeft:a.padding,paddingRight:a.padding,paddingTop:a.padding,paddingBottom:a.padding}),r.default.defaults(a,g),r.default.each(,function(t){a=Number(a)}),r.default.has(a,“width”)&&(a._prevWidth=a.width),r.default.has(a,“height”)&&(a._prevHeight=a.height)}),t.edges().forEach(function(e){var a=t.edge(e);r.default.has(a,“label”)||(a.label=“”),r.default.defaults(a,v)})}(s),o.selectAll(“*”).remove();var f=_(o,“output”),c=_(f,“clusters”),h=_(f,“edgePaths”),p=a(_(f,“edgeLabels”),s),b=t(_(f,“nodes”),s,y);n.default.layout(s);var m=1e3,M=1e3,w=-1e3,O=-1e3,P=s;P.nodes().map(function(t){return P.node(t)}).forEach(function(t){m=Math.min(m,t.x-t.width/2),M=Math.min(M,t.y-t.height/2),w=Math.max(w,t.x+t.width/2),O=Math.max(O,t.y+t.height/2)}),P.edges().forEach(function(t){var e=P.edge(t);void 0!==e.label&&void 0!==e.x&&void 0!==e.y&&(m=Math.min(m,e.x-e.width/2),M=Math.min(M,e.y-e.height/2),w=Math.max(w,e.x+e.width/2),O=Math.max(O,e.y+e.height/2));for(var a=e.points.slice(1,e.points.length-1),r=0;r<a.length;r++){var n=a;m=Math.min(m,n.x),M=Math.min(M,n.y),w=Math.max(w,n.x),O=Math.max(O,n.y)}}),P.minX=m,P.minY=M,P.maxX=w,P.maxY=O,(0,u.default)(b,s),(0,i.default)(p,s),l(h,s,x);var j=e(c,s);(0,d.default)(j,s),function(t){r.default.each(t.nodes(),function(e){var a=t.node(e);r.default.has(a,“_prevWidth”)?a.width=a._prevWidth:delete a.width,r.default.has(a,“_prevHeight”)?a.height=a._prevHeight:delete a.height,delete a._prevWidth,delete a._prevHeight})}(s)};return b.createNodes=function(e){return arguments.length?(t=e,b):t},b.createClusters=function(t){return arguments.length?(e=t,b):e},b.createEdgeLabels=function(t){return arguments.length?(a=t,b):a},b.createEdgePaths=function(t){return arguments.length?(l=t,b):l},b.shapes=function(t){return arguments.length?(y=t,b):y},b.arrows=function(t){return arguments.length?(x=t,b):x},b}},function(t,e,a){“use strict”;function r(t,e){return t*e>0}Object.defineProperty(e,“__esModule”,{value:!0}),e.default=function(t,e,a,n){var l=e.y-t.y,u=t.x-e.x,i=e.x*t.y-t.x*e.y,d=l*a.x+u*a.y+i,o=l*n.x+u*n.y+i;if(0===d||0===o||!r(d,o)){var s=n.y-a.y,f=a.x-n.x,c=n.x*a.y-a.x*n.y,h=s*t.x+f*t.y+c,p=s*e.x+f*e.y+c;if(0===h||0===p||!r(h,p)){var y=l*f-s*u;if(0!==y){var g=Math.abs(y/2),v=u*c-f*i;return{x:v<0?(v-g)/y:(v+g)/y,y:(v=s*i-l*c)<0?(v-g)/y:(v+g)/y}}}}}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r=d(a(8)),n=d(a(7)),l=d(a(4)),u=d(a(6)),i=d(a(5));function d(t){return t&&t.__esModule?t:{default:t}}e.default={node:r.default,circle:n.default,ellipse:l.default,polygon:u.default,rect:i.default}},function(t,e,a){“use strict”;Object.defineProperty(e,“__esModule”,{value:!0});var r=u(a(24)),n=u(a(22)),l=u(a(0));function u(t){return t&&t.__esModule?t:{default:t}}e.default={intersect:r.default,render:n.default,util:l.default}}]); //# sourceMappingURL=dagre-d3.core.js.map

/***/ }),

/***/ “./node_modules/dagre-layout/dist/dagre-layout.core.js”: /*!*************************************************************!*\

!*** ./node_modules/dagre-layout/dist/dagre-layout.core.js ***!
\*************************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

module.exports=function(e){var t={};function n®{if(t)return t.exports;var a=t={i:r,l:!1,exports:{}};return e.call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.r=function(e){Object.defineProperty(e,“__esModule”,{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,“a”,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=“”,n.w={},n(n.s=27)}([function(e,t){e.exports=webpack_require(/*! lodash */ “./node_modules/lodash/lodash.js”)},function(e,t,n){“use strict”;Object.defineProperty(t,“__esModule”,{value:!0}),t.addDummyNode=d,t.simplify=f,t.asNonCompoundGraph=i,t.successorWeights=l,t.predecessorWeights=c,t.intersectRect=s,t.buildLayerMatrix=h,t.normalizeRanks=v,t.removeEmptyRanks=g,t.addBorderNode=p,t.maxRank=m,t.partition=E,t.time=b,t.notime=w;var r,a=n(0),u=(r=a)&&r.__esModule?r:{default:r},o=n(2);function d(e,t,n,r){var a=void 0;do{a=u.default.uniqueId®}while(e.hasNode(a));return n.dummy=t,e.setNode(a,n),a}function f(e){var t=(new o.Graph).setGraph(e.graph());return u.default.forEach(e.nodes(),function(n){t.setNode(n,e.node(n))}),u.default.forEach(e.edges(),function(n){var r=t.edge(n.v,n.w)||{weight:0,minlen:1},a=e.edge(n);t.setEdge(n.v,n.w,{weight:r.weight+a.weight,minlen:Math.max(r.minlen,a.minlen)})}),t}function i(e){var t=new o.Graph({multigraph:e.isMultigraph()}).setGraph(e.graph());return u.default.forEach(e.nodes(),function(n){e.children(n).length||t.setNode(n,e.node(n))}),u.default.forEach(e.edges(),function(n){t.setEdge(n,e.edge(n))}),t}function l(e){var t=u.default.map(e.nodes(),function(t){var n={};return u.default.forEach(e.outEdges(t),function(t){n=(n||0)+e.edge(t).weight}),n});return u.default.zipObject(e.nodes(),t)}function c(e){var t=u.default.map(e.nodes(),function(t){var n={};return u.default.forEach(e.inEdges(t),function(t){n=(n||0)+e.edge(t).weight}),n});return u.default.zipObject(e.nodes(),t)}function s(e,t){var n=e.x,r=e.y,a=t.x-n,u=t.y-r,o=e.width/2,d=e.height/2;if(!a&&!u)throw new Error(“Not possible to find intersection inside of the rectangle”);var f=void 0,i=void 0;return Math.abs(u)*o>Math.abs(a)*d?(u<0&&(d=-d),f=d*a/u,i=d):(a<0&&(o=-o),f=o,i=o*u/a),{x:n+f,y:r+i}}function h(e){var t=u.default.map(u.default.range(m(e)+1),function(){return[]});return u.default.forEach(e.nodes(),function(n){var r=e.node(n),a=r.rank;u.default.isUndefined(a)||(t[r.order]=n)}),t}function v(e){var t=u.default.min(u.default.map(e.nodes(),function(t){return e.node(t).rank}));u.default.forEach(e.nodes(),function(n){var r=e.node(n);u.default.has(r,“rank”)&&(r.rank-=t)})}function g(e){var t=u.default.min(u.default.map(e.nodes(),function(t){return e.node(t).rank})),n=[];u.default.forEach(e.nodes(),function®{var a=e.node®.rank-t;n||(n=[]),n.push®});var r=0,a=e.graph().nodeRankFactor;u.default.forEach(n,function(t,n){u.default.isUndefined(t)&&n%a!=0?–r:r&&u.default.forEach(t,function(t){e.node(t).rank+=r})})}function p(e,t,n,r){var a={width:0,height:0};return arguments.length>=4&&(a.rank=n,a.order=r),d(e,“border”,a,t)}function m(e){return u.default.max(u.default.map(e.nodes(),function(t){var n=e.node(t).rank;if(!u.default.isUndefined(n))return n}))}function E(e,t){var n={lhs:[],rhs:};return u.default.forEach(e,function(e){t(e)?n.lhs.push(e):n.rhs.push(e)}),n}function b(e,t){var n=u.default.now();try{return t()}finally{console.log(e+“ time: ”+(u.default.now()-n)+“ms”)}}function w(e,t){return t()}t.default={addDummyNode:d,simplify:f,asNonCompoundGraph:i,successorWeights:l,predecessorWeights:c,intersectRect:s,buildLayerMatrix:h,normalizeRanks:v,removeEmptyRanks:g,addBorderNode:p,maxRank:m,partition:E,time:b,notime:w}},function(e,t){e.exports=webpack_require(/*! graphlibrary */ “./node_modules/graphlibrary/index.js”)},function(e,t,n){“use strict”;Object.defineProperty(t,“__esModule”,{value:!0}),t.longestPath=o,t.slack=d;var r,a=n(0),u=(r=a)&&r.__esModule?r:{default:r};function o(e){var t={};u.default.forEach(e.sources(),function n®{var a=e.node®;if(u.default.has(t,r))return a.rank;t=!0;var o=u.default.min(u.default.map(e.outEdges®,function(t){return n(t.w)-e.edge(t).minlen}))||0;return a.rank=o})}function d(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}t.default={longestPath:o,slack:d}},function(e,t,n){“use strict”;Object.defineProperty(t,“__esModule”,{value:!0});var r,a=n(0),u=(r=a)&&r.__esModule?r:{default:r},o=n(2),d=n(3);function f(e,t){return u.default.forEach(e.nodes(),function n®{u.default.forEach(t.nodeEdges®,function(a){var u=a.v,o=r===u?a.w:u;e.hasNode(o)||(0,d.slack)(t,a)||(e.setNode(o,{}),e.setEdge(r,o,{}),n(o))})}),e.nodeCount()}function i(e,t){return u.default.minBy(t.edges(),function(n){if(e.hasNode(n.v)!==e.hasNode(n.w))return(0,d.slack)(t,n)})}function l(e,t,n){u.default.forEach(e.nodes(),function(e){t.node(e).rank+=n})}t.default=function(e){var t=new o.Graph({directed:!1}),n=e.nodes(),r=e.nodeCount();t.setNode(n,{});for(var a=void 0;f(t,e)<r;)a=i(t,e),l(t,e,t.hasNode(a.v)?(0,d.slack)(e,a):-(0,d.slack)(e,a));return t}},function(e,t,n){“use strict”;Object.defineProperty(t,“__esModule”,{value:!0}),t.positionX=p;var r=o(n(0)),a=n(2),u=o(n(1));function o(e){return e&&e.__esModule?e:{default:e}}function d(e,t){var n={};return r.default.reduce(t,function(t,a){var u=0,o=0,d=t.length,f=r.default.last(a);return r.default.forEach(a,function(t,l){var c=function(e,t){if(e.node(t).dummy)return r.default.find(e.predecessors(t),function(t){return e.node(t).dummy})}(e,t),s=c?e.node©.order:d;(c||t===f)&&(r.default.forEach(a.slice(o,l+1),function(t){r.default.forEach(e.predecessors(t),function®{var a=e.node®,o=a.order;!(o<u||s<o)||a.dummy&&e.node(t).dummy||i(n,r,t)})}),o=l+1,u=s)}),a}),n}function f(e,t){var n={};function a(t,a,u,o,d){var f=void 0;r.default.forEach(r.default.range(a,u),function(a){f=t,e.node(f).dummy&&r.default.forEach(e.predecessors(f),function(t){var r=e.node(t);r.dummy&&(r.order<o||r.order>d)&&i(n,t,f)})})}return r.default.reduce(t,function(t,n){var u=-1,o=void 0,d=0;return r.default.forEach(n,function(r,f){if(“border”===e.node®.dummy){var i=e.predecessors®;i.length&&(o=e.node(i).order,a(n,d,f,u,o),d=f,u=o)}a(n,d,n.length,o,t.length)}),n}),n}function i(e,t,n){if(t>n){var r=t;t=n,n=r}var a=e;a||(e=a={}),a=!0}function l(e,t,n){if(t>n){var a=t;t=n,n=a}return r.default.has(e,n)}function c(e,t,n,a){var u={},o={},d={};return r.default.forEach(t,function(e){r.default.forEach(e,function(e,t){u=e,o=e,d=t})}),r.default.forEach(t,function(e){var t=-1;r.default.forEach(e,function(e){var f=a(e);if(f.length)for(var i=((f=r.default.sortBy(f,function(e){return d})).length-1)/2,c=Math.floor(i),s=Math.ceil(i);c<=s;++c){var h=f;o===e&&t&&!l(n,e,h)&&(o=e,o=u=u,t=d)}})}),{root:u,align:o}}function s(e,t,n,u,o){var d={},f=function(e,t,n,u){var o=new a.Graph,d=e.graph(),f=function(e,t,n){return function(a,u,o){var d=a.node(u),f=a.node(o),i=0,l=void 0;if(i+=d.width/2,r.default.has(d,“labelpos”))switch(d.labelpos.toLowerCase()){case“l”:l=-d.width/2;break;case“r”:l=d.width/2}if(l&&(i+=n?l:-l),l=0,i+=(d.dummy?t:e)/2,i+=(f.dummy?t:e)/2,i+=f.width/2,r.default.has(f,“labelpos”))switch(f.labelpos.toLowerCase()){case“l”:l=f.width/2;break;case“r”:l=-f.width/2}return l&&(i+=n?l:-l),l=0,i}}(d.nodesep,d.edgesep,u);return r.default.forEach(t,function(t){var a=void 0;r.default.forEach(t,function(t){var r=n;if(o.setNode®,a){var u=n,d=o.edge(u,r);o.setEdge(u,r,Math.max(f(e,t,a),d||0))}a=t})}),o}(e,t,n,o),i={};r.default.forEach(f.nodes(),function e(t){r.default.has(i,t)||(i=!0,d=r.default.reduce(f.inEdges(t),function(t,n){return e(n.v),Math.max(t,d+f.edge(n))},0))});var l=o?“borderLeft”:“borderRight”;return r.default.forEach(f.nodes(),function t(n){if(2!==i){i++;var a=e.node(n),u=r.default.reduce(f.outEdges(n),function(e,n){return t(n.w),Math.min(e,d-f.edge(n))},Number.POSITIVE_INFINITY);u!==Number.POSITIVE_INFINITY&&a.borderType!==l&&(d=Math.max(d,u))}}),r.default.forEach(u,function(e){d=d[n]}),d}function h(e,t){return r.default.minBy(r.default.values(t),function(t){var n=(r.default.minBy(r.default.toPairs(t),function(t){return t-m(e,t)/2})||[“k”,0]);return(r.default.maxBy(r.default.toPairs(t),function(t){return t+m(e,t)/2})||[“k”,0])-n})}function v(e,t){var n=r.default.values(t),a=r.default.min(n),u=r.default.max(n);r.default.forEach(,function(n){r.default.forEach(,function(o){var d=n+o,f=e;if(f!==t){var i=r.default.values(f),l=“l”===o?a-r.default.min(i):u-r.default.max(i);l&&(e=r.default.mapValues(f,function(e){return e+l}))}})})}function g(e,t){return r.default.mapValues(e.ul,function(n,a){if(t)return e[a];var u=r.default.sortBy(r.default.map(e,a));return(u+u)/2})}function p(e){var t=u.default.buildLayerMatrix(e),n=r.default.merge(d(e,t),f(e,t)),a={},o=void 0;r.default.forEach(,function(u){o=“u”===u?t:r.default.values(t).reverse(),r.default.forEach(,function(t){“r”===t&&(o=r.default.map(o,function(e){return r.default.values(e).reverse()}));var d=r.default.bind(“u”===u?e.predecessors:e.successors,e),f=c(0,o,n,d),i=s(e,o,f.root,f.align,“r”===t);“r”===t&&(i=r.default.mapValues(i,function(e){return-e})),a=i})});var i=h(e,a);return v(a,i),g(a,e.graph().align)}function m(e,t){return e.node(t).width}t.default={positionX:p,findType1Conflicts:d,findType2Conflicts:f,addConflict:i,hasConflict:l,verticalAlignment:c,horizontalCompaction:s,alignCoordinates:v,findSmallestWidthAlignment:h,balance:g}},function(e,t,n){“use strict”;Object.defineProperty(t,“__esModule”,{value:!0});var r=o(n(0)),a=o(n(1)),u=n(5);function o(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){(function(e){var t=a.default.buildLayerMatrix(e),n=e.graph().ranksep,u=0;r.default.forEach(t,function(t){var a=r.default.max(r.default.map(t,function(t){return e.node(t).height}));r.default.forEach(t,function(t){e.node(t).y=u+a/2}),u+=a+n})})(e=a.default.asNonCompoundGraph(e)),r.default.forEach((0,u.positionX)(e),function(t,n){e.node(n).x=t})}},function(e,t,n){“use strict”;Object.defineProperty(t,“__esModule”,{value:!0});var r,a=n(0),u=(r=a)&&r.__esModule?r:{default:r};t.default=function(e,t,n){var r={},a=void 0;u.default.forEach(n,function(n){for(var u=e.parent(n),o=void 0,d=void 0;u;){if((o=e.parent(u))?(d=r,r=u):(d=a,a=u),d&&d!==u)return void t.setEdge(d,u);u=o}})}},function(e,t,n){“use strict”;Object.defineProperty(t,“__esModule”,{value:!0});var r,a=n(0),u=(r=a)&&r.__esModule?r:{default:r},o=n(2);t.default=function(e,t,n){var r=function(e){for(var t=void 0;e.hasNode(t=u.default.uniqueId(“_root”)););return t}(e),a=new o.Graph({compound:!0}).setGraph({root:r}).setDefaultNodeLabel(function(t){return e.node(t)});return u.default.forEach(e.nodes(),function(o){var d=e.node(o),f=e.parent(o);(d.rank===t||d.minRank<=t&&t<=d.maxRank)&&(a.setNode(o),a.setParent(o,f||r),u.default.forEach(e(o),function(t){var n=t.v===o?t.w:t.v,r=a.edge(n,o),d=u.default.isUndefined®?0:r.weight;a.setEdge(n,o,{weight:e.edge(t).weight+d})}),u.default.has(d,“minRank”)&&a.setNode(o,{borderLeft:d.borderLeft,borderRight:d.borderRight}))}),a}},function(e,t,n){“use strict”;Object.defineProperty(t,“__esModule”,{value:!0});var r=u(n(0)),a=u(n(1));function u(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){for(var a=void 0;t.length&&(a=r.default.last(t)).i<=n;)t.pop(),e.push(a.vs),n++;return n}t.default=function(e,t){var n,u=a.default.partition(e,function(e){return r.default.has(e,“barycenter”)}),d=u.lhs,f=r.default.sortBy(u.rhs,function(e){return-e.i}),i=[],l=0,c=0,s=0;d.sort((n=!!t,function(e,t){return e.barycenter<t.barycenter?-1:e.barycenter>t.barycenter?1:n?t.i-e.i:e.i-t.i})),s=o(i,f,s),r.default.forEach(d,function(e){s+=e.vs.length,i.push(e.vs),l+=e.barycenter*e.weight,c+=e.weight,s=o(i,f,s)});var h={vs:r.default.flatten(i,!0)};return c&&(h.barycenter=l/c,h.weight=c),h}},function(e,t,n){“use strict”;Object.defineProperty(t,“__esModule”,{value:!0});var r,a=n(0),u=(r=a)&&r.__esModule?r:{default:r};t.default=function(e,t){var n={};return u.default.forEach(e,function(e,t){var r=n={indegree:0,in:[],out:,vs:,i:t};u.default.isUndefined(e.barycenter)||(r.barycenter=e.barycenter,r.weight=e.weight)}),u.default.forEach(t.edges(),function(e){var t=n,r=n;u.default.isUndefined(t)||u.default.isUndefined®||(r.indegree++,t.out.push(n))}),function(e){var t=[];function n(e){return function(t){var n,r,a,o;t.merged||(u.default.isUndefined(t.barycenter)||u.default.isUndefined(e.barycenter)||t.barycenter>=e.barycenter)&&(r=t,a=0,o=0,(n=e).weight&&(a+=n.barycenter*n.weight,o+=n.weight),r.weight&&(a+=r.barycenter*r.weight,o+=r.weight),n.vs=r.vs.concat(n.vs),n.barycenter=a/o,n.weight=o,n.i=Math.min(r.i,n.i),r.merged=!0)}}function r(t){return function(n){n.in.push(t),0==–n.indegree&&e.push(n)}}for(;e.length;){var a=e.pop();t.push(a),u.default.forEach(a.in.reverse(),n(a)),u.default.forEach(a.out,r(a))}return u.default.chain(t).filter(function(e){return!e.merged}).map(function(e){return u.default.pick(e,)}).value()}(u.default.filter(n,function(e){return!e.indegree}))}},function(e,t,n){“use strict”;Object.defineProperty(t,“__esModule”,{value:!0});var r,a=n(0),u=(r=a)&&r.__esModule?r:{default:r};t.default=function(e,t){return u.default.map(t,function(t){var n=e.inEdges(t);if(n.length){var r=u.default.reduce(n,function(t,n){var r=e.edge(n),a=e.node(n.v);return{sum:t.sum+r.weight*a.order,weight:t.weight+r.weight}},{sum:0,weight:0});return{v:t,barycenter:r.sum/r.weight,weight:r.weight}}return{v:t}})}},function(e,t,n){“use strict”;Object.defineProperty(t,“__esModule”,{value:!0});var r=d(n(0)),a=d(n(11)),u=d(n(10)),o=d(n(9));function d(e){return e&&e.__esModule?e:{default:e}}t.default=function e(t,n,d,f){var i=t.children(n),l=t.node(n),c=l?l.borderLeft:void 0,s=l?l.borderRight:void 0,h={};c&&(i=r.default.filter(i,function(e){return e!==c&&e!==s}));var v=(0,a.default)(t,i);r.default.forEach(v,function(n){if(t.children(n.v).length){var a=e(t,n.v,d,f);h=a,r.default.has(a,“barycenter”)&&(u=n,o=a,r.default.isUndefined(u.barycenter)?(u.barycenter=o.barycenter,u.weight=o.weight):(u.barycenter=(u.barycenter*u.weight+o.barycenter*o.weight)/(u.weight+o.weight),u.weight+=o.weight))}var u,o});var g=(0,u.default)(v,d);!function(e,t){r.default.forEach(e,function(e){e.vs=r.default.flatten(e.vs.map(function(e){return t?t.vs:e}),!0)})}(g,h);var p=(0,o.default)(g,f);if(c&&(p.vs=r.default.flatten(,!0),t.predecessors©.length)){var m=t.node(t.predecessors©),E=t.node(t.predecessors(s));r.default.has(p,“barycenter”)||(p.barycenter=0,p.weight=0),p.barycenter=(p.barycenter*p.weight+m.order+E.order)/(p.weight+2),p.weight+=2}return p}},function(e,t,n){“use strict”;Object.defineProperty(t,“__esModule”,{value:!0});var r,a=n(0),u=(r=a)&&r.__esModule?r:{default:r};function o(e,t,n){for(var r=u.default.zipObject(n,u.default.map(n,function(e,t){return t})),a=u.default.flatten(u.default.map(t,function(t){return u.default.chain(e.outEdges(t)).map(function(t){return{pos:r,weight:e.edge(t).weight}}).sortBy(“pos”).value()}),!0),o=1;o<n.length;)o<<=1;var d=2*o-1;o-=1;var f=u.default.map(new Array(d),function(){return 0}),i=0;return u.default.forEach(a.forEach(function(e){var t=e.pos+o;f+=e.weight;for(var n=0;t>0;)t%2&&(n+=f),n=0,r=1;r,t);return n}},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r,a=n(0),u=(r=a)&&r.__esModule?r:{default:r};t.default=function(e){var t={},n=u.default.filter(e.nodes(),function(t){return!e.children(t).length}),r=u.default.max(u.default.map(n,function(t){return e.node(t).rank})),a=u.default.map(u.default.range(r+1),function(){return[]}),o=u.default.sortBy(n,function(t){return e.node(t).rank});return u.default.forEach(o,function n®{if(!u.default.has(t,r)){t=!0;var o=e.node®;a.push®,u.default.forEach(e.successors®,n)}}),a}},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r=c(n(0)),a=n(2),u=c(n(14)),o=c(n(13)),d=c(n(12)),f=c(n(8)),i=c(n(7)),l=c(n(1));function c(e){return e&&e.__esModule?e:{default:e}}function s(e,t,n){return r.default.map(t,function(t){return(0,f.default)(e,t,n)})}function h(e,t){var n=new a.Graph;r.default.forEach(e,function(e){var a=e.graph().root,u=(0,d.default)(e,a,n,t);r.default.forEach(u.vs,function(t,n){e.node(t).order=n}),(0,i.default)(e,n,u.vs)})}function v(e,t){r.default.forEach(t,function(t){r.default.forEach(t,function(t,n){e.node(t).order=n})})}t.default=function(e){var t=l.default.maxRank(e),n=s(e,r.default.range(1,t+1),”inEdges“),a=s(e,r.default.range(t-1,-1,-1),”outEdges“),d=(0,u.default)(e);v(e,d);for(var f=Number.POSITIVE_INFINITY,i=void 0,c=0,g=0;g<4;++c,++g){h(c%2?n:a,c%4>=2),d=l.default.buildLayerMatrix(e);var p=(0,o.default)(e,d);p<f&&(g=0,i=r.default.cloneDeep(d),f=p)}v(e,i)}},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r,a=n(0),u=(r=a)&&r.__esModule?r:{default:r};function o(e){u.default.forEach(e.nodes(),function(t){d(e.node(t))}),u.default.forEach(e.edges(),function(t){d(e.edge(t))})}function d(e){var t=e.width;e.width=e.height,e.height=t}function f(e){e.y=-e.y}function i(e){var t=e.x;e.x=e.y,e.y=t}t.default={adjust:function(e){var t=e.graph().rankdir.toLowerCase();”lr“!==t&&”rl“!==t||o(e)},undo:function(e){var t=e.graph().rankdir.toLowerCase();”bt“!==t&&”rl“!==t||function(e){u.default.forEach(e.nodes(),function(t){f(e.node(t))}),u.default.forEach(e.edges(),function(t){var n=e.edge(t);u.default.forEach(n.points,f),u.default.has(n,”y“)&&f(n)})}(e),”lr“!==t&&”rl“!==t||(function(e){u.default.forEach(e.nodes(),function(t){i(e.node(t))}),u.default.forEach(e.edges(),function(t){var n=e.edge(t);u.default.forEach(n.points,i),u.default.has(n,”x“)&&i(n)})}(e),o(e))}}},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r=u(n(0)),a=u(n(1));function u(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n,r,u,o){var d={width:0,height:0,rank:o,borderType:t},f=u[o-1],i=a.default.addDummyNode(e,”border“,d,n);u[o]=i,e.setParent(i,r),f&&e.setEdge(f,i,{weight:1})}t.default=function(e){r.default.forEach(e.children(),function t(n){var a=e.children(n),u=e.node(n);if(a.length&&r.default.forEach(a,t),r.default.has(u,”minRank“)){u.borderLeft=[],u.borderRight=;for(var d=u.minRank,f=u.maxRank+1;d<f;++d)o(e,”borderLeft“,”_bl“,n,u,d),o(e,”borderRight“,”_br“,n,u,d)}})}},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r=u(n(0)),a=u(n(1));function u(e){return e&&e.__esModule?e:{default:e}}t.default={run:function(e){var t=a.default.addDummyNode(e,”root“,{},”_root“),n=function(e){var t={};return r.default.forEach(e.children(),function(n){!function n(a,u){var o=e.children(a);o&&o.length&&r.default.forEach(o,function(e){n(e,u+1)}),t=u}(n,1)}),t}(e),u=r.default.max(r.default.values(n))-1,o=2*u+1;e.graph().nestingRoot=t,r.default.forEach(e.edges(),function(t){e.edge(t).minlen*=o});var d=function(e){return r.default.reduce(e.edges(),function(t,n){return t+e.edge(n).weight},0)}(e)+1;r.default.forEach(e.children(),function(f){!function e(t,n,u,o,d,f,i){var l=t.children(i);if(l.length){var c=a.default.addBorderNode(t,”_bt“),s=a.default.addBorderNode(t,”_bb“),h=t.node(i);t.setParent(c,i),h.borderTop=c,t.setParent(s,i),h.borderBottom=s,r.default.forEach(l,function®{e(t,n,u,o,d,f,r);var a=t.node®,l=a.borderTop?a.borderTop:r,h=a.borderBottom?a.borderBottom:r,v=a.borderTop?o:2*o,g=l!==h?1:d-f+1;t.setEdge(c,l,{weight:v,minlen:g,nestingEdge:!0}),t.setEdge(h,s,{weight:v,minlen:g,nestingEdge:!0})}),t.parent(i)||t.setEdge(n,c,{weight:0,minlen:d+f})}else i!==n&&t.setEdge(n,i,{weight:0,minlen:u})}(e,t,o,d,u,n,f)}),e.graph().nodeRankFactor=o},cleanup:function(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,r.default.forEach(e.edges(),function(t){e.edge(t).nestingEdge&&e.removeEdge(t)})}}},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r,a=n(0),u=(r=a)&&r.__esModule?r:{default:r};t.default=function(e){var t=function(e){var t={},n=0;return u.default.forEach(e.children(),function r(a){var o=n;u.default.forEach(e.children(a),r),t={low:o,lim:n++}}),t}(e);u.default.forEach(e.graph().dummyChains,function(n){for(var r=e.node(n),a=r.edgeObj,u=function(e,t,n,r){var a=[],u=,o=Math.min(t.low,t.low),d=Math.max(t.lim,t.lim),f=void 0,i=void 0;f=n;do{f=e.parent(f),a.push(f)}while(f&&(t.low>o||d>t.lim));for(i=f,f=r;(f=e.parent(f))!==i;)u.push(f);return{path:a.concat(u.reverse()),lca:i}}(e,t,a.v,a.w),o=u.path,d=u.lca,f=0,i=o,l=!0;n!==a.w;){if(r=e.node(n),l){for(;(i=o)!==d&&e.node(i).maxRank<r.rank;)f++;i===d&&(l=!1)}if(!l){for(;f).minRank<=r.rank;)f++;i=o}e.setParent(n,i),n=e.successors(n)}})}},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r=f(n(0)),a=n(2),u=f(n(4)),o=n(3),d=n(1);function f(e){return e&&e.__esModule?e:{default:e}}var i=a.alg.preorder,l=a.alg.postorder;function c(e){e=(0,d.simplify)(e),(0,o.longestPath)(e);var t=(0,u.default)(e);v(t),s(t,e);for(var n=void 0;n=g(t);)m(t,e,n,p(t,e,n))}function s(e,t){var n=l(e,e.nodes());n=n.slice(0,n.length-1),r.default.forEach(n,function(n){!function(e,t,n){var r=e.node(n).parent;e.edge(n,r).cutvalue=h(e,t,n)}(e,t,n)})}function h(e,t,n){var a=e.node(n).parent,u=!0,o=t.edge(n,a),d=0;return o||(u=!1,o=t.edge(a,n)),d=o.weight,r.default.forEach(t.nodeEdges(n),function®{var o,f,i=r.v===n,l=i?r.w:r.v;if(l!==a){var c=i===u,s=t.edge®.weight;if(d+=c?s:-s,o=n,f=l,e.hasEdge(o,f)){var h=e.edge(n,l).cutvalue;d+=c?-h:h}}}),d}function v(e,t){arguments.length<2&&(t=e.nodes()),function e(t,n,a,u,o){var d=a;var f=t.node(u);n=!0;r.default.forEach(t.neighbors(u),function(o){r.default.has(n,o)||(a=e(t,n,a,o,u))});f.low=d;f.lim=a++;o?f.parent=o:delete f.parent;return a}(e,{},1,t)}function g(e){return r.default.find(e.edges(),function(t){return e.edge(t).cutvalue<0})}function p(e,t,n){var a=n.v,u=n.w;t.hasEdge(a,u)||(a=n.w,u=n.v);var d=e.node(a),f=e.node(u),i=d,l=!1;d.lim>f.lim&&(i=f,l=!0);var c=r.default.filter(t.edges(),function(t){return l===E(e,e.node(t.v),i)&&l!==E(e,e.node(t.w),i)});return r.default.minBy(c,function(e){return(0,o.slack)(t,e)})}function m(e,t,n,a){var u=n.v,o=n.w;e.removeEdge(u,o),e.setEdge(a.v,a.w,{}),v(e),s(e,t),function(e,t){var n=r.default.find(e.nodes(),function(e){return!t.node(e).parent}),a=i(e,n);a=a.slice(1),r.default.forEach(a,function(n){var r=e.node(n).parent,a=t.edge(n,r),u=!1;a||(a=t.edge(r,n),u=!0),t.node(n).rank=t.node®.rank+(u?a.minlen:-a.minlen)})}(e,t)}function E(e,t,n){return n.low<=t.lim&&t.lim<=n.lim}c.initLowLimValues=v,c.initCutValues=s,c.calcCutValue=h,c.leaveEdge=g,c.enterEdge=p,c.exchangeEdges=m,t.default=c},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r=n(3),a=o(n(4)),u=o(n(20));function o(e){return e&&e.__esModule?e:{default:e}}var d=r.longestPath;function f(e){(0,u.default)(e)}t.default=function(e){switch(e.graph().ranker){case”network-simplex“:f(e);break;case”tight-tree“:!function(e){(0,r.longestPath)(e),(0,a.default)(e)}(e);break;case”longest-path“:d(e);break;default:f(e)}}},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r=u(n(0)),a=u(n(1));function u(e){return e&&e.__esModule?e:{default:e}}t.default={run:function(e){e.graph().dummyChains=[],r.default.forEach(e.edges(),function(t){!function(e,t){var n=t.v,r=e.node(n).rank,u=t.w,o=e.node(u).rank,d=t.name,f=e.edge(t),i=f.labelRank;if(o!==r+1){e.removeEdge(t);var l=void 0,c=void 0,s=void 0;for(s=0,++r;r<o;++s,++r)f.points=[],c={width:0,height:0,edgeLabel:f,edgeObj:t,rank:r},l=a.default.addDummyNode(e,”edge“,c,”_d“),r===i&&(c.width=f.width,c.height=f.height,c.dummy=”edge-label“,c.labelpos=f.labelpos),e.setEdge(n,l,{weight:f.weight},d),0===s&&e.graph().dummyChains.push(l),n=l;e.setEdge(n,u,{weight:f.weight},d)}}(e,t)})},undo:function(e){r.default.forEach(e.graph().dummyChains,function(t){var n=e.node(t),r=n.edgeLabel,a=null;for(e.setEdge(n.edgeObj,r);n.dummy;)a=e.successors(t),e.removeNode(t),r.points.push({x:n.x,y:n.y}),”edge-label“===n.dummy&&(r.x=n.x,r.y=n.y,r.width=n.width,r.height=n.height),t=a,n=e.node(t)})}}},function(e,t,n){”use strict“;function r(){var e={};e._next=e._prev=e,this._sentinel=e}function a(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function u(e,t){if(”_next“!==e&&”_prev“!==e)return t}Object.defineProperty(t,”__esModule“,{value:!0}),r.prototype.dequeue=function(){var e=this._sentinel,t=e._prev;if(t!==e)return a(t),t},r.prototype.enqueue=function(e){var t=this._sentinel;e._prev&&e._next&&a(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t},r.prototype.toString=function(){for(var e=[],t=this._sentinel,n=t._prev;n!==t;)e.push(JSON.stringify(n,u)),n=n._prev;return”[“+e.join(”, “)+”]“},t.default=r},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r=o(n(0)),a=n(2),u=o(n(23));function o(e){return e&&e.__esModule?e:{default:e}}var d=r.default.constant(1);function f(e,t,n,a,u){var o=u?[]:void 0;return r.default.forEach(e.inEdges(a.v),function®{var a=e.edge®,d=e.node(r.v);u&&o.push({v:r.v,w:r.w}),d.out-=a,i(t,n,d)}),r.default.forEach(e.outEdges(a.v),function®{var a=e.edge®,u=r.w,o=e.node(u);o.in-=a,i(t,n,o)}),e.removeNode(a.v),o}function i(e,t,n){n.out?n.in?e.enqueue(n):e.enqueue(n):e.enqueue(n)}t.default=function(e,t){if(e.nodeCount()<=1)return[];var n=function(e,t){var n=new a.Graph,o=0,d=0;r.default.forEach(e.nodes(),function(e){n.setNode(e,{v:e,in:0,out:0})}),r.default.forEach(e.edges(),function(e){var r=n.edge(e.v,e.w)||0,a=t(e),u=r+a;n.setEdge(e.v,e.w,u),d=Math.max(d,n.node(e.v).out+=a),o=Math.max(o,n.node(e.w).in+=a)});var f=r.default.range(d+o+3).map(function(){return new u.default}),l=o+1;return r.default.forEach(n.nodes(),function(e){i(f,l,n.node(e))}),{graph:n,buckets:f,zeroIdx:l}}(e,t||d),o=function(e,t,n){for(var r=[],a=t,u=t,o=void 0;e.nodeCount();){for(;o=u.dequeue();)f(e,t,n,o);for(;o=a.dequeue();)f(e,t,n,o);if(e.nodeCount())for(var d=t.length-2;d>0;–d)if(o=t.dequeue()){r=r.concat(f(e,t,n,o,!0));break}}return r}(n.graph,n.buckets,n.zeroIdx);return r.default.flatten(r.default.map(o,function(t){return e.outEdges(t.v,t.w)}),!0)}},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r=u(n(0)),a=u(n(24));function u(e){return e&&e.__esModule?e:{default:e}}t.default={run:function(e){var t=”greedy“===e.graph().acyclicer?(0,a.default)(e,function(e){return function(t){return e.edge(t).weight}}(e)):function(e){var t=[],n={},a={};return r.default.forEach(e.nodes(),function u(o){r.default.has(a,o)||(a=!0,n=!0,r.default.forEach(e.outEdges(o),function(e){r.default.has(n,e.w)?t.push(e):u(e.w)}),delete n)}),t}(e);r.default.forEach(t,function(t){var n=e.edge(t);e.removeEdge(t),n.forwardName=t.name,n.reversed=!0,e.setEdge(t.w,t.v,n,r.default.uniqueId(”rev“))})},undo:function(e){r.default.forEach(e.edges(),function(t){var n=e.edge(t);if(n.reversed){e.removeEdge(t);var r=n.forwardName;delete n.reversed,delete n.forwardName,e.setEdge(t.w,t.v,n,r)}})}}},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r=p(n(0)),a=n(2),u=p(n(25)),o=p(n(22)),d=p(n(21)),f=n(1),i=p(f),l=p(n(19)),c=p(n(18)),s=p(n(17)),h=p(n(16)),v=p(n(15)),g=p(n(6));function p(e){return e&&e.__esModule?e:{default:e}}var m=,E={ranksep:50,edgesep:20,nodesep:50,rankdir:”tb“},b=,w=,y={width:0,height:0},_=,x={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:”r“},k=;function M(e,t){return r.default.mapValues(r.default.pick(e,t),Number)}function N(e){var t={};return r.default.forEach(e,function(e,n){t=e}),t}t.default=function(e,t){var n=t&&t.debugTiming?i.default.time:i.default.notime;n(”layout“,function(){var t=n(” buildLayoutGraph“,function(){return function(e){var t=new a.Graph({multigraph:!0,compound:!0}),n=N(e.graph());return t.setGraph(r.default.merge({},E,M(n,m),r.default.pick(n,b))),r.default.forEach(e.nodes(),function(n){var a=N(e.node(n));t.setNode(n,r.default.defaults(M(a,w),y)),t.setParent(n,e.parent(n))}),r.default.forEach(e.edges(),function(n){var a=N(e.edge(n));t.setEdge(n,r.default.merge({},x,M(a,_),r.default.pick(a,k)))}),t}(e)});n(” runLayout“,function(){!function(e,t){t(” makeSpaceForEdgeLabels“,function(){!function(e){var t=e.graph();t.ranksep/=2,r.default.forEach(e.edges(),function(n){var r=e.edge(n);r.minlen*=2,”c“!==r.labelpos.toLowerCase()&&(”TB“===t.rankdir||”BT“===t.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)})}(e)}),t(” removeSelfEdges“,function(){!function(e){r.default.forEach(e.edges(),function(t){if(t.v===t.w){var n=e.node(t.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}(e)}),t(” acyclic“,function(){u.default.run(e)}),t(” nestingGraph.run“,function(){c.default.run(e)}),t(” rank“,function(){(0,d.default)(i.default.asNonCompoundGraph(e))}),t(” injectEdgeLabelProxies“,function(){!function(e){r.default.forEach(e.edges(),function(t){var n=e.edge(t);if(n.width&&n.height){var r=e.node(t.v),a=e.node(t.w),u={rank:(a.rank-r.rank)/2+r.rank,e:t};i.default.addDummyNode(e,”edge-proxy“,u,”_ep“)}})}(e)}),t(” removeEmptyRanks“,function(){(0,f.removeEmptyRanks)(e)}),t(” nestingGraph.cleanup“,function(){c.default.cleanup(e)}),t(” normalizeRanks“,function(){(0,f.normalizeRanks)(e)}),t(” assignRankMinMax“,function(){!function(e){var t=0;r.default.forEach(e.nodes(),function(n){var r=e.node(n);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,t=Math.max(t,r.maxRank))}),e.graph().maxRank=t}(e)}),t(” removeEdgeLabelProxies“,function(){!function(e){r.default.forEach(e.nodes(),function(t){var n=e.node(t);”edge-proxy“===n.dummy&&(e.edge(n.e).labelRank=n.rank,e.removeNode(t))})}(e)}),t(” normalize.run“,function(){o.default.run(e)}),t(” parentDummyChains“,function(){(0,l.default)(e)}),t(” addBorderSegments“,function(){(0,s.default)(e)}),t(” order“,function(){(0,v.default)(e)}),t(” insertSelfEdges“,function(){!function(e){var t=i.default.buildLayerMatrix(e);r.default.forEach(t,function(t){var n=0;r.default.forEach(t,function(t,a){var u=e.node(t);u.order=a+n,r.default.forEach(u.selfEdges,function(t){i.default.addDummyNode(e,”selfedge“,{width:t.label.width,height:t.label.height,rank:u.rank,order:a+ ++n,e:t.e,label:t.label},”_se“)}),delete u.selfEdges})})}(e)}),t(” adjustCoordinateSystem“,function(){h.default.adjust(e)}),t(” position“,function(){(0,g.default)(e)}),t(” positionSelfEdges“,function(){!function(e){r.default.forEach(e.nodes(),function(t){var n=e.node(t);if(”selfedge“===n.dummy){var r=e.node(n.e.v),a=r.x+r.width/2,u=r.y,o=n.x-a,d=r.height/2;e.setEdge(n.e,n.label),e.removeNode(t),n.label.points=,n.label.x=n.x,n.label.y=n.y}})}(e)}),t(” removeBorderNodes“,function(){!function(e){r.default.forEach(e.nodes(),function(t){if(e.children(t).length){var n=e.node(t),a=e.node(n.borderTop),u=e.node(n.borderBottom),o=e.node(r.default.last(n.borderLeft)),d=e.node(r.default.last(n.borderRight));n.width=Math.abs(d.x-o.x),n.height=Math.abs(u.y-a.y),n.x=o.x+n.width/2,n.y=a.y+n.height/2}}),r.default.forEach(e.nodes(),function(t){”border“===e.node(t).dummy&&e.removeNode(t)})}(e)}),t(” normalize.undo“,function(){o.default.undo(e)}),t(” fixupEdgeLabelCoords“,function(){!function(e){r.default.forEach(e.edges(),function(t){var n=e.edge(t);if(r.default.has(n,”x“))switch(”l“!==n.labelpos&&”r“!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case”l“:n.x-=n.width/2+n.labeloffset;break;case”r“:n.x+=n.width/2+n.labeloffset}})}(e)}),t(” undoCoordinateSystem“,function(){h.default.undo(e)}),t(” translateGraph“,function(){!function(e){var t=Number.POSITIVE_INFINITY,n=0,a=Number.POSITIVE_INFINITY,u=0,o=e.graph(),d=o.marginx||0,f=o.marginy||0;function i(e){var r=e.x,o=e.y,d=e.width,f=e.height;t=Math.min(t,r-d/2),n=Math.max(n,r+d/2),a=Math.min(a,o-f/2),u=Math.max(u,o+f/2)}r.default.forEach(e.nodes(),function(t){i(e.node(t))}),r.default.forEach(e.edges(),function(t){var n=e.edge(t);r.default.has(n,”x“)&&i(n)}),t-=d,a-=f,r.default.forEach(e.nodes(),function(n){var r=e.node(n);r.x-=t,r.y-=a}),r.default.forEach(e.edges(),function(n){var u=e.edge(n);r.default.forEach(u.points,function(e){e.x-=t,e.y-=a}),r.default.has(u,”x“)&&(u.x-=t),r.default.has(u,”y“)&&(u.y-=a)}),o.width=n-t+d,o.height=u-a+f}(e)}),t(” assignNodeIntersects“,function(){!function(e){r.default.forEach(e.edges(),function(t){var n=e.edge(t),r=e.node(t.v),a=e.node(t.w),u=null,o=null;n.points?(u=n.points,o=n.points):(n.points=[],u=a,o=r),n.points.unshift(i.default.intersectRect(r,u)),n.points.push(i.default.intersectRect(a,o))})}(e)}),t(” reversePoints“,function(){!function(e){r.default.forEach(e.edges(),function(t){var n=e.edge(t);n.reversed&&n.points.reverse()})}(e)}),t(” acyclic.undo“,function(){u.default.undo(e)})}(t,n)}),n(” updateInputGraph“,function(){!function(e,t){r.default.forEach(e.nodes(),function(n){var r=e.node(n),a=t.node(n);r&&(r.x=a.x,r.y=a.y,t.children(n).length&&(r.width=a.width,r.height=a.height))}),r.default.forEach(e.edges(),function(n){var a=e.edge(n),u=t.edge(n);a.points=u.points,r.default.has(u,”x“)&&(a.x=u.x,a.y=u.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}(e,t)})})}},function(e,t,n){”use strict“;Object.defineProperty(t,”__esModule“,{value:!0});var r,a=n(26),u=(r=a)&&r.__esModule?r:{default:r};t.default={layout:u.default}}]); //# sourceMappingURL=dagre-layout.core.js.map

/***/ }),

/***/ “./node_modules/graphlibrary/index.js”: /*!********************************************!*\

!*** ./node_modules/graphlibrary/index.js ***!
\********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

module.exports = {

Graph: __webpack_require__(/*! ./lib/graph */ "./node_modules/graphlibrary/lib/graph.js"),
json: __webpack_require__(/*! ./lib/json */ "./node_modules/graphlibrary/lib/json.js"),
alg: __webpack_require__(/*! ./lib/alg */ "./node_modules/graphlibrary/lib/alg/index.js")

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/components.js”: /*!*********************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/components.js ***!
\*********************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

var _ = webpack_require(/*! ../lodash */ “./node_modules/graphlibrary/lib/lodash.js”)

module.exports = components

function components (g) {

const visited = {}
const cmpts = []
let cmpt

function dfs (v) {
  if (_.has(visited, v)) return
  visited[v] = true
  cmpt.push(v)
  _.each(g.successors(v), dfs)
  _.each(g.predecessors(v), dfs)
}

_.each(g.nodes(), function (v) {
  cmpt = []
  dfs(v)
  if (cmpt.length) {
    cmpts.push(cmpt)
  }
})

return cmpts

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/dfs.js”: /*!**************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/dfs.js ***!
\**************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

var _ = webpack_require(/*! ../lodash */ “./node_modules/graphlibrary/lib/lodash.js”)

module.exports = dfs

/*

* A helper that preforms a pre- or post-order traversal on the input graph
* and returns the nodes in the order they were visited. If the graph is
* undirected then this algorithm will navigate using neighbors. If the graph
* is directed then this algorithm will navigate using successors.
*
* Order must be one of "pre" or "post".
*/

function dfs (g, vs, order) {

if (!_.isArray(vs)) {
  vs = [vs]
}

var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g)

const acc = []
const visited = {}
_.each(vs, function (v) {
  if (!g.hasNode(v)) {
    throw new Error('Graph does not have node: ' + v)
  }

  doDfs(g, v, order === 'post', visited, navigation, acc)
})
return acc

}

function doDfs (g, v, postorder, visited, navigation, acc) {

if (!_.has(visited, v)) {
  visited[v] = true

  if (!postorder) { acc.push(v) }
  _.each(navigation(v), function (w) {
    doDfs(g, w, postorder, visited, navigation, acc)
  })
  if (postorder) { acc.push(v) }
}

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/dijkstra-all.js”: /*!***********************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/dijkstra-all.js ***!
\***********************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

const dijkstra = webpack_require(/*! ./dijkstra */ “./node_modules/graphlibrary/lib/alg/dijkstra.js”) const _ = webpack_require(/*! ../lodash */ “./node_modules/graphlibrary/lib/lodash.js”)

module.exports = dijkstraAll

function dijkstraAll (g, weightFunc, edgeFunc) {

return _.transform(g.nodes(), function (acc, v) {
  acc[v] = dijkstra(g, v, weightFunc, edgeFunc)
}, {})

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/dijkstra.js”: /*!*******************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/dijkstra.js ***!
\*******************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

const _ = webpack_require(/*! ../lodash */ “./node_modules/graphlibrary/lib/lodash.js”) const PriorityQueue = webpack_require(/*! ../data/priority-queue */ “./node_modules/graphlibrary/lib/data/priority-queue.js”)

module.exports = dijkstra

var DEFAULT_WEIGHT_FUNC = _.constant(1)

function dijkstra (g, source, weightFn, edgeFn) {

return runDijkstra(g, String(source),
  weightFn || DEFAULT_WEIGHT_FUNC,
  edgeFn || function (v) { return g.outEdges(v) })

}

function runDijkstra (g, source, weightFn, edgeFn) {

const results = {}
const pq = new PriorityQueue()
let v, vEntry

var updateNeighbors = function (edge) {
  const w = edge.v !== v ? edge.v : edge.w
  const wEntry = results[w]
  const weight = weightFn(edge)
  const distance = vEntry.distance + weight

  if (weight < 0) {
    throw new Error('dijkstra does not allow negative edge weights. ' +
                    'Bad edge: ' + edge + ' Weight: ' + weight)
  }

  if (distance < wEntry.distance) {
    wEntry.distance = distance
    wEntry.predecessor = v
    pq.decrease(w, distance)
  }
}

g.nodes().forEach(function (v) {
  var distance = v === source ? 0 : Number.POSITIVE_INFINITY
  results[v] = { distance: distance }
  pq.add(v, distance)
})

while (pq.size() > 0) {
  v = pq.removeMin()
  vEntry = results[v]
  if (vEntry.distance === Number.POSITIVE_INFINITY) {
    break
  }

  edgeFn(v).forEach(updateNeighbors)
}

return results

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/find-cycles.js”: /*!**********************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/find-cycles.js ***!
\**********************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

const _ = webpack_require(/*! ../lodash */ “./node_modules/graphlibrary/lib/lodash.js”) const tarjan = webpack_require(/*! ./tarjan */ “./node_modules/graphlibrary/lib/alg/tarjan.js”)

module.exports = findCycles

function findCycles (g) {

return _.filter(tarjan(g), function (cmpt) {
  return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]))
})

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/floyd-warshall.js”: /*!*************************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/floyd-warshall.js ***!
\*************************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

var _ = webpack_require(/*! ../lodash */ “./node_modules/graphlibrary/lib/lodash.js”)

module.exports = floydWarshall

var DEFAULT_WEIGHT_FUNC = _.constant(1)

function floydWarshall (g, weightFn, edgeFn) {

return runFloydWarshall(g,
  weightFn || DEFAULT_WEIGHT_FUNC,
  edgeFn || function (v) { return g.outEdges(v) })

}

function runFloydWarshall (g, weightFn, edgeFn) {

const results = {}
const nodes = g.nodes()

nodes.forEach(function (v) {
  results[v] = {}
  results[v][v] = { distance: 0 }
  nodes.forEach(function (w) {
    if (v !== w) {
      results[v][w] = { distance: Number.POSITIVE_INFINITY }
    }
  })
  edgeFn(v).forEach(function (edge) {
    const w = edge.v === v ? edge.w : edge.v
    const d = weightFn(edge)
    results[v][w] = { distance: d, predecessor: v }
  })
})

nodes.forEach(function (k) {
  var rowK = results[k]
  nodes.forEach(function (i) {
    var rowI = results[i]
    nodes.forEach(function (j) {
      var ik = rowI[k]
      var kj = rowK[j]
      var ij = rowI[j]
      var altDistance = ik.distance + kj.distance
      if (altDistance < ij.distance) {
        ij.distance = altDistance
        ij.predecessor = kj.predecessor
      }
    })
  })
})

return results

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/index.js”: /*!****************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/index.js ***!
\****************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

module.exports = {

components: __webpack_require__(/*! ./components */ "./node_modules/graphlibrary/lib/alg/components.js"),
dijkstra: __webpack_require__(/*! ./dijkstra */ "./node_modules/graphlibrary/lib/alg/dijkstra.js"),
dijkstraAll: __webpack_require__(/*! ./dijkstra-all */ "./node_modules/graphlibrary/lib/alg/dijkstra-all.js"),
findCycles: __webpack_require__(/*! ./find-cycles */ "./node_modules/graphlibrary/lib/alg/find-cycles.js"),
floydWarshall: __webpack_require__(/*! ./floyd-warshall */ "./node_modules/graphlibrary/lib/alg/floyd-warshall.js"),
isAcyclic: __webpack_require__(/*! ./is-acyclic */ "./node_modules/graphlibrary/lib/alg/is-acyclic.js"),
postorder: __webpack_require__(/*! ./postorder */ "./node_modules/graphlibrary/lib/alg/postorder.js"),
preorder: __webpack_require__(/*! ./preorder */ "./node_modules/graphlibrary/lib/alg/preorder.js"),
prim: __webpack_require__(/*! ./prim */ "./node_modules/graphlibrary/lib/alg/prim.js"),
tarjan: __webpack_require__(/*! ./tarjan */ "./node_modules/graphlibrary/lib/alg/tarjan.js"),
topsort: __webpack_require__(/*! ./topsort */ "./node_modules/graphlibrary/lib/alg/topsort.js")

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/is-acyclic.js”: /*!*********************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/is-acyclic.js ***!
\*********************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

var topsort = webpack_require(/*! ./topsort */ “./node_modules/graphlibrary/lib/alg/topsort.js”)

module.exports = isAcyclic

function isAcyclic (g) {

try {
  topsort(g)
} catch (e) {
  if (e instanceof topsort.CycleException) {
    return false
  }
  throw e
}
return true

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/postorder.js”: /*!********************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/postorder.js ***!
\********************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

var dfs = webpack_require(/*! ./dfs */ “./node_modules/graphlibrary/lib/alg/dfs.js”)

module.exports = postorder

function postorder (g, vs) {

return dfs(g, vs, 'post')

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/preorder.js”: /*!*******************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/preorder.js ***!
\*******************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

var dfs = webpack_require(/*! ./dfs */ “./node_modules/graphlibrary/lib/alg/dfs.js”)

module.exports = preorder

function preorder (g, vs) {

return dfs(g, vs, 'pre')

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/prim.js”: /*!***************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/prim.js ***!
\***************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

const _ = webpack_require(/*! ../lodash */ “./node_modules/graphlibrary/lib/lodash.js”) const Graph = webpack_require(/*! ../graph */ “./node_modules/graphlibrary/lib/graph.js”) const PriorityQueue = webpack_require(/*! ../data/priority-queue */ “./node_modules/graphlibrary/lib/data/priority-queue.js”)

module.exports = prim

function prim (g, weightFunc) {

const result = new Graph()
const parents = {}
const pq = new PriorityQueue()
let v

function updateNeighbors (edge) {
  const w = edge.v === v ? edge.w : edge.v
  const pri = pq.priority(w)
  if (pri !== undefined) {
    var edgeWeight = weightFunc(edge)
    if (edgeWeight < pri) {
      parents[w] = v
      pq.decrease(w, edgeWeight)
    }
  }
}

if (g.nodeCount() === 0) {
  return result
}

_.each(g.nodes(), function (v) {
  pq.add(v, Number.POSITIVE_INFINITY)
  result.setNode(v)
})

// Start from an arbitrary node
pq.decrease(g.nodes()[0], 0)

var init = false
while (pq.size() > 0) {
  v = pq.removeMin()
  if (_.has(parents, v)) {
    result.setEdge(v, parents[v])
  } else if (init) {
    throw new Error('Input graph is not connected: ' + g)
  } else {
    init = true
  }

  g.nodeEdges(v).forEach(updateNeighbors)
}

return result

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/tarjan.js”: /*!*****************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/tarjan.js ***!
\*****************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

var _ = webpack_require(/*! ../lodash */ “./node_modules/graphlibrary/lib/lodash.js”)

module.exports = tarjan

function tarjan (g) {

let index = 0
const stack = []
const visited = {} // node id -> { onStack, lowlink, index }
const results = []

function dfs (v) {
  var entry = visited[v] = {
    onStack: true,
    lowlink: index,
    index: index++
  }
  stack.push(v)

  g.successors(v).forEach(function (w) {
    if (!_.has(visited, w)) {
      dfs(w)
      entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink)
    } else if (visited[w].onStack) {
      entry.lowlink = Math.min(entry.lowlink, visited[w].index)
    }
  })

  if (entry.lowlink === entry.index) {
    const cmpt = []
    let w
    do {
      w = stack.pop()
      visited[w].onStack = false
      cmpt.push(w)
    } while (v !== w)
    results.push(cmpt)
  }
}

g.nodes().forEach(function (v) {
  if (!_.has(visited, v)) {
    dfs(v)
  }
})

return results

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/alg/topsort.js”: /*!******************************************************!*\

!*** ./node_modules/graphlibrary/lib/alg/topsort.js ***!
\******************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

const _ = webpack_require(/*! ../lodash */ “./node_modules/graphlibrary/lib/lodash.js”)

module.exports = topsort topsort.CycleException = CycleException

function topsort (g) {

const visited = {}
const stack = {}
const results = []

function visit (node) {
  if (_.has(stack, node)) {
    throw new CycleException()
  }

  if (!_.has(visited, node)) {
    stack[node] = true
    visited[node] = true
    _.each(g.predecessors(node), visit)
    delete stack[node]
    results.push(node)
  }
}

_.each(g.sinks(), visit)

if (_.size(visited) !== g.nodeCount()) {
  throw new CycleException()
}

return results

}

function CycleException () {} CycleException.prototype = new Error() // must be an instance of Error to pass testing

/***/ }),

/***/ “./node_modules/graphlibrary/lib/data/priority-queue.js”: /*!**************************************************************!*\

!*** ./node_modules/graphlibrary/lib/data/priority-queue.js ***!
\**************************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

const _ = webpack_require(/*! ../lodash */ “./node_modules/graphlibrary/lib/lodash.js”)

module.exports = PriorityQueue

/**

* A min-priority queue data structure. This algorithm is derived from Cormen,
* et al., "Introduction to Algorithms". The basic idea of a min-priority
* queue is that you can efficiently (in O(1) time) get the smallest key in
* the queue. Adding and removing elements takes O(log n) time. A key can
* have its priority decreased in O(log n) time.
*/

function PriorityQueue () {

this._arr = []
this._keyIndices = {}

}

/**

* Returns the number of elements in the queue. Takes `O(1)` time.
*/

PriorityQueue.prototype.size = function () {

return this._arr.length

}

/**

* Returns the keys that are in the queue. Takes `O(n)` time.
*/

PriorityQueue.prototype.keys = function () {

return this._arr.map(function (x) { return x.key })

}

/**

* Returns `true` if **key** is in the queue and `false` if not.
*/

PriorityQueue.prototype.has = function (key) {

return _.has(this._keyIndices, key)

}

/**

* Returns the priority for **key**. If **key** is not present in the queue
* then this function returns `undefined`. Takes `O(1)` time.
*
* @param {Object} key
*/

PriorityQueue.prototype.priority = function (key) {

var index = this._keyIndices[key]
if (index !== undefined) {
  return this._arr[index].priority
}

}

/**

* Returns the key for the minimum element in this queue. If the queue is
* empty this function throws an Error. Takes `O(1)` time.
*/

PriorityQueue.prototype.min = function () {

if (this.size() === 0) {
  throw new Error('Queue underflow')
}
return this._arr[0].key

}

/**

* Inserts a new key into the priority queue. If the key already exists in
* the queue this function returns `false`; otherwise it will return `true`.
* Takes `O(n)` time.
*
* @param {Object} key the key to add
* @param {Number} priority the initial priority for the key
*/

PriorityQueue.prototype.add = function (key, priority) {

var keyIndices = this._keyIndices
key = String(key)
if (!_.has(keyIndices, key)) {
  var arr = this._arr
  var index = arr.length
  keyIndices[key] = index
  arr.push({key: key, priority: priority})
  this._decrease(index)
  return true
}
return false

}

/**

* Removes and returns the smallest key in the queue. Takes `O(log n)` time.
*/

PriorityQueue.prototype.removeMin = function () {

this._swap(0, this._arr.length - 1)
var min = this._arr.pop()
delete this._keyIndices[min.key]
this._heapify(0)
return min.key

}

/**

* Decreases the priority for **key** to **priority**. If the new priority is
* greater than the previous priority, this function will throw an Error.
*
* @param {Object} key the key for which to raise priority
* @param {Number} priority the new priority for the key
*/

PriorityQueue.prototype.decrease = function (key, priority) {

var index = this._keyIndices[key]
if (priority > this._arr[index].priority) {
  throw new Error('New priority is greater than current priority. ' +
      'Key: ' + key + ' Old: ' + this._arr[index].priority + ' New: ' + priority)
}
this._arr[index].priority = priority
this._decrease(index)

}

PriorityQueue.prototype._heapify = function (i) {

const arr = this._arr
const l = 2 * i
const r = l + 1
let largest = i
if (l < arr.length) {
  largest = arr[l].priority < arr[largest].priority ? l : largest
  if (r < arr.length) {
    largest = arr[r].priority < arr[largest].priority ? r : largest
  }
  if (largest !== i) {
    this._swap(i, largest)
    this._heapify(largest)
  }
}

}

PriorityQueue.prototype._decrease = function (index) {

var arr = this._arr
var priority = arr[index].priority
var parent
while (index !== 0) {
  parent = index >> 1
  if (arr[parent].priority < priority) {
    break
  }
  this._swap(index, parent)
  index = parent
}

}

PriorityQueue.prototype._swap = function (i, j) {

var arr = this._arr
var keyIndices = this._keyIndices
var origArrI = arr[i]
var origArrJ = arr[j]
arr[i] = origArrJ
arr[j] = origArrI
keyIndices[origArrJ.key] = i
keyIndices[origArrI.key] = j

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/graph.js”: /*!************************************************!*\

!*** ./node_modules/graphlibrary/lib/graph.js ***!
\************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

const _ = webpack_require(/*! ./lodash */ “./node_modules/graphlibrary/lib/lodash.js”)

module.exports = Graph

const DEFAULT_EDGE_NAME = 'x00' const GRAPH_NODE = 'x00' const EDGE_KEY_DELIM = 'x01'

// Implementation notes: // // * Node id query functions should return string ids for the nodes // * Edge id query functions should return an “edgeObj”, edge object, that is // composed of enough information to uniquely identify an edge: {v, w, name}. // * Internally we use an “edgeId”, a stringified form of the edgeObj, to // reference edges. This is because we need a performant way to look these // edges up and, object properties, which have string keys, are the closest // we're going to get to a performant hashtable in JavaScript.

function Graph (opts) {

this._isDirected = _.has(opts, 'directed') ? opts.directed : true
this._isMultigraph = _.has(opts, 'multigraph') ? opts.multigraph : false
this._isCompound = _.has(opts, 'compound') ? opts.compound : false

// Label for the graph itself
this._label = undefined

// Defaults to be set when creating a new node
this._defaultNodeLabelFn = _.constant(undefined)

// Defaults to be set when creating a new edge
this._defaultEdgeLabelFn = _.constant(undefined)

// v -> label
this._nodes = {}

if (this._isCompound) {
  // v -> parent
  this._parent = {}

  // v -> children
  this._children = {}
  this._children[GRAPH_NODE] = {}
}

// v -> edgeObj
this._in = {}

// u -> v -> Number
this._preds = {}

// v -> edgeObj
this._out = {}

// v -> w -> Number
this._sucs = {}

// e -> edgeObj
this._edgeObjs = {}

// e -> label
this._edgeLabels = {}

}

/* Number of nodes in the graph. Should only be changed by the implementation. */ Graph.prototype._nodeCount = 0

/* Number of edges in the graph. Should only be changed by the implementation. */ Graph.prototype._edgeCount = 0

/* === Graph functions ========= */

Graph.prototype.isDirected = function () {

return this._isDirected

}

Graph.prototype.isMultigraph = function () {

return this._isMultigraph

}

Graph.prototype.isCompound = function () {

return this._isCompound

}

Graph.prototype.setGraph = function (label) {

this._label = label
return this

}

Graph.prototype.graph = function () {

return this._label

}

/* === Node functions ========== */

Graph.prototype.setDefaultNodeLabel = function (newDefault) {

if (!_.isFunction(newDefault)) {
  newDefault = _.constant(newDefault)
}
this._defaultNodeLabelFn = newDefault
return this

}

Graph.prototype.nodeCount = function () {

return this._nodeCount

}

Graph.prototype.nodes = function () {

return _.keys(this._nodes)

}

Graph.prototype.sources = function () {

var self = this
return _.filter(this.nodes(), function (v) {
  return _.isEmpty(self._in[v])
})

}

Graph.prototype.sinks = function () {

var self = this
return _.filter(this.nodes(), function (v) {
  return _.isEmpty(self._out[v])
})

}

Graph.prototype.setNodes = function (vs, value) {

var args = arguments
var self = this
_.each(vs, function (v) {
  if (args.length > 1) {
    self.setNode(v, value)
  } else {
    self.setNode(v)
  }
})
return this

}

Graph.prototype.setNode = function (v, value) {

if (_.has(this._nodes, v)) {
  if (arguments.length > 1) {
    this._nodes[v] = value
  }
  return this
}

this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v)
if (this._isCompound) {
  this._parent[v] = GRAPH_NODE
  this._children[v] = {}
  this._children[GRAPH_NODE][v] = true
}
this._in[v] = {}
this._preds[v] = {}
this._out[v] = {}
this._sucs[v] = {}
++this._nodeCount
return this

}

Graph.prototype.node = function (v) {

return this._nodes[v]

}

Graph.prototype.hasNode = function (v) {

return _.has(this._nodes, v)

}

Graph.prototype.removeNode = function (v) {

var self = this
if (_.has(this._nodes, v)) {
  var removeEdge = function (e) { self.removeEdge(self._edgeObjs[e]) }
  delete this._nodes[v]
  if (this._isCompound) {
    this._removeFromParentsChildList(v)
    delete this._parent[v]
    _.each(this.children(v), function (child) {
      self.setParent(child)
    })
    delete this._children[v]
  }
  _.each(_.keys(this._in[v]), removeEdge)
  delete this._in[v]
  delete this._preds[v]
  _.each(_.keys(this._out[v]), removeEdge)
  delete this._out[v]
  delete this._sucs[v]
  --this._nodeCount
}
return this

}

Graph.prototype.setParent = function (v, parent) {

if (!this._isCompound) {
  throw new Error('Cannot set parent in a non-compound graph')
}

if (_.isUndefined(parent)) {
  parent = GRAPH_NODE
} else {
  // Coerce parent to string
  parent += ''
  for (var ancestor = parent;
    !_.isUndefined(ancestor);
    ancestor = this.parent(ancestor)) {
    if (ancestor === v) {
      throw new Error('Setting ' + parent + ' as parent of ' + v +
                      ' would create a cycle')
    }
  }

  this.setNode(parent)
}

this.setNode(v)
this._removeFromParentsChildList(v)
this._parent[v] = parent
this._children[parent][v] = true
return this

}

Graph.prototype._removeFromParentsChildList = function (v) {

delete this._children[this._parent[v]][v]

}

Graph.prototype.parent = function (v) {

if (this._isCompound) {
  var parent = this._parent[v]
  if (parent !== GRAPH_NODE) {
    return parent
  }
}

}

Graph.prototype.children = function (v) {

if (_.isUndefined(v)) {
  v = GRAPH_NODE
}

if (this._isCompound) {
  var children = this._children[v]
  if (children) {
    return _.keys(children)
  }
} else if (v === GRAPH_NODE) {
  return this.nodes()
} else if (this.hasNode(v)) {
  return []
}

}

Graph.prototype.predecessors = function (v) {

var predsV = this._preds[v]
if (predsV) {
  return _.keys(predsV)
}

}

Graph.prototype.successors = function (v) {

var sucsV = this._sucs[v]
if (sucsV) {
  return _.keys(sucsV)
}

}

Graph.prototype.neighbors = function (v) {

var preds = this.predecessors(v)
if (preds) {
  return _.union(preds, this.successors(v))
}

}

Graph.prototype.isLeaf = function (v) {

var neighbors
if (this.isDirected()) {
  neighbors = this.successors(v)
} else {
  neighbors = this.neighbors(v)
}
return neighbors.length === 0

}

Graph.prototype.filterNodes = function (filter) {

var copy = new this.constructor({
  directed: this._isDirected,
  multigraph: this._isMultigraph,
  compound: this._isCompound
})

copy.setGraph(this.graph())

var self = this
_.each(this._nodes, function (value, v) {
  if (filter(v)) {
    copy.setNode(v, value)
  }
})

_.each(this._edgeObjs, function (e) {
  if (copy.hasNode(e.v) && copy.hasNode(e.w)) {
    copy.setEdge(e, self.edge(e))
  }
})

var parents = {}
function findParent (v) {
  var parent = self.parent(v)
  if (parent === undefined || copy.hasNode(parent)) {
    parents[v] = parent
    return parent
  } else if (parent in parents) {
    return parents[parent]
  } else {
    return findParent(parent)
  }
}

if (this._isCompound) {
  _.each(copy.nodes(), function (v) {
    copy.setParent(v, findParent(v))
  })
}

return copy

}

/* === Edge functions ========== */

Graph.prototype.setDefaultEdgeLabel = function (newDefault) {

if (!_.isFunction(newDefault)) {
  newDefault = _.constant(newDefault)
}
this._defaultEdgeLabelFn = newDefault
return this

}

Graph.prototype.edgeCount = function () {

return this._edgeCount

}

Graph.prototype.edges = function () {

return _.values(this._edgeObjs)

}

Graph.prototype.setPath = function (vs, value) {

const self = this
const args = arguments
_.reduce(vs, function (v, w) {
  if (args.length > 1) {
    self.setEdge(v, w, value)
  } else {
    self.setEdge(v, w)
  }
  return w
})
return this

}

/*

* setEdge(v, w, [value, [name]])
* setEdge({ v, w, [name] }, [value])
*/

Graph.prototype.setEdge = function () {

let v, w, name, value
let valueSpecified = false
const arg0 = arguments[0]

if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) {
  v = arg0.v
  w = arg0.w
  name = arg0.name
  if (arguments.length === 2) {
    value = arguments[1]
    valueSpecified = true
  }
} else {
  v = arg0
  w = arguments[1]
  name = arguments[3]
  if (arguments.length > 2) {
    value = arguments[2]
    valueSpecified = true
  }
}

v = '' + v
w = '' + w
if (!_.isUndefined(name)) {
  name = '' + name
}

var e = edgeArgsToId(this._isDirected, v, w, name)
if (_.has(this._edgeLabels, e)) {
  if (valueSpecified) {
    this._edgeLabels[e] = value
  }
  return this
}

if (!_.isUndefined(name) && !this._isMultigraph) {
  throw new Error('Cannot set a named edge when isMultigraph = false')
}

// It didn't exist, so we need to create it.
// First ensure the nodes exist.
this.setNode(v)
this.setNode(w)

this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name)

var edgeObj = edgeArgsToObj(this._isDirected, v, w, name)
// Ensure we add undirected edges in a consistent way.
v = edgeObj.v
w = edgeObj.w

Object.freeze(edgeObj)
this._edgeObjs[e] = edgeObj
incrementOrInitEntry(this._preds[w], v)
incrementOrInitEntry(this._sucs[v], w)
this._in[w][e] = edgeObj
this._out[v][e] = edgeObj
this._edgeCount++
return this

}

Graph.prototype.edge = function (v, w, name) {

var e = (arguments.length === 1
  ? edgeObjToId(this._isDirected, arguments[0])
  : edgeArgsToId(this._isDirected, v, w, name))
return this._edgeLabels[e]

}

Graph.prototype.hasEdge = function (v, w, name) {

var e = (arguments.length === 1
  ? edgeObjToId(this._isDirected, arguments[0])
  : edgeArgsToId(this._isDirected, v, w, name))
return _.has(this._edgeLabels, e)

}

Graph.prototype.removeEdge = function (v, w, name) {

const e = (arguments.length === 1
  ? edgeObjToId(this._isDirected, arguments[0])
  : edgeArgsToId(this._isDirected, v, w, name))
const edge = this._edgeObjs[e]
if (edge) {
  v = edge.v
  w = edge.w
  delete this._edgeLabels[e]
  delete this._edgeObjs[e]
  decrementOrRemoveEntry(this._preds[w], v)
  decrementOrRemoveEntry(this._sucs[v], w)
  delete this._in[w][e]
  delete this._out[v][e]
  this._edgeCount--
}
return this

}

Graph.prototype.inEdges = function (v, u) {

var inV = this._in[v]
if (inV) {
  var edges = _.values(inV)
  if (!u) {
    return edges
  }
  return _.filter(edges, function (edge) { return edge.v === u })
}

}

Graph.prototype.outEdges = function (v, w) {

var outV = this._out[v]
if (outV) {
  var edges = _.values(outV)
  if (!w) {
    return edges
  }
  return _.filter(edges, function (edge) { return edge.w === w })
}

}

Graph.prototype.nodeEdges = function (v, w) {

var inEdges = this.inEdges(v, w)
if (inEdges) {
  return inEdges.concat(this.outEdges(v, w))
}

}

function incrementOrInitEntry (map, k) {

if (map[k]) {
  map[k]++
} else {
  map[k] = 1
}

}

function decrementOrRemoveEntry (map, k) {

if (!--map[k]) { delete map[k] }

}

function edgeArgsToId (isDirected, v_, w_, name) {

var v = '' + v_
var w = '' + w_
if (!isDirected && v > w) {
  var tmp = v
  v = w
  w = tmp
}
return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM +
           (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name)

}

function edgeArgsToObj (isDirected, v_, w_, name) {

var v = '' + v_
var w = '' + w_
if (!isDirected && v > w) {
  var tmp = v
  v = w
  w = tmp
}
var edgeObj = { v: v, w: w }
if (name) {
  edgeObj.name = name
}
return edgeObj

}

function edgeObjToId (isDirected, edgeObj) {

return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name)

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/json.js”: /*!***********************************************!*\

!*** ./node_modules/graphlibrary/lib/json.js ***!
\***********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

const _ = webpack_require(/*! ./lodash */ “./node_modules/graphlibrary/lib/lodash.js”) const Graph = webpack_require(/*! ./graph */ “./node_modules/graphlibrary/lib/graph.js”)

module.exports = {

write: write,
read: read

}

function write (g) {

var json = {
  options: {
    directed: g.isDirected(),
    multigraph: g.isMultigraph(),
    compound: g.isCompound()
  },
  nodes: writeNodes(g),
  edges: writeEdges(g)
}
if (!_.isUndefined(g.graph())) {
  json.value = _.clone(g.graph())
}
return json

}

function writeNodes (g) {

return _.map(g.nodes(), function (v) {
  const nodeValue = g.node(v)
  const parent = g.parent(v)
  const node = { v: v }
  if (!_.isUndefined(nodeValue)) {
    node.value = nodeValue
  }
  if (!_.isUndefined(parent)) {
    node.parent = parent
  }
  return node
})

}

function writeEdges (g) {

return _.map(g.edges(), function (e) {
  const edgeValue = g.edge(e)
  const edge = { v: e.v, w: e.w }
  if (!_.isUndefined(e.name)) {
    edge.name = e.name
  }
  if (!_.isUndefined(edgeValue)) {
    edge.value = edgeValue
  }
  return edge
})

}

function read (json) {

var g = new Graph(json.options).setGraph(json.value)
_.each(json.nodes, function (entry) {
  g.setNode(entry.v, entry.value)
  if (entry.parent) {
    g.setParent(entry.v, entry.parent)
  }
})
_.each(json.edges, function (entry) {
  g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value)
})
return g

}

/***/ }),

/***/ “./node_modules/graphlibrary/lib/lodash.js”: /*!*************************************************!*\

!*** ./node_modules/graphlibrary/lib/lodash.js ***!
\*************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

/* global window */

var lodash

if (true) {

try {
  lodash = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js")
} catch (e) {}

}

if (!lodash) {

lodash = window._

}

module.exports = lodash

/***/ }),

/***/ “./node_modules/he/he.js”: /*!*******************************!*\

!*** ./node_modules/he/he.js ***!
\*******************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

/* WEBPACK VAR INJECTION */(function(module, global) {/*! mths.be/he v1.1.1 by @mathias | MIT license */ ;(function(root) {

// Detect free variables `exports`.
var freeExports = typeof exports == 'object' && exports;

// Detect free variable `module`.
var freeModule = typeof module == 'object' && module &&
        module.exports == freeExports && module;

// Detect free variable `global`, from Node.js or Browserified code,
// and use it as `root`.
var freeGlobal = typeof global == 'object' && global;
if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
        root = freeGlobal;
}

/*--------------------------------------------------------------------------*/

// All astral symbols.
var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
// All ASCII symbols (not just printable ASCII) except those listed in the
// first column of the overrides table.
// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides
var regexAsciiWhitelist = /[\x01-\x7F]/g;
// All BMP symbols that are not ASCII newlines, printable ASCII symbols, or
// code points listed in the first column of the overrides table on
// https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides.
var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g;

var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g;
var encodeMap = {'\xAD':'shy','\u200C':'zwnj','\u200D':'zwj','\u200E':'lrm','\u2063':'ic','\u2062':'it','\u2061':'af','\u200F':'rlm','\u200B':'ZeroWidthSpace','\u2060':'NoBreak','\u0311':'DownBreve','\u20DB':'tdot','\u20DC':'DotDot','\t':'Tab','\n':'NewLine','\u2008':'puncsp','\u205F':'MediumSpace','\u2009':'thinsp','\u200A':'hairsp','\u2004':'emsp13','\u2002':'ensp','\u2005':'emsp14','\u2003':'emsp','\u2007':'numsp','\xA0':'nbsp','\u205F\u200A':'ThickSpace','\u203E':'oline','_':'lowbar','\u2010':'dash','\u2013':'ndash','\u2014':'mdash','\u2015':'horbar',',':'comma',';':'semi','\u204F':'bsemi',':':'colon','\u2A74':'Colone','!':'excl','\xA1':'iexcl','?':'quest','\xBF':'iquest','.':'period','\u2025':'nldr','\u2026':'mldr','\xB7':'middot','\'':'apos','\u2018':'lsquo','\u2019':'rsquo','\u201A':'sbquo','\u2039':'lsaquo','\u203A':'rsaquo','"':'quot','\u201C':'ldquo','\u201D':'rdquo','\u201E':'bdquo','\xAB':'laquo','\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\u2308':'lceil','\u2309':'rceil','\u230A':'lfloor','\u230B':'rfloor','\u2985':'lopar','\u2986':'ropar','\u298B':'lbrke','\u298C':'rbrke','\u298D':'lbrkslu','\u298E':'rbrksld','\u298F':'lbrksld','\u2990':'rbrkslu','\u2991':'langd','\u2992':'rangd','\u2993':'lparlt','\u2994':'rpargt','\u2995':'gtlPar','\u2996':'ltrPar','\u27E6':'lobrk','\u27E7':'robrk','\u27E8':'lang','\u27E9':'rang','\u27EA':'Lang','\u27EB':'Rang','\u27EC':'loang','\u27ED':'roang','\u2772':'lbbrk','\u2773':'rbbrk','\u2016':'Vert','\xA7':'sect','\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\u2030':'permil','\u2031':'pertenk','\u2020':'dagger','\u2021':'Dagger','\u2022':'bull','\u2043':'hybull','\u2032':'prime','\u2033':'Prime','\u2034':'tprime','\u2057':'qprime','\u2035':'bprime','\u2041':'caret','`':'grave','\xB4':'acute','\u02DC':'tilde','^':'Hat','\xAF':'macr','\u02D8':'breve','\u02D9':'dot','\xA8':'die','\u02DA':'ring','\u02DD':'dblac','\xB8':'cedil','\u02DB':'ogon','\u02C6':'circ','\u02C7':'caron','\xB0':'deg','\xA9':'copy','\xAE':'reg','\u2117':'copysr','\u2118':'wp','\u211E':'rx','\u2127':'mho','\u2129':'iiota','\u2190':'larr','\u219A':'nlarr','\u2192':'rarr','\u219B':'nrarr','\u2191':'uarr','\u2193':'darr','\u2194':'harr','\u21AE':'nharr','\u2195':'varr','\u2196':'nwarr','\u2197':'nearr','\u2198':'searr','\u2199':'swarr','\u219D':'rarrw','\u219D\u0338':'nrarrw','\u219E':'Larr','\u219F':'Uarr','\u21A0':'Rarr','\u21A1':'Darr','\u21A2':'larrtl','\u21A3':'rarrtl','\u21A4':'mapstoleft','\u21A5':'mapstoup','\u21A6':'map','\u21A7':'mapstodown','\u21A9':'larrhk','\u21AA':'rarrhk','\u21AB':'larrlp','\u21AC':'rarrlp','\u21AD':'harrw','\u21B0':'lsh','\u21B1':'rsh','\u21B2':'ldsh','\u21B3':'rdsh','\u21B5':'crarr','\u21B6':'cularr','\u21B7':'curarr','\u21BA':'olarr','\u21BB':'orarr','\u21BC':'lharu','\u21BD':'lhard','\u21BE':'uharr','\u21BF':'uharl','\u21C0':'rharu','\u21C1':'rhard','\u21C2':'dharr','\u21C3':'dharl','\u21C4':'rlarr','\u21C5':'udarr','\u21C6':'lrarr','\u21C7':'llarr','\u21C8':'uuarr','\u21C9':'rrarr','\u21CA':'ddarr','\u21CB':'lrhar','\u21CC':'rlhar','\u21D0':'lArr','\u21CD':'nlArr','\u21D1':'uArr','\u21D2':'rArr','\u21CF':'nrArr','\u21D3':'dArr','\u21D4':'iff','\u21CE':'nhArr','\u21D5':'vArr','\u21D6':'nwArr','\u21D7':'neArr','\u21D8':'seArr','\u21D9':'swArr','\u21DA':'lAarr','\u21DB':'rAarr','\u21DD':'zigrarr','\u21E4':'larrb','\u21E5':'rarrb','\u21F5':'duarr','\u21FD':'loarr','\u21FE':'roarr','\u21FF':'hoarr','\u2200':'forall','\u2201':'comp','\u2202':'part','\u2202\u0338':'npart','\u2203':'exist','\u2204':'nexist','\u2205':'empty','\u2207':'Del','\u2208':'in','\u2209':'notin','\u220B':'ni','\u220C':'notni','\u03F6':'bepsi','\u220F':'prod','\u2210':'coprod','\u2211':'sum','+':'plus','\xB1':'pm','\xF7':'div','\xD7':'times','<':'lt','\u226E':'nlt','<\u20D2':'nvlt','=':'equals','\u2260':'ne','=\u20E5':'bne','\u2A75':'Equal','>':'gt','\u226F':'ngt','>\u20D2':'nvgt','\xAC':'not','|':'vert','\xA6':'brvbar','\u2212':'minus','\u2213':'mp','\u2214':'plusdo','\u2044':'frasl','\u2216':'setmn','\u2217':'lowast','\u2218':'compfn','\u221A':'Sqrt','\u221D':'prop','\u221E':'infin','\u221F':'angrt','\u2220':'ang','\u2220\u20D2':'nang','\u2221':'angmsd','\u2222':'angsph','\u2223':'mid','\u2224':'nmid','\u2225':'par','\u2226':'npar','\u2227':'and','\u2228':'or','\u2229':'cap','\u2229\uFE00':'caps','\u222A':'cup','\u222A\uFE00':'cups','\u222B':'int','\u222C':'Int','\u222D':'tint','\u2A0C':'qint','\u222E':'oint','\u222F':'Conint','\u2230':'Cconint','\u2231':'cwint','\u2232':'cwconint','\u2233':'awconint','\u2234':'there4','\u2235':'becaus','\u2236':'ratio','\u2237':'Colon','\u2238':'minusd','\u223A':'mDDot','\u223B':'homtht','\u223C':'sim','\u2241':'nsim','\u223C\u20D2':'nvsim','\u223D':'bsim','\u223D\u0331':'race','\u223E':'ac','\u223E\u0333':'acE','\u223F':'acd','\u2240':'wr','\u2242':'esim','\u2242\u0338':'nesim','\u2243':'sime','\u2244':'nsime','\u2245':'cong','\u2247':'ncong','\u2246':'simne','\u2248':'ap','\u2249':'nap','\u224A':'ape','\u224B':'apid','\u224B\u0338':'napid','\u224C':'bcong','\u224D':'CupCap','\u226D':'NotCupCap','\u224D\u20D2':'nvap','\u224E':'bump','\u224E\u0338':'nbump','\u224F':'bumpe','\u224F\u0338':'nbumpe','\u2250':'doteq','\u2250\u0338':'nedot','\u2251':'eDot','\u2252':'efDot','\u2253':'erDot','\u2254':'colone','\u2255':'ecolon','\u2256':'ecir','\u2257':'cire','\u2259':'wedgeq','\u225A':'veeeq','\u225C':'trie','\u225F':'equest','\u2261':'equiv','\u2262':'nequiv','\u2261\u20E5':'bnequiv','\u2264':'le','\u2270':'nle','\u2264\u20D2':'nvle','\u2265':'ge','\u2271':'nge','\u2265\u20D2':'nvge','\u2266':'lE','\u2266\u0338':'nlE','\u2267':'gE','\u2267\u0338':'ngE','\u2268\uFE00':'lvnE','\u2268':'lnE','\u2269':'gnE','\u2269\uFE00':'gvnE','\u226A':'ll','\u226A\u0338':'nLtv','\u226A\u20D2':'nLt','\u226B':'gg','\u226B\u0338':'nGtv','\u226B\u20D2':'nGt','\u226C':'twixt','\u2272':'lsim','\u2274':'nlsim','\u2273':'gsim','\u2275':'ngsim','\u2276':'lg','\u2278':'ntlg','\u2277':'gl','\u2279':'ntgl','\u227A':'pr','\u2280':'npr','\u227B':'sc','\u2281':'nsc','\u227C':'prcue','\u22E0':'nprcue','\u227D':'sccue','\u22E1':'nsccue','\u227E':'prsim','\u227F':'scsim','\u227F\u0338':'NotSucceedsTilde','\u2282':'sub','\u2284':'nsub','\u2282\u20D2':'vnsub','\u2283':'sup','\u2285':'nsup','\u2283\u20D2':'vnsup','\u2286':'sube','\u2288':'nsube','\u2287':'supe','\u2289':'nsupe','\u228A\uFE00':'vsubne','\u228A':'subne','\u228B\uFE00':'vsupne','\u228B':'supne','\u228D':'cupdot','\u228E':'uplus','\u228F':'sqsub','\u228F\u0338':'NotSquareSubset','\u2290':'sqsup','\u2290\u0338':'NotSquareSuperset','\u2291':'sqsube','\u22E2':'nsqsube','\u2292':'sqsupe','\u22E3':'nsqsupe','\u2293':'sqcap','\u2293\uFE00':'sqcaps','\u2294':'sqcup','\u2294\uFE00':'sqcups','\u2295':'oplus','\u2296':'ominus','\u2297':'otimes','\u2298':'osol','\u2299':'odot','\u229A':'ocir','\u229B':'oast','\u229D':'odash','\u229E':'plusb','\u229F':'minusb','\u22A0':'timesb','\u22A1':'sdotb','\u22A2':'vdash','\u22AC':'nvdash','\u22A3':'dashv','\u22A4':'top','\u22A5':'bot','\u22A7':'models','\u22A8':'vDash','\u22AD':'nvDash','\u22A9':'Vdash','\u22AE':'nVdash','\u22AA':'Vvdash','\u22AB':'VDash','\u22AF':'nVDash','\u22B0':'prurel','\u22B2':'vltri','\u22EA':'nltri','\u22B3':'vrtri','\u22EB':'nrtri','\u22B4':'ltrie','\u22EC':'nltrie','\u22B4\u20D2':'nvltrie','\u22B5':'rtrie','\u22ED':'nrtrie','\u22B5\u20D2':'nvrtrie','\u22B6':'origof','\u22B7':'imof','\u22B8':'mumap','\u22B9':'hercon','\u22BA':'intcal','\u22BB':'veebar','\u22BD':'barvee','\u22BE':'angrtvb','\u22BF':'lrtri','\u22C0':'Wedge','\u22C1':'Vee','\u22C2':'xcap','\u22C3':'xcup','\u22C4':'diam','\u22C5':'sdot','\u22C6':'Star','\u22C7':'divonx','\u22C8':'bowtie','\u22C9':'ltimes','\u22CA':'rtimes','\u22CB':'lthree','\u22CC':'rthree','\u22CD':'bsime','\u22CE':'cuvee','\u22CF':'cuwed','\u22D0':'Sub','\u22D1':'Sup','\u22D2':'Cap','\u22D3':'Cup','\u22D4':'fork','\u22D5':'epar','\u22D6':'ltdot','\u22D7':'gtdot','\u22D8':'Ll','\u22D8\u0338':'nLl','\u22D9':'Gg','\u22D9\u0338':'nGg','\u22DA\uFE00':'lesg','\u22DA':'leg','\u22DB':'gel','\u22DB\uFE00':'gesl','\u22DE':'cuepr','\u22DF':'cuesc','\u22E6':'lnsim','\u22E7':'gnsim','\u22E8':'prnsim','\u22E9':'scnsim','\u22EE':'vellip','\u22EF':'ctdot','\u22F0':'utdot','\u22F1':'dtdot','\u22F2':'disin','\u22F3':'isinsv','\u22F4':'isins','\u22F5':'isindot','\u22F5\u0338':'notindot','\u22F6':'notinvc','\u22F7':'notinvb','\u22F9':'isinE','\u22F9\u0338':'notinE','\u22FA':'nisd','\u22FB':'xnis','\u22FC':'nis','\u22FD':'notnivc','\u22FE':'notnivb','\u2305':'barwed','\u2306':'Barwed','\u230C':'drcrop','\u230D':'dlcrop','\u230E':'urcrop','\u230F':'ulcrop','\u2310':'bnot','\u2312':'profline','\u2313':'profsurf','\u2315':'telrec','\u2316':'target','\u231C':'ulcorn','\u231D':'urcorn','\u231E':'dlcorn','\u231F':'drcorn','\u2322':'frown','\u2323':'smile','\u232D':'cylcty','\u232E':'profalar','\u2336':'topbot','\u233D':'ovbar','\u233F':'solbar','\u237C':'angzarr','\u23B0':'lmoust','\u23B1':'rmoust','\u23B4':'tbrk','\u23B5':'bbrk','\u23B6':'bbrktbrk','\u23DC':'OverParenthesis','\u23DD':'UnderParenthesis','\u23DE':'OverBrace','\u23DF':'UnderBrace','\u23E2':'trpezium','\u23E7':'elinters','\u2423':'blank','\u2500':'boxh','\u2502':'boxv','\u250C':'boxdr','\u2510':'boxdl','\u2514':'boxur','\u2518':'boxul','\u251C':'boxvr','\u2524':'boxvl','\u252C':'boxhd','\u2534':'boxhu','\u253C':'boxvh','\u2550':'boxH','\u2551':'boxV','\u2552':'boxdR','\u2553':'boxDr','\u2554':'boxDR','\u2555':'boxdL','\u2556':'boxDl','\u2557':'boxDL','\u2558':'boxuR','\u2559':'boxUr','\u255A':'boxUR','\u255B':'boxuL','\u255C':'boxUl','\u255D':'boxUL','\u255E':'boxvR','\u255F':'boxVr','\u2560':'boxVR','\u2561':'boxvL','\u2562':'boxVl','\u2563':'boxVL','\u2564':'boxHd','\u2565':'boxhD','\u2566':'boxHD','\u2567':'boxHu','\u2568':'boxhU','\u2569':'boxHU','\u256A':'boxvH','\u256B':'boxVh','\u256C':'boxVH','\u2580':'uhblk','\u2584':'lhblk','\u2588':'block','\u2591':'blk14','\u2592':'blk12','\u2593':'blk34','\u25A1':'squ','\u25AA':'squf','\u25AB':'EmptyVerySmallSquare','\u25AD':'rect','\u25AE':'marker','\u25B1':'fltns','\u25B3':'xutri','\u25B4':'utrif','\u25B5':'utri','\u25B8':'rtrif','\u25B9':'rtri','\u25BD':'xdtri','\u25BE':'dtrif','\u25BF':'dtri','\u25C2':'ltrif','\u25C3':'ltri','\u25CA':'loz','\u25CB':'cir','\u25EC':'tridot','\u25EF':'xcirc','\u25F8':'ultri','\u25F9':'urtri','\u25FA':'lltri','\u25FB':'EmptySmallSquare','\u25FC':'FilledSmallSquare','\u2605':'starf','\u2606':'star','\u260E':'phone','\u2640':'female','\u2642':'male','\u2660':'spades','\u2663':'clubs','\u2665':'hearts','\u2666':'diams','\u266A':'sung','\u2713':'check','\u2717':'cross','\u2720':'malt','\u2736':'sext','\u2758':'VerticalSeparator','\u27C8':'bsolhsub','\u27C9':'suphsol','\u27F5':'xlarr','\u27F6':'xrarr','\u27F7':'xharr','\u27F8':'xlArr','\u27F9':'xrArr','\u27FA':'xhArr','\u27FC':'xmap','\u27FF':'dzigrarr','\u2902':'nvlArr','\u2903':'nvrArr','\u2904':'nvHarr','\u2905':'Map','\u290C':'lbarr','\u290D':'rbarr','\u290E':'lBarr','\u290F':'rBarr','\u2910':'RBarr','\u2911':'DDotrahd','\u2912':'UpArrowBar','\u2913':'DownArrowBar','\u2916':'Rarrtl','\u2919':'latail','\u291A':'ratail','\u291B':'lAtail','\u291C':'rAtail','\u291D':'larrfs','\u291E':'rarrfs','\u291F':'larrbfs','\u2920':'rarrbfs','\u2923':'nwarhk','\u2924':'nearhk','\u2925':'searhk','\u2926':'swarhk','\u2927':'nwnear','\u2928':'toea','\u2929':'tosa','\u292A':'swnwar','\u2933':'rarrc','\u2933\u0338':'nrarrc','\u2935':'cudarrr','\u2936':'ldca','\u2937':'rdca','\u2938':'cudarrl','\u2939':'larrpl','\u293C':'curarrm','\u293D':'cularrp','\u2945':'rarrpl','\u2948':'harrcir','\u2949':'Uarrocir','\u294A':'lurdshar','\u294B':'ldrushar','\u294E':'LeftRightVector','\u294F':'RightUpDownVector','\u2950':'DownLeftRightVector','\u2951':'LeftUpDownVector','\u2952':'LeftVectorBar','\u2953':'RightVectorBar','\u2954':'RightUpVectorBar','\u2955':'RightDownVectorBar','\u2956':'DownLeftVectorBar','\u2957':'DownRightVectorBar','\u2958':'LeftUpVectorBar','\u2959':'LeftDownVectorBar','\u295A':'LeftTeeVector','\u295B':'RightTeeVector','\u295C':'RightUpTeeVector','\u295D':'RightDownTeeVector','\u295E':'DownLeftTeeVector','\u295F':'DownRightTeeVector','\u2960':'LeftUpTeeVector','\u2961':'LeftDownTeeVector','\u2962':'lHar','\u2963':'uHar','\u2964':'rHar','\u2965':'dHar','\u2966':'luruhar','\u2967':'ldrdhar','\u2968':'ruluhar','\u2969':'rdldhar','\u296A':'lharul','\u296B':'llhard','\u296C':'rharul','\u296D':'lrhard','\u296E':'udhar','\u296F':'duhar','\u2970':'RoundImplies','\u2971':'erarr','\u2972':'simrarr','\u2973':'larrsim','\u2974':'rarrsim','\u2975':'rarrap','\u2976':'ltlarr','\u2978':'gtrarr','\u2979':'subrarr','\u297B':'suplarr','\u297C':'lfisht','\u297D':'rfisht','\u297E':'ufisht','\u297F':'dfisht','\u299A':'vzigzag','\u299C':'vangrt','\u299D':'angrtvbd','\u29A4':'ange','\u29A5':'range','\u29A6':'dwangle','\u29A7':'uwangle','\u29A8':'angmsdaa','\u29A9':'angmsdab','\u29AA':'angmsdac','\u29AB':'angmsdad','\u29AC':'angmsdae','\u29AD':'angmsdaf','\u29AE':'angmsdag','\u29AF':'angmsdah','\u29B0':'bemptyv','\u29B1':'demptyv','\u29B2':'cemptyv','\u29B3':'raemptyv','\u29B4':'laemptyv','\u29B5':'ohbar','\u29B6':'omid','\u29B7':'opar','\u29B9':'operp','\u29BB':'olcross','\u29BC':'odsold','\u29BE':'olcir','\u29BF':'ofcir','\u29C0':'olt','\u29C1':'ogt','\u29C2':'cirscir','\u29C3':'cirE','\u29C4':'solb','\u29C5':'bsolb','\u29C9':'boxbox','\u29CD':'trisb','\u29CE':'rtriltri','\u29CF':'LeftTriangleBar','\u29CF\u0338':'NotLeftTriangleBar','\u29D0':'RightTriangleBar','\u29D0\u0338':'NotRightTriangleBar','\u29DC':'iinfin','\u29DD':'infintie','\u29DE':'nvinfin','\u29E3':'eparsl','\u29E4':'smeparsl','\u29E5':'eqvparsl','\u29EB':'lozf','\u29F4':'RuleDelayed','\u29F6':'dsol','\u2A00':'xodot','\u2A01':'xoplus','\u2A02':'xotime','\u2A04':'xuplus','\u2A06':'xsqcup','\u2A0D':'fpartint','\u2A10':'cirfnint','\u2A11':'awint','\u2A12':'rppolint','\u2A13':'scpolint','\u2A14':'npolint','\u2A15':'pointint','\u2A16':'quatint','\u2A17':'intlarhk','\u2A22':'pluscir','\u2A23':'plusacir','\u2A24':'simplus','\u2A25':'plusdu','\u2A26':'plussim','\u2A27':'plustwo','\u2A29':'mcomma','\u2A2A':'minusdu','\u2A2D':'loplus','\u2A2E':'roplus','\u2A2F':'Cross','\u2A30':'timesd','\u2A31':'timesbar','\u2A33':'smashp','\u2A34':'lotimes','\u2A35':'rotimes','\u2A36':'otimesas','\u2A37':'Otimes','\u2A38':'odiv','\u2A39':'triplus','\u2A3A':'triminus','\u2A3B':'tritime','\u2A3C':'iprod','\u2A3F':'amalg','\u2A40':'capdot','\u2A42':'ncup','\u2A43':'ncap','\u2A44':'capand','\u2A45':'cupor','\u2A46':'cupcap','\u2A47':'capcup','\u2A48':'cupbrcap','\u2A49':'capbrcup','\u2A4A':'cupcup','\u2A4B':'capcap','\u2A4C':'ccups','\u2A4D':'ccaps','\u2A50':'ccupssm','\u2A53':'And','\u2A54':'Or','\u2A55':'andand','\u2A56':'oror','\u2A57':'orslope','\u2A58':'andslope','\u2A5A':'andv','\u2A5B':'orv','\u2A5C':'andd','\u2A5D':'ord','\u2A5F':'wedbar','\u2A66':'sdote','\u2A6A':'simdot','\u2A6D':'congdot','\u2A6D\u0338':'ncongdot','\u2A6E':'easter','\u2A6F':'apacir','\u2A70':'apE','\u2A70\u0338':'napE','\u2A71':'eplus','\u2A72':'pluse','\u2A73':'Esim','\u2A77':'eDDot','\u2A78':'equivDD','\u2A79':'ltcir','\u2A7A':'gtcir','\u2A7B':'ltquest','\u2A7C':'gtquest','\u2A7D':'les','\u2A7D\u0338':'nles','\u2A7E':'ges','\u2A7E\u0338':'nges','\u2A7F':'lesdot','\u2A80':'gesdot','\u2A81':'lesdoto','\u2A82':'gesdoto','\u2A83':'lesdotor','\u2A84':'gesdotol','\u2A85':'lap','\u2A86':'gap','\u2A87':'lne','\u2A88':'gne','\u2A89':'lnap','\u2A8A':'gnap','\u2A8B':'lEg','\u2A8C':'gEl','\u2A8D':'lsime','\u2A8E':'gsime','\u2A8F':'lsimg','\u2A90':'gsiml','\u2A91':'lgE','\u2A92':'glE','\u2A93':'lesges','\u2A94':'gesles','\u2A95':'els','\u2A96':'egs','\u2A97':'elsdot','\u2A98':'egsdot','\u2A99':'el','\u2A9A':'eg','\u2A9D':'siml','\u2A9E':'simg','\u2A9F':'simlE','\u2AA0':'simgE','\u2AA1':'LessLess','\u2AA1\u0338':'NotNestedLessLess','\u2AA2':'GreaterGreater','\u2AA2\u0338':'NotNestedGreaterGreater','\u2AA4':'glj','\u2AA5':'gla','\u2AA6':'ltcc','\u2AA7':'gtcc','\u2AA8':'lescc','\u2AA9':'gescc','\u2AAA':'smt','\u2AAB':'lat','\u2AAC':'smte','\u2AAC\uFE00':'smtes','\u2AAD':'late','\u2AAD\uFE00':'lates','\u2AAE':'bumpE','\u2AAF':'pre','\u2AAF\u0338':'npre','\u2AB0':'sce','\u2AB0\u0338':'nsce','\u2AB3':'prE','\u2AB4':'scE','\u2AB5':'prnE','\u2AB6':'scnE','\u2AB7':'prap','\u2AB8':'scap','\u2AB9':'prnap','\u2ABA':'scnap','\u2ABB':'Pr','\u2ABC':'Sc','\u2ABD':'subdot','\u2ABE':'supdot','\u2ABF':'subplus','\u2AC0':'supplus','\u2AC1':'submult','\u2AC2':'supmult','\u2AC3':'subedot','\u2AC4':'supedot','\u2AC5':'subE','\u2AC5\u0338':'nsubE','\u2AC6':'supE','\u2AC6\u0338':'nsupE','\u2AC7':'subsim','\u2AC8':'supsim','\u2ACB\uFE00':'vsubnE','\u2ACB':'subnE','\u2ACC\uFE00':'vsupnE','\u2ACC':'supnE','\u2ACF':'csub','\u2AD0':'csup','\u2AD1':'csube','\u2AD2':'csupe','\u2AD3':'subsup','\u2AD4':'supsub','\u2AD5':'subsub','\u2AD6':'supsup','\u2AD7':'suphsub','\u2AD8':'supdsub','\u2AD9':'forkv','\u2ADA':'topfork','\u2ADB':'mlcp','\u2AE4':'Dashv','\u2AE6':'Vdashl','\u2AE7':'Barv','\u2AE8':'vBar','\u2AE9':'vBarv','\u2AEB':'Vbar','\u2AEC':'Not','\u2AED':'bNot','\u2AEE':'rnmid','\u2AEF':'cirmid','\u2AF0':'midcir','\u2AF1':'topcir','\u2AF2':'nhpar','\u2AF3':'parsim','\u2AFD':'parsl','\u2AFD\u20E5':'nparsl','\u266D':'flat','\u266E':'natur','\u266F':'sharp','\xA4':'curren','\xA2':'cent','$':'dollar','\xA3':'pound','\xA5':'yen','\u20AC':'euro','\xB9':'sup1','\xBD':'half','\u2153':'frac13','\xBC':'frac14','\u2155':'frac15','\u2159':'frac16','\u215B':'frac18','\xB2':'sup2','\u2154':'frac23','\u2156':'frac25','\xB3':'sup3','\xBE':'frac34','\u2157':'frac35','\u215C':'frac38','\u2158':'frac45','\u215A':'frac56','\u215D':'frac58','\u215E':'frac78','\uD835\uDCB6':'ascr','\uD835\uDD52':'aopf','\uD835\uDD1E':'afr','\uD835\uDD38':'Aopf','\uD835\uDD04':'Afr','\uD835\uDC9C':'Ascr','\xAA':'ordf','\xE1':'aacute','\xC1':'Aacute','\xE0':'agrave','\xC0':'Agrave','\u0103':'abreve','\u0102':'Abreve','\xE2':'acirc','\xC2':'Acirc','\xE5':'aring','\xC5':'angst','\xE4':'auml','\xC4':'Auml','\xE3':'atilde','\xC3':'Atilde','\u0105':'aogon','\u0104':'Aogon','\u0101':'amacr','\u0100':'Amacr','\xE6':'aelig','\xC6':'AElig','\uD835\uDCB7':'bscr','\uD835\uDD53':'bopf','\uD835\uDD1F':'bfr','\uD835\uDD39':'Bopf','\u212C':'Bscr','\uD835\uDD05':'Bfr','\uD835\uDD20':'cfr','\uD835\uDCB8':'cscr','\uD835\uDD54':'copf','\u212D':'Cfr','\uD835\uDC9E':'Cscr','\u2102':'Copf','\u0107':'cacute','\u0106':'Cacute','\u0109':'ccirc','\u0108':'Ccirc','\u010D':'ccaron','\u010C':'Ccaron','\u010B':'cdot','\u010A':'Cdot','\xE7':'ccedil','\xC7':'Ccedil','\u2105':'incare','\uD835\uDD21':'dfr','\u2146':'dd','\uD835\uDD55':'dopf','\uD835\uDCB9':'dscr','\uD835\uDC9F':'Dscr','\uD835\uDD07':'Dfr','\u2145':'DD','\uD835\uDD3B':'Dopf','\u010F':'dcaron','\u010E':'Dcaron','\u0111':'dstrok','\u0110':'Dstrok','\xF0':'eth','\xD0':'ETH','\u2147':'ee','\u212F':'escr','\uD835\uDD22':'efr','\uD835\uDD56':'eopf','\u2130':'Escr','\uD835\uDD08':'Efr','\uD835\uDD3C':'Eopf','\xE9':'eacute','\xC9':'Eacute','\xE8':'egrave','\xC8':'Egrave','\xEA':'ecirc','\xCA':'Ecirc','\u011B':'ecaron','\u011A':'Ecaron','\xEB':'euml','\xCB':'Euml','\u0117':'edot','\u0116':'Edot','\u0119':'eogon','\u0118':'Eogon','\u0113':'emacr','\u0112':'Emacr','\uD835\uDD23':'ffr','\uD835\uDD57':'fopf','\uD835\uDCBB':'fscr','\uD835\uDD09':'Ffr','\uD835\uDD3D':'Fopf','\u2131':'Fscr','\uFB00':'fflig','\uFB03':'ffilig','\uFB04':'ffllig','\uFB01':'filig','fj':'fjlig','\uFB02':'fllig','\u0192':'fnof','\u210A':'gscr','\uD835\uDD58':'gopf','\uD835\uDD24':'gfr','\uD835\uDCA2':'Gscr','\uD835\uDD3E':'Gopf','\uD835\uDD0A':'Gfr','\u01F5':'gacute','\u011F':'gbreve','\u011E':'Gbreve','\u011D':'gcirc','\u011C':'Gcirc','\u0121':'gdot','\u0120':'Gdot','\u0122':'Gcedil','\uD835\uDD25':'hfr','\u210E':'planckh','\uD835\uDCBD':'hscr','\uD835\uDD59':'hopf','\u210B':'Hscr','\u210C':'Hfr','\u210D':'Hopf','\u0125':'hcirc','\u0124':'Hcirc','\u210F':'hbar','\u0127':'hstrok','\u0126':'Hstrok','\uD835\uDD5A':'iopf','\uD835\uDD26':'ifr','\uD835\uDCBE':'iscr','\u2148':'ii','\uD835\uDD40':'Iopf','\u2110':'Iscr','\u2111':'Im','\xED':'iacute','\xCD':'Iacute','\xEC':'igrave','\xCC':'Igrave','\xEE':'icirc','\xCE':'Icirc','\xEF':'iuml','\xCF':'Iuml','\u0129':'itilde','\u0128':'Itilde','\u0130':'Idot','\u012F':'iogon','\u012E':'Iogon','\u012B':'imacr','\u012A':'Imacr','\u0133':'ijlig','\u0132':'IJlig','\u0131':'imath','\uD835\uDCBF':'jscr','\uD835\uDD5B':'jopf','\uD835\uDD27':'jfr','\uD835\uDCA5':'Jscr','\uD835\uDD0D':'Jfr','\uD835\uDD41':'Jopf','\u0135':'jcirc','\u0134':'Jcirc','\u0237':'jmath','\uD835\uDD5C':'kopf','\uD835\uDCC0':'kscr','\uD835\uDD28':'kfr','\uD835\uDCA6':'Kscr','\uD835\uDD42':'Kopf','\uD835\uDD0E':'Kfr','\u0137':'kcedil','\u0136':'Kcedil','\uD835\uDD29':'lfr','\uD835\uDCC1':'lscr','\u2113':'ell','\uD835\uDD5D':'lopf','\u2112':'Lscr','\uD835\uDD0F':'Lfr','\uD835\uDD43':'Lopf','\u013A':'lacute','\u0139':'Lacute','\u013E':'lcaron','\u013D':'Lcaron','\u013C':'lcedil','\u013B':'Lcedil','\u0142':'lstrok','\u0141':'Lstrok','\u0140':'lmidot','\u013F':'Lmidot','\uD835\uDD2A':'mfr','\uD835\uDD5E':'mopf','\uD835\uDCC2':'mscr','\uD835\uDD10':'Mfr','\uD835\uDD44':'Mopf','\u2133':'Mscr','\uD835\uDD2B':'nfr','\uD835\uDD5F':'nopf','\uD835\uDCC3':'nscr','\u2115':'Nopf','\uD835\uDCA9':'Nscr','\uD835\uDD11':'Nfr','\u0144':'nacute','\u0143':'Nacute','\u0148':'ncaron','\u0147':'Ncaron','\xF1':'ntilde','\xD1':'Ntilde','\u0146':'ncedil','\u0145':'Ncedil','\u2116':'numero','\u014B':'eng','\u014A':'ENG','\uD835\uDD60':'oopf','\uD835\uDD2C':'ofr','\u2134':'oscr','\uD835\uDCAA':'Oscr','\uD835\uDD12':'Ofr','\uD835\uDD46':'Oopf','\xBA':'ordm','\xF3':'oacute','\xD3':'Oacute','\xF2':'ograve','\xD2':'Ograve','\xF4':'ocirc','\xD4':'Ocirc','\xF6':'ouml','\xD6':'Ouml','\u0151':'odblac','\u0150':'Odblac','\xF5':'otilde','\xD5':'Otilde','\xF8':'oslash','\xD8':'Oslash','\u014D':'omacr','\u014C':'Omacr','\u0153':'oelig','\u0152':'OElig','\uD835\uDD2D':'pfr','\uD835\uDCC5':'pscr','\uD835\uDD61':'popf','\u2119':'Popf','\uD835\uDD13':'Pfr','\uD835\uDCAB':'Pscr','\uD835\uDD62':'qopf','\uD835\uDD2E':'qfr','\uD835\uDCC6':'qscr','\uD835\uDCAC':'Qscr','\uD835\uDD14':'Qfr','\u211A':'Qopf','\u0138':'kgreen','\uD835\uDD2F':'rfr','\uD835\uDD63':'ropf','\uD835\uDCC7':'rscr','\u211B':'Rscr','\u211C':'Re','\u211D':'Ropf','\u0155':'racute','\u0154':'Racute','\u0159':'rcaron','\u0158':'Rcaron','\u0157':'rcedil','\u0156':'Rcedil','\uD835\uDD64':'sopf','\uD835\uDCC8':'sscr','\uD835\uDD30':'sfr','\uD835\uDD4A':'Sopf','\uD835\uDD16':'Sfr','\uD835\uDCAE':'Sscr','\u24C8':'oS','\u015B':'sacute','\u015A':'Sacute','\u015D':'scirc','\u015C':'Scirc','\u0161':'scaron','\u0160':'Scaron','\u015F':'scedil','\u015E':'Scedil','\xDF':'szlig','\uD835\uDD31':'tfr','\uD835\uDCC9':'tscr','\uD835\uDD65':'topf','\uD835\uDCAF':'Tscr','\uD835\uDD17':'Tfr','\uD835\uDD4B':'Topf','\u0165':'tcaron','\u0164':'Tcaron','\u0163':'tcedil','\u0162':'Tcedil','\u2122':'trade','\u0167':'tstrok','\u0166':'Tstrok','\uD835\uDCCA':'uscr','\uD835\uDD66':'uopf','\uD835\uDD32':'ufr','\uD835\uDD4C':'Uopf','\uD835\uDD18':'Ufr','\uD835\uDCB0':'Uscr','\xFA':'uacute','\xDA':'Uacute','\xF9':'ugrave','\xD9':'Ugrave','\u016D':'ubreve','\u016C':'Ubreve','\xFB':'ucirc','\xDB':'Ucirc','\u016F':'uring','\u016E':'Uring','\xFC':'uuml','\xDC':'Uuml','\u0171':'udblac','\u0170':'Udblac','\u0169':'utilde','\u0168':'Utilde','\u0173':'uogon','\u0172':'Uogon','\u016B':'umacr','\u016A':'Umacr','\uD835\uDD33':'vfr','\uD835\uDD67':'vopf','\uD835\uDCCB':'vscr','\uD835\uDD19':'Vfr','\uD835\uDD4D':'Vopf','\uD835\uDCB1':'Vscr','\uD835\uDD68':'wopf','\uD835\uDCCC':'wscr','\uD835\uDD34':'wfr','\uD835\uDCB2':'Wscr','\uD835\uDD4E':'Wopf','\uD835\uDD1A':'Wfr','\u0175':'wcirc','\u0174':'Wcirc','\uD835\uDD35':'xfr','\uD835\uDCCD':'xscr','\uD835\uDD69':'xopf','\uD835\uDD4F':'Xopf','\uD835\uDD1B':'Xfr','\uD835\uDCB3':'Xscr','\uD835\uDD36':'yfr','\uD835\uDCCE':'yscr','\uD835\uDD6A':'yopf','\uD835\uDCB4':'Yscr','\uD835\uDD1C':'Yfr','\uD835\uDD50':'Yopf','\xFD':'yacute','\xDD':'Yacute','\u0177':'ycirc','\u0176':'Ycirc','\xFF':'yuml','\u0178':'Yuml','\uD835\uDCCF':'zscr','\uD835\uDD37':'zfr','\uD835\uDD6B':'zopf','\u2128':'Zfr','\u2124':'Zopf','\uD835\uDCB5':'Zscr','\u017A':'zacute','\u0179':'Zacute','\u017E':'zcaron','\u017D':'Zcaron','\u017C':'zdot','\u017B':'Zdot','\u01B5':'imped','\xFE':'thorn','\xDE':'THORN','\u0149':'napos','\u03B1':'alpha','\u0391':'Alpha','\u03B2':'beta','\u0392':'Beta','\u03B3':'gamma','\u0393':'Gamma','\u03B4':'delta','\u0394':'Delta','\u03B5':'epsi','\u03F5':'epsiv','\u0395':'Epsilon','\u03DD':'gammad','\u03DC':'Gammad','\u03B6':'zeta','\u0396':'Zeta','\u03B7':'eta','\u0397':'Eta','\u03B8':'theta','\u03D1':'thetav','\u0398':'Theta','\u03B9':'iota','\u0399':'Iota','\u03BA':'kappa','\u03F0':'kappav','\u039A':'Kappa','\u03BB':'lambda','\u039B':'Lambda','\u03BC':'mu','\xB5':'micro','\u039C':'Mu','\u03BD':'nu','\u039D':'Nu','\u03BE':'xi','\u039E':'Xi','\u03BF':'omicron','\u039F':'Omicron','\u03C0':'pi','\u03D6':'piv','\u03A0':'Pi','\u03C1':'rho','\u03F1':'rhov','\u03A1':'Rho','\u03C3':'sigma','\u03A3':'Sigma','\u03C2':'sigmaf','\u03C4':'tau','\u03A4':'Tau','\u03C5':'upsi','\u03A5':'Upsilon','\u03D2':'Upsi','\u03C6':'phi','\u03D5':'phiv','\u03A6':'Phi','\u03C7':'chi','\u03A7':'Chi','\u03C8':'psi','\u03A8':'Psi','\u03C9':'omega','\u03A9':'ohm','\u0430':'acy','\u0410':'Acy','\u0431':'bcy','\u0411':'Bcy','\u0432':'vcy','\u0412':'Vcy','\u0433':'gcy','\u0413':'Gcy','\u0453':'gjcy','\u0403':'GJcy','\u0434':'dcy','\u0414':'Dcy','\u0452':'djcy','\u0402':'DJcy','\u0435':'iecy','\u0415':'IEcy','\u0451':'iocy','\u0401':'IOcy','\u0454':'jukcy','\u0404':'Jukcy','\u0436':'zhcy','\u0416':'ZHcy','\u0437':'zcy','\u0417':'Zcy','\u0455':'dscy','\u0405':'DScy','\u0438':'icy','\u0418':'Icy','\u0456':'iukcy','\u0406':'Iukcy','\u0457':'yicy','\u0407':'YIcy','\u0439':'jcy','\u0419':'Jcy','\u0458':'jsercy','\u0408':'Jsercy','\u043A':'kcy','\u041A':'Kcy','\u045C':'kjcy','\u040C':'KJcy','\u043B':'lcy','\u041B':'Lcy','\u0459':'ljcy','\u0409':'LJcy','\u043C':'mcy','\u041C':'Mcy','\u043D':'ncy','\u041D':'Ncy','\u045A':'njcy','\u040A':'NJcy','\u043E':'ocy','\u041E':'Ocy','\u043F':'pcy','\u041F':'Pcy','\u0440':'rcy','\u0420':'Rcy','\u0441':'scy','\u0421':'Scy','\u0442':'tcy','\u0422':'Tcy','\u045B':'tshcy','\u040B':'TSHcy','\u0443':'ucy','\u0423':'Ucy','\u045E':'ubrcy','\u040E':'Ubrcy','\u0444':'fcy','\u0424':'Fcy','\u0445':'khcy','\u0425':'KHcy','\u0446':'tscy','\u0426':'TScy','\u0447':'chcy','\u0427':'CHcy','\u045F':'dzcy','\u040F':'DZcy','\u0448':'shcy','\u0428':'SHcy','\u0449':'shchcy','\u0429':'SHCHcy','\u044A':'hardcy','\u042A':'HARDcy','\u044B':'ycy','\u042B':'Ycy','\u044C':'softcy','\u042C':'SOFTcy','\u044D':'ecy','\u042D':'Ecy','\u044E':'yucy','\u042E':'YUcy','\u044F':'yacy','\u042F':'YAcy','\u2135':'aleph','\u2136':'beth','\u2137':'gimel','\u2138':'daleth'};

var regexEscape = /["&'<>`]/g;
var escapeMap = {
        '"': '&quot;',
        '&': '&amp;',
        '\'': '&#x27;',
        '<': '&lt;',
        // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the
        // following is not strictly necessary unless it’s part of a tag or an
        // unquoted attribute value. We’re only escaping it to support those
        // situations, and for XML support.
        '>': '&gt;',
        // In Internet Explorer ≤ 8, the backtick character can be used
        // to break out of (un)quoted attribute values or HTML comments.
        // See http://html5sec.org/#102, http://html5sec.org/#108, and
        // http://html5sec.org/#133.
        '`': '&#x60;'
};

var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/;
var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
var regexDecode = /&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)([=a-zA-Z0-9])?/g;
var decodeMap = {'aacute':'\xE1','Aacute':'\xC1','abreve':'\u0103','Abreve':'\u0102','ac':'\u223E','acd':'\u223F','acE':'\u223E\u0333','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','acy':'\u0430','Acy':'\u0410','aelig':'\xE6','AElig':'\xC6','af':'\u2061','afr':'\uD835\uDD1E','Afr':'\uD835\uDD04','agrave':'\xE0','Agrave':'\xC0','alefsym':'\u2135','aleph':'\u2135','alpha':'\u03B1','Alpha':'\u0391','amacr':'\u0101','Amacr':'\u0100','amalg':'\u2A3F','amp':'&','AMP':'&','and':'\u2227','And':'\u2A53','andand':'\u2A55','andd':'\u2A5C','andslope':'\u2A58','andv':'\u2A5A','ang':'\u2220','ange':'\u29A4','angle':'\u2220','angmsd':'\u2221','angmsdaa':'\u29A8','angmsdab':'\u29A9','angmsdac':'\u29AA','angmsdad':'\u29AB','angmsdae':'\u29AC','angmsdaf':'\u29AD','angmsdag':'\u29AE','angmsdah':'\u29AF','angrt':'\u221F','angrtvb':'\u22BE','angrtvbd':'\u299D','angsph':'\u2222','angst':'\xC5','angzarr':'\u237C','aogon':'\u0105','Aogon':'\u0104','aopf':'\uD835\uDD52','Aopf':'\uD835\uDD38','ap':'\u2248','apacir':'\u2A6F','ape':'\u224A','apE':'\u2A70','apid':'\u224B','apos':'\'','ApplyFunction':'\u2061','approx':'\u2248','approxeq':'\u224A','aring':'\xE5','Aring':'\xC5','ascr':'\uD835\uDCB6','Ascr':'\uD835\uDC9C','Assign':'\u2254','ast':'*','asymp':'\u2248','asympeq':'\u224D','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','awconint':'\u2233','awint':'\u2A11','backcong':'\u224C','backepsilon':'\u03F6','backprime':'\u2035','backsim':'\u223D','backsimeq':'\u22CD','Backslash':'\u2216','Barv':'\u2AE7','barvee':'\u22BD','barwed':'\u2305','Barwed':'\u2306','barwedge':'\u2305','bbrk':'\u23B5','bbrktbrk':'\u23B6','bcong':'\u224C','bcy':'\u0431','Bcy':'\u0411','bdquo':'\u201E','becaus':'\u2235','because':'\u2235','Because':'\u2235','bemptyv':'\u29B0','bepsi':'\u03F6','bernou':'\u212C','Bernoullis':'\u212C','beta':'\u03B2','Beta':'\u0392','beth':'\u2136','between':'\u226C','bfr':'\uD835\uDD1F','Bfr':'\uD835\uDD05','bigcap':'\u22C2','bigcirc':'\u25EF','bigcup':'\u22C3','bigodot':'\u2A00','bigoplus':'\u2A01','bigotimes':'\u2A02','bigsqcup':'\u2A06','bigstar':'\u2605','bigtriangledown':'\u25BD','bigtriangleup':'\u25B3','biguplus':'\u2A04','bigvee':'\u22C1','bigwedge':'\u22C0','bkarow':'\u290D','blacklozenge':'\u29EB','blacksquare':'\u25AA','blacktriangle':'\u25B4','blacktriangledown':'\u25BE','blacktriangleleft':'\u25C2','blacktriangleright':'\u25B8','blank':'\u2423','blk12':'\u2592','blk14':'\u2591','blk34':'\u2593','block':'\u2588','bne':'=\u20E5','bnequiv':'\u2261\u20E5','bnot':'\u2310','bNot':'\u2AED','bopf':'\uD835\uDD53','Bopf':'\uD835\uDD39','bot':'\u22A5','bottom':'\u22A5','bowtie':'\u22C8','boxbox':'\u29C9','boxdl':'\u2510','boxdL':'\u2555','boxDl':'\u2556','boxDL':'\u2557','boxdr':'\u250C','boxdR':'\u2552','boxDr':'\u2553','boxDR':'\u2554','boxh':'\u2500','boxH':'\u2550','boxhd':'\u252C','boxhD':'\u2565','boxHd':'\u2564','boxHD':'\u2566','boxhu':'\u2534','boxhU':'\u2568','boxHu':'\u2567','boxHU':'\u2569','boxminus':'\u229F','boxplus':'\u229E','boxtimes':'\u22A0','boxul':'\u2518','boxuL':'\u255B','boxUl':'\u255C','boxUL':'\u255D','boxur':'\u2514','boxuR':'\u2558','boxUr':'\u2559','boxUR':'\u255A','boxv':'\u2502','boxV':'\u2551','boxvh':'\u253C','boxvH':'\u256A','boxVh':'\u256B','boxVH':'\u256C','boxvl':'\u2524','boxvL':'\u2561','boxVl':'\u2562','boxVL':'\u2563','boxvr':'\u251C','boxvR':'\u255E','boxVr':'\u255F','boxVR':'\u2560','bprime':'\u2035','breve':'\u02D8','Breve':'\u02D8','brvbar':'\xA6','bscr':'\uD835\uDCB7','Bscr':'\u212C','bsemi':'\u204F','bsim':'\u223D','bsime':'\u22CD','bsol':'\\','bsolb':'\u29C5','bsolhsub':'\u27C8','bull':'\u2022','bullet':'\u2022','bump':'\u224E','bumpe':'\u224F','bumpE':'\u2AAE','bumpeq':'\u224F','Bumpeq':'\u224E','cacute':'\u0107','Cacute':'\u0106','cap':'\u2229','Cap':'\u22D2','capand':'\u2A44','capbrcup':'\u2A49','capcap':'\u2A4B','capcup':'\u2A47','capdot':'\u2A40','CapitalDifferentialD':'\u2145','caps':'\u2229\uFE00','caret':'\u2041','caron':'\u02C7','Cayleys':'\u212D','ccaps':'\u2A4D','ccaron':'\u010D','Ccaron':'\u010C','ccedil':'\xE7','Ccedil':'\xC7','ccirc':'\u0109','Ccirc':'\u0108','Cconint':'\u2230','ccups':'\u2A4C','ccupssm':'\u2A50','cdot':'\u010B','Cdot':'\u010A','cedil':'\xB8','Cedilla':'\xB8','cemptyv':'\u29B2','cent':'\xA2','centerdot':'\xB7','CenterDot':'\xB7','cfr':'\uD835\uDD20','Cfr':'\u212D','chcy':'\u0447','CHcy':'\u0427','check':'\u2713','checkmark':'\u2713','chi':'\u03C7','Chi':'\u03A7','cir':'\u25CB','circ':'\u02C6','circeq':'\u2257','circlearrowleft':'\u21BA','circlearrowright':'\u21BB','circledast':'\u229B','circledcirc':'\u229A','circleddash':'\u229D','CircleDot':'\u2299','circledR':'\xAE','circledS':'\u24C8','CircleMinus':'\u2296','CirclePlus':'\u2295','CircleTimes':'\u2297','cire':'\u2257','cirE':'\u29C3','cirfnint':'\u2A10','cirmid':'\u2AEF','cirscir':'\u29C2','ClockwiseContourIntegral':'\u2232','CloseCurlyDoubleQuote':'\u201D','CloseCurlyQuote':'\u2019','clubs':'\u2663','clubsuit':'\u2663','colon':':','Colon':'\u2237','colone':'\u2254','Colone':'\u2A74','coloneq':'\u2254','comma':',','commat':'@','comp':'\u2201','compfn':'\u2218','complement':'\u2201','complexes':'\u2102','cong':'\u2245','congdot':'\u2A6D','Congruent':'\u2261','conint':'\u222E','Conint':'\u222F','ContourIntegral':'\u222E','copf':'\uD835\uDD54','Copf':'\u2102','coprod':'\u2210','Coproduct':'\u2210','copy':'\xA9','COPY':'\xA9','copysr':'\u2117','CounterClockwiseContourIntegral':'\u2233','crarr':'\u21B5','cross':'\u2717','Cross':'\u2A2F','cscr':'\uD835\uDCB8','Cscr':'\uD835\uDC9E','csub':'\u2ACF','csube':'\u2AD1','csup':'\u2AD0','csupe':'\u2AD2','ctdot':'\u22EF','cudarrl':'\u2938','cudarrr':'\u2935','cuepr':'\u22DE','cuesc':'\u22DF','cularr':'\u21B6','cularrp':'\u293D','cup':'\u222A','Cup':'\u22D3','cupbrcap':'\u2A48','cupcap':'\u2A46','CupCap':'\u224D','cupcup':'\u2A4A','cupdot':'\u228D','cupor':'\u2A45','cups':'\u222A\uFE00','curarr':'\u21B7','curarrm':'\u293C','curlyeqprec':'\u22DE','curlyeqsucc':'\u22DF','curlyvee':'\u22CE','curlywedge':'\u22CF','curren':'\xA4','curvearrowleft':'\u21B6','curvearrowright':'\u21B7','cuvee':'\u22CE','cuwed':'\u22CF','cwconint':'\u2232','cwint':'\u2231','cylcty':'\u232D','dagger':'\u2020','Dagger':'\u2021','daleth':'\u2138','darr':'\u2193','dArr':'\u21D3','Darr':'\u21A1','dash':'\u2010','dashv':'\u22A3','Dashv':'\u2AE4','dbkarow':'\u290F','dblac':'\u02DD','dcaron':'\u010F','Dcaron':'\u010E','dcy':'\u0434','Dcy':'\u0414','dd':'\u2146','DD':'\u2145','ddagger':'\u2021','ddarr':'\u21CA','DDotrahd':'\u2911','ddotseq':'\u2A77','deg':'\xB0','Del':'\u2207','delta':'\u03B4','Delta':'\u0394','demptyv':'\u29B1','dfisht':'\u297F','dfr':'\uD835\uDD21','Dfr':'\uD835\uDD07','dHar':'\u2965','dharl':'\u21C3','dharr':'\u21C2','DiacriticalAcute':'\xB4','DiacriticalDot':'\u02D9','DiacriticalDoubleAcute':'\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\u02DC','diam':'\u22C4','diamond':'\u22C4','Diamond':'\u22C4','diamondsuit':'\u2666','diams':'\u2666','die':'\xA8','DifferentialD':'\u2146','digamma':'\u03DD','disin':'\u22F2','div':'\xF7','divide':'\xF7','divideontimes':'\u22C7','divonx':'\u22C7','djcy':'\u0452','DJcy':'\u0402','dlcorn':'\u231E','dlcrop':'\u230D','dollar':'$','dopf':'\uD835\uDD55','Dopf':'\uD835\uDD3B','dot':'\u02D9','Dot':'\xA8','DotDot':'\u20DC','doteq':'\u2250','doteqdot':'\u2251','DotEqual':'\u2250','dotminus':'\u2238','dotplus':'\u2214','dotsquare':'\u22A1','doublebarwedge':'\u2306','DoubleContourIntegral':'\u222F','DoubleDot':'\xA8','DoubleDownArrow':'\u21D3','DoubleLeftArrow':'\u21D0','DoubleLeftRightArrow':'\u21D4','DoubleLeftTee':'\u2AE4','DoubleLongLeftArrow':'\u27F8','DoubleLongLeftRightArrow':'\u27FA','DoubleLongRightArrow':'\u27F9','DoubleRightArrow':'\u21D2','DoubleRightTee':'\u22A8','DoubleUpArrow':'\u21D1','DoubleUpDownArrow':'\u21D5','DoubleVerticalBar':'\u2225','downarrow':'\u2193','Downarrow':'\u21D3','DownArrow':'\u2193','DownArrowBar':'\u2913','DownArrowUpArrow':'\u21F5','DownBreve':'\u0311','downdownarrows':'\u21CA','downharpoonleft':'\u21C3','downharpoonright':'\u21C2','DownLeftRightVector':'\u2950','DownLeftTeeVector':'\u295E','DownLeftVector':'\u21BD','DownLeftVectorBar':'\u2956','DownRightTeeVector':'\u295F','DownRightVector':'\u21C1','DownRightVectorBar':'\u2957','DownTee':'\u22A4','DownTeeArrow':'\u21A7','drbkarow':'\u2910','drcorn':'\u231F','drcrop':'\u230C','dscr':'\uD835\uDCB9','Dscr':'\uD835\uDC9F','dscy':'\u0455','DScy':'\u0405','dsol':'\u29F6','dstrok':'\u0111','Dstrok':'\u0110','dtdot':'\u22F1','dtri':'\u25BF','dtrif':'\u25BE','duarr':'\u21F5','duhar':'\u296F','dwangle':'\u29A6','dzcy':'\u045F','DZcy':'\u040F','dzigrarr':'\u27FF','eacute':'\xE9','Eacute':'\xC9','easter':'\u2A6E','ecaron':'\u011B','Ecaron':'\u011A','ecir':'\u2256','ecirc':'\xEA','Ecirc':'\xCA','ecolon':'\u2255','ecy':'\u044D','Ecy':'\u042D','eDDot':'\u2A77','edot':'\u0117','eDot':'\u2251','Edot':'\u0116','ee':'\u2147','efDot':'\u2252','efr':'\uD835\uDD22','Efr':'\uD835\uDD08','eg':'\u2A9A','egrave':'\xE8','Egrave':'\xC8','egs':'\u2A96','egsdot':'\u2A98','el':'\u2A99','Element':'\u2208','elinters':'\u23E7','ell':'\u2113','els':'\u2A95','elsdot':'\u2A97','emacr':'\u0113','Emacr':'\u0112','empty':'\u2205','emptyset':'\u2205','EmptySmallSquare':'\u25FB','emptyv':'\u2205','EmptyVerySmallSquare':'\u25AB','emsp':'\u2003','emsp13':'\u2004','emsp14':'\u2005','eng':'\u014B','ENG':'\u014A','ensp':'\u2002','eogon':'\u0119','Eogon':'\u0118','eopf':'\uD835\uDD56','Eopf':'\uD835\uDD3C','epar':'\u22D5','eparsl':'\u29E3','eplus':'\u2A71','epsi':'\u03B5','epsilon':'\u03B5','Epsilon':'\u0395','epsiv':'\u03F5','eqcirc':'\u2256','eqcolon':'\u2255','eqsim':'\u2242','eqslantgtr':'\u2A96','eqslantless':'\u2A95','Equal':'\u2A75','equals':'=','EqualTilde':'\u2242','equest':'\u225F','Equilibrium':'\u21CC','equiv':'\u2261','equivDD':'\u2A78','eqvparsl':'\u29E5','erarr':'\u2971','erDot':'\u2253','escr':'\u212F','Escr':'\u2130','esdot':'\u2250','esim':'\u2242','Esim':'\u2A73','eta':'\u03B7','Eta':'\u0397','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','euro':'\u20AC','excl':'!','exist':'\u2203','Exists':'\u2203','expectation':'\u2130','exponentiale':'\u2147','ExponentialE':'\u2147','fallingdotseq':'\u2252','fcy':'\u0444','Fcy':'\u0424','female':'\u2640','ffilig':'\uFB03','fflig':'\uFB00','ffllig':'\uFB04','ffr':'\uD835\uDD23','Ffr':'\uD835\uDD09','filig':'\uFB01','FilledSmallSquare':'\u25FC','FilledVerySmallSquare':'\u25AA','fjlig':'fj','flat':'\u266D','fllig':'\uFB02','fltns':'\u25B1','fnof':'\u0192','fopf':'\uD835\uDD57','Fopf':'\uD835\uDD3D','forall':'\u2200','ForAll':'\u2200','fork':'\u22D4','forkv':'\u2AD9','Fouriertrf':'\u2131','fpartint':'\u2A0D','frac12':'\xBD','frac13':'\u2153','frac14':'\xBC','frac15':'\u2155','frac16':'\u2159','frac18':'\u215B','frac23':'\u2154','frac25':'\u2156','frac34':'\xBE','frac35':'\u2157','frac38':'\u215C','frac45':'\u2158','frac56':'\u215A','frac58':'\u215D','frac78':'\u215E','frasl':'\u2044','frown':'\u2322','fscr':'\uD835\uDCBB','Fscr':'\u2131','gacute':'\u01F5','gamma':'\u03B3','Gamma':'\u0393','gammad':'\u03DD','Gammad':'\u03DC','gap':'\u2A86','gbreve':'\u011F','Gbreve':'\u011E','Gcedil':'\u0122','gcirc':'\u011D','Gcirc':'\u011C','gcy':'\u0433','Gcy':'\u0413','gdot':'\u0121','Gdot':'\u0120','ge':'\u2265','gE':'\u2267','gel':'\u22DB','gEl':'\u2A8C','geq':'\u2265','geqq':'\u2267','geqslant':'\u2A7E','ges':'\u2A7E','gescc':'\u2AA9','gesdot':'\u2A80','gesdoto':'\u2A82','gesdotol':'\u2A84','gesl':'\u22DB\uFE00','gesles':'\u2A94','gfr':'\uD835\uDD24','Gfr':'\uD835\uDD0A','gg':'\u226B','Gg':'\u22D9','ggg':'\u22D9','gimel':'\u2137','gjcy':'\u0453','GJcy':'\u0403','gl':'\u2277','gla':'\u2AA5','glE':'\u2A92','glj':'\u2AA4','gnap':'\u2A8A','gnapprox':'\u2A8A','gne':'\u2A88','gnE':'\u2269','gneq':'\u2A88','gneqq':'\u2269','gnsim':'\u22E7','gopf':'\uD835\uDD58','Gopf':'\uD835\uDD3E','grave':'`','GreaterEqual':'\u2265','GreaterEqualLess':'\u22DB','GreaterFullEqual':'\u2267','GreaterGreater':'\u2AA2','GreaterLess':'\u2277','GreaterSlantEqual':'\u2A7E','GreaterTilde':'\u2273','gscr':'\u210A','Gscr':'\uD835\uDCA2','gsim':'\u2273','gsime':'\u2A8E','gsiml':'\u2A90','gt':'>','Gt':'\u226B','GT':'>','gtcc':'\u2AA7','gtcir':'\u2A7A','gtdot':'\u22D7','gtlPar':'\u2995','gtquest':'\u2A7C','gtrapprox':'\u2A86','gtrarr':'\u2978','gtrdot':'\u22D7','gtreqless':'\u22DB','gtreqqless':'\u2A8C','gtrless':'\u2277','gtrsim':'\u2273','gvertneqq':'\u2269\uFE00','gvnE':'\u2269\uFE00','Hacek':'\u02C7','hairsp':'\u200A','half':'\xBD','hamilt':'\u210B','hardcy':'\u044A','HARDcy':'\u042A','harr':'\u2194','hArr':'\u21D4','harrcir':'\u2948','harrw':'\u21AD','Hat':'^','hbar':'\u210F','hcirc':'\u0125','Hcirc':'\u0124','hearts':'\u2665','heartsuit':'\u2665','hellip':'\u2026','hercon':'\u22B9','hfr':'\uD835\uDD25','Hfr':'\u210C','HilbertSpace':'\u210B','hksearow':'\u2925','hkswarow':'\u2926','hoarr':'\u21FF','homtht':'\u223B','hookleftarrow':'\u21A9','hookrightarrow':'\u21AA','hopf':'\uD835\uDD59','Hopf':'\u210D','horbar':'\u2015','HorizontalLine':'\u2500','hscr':'\uD835\uDCBD','Hscr':'\u210B','hslash':'\u210F','hstrok':'\u0127','Hstrok':'\u0126','HumpDownHump':'\u224E','HumpEqual':'\u224F','hybull':'\u2043','hyphen':'\u2010','iacute':'\xED','Iacute':'\xCD','ic':'\u2063','icirc':'\xEE','Icirc':'\xCE','icy':'\u0438','Icy':'\u0418','Idot':'\u0130','iecy':'\u0435','IEcy':'\u0415','iexcl':'\xA1','iff':'\u21D4','ifr':'\uD835\uDD26','Ifr':'\u2111','igrave':'\xEC','Igrave':'\xCC','ii':'\u2148','iiiint':'\u2A0C','iiint':'\u222D','iinfin':'\u29DC','iiota':'\u2129','ijlig':'\u0133','IJlig':'\u0132','Im':'\u2111','imacr':'\u012B','Imacr':'\u012A','image':'\u2111','ImaginaryI':'\u2148','imagline':'\u2110','imagpart':'\u2111','imath':'\u0131','imof':'\u22B7','imped':'\u01B5','Implies':'\u21D2','in':'\u2208','incare':'\u2105','infin':'\u221E','infintie':'\u29DD','inodot':'\u0131','int':'\u222B','Int':'\u222C','intcal':'\u22BA','integers':'\u2124','Integral':'\u222B','intercal':'\u22BA','Intersection':'\u22C2','intlarhk':'\u2A17','intprod':'\u2A3C','InvisibleComma':'\u2063','InvisibleTimes':'\u2062','iocy':'\u0451','IOcy':'\u0401','iogon':'\u012F','Iogon':'\u012E','iopf':'\uD835\uDD5A','Iopf':'\uD835\uDD40','iota':'\u03B9','Iota':'\u0399','iprod':'\u2A3C','iquest':'\xBF','iscr':'\uD835\uDCBE','Iscr':'\u2110','isin':'\u2208','isindot':'\u22F5','isinE':'\u22F9','isins':'\u22F4','isinsv':'\u22F3','isinv':'\u2208','it':'\u2062','itilde':'\u0129','Itilde':'\u0128','iukcy':'\u0456','Iukcy':'\u0406','iuml':'\xEF','Iuml':'\xCF','jcirc':'\u0135','Jcirc':'\u0134','jcy':'\u0439','Jcy':'\u0419','jfr':'\uD835\uDD27','Jfr':'\uD835\uDD0D','jmath':'\u0237','jopf':'\uD835\uDD5B','Jopf':'\uD835\uDD41','jscr':'\uD835\uDCBF','Jscr':'\uD835\uDCA5','jsercy':'\u0458','Jsercy':'\u0408','jukcy':'\u0454','Jukcy':'\u0404','kappa':'\u03BA','Kappa':'\u039A','kappav':'\u03F0','kcedil':'\u0137','Kcedil':'\u0136','kcy':'\u043A','Kcy':'\u041A','kfr':'\uD835\uDD28','Kfr':'\uD835\uDD0E','kgreen':'\u0138','khcy':'\u0445','KHcy':'\u0425','kjcy':'\u045C','KJcy':'\u040C','kopf':'\uD835\uDD5C','Kopf':'\uD835\uDD42','kscr':'\uD835\uDCC0','Kscr':'\uD835\uDCA6','lAarr':'\u21DA','lacute':'\u013A','Lacute':'\u0139','laemptyv':'\u29B4','lagran':'\u2112','lambda':'\u03BB','Lambda':'\u039B','lang':'\u27E8','Lang':'\u27EA','langd':'\u2991','langle':'\u27E8','lap':'\u2A85','Laplacetrf':'\u2112','laquo':'\xAB','larr':'\u2190','lArr':'\u21D0','Larr':'\u219E','larrb':'\u21E4','larrbfs':'\u291F','larrfs':'\u291D','larrhk':'\u21A9','larrlp':'\u21AB','larrpl':'\u2939','larrsim':'\u2973','larrtl':'\u21A2','lat':'\u2AAB','latail':'\u2919','lAtail':'\u291B','late':'\u2AAD','lates':'\u2AAD\uFE00','lbarr':'\u290C','lBarr':'\u290E','lbbrk':'\u2772','lbrace':'{','lbrack':'[','lbrke':'\u298B','lbrksld':'\u298F','lbrkslu':'\u298D','lcaron':'\u013E','Lcaron':'\u013D','lcedil':'\u013C','Lcedil':'\u013B','lceil':'\u2308','lcub':'{','lcy':'\u043B','Lcy':'\u041B','ldca':'\u2936','ldquo':'\u201C','ldquor':'\u201E','ldrdhar':'\u2967','ldrushar':'\u294B','ldsh':'\u21B2','le':'\u2264','lE':'\u2266','LeftAngleBracket':'\u27E8','leftarrow':'\u2190','Leftarrow':'\u21D0','LeftArrow':'\u2190','LeftArrowBar':'\u21E4','LeftArrowRightArrow':'\u21C6','leftarrowtail':'\u21A2','LeftCeiling':'\u2308','LeftDoubleBracket':'\u27E6','LeftDownTeeVector':'\u2961','LeftDownVector':'\u21C3','LeftDownVectorBar':'\u2959','LeftFloor':'\u230A','leftharpoondown':'\u21BD','leftharpoonup':'\u21BC','leftleftarrows':'\u21C7','leftrightarrow':'\u2194','Leftrightarrow':'\u21D4','LeftRightArrow':'\u2194','leftrightarrows':'\u21C6','leftrightharpoons':'\u21CB','leftrightsquigarrow':'\u21AD','LeftRightVector':'\u294E','LeftTee':'\u22A3','LeftTeeArrow':'\u21A4','LeftTeeVector':'\u295A','leftthreetimes':'\u22CB','LeftTriangle':'\u22B2','LeftTriangleBar':'\u29CF','LeftTriangleEqual':'\u22B4','LeftUpDownVector':'\u2951','LeftUpTeeVector':'\u2960','LeftUpVector':'\u21BF','LeftUpVectorBar':'\u2958','LeftVector':'\u21BC','LeftVectorBar':'\u2952','leg':'\u22DA','lEg':'\u2A8B','leq':'\u2264','leqq':'\u2266','leqslant':'\u2A7D','les':'\u2A7D','lescc':'\u2AA8','lesdot':'\u2A7F','lesdoto':'\u2A81','lesdotor':'\u2A83','lesg':'\u22DA\uFE00','lesges':'\u2A93','lessapprox':'\u2A85','lessdot':'\u22D6','lesseqgtr':'\u22DA','lesseqqgtr':'\u2A8B','LessEqualGreater':'\u22DA','LessFullEqual':'\u2266','LessGreater':'\u2276','lessgtr':'\u2276','LessLess':'\u2AA1','lesssim':'\u2272','LessSlantEqual':'\u2A7D','LessTilde':'\u2272','lfisht':'\u297C','lfloor':'\u230A','lfr':'\uD835\uDD29','Lfr':'\uD835\uDD0F','lg':'\u2276','lgE':'\u2A91','lHar':'\u2962','lhard':'\u21BD','lharu':'\u21BC','lharul':'\u296A','lhblk':'\u2584','ljcy':'\u0459','LJcy':'\u0409','ll':'\u226A','Ll':'\u22D8','llarr':'\u21C7','llcorner':'\u231E','Lleftarrow':'\u21DA','llhard':'\u296B','lltri':'\u25FA','lmidot':'\u0140','Lmidot':'\u013F','lmoust':'\u23B0','lmoustache':'\u23B0','lnap':'\u2A89','lnapprox':'\u2A89','lne':'\u2A87','lnE':'\u2268','lneq':'\u2A87','lneqq':'\u2268','lnsim':'\u22E6','loang':'\u27EC','loarr':'\u21FD','lobrk':'\u27E6','longleftarrow':'\u27F5','Longleftarrow':'\u27F8','LongLeftArrow':'\u27F5','longleftrightarrow':'\u27F7','Longleftrightarrow':'\u27FA','LongLeftRightArrow':'\u27F7','longmapsto':'\u27FC','longrightarrow':'\u27F6','Longrightarrow':'\u27F9','LongRightArrow':'\u27F6','looparrowleft':'\u21AB','looparrowright':'\u21AC','lopar':'\u2985','lopf':'\uD835\uDD5D','Lopf':'\uD835\uDD43','loplus':'\u2A2D','lotimes':'\u2A34','lowast':'\u2217','lowbar':'_','LowerLeftArrow':'\u2199','LowerRightArrow':'\u2198','loz':'\u25CA','lozenge':'\u25CA','lozf':'\u29EB','lpar':'(','lparlt':'\u2993','lrarr':'\u21C6','lrcorner':'\u231F','lrhar':'\u21CB','lrhard':'\u296D','lrm':'\u200E','lrtri':'\u22BF','lsaquo':'\u2039','lscr':'\uD835\uDCC1','Lscr':'\u2112','lsh':'\u21B0','Lsh':'\u21B0','lsim':'\u2272','lsime':'\u2A8D','lsimg':'\u2A8F','lsqb':'[','lsquo':'\u2018','lsquor':'\u201A','lstrok':'\u0142','Lstrok':'\u0141','lt':'<','Lt':'\u226A','LT':'<','ltcc':'\u2AA6','ltcir':'\u2A79','ltdot':'\u22D6','lthree':'\u22CB','ltimes':'\u22C9','ltlarr':'\u2976','ltquest':'\u2A7B','ltri':'\u25C3','ltrie':'\u22B4','ltrif':'\u25C2','ltrPar':'\u2996','lurdshar':'\u294A','luruhar':'\u2966','lvertneqq':'\u2268\uFE00','lvnE':'\u2268\uFE00','macr':'\xAF','male':'\u2642','malt':'\u2720','maltese':'\u2720','map':'\u21A6','Map':'\u2905','mapsto':'\u21A6','mapstodown':'\u21A7','mapstoleft':'\u21A4','mapstoup':'\u21A5','marker':'\u25AE','mcomma':'\u2A29','mcy':'\u043C','Mcy':'\u041C','mdash':'\u2014','mDDot':'\u223A','measuredangle':'\u2221','MediumSpace':'\u205F','Mellintrf':'\u2133','mfr':'\uD835\uDD2A','Mfr':'\uD835\uDD10','mho':'\u2127','micro':'\xB5','mid':'\u2223','midast':'*','midcir':'\u2AF0','middot':'\xB7','minus':'\u2212','minusb':'\u229F','minusd':'\u2238','minusdu':'\u2A2A','MinusPlus':'\u2213','mlcp':'\u2ADB','mldr':'\u2026','mnplus':'\u2213','models':'\u22A7','mopf':'\uD835\uDD5E','Mopf':'\uD835\uDD44','mp':'\u2213','mscr':'\uD835\uDCC2','Mscr':'\u2133','mstpos':'\u223E','mu':'\u03BC','Mu':'\u039C','multimap':'\u22B8','mumap':'\u22B8','nabla':'\u2207','nacute':'\u0144','Nacute':'\u0143','nang':'\u2220\u20D2','nap':'\u2249','napE':'\u2A70\u0338','napid':'\u224B\u0338','napos':'\u0149','napprox':'\u2249','natur':'\u266E','natural':'\u266E','naturals':'\u2115','nbsp':'\xA0','nbump':'\u224E\u0338','nbumpe':'\u224F\u0338','ncap':'\u2A43','ncaron':'\u0148','Ncaron':'\u0147','ncedil':'\u0146','Ncedil':'\u0145','ncong':'\u2247','ncongdot':'\u2A6D\u0338','ncup':'\u2A42','ncy':'\u043D','Ncy':'\u041D','ndash':'\u2013','ne':'\u2260','nearhk':'\u2924','nearr':'\u2197','neArr':'\u21D7','nearrow':'\u2197','nedot':'\u2250\u0338','NegativeMediumSpace':'\u200B','NegativeThickSpace':'\u200B','NegativeThinSpace':'\u200B','NegativeVeryThinSpace':'\u200B','nequiv':'\u2262','nesear':'\u2928','nesim':'\u2242\u0338','NestedGreaterGreater':'\u226B','NestedLessLess':'\u226A','NewLine':'\n','nexist':'\u2204','nexists':'\u2204','nfr':'\uD835\uDD2B','Nfr':'\uD835\uDD11','nge':'\u2271','ngE':'\u2267\u0338','ngeq':'\u2271','ngeqq':'\u2267\u0338','ngeqslant':'\u2A7E\u0338','nges':'\u2A7E\u0338','nGg':'\u22D9\u0338','ngsim':'\u2275','ngt':'\u226F','nGt':'\u226B\u20D2','ngtr':'\u226F','nGtv':'\u226B\u0338','nharr':'\u21AE','nhArr':'\u21CE','nhpar':'\u2AF2','ni':'\u220B','nis':'\u22FC','nisd':'\u22FA','niv':'\u220B','njcy':'\u045A','NJcy':'\u040A','nlarr':'\u219A','nlArr':'\u21CD','nldr':'\u2025','nle':'\u2270','nlE':'\u2266\u0338','nleftarrow':'\u219A','nLeftarrow':'\u21CD','nleftrightarrow':'\u21AE','nLeftrightarrow':'\u21CE','nleq':'\u2270','nleqq':'\u2266\u0338','nleqslant':'\u2A7D\u0338','nles':'\u2A7D\u0338','nless':'\u226E','nLl':'\u22D8\u0338','nlsim':'\u2274','nlt':'\u226E','nLt':'\u226A\u20D2','nltri':'\u22EA','nltrie':'\u22EC','nLtv':'\u226A\u0338','nmid':'\u2224','NoBreak':'\u2060','NonBreakingSpace':'\xA0','nopf':'\uD835\uDD5F','Nopf':'\u2115','not':'\xAC','Not':'\u2AEC','NotCongruent':'\u2262','NotCupCap':'\u226D','NotDoubleVerticalBar':'\u2226','NotElement':'\u2209','NotEqual':'\u2260','NotEqualTilde':'\u2242\u0338','NotExists':'\u2204','NotGreater':'\u226F','NotGreaterEqual':'\u2271','NotGreaterFullEqual':'\u2267\u0338','NotGreaterGreater':'\u226B\u0338','NotGreaterLess':'\u2279','NotGreaterSlantEqual':'\u2A7E\u0338','NotGreaterTilde':'\u2275','NotHumpDownHump':'\u224E\u0338','NotHumpEqual':'\u224F\u0338','notin':'\u2209','notindot':'\u22F5\u0338','notinE':'\u22F9\u0338','notinva':'\u2209','notinvb':'\u22F7','notinvc':'\u22F6','NotLeftTriangle':'\u22EA','NotLeftTriangleBar':'\u29CF\u0338','NotLeftTriangleEqual':'\u22EC','NotLess':'\u226E','NotLessEqual':'\u2270','NotLessGreater':'\u2278','NotLessLess':'\u226A\u0338','NotLessSlantEqual':'\u2A7D\u0338','NotLessTilde':'\u2274','NotNestedGreaterGreater':'\u2AA2\u0338','NotNestedLessLess':'\u2AA1\u0338','notni':'\u220C','notniva':'\u220C','notnivb':'\u22FE','notnivc':'\u22FD','NotPrecedes':'\u2280','NotPrecedesEqual':'\u2AAF\u0338','NotPrecedesSlantEqual':'\u22E0','NotReverseElement':'\u220C','NotRightTriangle':'\u22EB','NotRightTriangleBar':'\u29D0\u0338','NotRightTriangleEqual':'\u22ED','NotSquareSubset':'\u228F\u0338','NotSquareSubsetEqual':'\u22E2','NotSquareSuperset':'\u2290\u0338','NotSquareSupersetEqual':'\u22E3','NotSubset':'\u2282\u20D2','NotSubsetEqual':'\u2288','NotSucceeds':'\u2281','NotSucceedsEqual':'\u2AB0\u0338','NotSucceedsSlantEqual':'\u22E1','NotSucceedsTilde':'\u227F\u0338','NotSuperset':'\u2283\u20D2','NotSupersetEqual':'\u2289','NotTilde':'\u2241','NotTildeEqual':'\u2244','NotTildeFullEqual':'\u2247','NotTildeTilde':'\u2249','NotVerticalBar':'\u2224','npar':'\u2226','nparallel':'\u2226','nparsl':'\u2AFD\u20E5','npart':'\u2202\u0338','npolint':'\u2A14','npr':'\u2280','nprcue':'\u22E0','npre':'\u2AAF\u0338','nprec':'\u2280','npreceq':'\u2AAF\u0338','nrarr':'\u219B','nrArr':'\u21CF','nrarrc':'\u2933\u0338','nrarrw':'\u219D\u0338','nrightarrow':'\u219B','nRightarrow':'\u21CF','nrtri':'\u22EB','nrtrie':'\u22ED','nsc':'\u2281','nsccue':'\u22E1','nsce':'\u2AB0\u0338','nscr':'\uD835\uDCC3','Nscr':'\uD835\uDCA9','nshortmid':'\u2224','nshortparallel':'\u2226','nsim':'\u2241','nsime':'\u2244','nsimeq':'\u2244','nsmid':'\u2224','nspar':'\u2226','nsqsube':'\u22E2','nsqsupe':'\u22E3','nsub':'\u2284','nsube':'\u2288','nsubE':'\u2AC5\u0338','nsubset':'\u2282\u20D2','nsubseteq':'\u2288','nsubseteqq':'\u2AC5\u0338','nsucc':'\u2281','nsucceq':'\u2AB0\u0338','nsup':'\u2285','nsupe':'\u2289','nsupE':'\u2AC6\u0338','nsupset':'\u2283\u20D2','nsupseteq':'\u2289','nsupseteqq':'\u2AC6\u0338','ntgl':'\u2279','ntilde':'\xF1','Ntilde':'\xD1','ntlg':'\u2278','ntriangleleft':'\u22EA','ntrianglelefteq':'\u22EC','ntriangleright':'\u22EB','ntrianglerighteq':'\u22ED','nu':'\u03BD','Nu':'\u039D','num':'#','numero':'\u2116','numsp':'\u2007','nvap':'\u224D\u20D2','nvdash':'\u22AC','nvDash':'\u22AD','nVdash':'\u22AE','nVDash':'\u22AF','nvge':'\u2265\u20D2','nvgt':'>\u20D2','nvHarr':'\u2904','nvinfin':'\u29DE','nvlArr':'\u2902','nvle':'\u2264\u20D2','nvlt':'<\u20D2','nvltrie':'\u22B4\u20D2','nvrArr':'\u2903','nvrtrie':'\u22B5\u20D2','nvsim':'\u223C\u20D2','nwarhk':'\u2923','nwarr':'\u2196','nwArr':'\u21D6','nwarrow':'\u2196','nwnear':'\u2927','oacute':'\xF3','Oacute':'\xD3','oast':'\u229B','ocir':'\u229A','ocirc':'\xF4','Ocirc':'\xD4','ocy':'\u043E','Ocy':'\u041E','odash':'\u229D','odblac':'\u0151','Odblac':'\u0150','odiv':'\u2A38','odot':'\u2299','odsold':'\u29BC','oelig':'\u0153','OElig':'\u0152','ofcir':'\u29BF','ofr':'\uD835\uDD2C','Ofr':'\uD835\uDD12','ogon':'\u02DB','ograve':'\xF2','Ograve':'\xD2','ogt':'\u29C1','ohbar':'\u29B5','ohm':'\u03A9','oint':'\u222E','olarr':'\u21BA','olcir':'\u29BE','olcross':'\u29BB','oline':'\u203E','olt':'\u29C0','omacr':'\u014D','Omacr':'\u014C','omega':'\u03C9','Omega':'\u03A9','omicron':'\u03BF','Omicron':'\u039F','omid':'\u29B6','ominus':'\u2296','oopf':'\uD835\uDD60','Oopf':'\uD835\uDD46','opar':'\u29B7','OpenCurlyDoubleQuote':'\u201C','OpenCurlyQuote':'\u2018','operp':'\u29B9','oplus':'\u2295','or':'\u2228','Or':'\u2A54','orarr':'\u21BB','ord':'\u2A5D','order':'\u2134','orderof':'\u2134','ordf':'\xAA','ordm':'\xBA','origof':'\u22B6','oror':'\u2A56','orslope':'\u2A57','orv':'\u2A5B','oS':'\u24C8','oscr':'\u2134','Oscr':'\uD835\uDCAA','oslash':'\xF8','Oslash':'\xD8','osol':'\u2298','otilde':'\xF5','Otilde':'\xD5','otimes':'\u2297','Otimes':'\u2A37','otimesas':'\u2A36','ouml':'\xF6','Ouml':'\xD6','ovbar':'\u233D','OverBar':'\u203E','OverBrace':'\u23DE','OverBracket':'\u23B4','OverParenthesis':'\u23DC','par':'\u2225','para':'\xB6','parallel':'\u2225','parsim':'\u2AF3','parsl':'\u2AFD','part':'\u2202','PartialD':'\u2202','pcy':'\u043F','Pcy':'\u041F','percnt':'%','period':'.','permil':'\u2030','perp':'\u22A5','pertenk':'\u2031','pfr':'\uD835\uDD2D','Pfr':'\uD835\uDD13','phi':'\u03C6','Phi':'\u03A6','phiv':'\u03D5','phmmat':'\u2133','phone':'\u260E','pi':'\u03C0','Pi':'\u03A0','pitchfork':'\u22D4','piv':'\u03D6','planck':'\u210F','planckh':'\u210E','plankv':'\u210F','plus':'+','plusacir':'\u2A23','plusb':'\u229E','pluscir':'\u2A22','plusdo':'\u2214','plusdu':'\u2A25','pluse':'\u2A72','PlusMinus':'\xB1','plusmn':'\xB1','plussim':'\u2A26','plustwo':'\u2A27','pm':'\xB1','Poincareplane':'\u210C','pointint':'\u2A15','popf':'\uD835\uDD61','Popf':'\u2119','pound':'\xA3','pr':'\u227A','Pr':'\u2ABB','prap':'\u2AB7','prcue':'\u227C','pre':'\u2AAF','prE':'\u2AB3','prec':'\u227A','precapprox':'\u2AB7','preccurlyeq':'\u227C','Precedes':'\u227A','PrecedesEqual':'\u2AAF','PrecedesSlantEqual':'\u227C','PrecedesTilde':'\u227E','preceq':'\u2AAF','precnapprox':'\u2AB9','precneqq':'\u2AB5','precnsim':'\u22E8','precsim':'\u227E','prime':'\u2032','Prime':'\u2033','primes':'\u2119','prnap':'\u2AB9','prnE':'\u2AB5','prnsim':'\u22E8','prod':'\u220F','Product':'\u220F','profalar':'\u232E','profline':'\u2312','profsurf':'\u2313','prop':'\u221D','Proportion':'\u2237','Proportional':'\u221D','propto':'\u221D','prsim':'\u227E','prurel':'\u22B0','pscr':'\uD835\uDCC5','Pscr':'\uD835\uDCAB','psi':'\u03C8','Psi':'\u03A8','puncsp':'\u2008','qfr':'\uD835\uDD2E','Qfr':'\uD835\uDD14','qint':'\u2A0C','qopf':'\uD835\uDD62','Qopf':'\u211A','qprime':'\u2057','qscr':'\uD835\uDCC6','Qscr':'\uD835\uDCAC','quaternions':'\u210D','quatint':'\u2A16','quest':'?','questeq':'\u225F','quot':'"','QUOT':'"','rAarr':'\u21DB','race':'\u223D\u0331','racute':'\u0155','Racute':'\u0154','radic':'\u221A','raemptyv':'\u29B3','rang':'\u27E9','Rang':'\u27EB','rangd':'\u2992','range':'\u29A5','rangle':'\u27E9','raquo':'\xBB','rarr':'\u2192','rArr':'\u21D2','Rarr':'\u21A0','rarrap':'\u2975','rarrb':'\u21E5','rarrbfs':'\u2920','rarrc':'\u2933','rarrfs':'\u291E','rarrhk':'\u21AA','rarrlp':'\u21AC','rarrpl':'\u2945','rarrsim':'\u2974','rarrtl':'\u21A3','Rarrtl':'\u2916','rarrw':'\u219D','ratail':'\u291A','rAtail':'\u291C','ratio':'\u2236','rationals':'\u211A','rbarr':'\u290D','rBarr':'\u290F','RBarr':'\u2910','rbbrk':'\u2773','rbrace':'}','rbrack':']','rbrke':'\u298C','rbrksld':'\u298E','rbrkslu':'\u2990','rcaron':'\u0159','Rcaron':'\u0158','rcedil':'\u0157','Rcedil':'\u0156','rceil':'\u2309','rcub':'}','rcy':'\u0440','Rcy':'\u0420','rdca':'\u2937','rdldhar':'\u2969','rdquo':'\u201D','rdquor':'\u201D','rdsh':'\u21B3','Re':'\u211C','real':'\u211C','realine':'\u211B','realpart':'\u211C','reals':'\u211D','rect':'\u25AD','reg':'\xAE','REG':'\xAE','ReverseElement':'\u220B','ReverseEquilibrium':'\u21CB','ReverseUpEquilibrium':'\u296F','rfisht':'\u297D','rfloor':'\u230B','rfr':'\uD835\uDD2F','Rfr':'\u211C','rHar':'\u2964','rhard':'\u21C1','rharu':'\u21C0','rharul':'\u296C','rho':'\u03C1','Rho':'\u03A1','rhov':'\u03F1','RightAngleBracket':'\u27E9','rightarrow':'\u2192','Rightarrow':'\u21D2','RightArrow':'\u2192','RightArrowBar':'\u21E5','RightArrowLeftArrow':'\u21C4','rightarrowtail':'\u21A3','RightCeiling':'\u2309','RightDoubleBracket':'\u27E7','RightDownTeeVector':'\u295D','RightDownVector':'\u21C2','RightDownVectorBar':'\u2955','RightFloor':'\u230B','rightharpoondown':'\u21C1','rightharpoonup':'\u21C0','rightleftarrows':'\u21C4','rightleftharpoons':'\u21CC','rightrightarrows':'\u21C9','rightsquigarrow':'\u219D','RightTee':'\u22A2','RightTeeArrow':'\u21A6','RightTeeVector':'\u295B','rightthreetimes':'\u22CC','RightTriangle':'\u22B3','RightTriangleBar':'\u29D0','RightTriangleEqual':'\u22B5','RightUpDownVector':'\u294F','RightUpTeeVector':'\u295C','RightUpVector':'\u21BE','RightUpVectorBar':'\u2954','RightVector':'\u21C0','RightVectorBar':'\u2953','ring':'\u02DA','risingdotseq':'\u2253','rlarr':'\u21C4','rlhar':'\u21CC','rlm':'\u200F','rmoust':'\u23B1','rmoustache':'\u23B1','rnmid':'\u2AEE','roang':'\u27ED','roarr':'\u21FE','robrk':'\u27E7','ropar':'\u2986','ropf':'\uD835\uDD63','Ropf':'\u211D','roplus':'\u2A2E','rotimes':'\u2A35','RoundImplies':'\u2970','rpar':')','rpargt':'\u2994','rppolint':'\u2A12','rrarr':'\u21C9','Rrightarrow':'\u21DB','rsaquo':'\u203A','rscr':'\uD835\uDCC7','Rscr':'\u211B','rsh':'\u21B1','Rsh':'\u21B1','rsqb':']','rsquo':'\u2019','rsquor':'\u2019','rthree':'\u22CC','rtimes':'\u22CA','rtri':'\u25B9','rtrie':'\u22B5','rtrif':'\u25B8','rtriltri':'\u29CE','RuleDelayed':'\u29F4','ruluhar':'\u2968','rx':'\u211E','sacute':'\u015B','Sacute':'\u015A','sbquo':'\u201A','sc':'\u227B','Sc':'\u2ABC','scap':'\u2AB8','scaron':'\u0161','Scaron':'\u0160','sccue':'\u227D','sce':'\u2AB0','scE':'\u2AB4','scedil':'\u015F','Scedil':'\u015E','scirc':'\u015D','Scirc':'\u015C','scnap':'\u2ABA','scnE':'\u2AB6','scnsim':'\u22E9','scpolint':'\u2A13','scsim':'\u227F','scy':'\u0441','Scy':'\u0421','sdot':'\u22C5','sdotb':'\u22A1','sdote':'\u2A66','searhk':'\u2925','searr':'\u2198','seArr':'\u21D8','searrow':'\u2198','sect':'\xA7','semi':';','seswar':'\u2929','setminus':'\u2216','setmn':'\u2216','sext':'\u2736','sfr':'\uD835\uDD30','Sfr':'\uD835\uDD16','sfrown':'\u2322','sharp':'\u266F','shchcy':'\u0449','SHCHcy':'\u0429','shcy':'\u0448','SHcy':'\u0428','ShortDownArrow':'\u2193','ShortLeftArrow':'\u2190','shortmid':'\u2223','shortparallel':'\u2225','ShortRightArrow':'\u2192','ShortUpArrow':'\u2191','shy':'\xAD','sigma':'\u03C3','Sigma':'\u03A3','sigmaf':'\u03C2','sigmav':'\u03C2','sim':'\u223C','simdot':'\u2A6A','sime':'\u2243','simeq':'\u2243','simg':'\u2A9E','simgE':'\u2AA0','siml':'\u2A9D','simlE':'\u2A9F','simne':'\u2246','simplus':'\u2A24','simrarr':'\u2972','slarr':'\u2190','SmallCircle':'\u2218','smallsetminus':'\u2216','smashp':'\u2A33','smeparsl':'\u29E4','smid':'\u2223','smile':'\u2323','smt':'\u2AAA','smte':'\u2AAC','smtes':'\u2AAC\uFE00','softcy':'\u044C','SOFTcy':'\u042C','sol':'/','solb':'\u29C4','solbar':'\u233F','sopf':'\uD835\uDD64','Sopf':'\uD835\uDD4A','spades':'\u2660','spadesuit':'\u2660','spar':'\u2225','sqcap':'\u2293','sqcaps':'\u2293\uFE00','sqcup':'\u2294','sqcups':'\u2294\uFE00','Sqrt':'\u221A','sqsub':'\u228F','sqsube':'\u2291','sqsubset':'\u228F','sqsubseteq':'\u2291','sqsup':'\u2290','sqsupe':'\u2292','sqsupset':'\u2290','sqsupseteq':'\u2292','squ':'\u25A1','square':'\u25A1','Square':'\u25A1','SquareIntersection':'\u2293','SquareSubset':'\u228F','SquareSubsetEqual':'\u2291','SquareSuperset':'\u2290','SquareSupersetEqual':'\u2292','SquareUnion':'\u2294','squarf':'\u25AA','squf':'\u25AA','srarr':'\u2192','sscr':'\uD835\uDCC8','Sscr':'\uD835\uDCAE','ssetmn':'\u2216','ssmile':'\u2323','sstarf':'\u22C6','star':'\u2606','Star':'\u22C6','starf':'\u2605','straightepsilon':'\u03F5','straightphi':'\u03D5','strns':'\xAF','sub':'\u2282','Sub':'\u22D0','subdot':'\u2ABD','sube':'\u2286','subE':'\u2AC5','subedot':'\u2AC3','submult':'\u2AC1','subne':'\u228A','subnE':'\u2ACB','subplus':'\u2ABF','subrarr':'\u2979','subset':'\u2282','Subset':'\u22D0','subseteq':'\u2286','subseteqq':'\u2AC5','SubsetEqual':'\u2286','subsetneq':'\u228A','subsetneqq':'\u2ACB','subsim':'\u2AC7','subsub':'\u2AD5','subsup':'\u2AD3','succ':'\u227B','succapprox':'\u2AB8','succcurlyeq':'\u227D','Succeeds':'\u227B','SucceedsEqual':'\u2AB0','SucceedsSlantEqual':'\u227D','SucceedsTilde':'\u227F','succeq':'\u2AB0','succnapprox':'\u2ABA','succneqq':'\u2AB6','succnsim':'\u22E9','succsim':'\u227F','SuchThat':'\u220B','sum':'\u2211','Sum':'\u2211','sung':'\u266A','sup':'\u2283','Sup':'\u22D1','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','supdot':'\u2ABE','supdsub':'\u2AD8','supe':'\u2287','supE':'\u2AC6','supedot':'\u2AC4','Superset':'\u2283','SupersetEqual':'\u2287','suphsol':'\u27C9','suphsub':'\u2AD7','suplarr':'\u297B','supmult':'\u2AC2','supne':'\u228B','supnE':'\u2ACC','supplus':'\u2AC0','supset':'\u2283','Supset':'\u22D1','supseteq':'\u2287','supseteqq':'\u2AC6','supsetneq':'\u228B','supsetneqq':'\u2ACC','supsim':'\u2AC8','supsub':'\u2AD4','supsup':'\u2AD6','swarhk':'\u2926','swarr':'\u2199','swArr':'\u21D9','swarrow':'\u2199','swnwar':'\u292A','szlig':'\xDF','Tab':'\t','target':'\u2316','tau':'\u03C4','Tau':'\u03A4','tbrk':'\u23B4','tcaron':'\u0165','Tcaron':'\u0164','tcedil':'\u0163','Tcedil':'\u0162','tcy':'\u0442','Tcy':'\u0422','tdot':'\u20DB','telrec':'\u2315','tfr':'\uD835\uDD31','Tfr':'\uD835\uDD17','there4':'\u2234','therefore':'\u2234','Therefore':'\u2234','theta':'\u03B8','Theta':'\u0398','thetasym':'\u03D1','thetav':'\u03D1','thickapprox':'\u2248','thicksim':'\u223C','ThickSpace':'\u205F\u200A','thinsp':'\u2009','ThinSpace':'\u2009','thkap':'\u2248','thksim':'\u223C','thorn':'\xFE','THORN':'\xDE','tilde':'\u02DC','Tilde':'\u223C','TildeEqual':'\u2243','TildeFullEqual':'\u2245','TildeTilde':'\u2248','times':'\xD7','timesb':'\u22A0','timesbar':'\u2A31','timesd':'\u2A30','tint':'\u222D','toea':'\u2928','top':'\u22A4','topbot':'\u2336','topcir':'\u2AF1','topf':'\uD835\uDD65','Topf':'\uD835\uDD4B','topfork':'\u2ADA','tosa':'\u2929','tprime':'\u2034','trade':'\u2122','TRADE':'\u2122','triangle':'\u25B5','triangledown':'\u25BF','triangleleft':'\u25C3','trianglelefteq':'\u22B4','triangleq':'\u225C','triangleright':'\u25B9','trianglerighteq':'\u22B5','tridot':'\u25EC','trie':'\u225C','triminus':'\u2A3A','TripleDot':'\u20DB','triplus':'\u2A39','trisb':'\u29CD','tritime':'\u2A3B','trpezium':'\u23E2','tscr':'\uD835\uDCC9','Tscr':'\uD835\uDCAF','tscy':'\u0446','TScy':'\u0426','tshcy':'\u045B','TSHcy':'\u040B','tstrok':'\u0167','Tstrok':'\u0166','twixt':'\u226C','twoheadleftarrow':'\u219E','twoheadrightarrow':'\u21A0','uacute':'\xFA','Uacute':'\xDA','uarr':'\u2191','uArr':'\u21D1','Uarr':'\u219F','Uarrocir':'\u2949','ubrcy':'\u045E','Ubrcy':'\u040E','ubreve':'\u016D','Ubreve':'\u016C','ucirc':'\xFB','Ucirc':'\xDB','ucy':'\u0443','Ucy':'\u0423','udarr':'\u21C5','udblac':'\u0171','Udblac':'\u0170','udhar':'\u296E','ufisht':'\u297E','ufr':'\uD835\uDD32','Ufr':'\uD835\uDD18','ugrave':'\xF9','Ugrave':'\xD9','uHar':'\u2963','uharl':'\u21BF','uharr':'\u21BE','uhblk':'\u2580','ulcorn':'\u231C','ulcorner':'\u231C','ulcrop':'\u230F','ultri':'\u25F8','umacr':'\u016B','Umacr':'\u016A','uml':'\xA8','UnderBar':'_','UnderBrace':'\u23DF','UnderBracket':'\u23B5','UnderParenthesis':'\u23DD','Union':'\u22C3','UnionPlus':'\u228E','uogon':'\u0173','Uogon':'\u0172','uopf':'\uD835\uDD66','Uopf':'\uD835\uDD4C','uparrow':'\u2191','Uparrow':'\u21D1','UpArrow':'\u2191','UpArrowBar':'\u2912','UpArrowDownArrow':'\u21C5','updownarrow':'\u2195','Updownarrow':'\u21D5','UpDownArrow':'\u2195','UpEquilibrium':'\u296E','upharpoonleft':'\u21BF','upharpoonright':'\u21BE','uplus':'\u228E','UpperLeftArrow':'\u2196','UpperRightArrow':'\u2197','upsi':'\u03C5','Upsi':'\u03D2','upsih':'\u03D2','upsilon':'\u03C5','Upsilon':'\u03A5','UpTee':'\u22A5','UpTeeArrow':'\u21A5','upuparrows':'\u21C8','urcorn':'\u231D','urcorner':'\u231D','urcrop':'\u230E','uring':'\u016F','Uring':'\u016E','urtri':'\u25F9','uscr':'\uD835\uDCCA','Uscr':'\uD835\uDCB0','utdot':'\u22F0','utilde':'\u0169','Utilde':'\u0168','utri':'\u25B5','utrif':'\u25B4','uuarr':'\u21C8','uuml':'\xFC','Uuml':'\xDC','uwangle':'\u29A7','vangrt':'\u299C','varepsilon':'\u03F5','varkappa':'\u03F0','varnothing':'\u2205','varphi':'\u03D5','varpi':'\u03D6','varpropto':'\u221D','varr':'\u2195','vArr':'\u21D5','varrho':'\u03F1','varsigma':'\u03C2','varsubsetneq':'\u228A\uFE00','varsubsetneqq':'\u2ACB\uFE00','varsupsetneq':'\u228B\uFE00','varsupsetneqq':'\u2ACC\uFE00','vartheta':'\u03D1','vartriangleleft':'\u22B2','vartriangleright':'\u22B3','vBar':'\u2AE8','Vbar':'\u2AEB','vBarv':'\u2AE9','vcy':'\u0432','Vcy':'\u0412','vdash':'\u22A2','vDash':'\u22A8','Vdash':'\u22A9','VDash':'\u22AB','Vdashl':'\u2AE6','vee':'\u2228','Vee':'\u22C1','veebar':'\u22BB','veeeq':'\u225A','vellip':'\u22EE','verbar':'|','Verbar':'\u2016','vert':'|','Vert':'\u2016','VerticalBar':'\u2223','VerticalLine':'|','VerticalSeparator':'\u2758','VerticalTilde':'\u2240','VeryThinSpace':'\u200A','vfr':'\uD835\uDD33','Vfr':'\uD835\uDD19','vltri':'\u22B2','vnsub':'\u2282\u20D2','vnsup':'\u2283\u20D2','vopf':'\uD835\uDD67','Vopf':'\uD835\uDD4D','vprop':'\u221D','vrtri':'\u22B3','vscr':'\uD835\uDCCB','Vscr':'\uD835\uDCB1','vsubne':'\u228A\uFE00','vsubnE':'\u2ACB\uFE00','vsupne':'\u228B\uFE00','vsupnE':'\u2ACC\uFE00','Vvdash':'\u22AA','vzigzag':'\u299A','wcirc':'\u0175','Wcirc':'\u0174','wedbar':'\u2A5F','wedge':'\u2227','Wedge':'\u22C0','wedgeq':'\u2259','weierp':'\u2118','wfr':'\uD835\uDD34','Wfr':'\uD835\uDD1A','wopf':'\uD835\uDD68','Wopf':'\uD835\uDD4E','wp':'\u2118','wr':'\u2240','wreath':'\u2240','wscr':'\uD835\uDCCC','Wscr':'\uD835\uDCB2','xcap':'\u22C2','xcirc':'\u25EF','xcup':'\u22C3','xdtri':'\u25BD','xfr':'\uD835\uDD35','Xfr':'\uD835\uDD1B','xharr':'\u27F7','xhArr':'\u27FA','xi':'\u03BE','Xi':'\u039E','xlarr':'\u27F5','xlArr':'\u27F8','xmap':'\u27FC','xnis':'\u22FB','xodot':'\u2A00','xopf':'\uD835\uDD69','Xopf':'\uD835\uDD4F','xoplus':'\u2A01','xotime':'\u2A02','xrarr':'\u27F6','xrArr':'\u27F9','xscr':'\uD835\uDCCD','Xscr':'\uD835\uDCB3','xsqcup':'\u2A06','xuplus':'\u2A04','xutri':'\u25B3','xvee':'\u22C1','xwedge':'\u22C0','yacute':'\xFD','Yacute':'\xDD','yacy':'\u044F','YAcy':'\u042F','ycirc':'\u0177','Ycirc':'\u0176','ycy':'\u044B','Ycy':'\u042B','yen':'\xA5','yfr':'\uD835\uDD36','Yfr':'\uD835\uDD1C','yicy':'\u0457','YIcy':'\u0407','yopf':'\uD835\uDD6A','Yopf':'\uD835\uDD50','yscr':'\uD835\uDCCE','Yscr':'\uD835\uDCB4','yucy':'\u044E','YUcy':'\u042E','yuml':'\xFF','Yuml':'\u0178','zacute':'\u017A','Zacute':'\u0179','zcaron':'\u017E','Zcaron':'\u017D','zcy':'\u0437','Zcy':'\u0417','zdot':'\u017C','Zdot':'\u017B','zeetrf':'\u2128','ZeroWidthSpace':'\u200B','zeta':'\u03B6','Zeta':'\u0396','zfr':'\uD835\uDD37','Zfr':'\u2128','zhcy':'\u0436','ZHcy':'\u0416','zigrarr':'\u21DD','zopf':'\uD835\uDD6B','Zopf':'\u2124','zscr':'\uD835\uDCCF','Zscr':'\uD835\uDCB5','zwj':'\u200D','zwnj':'\u200C'};
var decodeMapLegacy = {'aacute':'\xE1','Aacute':'\xC1','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','aelig':'\xE6','AElig':'\xC6','agrave':'\xE0','Agrave':'\xC0','amp':'&','AMP':'&','aring':'\xE5','Aring':'\xC5','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','brvbar':'\xA6','ccedil':'\xE7','Ccedil':'\xC7','cedil':'\xB8','cent':'\xA2','copy':'\xA9','COPY':'\xA9','curren':'\xA4','deg':'\xB0','divide':'\xF7','eacute':'\xE9','Eacute':'\xC9','ecirc':'\xEA','Ecirc':'\xCA','egrave':'\xE8','Egrave':'\xC8','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','frac12':'\xBD','frac14':'\xBC','frac34':'\xBE','gt':'>','GT':'>','iacute':'\xED','Iacute':'\xCD','icirc':'\xEE','Icirc':'\xCE','iexcl':'\xA1','igrave':'\xEC','Igrave':'\xCC','iquest':'\xBF','iuml':'\xEF','Iuml':'\xCF','laquo':'\xAB','lt':'<','LT':'<','macr':'\xAF','micro':'\xB5','middot':'\xB7','nbsp':'\xA0','not':'\xAC','ntilde':'\xF1','Ntilde':'\xD1','oacute':'\xF3','Oacute':'\xD3','ocirc':'\xF4','Ocirc':'\xD4','ograve':'\xF2','Ograve':'\xD2','ordf':'\xAA','ordm':'\xBA','oslash':'\xF8','Oslash':'\xD8','otilde':'\xF5','Otilde':'\xD5','ouml':'\xF6','Ouml':'\xD6','para':'\xB6','plusmn':'\xB1','pound':'\xA3','quot':'"','QUOT':'"','raquo':'\xBB','reg':'\xAE','REG':'\xAE','sect':'\xA7','shy':'\xAD','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','szlig':'\xDF','thorn':'\xFE','THORN':'\xDE','times':'\xD7','uacute':'\xFA','Uacute':'\xDA','ucirc':'\xFB','Ucirc':'\xDB','ugrave':'\xF9','Ugrave':'\xD9','uml':'\xA8','uuml':'\xFC','Uuml':'\xDC','yacute':'\xFD','Yacute':'\xDD','yen':'\xA5','yuml':'\xFF'};
var decodeMapNumeric = {'0':'\uFFFD','128':'\u20AC','130':'\u201A','131':'\u0192','132':'\u201E','133':'\u2026','134':'\u2020','135':'\u2021','136':'\u02C6','137':'\u2030','138':'\u0160','139':'\u2039','140':'\u0152','142':'\u017D','145':'\u2018','146':'\u2019','147':'\u201C','148':'\u201D','149':'\u2022','150':'\u2013','151':'\u2014','152':'\u02DC','153':'\u2122','154':'\u0161','155':'\u203A','156':'\u0153','158':'\u017E','159':'\u0178'};
var invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111];

/*--------------------------------------------------------------------------*/

var stringFromCharCode = String.fromCharCode;

var object = {};
var hasOwnProperty = object.hasOwnProperty;
var has = function(object, propertyName) {
        return hasOwnProperty.call(object, propertyName);
};

var contains = function(array, value) {
        var index = -1;
        var length = array.length;
        while (++index < length) {
                if (array[index] == value) {
                        return true;
                }
        }
        return false;
};

var merge = function(options, defaults) {
        if (!options) {
                return defaults;
        }
        var result = {};
        var key;
        for (key in defaults) {
                // A `hasOwnProperty` check is not needed here, since only recognized
                // option names are used anyway. Any others are ignored.
                result[key] = has(options, key) ? options[key] : defaults[key];
        }
        return result;
};

// Modified version of `ucs2encode`; see https://mths.be/punycode.
var codePointToSymbol = function(codePoint, strict) {
        var output = '';
        if ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) {
                // See issue #4:
                // “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is
                // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD
                // REPLACEMENT CHARACTER.”
                if (strict) {
                        parseError('character reference outside the permissible Unicode range');
                }
                return '\uFFFD';
        }
        if (has(decodeMapNumeric, codePoint)) {
                if (strict) {
                        parseError('disallowed character reference');
                }
                return decodeMapNumeric[codePoint];
        }
        if (strict && contains(invalidReferenceCodePoints, codePoint)) {
                parseError('disallowed character reference');
        }
        if (codePoint > 0xFFFF) {
                codePoint -= 0x10000;
                output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);
                codePoint = 0xDC00 | codePoint & 0x3FF;
        }
        output += stringFromCharCode(codePoint);
        return output;
};

var hexEscape = function(codePoint) {
        return '&#x' + codePoint.toString(16).toUpperCase() + ';';
};

var decEscape = function(codePoint) {
        return '&#' + codePoint + ';';
};

var parseError = function(message) {
        throw Error('Parse error: ' + message);
};

/*--------------------------------------------------------------------------*/

var encode = function(string, options) {
        options = merge(options, encode.options);
        var strict = options.strict;
        if (strict && regexInvalidRawCodePoint.test(string)) {
                parseError('forbidden code point');
        }
        var encodeEverything = options.encodeEverything;
        var useNamedReferences = options.useNamedReferences;
        var allowUnsafeSymbols = options.allowUnsafeSymbols;
        var escapeCodePoint = options.decimal ? decEscape : hexEscape;

        var escapeBmpSymbol = function(symbol) {
                return escapeCodePoint(symbol.charCodeAt(0));
        };

        if (encodeEverything) {
                // Encode ASCII symbols.
                string = string.replace(regexAsciiWhitelist, function(symbol) {
                        // Use named references if requested & possible.
                        if (useNamedReferences && has(encodeMap, symbol)) {
                                return '&' + encodeMap[symbol] + ';';
                        }
                        return escapeBmpSymbol(symbol);
                });
                // Shorten a few escapes that represent two symbols, of which at least one
                // is within the ASCII range.
                if (useNamedReferences) {
                        string = string
                                .replace(/&gt;\u20D2/g, '&nvgt;')
                                .replace(/&lt;\u20D2/g, '&nvlt;')
                                .replace(/&#x66;&#x6A;/g, '&fjlig;');
                }
                // Encode non-ASCII symbols.
                if (useNamedReferences) {
                        // Encode non-ASCII symbols that can be replaced with a named reference.
                        string = string.replace(regexEncodeNonAscii, function(string) {
                                // Note: there is no need to check `has(encodeMap, string)` here.
                                return '&' + encodeMap[string] + ';';
                        });
                }
                // Note: any remaining non-ASCII symbols are handled outside of the `if`.
        } else if (useNamedReferences) {
                // Apply named character references.
                // Encode `<>"'&` using named character references.
                if (!allowUnsafeSymbols) {
                        string = string.replace(regexEscape, function(string) {
                                return '&' + encodeMap[string] + ';'; // no need to check `has()` here
                        });
                }
                // Shorten escapes that represent two symbols, of which at least one is
                // `<>"'&`.
                string = string
                        .replace(/&gt;\u20D2/g, '&nvgt;')
                        .replace(/&lt;\u20D2/g, '&nvlt;');
                // Encode non-ASCII symbols that can be replaced with a named reference.
                string = string.replace(regexEncodeNonAscii, function(string) {
                        // Note: there is no need to check `has(encodeMap, string)` here.
                        return '&' + encodeMap[string] + ';';
                });
        } else if (!allowUnsafeSymbols) {
                // Encode `<>"'&` using hexadecimal escapes, now that they’re not handled
                // using named character references.
                string = string.replace(regexEscape, escapeBmpSymbol);
        }
        return string
                // Encode astral symbols.
                .replace(regexAstralSymbols, function($0) {
                        // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
                        var high = $0.charCodeAt(0);
                        var low = $0.charCodeAt(1);
                        var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;
                        return escapeCodePoint(codePoint);
                })
                // Encode any remaining BMP symbols that are not printable ASCII symbols
                // using a hexadecimal escape.
                .replace(regexBmpWhitelist, escapeBmpSymbol);
};
// Expose default options (so they can be overridden globally).
encode.options = {
        'allowUnsafeSymbols': false,
        'encodeEverything': false,
        'strict': false,
        'useNamedReferences': false,
        'decimal' : false
};

var decode = function(html, options) {
        options = merge(options, decode.options);
        var strict = options.strict;
        if (strict && regexInvalidEntity.test(html)) {
                parseError('malformed character reference');
        }
        return html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7) {
                var codePoint;
                var semicolon;
                var decDigits;
                var hexDigits;
                var reference;
                var next;
                if ($1) {
                        // Decode decimal escapes, e.g. `&#119558;`.
                        decDigits = $1;
                        semicolon = $2;
                        if (strict && !semicolon) {
                                parseError('character reference was not terminated by a semicolon');
                        }
                        codePoint = parseInt(decDigits, 10);
                        return codePointToSymbol(codePoint, strict);
                }
                if ($3) {
                        // Decode hexadecimal escapes, e.g. `&#x1D306;`.
                        hexDigits = $3;
                        semicolon = $4;
                        if (strict && !semicolon) {
                                parseError('character reference was not terminated by a semicolon');
                        }
                        codePoint = parseInt(hexDigits, 16);
                        return codePointToSymbol(codePoint, strict);
                }
                if ($5) {
                        // Decode named character references with trailing `;`, e.g. `&copy;`.
                        reference = $5;
                        if (has(decodeMap, reference)) {
                                return decodeMap[reference];
                        } else {
                                // Ambiguous ampersand. https://mths.be/notes/ambiguous-ampersands
                                if (strict) {
                                        parseError(
                                                'named character reference was not terminated by a semicolon'
                                        );
                                }
                                return $0;
                        }
                }
                // If we’re still here, it’s a legacy reference for sure. No need for an
                // extra `if` check.
                // Decode named character references without trailing `;`, e.g. `&amp`
                // This is only a parse error if it gets converted to `&`, or if it is
                // followed by `=` in an attribute context.
                reference = $6;
                next = $7;
                if (next && options.isAttributeValue) {
                        if (strict && next == '=') {
                                parseError('`&` did not start a character reference');
                        }
                        return $0;
                } else {
                        if (strict) {
                                parseError(
                                        'named character reference was not terminated by a semicolon'
                                );
                        }
                        // Note: there is no need to check `has(decodeMapLegacy, reference)`.
                        return decodeMapLegacy[reference] + (next || '');
                }
        });
};
// Expose default options (so they can be overridden globally).
decode.options = {
        'isAttributeValue': false,
        'strict': false
};

var escape = function(string) {
        return string.replace(regexEscape, function($0) {
                // Note: there is no need to check `has(escapeMap, $0)` here.
                return escapeMap[$0];
        });
};

/*--------------------------------------------------------------------------*/

var he = {
        'version': '1.1.1',
        'encode': encode,
        'decode': decode,
        'escape': escape,
        'unescape': decode
};

// Some AMD build optimizers, like r.js, check for specific condition patterns
// like the following:
if (
        typeof define == 'function' &&
        typeof define.amd == 'object' &&
        define.amd
) {
        define(function() {
                return he;
        });
}       else if (freeExports && !freeExports.nodeType) {
        if (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+
                freeModule.exports = he;
        } else { // in Narwhal or RingoJS v0.7.0-
                for (var key in he) {
                        has(he, key) && (freeExports[key] = he[key]);
                }
        }
} else { // in Rhino or a web browser
        root.he = he;
}

}(this));

/* WEBPACK VAR INJECTION */}.call(this, webpack_require(/*! ./../webpack/buildin/module.js */ “./node_modules/webpack/buildin/module.js”)(module), webpack_require(/*! ./../webpack/buildin/global.js */ “./node_modules/webpack/buildin/global.js”)))

/***/ }),

/***/ “./node_modules/lodash/lodash.js”: /*!***************************************!*\

!*** ./node_modules/lodash/lodash.js ***!
\***************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

/* WEBPACK VAR INJECTION */(function(global, module) {/**

* @license
* Lodash <https://lodash.com/>
* Copyright JS Foundation and other contributors <https://js.foundation/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/

;(function() {

/** Used as a safe reference for `undefined` in pre-ES5 environments. */
var undefined;

/** Used as the semantic version number. */
var VERSION = '4.17.5';

/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;

/** Error message constants. */
var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
    FUNC_ERROR_TEXT = 'Expected a function';

/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED = '__lodash_hash_undefined__';

/** Used as the maximum memoize cache size. */
var MAX_MEMOIZE_SIZE = 500;

/** Used as the internal argument placeholder. */
var PLACEHOLDER = '__lodash_placeholder__';

/** Used to compose bitmasks for cloning. */
var CLONE_DEEP_FLAG = 1,
    CLONE_FLAT_FLAG = 2,
    CLONE_SYMBOLS_FLAG = 4;

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1,
    COMPARE_UNORDERED_FLAG = 2;

/** Used to compose bitmasks for function metadata. */
var WRAP_BIND_FLAG = 1,
    WRAP_BIND_KEY_FLAG = 2,
    WRAP_CURRY_BOUND_FLAG = 4,
    WRAP_CURRY_FLAG = 8,
    WRAP_CURRY_RIGHT_FLAG = 16,
    WRAP_PARTIAL_FLAG = 32,
    WRAP_PARTIAL_RIGHT_FLAG = 64,
    WRAP_ARY_FLAG = 128,
    WRAP_REARG_FLAG = 256,
    WRAP_FLIP_FLAG = 512;

/** Used as default options for `_.truncate`. */
var DEFAULT_TRUNC_LENGTH = 30,
    DEFAULT_TRUNC_OMISSION = '...';

/** Used to detect hot functions by number of calls within a span of milliseconds. */
var HOT_COUNT = 800,
    HOT_SPAN = 16;

/** Used to indicate the type of lazy iteratees. */
var LAZY_FILTER_FLAG = 1,
    LAZY_MAP_FLAG = 2,
    LAZY_WHILE_FLAG = 3;

/** Used as references for various `Number` constants. */
var INFINITY = 1 / 0,
    MAX_SAFE_INTEGER = 9007199254740991,
    MAX_INTEGER = 1.7976931348623157e+308,
    NAN = 0 / 0;

/** Used as references for the maximum length and index of an array. */
var MAX_ARRAY_LENGTH = 4294967295,
    MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
    HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;

/** Used to associate wrap methods with their bit flags. */
var wrapFlags = [
  ['ary', WRAP_ARY_FLAG],
  ['bind', WRAP_BIND_FLAG],
  ['bindKey', WRAP_BIND_KEY_FLAG],
  ['curry', WRAP_CURRY_FLAG],
  ['curryRight', WRAP_CURRY_RIGHT_FLAG],
  ['flip', WRAP_FLIP_FLAG],
  ['partial', WRAP_PARTIAL_FLAG],
  ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
  ['rearg', WRAP_REARG_FLAG]
];

/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
    arrayTag = '[object Array]',
    asyncTag = '[object AsyncFunction]',
    boolTag = '[object Boolean]',
    dateTag = '[object Date]',
    domExcTag = '[object DOMException]',
    errorTag = '[object Error]',
    funcTag = '[object Function]',
    genTag = '[object GeneratorFunction]',
    mapTag = '[object Map]',
    numberTag = '[object Number]',
    nullTag = '[object Null]',
    objectTag = '[object Object]',
    promiseTag = '[object Promise]',
    proxyTag = '[object Proxy]',
    regexpTag = '[object RegExp]',
    setTag = '[object Set]',
    stringTag = '[object String]',
    symbolTag = '[object Symbol]',
    undefinedTag = '[object Undefined]',
    weakMapTag = '[object WeakMap]',
    weakSetTag = '[object WeakSet]';

var arrayBufferTag = '[object ArrayBuffer]',
    dataViewTag = '[object DataView]',
    float32Tag = '[object Float32Array]',
    float64Tag = '[object Float64Array]',
    int8Tag = '[object Int8Array]',
    int16Tag = '[object Int16Array]',
    int32Tag = '[object Int32Array]',
    uint8Tag = '[object Uint8Array]',
    uint8ClampedTag = '[object Uint8ClampedArray]',
    uint16Tag = '[object Uint16Array]',
    uint32Tag = '[object Uint32Array]';

/** Used to match empty string literals in compiled template source. */
var reEmptyStringLeading = /\b__p \+= '';/g,
    reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
    reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;

/** Used to match HTML entities and HTML characters. */
var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
    reUnescapedHtml = /[&<>"']/g,
    reHasEscapedHtml = RegExp(reEscapedHtml.source),
    reHasUnescapedHtml = RegExp(reUnescapedHtml.source);

/** Used to match template delimiters. */
var reEscape = /<%-([\s\S]+?)%>/g,
    reEvaluate = /<%([\s\S]+?)%>/g,
    reInterpolate = /<%=([\s\S]+?)%>/g;

/** Used to match property names within property paths. */
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
    reIsPlainProp = /^\w*$/,
    rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;

/**
 * Used to match `RegExp`
 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
 */
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
    reHasRegExpChar = RegExp(reRegExpChar.source);

/** Used to match leading and trailing whitespace. */
var reTrim = /^\s+|\s+$/g,
    reTrimStart = /^\s+/,
    reTrimEnd = /\s+$/;

/** Used to match wrap detail comments. */
var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
    reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
    reSplitDetails = /,? & /;

/** Used to match words composed of alphanumeric characters. */
var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;

/** Used to match backslashes in property paths. */
var reEscapeChar = /\\(\\)?/g;

/**
 * Used to match
 * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
 */
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;

/** Used to match `RegExp` flags from their coerced string values. */
var reFlags = /\w*$/;

/** Used to detect bad signed hexadecimal string values. */
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;

/** Used to detect binary string values. */
var reIsBinary = /^0b[01]+$/i;

/** Used to detect host constructors (Safari). */
var reIsHostCtor = /^\[object .+?Constructor\]$/;

/** Used to detect octal string values. */
var reIsOctal = /^0o[0-7]+$/i;

/** Used to detect unsigned integer values. */
var reIsUint = /^(?:0|[1-9]\d*)$/;

/** Used to match Latin Unicode letters (excluding mathematical operators). */
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;

/** Used to ensure capturing order of template delimiters. */
var reNoMatch = /($^)/;

/** Used to match unescaped characters in compiled string literals. */
var reUnescapedString = /['\n\r\u2028\u2029\\]/g;

/** Used to compose unicode character classes. */
var rsAstralRange = '\\ud800-\\udfff',
    rsComboMarksRange = '\\u0300-\\u036f',
    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
    rsComboSymbolsRange = '\\u20d0-\\u20ff',
    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
    rsDingbatRange = '\\u2700-\\u27bf',
    rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
    rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
    rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
    rsPunctuationRange = '\\u2000-\\u206f',
    rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
    rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
    rsVarRange = '\\ufe0e\\ufe0f',
    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;

/** Used to compose unicode capture groups. */
var rsApos = "['\u2019]",
    rsAstral = '[' + rsAstralRange + ']',
    rsBreak = '[' + rsBreakRange + ']',
    rsCombo = '[' + rsComboRange + ']',
    rsDigits = '\\d+',
    rsDingbat = '[' + rsDingbatRange + ']',
    rsLower = '[' + rsLowerRange + ']',
    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
    rsFitz = '\\ud83c[\\udffb-\\udfff]',
    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
    rsNonAstral = '[^' + rsAstralRange + ']',
    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
    rsUpper = '[' + rsUpperRange + ']',
    rsZWJ = '\\u200d';

/** Used to compose unicode regexes. */
var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
    reOptMod = rsModifier + '?',
    rsOptVar = '[' + rsVarRange + ']?',
    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
    rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
    rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
    rsSeq = rsOptVar + reOptMod + rsOptJoin,
    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';

/** Used to match apostrophes. */
var reApos = RegExp(rsApos, 'g');

/**
 * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
 * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
 */
var reComboMark = RegExp(rsCombo, 'g');

/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');

/** Used to match complex or compound words. */
var reUnicodeWord = RegExp([
  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
  rsUpper + '+' + rsOptContrUpper,
  rsOrdUpper,
  rsOrdLower,
  rsDigits,
  rsEmoji
].join('|'), 'g');

/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');

/** Used to detect strings that need a more robust regexp to match words. */
var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;

/** Used to assign default `context` object properties. */
var contextProps = [
  'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
  'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
  'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
  'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
  '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
];

/** Used to make template sourceURLs easier to identify. */
var templateCounter = -1;

/** Used to identify `toStringTag` values of typed arrays. */
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
typedArrayTags[errorTag] = typedArrayTags[funcTag] =
typedArrayTags[mapTag] = typedArrayTags[numberTag] =
typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
typedArrayTags[setTag] = typedArrayTags[stringTag] =
typedArrayTags[weakMapTag] = false;

/** Used to identify `toStringTag` values supported by `_.clone`. */
var cloneableTags = {};
cloneableTags[argsTag] = cloneableTags[arrayTag] =
cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
cloneableTags[boolTag] = cloneableTags[dateTag] =
cloneableTags[float32Tag] = cloneableTags[float64Tag] =
cloneableTags[int8Tag] = cloneableTags[int16Tag] =
cloneableTags[int32Tag] = cloneableTags[mapTag] =
cloneableTags[numberTag] = cloneableTags[objectTag] =
cloneableTags[regexpTag] = cloneableTags[setTag] =
cloneableTags[stringTag] = cloneableTags[symbolTag] =
cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
cloneableTags[errorTag] = cloneableTags[funcTag] =
cloneableTags[weakMapTag] = false;

/** Used to map Latin Unicode letters to basic Latin letters. */
var deburredLetters = {
  // Latin-1 Supplement block.
  '\xc0': 'A',  '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
  '\xe0': 'a',  '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
  '\xc7': 'C',  '\xe7': 'c',
  '\xd0': 'D',  '\xf0': 'd',
  '\xc8': 'E',  '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
  '\xe8': 'e',  '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
  '\xcc': 'I',  '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
  '\xec': 'i',  '\xed': 'i', '\xee': 'i', '\xef': 'i',
  '\xd1': 'N',  '\xf1': 'n',
  '\xd2': 'O',  '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
  '\xf2': 'o',  '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
  '\xd9': 'U',  '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
  '\xf9': 'u',  '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
  '\xdd': 'Y',  '\xfd': 'y', '\xff': 'y',
  '\xc6': 'Ae', '\xe6': 'ae',
  '\xde': 'Th', '\xfe': 'th',
  '\xdf': 'ss',
  // Latin Extended-A block.
  '\u0100': 'A',  '\u0102': 'A', '\u0104': 'A',
  '\u0101': 'a',  '\u0103': 'a', '\u0105': 'a',
  '\u0106': 'C',  '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
  '\u0107': 'c',  '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
  '\u010e': 'D',  '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
  '\u0112': 'E',  '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
  '\u0113': 'e',  '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
  '\u011c': 'G',  '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
  '\u011d': 'g',  '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
  '\u0124': 'H',  '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
  '\u0128': 'I',  '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
  '\u0129': 'i',  '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
  '\u0134': 'J',  '\u0135': 'j',
  '\u0136': 'K',  '\u0137': 'k', '\u0138': 'k',
  '\u0139': 'L',  '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
  '\u013a': 'l',  '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
  '\u0143': 'N',  '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
  '\u0144': 'n',  '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
  '\u014c': 'O',  '\u014e': 'O', '\u0150': 'O',
  '\u014d': 'o',  '\u014f': 'o', '\u0151': 'o',
  '\u0154': 'R',  '\u0156': 'R', '\u0158': 'R',
  '\u0155': 'r',  '\u0157': 'r', '\u0159': 'r',
  '\u015a': 'S',  '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
  '\u015b': 's',  '\u015d': 's', '\u015f': 's', '\u0161': 's',
  '\u0162': 'T',  '\u0164': 'T', '\u0166': 'T',
  '\u0163': 't',  '\u0165': 't', '\u0167': 't',
  '\u0168': 'U',  '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
  '\u0169': 'u',  '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
  '\u0174': 'W',  '\u0175': 'w',
  '\u0176': 'Y',  '\u0177': 'y', '\u0178': 'Y',
  '\u0179': 'Z',  '\u017b': 'Z', '\u017d': 'Z',
  '\u017a': 'z',  '\u017c': 'z', '\u017e': 'z',
  '\u0132': 'IJ', '\u0133': 'ij',
  '\u0152': 'Oe', '\u0153': 'oe',
  '\u0149': "'n", '\u017f': 's'
};

/** Used to map characters to HTML entities. */
var htmlEscapes = {
  '&': '&amp;',
  '<': '&lt;',
  '>': '&gt;',
  '"': '&quot;',
  "'": '&#39;'
};

/** Used to map HTML entities to characters. */
var htmlUnescapes = {
  '&amp;': '&',
  '&lt;': '<',
  '&gt;': '>',
  '&quot;': '"',
  '&#39;': "'"
};

/** Used to escape characters for inclusion in compiled string literals. */
var stringEscapes = {
  '\\': '\\',
  "'": "'",
  '\n': 'n',
  '\r': 'r',
  '\u2028': 'u2028',
  '\u2029': 'u2029'
};

/** Built-in method references without a dependency on `root`. */
var freeParseFloat = parseFloat,
    freeParseInt = parseInt;

/** Detect free variable `global` from Node.js. */
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;

/** Detect free variable `self`. */
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;

/** Used as a reference to the global object. */
var root = freeGlobal || freeSelf || Function('return this')();

/** Detect free variable `exports`. */
var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;

/** Detect free variable `module`. */
var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;

/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;

/** Detect free variable `process` from Node.js. */
var freeProcess = moduleExports && freeGlobal.process;

/** Used to access faster Node.js helpers. */
var nodeUtil = (function() {
  try {
    return freeProcess && freeProcess.binding && freeProcess.binding('util');
  } catch (e) {}
}());

/* Node.js helper references. */
var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
    nodeIsDate = nodeUtil && nodeUtil.isDate,
    nodeIsMap = nodeUtil && nodeUtil.isMap,
    nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
    nodeIsSet = nodeUtil && nodeUtil.isSet,
    nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;

/*--------------------------------------------------------------------------*/

/**
 * A faster alternative to `Function#apply`, this function invokes `func`
 * with the `this` binding of `thisArg` and the arguments of `args`.
 *
 * @private
 * @param {Function} func The function to invoke.
 * @param {*} thisArg The `this` binding of `func`.
 * @param {Array} args The arguments to invoke `func` with.
 * @returns {*} Returns the result of `func`.
 */
function apply(func, thisArg, args) {
  switch (args.length) {
    case 0: return func.call(thisArg);
    case 1: return func.call(thisArg, args[0]);
    case 2: return func.call(thisArg, args[0], args[1]);
    case 3: return func.call(thisArg, args[0], args[1], args[2]);
  }
  return func.apply(thisArg, args);
}

/**
 * A specialized version of `baseAggregator` for arrays.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} setter The function to set `accumulator` values.
 * @param {Function} iteratee The iteratee to transform keys.
 * @param {Object} accumulator The initial aggregated object.
 * @returns {Function} Returns `accumulator`.
 */
function arrayAggregator(array, setter, iteratee, accumulator) {
  var index = -1,
      length = array == null ? 0 : array.length;

  while (++index < length) {
    var value = array[index];
    setter(accumulator, value, iteratee(value), array);
  }
  return accumulator;
}

/**
 * A specialized version of `_.forEach` for arrays without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns `array`.
 */
function arrayEach(array, iteratee) {
  var index = -1,
      length = array == null ? 0 : array.length;

  while (++index < length) {
    if (iteratee(array[index], index, array) === false) {
      break;
    }
  }
  return array;
}

/**
 * A specialized version of `_.forEachRight` for arrays without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns `array`.
 */
function arrayEachRight(array, iteratee) {
  var length = array == null ? 0 : array.length;

  while (length--) {
    if (iteratee(array[length], length, array) === false) {
      break;
    }
  }
  return array;
}

/**
 * A specialized version of `_.every` for arrays without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {boolean} Returns `true` if all elements pass the predicate check,
 *  else `false`.
 */
function arrayEvery(array, predicate) {
  var index = -1,
      length = array == null ? 0 : array.length;

  while (++index < length) {
    if (!predicate(array[index], index, array)) {
      return false;
    }
  }
  return true;
}

/**
 * A specialized version of `_.filter` for arrays without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {Array} Returns the new filtered array.
 */
function arrayFilter(array, predicate) {
  var index = -1,
      length = array == null ? 0 : array.length,
      resIndex = 0,
      result = [];

  while (++index < length) {
    var value = array[index];
    if (predicate(value, index, array)) {
      result[resIndex++] = value;
    }
  }
  return result;
}

/**
 * A specialized version of `_.includes` for arrays without support for
 * specifying an index to search from.
 *
 * @private
 * @param {Array} [array] The array to inspect.
 * @param {*} target The value to search for.
 * @returns {boolean} Returns `true` if `target` is found, else `false`.
 */
function arrayIncludes(array, value) {
  var length = array == null ? 0 : array.length;
  return !!length && baseIndexOf(array, value, 0) > -1;
}

/**
 * This function is like `arrayIncludes` except that it accepts a comparator.
 *
 * @private
 * @param {Array} [array] The array to inspect.
 * @param {*} target The value to search for.
 * @param {Function} comparator The comparator invoked per element.
 * @returns {boolean} Returns `true` if `target` is found, else `false`.
 */
function arrayIncludesWith(array, value, comparator) {
  var index = -1,
      length = array == null ? 0 : array.length;

  while (++index < length) {
    if (comparator(value, array[index])) {
      return true;
    }
  }
  return false;
}

/**
 * A specialized version of `_.map` for arrays without support for iteratee
 * shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns the new mapped array.
 */
function arrayMap(array, iteratee) {
  var index = -1,
      length = array == null ? 0 : array.length,
      result = Array(length);

  while (++index < length) {
    result[index] = iteratee(array[index], index, array);
  }
  return result;
}

/**
 * Appends the elements of `values` to `array`.
 *
 * @private
 * @param {Array} array The array to modify.
 * @param {Array} values The values to append.
 * @returns {Array} Returns `array`.
 */
function arrayPush(array, values) {
  var index = -1,
      length = values.length,
      offset = array.length;

  while (++index < length) {
    array[offset + index] = values[index];
  }
  return array;
}

/**
 * A specialized version of `_.reduce` for arrays without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @param {*} [accumulator] The initial value.
 * @param {boolean} [initAccum] Specify using the first element of `array` as
 *  the initial value.
 * @returns {*} Returns the accumulated value.
 */
function arrayReduce(array, iteratee, accumulator, initAccum) {
  var index = -1,
      length = array == null ? 0 : array.length;

  if (initAccum && length) {
    accumulator = array[++index];
  }
  while (++index < length) {
    accumulator = iteratee(accumulator, array[index], index, array);
  }
  return accumulator;
}

/**
 * A specialized version of `_.reduceRight` for arrays without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @param {*} [accumulator] The initial value.
 * @param {boolean} [initAccum] Specify using the last element of `array` as
 *  the initial value.
 * @returns {*} Returns the accumulated value.
 */
function arrayReduceRight(array, iteratee, accumulator, initAccum) {
  var length = array == null ? 0 : array.length;
  if (initAccum && length) {
    accumulator = array[--length];
  }
  while (length--) {
    accumulator = iteratee(accumulator, array[length], length, array);
  }
  return accumulator;
}

/**
 * A specialized version of `_.some` for arrays without support for iteratee
 * shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {boolean} Returns `true` if any element passes the predicate check,
 *  else `false`.
 */
function arraySome(array, predicate) {
  var index = -1,
      length = array == null ? 0 : array.length;

  while (++index < length) {
    if (predicate(array[index], index, array)) {
      return true;
    }
  }
  return false;
}

/**
 * Gets the size of an ASCII `string`.
 *
 * @private
 * @param {string} string The string inspect.
 * @returns {number} Returns the string size.
 */
var asciiSize = baseProperty('length');

/**
 * Converts an ASCII `string` to an array.
 *
 * @private
 * @param {string} string The string to convert.
 * @returns {Array} Returns the converted array.
 */
function asciiToArray(string) {
  return string.split('');
}

/**
 * Splits an ASCII `string` into an array of its words.
 *
 * @private
 * @param {string} The string to inspect.
 * @returns {Array} Returns the words of `string`.
 */
function asciiWords(string) {
  return string.match(reAsciiWord) || [];
}

/**
 * The base implementation of methods like `_.findKey` and `_.findLastKey`,
 * without support for iteratee shorthands, which iterates over `collection`
 * using `eachFunc`.
 *
 * @private
 * @param {Array|Object} collection The collection to inspect.
 * @param {Function} predicate The function invoked per iteration.
 * @param {Function} eachFunc The function to iterate over `collection`.
 * @returns {*} Returns the found element or its key, else `undefined`.
 */
function baseFindKey(collection, predicate, eachFunc) {
  var result;
  eachFunc(collection, function(value, key, collection) {
    if (predicate(value, key, collection)) {
      result = key;
      return false;
    }
  });
  return result;
}

/**
 * The base implementation of `_.findIndex` and `_.findLastIndex` without
 * support for iteratee shorthands.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {Function} predicate The function invoked per iteration.
 * @param {number} fromIndex The index to search from.
 * @param {boolean} [fromRight] Specify iterating from right to left.
 * @returns {number} Returns the index of the matched value, else `-1`.
 */
function baseFindIndex(array, predicate, fromIndex, fromRight) {
  var length = array.length,
      index = fromIndex + (fromRight ? 1 : -1);

  while ((fromRight ? index-- : ++index < length)) {
    if (predicate(array[index], index, array)) {
      return index;
    }
  }
  return -1;
}

/**
 * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {*} value The value to search for.
 * @param {number} fromIndex The index to search from.
 * @returns {number} Returns the index of the matched value, else `-1`.
 */
function baseIndexOf(array, value, fromIndex) {
  return value === value
    ? strictIndexOf(array, value, fromIndex)
    : baseFindIndex(array, baseIsNaN, fromIndex);
}

/**
 * This function is like `baseIndexOf` except that it accepts a comparator.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {*} value The value to search for.
 * @param {number} fromIndex The index to search from.
 * @param {Function} comparator The comparator invoked per element.
 * @returns {number} Returns the index of the matched value, else `-1`.
 */
function baseIndexOfWith(array, value, fromIndex, comparator) {
  var index = fromIndex - 1,
      length = array.length;

  while (++index < length) {
    if (comparator(array[index], value)) {
      return index;
    }
  }
  return -1;
}

/**
 * The base implementation of `_.isNaN` without support for number objects.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
 */
function baseIsNaN(value) {
  return value !== value;
}

/**
 * The base implementation of `_.mean` and `_.meanBy` without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} array The array to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {number} Returns the mean.
 */
function baseMean(array, iteratee) {
  var length = array == null ? 0 : array.length;
  return length ? (baseSum(array, iteratee) / length) : NAN;
}

/**
 * The base implementation of `_.property` without support for deep paths.
 *
 * @private
 * @param {string} key The key of the property to get.
 * @returns {Function} Returns the new accessor function.
 */
function baseProperty(key) {
  return function(object) {
    return object == null ? undefined : object[key];
  };
}

/**
 * The base implementation of `_.propertyOf` without support for deep paths.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Function} Returns the new accessor function.
 */
function basePropertyOf(object) {
  return function(key) {
    return object == null ? undefined : object[key];
  };
}

/**
 * The base implementation of `_.reduce` and `_.reduceRight`, without support
 * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
 *
 * @private
 * @param {Array|Object} collection The collection to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @param {*} accumulator The initial value.
 * @param {boolean} initAccum Specify using the first or last element of
 *  `collection` as the initial value.
 * @param {Function} eachFunc The function to iterate over `collection`.
 * @returns {*} Returns the accumulated value.
 */
function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
  eachFunc(collection, function(value, index, collection) {
    accumulator = initAccum
      ? (initAccum = false, value)
      : iteratee(accumulator, value, index, collection);
  });
  return accumulator;
}

/**
 * The base implementation of `_.sortBy` which uses `comparer` to define the
 * sort order of `array` and replaces criteria objects with their corresponding
 * values.
 *
 * @private
 * @param {Array} array The array to sort.
 * @param {Function} comparer The function to define sort order.
 * @returns {Array} Returns `array`.
 */
function baseSortBy(array, comparer) {
  var length = array.length;

  array.sort(comparer);
  while (length--) {
    array[length] = array[length].value;
  }
  return array;
}

/**
 * The base implementation of `_.sum` and `_.sumBy` without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} array The array to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {number} Returns the sum.
 */
function baseSum(array, iteratee) {
  var result,
      index = -1,
      length = array.length;

  while (++index < length) {
    var current = iteratee(array[index]);
    if (current !== undefined) {
      result = result === undefined ? current : (result + current);
    }
  }
  return result;
}

/**
 * The base implementation of `_.times` without support for iteratee shorthands
 * or max array length checks.
 *
 * @private
 * @param {number} n The number of times to invoke `iteratee`.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns the array of results.
 */
function baseTimes(n, iteratee) {
  var index = -1,
      result = Array(n);

  while (++index < n) {
    result[index] = iteratee(index);
  }
  return result;
}

/**
 * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
 * of key-value pairs for `object` corresponding to the property names of `props`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {Array} props The property names to get values for.
 * @returns {Object} Returns the key-value pairs.
 */
function baseToPairs(object, props) {
  return arrayMap(props, function(key) {
    return [key, object[key]];
  });
}

/**
 * The base implementation of `_.unary` without support for storing metadata.
 *
 * @private
 * @param {Function} func The function to cap arguments for.
 * @returns {Function} Returns the new capped function.
 */
function baseUnary(func) {
  return function(value) {
    return func(value);
  };
}

/**
 * The base implementation of `_.values` and `_.valuesIn` which creates an
 * array of `object` property values corresponding to the property names
 * of `props`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {Array} props The property names to get values for.
 * @returns {Object} Returns the array of property values.
 */
function baseValues(object, props) {
  return arrayMap(props, function(key) {
    return object[key];
  });
}

/**
 * Checks if a `cache` value for `key` exists.
 *
 * @private
 * @param {Object} cache The cache to query.
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */
function cacheHas(cache, key) {
  return cache.has(key);
}

/**
 * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
 * that is not found in the character symbols.
 *
 * @private
 * @param {Array} strSymbols The string symbols to inspect.
 * @param {Array} chrSymbols The character symbols to find.
 * @returns {number} Returns the index of the first unmatched string symbol.
 */
function charsStartIndex(strSymbols, chrSymbols) {
  var index = -1,
      length = strSymbols.length;

  while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
  return index;
}

/**
 * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
 * that is not found in the character symbols.
 *
 * @private
 * @param {Array} strSymbols The string symbols to inspect.
 * @param {Array} chrSymbols The character symbols to find.
 * @returns {number} Returns the index of the last unmatched string symbol.
 */
function charsEndIndex(strSymbols, chrSymbols) {
  var index = strSymbols.length;

  while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
  return index;
}

/**
 * Gets the number of `placeholder` occurrences in `array`.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {*} placeholder The placeholder to search for.
 * @returns {number} Returns the placeholder count.
 */
function countHolders(array, placeholder) {
  var length = array.length,
      result = 0;

  while (length--) {
    if (array[length] === placeholder) {
      ++result;
    }
  }
  return result;
}

/**
 * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
 * letters to basic Latin letters.
 *
 * @private
 * @param {string} letter The matched letter to deburr.
 * @returns {string} Returns the deburred letter.
 */
var deburrLetter = basePropertyOf(deburredLetters);

/**
 * Used by `_.escape` to convert characters to HTML entities.
 *
 * @private
 * @param {string} chr The matched character to escape.
 * @returns {string} Returns the escaped character.
 */
var escapeHtmlChar = basePropertyOf(htmlEscapes);

/**
 * Used by `_.template` to escape characters for inclusion in compiled string literals.
 *
 * @private
 * @param {string} chr The matched character to escape.
 * @returns {string} Returns the escaped character.
 */
function escapeStringChar(chr) {
  return '\\' + stringEscapes[chr];
}

/**
 * Gets the value at `key` of `object`.
 *
 * @private
 * @param {Object} [object] The object to query.
 * @param {string} key The key of the property to get.
 * @returns {*} Returns the property value.
 */
function getValue(object, key) {
  return object == null ? undefined : object[key];
}

/**
 * Checks if `string` contains Unicode symbols.
 *
 * @private
 * @param {string} string The string to inspect.
 * @returns {boolean} Returns `true` if a symbol is found, else `false`.
 */
function hasUnicode(string) {
  return reHasUnicode.test(string);
}

/**
 * Checks if `string` contains a word composed of Unicode symbols.
 *
 * @private
 * @param {string} string The string to inspect.
 * @returns {boolean} Returns `true` if a word is found, else `false`.
 */
function hasUnicodeWord(string) {
  return reHasUnicodeWord.test(string);
}

/**
 * Converts `iterator` to an array.
 *
 * @private
 * @param {Object} iterator The iterator to convert.
 * @returns {Array} Returns the converted array.
 */
function iteratorToArray(iterator) {
  var data,
      result = [];

  while (!(data = iterator.next()).done) {
    result.push(data.value);
  }
  return result;
}

/**
 * Converts `map` to its key-value pairs.
 *
 * @private
 * @param {Object} map The map to convert.
 * @returns {Array} Returns the key-value pairs.
 */
function mapToArray(map) {
  var index = -1,
      result = Array(map.size);

  map.forEach(function(value, key) {
    result[++index] = [key, value];
  });
  return result;
}

/**
 * Creates a unary function that invokes `func` with its argument transformed.
 *
 * @private
 * @param {Function} func The function to wrap.
 * @param {Function} transform The argument transform.
 * @returns {Function} Returns the new function.
 */
function overArg(func, transform) {
  return function(arg) {
    return func(transform(arg));
  };
}

/**
 * Replaces all `placeholder` elements in `array` with an internal placeholder
 * and returns an array of their indexes.
 *
 * @private
 * @param {Array} array The array to modify.
 * @param {*} placeholder The placeholder to replace.
 * @returns {Array} Returns the new array of placeholder indexes.
 */
function replaceHolders(array, placeholder) {
  var index = -1,
      length = array.length,
      resIndex = 0,
      result = [];

  while (++index < length) {
    var value = array[index];
    if (value === placeholder || value === PLACEHOLDER) {
      array[index] = PLACEHOLDER;
      result[resIndex++] = index;
    }
  }
  return result;
}

/**
 * Gets the value at `key`, unless `key` is "__proto__".
 *
 * @private
 * @param {Object} object The object to query.
 * @param {string} key The key of the property to get.
 * @returns {*} Returns the property value.
 */
function safeGet(object, key) {
  return key == '__proto__'
    ? undefined
    : object[key];
}

/**
 * Converts `set` to an array of its values.
 *
 * @private
 * @param {Object} set The set to convert.
 * @returns {Array} Returns the values.
 */
function setToArray(set) {
  var index = -1,
      result = Array(set.size);

  set.forEach(function(value) {
    result[++index] = value;
  });
  return result;
}

/**
 * Converts `set` to its value-value pairs.
 *
 * @private
 * @param {Object} set The set to convert.
 * @returns {Array} Returns the value-value pairs.
 */
function setToPairs(set) {
  var index = -1,
      result = Array(set.size);

  set.forEach(function(value) {
    result[++index] = [value, value];
  });
  return result;
}

/**
 * A specialized version of `_.indexOf` which performs strict equality
 * comparisons of values, i.e. `===`.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {*} value The value to search for.
 * @param {number} fromIndex The index to search from.
 * @returns {number} Returns the index of the matched value, else `-1`.
 */
function strictIndexOf(array, value, fromIndex) {
  var index = fromIndex - 1,
      length = array.length;

  while (++index < length) {
    if (array[index] === value) {
      return index;
    }
  }
  return -1;
}

/**
 * A specialized version of `_.lastIndexOf` which performs strict equality
 * comparisons of values, i.e. `===`.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {*} value The value to search for.
 * @param {number} fromIndex The index to search from.
 * @returns {number} Returns the index of the matched value, else `-1`.
 */
function strictLastIndexOf(array, value, fromIndex) {
  var index = fromIndex + 1;
  while (index--) {
    if (array[index] === value) {
      return index;
    }
  }
  return index;
}

/**
 * Gets the number of symbols in `string`.
 *
 * @private
 * @param {string} string The string to inspect.
 * @returns {number} Returns the string size.
 */
function stringSize(string) {
  return hasUnicode(string)
    ? unicodeSize(string)
    : asciiSize(string);
}

/**
 * Converts `string` to an array.
 *
 * @private
 * @param {string} string The string to convert.
 * @returns {Array} Returns the converted array.
 */
function stringToArray(string) {
  return hasUnicode(string)
    ? unicodeToArray(string)
    : asciiToArray(string);
}

/**
 * Used by `_.unescape` to convert HTML entities to characters.
 *
 * @private
 * @param {string} chr The matched character to unescape.
 * @returns {string} Returns the unescaped character.
 */
var unescapeHtmlChar = basePropertyOf(htmlUnescapes);

/**
 * Gets the size of a Unicode `string`.
 *
 * @private
 * @param {string} string The string inspect.
 * @returns {number} Returns the string size.
 */
function unicodeSize(string) {
  var result = reUnicode.lastIndex = 0;
  while (reUnicode.test(string)) {
    ++result;
  }
  return result;
}

/**
 * Converts a Unicode `string` to an array.
 *
 * @private
 * @param {string} string The string to convert.
 * @returns {Array} Returns the converted array.
 */
function unicodeToArray(string) {
  return string.match(reUnicode) || [];
}

/**
 * Splits a Unicode `string` into an array of its words.
 *
 * @private
 * @param {string} The string to inspect.
 * @returns {Array} Returns the words of `string`.
 */
function unicodeWords(string) {
  return string.match(reUnicodeWord) || [];
}

/*--------------------------------------------------------------------------*/

/**
 * Create a new pristine `lodash` function using the `context` object.
 *
 * @static
 * @memberOf _
 * @since 1.1.0
 * @category Util
 * @param {Object} [context=root] The context object.
 * @returns {Function} Returns a new `lodash` function.
 * @example
 *
 * _.mixin({ 'foo': _.constant('foo') });
 *
 * var lodash = _.runInContext();
 * lodash.mixin({ 'bar': lodash.constant('bar') });
 *
 * _.isFunction(_.foo);
 * // => true
 * _.isFunction(_.bar);
 * // => false
 *
 * lodash.isFunction(lodash.foo);
 * // => false
 * lodash.isFunction(lodash.bar);
 * // => true
 *
 * // Create a suped-up `defer` in Node.js.
 * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
 */
var runInContext = (function runInContext(context) {
  context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));

  /** Built-in constructor references. */
  var Array = context.Array,
      Date = context.Date,
      Error = context.Error,
      Function = context.Function,
      Math = context.Math,
      Object = context.Object,
      RegExp = context.RegExp,
      String = context.String,
      TypeError = context.TypeError;

  /** Used for built-in method references. */
  var arrayProto = Array.prototype,
      funcProto = Function.prototype,
      objectProto = Object.prototype;

  /** Used to detect overreaching core-js shims. */
  var coreJsData = context['__core-js_shared__'];

  /** Used to resolve the decompiled source of functions. */
  var funcToString = funcProto.toString;

  /** Used to check objects for own properties. */
  var hasOwnProperty = objectProto.hasOwnProperty;

  /** Used to generate unique IDs. */
  var idCounter = 0;

  /** Used to detect methods masquerading as native. */
  var maskSrcKey = (function() {
    var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
    return uid ? ('Symbol(src)_1.' + uid) : '';
  }());

  /**
   * Used to resolve the
   * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
   * of values.
   */
  var nativeObjectToString = objectProto.toString;

  /** Used to infer the `Object` constructor. */
  var objectCtorString = funcToString.call(Object);

  /** Used to restore the original `_` reference in `_.noConflict`. */
  var oldDash = root._;

  /** Used to detect if a method is native. */
  var reIsNative = RegExp('^' +
    funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
    .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
  );

  /** Built-in value references. */
  var Buffer = moduleExports ? context.Buffer : undefined,
      Symbol = context.Symbol,
      Uint8Array = context.Uint8Array,
      allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
      getPrototype = overArg(Object.getPrototypeOf, Object),
      objectCreate = Object.create,
      propertyIsEnumerable = objectProto.propertyIsEnumerable,
      splice = arrayProto.splice,
      spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
      symIterator = Symbol ? Symbol.iterator : undefined,
      symToStringTag = Symbol ? Symbol.toStringTag : undefined;

  var defineProperty = (function() {
    try {
      var func = getNative(Object, 'defineProperty');
      func({}, '', {});
      return func;
    } catch (e) {}
  }());

  /** Mocked built-ins. */
  var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
      ctxNow = Date && Date.now !== root.Date.now && Date.now,
      ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;

  /* Built-in method references for those with the same name as other `lodash` methods. */
  var nativeCeil = Math.ceil,
      nativeFloor = Math.floor,
      nativeGetSymbols = Object.getOwnPropertySymbols,
      nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
      nativeIsFinite = context.isFinite,
      nativeJoin = arrayProto.join,
      nativeKeys = overArg(Object.keys, Object),
      nativeMax = Math.max,
      nativeMin = Math.min,
      nativeNow = Date.now,
      nativeParseInt = context.parseInt,
      nativeRandom = Math.random,
      nativeReverse = arrayProto.reverse;

  /* Built-in method references that are verified to be native. */
  var DataView = getNative(context, 'DataView'),
      Map = getNative(context, 'Map'),
      Promise = getNative(context, 'Promise'),
      Set = getNative(context, 'Set'),
      WeakMap = getNative(context, 'WeakMap'),
      nativeCreate = getNative(Object, 'create');

  /** Used to store function metadata. */
  var metaMap = WeakMap && new WeakMap;

  /** Used to lookup unminified function names. */
  var realNames = {};

  /** Used to detect maps, sets, and weakmaps. */
  var dataViewCtorString = toSource(DataView),
      mapCtorString = toSource(Map),
      promiseCtorString = toSource(Promise),
      setCtorString = toSource(Set),
      weakMapCtorString = toSource(WeakMap);

  /** Used to convert symbols to primitives and strings. */
  var symbolProto = Symbol ? Symbol.prototype : undefined,
      symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
      symbolToString = symbolProto ? symbolProto.toString : undefined;

  /*------------------------------------------------------------------------*/

  /**
   * Creates a `lodash` object which wraps `value` to enable implicit method
   * chain sequences. Methods that operate on and return arrays, collections,
   * and functions can be chained together. Methods that retrieve a single value
   * or may return a primitive value will automatically end the chain sequence
   * and return the unwrapped value. Otherwise, the value must be unwrapped
   * with `_#value`.
   *
   * Explicit chain sequences, which must be unwrapped with `_#value`, may be
   * enabled using `_.chain`.
   *
   * The execution of chained methods is lazy, that is, it's deferred until
   * `_#value` is implicitly or explicitly called.
   *
   * Lazy evaluation allows several methods to support shortcut fusion.
   * Shortcut fusion is an optimization to merge iteratee calls; this avoids
   * the creation of intermediate arrays and can greatly reduce the number of
   * iteratee executions. Sections of a chain sequence qualify for shortcut
   * fusion if the section is applied to an array and iteratees accept only
   * one argument. The heuristic for whether a section qualifies for shortcut
   * fusion is subject to change.
   *
   * Chaining is supported in custom builds as long as the `_#value` method is
   * directly or indirectly included in the build.
   *
   * In addition to lodash methods, wrappers have `Array` and `String` methods.
   *
   * The wrapper `Array` methods are:
   * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
   *
   * The wrapper `String` methods are:
   * `replace` and `split`
   *
   * The wrapper methods that support shortcut fusion are:
   * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
   * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
   * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
   *
   * The chainable wrapper methods are:
   * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
   * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
   * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
   * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
   * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
   * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
   * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
   * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
   * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
   * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
   * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
   * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
   * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
   * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
   * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
   * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
   * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
   * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
   * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
   * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
   * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
   * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
   * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
   * `zipObject`, `zipObjectDeep`, and `zipWith`
   *
   * The wrapper methods that are **not** chainable by default are:
   * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
   * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
   * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
   * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
   * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
   * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
   * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
   * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
   * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
   * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
   * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
   * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
   * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
   * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
   * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
   * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
   * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
   * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
   * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
   * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
   * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
   * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
   * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
   * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
   * `upperFirst`, `value`, and `words`
   *
   * @name _
   * @constructor
   * @category Seq
   * @param {*} value The value to wrap in a `lodash` instance.
   * @returns {Object} Returns the new `lodash` wrapper instance.
   * @example
   *
   * function square(n) {
   *   return n * n;
   * }
   *
   * var wrapped = _([1, 2, 3]);
   *
   * // Returns an unwrapped value.
   * wrapped.reduce(_.add);
   * // => 6
   *
   * // Returns a wrapped value.
   * var squares = wrapped.map(square);
   *
   * _.isArray(squares);
   * // => false
   *
   * _.isArray(squares.value());
   * // => true
   */
  function lodash(value) {
    if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
      if (value instanceof LodashWrapper) {
        return value;
      }
      if (hasOwnProperty.call(value, '__wrapped__')) {
        return wrapperClone(value);
      }
    }
    return new LodashWrapper(value);
  }

  /**
   * The base implementation of `_.create` without support for assigning
   * properties to the created object.
   *
   * @private
   * @param {Object} proto The object to inherit from.
   * @returns {Object} Returns the new object.
   */
  var baseCreate = (function() {
    function object() {}
    return function(proto) {
      if (!isObject(proto)) {
        return {};
      }
      if (objectCreate) {
        return objectCreate(proto);
      }
      object.prototype = proto;
      var result = new object;
      object.prototype = undefined;
      return result;
    };
  }());

  /**
   * The function whose prototype chain sequence wrappers inherit from.
   *
   * @private
   */
  function baseLodash() {
    // No operation performed.
  }

  /**
   * The base constructor for creating `lodash` wrapper objects.
   *
   * @private
   * @param {*} value The value to wrap.
   * @param {boolean} [chainAll] Enable explicit method chain sequences.
   */
  function LodashWrapper(value, chainAll) {
    this.__wrapped__ = value;
    this.__actions__ = [];
    this.__chain__ = !!chainAll;
    this.__index__ = 0;
    this.__values__ = undefined;
  }

  /**
   * By default, the template delimiters used by lodash are like those in
   * embedded Ruby (ERB) as well as ES2015 template strings. Change the
   * following template settings to use alternative delimiters.
   *
   * @static
   * @memberOf _
   * @type {Object}
   */
  lodash.templateSettings = {

    /**
     * Used to detect `data` property values to be HTML-escaped.
     *
     * @memberOf _.templateSettings
     * @type {RegExp}
     */
    'escape': reEscape,

    /**
     * Used to detect code to be evaluated.
     *
     * @memberOf _.templateSettings
     * @type {RegExp}
     */
    'evaluate': reEvaluate,

    /**
     * Used to detect `data` property values to inject.
     *
     * @memberOf _.templateSettings
     * @type {RegExp}
     */
    'interpolate': reInterpolate,

    /**
     * Used to reference the data object in the template text.
     *
     * @memberOf _.templateSettings
     * @type {string}
     */
    'variable': '',

    /**
     * Used to import variables into the compiled template.
     *
     * @memberOf _.templateSettings
     * @type {Object}
     */
    'imports': {

      /**
       * A reference to the `lodash` function.
       *
       * @memberOf _.templateSettings.imports
       * @type {Function}
       */
      '_': lodash
    }
  };

  // Ensure wrappers are instances of `baseLodash`.
  lodash.prototype = baseLodash.prototype;
  lodash.prototype.constructor = lodash;

  LodashWrapper.prototype = baseCreate(baseLodash.prototype);
  LodashWrapper.prototype.constructor = LodashWrapper;

  /*------------------------------------------------------------------------*/

  /**
   * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
   *
   * @private
   * @constructor
   * @param {*} value The value to wrap.
   */
  function LazyWrapper(value) {
    this.__wrapped__ = value;
    this.__actions__ = [];
    this.__dir__ = 1;
    this.__filtered__ = false;
    this.__iteratees__ = [];
    this.__takeCount__ = MAX_ARRAY_LENGTH;
    this.__views__ = [];
  }

  /**
   * Creates a clone of the lazy wrapper object.
   *
   * @private
   * @name clone
   * @memberOf LazyWrapper
   * @returns {Object} Returns the cloned `LazyWrapper` object.
   */
  function lazyClone() {
    var result = new LazyWrapper(this.__wrapped__);
    result.__actions__ = copyArray(this.__actions__);
    result.__dir__ = this.__dir__;
    result.__filtered__ = this.__filtered__;
    result.__iteratees__ = copyArray(this.__iteratees__);
    result.__takeCount__ = this.__takeCount__;
    result.__views__ = copyArray(this.__views__);
    return result;
  }

  /**
   * Reverses the direction of lazy iteration.
   *
   * @private
   * @name reverse
   * @memberOf LazyWrapper
   * @returns {Object} Returns the new reversed `LazyWrapper` object.
   */
  function lazyReverse() {
    if (this.__filtered__) {
      var result = new LazyWrapper(this);
      result.__dir__ = -1;
      result.__filtered__ = true;
    } else {
      result = this.clone();
      result.__dir__ *= -1;
    }
    return result;
  }

  /**
   * Extracts the unwrapped value from its lazy wrapper.
   *
   * @private
   * @name value
   * @memberOf LazyWrapper
   * @returns {*} Returns the unwrapped value.
   */
  function lazyValue() {
    var array = this.__wrapped__.value(),
        dir = this.__dir__,
        isArr = isArray(array),
        isRight = dir < 0,
        arrLength = isArr ? array.length : 0,
        view = getView(0, arrLength, this.__views__),
        start = view.start,
        end = view.end,
        length = end - start,
        index = isRight ? end : (start - 1),
        iteratees = this.__iteratees__,
        iterLength = iteratees.length,
        resIndex = 0,
        takeCount = nativeMin(length, this.__takeCount__);

    if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
      return baseWrapperValue(array, this.__actions__);
    }
    var result = [];

    outer:
    while (length-- && resIndex < takeCount) {
      index += dir;

      var iterIndex = -1,
          value = array[index];

      while (++iterIndex < iterLength) {
        var data = iteratees[iterIndex],
            iteratee = data.iteratee,
            type = data.type,
            computed = iteratee(value);

        if (type == LAZY_MAP_FLAG) {
          value = computed;
        } else if (!computed) {
          if (type == LAZY_FILTER_FLAG) {
            continue outer;
          } else {
            break outer;
          }
        }
      }
      result[resIndex++] = value;
    }
    return result;
  }

  // Ensure `LazyWrapper` is an instance of `baseLodash`.
  LazyWrapper.prototype = baseCreate(baseLodash.prototype);
  LazyWrapper.prototype.constructor = LazyWrapper;

  /*------------------------------------------------------------------------*/

  /**
   * Creates a hash object.
   *
   * @private
   * @constructor
   * @param {Array} [entries] The key-value pairs to cache.
   */
  function Hash(entries) {
    var index = -1,
        length = entries == null ? 0 : entries.length;

    this.clear();
    while (++index < length) {
      var entry = entries[index];
      this.set(entry[0], entry[1]);
    }
  }

  /**
   * Removes all key-value entries from the hash.
   *
   * @private
   * @name clear
   * @memberOf Hash
   */
  function hashClear() {
    this.__data__ = nativeCreate ? nativeCreate(null) : {};
    this.size = 0;
  }

  /**
   * Removes `key` and its value from the hash.
   *
   * @private
   * @name delete
   * @memberOf Hash
   * @param {Object} hash The hash to modify.
   * @param {string} key The key of the value to remove.
   * @returns {boolean} Returns `true` if the entry was removed, else `false`.
   */
  function hashDelete(key) {
    var result = this.has(key) && delete this.__data__[key];
    this.size -= result ? 1 : 0;
    return result;
  }

  /**
   * Gets the hash value for `key`.
   *
   * @private
   * @name get
   * @memberOf Hash
   * @param {string} key The key of the value to get.
   * @returns {*} Returns the entry value.
   */
  function hashGet(key) {
    var data = this.__data__;
    if (nativeCreate) {
      var result = data[key];
      return result === HASH_UNDEFINED ? undefined : result;
    }
    return hasOwnProperty.call(data, key) ? data[key] : undefined;
  }

  /**
   * Checks if a hash value for `key` exists.
   *
   * @private
   * @name has
   * @memberOf Hash
   * @param {string} key The key of the entry to check.
   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
   */
  function hashHas(key) {
    var data = this.__data__;
    return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
  }

  /**
   * Sets the hash `key` to `value`.
   *
   * @private
   * @name set
   * @memberOf Hash
   * @param {string} key The key of the value to set.
   * @param {*} value The value to set.
   * @returns {Object} Returns the hash instance.
   */
  function hashSet(key, value) {
    var data = this.__data__;
    this.size += this.has(key) ? 0 : 1;
    data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
    return this;
  }

  // Add methods to `Hash`.
  Hash.prototype.clear = hashClear;
  Hash.prototype['delete'] = hashDelete;
  Hash.prototype.get = hashGet;
  Hash.prototype.has = hashHas;
  Hash.prototype.set = hashSet;

  /*------------------------------------------------------------------------*/

  /**
   * Creates an list cache object.
   *
   * @private
   * @constructor
   * @param {Array} [entries] The key-value pairs to cache.
   */
  function ListCache(entries) {
    var index = -1,
        length = entries == null ? 0 : entries.length;

    this.clear();
    while (++index < length) {
      var entry = entries[index];
      this.set(entry[0], entry[1]);
    }
  }

  /**
   * Removes all key-value entries from the list cache.
   *
   * @private
   * @name clear
   * @memberOf ListCache
   */
  function listCacheClear() {
    this.__data__ = [];
    this.size = 0;
  }

  /**
   * Removes `key` and its value from the list cache.
   *
   * @private
   * @name delete
   * @memberOf ListCache
   * @param {string} key The key of the value to remove.
   * @returns {boolean} Returns `true` if the entry was removed, else `false`.
   */
  function listCacheDelete(key) {
    var data = this.__data__,
        index = assocIndexOf(data, key);

    if (index < 0) {
      return false;
    }
    var lastIndex = data.length - 1;
    if (index == lastIndex) {
      data.pop();
    } else {
      splice.call(data, index, 1);
    }
    --this.size;
    return true;
  }

  /**
   * Gets the list cache value for `key`.
   *
   * @private
   * @name get
   * @memberOf ListCache
   * @param {string} key The key of the value to get.
   * @returns {*} Returns the entry value.
   */
  function listCacheGet(key) {
    var data = this.__data__,
        index = assocIndexOf(data, key);

    return index < 0 ? undefined : data[index][1];
  }

  /**
   * Checks if a list cache value for `key` exists.
   *
   * @private
   * @name has
   * @memberOf ListCache
   * @param {string} key The key of the entry to check.
   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
   */
  function listCacheHas(key) {
    return assocIndexOf(this.__data__, key) > -1;
  }

  /**
   * Sets the list cache `key` to `value`.
   *
   * @private
   * @name set
   * @memberOf ListCache
   * @param {string} key The key of the value to set.
   * @param {*} value The value to set.
   * @returns {Object} Returns the list cache instance.
   */
  function listCacheSet(key, value) {
    var data = this.__data__,
        index = assocIndexOf(data, key);

    if (index < 0) {
      ++this.size;
      data.push([key, value]);
    } else {
      data[index][1] = value;
    }
    return this;
  }

  // Add methods to `ListCache`.
  ListCache.prototype.clear = listCacheClear;
  ListCache.prototype['delete'] = listCacheDelete;
  ListCache.prototype.get = listCacheGet;
  ListCache.prototype.has = listCacheHas;
  ListCache.prototype.set = listCacheSet;

  /*------------------------------------------------------------------------*/

  /**
   * Creates a map cache object to store key-value pairs.
   *
   * @private
   * @constructor
   * @param {Array} [entries] The key-value pairs to cache.
   */
  function MapCache(entries) {
    var index = -1,
        length = entries == null ? 0 : entries.length;

    this.clear();
    while (++index < length) {
      var entry = entries[index];
      this.set(entry[0], entry[1]);
    }
  }

  /**
   * Removes all key-value entries from the map.
   *
   * @private
   * @name clear
   * @memberOf MapCache
   */
  function mapCacheClear() {
    this.size = 0;
    this.__data__ = {
      'hash': new Hash,
      'map': new (Map || ListCache),
      'string': new Hash
    };
  }

  /**
   * Removes `key` and its value from the map.
   *
   * @private
   * @name delete
   * @memberOf MapCache
   * @param {string} key The key of the value to remove.
   * @returns {boolean} Returns `true` if the entry was removed, else `false`.
   */
  function mapCacheDelete(key) {
    var result = getMapData(this, key)['delete'](key);
    this.size -= result ? 1 : 0;
    return result;
  }

  /**
   * Gets the map value for `key`.
   *
   * @private
   * @name get
   * @memberOf MapCache
   * @param {string} key The key of the value to get.
   * @returns {*} Returns the entry value.
   */
  function mapCacheGet(key) {
    return getMapData(this, key).get(key);
  }

  /**
   * Checks if a map value for `key` exists.
   *
   * @private
   * @name has
   * @memberOf MapCache
   * @param {string} key The key of the entry to check.
   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
   */
  function mapCacheHas(key) {
    return getMapData(this, key).has(key);
  }

  /**
   * Sets the map `key` to `value`.
   *
   * @private
   * @name set
   * @memberOf MapCache
   * @param {string} key The key of the value to set.
   * @param {*} value The value to set.
   * @returns {Object} Returns the map cache instance.
   */
  function mapCacheSet(key, value) {
    var data = getMapData(this, key),
        size = data.size;

    data.set(key, value);
    this.size += data.size == size ? 0 : 1;
    return this;
  }

  // Add methods to `MapCache`.
  MapCache.prototype.clear = mapCacheClear;
  MapCache.prototype['delete'] = mapCacheDelete;
  MapCache.prototype.get = mapCacheGet;
  MapCache.prototype.has = mapCacheHas;
  MapCache.prototype.set = mapCacheSet;

  /*------------------------------------------------------------------------*/

  /**
   *
   * Creates an array cache object to store unique values.
   *
   * @private
   * @constructor
   * @param {Array} [values] The values to cache.
   */
  function SetCache(values) {
    var index = -1,
        length = values == null ? 0 : values.length;

    this.__data__ = new MapCache;
    while (++index < length) {
      this.add(values[index]);
    }
  }

  /**
   * Adds `value` to the array cache.
   *
   * @private
   * @name add
   * @memberOf SetCache
   * @alias push
   * @param {*} value The value to cache.
   * @returns {Object} Returns the cache instance.
   */
  function setCacheAdd(value) {
    this.__data__.set(value, HASH_UNDEFINED);
    return this;
  }

  /**
   * Checks if `value` is in the array cache.
   *
   * @private
   * @name has
   * @memberOf SetCache
   * @param {*} value The value to search for.
   * @returns {number} Returns `true` if `value` is found, else `false`.
   */
  function setCacheHas(value) {
    return this.__data__.has(value);
  }

  // Add methods to `SetCache`.
  SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
  SetCache.prototype.has = setCacheHas;

  /*------------------------------------------------------------------------*/

  /**
   * Creates a stack cache object to store key-value pairs.
   *
   * @private
   * @constructor
   * @param {Array} [entries] The key-value pairs to cache.
   */
  function Stack(entries) {
    var data = this.__data__ = new ListCache(entries);
    this.size = data.size;
  }

  /**
   * Removes all key-value entries from the stack.
   *
   * @private
   * @name clear
   * @memberOf Stack
   */
  function stackClear() {
    this.__data__ = new ListCache;
    this.size = 0;
  }

  /**
   * Removes `key` and its value from the stack.
   *
   * @private
   * @name delete
   * @memberOf Stack
   * @param {string} key The key of the value to remove.
   * @returns {boolean} Returns `true` if the entry was removed, else `false`.
   */
  function stackDelete(key) {
    var data = this.__data__,
        result = data['delete'](key);

    this.size = data.size;
    return result;
  }

  /**
   * Gets the stack value for `key`.
   *
   * @private
   * @name get
   * @memberOf Stack
   * @param {string} key The key of the value to get.
   * @returns {*} Returns the entry value.
   */
  function stackGet(key) {
    return this.__data__.get(key);
  }

  /**
   * Checks if a stack value for `key` exists.
   *
   * @private
   * @name has
   * @memberOf Stack
   * @param {string} key The key of the entry to check.
   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
   */
  function stackHas(key) {
    return this.__data__.has(key);
  }

  /**
   * Sets the stack `key` to `value`.
   *
   * @private
   * @name set
   * @memberOf Stack
   * @param {string} key The key of the value to set.
   * @param {*} value The value to set.
   * @returns {Object} Returns the stack cache instance.
   */
  function stackSet(key, value) {
    var data = this.__data__;
    if (data instanceof ListCache) {
      var pairs = data.__data__;
      if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
        pairs.push([key, value]);
        this.size = ++data.size;
        return this;
      }
      data = this.__data__ = new MapCache(pairs);
    }
    data.set(key, value);
    this.size = data.size;
    return this;
  }

  // Add methods to `Stack`.
  Stack.prototype.clear = stackClear;
  Stack.prototype['delete'] = stackDelete;
  Stack.prototype.get = stackGet;
  Stack.prototype.has = stackHas;
  Stack.prototype.set = stackSet;

  /*------------------------------------------------------------------------*/

  /**
   * Creates an array of the enumerable property names of the array-like `value`.
   *
   * @private
   * @param {*} value The value to query.
   * @param {boolean} inherited Specify returning inherited property names.
   * @returns {Array} Returns the array of property names.
   */
  function arrayLikeKeys(value, inherited) {
    var isArr = isArray(value),
        isArg = !isArr && isArguments(value),
        isBuff = !isArr && !isArg && isBuffer(value),
        isType = !isArr && !isArg && !isBuff && isTypedArray(value),
        skipIndexes = isArr || isArg || isBuff || isType,
        result = skipIndexes ? baseTimes(value.length, String) : [],
        length = result.length;

    for (var key in value) {
      if ((inherited || hasOwnProperty.call(value, key)) &&
          !(skipIndexes && (
             // Safari 9 has enumerable `arguments.length` in strict mode.
             key == 'length' ||
             // Node.js 0.10 has enumerable non-index properties on buffers.
             (isBuff && (key == 'offset' || key == 'parent')) ||
             // PhantomJS 2 has enumerable non-index properties on typed arrays.
             (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
             // Skip index properties.
             isIndex(key, length)
          ))) {
        result.push(key);
      }
    }
    return result;
  }

  /**
   * A specialized version of `_.sample` for arrays.
   *
   * @private
   * @param {Array} array The array to sample.
   * @returns {*} Returns the random element.
   */
  function arraySample(array) {
    var length = array.length;
    return length ? array[baseRandom(0, length - 1)] : undefined;
  }

  /**
   * A specialized version of `_.sampleSize` for arrays.
   *
   * @private
   * @param {Array} array The array to sample.
   * @param {number} n The number of elements to sample.
   * @returns {Array} Returns the random elements.
   */
  function arraySampleSize(array, n) {
    return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
  }

  /**
   * A specialized version of `_.shuffle` for arrays.
   *
   * @private
   * @param {Array} array The array to shuffle.
   * @returns {Array} Returns the new shuffled array.
   */
  function arrayShuffle(array) {
    return shuffleSelf(copyArray(array));
  }

  /**
   * This function is like `assignValue` except that it doesn't assign
   * `undefined` values.
   *
   * @private
   * @param {Object} object The object to modify.
   * @param {string} key The key of the property to assign.
   * @param {*} value The value to assign.
   */
  function assignMergeValue(object, key, value) {
    if ((value !== undefined && !eq(object[key], value)) ||
        (value === undefined && !(key in object))) {
      baseAssignValue(object, key, value);
    }
  }

  /**
   * Assigns `value` to `key` of `object` if the existing value is not equivalent
   * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
   * for equality comparisons.
   *
   * @private
   * @param {Object} object The object to modify.
   * @param {string} key The key of the property to assign.
   * @param {*} value The value to assign.
   */
  function assignValue(object, key, value) {
    var objValue = object[key];
    if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
        (value === undefined && !(key in object))) {
      baseAssignValue(object, key, value);
    }
  }

  /**
   * Gets the index at which the `key` is found in `array` of key-value pairs.
   *
   * @private
   * @param {Array} array The array to inspect.
   * @param {*} key The key to search for.
   * @returns {number} Returns the index of the matched value, else `-1`.
   */
  function assocIndexOf(array, key) {
    var length = array.length;
    while (length--) {
      if (eq(array[length][0], key)) {
        return length;
      }
    }
    return -1;
  }

  /**
   * Aggregates elements of `collection` on `accumulator` with keys transformed
   * by `iteratee` and values set by `setter`.
   *
   * @private
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} setter The function to set `accumulator` values.
   * @param {Function} iteratee The iteratee to transform keys.
   * @param {Object} accumulator The initial aggregated object.
   * @returns {Function} Returns `accumulator`.
   */
  function baseAggregator(collection, setter, iteratee, accumulator) {
    baseEach(collection, function(value, key, collection) {
      setter(accumulator, value, iteratee(value), collection);
    });
    return accumulator;
  }

  /**
   * The base implementation of `_.assign` without support for multiple sources
   * or `customizer` functions.
   *
   * @private
   * @param {Object} object The destination object.
   * @param {Object} source The source object.
   * @returns {Object} Returns `object`.
   */
  function baseAssign(object, source) {
    return object && copyObject(source, keys(source), object);
  }

  /**
   * The base implementation of `_.assignIn` without support for multiple sources
   * or `customizer` functions.
   *
   * @private
   * @param {Object} object The destination object.
   * @param {Object} source The source object.
   * @returns {Object} Returns `object`.
   */
  function baseAssignIn(object, source) {
    return object && copyObject(source, keysIn(source), object);
  }

  /**
   * The base implementation of `assignValue` and `assignMergeValue` without
   * value checks.
   *
   * @private
   * @param {Object} object The object to modify.
   * @param {string} key The key of the property to assign.
   * @param {*} value The value to assign.
   */
  function baseAssignValue(object, key, value) {
    if (key == '__proto__' && defineProperty) {
      defineProperty(object, key, {
        'configurable': true,
        'enumerable': true,
        'value': value,
        'writable': true
      });
    } else {
      object[key] = value;
    }
  }

  /**
   * The base implementation of `_.at` without support for individual paths.
   *
   * @private
   * @param {Object} object The object to iterate over.
   * @param {string[]} paths The property paths to pick.
   * @returns {Array} Returns the picked elements.
   */
  function baseAt(object, paths) {
    var index = -1,
        length = paths.length,
        result = Array(length),
        skip = object == null;

    while (++index < length) {
      result[index] = skip ? undefined : get(object, paths[index]);
    }
    return result;
  }

  /**
   * The base implementation of `_.clamp` which doesn't coerce arguments.
   *
   * @private
   * @param {number} number The number to clamp.
   * @param {number} [lower] The lower bound.
   * @param {number} upper The upper bound.
   * @returns {number} Returns the clamped number.
   */
  function baseClamp(number, lower, upper) {
    if (number === number) {
      if (upper !== undefined) {
        number = number <= upper ? number : upper;
      }
      if (lower !== undefined) {
        number = number >= lower ? number : lower;
      }
    }
    return number;
  }

  /**
   * The base implementation of `_.clone` and `_.cloneDeep` which tracks
   * traversed objects.
   *
   * @private
   * @param {*} value The value to clone.
   * @param {boolean} bitmask The bitmask flags.
   *  1 - Deep clone
   *  2 - Flatten inherited properties
   *  4 - Clone symbols
   * @param {Function} [customizer] The function to customize cloning.
   * @param {string} [key] The key of `value`.
   * @param {Object} [object] The parent object of `value`.
   * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
   * @returns {*} Returns the cloned value.
   */
  function baseClone(value, bitmask, customizer, key, object, stack) {
    var result,
        isDeep = bitmask & CLONE_DEEP_FLAG,
        isFlat = bitmask & CLONE_FLAT_FLAG,
        isFull = bitmask & CLONE_SYMBOLS_FLAG;

    if (customizer) {
      result = object ? customizer(value, key, object, stack) : customizer(value);
    }
    if (result !== undefined) {
      return result;
    }
    if (!isObject(value)) {
      return value;
    }
    var isArr = isArray(value);
    if (isArr) {
      result = initCloneArray(value);
      if (!isDeep) {
        return copyArray(value, result);
      }
    } else {
      var tag = getTag(value),
          isFunc = tag == funcTag || tag == genTag;

      if (isBuffer(value)) {
        return cloneBuffer(value, isDeep);
      }
      if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
        result = (isFlat || isFunc) ? {} : initCloneObject(value);
        if (!isDeep) {
          return isFlat
            ? copySymbolsIn(value, baseAssignIn(result, value))
            : copySymbols(value, baseAssign(result, value));
        }
      } else {
        if (!cloneableTags[tag]) {
          return object ? value : {};
        }
        result = initCloneByTag(value, tag, isDeep);
      }
    }
    // Check for circular references and return its corresponding clone.
    stack || (stack = new Stack);
    var stacked = stack.get(value);
    if (stacked) {
      return stacked;
    }
    stack.set(value, result);

    if (isSet(value)) {
      value.forEach(function(subValue) {
        result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
      });

      return result;
    }

    if (isMap(value)) {
      value.forEach(function(subValue, key) {
        result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
      });

      return result;
    }

    var keysFunc = isFull
      ? (isFlat ? getAllKeysIn : getAllKeys)
      : (isFlat ? keysIn : keys);

    var props = isArr ? undefined : keysFunc(value);
    arrayEach(props || value, function(subValue, key) {
      if (props) {
        key = subValue;
        subValue = value[key];
      }
      // Recursively populate clone (susceptible to call stack limits).
      assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
    });
    return result;
  }

  /**
   * The base implementation of `_.conforms` which doesn't clone `source`.
   *
   * @private
   * @param {Object} source The object of property predicates to conform to.
   * @returns {Function} Returns the new spec function.
   */
  function baseConforms(source) {
    var props = keys(source);
    return function(object) {
      return baseConformsTo(object, source, props);
    };
  }

  /**
   * The base implementation of `_.conformsTo` which accepts `props` to check.
   *
   * @private
   * @param {Object} object The object to inspect.
   * @param {Object} source The object of property predicates to conform to.
   * @returns {boolean} Returns `true` if `object` conforms, else `false`.
   */
  function baseConformsTo(object, source, props) {
    var length = props.length;
    if (object == null) {
      return !length;
    }
    object = Object(object);
    while (length--) {
      var key = props[length],
          predicate = source[key],
          value = object[key];

      if ((value === undefined && !(key in object)) || !predicate(value)) {
        return false;
      }
    }
    return true;
  }

  /**
   * The base implementation of `_.delay` and `_.defer` which accepts `args`
   * to provide to `func`.
   *
   * @private
   * @param {Function} func The function to delay.
   * @param {number} wait The number of milliseconds to delay invocation.
   * @param {Array} args The arguments to provide to `func`.
   * @returns {number|Object} Returns the timer id or timeout object.
   */
  function baseDelay(func, wait, args) {
    if (typeof func != 'function') {
      throw new TypeError(FUNC_ERROR_TEXT);
    }
    return setTimeout(function() { func.apply(undefined, args); }, wait);
  }

  /**
   * The base implementation of methods like `_.difference` without support
   * for excluding multiple arrays or iteratee shorthands.
   *
   * @private
   * @param {Array} array The array to inspect.
   * @param {Array} values The values to exclude.
   * @param {Function} [iteratee] The iteratee invoked per element.
   * @param {Function} [comparator] The comparator invoked per element.
   * @returns {Array} Returns the new array of filtered values.
   */
  function baseDifference(array, values, iteratee, comparator) {
    var index = -1,
        includes = arrayIncludes,
        isCommon = true,
        length = array.length,
        result = [],
        valuesLength = values.length;

    if (!length) {
      return result;
    }
    if (iteratee) {
      values = arrayMap(values, baseUnary(iteratee));
    }
    if (comparator) {
      includes = arrayIncludesWith;
      isCommon = false;
    }
    else if (values.length >= LARGE_ARRAY_SIZE) {
      includes = cacheHas;
      isCommon = false;
      values = new SetCache(values);
    }
    outer:
    while (++index < length) {
      var value = array[index],
          computed = iteratee == null ? value : iteratee(value);

      value = (comparator || value !== 0) ? value : 0;
      if (isCommon && computed === computed) {
        var valuesIndex = valuesLength;
        while (valuesIndex--) {
          if (values[valuesIndex] === computed) {
            continue outer;
          }
        }
        result.push(value);
      }
      else if (!includes(values, computed, comparator)) {
        result.push(value);
      }
    }
    return result;
  }

  /**
   * The base implementation of `_.forEach` without support for iteratee shorthands.
   *
   * @private
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} iteratee The function invoked per iteration.
   * @returns {Array|Object} Returns `collection`.
   */
  var baseEach = createBaseEach(baseForOwn);

  /**
   * The base implementation of `_.forEachRight` without support for iteratee shorthands.
   *
   * @private
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} iteratee The function invoked per iteration.
   * @returns {Array|Object} Returns `collection`.
   */
  var baseEachRight = createBaseEach(baseForOwnRight, true);

  /**
   * The base implementation of `_.every` without support for iteratee shorthands.
   *
   * @private
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} predicate The function invoked per iteration.
   * @returns {boolean} Returns `true` if all elements pass the predicate check,
   *  else `false`
   */
  function baseEvery(collection, predicate) {
    var result = true;
    baseEach(collection, function(value, index, collection) {
      result = !!predicate(value, index, collection);
      return result;
    });
    return result;
  }

  /**
   * The base implementation of methods like `_.max` and `_.min` which accepts a
   * `comparator` to determine the extremum value.
   *
   * @private
   * @param {Array} array The array to iterate over.
   * @param {Function} iteratee The iteratee invoked per iteration.
   * @param {Function} comparator The comparator used to compare values.
   * @returns {*} Returns the extremum value.
   */
  function baseExtremum(array, iteratee, comparator) {
    var index = -1,
        length = array.length;

    while (++index < length) {
      var value = array[index],
          current = iteratee(value);

      if (current != null && (computed === undefined
            ? (current === current && !isSymbol(current))
            : comparator(current, computed)
          )) {
        var computed = current,
            result = value;
      }
    }
    return result;
  }

  /**
   * The base implementation of `_.fill` without an iteratee call guard.
   *
   * @private
   * @param {Array} array The array to fill.
   * @param {*} value The value to fill `array` with.
   * @param {number} [start=0] The start position.
   * @param {number} [end=array.length] The end position.
   * @returns {Array} Returns `array`.
   */
  function baseFill(array, value, start, end) {
    var length = array.length;

    start = toInteger(start);
    if (start < 0) {
      start = -start > length ? 0 : (length + start);
    }
    end = (end === undefined || end > length) ? length : toInteger(end);
    if (end < 0) {
      end += length;
    }
    end = start > end ? 0 : toLength(end);
    while (start < end) {
      array[start++] = value;
    }
    return array;
  }

  /**
   * The base implementation of `_.filter` without support for iteratee shorthands.
   *
   * @private
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} predicate The function invoked per iteration.
   * @returns {Array} Returns the new filtered array.
   */
  function baseFilter(collection, predicate) {
    var result = [];
    baseEach(collection, function(value, index, collection) {
      if (predicate(value, index, collection)) {
        result.push(value);
      }
    });
    return result;
  }

  /**
   * The base implementation of `_.flatten` with support for restricting flattening.
   *
   * @private
   * @param {Array} array The array to flatten.
   * @param {number} depth The maximum recursion depth.
   * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
   * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
   * @param {Array} [result=[]] The initial result value.
   * @returns {Array} Returns the new flattened array.
   */
  function baseFlatten(array, depth, predicate, isStrict, result) {
    var index = -1,
        length = array.length;

    predicate || (predicate = isFlattenable);
    result || (result = []);

    while (++index < length) {
      var value = array[index];
      if (depth > 0 && predicate(value)) {
        if (depth > 1) {
          // Recursively flatten arrays (susceptible to call stack limits).
          baseFlatten(value, depth - 1, predicate, isStrict, result);
        } else {
          arrayPush(result, value);
        }
      } else if (!isStrict) {
        result[result.length] = value;
      }
    }
    return result;
  }

  /**
   * The base implementation of `baseForOwn` which iterates over `object`
   * properties returned by `keysFunc` and invokes `iteratee` for each property.
   * Iteratee functions may exit iteration early by explicitly returning `false`.
   *
   * @private
   * @param {Object} object The object to iterate over.
   * @param {Function} iteratee The function invoked per iteration.
   * @param {Function} keysFunc The function to get the keys of `object`.
   * @returns {Object} Returns `object`.
   */
  var baseFor = createBaseFor();

  /**
   * This function is like `baseFor` except that it iterates over properties
   * in the opposite order.
   *
   * @private
   * @param {Object} object The object to iterate over.
   * @param {Function} iteratee The function invoked per iteration.
   * @param {Function} keysFunc The function to get the keys of `object`.
   * @returns {Object} Returns `object`.
   */
  var baseForRight = createBaseFor(true);

  /**
   * The base implementation of `_.forOwn` without support for iteratee shorthands.
   *
   * @private
   * @param {Object} object The object to iterate over.
   * @param {Function} iteratee The function invoked per iteration.
   * @returns {Object} Returns `object`.
   */
  function baseForOwn(object, iteratee) {
    return object && baseFor(object, iteratee, keys);
  }

  /**
   * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
   *
   * @private
   * @param {Object} object The object to iterate over.
   * @param {Function} iteratee The function invoked per iteration.
   * @returns {Object} Returns `object`.
   */
  function baseForOwnRight(object, iteratee) {
    return object && baseForRight(object, iteratee, keys);
  }

  /**
   * The base implementation of `_.functions` which creates an array of
   * `object` function property names filtered from `props`.
   *
   * @private
   * @param {Object} object The object to inspect.
   * @param {Array} props The property names to filter.
   * @returns {Array} Returns the function names.
   */
  function baseFunctions(object, props) {
    return arrayFilter(props, function(key) {
      return isFunction(object[key]);
    });
  }

  /**
   * The base implementation of `_.get` without support for default values.
   *
   * @private
   * @param {Object} object The object to query.
   * @param {Array|string} path The path of the property to get.
   * @returns {*} Returns the resolved value.
   */
  function baseGet(object, path) {
    path = castPath(path, object);

    var index = 0,
        length = path.length;

    while (object != null && index < length) {
      object = object[toKey(path[index++])];
    }
    return (index && index == length) ? object : undefined;
  }

  /**
   * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
   * `keysFunc` and `symbolsFunc` to get the enumerable property names and
   * symbols of `object`.
   *
   * @private
   * @param {Object} object The object to query.
   * @param {Function} keysFunc The function to get the keys of `object`.
   * @param {Function} symbolsFunc The function to get the symbols of `object`.
   * @returns {Array} Returns the array of property names and symbols.
   */
  function baseGetAllKeys(object, keysFunc, symbolsFunc) {
    var result = keysFunc(object);
    return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
  }

  /**
   * The base implementation of `getTag` without fallbacks for buggy environments.
   *
   * @private
   * @param {*} value The value to query.
   * @returns {string} Returns the `toStringTag`.
   */
  function baseGetTag(value) {
    if (value == null) {
      return value === undefined ? undefinedTag : nullTag;
    }
    return (symToStringTag && symToStringTag in Object(value))
      ? getRawTag(value)
      : objectToString(value);
  }

  /**
   * The base implementation of `_.gt` which doesn't coerce arguments.
   *
   * @private
   * @param {*} value The value to compare.
   * @param {*} other The other value to compare.
   * @returns {boolean} Returns `true` if `value` is greater than `other`,
   *  else `false`.
   */
  function baseGt(value, other) {
    return value > other;
  }

  /**
   * The base implementation of `_.has` without support for deep paths.
   *
   * @private
   * @param {Object} [object] The object to query.
   * @param {Array|string} key The key to check.
   * @returns {boolean} Returns `true` if `key` exists, else `false`.
   */
  function baseHas(object, key) {
    return object != null && hasOwnProperty.call(object, key);
  }

  /**
   * The base implementation of `_.hasIn` without support for deep paths.
   *
   * @private
   * @param {Object} [object] The object to query.
   * @param {Array|string} key The key to check.
   * @returns {boolean} Returns `true` if `key` exists, else `false`.
   */
  function baseHasIn(object, key) {
    return object != null && key in Object(object);
  }

  /**
   * The base implementation of `_.inRange` which doesn't coerce arguments.
   *
   * @private
   * @param {number} number The number to check.
   * @param {number} start The start of the range.
   * @param {number} end The end of the range.
   * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
   */
  function baseInRange(number, start, end) {
    return number >= nativeMin(start, end) && number < nativeMax(start, end);
  }

  /**
   * The base implementation of methods like `_.intersection`, without support
   * for iteratee shorthands, that accepts an array of arrays to inspect.
   *
   * @private
   * @param {Array} arrays The arrays to inspect.
   * @param {Function} [iteratee] The iteratee invoked per element.
   * @param {Function} [comparator] The comparator invoked per element.
   * @returns {Array} Returns the new array of shared values.
   */
  function baseIntersection(arrays, iteratee, comparator) {
    var includes = comparator ? arrayIncludesWith : arrayIncludes,
        length = arrays[0].length,
        othLength = arrays.length,
        othIndex = othLength,
        caches = Array(othLength),
        maxLength = Infinity,
        result = [];

    while (othIndex--) {
      var array = arrays[othIndex];
      if (othIndex && iteratee) {
        array = arrayMap(array, baseUnary(iteratee));
      }
      maxLength = nativeMin(array.length, maxLength);
      caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
        ? new SetCache(othIndex && array)
        : undefined;
    }
    array = arrays[0];

    var index = -1,
        seen = caches[0];

    outer:
    while (++index < length && result.length < maxLength) {
      var value = array[index],
          computed = iteratee ? iteratee(value) : value;

      value = (comparator || value !== 0) ? value : 0;
      if (!(seen
            ? cacheHas(seen, computed)
            : includes(result, computed, comparator)
          )) {
        othIndex = othLength;
        while (--othIndex) {
          var cache = caches[othIndex];
          if (!(cache
                ? cacheHas(cache, computed)
                : includes(arrays[othIndex], computed, comparator))
              ) {
            continue outer;
          }
        }
        if (seen) {
          seen.push(computed);
        }
        result.push(value);
      }
    }
    return result;
  }

  /**
   * The base implementation of `_.invert` and `_.invertBy` which inverts
   * `object` with values transformed by `iteratee` and set by `setter`.
   *
   * @private
   * @param {Object} object The object to iterate over.
   * @param {Function} setter The function to set `accumulator` values.
   * @param {Function} iteratee The iteratee to transform values.
   * @param {Object} accumulator The initial inverted object.
   * @returns {Function} Returns `accumulator`.
   */
  function baseInverter(object, setter, iteratee, accumulator) {
    baseForOwn(object, function(value, key, object) {
      setter(accumulator, iteratee(value), key, object);
    });
    return accumulator;
  }

  /**
   * The base implementation of `_.invoke` without support for individual
   * method arguments.
   *
   * @private
   * @param {Object} object The object to query.
   * @param {Array|string} path The path of the method to invoke.
   * @param {Array} args The arguments to invoke the method with.
   * @returns {*} Returns the result of the invoked method.
   */
  function baseInvoke(object, path, args) {
    path = castPath(path, object);
    object = parent(object, path);
    var func = object == null ? object : object[toKey(last(path))];
    return func == null ? undefined : apply(func, object, args);
  }

  /**
   * The base implementation of `_.isArguments`.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is an `arguments` object,
   */
  function baseIsArguments(value) {
    return isObjectLike(value) && baseGetTag(value) == argsTag;
  }

  /**
   * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
   */
  function baseIsArrayBuffer(value) {
    return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
  }

  /**
   * The base implementation of `_.isDate` without Node.js optimizations.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
   */
  function baseIsDate(value) {
    return isObjectLike(value) && baseGetTag(value) == dateTag;
  }

  /**
   * The base implementation of `_.isEqual` which supports partial comparisons
   * and tracks traversed objects.
   *
   * @private
   * @param {*} value The value to compare.
   * @param {*} other The other value to compare.
   * @param {boolean} bitmask The bitmask flags.
   *  1 - Unordered comparison
   *  2 - Partial comparison
   * @param {Function} [customizer] The function to customize comparisons.
   * @param {Object} [stack] Tracks traversed `value` and `other` objects.
   * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
   */
  function baseIsEqual(value, other, bitmask, customizer, stack) {
    if (value === other) {
      return true;
    }
    if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
      return value !== value && other !== other;
    }
    return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
  }

  /**
   * A specialized version of `baseIsEqual` for arrays and objects which performs
   * deep comparisons and tracks traversed objects enabling objects with circular
   * references to be compared.
   *
   * @private
   * @param {Object} object The object to compare.
   * @param {Object} other The other object to compare.
   * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
   * @param {Function} customizer The function to customize comparisons.
   * @param {Function} equalFunc The function to determine equivalents of values.
   * @param {Object} [stack] Tracks traversed `object` and `other` objects.
   * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
   */
  function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
    var objIsArr = isArray(object),
        othIsArr = isArray(other),
        objTag = objIsArr ? arrayTag : getTag(object),
        othTag = othIsArr ? arrayTag : getTag(other);

    objTag = objTag == argsTag ? objectTag : objTag;
    othTag = othTag == argsTag ? objectTag : othTag;

    var objIsObj = objTag == objectTag,
        othIsObj = othTag == objectTag,
        isSameTag = objTag == othTag;

    if (isSameTag && isBuffer(object)) {
      if (!isBuffer(other)) {
        return false;
      }
      objIsArr = true;
      objIsObj = false;
    }
    if (isSameTag && !objIsObj) {
      stack || (stack = new Stack);
      return (objIsArr || isTypedArray(object))
        ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
        : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
    }
    if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
      var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
          othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');

      if (objIsWrapped || othIsWrapped) {
        var objUnwrapped = objIsWrapped ? object.value() : object,
            othUnwrapped = othIsWrapped ? other.value() : other;

        stack || (stack = new Stack);
        return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
      }
    }
    if (!isSameTag) {
      return false;
    }
    stack || (stack = new Stack);
    return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
  }

  /**
   * The base implementation of `_.isMap` without Node.js optimizations.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a map, else `false`.
   */
  function baseIsMap(value) {
    return isObjectLike(value) && getTag(value) == mapTag;
  }

  /**
   * The base implementation of `_.isMatch` without support for iteratee shorthands.
   *
   * @private
   * @param {Object} object The object to inspect.
   * @param {Object} source The object of property values to match.
   * @param {Array} matchData The property names, values, and compare flags to match.
   * @param {Function} [customizer] The function to customize comparisons.
   * @returns {boolean} Returns `true` if `object` is a match, else `false`.
   */
  function baseIsMatch(object, source, matchData, customizer) {
    var index = matchData.length,
        length = index,
        noCustomizer = !customizer;

    if (object == null) {
      return !length;
    }
    object = Object(object);
    while (index--) {
      var data = matchData[index];
      if ((noCustomizer && data[2])
            ? data[1] !== object[data[0]]
            : !(data[0] in object)
          ) {
        return false;
      }
    }
    while (++index < length) {
      data = matchData[index];
      var key = data[0],
          objValue = object[key],
          srcValue = data[1];

      if (noCustomizer && data[2]) {
        if (objValue === undefined && !(key in object)) {
          return false;
        }
      } else {
        var stack = new Stack;
        if (customizer) {
          var result = customizer(objValue, srcValue, key, object, source, stack);
        }
        if (!(result === undefined
              ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
              : result
            )) {
          return false;
        }
      }
    }
    return true;
  }

  /**
   * The base implementation of `_.isNative` without bad shim checks.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a native function,
   *  else `false`.
   */
  function baseIsNative(value) {
    if (!isObject(value) || isMasked(value)) {
      return false;
    }
    var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
    return pattern.test(toSource(value));
  }

  /**
   * The base implementation of `_.isRegExp` without Node.js optimizations.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
   */
  function baseIsRegExp(value) {
    return isObjectLike(value) && baseGetTag(value) == regexpTag;
  }

  /**
   * The base implementation of `_.isSet` without Node.js optimizations.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a set, else `false`.
   */
  function baseIsSet(value) {
    return isObjectLike(value) && getTag(value) == setTag;
  }

  /**
   * The base implementation of `_.isTypedArray` without Node.js optimizations.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
   */
  function baseIsTypedArray(value) {
    return isObjectLike(value) &&
      isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
  }

  /**
   * The base implementation of `_.iteratee`.
   *
   * @private
   * @param {*} [value=_.identity] The value to convert to an iteratee.
   * @returns {Function} Returns the iteratee.
   */
  function baseIteratee(value) {
    // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
    // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
    if (typeof value == 'function') {
      return value;
    }
    if (value == null) {
      return identity;
    }
    if (typeof value == 'object') {
      return isArray(value)
        ? baseMatchesProperty(value[0], value[1])
        : baseMatches(value);
    }
    return property(value);
  }

  /**
   * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
   *
   * @private
   * @param {Object} object The object to query.
   * @returns {Array} Returns the array of property names.
   */
  function baseKeys(object) {
    if (!isPrototype(object)) {
      return nativeKeys(object);
    }
    var result = [];
    for (var key in Object(object)) {
      if (hasOwnProperty.call(object, key) && key != 'constructor') {
        result.push(key);
      }
    }
    return result;
  }

  /**
   * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
   *
   * @private
   * @param {Object} object The object to query.
   * @returns {Array} Returns the array of property names.
   */
  function baseKeysIn(object) {
    if (!isObject(object)) {
      return nativeKeysIn(object);
    }
    var isProto = isPrototype(object),
        result = [];

    for (var key in object) {
      if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
        result.push(key);
      }
    }
    return result;
  }

  /**
   * The base implementation of `_.lt` which doesn't coerce arguments.
   *
   * @private
   * @param {*} value The value to compare.
   * @param {*} other The other value to compare.
   * @returns {boolean} Returns `true` if `value` is less than `other`,
   *  else `false`.
   */
  function baseLt(value, other) {
    return value < other;
  }

  /**
   * The base implementation of `_.map` without support for iteratee shorthands.
   *
   * @private
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} iteratee The function invoked per iteration.
   * @returns {Array} Returns the new mapped array.
   */
  function baseMap(collection, iteratee) {
    var index = -1,
        result = isArrayLike(collection) ? Array(collection.length) : [];

    baseEach(collection, function(value, key, collection) {
      result[++index] = iteratee(value, key, collection);
    });
    return result;
  }

  /**
   * The base implementation of `_.matches` which doesn't clone `source`.
   *
   * @private
   * @param {Object} source The object of property values to match.
   * @returns {Function} Returns the new spec function.
   */
  function baseMatches(source) {
    var matchData = getMatchData(source);
    if (matchData.length == 1 && matchData[0][2]) {
      return matchesStrictComparable(matchData[0][0], matchData[0][1]);
    }
    return function(object) {
      return object === source || baseIsMatch(object, source, matchData);
    };
  }

  /**
   * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
   *
   * @private
   * @param {string} path The path of the property to get.
   * @param {*} srcValue The value to match.
   * @returns {Function} Returns the new spec function.
   */
  function baseMatchesProperty(path, srcValue) {
    if (isKey(path) && isStrictComparable(srcValue)) {
      return matchesStrictComparable(toKey(path), srcValue);
    }
    return function(object) {
      var objValue = get(object, path);
      return (objValue === undefined && objValue === srcValue)
        ? hasIn(object, path)
        : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
    };
  }

  /**
   * The base implementation of `_.merge` without support for multiple sources.
   *
   * @private
   * @param {Object} object The destination object.
   * @param {Object} source The source object.
   * @param {number} srcIndex The index of `source`.
   * @param {Function} [customizer] The function to customize merged values.
   * @param {Object} [stack] Tracks traversed source values and their merged
   *  counterparts.
   */
  function baseMerge(object, source, srcIndex, customizer, stack) {
    if (object === source) {
      return;
    }
    baseFor(source, function(srcValue, key) {
      if (isObject(srcValue)) {
        stack || (stack = new Stack);
        baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
      }
      else {
        var newValue = customizer
          ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
          : undefined;

        if (newValue === undefined) {
          newValue = srcValue;
        }
        assignMergeValue(object, key, newValue);
      }
    }, keysIn);
  }

  /**
   * A specialized version of `baseMerge` for arrays and objects which performs
   * deep merges and tracks traversed objects enabling objects with circular
   * references to be merged.
   *
   * @private
   * @param {Object} object The destination object.
   * @param {Object} source The source object.
   * @param {string} key The key of the value to merge.
   * @param {number} srcIndex The index of `source`.
   * @param {Function} mergeFunc The function to merge values.
   * @param {Function} [customizer] The function to customize assigned values.
   * @param {Object} [stack] Tracks traversed source values and their merged
   *  counterparts.
   */
  function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
    var objValue = safeGet(object, key),
        srcValue = safeGet(source, key),
        stacked = stack.get(srcValue);

    if (stacked) {
      assignMergeValue(object, key, stacked);
      return;
    }
    var newValue = customizer
      ? customizer(objValue, srcValue, (key + ''), object, source, stack)
      : undefined;

    var isCommon = newValue === undefined;

    if (isCommon) {
      var isArr = isArray(srcValue),
          isBuff = !isArr && isBuffer(srcValue),
          isTyped = !isArr && !isBuff && isTypedArray(srcValue);

      newValue = srcValue;
      if (isArr || isBuff || isTyped) {
        if (isArray(objValue)) {
          newValue = objValue;
        }
        else if (isArrayLikeObject(objValue)) {
          newValue = copyArray(objValue);
        }
        else if (isBuff) {
          isCommon = false;
          newValue = cloneBuffer(srcValue, true);
        }
        else if (isTyped) {
          isCommon = false;
          newValue = cloneTypedArray(srcValue, true);
        }
        else {
          newValue = [];
        }
      }
      else if (isPlainObject(srcValue) || isArguments(srcValue)) {
        newValue = objValue;
        if (isArguments(objValue)) {
          newValue = toPlainObject(objValue);
        }
        else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {
          newValue = initCloneObject(srcValue);
        }
      }
      else {
        isCommon = false;
      }
    }
    if (isCommon) {
      // Recursively merge objects and arrays (susceptible to call stack limits).
      stack.set(srcValue, newValue);
      mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
      stack['delete'](srcValue);
    }
    assignMergeValue(object, key, newValue);
  }

  /**
   * The base implementation of `_.nth` which doesn't coerce arguments.
   *
   * @private
   * @param {Array} array The array to query.
   * @param {number} n The index of the element to return.
   * @returns {*} Returns the nth element of `array`.
   */
  function baseNth(array, n) {
    var length = array.length;
    if (!length) {
      return;
    }
    n += n < 0 ? length : 0;
    return isIndex(n, length) ? array[n] : undefined;
  }

  /**
   * The base implementation of `_.orderBy` without param guards.
   *
   * @private
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
   * @param {string[]} orders The sort orders of `iteratees`.
   * @returns {Array} Returns the new sorted array.
   */
  function baseOrderBy(collection, iteratees, orders) {
    var index = -1;
    iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));

    var result = baseMap(collection, function(value, key, collection) {
      var criteria = arrayMap(iteratees, function(iteratee) {
        return iteratee(value);
      });
      return { 'criteria': criteria, 'index': ++index, 'value': value };
    });

    return baseSortBy(result, function(object, other) {
      return compareMultiple(object, other, orders);
    });
  }

  /**
   * The base implementation of `_.pick` without support for individual
   * property identifiers.
   *
   * @private
   * @param {Object} object The source object.
   * @param {string[]} paths The property paths to pick.
   * @returns {Object} Returns the new object.
   */
  function basePick(object, paths) {
    return basePickBy(object, paths, function(value, path) {
      return hasIn(object, path);
    });
  }

  /**
   * The base implementation of  `_.pickBy` without support for iteratee shorthands.
   *
   * @private
   * @param {Object} object The source object.
   * @param {string[]} paths The property paths to pick.
   * @param {Function} predicate The function invoked per property.
   * @returns {Object} Returns the new object.
   */
  function basePickBy(object, paths, predicate) {
    var index = -1,
        length = paths.length,
        result = {};

    while (++index < length) {
      var path = paths[index],
          value = baseGet(object, path);

      if (predicate(value, path)) {
        baseSet(result, castPath(path, object), value);
      }
    }
    return result;
  }

  /**
   * A specialized version of `baseProperty` which supports deep paths.
   *
   * @private
   * @param {Array|string} path The path of the property to get.
   * @returns {Function} Returns the new accessor function.
   */
  function basePropertyDeep(path) {
    return function(object) {
      return baseGet(object, path);
    };
  }

  /**
   * The base implementation of `_.pullAllBy` without support for iteratee
   * shorthands.
   *
   * @private
   * @param {Array} array The array to modify.
   * @param {Array} values The values to remove.
   * @param {Function} [iteratee] The iteratee invoked per element.
   * @param {Function} [comparator] The comparator invoked per element.
   * @returns {Array} Returns `array`.
   */
  function basePullAll(array, values, iteratee, comparator) {
    var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
        index = -1,
        length = values.length,
        seen = array;

    if (array === values) {
      values = copyArray(values);
    }
    if (iteratee) {
      seen = arrayMap(array, baseUnary(iteratee));
    }
    while (++index < length) {
      var fromIndex = 0,
          value = values[index],
          computed = iteratee ? iteratee(value) : value;

      while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
        if (seen !== array) {
          splice.call(seen, fromIndex, 1);
        }
        splice.call(array, fromIndex, 1);
      }
    }
    return array;
  }

  /**
   * The base implementation of `_.pullAt` without support for individual
   * indexes or capturing the removed elements.
   *
   * @private
   * @param {Array} array The array to modify.
   * @param {number[]} indexes The indexes of elements to remove.
   * @returns {Array} Returns `array`.
   */
  function basePullAt(array, indexes) {
    var length = array ? indexes.length : 0,
        lastIndex = length - 1;

    while (length--) {
      var index = indexes[length];
      if (length == lastIndex || index !== previous) {
        var previous = index;
        if (isIndex(index)) {
          splice.call(array, index, 1);
        } else {
          baseUnset(array, index);
        }
      }
    }
    return array;
  }

  /**
   * The base implementation of `_.random` without support for returning
   * floating-point numbers.
   *
   * @private
   * @param {number} lower The lower bound.
   * @param {number} upper The upper bound.
   * @returns {number} Returns the random number.
   */
  function baseRandom(lower, upper) {
    return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
  }

  /**
   * The base implementation of `_.range` and `_.rangeRight` which doesn't
   * coerce arguments.
   *
   * @private
   * @param {number} start The start of the range.
   * @param {number} end The end of the range.
   * @param {number} step The value to increment or decrement by.
   * @param {boolean} [fromRight] Specify iterating from right to left.
   * @returns {Array} Returns the range of numbers.
   */
  function baseRange(start, end, step, fromRight) {
    var index = -1,
        length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
        result = Array(length);

    while (length--) {
      result[fromRight ? length : ++index] = start;
      start += step;
    }
    return result;
  }

  /**
   * The base implementation of `_.repeat` which doesn't coerce arguments.
   *
   * @private
   * @param {string} string The string to repeat.
   * @param {number} n The number of times to repeat the string.
   * @returns {string} Returns the repeated string.
   */
  function baseRepeat(string, n) {
    var result = '';
    if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
      return result;
    }
    // Leverage the exponentiation by squaring algorithm for a faster repeat.
    // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
    do {
      if (n % 2) {
        result += string;
      }
      n = nativeFloor(n / 2);
      if (n) {
        string += string;
      }
    } while (n);

    return result;
  }

  /**
   * The base implementation of `_.rest` which doesn't validate or coerce arguments.
   *
   * @private
   * @param {Function} func The function to apply a rest parameter to.
   * @param {number} [start=func.length-1] The start position of the rest parameter.
   * @returns {Function} Returns the new function.
   */
  function baseRest(func, start) {
    return setToString(overRest(func, start, identity), func + '');
  }

  /**
   * The base implementation of `_.sample`.
   *
   * @private
   * @param {Array|Object} collection The collection to sample.
   * @returns {*} Returns the random element.
   */
  function baseSample(collection) {
    return arraySample(values(collection));
  }

  /**
   * The base implementation of `_.sampleSize` without param guards.
   *
   * @private
   * @param {Array|Object} collection The collection to sample.
   * @param {number} n The number of elements to sample.
   * @returns {Array} Returns the random elements.
   */
  function baseSampleSize(collection, n) {
    var array = values(collection);
    return shuffleSelf(array, baseClamp(n, 0, array.length));
  }

  /**
   * The base implementation of `_.set`.
   *
   * @private
   * @param {Object} object The object to modify.
   * @param {Array|string} path The path of the property to set.
   * @param {*} value The value to set.
   * @param {Function} [customizer] The function to customize path creation.
   * @returns {Object} Returns `object`.
   */
  function baseSet(object, path, value, customizer) {
    if (!isObject(object)) {
      return object;
    }
    path = castPath(path, object);

    var index = -1,
        length = path.length,
        lastIndex = length - 1,
        nested = object;

    while (nested != null && ++index < length) {
      var key = toKey(path[index]),
          newValue = value;

      if (index != lastIndex) {
        var objValue = nested[key];
        newValue = customizer ? customizer(objValue, key, nested) : undefined;
        if (newValue === undefined) {
          newValue = isObject(objValue)
            ? objValue
            : (isIndex(path[index + 1]) ? [] : {});
        }
      }
      assignValue(nested, key, newValue);
      nested = nested[key];
    }
    return object;
  }

  /**
   * The base implementation of `setData` without support for hot loop shorting.
   *
   * @private
   * @param {Function} func The function to associate metadata with.
   * @param {*} data The metadata.
   * @returns {Function} Returns `func`.
   */
  var baseSetData = !metaMap ? identity : function(func, data) {
    metaMap.set(func, data);
    return func;
  };

  /**
   * The base implementation of `setToString` without support for hot loop shorting.
   *
   * @private
   * @param {Function} func The function to modify.
   * @param {Function} string The `toString` result.
   * @returns {Function} Returns `func`.
   */
  var baseSetToString = !defineProperty ? identity : function(func, string) {
    return defineProperty(func, 'toString', {
      'configurable': true,
      'enumerable': false,
      'value': constant(string),
      'writable': true
    });
  };

  /**
   * The base implementation of `_.shuffle`.
   *
   * @private
   * @param {Array|Object} collection The collection to shuffle.
   * @returns {Array} Returns the new shuffled array.
   */
  function baseShuffle(collection) {
    return shuffleSelf(values(collection));
  }

  /**
   * The base implementation of `_.slice` without an iteratee call guard.
   *
   * @private
   * @param {Array} array The array to slice.
   * @param {number} [start=0] The start position.
   * @param {number} [end=array.length] The end position.
   * @returns {Array} Returns the slice of `array`.
   */
  function baseSlice(array, start, end) {
    var index = -1,
        length = array.length;

    if (start < 0) {
      start = -start > length ? 0 : (length + start);
    }
    end = end > length ? length : end;
    if (end < 0) {
      end += length;
    }
    length = start > end ? 0 : ((end - start) >>> 0);
    start >>>= 0;

    var result = Array(length);
    while (++index < length) {
      result[index] = array[index + start];
    }
    return result;
  }

  /**
   * The base implementation of `_.some` without support for iteratee shorthands.
   *
   * @private
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} predicate The function invoked per iteration.
   * @returns {boolean} Returns `true` if any element passes the predicate check,
   *  else `false`.
   */
  function baseSome(collection, predicate) {
    var result;

    baseEach(collection, function(value, index, collection) {
      result = predicate(value, index, collection);
      return !result;
    });
    return !!result;
  }

  /**
   * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
   * performs a binary search of `array` to determine the index at which `value`
   * should be inserted into `array` in order to maintain its sort order.
   *
   * @private
   * @param {Array} array The sorted array to inspect.
   * @param {*} value The value to evaluate.
   * @param {boolean} [retHighest] Specify returning the highest qualified index.
   * @returns {number} Returns the index at which `value` should be inserted
   *  into `array`.
   */
  function baseSortedIndex(array, value, retHighest) {
    var low = 0,
        high = array == null ? low : array.length;

    if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
      while (low < high) {
        var mid = (low + high) >>> 1,
            computed = array[mid];

        if (computed !== null && !isSymbol(computed) &&
            (retHighest ? (computed <= value) : (computed < value))) {
          low = mid + 1;
        } else {
          high = mid;
        }
      }
      return high;
    }
    return baseSortedIndexBy(array, value, identity, retHighest);
  }

  /**
   * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
   * which invokes `iteratee` for `value` and each element of `array` to compute
   * their sort ranking. The iteratee is invoked with one argument; (value).
   *
   * @private
   * @param {Array} array The sorted array to inspect.
   * @param {*} value The value to evaluate.
   * @param {Function} iteratee The iteratee invoked per element.
   * @param {boolean} [retHighest] Specify returning the highest qualified index.
   * @returns {number} Returns the index at which `value` should be inserted
   *  into `array`.
   */
  function baseSortedIndexBy(array, value, iteratee, retHighest) {
    value = iteratee(value);

    var low = 0,
        high = array == null ? 0 : array.length,
        valIsNaN = value !== value,
        valIsNull = value === null,
        valIsSymbol = isSymbol(value),
        valIsUndefined = value === undefined;

    while (low < high) {
      var mid = nativeFloor((low + high) / 2),
          computed = iteratee(array[mid]),
          othIsDefined = computed !== undefined,
          othIsNull = computed === null,
          othIsReflexive = computed === computed,
          othIsSymbol = isSymbol(computed);

      if (valIsNaN) {
        var setLow = retHighest || othIsReflexive;
      } else if (valIsUndefined) {
        setLow = othIsReflexive && (retHighest || othIsDefined);
      } else if (valIsNull) {
        setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
      } else if (valIsSymbol) {
        setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
      } else if (othIsNull || othIsSymbol) {
        setLow = false;
      } else {
        setLow = retHighest ? (computed <= value) : (computed < value);
      }
      if (setLow) {
        low = mid + 1;
      } else {
        high = mid;
      }
    }
    return nativeMin(high, MAX_ARRAY_INDEX);
  }

  /**
   * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
   * support for iteratee shorthands.
   *
   * @private
   * @param {Array} array The array to inspect.
   * @param {Function} [iteratee] The iteratee invoked per element.
   * @returns {Array} Returns the new duplicate free array.
   */
  function baseSortedUniq(array, iteratee) {
    var index = -1,
        length = array.length,
        resIndex = 0,
        result = [];

    while (++index < length) {
      var value = array[index],
          computed = iteratee ? iteratee(value) : value;

      if (!index || !eq(computed, seen)) {
        var seen = computed;
        result[resIndex++] = value === 0 ? 0 : value;
      }
    }
    return result;
  }

  /**
   * The base implementation of `_.toNumber` which doesn't ensure correct
   * conversions of binary, hexadecimal, or octal string values.
   *
   * @private
   * @param {*} value The value to process.
   * @returns {number} Returns the number.
   */
  function baseToNumber(value) {
    if (typeof value == 'number') {
      return value;
    }
    if (isSymbol(value)) {
      return NAN;
    }
    return +value;
  }

  /**
   * The base implementation of `_.toString` which doesn't convert nullish
   * values to empty strings.
   *
   * @private
   * @param {*} value The value to process.
   * @returns {string} Returns the string.
   */
  function baseToString(value) {
    // Exit early for strings to avoid a performance hit in some environments.
    if (typeof value == 'string') {
      return value;
    }
    if (isArray(value)) {
      // Recursively convert values (susceptible to call stack limits).
      return arrayMap(value, baseToString) + '';
    }
    if (isSymbol(value)) {
      return symbolToString ? symbolToString.call(value) : '';
    }
    var result = (value + '');
    return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
  }

  /**
   * The base implementation of `_.uniqBy` without support for iteratee shorthands.
   *
   * @private
   * @param {Array} array The array to inspect.
   * @param {Function} [iteratee] The iteratee invoked per element.
   * @param {Function} [comparator] The comparator invoked per element.
   * @returns {Array} Returns the new duplicate free array.
   */
  function baseUniq(array, iteratee, comparator) {
    var index = -1,
        includes = arrayIncludes,
        length = array.length,
        isCommon = true,
        result = [],
        seen = result;

    if (comparator) {
      isCommon = false;
      includes = arrayIncludesWith;
    }
    else if (length >= LARGE_ARRAY_SIZE) {
      var set = iteratee ? null : createSet(array);
      if (set) {
        return setToArray(set);
      }
      isCommon = false;
      includes = cacheHas;
      seen = new SetCache;
    }
    else {
      seen = iteratee ? [] : result;
    }
    outer:
    while (++index < length) {
      var value = array[index],
          computed = iteratee ? iteratee(value) : value;

      value = (comparator || value !== 0) ? value : 0;
      if (isCommon && computed === computed) {
        var seenIndex = seen.length;
        while (seenIndex--) {
          if (seen[seenIndex] === computed) {
            continue outer;
          }
        }
        if (iteratee) {
          seen.push(computed);
        }
        result.push(value);
      }
      else if (!includes(seen, computed, comparator)) {
        if (seen !== result) {
          seen.push(computed);
        }
        result.push(value);
      }
    }
    return result;
  }

  /**
   * The base implementation of `_.unset`.
   *
   * @private
   * @param {Object} object The object to modify.
   * @param {Array|string} path The property path to unset.
   * @returns {boolean} Returns `true` if the property is deleted, else `false`.
   */
  function baseUnset(object, path) {
    path = castPath(path, object);
    object = parent(object, path);
    return object == null || delete object[toKey(last(path))];
  }

  /**
   * The base implementation of `_.update`.
   *
   * @private
   * @param {Object} object The object to modify.
   * @param {Array|string} path The path of the property to update.
   * @param {Function} updater The function to produce the updated value.
   * @param {Function} [customizer] The function to customize path creation.
   * @returns {Object} Returns `object`.
   */
  function baseUpdate(object, path, updater, customizer) {
    return baseSet(object, path, updater(baseGet(object, path)), customizer);
  }

  /**
   * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
   * without support for iteratee shorthands.
   *
   * @private
   * @param {Array} array The array to query.
   * @param {Function} predicate The function invoked per iteration.
   * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
   * @param {boolean} [fromRight] Specify iterating from right to left.
   * @returns {Array} Returns the slice of `array`.
   */
  function baseWhile(array, predicate, isDrop, fromRight) {
    var length = array.length,
        index = fromRight ? length : -1;

    while ((fromRight ? index-- : ++index < length) &&
      predicate(array[index], index, array)) {}

    return isDrop
      ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
      : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
  }

  /**
   * The base implementation of `wrapperValue` which returns the result of
   * performing a sequence of actions on the unwrapped `value`, where each
   * successive action is supplied the return value of the previous.
   *
   * @private
   * @param {*} value The unwrapped value.
   * @param {Array} actions Actions to perform to resolve the unwrapped value.
   * @returns {*} Returns the resolved value.
   */
  function baseWrapperValue(value, actions) {
    var result = value;
    if (result instanceof LazyWrapper) {
      result = result.value();
    }
    return arrayReduce(actions, function(result, action) {
      return action.func.apply(action.thisArg, arrayPush([result], action.args));
    }, result);
  }

  /**
   * The base implementation of methods like `_.xor`, without support for
   * iteratee shorthands, that accepts an array of arrays to inspect.
   *
   * @private
   * @param {Array} arrays The arrays to inspect.
   * @param {Function} [iteratee] The iteratee invoked per element.
   * @param {Function} [comparator] The comparator invoked per element.
   * @returns {Array} Returns the new array of values.
   */
  function baseXor(arrays, iteratee, comparator) {
    var length = arrays.length;
    if (length < 2) {
      return length ? baseUniq(arrays[0]) : [];
    }
    var index = -1,
        result = Array(length);

    while (++index < length) {
      var array = arrays[index],
          othIndex = -1;

      while (++othIndex < length) {
        if (othIndex != index) {
          result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
        }
      }
    }
    return baseUniq(baseFlatten(result, 1), iteratee, comparator);
  }

  /**
   * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
   *
   * @private
   * @param {Array} props The property identifiers.
   * @param {Array} values The property values.
   * @param {Function} assignFunc The function to assign values.
   * @returns {Object} Returns the new object.
   */
  function baseZipObject(props, values, assignFunc) {
    var index = -1,
        length = props.length,
        valsLength = values.length,
        result = {};

    while (++index < length) {
      var value = index < valsLength ? values[index] : undefined;
      assignFunc(result, props[index], value);
    }
    return result;
  }

  /**
   * Casts `value` to an empty array if it's not an array like object.
   *
   * @private
   * @param {*} value The value to inspect.
   * @returns {Array|Object} Returns the cast array-like object.
   */
  function castArrayLikeObject(value) {
    return isArrayLikeObject(value) ? value : [];
  }

  /**
   * Casts `value` to `identity` if it's not a function.
   *
   * @private
   * @param {*} value The value to inspect.
   * @returns {Function} Returns cast function.
   */
  function castFunction(value) {
    return typeof value == 'function' ? value : identity;
  }

  /**
   * Casts `value` to a path array if it's not one.
   *
   * @private
   * @param {*} value The value to inspect.
   * @param {Object} [object] The object to query keys on.
   * @returns {Array} Returns the cast property path array.
   */
  function castPath(value, object) {
    if (isArray(value)) {
      return value;
    }
    return isKey(value, object) ? [value] : stringToPath(toString(value));
  }

  /**
   * A `baseRest` alias which can be replaced with `identity` by module
   * replacement plugins.
   *
   * @private
   * @type {Function}
   * @param {Function} func The function to apply a rest parameter to.
   * @returns {Function} Returns the new function.
   */
  var castRest = baseRest;

  /**
   * Casts `array` to a slice if it's needed.
   *
   * @private
   * @param {Array} array The array to inspect.
   * @param {number} start The start position.
   * @param {number} [end=array.length] The end position.
   * @returns {Array} Returns the cast slice.
   */
  function castSlice(array, start, end) {
    var length = array.length;
    end = end === undefined ? length : end;
    return (!start && end >= length) ? array : baseSlice(array, start, end);
  }

  /**
   * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
   *
   * @private
   * @param {number|Object} id The timer id or timeout object of the timer to clear.
   */
  var clearTimeout = ctxClearTimeout || function(id) {
    return root.clearTimeout(id);
  };

  /**
   * Creates a clone of  `buffer`.
   *
   * @private
   * @param {Buffer} buffer The buffer to clone.
   * @param {boolean} [isDeep] Specify a deep clone.
   * @returns {Buffer} Returns the cloned buffer.
   */
  function cloneBuffer(buffer, isDeep) {
    if (isDeep) {
      return buffer.slice();
    }
    var length = buffer.length,
        result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);

    buffer.copy(result);
    return result;
  }

  /**
   * Creates a clone of `arrayBuffer`.
   *
   * @private
   * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
   * @returns {ArrayBuffer} Returns the cloned array buffer.
   */
  function cloneArrayBuffer(arrayBuffer) {
    var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
    new Uint8Array(result).set(new Uint8Array(arrayBuffer));
    return result;
  }

  /**
   * Creates a clone of `dataView`.
   *
   * @private
   * @param {Object} dataView The data view to clone.
   * @param {boolean} [isDeep] Specify a deep clone.
   * @returns {Object} Returns the cloned data view.
   */
  function cloneDataView(dataView, isDeep) {
    var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
    return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
  }

  /**
   * Creates a clone of `regexp`.
   *
   * @private
   * @param {Object} regexp The regexp to clone.
   * @returns {Object} Returns the cloned regexp.
   */
  function cloneRegExp(regexp) {
    var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
    result.lastIndex = regexp.lastIndex;
    return result;
  }

  /**
   * Creates a clone of the `symbol` object.
   *
   * @private
   * @param {Object} symbol The symbol object to clone.
   * @returns {Object} Returns the cloned symbol object.
   */
  function cloneSymbol(symbol) {
    return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
  }

  /**
   * Creates a clone of `typedArray`.
   *
   * @private
   * @param {Object} typedArray The typed array to clone.
   * @param {boolean} [isDeep] Specify a deep clone.
   * @returns {Object} Returns the cloned typed array.
   */
  function cloneTypedArray(typedArray, isDeep) {
    var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
    return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
  }

  /**
   * Compares values to sort them in ascending order.
   *
   * @private
   * @param {*} value The value to compare.
   * @param {*} other The other value to compare.
   * @returns {number} Returns the sort order indicator for `value`.
   */
  function compareAscending(value, other) {
    if (value !== other) {
      var valIsDefined = value !== undefined,
          valIsNull = value === null,
          valIsReflexive = value === value,
          valIsSymbol = isSymbol(value);

      var othIsDefined = other !== undefined,
          othIsNull = other === null,
          othIsReflexive = other === other,
          othIsSymbol = isSymbol(other);

      if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
          (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
          (valIsNull && othIsDefined && othIsReflexive) ||
          (!valIsDefined && othIsReflexive) ||
          !valIsReflexive) {
        return 1;
      }
      if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
          (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
          (othIsNull && valIsDefined && valIsReflexive) ||
          (!othIsDefined && valIsReflexive) ||
          !othIsReflexive) {
        return -1;
      }
    }
    return 0;
  }

  /**
   * Used by `_.orderBy` to compare multiple properties of a value to another
   * and stable sort them.
   *
   * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
   * specify an order of "desc" for descending or "asc" for ascending sort order
   * of corresponding values.
   *
   * @private
   * @param {Object} object The object to compare.
   * @param {Object} other The other object to compare.
   * @param {boolean[]|string[]} orders The order to sort by for each property.
   * @returns {number} Returns the sort order indicator for `object`.
   */
  function compareMultiple(object, other, orders) {
    var index = -1,
        objCriteria = object.criteria,
        othCriteria = other.criteria,
        length = objCriteria.length,
        ordersLength = orders.length;

    while (++index < length) {
      var result = compareAscending(objCriteria[index], othCriteria[index]);
      if (result) {
        if (index >= ordersLength) {
          return result;
        }
        var order = orders[index];
        return result * (order == 'desc' ? -1 : 1);
      }
    }
    // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
    // that causes it, under certain circumstances, to provide the same value for
    // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
    // for more details.
    //
    // This also ensures a stable sort in V8 and other engines.
    // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
    return object.index - other.index;
  }

  /**
   * Creates an array that is the composition of partially applied arguments,
   * placeholders, and provided arguments into a single array of arguments.
   *
   * @private
   * @param {Array} args The provided arguments.
   * @param {Array} partials The arguments to prepend to those provided.
   * @param {Array} holders The `partials` placeholder indexes.
   * @params {boolean} [isCurried] Specify composing for a curried function.
   * @returns {Array} Returns the new array of composed arguments.
   */
  function composeArgs(args, partials, holders, isCurried) {
    var argsIndex = -1,
        argsLength = args.length,
        holdersLength = holders.length,
        leftIndex = -1,
        leftLength = partials.length,
        rangeLength = nativeMax(argsLength - holdersLength, 0),
        result = Array(leftLength + rangeLength),
        isUncurried = !isCurried;

    while (++leftIndex < leftLength) {
      result[leftIndex] = partials[leftIndex];
    }
    while (++argsIndex < holdersLength) {
      if (isUncurried || argsIndex < argsLength) {
        result[holders[argsIndex]] = args[argsIndex];
      }
    }
    while (rangeLength--) {
      result[leftIndex++] = args[argsIndex++];
    }
    return result;
  }

  /**
   * This function is like `composeArgs` except that the arguments composition
   * is tailored for `_.partialRight`.
   *
   * @private
   * @param {Array} args The provided arguments.
   * @param {Array} partials The arguments to append to those provided.
   * @param {Array} holders The `partials` placeholder indexes.
   * @params {boolean} [isCurried] Specify composing for a curried function.
   * @returns {Array} Returns the new array of composed arguments.
   */
  function composeArgsRight(args, partials, holders, isCurried) {
    var argsIndex = -1,
        argsLength = args.length,
        holdersIndex = -1,
        holdersLength = holders.length,
        rightIndex = -1,
        rightLength = partials.length,
        rangeLength = nativeMax(argsLength - holdersLength, 0),
        result = Array(rangeLength + rightLength),
        isUncurried = !isCurried;

    while (++argsIndex < rangeLength) {
      result[argsIndex] = args[argsIndex];
    }
    var offset = argsIndex;
    while (++rightIndex < rightLength) {
      result[offset + rightIndex] = partials[rightIndex];
    }
    while (++holdersIndex < holdersLength) {
      if (isUncurried || argsIndex < argsLength) {
        result[offset + holders[holdersIndex]] = args[argsIndex++];
      }
    }
    return result;
  }

  /**
   * Copies the values of `source` to `array`.
   *
   * @private
   * @param {Array} source The array to copy values from.
   * @param {Array} [array=[]] The array to copy values to.
   * @returns {Array} Returns `array`.
   */
  function copyArray(source, array) {
    var index = -1,
        length = source.length;

    array || (array = Array(length));
    while (++index < length) {
      array[index] = source[index];
    }
    return array;
  }

  /**
   * Copies properties of `source` to `object`.
   *
   * @private
   * @param {Object} source The object to copy properties from.
   * @param {Array} props The property identifiers to copy.
   * @param {Object} [object={}] The object to copy properties to.
   * @param {Function} [customizer] The function to customize copied values.
   * @returns {Object} Returns `object`.
   */
  function copyObject(source, props, object, customizer) {
    var isNew = !object;
    object || (object = {});

    var index = -1,
        length = props.length;

    while (++index < length) {
      var key = props[index];

      var newValue = customizer
        ? customizer(object[key], source[key], key, object, source)
        : undefined;

      if (newValue === undefined) {
        newValue = source[key];
      }
      if (isNew) {
        baseAssignValue(object, key, newValue);
      } else {
        assignValue(object, key, newValue);
      }
    }
    return object;
  }

  /**
   * Copies own symbols of `source` to `object`.
   *
   * @private
   * @param {Object} source The object to copy symbols from.
   * @param {Object} [object={}] The object to copy symbols to.
   * @returns {Object} Returns `object`.
   */
  function copySymbols(source, object) {
    return copyObject(source, getSymbols(source), object);
  }

  /**
   * Copies own and inherited symbols of `source` to `object`.
   *
   * @private
   * @param {Object} source The object to copy symbols from.
   * @param {Object} [object={}] The object to copy symbols to.
   * @returns {Object} Returns `object`.
   */
  function copySymbolsIn(source, object) {
    return copyObject(source, getSymbolsIn(source), object);
  }

  /**
   * Creates a function like `_.groupBy`.
   *
   * @private
   * @param {Function} setter The function to set accumulator values.
   * @param {Function} [initializer] The accumulator object initializer.
   * @returns {Function} Returns the new aggregator function.
   */
  function createAggregator(setter, initializer) {
    return function(collection, iteratee) {
      var func = isArray(collection) ? arrayAggregator : baseAggregator,
          accumulator = initializer ? initializer() : {};

      return func(collection, setter, getIteratee(iteratee, 2), accumulator);
    };
  }

  /**
   * Creates a function like `_.assign`.
   *
   * @private
   * @param {Function} assigner The function to assign values.
   * @returns {Function} Returns the new assigner function.
   */
  function createAssigner(assigner) {
    return baseRest(function(object, sources) {
      var index = -1,
          length = sources.length,
          customizer = length > 1 ? sources[length - 1] : undefined,
          guard = length > 2 ? sources[2] : undefined;

      customizer = (assigner.length > 3 && typeof customizer == 'function')
        ? (length--, customizer)
        : undefined;

      if (guard && isIterateeCall(sources[0], sources[1], guard)) {
        customizer = length < 3 ? undefined : customizer;
        length = 1;
      }
      object = Object(object);
      while (++index < length) {
        var source = sources[index];
        if (source) {
          assigner(object, source, index, customizer);
        }
      }
      return object;
    });
  }

  /**
   * Creates a `baseEach` or `baseEachRight` function.
   *
   * @private
   * @param {Function} eachFunc The function to iterate over a collection.
   * @param {boolean} [fromRight] Specify iterating from right to left.
   * @returns {Function} Returns the new base function.
   */
  function createBaseEach(eachFunc, fromRight) {
    return function(collection, iteratee) {
      if (collection == null) {
        return collection;
      }
      if (!isArrayLike(collection)) {
        return eachFunc(collection, iteratee);
      }
      var length = collection.length,
          index = fromRight ? length : -1,
          iterable = Object(collection);

      while ((fromRight ? index-- : ++index < length)) {
        if (iteratee(iterable[index], index, iterable) === false) {
          break;
        }
      }
      return collection;
    };
  }

  /**
   * Creates a base function for methods like `_.forIn` and `_.forOwn`.
   *
   * @private
   * @param {boolean} [fromRight] Specify iterating from right to left.
   * @returns {Function} Returns the new base function.
   */
  function createBaseFor(fromRight) {
    return function(object, iteratee, keysFunc) {
      var index = -1,
          iterable = Object(object),
          props = keysFunc(object),
          length = props.length;

      while (length--) {
        var key = props[fromRight ? length : ++index];
        if (iteratee(iterable[key], key, iterable) === false) {
          break;
        }
      }
      return object;
    };
  }

  /**
   * Creates a function that wraps `func` to invoke it with the optional `this`
   * binding of `thisArg`.
   *
   * @private
   * @param {Function} func The function to wrap.
   * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
   * @param {*} [thisArg] The `this` binding of `func`.
   * @returns {Function} Returns the new wrapped function.
   */
  function createBind(func, bitmask, thisArg) {
    var isBind = bitmask & WRAP_BIND_FLAG,
        Ctor = createCtor(func);

    function wrapper() {
      var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
      return fn.apply(isBind ? thisArg : this, arguments);
    }
    return wrapper;
  }

  /**
   * Creates a function like `_.lowerFirst`.
   *
   * @private
   * @param {string} methodName The name of the `String` case method to use.
   * @returns {Function} Returns the new case function.
   */
  function createCaseFirst(methodName) {
    return function(string) {
      string = toString(string);

      var strSymbols = hasUnicode(string)
        ? stringToArray(string)
        : undefined;

      var chr = strSymbols
        ? strSymbols[0]
        : string.charAt(0);

      var trailing = strSymbols
        ? castSlice(strSymbols, 1).join('')
        : string.slice(1);

      return chr[methodName]() + trailing;
    };
  }

  /**
   * Creates a function like `_.camelCase`.
   *
   * @private
   * @param {Function} callback The function to combine each word.
   * @returns {Function} Returns the new compounder function.
   */
  function createCompounder(callback) {
    return function(string) {
      return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
    };
  }

  /**
   * Creates a function that produces an instance of `Ctor` regardless of
   * whether it was invoked as part of a `new` expression or by `call` or `apply`.
   *
   * @private
   * @param {Function} Ctor The constructor to wrap.
   * @returns {Function} Returns the new wrapped function.
   */
  function createCtor(Ctor) {
    return function() {
      // Use a `switch` statement to work with class constructors. See
      // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
      // for more details.
      var args = arguments;
      switch (args.length) {
        case 0: return new Ctor;
        case 1: return new Ctor(args[0]);
        case 2: return new Ctor(args[0], args[1]);
        case 3: return new Ctor(args[0], args[1], args[2]);
        case 4: return new Ctor(args[0], args[1], args[2], args[3]);
        case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
        case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
        case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
      }
      var thisBinding = baseCreate(Ctor.prototype),
          result = Ctor.apply(thisBinding, args);

      // Mimic the constructor's `return` behavior.
      // See https://es5.github.io/#x13.2.2 for more details.
      return isObject(result) ? result : thisBinding;
    };
  }

  /**
   * Creates a function that wraps `func` to enable currying.
   *
   * @private
   * @param {Function} func The function to wrap.
   * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
   * @param {number} arity The arity of `func`.
   * @returns {Function} Returns the new wrapped function.
   */
  function createCurry(func, bitmask, arity) {
    var Ctor = createCtor(func);

    function wrapper() {
      var length = arguments.length,
          args = Array(length),
          index = length,
          placeholder = getHolder(wrapper);

      while (index--) {
        args[index] = arguments[index];
      }
      var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
        ? []
        : replaceHolders(args, placeholder);

      length -= holders.length;
      if (length < arity) {
        return createRecurry(
          func, bitmask, createHybrid, wrapper.placeholder, undefined,
          args, holders, undefined, undefined, arity - length);
      }
      var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
      return apply(fn, this, args);
    }
    return wrapper;
  }

  /**
   * Creates a `_.find` or `_.findLast` function.
   *
   * @private
   * @param {Function} findIndexFunc The function to find the collection index.
   * @returns {Function} Returns the new find function.
   */
  function createFind(findIndexFunc) {
    return function(collection, predicate, fromIndex) {
      var iterable = Object(collection);
      if (!isArrayLike(collection)) {
        var iteratee = getIteratee(predicate, 3);
        collection = keys(collection);
        predicate = function(key) { return iteratee(iterable[key], key, iterable); };
      }
      var index = findIndexFunc(collection, predicate, fromIndex);
      return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
    };
  }

  /**
   * Creates a `_.flow` or `_.flowRight` function.
   *
   * @private
   * @param {boolean} [fromRight] Specify iterating from right to left.
   * @returns {Function} Returns the new flow function.
   */
  function createFlow(fromRight) {
    return flatRest(function(funcs) {
      var length = funcs.length,
          index = length,
          prereq = LodashWrapper.prototype.thru;

      if (fromRight) {
        funcs.reverse();
      }
      while (index--) {
        var func = funcs[index];
        if (typeof func != 'function') {
          throw new TypeError(FUNC_ERROR_TEXT);
        }
        if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
          var wrapper = new LodashWrapper([], true);
        }
      }
      index = wrapper ? index : length;
      while (++index < length) {
        func = funcs[index];

        var funcName = getFuncName(func),
            data = funcName == 'wrapper' ? getData(func) : undefined;

        if (data && isLaziable(data[0]) &&
              data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
              !data[4].length && data[9] == 1
            ) {
          wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
        } else {
          wrapper = (func.length == 1 && isLaziable(func))
            ? wrapper[funcName]()
            : wrapper.thru(func);
        }
      }
      return function() {
        var args = arguments,
            value = args[0];

        if (wrapper && args.length == 1 && isArray(value)) {
          return wrapper.plant(value).value();
        }
        var index = 0,
            result = length ? funcs[index].apply(this, args) : value;

        while (++index < length) {
          result = funcs[index].call(this, result);
        }
        return result;
      };
    });
  }

  /**
   * Creates a function that wraps `func` to invoke it with optional `this`
   * binding of `thisArg`, partial application, and currying.
   *
   * @private
   * @param {Function|string} func The function or method name to wrap.
   * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
   * @param {*} [thisArg] The `this` binding of `func`.
   * @param {Array} [partials] The arguments to prepend to those provided to
   *  the new function.
   * @param {Array} [holders] The `partials` placeholder indexes.
   * @param {Array} [partialsRight] The arguments to append to those provided
   *  to the new function.
   * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
   * @param {Array} [argPos] The argument positions of the new function.
   * @param {number} [ary] The arity cap of `func`.
   * @param {number} [arity] The arity of `func`.
   * @returns {Function} Returns the new wrapped function.
   */
  function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
    var isAry = bitmask & WRAP_ARY_FLAG,
        isBind = bitmask & WRAP_BIND_FLAG,
        isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
        isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
        isFlip = bitmask & WRAP_FLIP_FLAG,
        Ctor = isBindKey ? undefined : createCtor(func);

    function wrapper() {
      var length = arguments.length,
          args = Array(length),
          index = length;

      while (index--) {
        args[index] = arguments[index];
      }
      if (isCurried) {
        var placeholder = getHolder(wrapper),
            holdersCount = countHolders(args, placeholder);
      }
      if (partials) {
        args = composeArgs(args, partials, holders, isCurried);
      }
      if (partialsRight) {
        args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
      }
      length -= holdersCount;
      if (isCurried && length < arity) {
        var newHolders = replaceHolders(args, placeholder);
        return createRecurry(
          func, bitmask, createHybrid, wrapper.placeholder, thisArg,
          args, newHolders, argPos, ary, arity - length
        );
      }
      var thisBinding = isBind ? thisArg : this,
          fn = isBindKey ? thisBinding[func] : func;

      length = args.length;
      if (argPos) {
        args = reorder(args, argPos);
      } else if (isFlip && length > 1) {
        args.reverse();
      }
      if (isAry && ary < length) {
        args.length = ary;
      }
      if (this && this !== root && this instanceof wrapper) {
        fn = Ctor || createCtor(fn);
      }
      return fn.apply(thisBinding, args);
    }
    return wrapper;
  }

  /**
   * Creates a function like `_.invertBy`.
   *
   * @private
   * @param {Function} setter The function to set accumulator values.
   * @param {Function} toIteratee The function to resolve iteratees.
   * @returns {Function} Returns the new inverter function.
   */
  function createInverter(setter, toIteratee) {
    return function(object, iteratee) {
      return baseInverter(object, setter, toIteratee(iteratee), {});
    };
  }

  /**
   * Creates a function that performs a mathematical operation on two values.
   *
   * @private
   * @param {Function} operator The function to perform the operation.
   * @param {number} [defaultValue] The value used for `undefined` arguments.
   * @returns {Function} Returns the new mathematical operation function.
   */
  function createMathOperation(operator, defaultValue) {
    return function(value, other) {
      var result;
      if (value === undefined && other === undefined) {
        return defaultValue;
      }
      if (value !== undefined) {
        result = value;
      }
      if (other !== undefined) {
        if (result === undefined) {
          return other;
        }
        if (typeof value == 'string' || typeof other == 'string') {
          value = baseToString(value);
          other = baseToString(other);
        } else {
          value = baseToNumber(value);
          other = baseToNumber(other);
        }
        result = operator(value, other);
      }
      return result;
    };
  }

  /**
   * Creates a function like `_.over`.
   *
   * @private
   * @param {Function} arrayFunc The function to iterate over iteratees.
   * @returns {Function} Returns the new over function.
   */
  function createOver(arrayFunc) {
    return flatRest(function(iteratees) {
      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
      return baseRest(function(args) {
        var thisArg = this;
        return arrayFunc(iteratees, function(iteratee) {
          return apply(iteratee, thisArg, args);
        });
      });
    });
  }

  /**
   * Creates the padding for `string` based on `length`. The `chars` string
   * is truncated if the number of characters exceeds `length`.
   *
   * @private
   * @param {number} length The padding length.
   * @param {string} [chars=' '] The string used as padding.
   * @returns {string} Returns the padding for `string`.
   */
  function createPadding(length, chars) {
    chars = chars === undefined ? ' ' : baseToString(chars);

    var charsLength = chars.length;
    if (charsLength < 2) {
      return charsLength ? baseRepeat(chars, length) : chars;
    }
    var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
    return hasUnicode(chars)
      ? castSlice(stringToArray(result), 0, length).join('')
      : result.slice(0, length);
  }

  /**
   * Creates a function that wraps `func` to invoke it with the `this` binding
   * of `thisArg` and `partials` prepended to the arguments it receives.
   *
   * @private
   * @param {Function} func The function to wrap.
   * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
   * @param {*} thisArg The `this` binding of `func`.
   * @param {Array} partials The arguments to prepend to those provided to
   *  the new function.
   * @returns {Function} Returns the new wrapped function.
   */
  function createPartial(func, bitmask, thisArg, partials) {
    var isBind = bitmask & WRAP_BIND_FLAG,
        Ctor = createCtor(func);

    function wrapper() {
      var argsIndex = -1,
          argsLength = arguments.length,
          leftIndex = -1,
          leftLength = partials.length,
          args = Array(leftLength + argsLength),
          fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;

      while (++leftIndex < leftLength) {
        args[leftIndex] = partials[leftIndex];
      }
      while (argsLength--) {
        args[leftIndex++] = arguments[++argsIndex];
      }
      return apply(fn, isBind ? thisArg : this, args);
    }
    return wrapper;
  }

  /**
   * Creates a `_.range` or `_.rangeRight` function.
   *
   * @private
   * @param {boolean} [fromRight] Specify iterating from right to left.
   * @returns {Function} Returns the new range function.
   */
  function createRange(fromRight) {
    return function(start, end, step) {
      if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
        end = step = undefined;
      }
      // Ensure the sign of `-0` is preserved.
      start = toFinite(start);
      if (end === undefined) {
        end = start;
        start = 0;
      } else {
        end = toFinite(end);
      }
      step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
      return baseRange(start, end, step, fromRight);
    };
  }

  /**
   * Creates a function that performs a relational operation on two values.
   *
   * @private
   * @param {Function} operator The function to perform the operation.
   * @returns {Function} Returns the new relational operation function.
   */
  function createRelationalOperation(operator) {
    return function(value, other) {
      if (!(typeof value == 'string' && typeof other == 'string')) {
        value = toNumber(value);
        other = toNumber(other);
      }
      return operator(value, other);
    };
  }

  /**
   * Creates a function that wraps `func` to continue currying.
   *
   * @private
   * @param {Function} func The function to wrap.
   * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
   * @param {Function} wrapFunc The function to create the `func` wrapper.
   * @param {*} placeholder The placeholder value.
   * @param {*} [thisArg] The `this` binding of `func`.
   * @param {Array} [partials] The arguments to prepend to those provided to
   *  the new function.
   * @param {Array} [holders] The `partials` placeholder indexes.
   * @param {Array} [argPos] The argument positions of the new function.
   * @param {number} [ary] The arity cap of `func`.
   * @param {number} [arity] The arity of `func`.
   * @returns {Function} Returns the new wrapped function.
   */
  function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
    var isCurry = bitmask & WRAP_CURRY_FLAG,
        newHolders = isCurry ? holders : undefined,
        newHoldersRight = isCurry ? undefined : holders,
        newPartials = isCurry ? partials : undefined,
        newPartialsRight = isCurry ? undefined : partials;

    bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
    bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);

    if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
      bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
    }
    var newData = [
      func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
      newHoldersRight, argPos, ary, arity
    ];

    var result = wrapFunc.apply(undefined, newData);
    if (isLaziable(func)) {
      setData(result, newData);
    }
    result.placeholder = placeholder;
    return setWrapToString(result, func, bitmask);
  }

  /**
   * Creates a function like `_.round`.
   *
   * @private
   * @param {string} methodName The name of the `Math` method to use when rounding.
   * @returns {Function} Returns the new round function.
   */
  function createRound(methodName) {
    var func = Math[methodName];
    return function(number, precision) {
      number = toNumber(number);
      precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
      if (precision) {
        // Shift with exponential notation to avoid floating-point issues.
        // See [MDN](https://mdn.io/round#Examples) for more details.
        var pair = (toString(number) + 'e').split('e'),
            value = func(pair[0] + 'e' + (+pair[1] + precision));

        pair = (toString(value) + 'e').split('e');
        return +(pair[0] + 'e' + (+pair[1] - precision));
      }
      return func(number);
    };
  }

  /**
   * Creates a set object of `values`.
   *
   * @private
   * @param {Array} values The values to add to the set.
   * @returns {Object} Returns the new set.
   */
  var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
    return new Set(values);
  };

  /**
   * Creates a `_.toPairs` or `_.toPairsIn` function.
   *
   * @private
   * @param {Function} keysFunc The function to get the keys of a given object.
   * @returns {Function} Returns the new pairs function.
   */
  function createToPairs(keysFunc) {
    return function(object) {
      var tag = getTag(object);
      if (tag == mapTag) {
        return mapToArray(object);
      }
      if (tag == setTag) {
        return setToPairs(object);
      }
      return baseToPairs(object, keysFunc(object));
    };
  }

  /**
   * Creates a function that either curries or invokes `func` with optional
   * `this` binding and partially applied arguments.
   *
   * @private
   * @param {Function|string} func The function or method name to wrap.
   * @param {number} bitmask The bitmask flags.
   *    1 - `_.bind`
   *    2 - `_.bindKey`
   *    4 - `_.curry` or `_.curryRight` of a bound function
   *    8 - `_.curry`
   *   16 - `_.curryRight`
   *   32 - `_.partial`
   *   64 - `_.partialRight`
   *  128 - `_.rearg`
   *  256 - `_.ary`
   *  512 - `_.flip`
   * @param {*} [thisArg] The `this` binding of `func`.
   * @param {Array} [partials] The arguments to be partially applied.
   * @param {Array} [holders] The `partials` placeholder indexes.
   * @param {Array} [argPos] The argument positions of the new function.
   * @param {number} [ary] The arity cap of `func`.
   * @param {number} [arity] The arity of `func`.
   * @returns {Function} Returns the new wrapped function.
   */
  function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
    var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
    if (!isBindKey && typeof func != 'function') {
      throw new TypeError(FUNC_ERROR_TEXT);
    }
    var length = partials ? partials.length : 0;
    if (!length) {
      bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
      partials = holders = undefined;
    }
    ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
    arity = arity === undefined ? arity : toInteger(arity);
    length -= holders ? holders.length : 0;

    if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
      var partialsRight = partials,
          holdersRight = holders;

      partials = holders = undefined;
    }
    var data = isBindKey ? undefined : getData(func);

    var newData = [
      func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
      argPos, ary, arity
    ];

    if (data) {
      mergeData(newData, data);
    }
    func = newData[0];
    bitmask = newData[1];
    thisArg = newData[2];
    partials = newData[3];
    holders = newData[4];
    arity = newData[9] = newData[9] === undefined
      ? (isBindKey ? 0 : func.length)
      : nativeMax(newData[9] - length, 0);

    if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
      bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
    }
    if (!bitmask || bitmask == WRAP_BIND_FLAG) {
      var result = createBind(func, bitmask, thisArg);
    } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
      result = createCurry(func, bitmask, arity);
    } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
      result = createPartial(func, bitmask, thisArg, partials);
    } else {
      result = createHybrid.apply(undefined, newData);
    }
    var setter = data ? baseSetData : setData;
    return setWrapToString(setter(result, newData), func, bitmask);
  }

  /**
   * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
   * of source objects to the destination object for all destination properties
   * that resolve to `undefined`.
   *
   * @private
   * @param {*} objValue The destination value.
   * @param {*} srcValue The source value.
   * @param {string} key The key of the property to assign.
   * @param {Object} object The parent object of `objValue`.
   * @returns {*} Returns the value to assign.
   */
  function customDefaultsAssignIn(objValue, srcValue, key, object) {
    if (objValue === undefined ||
        (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
      return srcValue;
    }
    return objValue;
  }

  /**
   * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
   * objects into destination objects that are passed thru.
   *
   * @private
   * @param {*} objValue The destination value.
   * @param {*} srcValue The source value.
   * @param {string} key The key of the property to merge.
   * @param {Object} object The parent object of `objValue`.
   * @param {Object} source The parent object of `srcValue`.
   * @param {Object} [stack] Tracks traversed source values and their merged
   *  counterparts.
   * @returns {*} Returns the value to assign.
   */
  function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
    if (isObject(objValue) && isObject(srcValue)) {
      // Recursively merge objects and arrays (susceptible to call stack limits).
      stack.set(srcValue, objValue);
      baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
      stack['delete'](srcValue);
    }
    return objValue;
  }

  /**
   * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
   * objects.
   *
   * @private
   * @param {*} value The value to inspect.
   * @param {string} key The key of the property to inspect.
   * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
   */
  function customOmitClone(value) {
    return isPlainObject(value) ? undefined : value;
  }

  /**
   * A specialized version of `baseIsEqualDeep` for arrays with support for
   * partial deep comparisons.
   *
   * @private
   * @param {Array} array The array to compare.
   * @param {Array} other The other array to compare.
   * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
   * @param {Function} customizer The function to customize comparisons.
   * @param {Function} equalFunc The function to determine equivalents of values.
   * @param {Object} stack Tracks traversed `array` and `other` objects.
   * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
   */
  function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
    var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
        arrLength = array.length,
        othLength = other.length;

    if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
      return false;
    }
    // Assume cyclic values are equal.
    var stacked = stack.get(array);
    if (stacked && stack.get(other)) {
      return stacked == other;
    }
    var index = -1,
        result = true,
        seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;

    stack.set(array, other);
    stack.set(other, array);

    // Ignore non-index properties.
    while (++index < arrLength) {
      var arrValue = array[index],
          othValue = other[index];

      if (customizer) {
        var compared = isPartial
          ? customizer(othValue, arrValue, index, other, array, stack)
          : customizer(arrValue, othValue, index, array, other, stack);
      }
      if (compared !== undefined) {
        if (compared) {
          continue;
        }
        result = false;
        break;
      }
      // Recursively compare arrays (susceptible to call stack limits).
      if (seen) {
        if (!arraySome(other, function(othValue, othIndex) {
              if (!cacheHas(seen, othIndex) &&
                  (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
                return seen.push(othIndex);
              }
            })) {
          result = false;
          break;
        }
      } else if (!(
            arrValue === othValue ||
              equalFunc(arrValue, othValue, bitmask, customizer, stack)
          )) {
        result = false;
        break;
      }
    }
    stack['delete'](array);
    stack['delete'](other);
    return result;
  }

  /**
   * A specialized version of `baseIsEqualDeep` for comparing objects of
   * the same `toStringTag`.
   *
   * **Note:** This function only supports comparing values with tags of
   * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
   *
   * @private
   * @param {Object} object The object to compare.
   * @param {Object} other The other object to compare.
   * @param {string} tag The `toStringTag` of the objects to compare.
   * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
   * @param {Function} customizer The function to customize comparisons.
   * @param {Function} equalFunc The function to determine equivalents of values.
   * @param {Object} stack Tracks traversed `object` and `other` objects.
   * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
   */
  function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
    switch (tag) {
      case dataViewTag:
        if ((object.byteLength != other.byteLength) ||
            (object.byteOffset != other.byteOffset)) {
          return false;
        }
        object = object.buffer;
        other = other.buffer;

      case arrayBufferTag:
        if ((object.byteLength != other.byteLength) ||
            !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
          return false;
        }
        return true;

      case boolTag:
      case dateTag:
      case numberTag:
        // Coerce booleans to `1` or `0` and dates to milliseconds.
        // Invalid dates are coerced to `NaN`.
        return eq(+object, +other);

      case errorTag:
        return object.name == other.name && object.message == other.message;

      case regexpTag:
      case stringTag:
        // Coerce regexes to strings and treat strings, primitives and objects,
        // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
        // for more details.
        return object == (other + '');

      case mapTag:
        var convert = mapToArray;

      case setTag:
        var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
        convert || (convert = setToArray);

        if (object.size != other.size && !isPartial) {
          return false;
        }
        // Assume cyclic values are equal.
        var stacked = stack.get(object);
        if (stacked) {
          return stacked == other;
        }
        bitmask |= COMPARE_UNORDERED_FLAG;

        // Recursively compare objects (susceptible to call stack limits).
        stack.set(object, other);
        var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
        stack['delete'](object);
        return result;

      case symbolTag:
        if (symbolValueOf) {
          return symbolValueOf.call(object) == symbolValueOf.call(other);
        }
    }
    return false;
  }

  /**
   * A specialized version of `baseIsEqualDeep` for objects with support for
   * partial deep comparisons.
   *
   * @private
   * @param {Object} object The object to compare.
   * @param {Object} other The other object to compare.
   * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
   * @param {Function} customizer The function to customize comparisons.
   * @param {Function} equalFunc The function to determine equivalents of values.
   * @param {Object} stack Tracks traversed `object` and `other` objects.
   * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
   */
  function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
    var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
        objProps = getAllKeys(object),
        objLength = objProps.length,
        othProps = getAllKeys(other),
        othLength = othProps.length;

    if (objLength != othLength && !isPartial) {
      return false;
    }
    var index = objLength;
    while (index--) {
      var key = objProps[index];
      if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
        return false;
      }
    }
    // Assume cyclic values are equal.
    var stacked = stack.get(object);
    if (stacked && stack.get(other)) {
      return stacked == other;
    }
    var result = true;
    stack.set(object, other);
    stack.set(other, object);

    var skipCtor = isPartial;
    while (++index < objLength) {
      key = objProps[index];
      var objValue = object[key],
          othValue = other[key];

      if (customizer) {
        var compared = isPartial
          ? customizer(othValue, objValue, key, other, object, stack)
          : customizer(objValue, othValue, key, object, other, stack);
      }
      // Recursively compare objects (susceptible to call stack limits).
      if (!(compared === undefined
            ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
            : compared
          )) {
        result = false;
        break;
      }
      skipCtor || (skipCtor = key == 'constructor');
    }
    if (result && !skipCtor) {
      var objCtor = object.constructor,
          othCtor = other.constructor;

      // Non `Object` object instances with different constructors are not equal.
      if (objCtor != othCtor &&
          ('constructor' in object && 'constructor' in other) &&
          !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
            typeof othCtor == 'function' && othCtor instanceof othCtor)) {
        result = false;
      }
    }
    stack['delete'](object);
    stack['delete'](other);
    return result;
  }

  /**
   * A specialized version of `baseRest` which flattens the rest array.
   *
   * @private
   * @param {Function} func The function to apply a rest parameter to.
   * @returns {Function} Returns the new function.
   */
  function flatRest(func) {
    return setToString(overRest(func, undefined, flatten), func + '');
  }

  /**
   * Creates an array of own enumerable property names and symbols of `object`.
   *
   * @private
   * @param {Object} object The object to query.
   * @returns {Array} Returns the array of property names and symbols.
   */
  function getAllKeys(object) {
    return baseGetAllKeys(object, keys, getSymbols);
  }

  /**
   * Creates an array of own and inherited enumerable property names and
   * symbols of `object`.
   *
   * @private
   * @param {Object} object The object to query.
   * @returns {Array} Returns the array of property names and symbols.
   */
  function getAllKeysIn(object) {
    return baseGetAllKeys(object, keysIn, getSymbolsIn);
  }

  /**
   * Gets metadata for `func`.
   *
   * @private
   * @param {Function} func The function to query.
   * @returns {*} Returns the metadata for `func`.
   */
  var getData = !metaMap ? noop : function(func) {
    return metaMap.get(func);
  };

  /**
   * Gets the name of `func`.
   *
   * @private
   * @param {Function} func The function to query.
   * @returns {string} Returns the function name.
   */
  function getFuncName(func) {
    var result = (func.name + ''),
        array = realNames[result],
        length = hasOwnProperty.call(realNames, result) ? array.length : 0;

    while (length--) {
      var data = array[length],
          otherFunc = data.func;
      if (otherFunc == null || otherFunc == func) {
        return data.name;
      }
    }
    return result;
  }

  /**
   * Gets the argument placeholder value for `func`.
   *
   * @private
   * @param {Function} func The function to inspect.
   * @returns {*} Returns the placeholder value.
   */
  function getHolder(func) {
    var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
    return object.placeholder;
  }

  /**
   * Gets the appropriate "iteratee" function. If `_.iteratee` is customized,
   * this function returns the custom method, otherwise it returns `baseIteratee`.
   * If arguments are provided, the chosen function is invoked with them and
   * its result is returned.
   *
   * @private
   * @param {*} [value] The value to convert to an iteratee.
   * @param {number} [arity] The arity of the created iteratee.
   * @returns {Function} Returns the chosen function or its result.
   */
  function getIteratee() {
    var result = lodash.iteratee || iteratee;
    result = result === iteratee ? baseIteratee : result;
    return arguments.length ? result(arguments[0], arguments[1]) : result;
  }

  /**
   * Gets the data for `map`.
   *
   * @private
   * @param {Object} map The map to query.
   * @param {string} key The reference key.
   * @returns {*} Returns the map data.
   */
  function getMapData(map, key) {
    var data = map.__data__;
    return isKeyable(key)
      ? data[typeof key == 'string' ? 'string' : 'hash']
      : data.map;
  }

  /**
   * Gets the property names, values, and compare flags of `object`.
   *
   * @private
   * @param {Object} object The object to query.
   * @returns {Array} Returns the match data of `object`.
   */
  function getMatchData(object) {
    var result = keys(object),
        length = result.length;

    while (length--) {
      var key = result[length],
          value = object[key];

      result[length] = [key, value, isStrictComparable(value)];
    }
    return result;
  }

  /**
   * Gets the native function at `key` of `object`.
   *
   * @private
   * @param {Object} object The object to query.
   * @param {string} key The key of the method to get.
   * @returns {*} Returns the function if it's native, else `undefined`.
   */
  function getNative(object, key) {
    var value = getValue(object, key);
    return baseIsNative(value) ? value : undefined;
  }

  /**
   * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
   *
   * @private
   * @param {*} value The value to query.
   * @returns {string} Returns the raw `toStringTag`.
   */
  function getRawTag(value) {
    var isOwn = hasOwnProperty.call(value, symToStringTag),
        tag = value[symToStringTag];

    try {
      value[symToStringTag] = undefined;
      var unmasked = true;
    } catch (e) {}

    var result = nativeObjectToString.call(value);
    if (unmasked) {
      if (isOwn) {
        value[symToStringTag] = tag;
      } else {
        delete value[symToStringTag];
      }
    }
    return result;
  }

  /**
   * Creates an array of the own enumerable symbols of `object`.
   *
   * @private
   * @param {Object} object The object to query.
   * @returns {Array} Returns the array of symbols.
   */
  var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
    if (object == null) {
      return [];
    }
    object = Object(object);
    return arrayFilter(nativeGetSymbols(object), function(symbol) {
      return propertyIsEnumerable.call(object, symbol);
    });
  };

  /**
   * Creates an array of the own and inherited enumerable symbols of `object`.
   *
   * @private
   * @param {Object} object The object to query.
   * @returns {Array} Returns the array of symbols.
   */
  var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
    var result = [];
    while (object) {
      arrayPush(result, getSymbols(object));
      object = getPrototype(object);
    }
    return result;
  };

  /**
   * Gets the `toStringTag` of `value`.
   *
   * @private
   * @param {*} value The value to query.
   * @returns {string} Returns the `toStringTag`.
   */
  var getTag = baseGetTag;

  // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
  if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
      (Map && getTag(new Map) != mapTag) ||
      (Promise && getTag(Promise.resolve()) != promiseTag) ||
      (Set && getTag(new Set) != setTag) ||
      (WeakMap && getTag(new WeakMap) != weakMapTag)) {
    getTag = function(value) {
      var result = baseGetTag(value),
          Ctor = result == objectTag ? value.constructor : undefined,
          ctorString = Ctor ? toSource(Ctor) : '';

      if (ctorString) {
        switch (ctorString) {
          case dataViewCtorString: return dataViewTag;
          case mapCtorString: return mapTag;
          case promiseCtorString: return promiseTag;
          case setCtorString: return setTag;
          case weakMapCtorString: return weakMapTag;
        }
      }
      return result;
    };
  }

  /**
   * Gets the view, applying any `transforms` to the `start` and `end` positions.
   *
   * @private
   * @param {number} start The start of the view.
   * @param {number} end The end of the view.
   * @param {Array} transforms The transformations to apply to the view.
   * @returns {Object} Returns an object containing the `start` and `end`
   *  positions of the view.
   */
  function getView(start, end, transforms) {
    var index = -1,
        length = transforms.length;

    while (++index < length) {
      var data = transforms[index],
          size = data.size;

      switch (data.type) {
        case 'drop':      start += size; break;
        case 'dropRight': end -= size; break;
        case 'take':      end = nativeMin(end, start + size); break;
        case 'takeRight': start = nativeMax(start, end - size); break;
      }
    }
    return { 'start': start, 'end': end };
  }

  /**
   * Extracts wrapper details from the `source` body comment.
   *
   * @private
   * @param {string} source The source to inspect.
   * @returns {Array} Returns the wrapper details.
   */
  function getWrapDetails(source) {
    var match = source.match(reWrapDetails);
    return match ? match[1].split(reSplitDetails) : [];
  }

  /**
   * Checks if `path` exists on `object`.
   *
   * @private
   * @param {Object} object The object to query.
   * @param {Array|string} path The path to check.
   * @param {Function} hasFunc The function to check properties.
   * @returns {boolean} Returns `true` if `path` exists, else `false`.
   */
  function hasPath(object, path, hasFunc) {
    path = castPath(path, object);

    var index = -1,
        length = path.length,
        result = false;

    while (++index < length) {
      var key = toKey(path[index]);
      if (!(result = object != null && hasFunc(object, key))) {
        break;
      }
      object = object[key];
    }
    if (result || ++index != length) {
      return result;
    }
    length = object == null ? 0 : object.length;
    return !!length && isLength(length) && isIndex(key, length) &&
      (isArray(object) || isArguments(object));
  }

  /**
   * Initializes an array clone.
   *
   * @private
   * @param {Array} array The array to clone.
   * @returns {Array} Returns the initialized clone.
   */
  function initCloneArray(array) {
    var length = array.length,
        result = new array.constructor(length);

    // Add properties assigned by `RegExp#exec`.
    if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
      result.index = array.index;
      result.input = array.input;
    }
    return result;
  }

  /**
   * Initializes an object clone.
   *
   * @private
   * @param {Object} object The object to clone.
   * @returns {Object} Returns the initialized clone.
   */
  function initCloneObject(object) {
    return (typeof object.constructor == 'function' && !isPrototype(object))
      ? baseCreate(getPrototype(object))
      : {};
  }

  /**
   * Initializes an object clone based on its `toStringTag`.
   *
   * **Note:** This function only supports cloning values with tags of
   * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
   *
   * @private
   * @param {Object} object The object to clone.
   * @param {string} tag The `toStringTag` of the object to clone.
   * @param {boolean} [isDeep] Specify a deep clone.
   * @returns {Object} Returns the initialized clone.
   */
  function initCloneByTag(object, tag, isDeep) {
    var Ctor = object.constructor;
    switch (tag) {
      case arrayBufferTag:
        return cloneArrayBuffer(object);

      case boolTag:
      case dateTag:
        return new Ctor(+object);

      case dataViewTag:
        return cloneDataView(object, isDeep);

      case float32Tag: case float64Tag:
      case int8Tag: case int16Tag: case int32Tag:
      case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
        return cloneTypedArray(object, isDeep);

      case mapTag:
        return new Ctor;

      case numberTag:
      case stringTag:
        return new Ctor(object);

      case regexpTag:
        return cloneRegExp(object);

      case setTag:
        return new Ctor;

      case symbolTag:
        return cloneSymbol(object);
    }
  }

  /**
   * Inserts wrapper `details` in a comment at the top of the `source` body.
   *
   * @private
   * @param {string} source The source to modify.
   * @returns {Array} details The details to insert.
   * @returns {string} Returns the modified source.
   */
  function insertWrapDetails(source, details) {
    var length = details.length;
    if (!length) {
      return source;
    }
    var lastIndex = length - 1;
    details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
    details = details.join(length > 2 ? ', ' : ' ');
    return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
  }

  /**
   * Checks if `value` is a flattenable `arguments` object or array.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
   */
  function isFlattenable(value) {
    return isArray(value) || isArguments(value) ||
      !!(spreadableSymbol && value && value[spreadableSymbol]);
  }

  /**
   * Checks if `value` is a valid array-like index.
   *
   * @private
   * @param {*} value The value to check.
   * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
   * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
   */
  function isIndex(value, length) {
    var type = typeof value;
    length = length == null ? MAX_SAFE_INTEGER : length;

    return !!length &&
      (type == 'number' ||
        (type != 'symbol' && reIsUint.test(value))) &&
          (value > -1 && value % 1 == 0 && value < length);
  }

  /**
   * Checks if the given arguments are from an iteratee call.
   *
   * @private
   * @param {*} value The potential iteratee value argument.
   * @param {*} index The potential iteratee index or key argument.
   * @param {*} object The potential iteratee object argument.
   * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
   *  else `false`.
   */
  function isIterateeCall(value, index, object) {
    if (!isObject(object)) {
      return false;
    }
    var type = typeof index;
    if (type == 'number'
          ? (isArrayLike(object) && isIndex(index, object.length))
          : (type == 'string' && index in object)
        ) {
      return eq(object[index], value);
    }
    return false;
  }

  /**
   * Checks if `value` is a property name and not a property path.
   *
   * @private
   * @param {*} value The value to check.
   * @param {Object} [object] The object to query keys on.
   * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
   */
  function isKey(value, object) {
    if (isArray(value)) {
      return false;
    }
    var type = typeof value;
    if (type == 'number' || type == 'symbol' || type == 'boolean' ||
        value == null || isSymbol(value)) {
      return true;
    }
    return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
      (object != null && value in Object(object));
  }

  /**
   * Checks if `value` is suitable for use as unique object key.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
   */
  function isKeyable(value) {
    var type = typeof value;
    return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
      ? (value !== '__proto__')
      : (value === null);
  }

  /**
   * Checks if `func` has a lazy counterpart.
   *
   * @private
   * @param {Function} func The function to check.
   * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
   *  else `false`.
   */
  function isLaziable(func) {
    var funcName = getFuncName(func),
        other = lodash[funcName];

    if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
      return false;
    }
    if (func === other) {
      return true;
    }
    var data = getData(other);
    return !!data && func === data[0];
  }

  /**
   * Checks if `func` has its source masked.
   *
   * @private
   * @param {Function} func The function to check.
   * @returns {boolean} Returns `true` if `func` is masked, else `false`.
   */
  function isMasked(func) {
    return !!maskSrcKey && (maskSrcKey in func);
  }

  /**
   * Checks if `func` is capable of being masked.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
   */
  var isMaskable = coreJsData ? isFunction : stubFalse;

  /**
   * Checks if `value` is likely a prototype object.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
   */
  function isPrototype(value) {
    var Ctor = value && value.constructor,
        proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;

    return value === proto;
  }

  /**
   * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
   *
   * @private
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` if suitable for strict
   *  equality comparisons, else `false`.
   */
  function isStrictComparable(value) {
    return value === value && !isObject(value);
  }

  /**
   * A specialized version of `matchesProperty` for source values suitable
   * for strict equality comparisons, i.e. `===`.
   *
   * @private
   * @param {string} key The key of the property to get.
   * @param {*} srcValue The value to match.
   * @returns {Function} Returns the new spec function.
   */
  function matchesStrictComparable(key, srcValue) {
    return function(object) {
      if (object == null) {
        return false;
      }
      return object[key] === srcValue &&
        (srcValue !== undefined || (key in Object(object)));
    };
  }

  /**
   * A specialized version of `_.memoize` which clears the memoized function's
   * cache when it exceeds `MAX_MEMOIZE_SIZE`.
   *
   * @private
   * @param {Function} func The function to have its output memoized.
   * @returns {Function} Returns the new memoized function.
   */
  function memoizeCapped(func) {
    var result = memoize(func, function(key) {
      if (cache.size === MAX_MEMOIZE_SIZE) {
        cache.clear();
      }
      return key;
    });

    var cache = result.cache;
    return result;
  }

  /**
   * Merges the function metadata of `source` into `data`.
   *
   * Merging metadata reduces the number of wrappers used to invoke a function.
   * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
   * may be applied regardless of execution order. Methods like `_.ary` and
   * `_.rearg` modify function arguments, making the order in which they are
   * executed important, preventing the merging of metadata. However, we make
   * an exception for a safe combined case where curried functions have `_.ary`
   * and or `_.rearg` applied.
   *
   * @private
   * @param {Array} data The destination metadata.
   * @param {Array} source The source metadata.
   * @returns {Array} Returns `data`.
   */
  function mergeData(data, source) {
    var bitmask = data[1],
        srcBitmask = source[1],
        newBitmask = bitmask | srcBitmask,
        isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);

    var isCombo =
      ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
      ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
      ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));

    // Exit early if metadata can't be merged.
    if (!(isCommon || isCombo)) {
      return data;
    }
    // Use source `thisArg` if available.
    if (srcBitmask & WRAP_BIND_FLAG) {
      data[2] = source[2];
      // Set when currying a bound function.
      newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
    }
    // Compose partial arguments.
    var value = source[3];
    if (value) {
      var partials = data[3];
      data[3] = partials ? composeArgs(partials, value, source[4]) : value;
      data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
    }
    // Compose partial right arguments.
    value = source[5];
    if (value) {
      partials = data[5];
      data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
      data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
    }
    // Use source `argPos` if available.
    value = source[7];
    if (value) {
      data[7] = value;
    }
    // Use source `ary` if it's smaller.
    if (srcBitmask & WRAP_ARY_FLAG) {
      data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
    }
    // Use source `arity` if one is not provided.
    if (data[9] == null) {
      data[9] = source[9];
    }
    // Use source `func` and merge bitmasks.
    data[0] = source[0];
    data[1] = newBitmask;

    return data;
  }

  /**
   * This function is like
   * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
   * except that it includes inherited enumerable properties.
   *
   * @private
   * @param {Object} object The object to query.
   * @returns {Array} Returns the array of property names.
   */
  function nativeKeysIn(object) {
    var result = [];
    if (object != null) {
      for (var key in Object(object)) {
        result.push(key);
      }
    }
    return result;
  }

  /**
   * Converts `value` to a string using `Object.prototype.toString`.
   *
   * @private
   * @param {*} value The value to convert.
   * @returns {string} Returns the converted string.
   */
  function objectToString(value) {
    return nativeObjectToString.call(value);
  }

  /**
   * A specialized version of `baseRest` which transforms the rest array.
   *
   * @private
   * @param {Function} func The function to apply a rest parameter to.
   * @param {number} [start=func.length-1] The start position of the rest parameter.
   * @param {Function} transform The rest array transform.
   * @returns {Function} Returns the new function.
   */
  function overRest(func, start, transform) {
    start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
    return function() {
      var args = arguments,
          index = -1,
          length = nativeMax(args.length - start, 0),
          array = Array(length);

      while (++index < length) {
        array[index] = args[start + index];
      }
      index = -1;
      var otherArgs = Array(start + 1);
      while (++index < start) {
        otherArgs[index] = args[index];
      }
      otherArgs[start] = transform(array);
      return apply(func, this, otherArgs);
    };
  }

  /**
   * Gets the parent value at `path` of `object`.
   *
   * @private
   * @param {Object} object The object to query.
   * @param {Array} path The path to get the parent value of.
   * @returns {*} Returns the parent value.
   */
  function parent(object, path) {
    return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
  }

  /**
   * Reorder `array` according to the specified indexes where the element at
   * the first index is assigned as the first element, the element at
   * the second index is assigned as the second element, and so on.
   *
   * @private
   * @param {Array} array The array to reorder.
   * @param {Array} indexes The arranged array indexes.
   * @returns {Array} Returns `array`.
   */
  function reorder(array, indexes) {
    var arrLength = array.length,
        length = nativeMin(indexes.length, arrLength),
        oldArray = copyArray(array);

    while (length--) {
      var index = indexes[length];
      array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
    }
    return array;
  }

  /**
   * Sets metadata for `func`.
   *
   * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
   * period of time, it will trip its breaker and transition to an identity
   * function to avoid garbage collection pauses in V8. See
   * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
   * for more details.
   *
   * @private
   * @param {Function} func The function to associate metadata with.
   * @param {*} data The metadata.
   * @returns {Function} Returns `func`.
   */
  var setData = shortOut(baseSetData);

  /**
   * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).
   *
   * @private
   * @param {Function} func The function to delay.
   * @param {number} wait The number of milliseconds to delay invocation.
   * @returns {number|Object} Returns the timer id or timeout object.
   */
  var setTimeout = ctxSetTimeout || function(func, wait) {
    return root.setTimeout(func, wait);
  };

  /**
   * Sets the `toString` method of `func` to return `string`.
   *
   * @private
   * @param {Function} func The function to modify.
   * @param {Function} string The `toString` result.
   * @returns {Function} Returns `func`.
   */
  var setToString = shortOut(baseSetToString);

  /**
   * Sets the `toString` method of `wrapper` to mimic the source of `reference`
   * with wrapper details in a comment at the top of the source body.
   *
   * @private
   * @param {Function} wrapper The function to modify.
   * @param {Function} reference The reference function.
   * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
   * @returns {Function} Returns `wrapper`.
   */
  function setWrapToString(wrapper, reference, bitmask) {
    var source = (reference + '');
    return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
  }

  /**
   * Creates a function that'll short out and invoke `identity` instead
   * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
   * milliseconds.
   *
   * @private
   * @param {Function} func The function to restrict.
   * @returns {Function} Returns the new shortable function.
   */
  function shortOut(func) {
    var count = 0,
        lastCalled = 0;

    return function() {
      var stamp = nativeNow(),
          remaining = HOT_SPAN - (stamp - lastCalled);

      lastCalled = stamp;
      if (remaining > 0) {
        if (++count >= HOT_COUNT) {
          return arguments[0];
        }
      } else {
        count = 0;
      }
      return func.apply(undefined, arguments);
    };
  }

  /**
   * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
   *
   * @private
   * @param {Array} array The array to shuffle.
   * @param {number} [size=array.length] The size of `array`.
   * @returns {Array} Returns `array`.
   */
  function shuffleSelf(array, size) {
    var index = -1,
        length = array.length,
        lastIndex = length - 1;

    size = size === undefined ? length : size;
    while (++index < size) {
      var rand = baseRandom(index, lastIndex),
          value = array[rand];

      array[rand] = array[index];
      array[index] = value;
    }
    array.length = size;
    return array;
  }

  /**
   * Converts `string` to a property path array.
   *
   * @private
   * @param {string} string The string to convert.
   * @returns {Array} Returns the property path array.
   */
  var stringToPath = memoizeCapped(function(string) {
    var result = [];
    if (string.charCodeAt(0) === 46 /* . */) {
      result.push('');
    }
    string.replace(rePropName, function(match, number, quote, subString) {
      result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
    });
    return result;
  });

  /**
   * Converts `value` to a string key if it's not a string or symbol.
   *
   * @private
   * @param {*} value The value to inspect.
   * @returns {string|symbol} Returns the key.
   */
  function toKey(value) {
    if (typeof value == 'string' || isSymbol(value)) {
      return value;
    }
    var result = (value + '');
    return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
  }

  /**
   * Converts `func` to its source code.
   *
   * @private
   * @param {Function} func The function to convert.
   * @returns {string} Returns the source code.
   */
  function toSource(func) {
    if (func != null) {
      try {
        return funcToString.call(func);
      } catch (e) {}
      try {
        return (func + '');
      } catch (e) {}
    }
    return '';
  }

  /**
   * Updates wrapper `details` based on `bitmask` flags.
   *
   * @private
   * @returns {Array} details The details to modify.
   * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
   * @returns {Array} Returns `details`.
   */
  function updateWrapDetails(details, bitmask) {
    arrayEach(wrapFlags, function(pair) {
      var value = '_.' + pair[0];
      if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
        details.push(value);
      }
    });
    return details.sort();
  }

  /**
   * Creates a clone of `wrapper`.
   *
   * @private
   * @param {Object} wrapper The wrapper to clone.
   * @returns {Object} Returns the cloned wrapper.
   */
  function wrapperClone(wrapper) {
    if (wrapper instanceof LazyWrapper) {
      return wrapper.clone();
    }
    var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
    result.__actions__ = copyArray(wrapper.__actions__);
    result.__index__  = wrapper.__index__;
    result.__values__ = wrapper.__values__;
    return result;
  }

  /*------------------------------------------------------------------------*/

  /**
   * Creates an array of elements split into groups the length of `size`.
   * If `array` can't be split evenly, the final chunk will be the remaining
   * elements.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Array
   * @param {Array} array The array to process.
   * @param {number} [size=1] The length of each chunk
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {Array} Returns the new array of chunks.
   * @example
   *
   * _.chunk(['a', 'b', 'c', 'd'], 2);
   * // => [['a', 'b'], ['c', 'd']]
   *
   * _.chunk(['a', 'b', 'c', 'd'], 3);
   * // => [['a', 'b', 'c'], ['d']]
   */
  function chunk(array, size, guard) {
    if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
      size = 1;
    } else {
      size = nativeMax(toInteger(size), 0);
    }
    var length = array == null ? 0 : array.length;
    if (!length || size < 1) {
      return [];
    }
    var index = 0,
        resIndex = 0,
        result = Array(nativeCeil(length / size));

    while (index < length) {
      result[resIndex++] = baseSlice(array, index, (index += size));
    }
    return result;
  }

  /**
   * Creates an array with all falsey values removed. The values `false`, `null`,
   * `0`, `""`, `undefined`, and `NaN` are falsey.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {Array} array The array to compact.
   * @returns {Array} Returns the new array of filtered values.
   * @example
   *
   * _.compact([0, 1, false, 2, '', 3]);
   * // => [1, 2, 3]
   */
  function compact(array) {
    var index = -1,
        length = array == null ? 0 : array.length,
        resIndex = 0,
        result = [];

    while (++index < length) {
      var value = array[index];
      if (value) {
        result[resIndex++] = value;
      }
    }
    return result;
  }

  /**
   * Creates a new array concatenating `array` with any additional arrays
   * and/or values.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to concatenate.
   * @param {...*} [values] The values to concatenate.
   * @returns {Array} Returns the new concatenated array.
   * @example
   *
   * var array = [1];
   * var other = _.concat(array, 2, [3], [[4]]);
   *
   * console.log(other);
   * // => [1, 2, 3, [4]]
   *
   * console.log(array);
   * // => [1]
   */
  function concat() {
    var length = arguments.length;
    if (!length) {
      return [];
    }
    var args = Array(length - 1),
        array = arguments[0],
        index = length;

    while (index--) {
      args[index - 1] = arguments[index];
    }
    return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
  }

  /**
   * Creates an array of `array` values not included in the other given arrays
   * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
   * for equality comparisons. The order and references of result values are
   * determined by the first array.
   *
   * **Note:** Unlike `_.pullAll`, this method returns a new array.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {...Array} [values] The values to exclude.
   * @returns {Array} Returns the new array of filtered values.
   * @see _.without, _.xor
   * @example
   *
   * _.difference([2, 1], [2, 3]);
   * // => [1]
   */
  var difference = baseRest(function(array, values) {
    return isArrayLikeObject(array)
      ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
      : [];
  });

  /**
   * This method is like `_.difference` except that it accepts `iteratee` which
   * is invoked for each element of `array` and `values` to generate the criterion
   * by which they're compared. The order and references of result values are
   * determined by the first array. The iteratee is invoked with one argument:
   * (value).
   *
   * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {...Array} [values] The values to exclude.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {Array} Returns the new array of filtered values.
   * @example
   *
   * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
   * // => [1.2]
   *
   * // The `_.property` iteratee shorthand.
   * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
   * // => [{ 'x': 2 }]
   */
  var differenceBy = baseRest(function(array, values) {
    var iteratee = last(values);
    if (isArrayLikeObject(iteratee)) {
      iteratee = undefined;
    }
    return isArrayLikeObject(array)
      ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))
      : [];
  });

  /**
   * This method is like `_.difference` except that it accepts `comparator`
   * which is invoked to compare elements of `array` to `values`. The order and
   * references of result values are determined by the first array. The comparator
   * is invoked with two arguments: (arrVal, othVal).
   *
   * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {...Array} [values] The values to exclude.
   * @param {Function} [comparator] The comparator invoked per element.
   * @returns {Array} Returns the new array of filtered values.
   * @example
   *
   * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
   *
   * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
   * // => [{ 'x': 2, 'y': 1 }]
   */
  var differenceWith = baseRest(function(array, values) {
    var comparator = last(values);
    if (isArrayLikeObject(comparator)) {
      comparator = undefined;
    }
    return isArrayLikeObject(array)
      ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
      : [];
  });

  /**
   * Creates a slice of `array` with `n` elements dropped from the beginning.
   *
   * @static
   * @memberOf _
   * @since 0.5.0
   * @category Array
   * @param {Array} array The array to query.
   * @param {number} [n=1] The number of elements to drop.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {Array} Returns the slice of `array`.
   * @example
   *
   * _.drop([1, 2, 3]);
   * // => [2, 3]
   *
   * _.drop([1, 2, 3], 2);
   * // => [3]
   *
   * _.drop([1, 2, 3], 5);
   * // => []
   *
   * _.drop([1, 2, 3], 0);
   * // => [1, 2, 3]
   */
  function drop(array, n, guard) {
    var length = array == null ? 0 : array.length;
    if (!length) {
      return [];
    }
    n = (guard || n === undefined) ? 1 : toInteger(n);
    return baseSlice(array, n < 0 ? 0 : n, length);
  }

  /**
   * Creates a slice of `array` with `n` elements dropped from the end.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Array
   * @param {Array} array The array to query.
   * @param {number} [n=1] The number of elements to drop.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {Array} Returns the slice of `array`.
   * @example
   *
   * _.dropRight([1, 2, 3]);
   * // => [1, 2]
   *
   * _.dropRight([1, 2, 3], 2);
   * // => [1]
   *
   * _.dropRight([1, 2, 3], 5);
   * // => []
   *
   * _.dropRight([1, 2, 3], 0);
   * // => [1, 2, 3]
   */
  function dropRight(array, n, guard) {
    var length = array == null ? 0 : array.length;
    if (!length) {
      return [];
    }
    n = (guard || n === undefined) ? 1 : toInteger(n);
    n = length - n;
    return baseSlice(array, 0, n < 0 ? 0 : n);
  }

  /**
   * Creates a slice of `array` excluding elements dropped from the end.
   * Elements are dropped until `predicate` returns falsey. The predicate is
   * invoked with three arguments: (value, index, array).
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Array
   * @param {Array} array The array to query.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @returns {Array} Returns the slice of `array`.
   * @example
   *
   * var users = [
   *   { 'user': 'barney',  'active': true },
   *   { 'user': 'fred',    'active': false },
   *   { 'user': 'pebbles', 'active': false }
   * ];
   *
   * _.dropRightWhile(users, function(o) { return !o.active; });
   * // => objects for ['barney']
   *
   * // The `_.matches` iteratee shorthand.
   * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
   * // => objects for ['barney', 'fred']
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.dropRightWhile(users, ['active', false]);
   * // => objects for ['barney']
   *
   * // The `_.property` iteratee shorthand.
   * _.dropRightWhile(users, 'active');
   * // => objects for ['barney', 'fred', 'pebbles']
   */
  function dropRightWhile(array, predicate) {
    return (array && array.length)
      ? baseWhile(array, getIteratee(predicate, 3), true, true)
      : [];
  }

  /**
   * Creates a slice of `array` excluding elements dropped from the beginning.
   * Elements are dropped until `predicate` returns falsey. The predicate is
   * invoked with three arguments: (value, index, array).
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Array
   * @param {Array} array The array to query.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @returns {Array} Returns the slice of `array`.
   * @example
   *
   * var users = [
   *   { 'user': 'barney',  'active': false },
   *   { 'user': 'fred',    'active': false },
   *   { 'user': 'pebbles', 'active': true }
   * ];
   *
   * _.dropWhile(users, function(o) { return !o.active; });
   * // => objects for ['pebbles']
   *
   * // The `_.matches` iteratee shorthand.
   * _.dropWhile(users, { 'user': 'barney', 'active': false });
   * // => objects for ['fred', 'pebbles']
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.dropWhile(users, ['active', false]);
   * // => objects for ['pebbles']
   *
   * // The `_.property` iteratee shorthand.
   * _.dropWhile(users, 'active');
   * // => objects for ['barney', 'fred', 'pebbles']
   */
  function dropWhile(array, predicate) {
    return (array && array.length)
      ? baseWhile(array, getIteratee(predicate, 3), true)
      : [];
  }

  /**
   * Fills elements of `array` with `value` from `start` up to, but not
   * including, `end`.
   *
   * **Note:** This method mutates `array`.
   *
   * @static
   * @memberOf _
   * @since 3.2.0
   * @category Array
   * @param {Array} array The array to fill.
   * @param {*} value The value to fill `array` with.
   * @param {number} [start=0] The start position.
   * @param {number} [end=array.length] The end position.
   * @returns {Array} Returns `array`.
   * @example
   *
   * var array = [1, 2, 3];
   *
   * _.fill(array, 'a');
   * console.log(array);
   * // => ['a', 'a', 'a']
   *
   * _.fill(Array(3), 2);
   * // => [2, 2, 2]
   *
   * _.fill([4, 6, 8, 10], '*', 1, 3);
   * // => [4, '*', '*', 10]
   */
  function fill(array, value, start, end) {
    var length = array == null ? 0 : array.length;
    if (!length) {
      return [];
    }
    if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
      start = 0;
      end = length;
    }
    return baseFill(array, value, start, end);
  }

  /**
   * This method is like `_.find` except that it returns the index of the first
   * element `predicate` returns truthy for instead of the element itself.
   *
   * @static
   * @memberOf _
   * @since 1.1.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @param {number} [fromIndex=0] The index to search from.
   * @returns {number} Returns the index of the found element, else `-1`.
   * @example
   *
   * var users = [
   *   { 'user': 'barney',  'active': false },
   *   { 'user': 'fred',    'active': false },
   *   { 'user': 'pebbles', 'active': true }
   * ];
   *
   * _.findIndex(users, function(o) { return o.user == 'barney'; });
   * // => 0
   *
   * // The `_.matches` iteratee shorthand.
   * _.findIndex(users, { 'user': 'fred', 'active': false });
   * // => 1
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.findIndex(users, ['active', false]);
   * // => 0
   *
   * // The `_.property` iteratee shorthand.
   * _.findIndex(users, 'active');
   * // => 2
   */
  function findIndex(array, predicate, fromIndex) {
    var length = array == null ? 0 : array.length;
    if (!length) {
      return -1;
    }
    var index = fromIndex == null ? 0 : toInteger(fromIndex);
    if (index < 0) {
      index = nativeMax(length + index, 0);
    }
    return baseFindIndex(array, getIteratee(predicate, 3), index);
  }

  /**
   * This method is like `_.findIndex` except that it iterates over elements
   * of `collection` from right to left.
   *
   * @static
   * @memberOf _
   * @since 2.0.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @param {number} [fromIndex=array.length-1] The index to search from.
   * @returns {number} Returns the index of the found element, else `-1`.
   * @example
   *
   * var users = [
   *   { 'user': 'barney',  'active': true },
   *   { 'user': 'fred',    'active': false },
   *   { 'user': 'pebbles', 'active': false }
   * ];
   *
   * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
   * // => 2
   *
   * // The `_.matches` iteratee shorthand.
   * _.findLastIndex(users, { 'user': 'barney', 'active': true });
   * // => 0
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.findLastIndex(users, ['active', false]);
   * // => 2
   *
   * // The `_.property` iteratee shorthand.
   * _.findLastIndex(users, 'active');
   * // => 0
   */
  function findLastIndex(array, predicate, fromIndex) {
    var length = array == null ? 0 : array.length;
    if (!length) {
      return -1;
    }
    var index = length - 1;
    if (fromIndex !== undefined) {
      index = toInteger(fromIndex);
      index = fromIndex < 0
        ? nativeMax(length + index, 0)
        : nativeMin(index, length - 1);
    }
    return baseFindIndex(array, getIteratee(predicate, 3), index, true);
  }

  /**
   * Flattens `array` a single level deep.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {Array} array The array to flatten.
   * @returns {Array} Returns the new flattened array.
   * @example
   *
   * _.flatten([1, [2, [3, [4]], 5]]);
   * // => [1, 2, [3, [4]], 5]
   */
  function flatten(array) {
    var length = array == null ? 0 : array.length;
    return length ? baseFlatten(array, 1) : [];
  }

  /**
   * Recursively flattens `array`.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Array
   * @param {Array} array The array to flatten.
   * @returns {Array} Returns the new flattened array.
   * @example
   *
   * _.flattenDeep([1, [2, [3, [4]], 5]]);
   * // => [1, 2, 3, 4, 5]
   */
  function flattenDeep(array) {
    var length = array == null ? 0 : array.length;
    return length ? baseFlatten(array, INFINITY) : [];
  }

  /**
   * Recursively flatten `array` up to `depth` times.
   *
   * @static
   * @memberOf _
   * @since 4.4.0
   * @category Array
   * @param {Array} array The array to flatten.
   * @param {number} [depth=1] The maximum recursion depth.
   * @returns {Array} Returns the new flattened array.
   * @example
   *
   * var array = [1, [2, [3, [4]], 5]];
   *
   * _.flattenDepth(array, 1);
   * // => [1, 2, [3, [4]], 5]
   *
   * _.flattenDepth(array, 2);
   * // => [1, 2, 3, [4], 5]
   */
  function flattenDepth(array, depth) {
    var length = array == null ? 0 : array.length;
    if (!length) {
      return [];
    }
    depth = depth === undefined ? 1 : toInteger(depth);
    return baseFlatten(array, depth);
  }

  /**
   * The inverse of `_.toPairs`; this method returns an object composed
   * from key-value `pairs`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} pairs The key-value pairs.
   * @returns {Object} Returns the new object.
   * @example
   *
   * _.fromPairs([['a', 1], ['b', 2]]);
   * // => { 'a': 1, 'b': 2 }
   */
  function fromPairs(pairs) {
    var index = -1,
        length = pairs == null ? 0 : pairs.length,
        result = {};

    while (++index < length) {
      var pair = pairs[index];
      result[pair[0]] = pair[1];
    }
    return result;
  }

  /**
   * Gets the first element of `array`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @alias first
   * @category Array
   * @param {Array} array The array to query.
   * @returns {*} Returns the first element of `array`.
   * @example
   *
   * _.head([1, 2, 3]);
   * // => 1
   *
   * _.head([]);
   * // => undefined
   */
  function head(array) {
    return (array && array.length) ? array[0] : undefined;
  }

  /**
   * Gets the index at which the first occurrence of `value` is found in `array`
   * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
   * for equality comparisons. If `fromIndex` is negative, it's used as the
   * offset from the end of `array`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {*} value The value to search for.
   * @param {number} [fromIndex=0] The index to search from.
   * @returns {number} Returns the index of the matched value, else `-1`.
   * @example
   *
   * _.indexOf([1, 2, 1, 2], 2);
   * // => 1
   *
   * // Search from the `fromIndex`.
   * _.indexOf([1, 2, 1, 2], 2, 2);
   * // => 3
   */
  function indexOf(array, value, fromIndex) {
    var length = array == null ? 0 : array.length;
    if (!length) {
      return -1;
    }
    var index = fromIndex == null ? 0 : toInteger(fromIndex);
    if (index < 0) {
      index = nativeMax(length + index, 0);
    }
    return baseIndexOf(array, value, index);
  }

  /**
   * Gets all but the last element of `array`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {Array} array The array to query.
   * @returns {Array} Returns the slice of `array`.
   * @example
   *
   * _.initial([1, 2, 3]);
   * // => [1, 2]
   */
  function initial(array) {
    var length = array == null ? 0 : array.length;
    return length ? baseSlice(array, 0, -1) : [];
  }

  /**
   * Creates an array of unique values that are included in all given arrays
   * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
   * for equality comparisons. The order and references of result values are
   * determined by the first array.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {...Array} [arrays] The arrays to inspect.
   * @returns {Array} Returns the new array of intersecting values.
   * @example
   *
   * _.intersection([2, 1], [2, 3]);
   * // => [2]
   */
  var intersection = baseRest(function(arrays) {
    var mapped = arrayMap(arrays, castArrayLikeObject);
    return (mapped.length && mapped[0] === arrays[0])
      ? baseIntersection(mapped)
      : [];
  });

  /**
   * This method is like `_.intersection` except that it accepts `iteratee`
   * which is invoked for each element of each `arrays` to generate the criterion
   * by which they're compared. The order and references of result values are
   * determined by the first array. The iteratee is invoked with one argument:
   * (value).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {...Array} [arrays] The arrays to inspect.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {Array} Returns the new array of intersecting values.
   * @example
   *
   * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
   * // => [2.1]
   *
   * // The `_.property` iteratee shorthand.
   * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
   * // => [{ 'x': 1 }]
   */
  var intersectionBy = baseRest(function(arrays) {
    var iteratee = last(arrays),
        mapped = arrayMap(arrays, castArrayLikeObject);

    if (iteratee === last(mapped)) {
      iteratee = undefined;
    } else {
      mapped.pop();
    }
    return (mapped.length && mapped[0] === arrays[0])
      ? baseIntersection(mapped, getIteratee(iteratee, 2))
      : [];
  });

  /**
   * This method is like `_.intersection` except that it accepts `comparator`
   * which is invoked to compare elements of `arrays`. The order and references
   * of result values are determined by the first array. The comparator is
   * invoked with two arguments: (arrVal, othVal).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {...Array} [arrays] The arrays to inspect.
   * @param {Function} [comparator] The comparator invoked per element.
   * @returns {Array} Returns the new array of intersecting values.
   * @example
   *
   * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
   * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
   *
   * _.intersectionWith(objects, others, _.isEqual);
   * // => [{ 'x': 1, 'y': 2 }]
   */
  var intersectionWith = baseRest(function(arrays) {
    var comparator = last(arrays),
        mapped = arrayMap(arrays, castArrayLikeObject);

    comparator = typeof comparator == 'function' ? comparator : undefined;
    if (comparator) {
      mapped.pop();
    }
    return (mapped.length && mapped[0] === arrays[0])
      ? baseIntersection(mapped, undefined, comparator)
      : [];
  });

  /**
   * Converts all elements in `array` into a string separated by `separator`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to convert.
   * @param {string} [separator=','] The element separator.
   * @returns {string} Returns the joined string.
   * @example
   *
   * _.join(['a', 'b', 'c'], '~');
   * // => 'a~b~c'
   */
  function join(array, separator) {
    return array == null ? '' : nativeJoin.call(array, separator);
  }

  /**
   * Gets the last element of `array`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {Array} array The array to query.
   * @returns {*} Returns the last element of `array`.
   * @example
   *
   * _.last([1, 2, 3]);
   * // => 3
   */
  function last(array) {
    var length = array == null ? 0 : array.length;
    return length ? array[length - 1] : undefined;
  }

  /**
   * This method is like `_.indexOf` except that it iterates over elements of
   * `array` from right to left.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {*} value The value to search for.
   * @param {number} [fromIndex=array.length-1] The index to search from.
   * @returns {number} Returns the index of the matched value, else `-1`.
   * @example
   *
   * _.lastIndexOf([1, 2, 1, 2], 2);
   * // => 3
   *
   * // Search from the `fromIndex`.
   * _.lastIndexOf([1, 2, 1, 2], 2, 2);
   * // => 1
   */
  function lastIndexOf(array, value, fromIndex) {
    var length = array == null ? 0 : array.length;
    if (!length) {
      return -1;
    }
    var index = length;
    if (fromIndex !== undefined) {
      index = toInteger(fromIndex);
      index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
    }
    return value === value
      ? strictLastIndexOf(array, value, index)
      : baseFindIndex(array, baseIsNaN, index, true);
  }

  /**
   * Gets the element at index `n` of `array`. If `n` is negative, the nth
   * element from the end is returned.
   *
   * @static
   * @memberOf _
   * @since 4.11.0
   * @category Array
   * @param {Array} array The array to query.
   * @param {number} [n=0] The index of the element to return.
   * @returns {*} Returns the nth element of `array`.
   * @example
   *
   * var array = ['a', 'b', 'c', 'd'];
   *
   * _.nth(array, 1);
   * // => 'b'
   *
   * _.nth(array, -2);
   * // => 'c';
   */
  function nth(array, n) {
    return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
  }

  /**
   * Removes all given values from `array` using
   * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
   * for equality comparisons.
   *
   * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
   * to remove elements from an array by predicate.
   *
   * @static
   * @memberOf _
   * @since 2.0.0
   * @category Array
   * @param {Array} array The array to modify.
   * @param {...*} [values] The values to remove.
   * @returns {Array} Returns `array`.
   * @example
   *
   * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
   *
   * _.pull(array, 'a', 'c');
   * console.log(array);
   * // => ['b', 'b']
   */
  var pull = baseRest(pullAll);

  /**
   * This method is like `_.pull` except that it accepts an array of values to remove.
   *
   * **Note:** Unlike `_.difference`, this method mutates `array`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to modify.
   * @param {Array} values The values to remove.
   * @returns {Array} Returns `array`.
   * @example
   *
   * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
   *
   * _.pullAll(array, ['a', 'c']);
   * console.log(array);
   * // => ['b', 'b']
   */
  function pullAll(array, values) {
    return (array && array.length && values && values.length)
      ? basePullAll(array, values)
      : array;
  }

  /**
   * This method is like `_.pullAll` except that it accepts `iteratee` which is
   * invoked for each element of `array` and `values` to generate the criterion
   * by which they're compared. The iteratee is invoked with one argument: (value).
   *
   * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to modify.
   * @param {Array} values The values to remove.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {Array} Returns `array`.
   * @example
   *
   * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
   *
   * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
   * console.log(array);
   * // => [{ 'x': 2 }]
   */
  function pullAllBy(array, values, iteratee) {
    return (array && array.length && values && values.length)
      ? basePullAll(array, values, getIteratee(iteratee, 2))
      : array;
  }

  /**
   * This method is like `_.pullAll` except that it accepts `comparator` which
   * is invoked to compare elements of `array` to `values`. The comparator is
   * invoked with two arguments: (arrVal, othVal).
   *
   * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
   *
   * @static
   * @memberOf _
   * @since 4.6.0
   * @category Array
   * @param {Array} array The array to modify.
   * @param {Array} values The values to remove.
   * @param {Function} [comparator] The comparator invoked per element.
   * @returns {Array} Returns `array`.
   * @example
   *
   * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
   *
   * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
   * console.log(array);
   * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
   */
  function pullAllWith(array, values, comparator) {
    return (array && array.length && values && values.length)
      ? basePullAll(array, values, undefined, comparator)
      : array;
  }

  /**
   * Removes elements from `array` corresponding to `indexes` and returns an
   * array of removed elements.
   *
   * **Note:** Unlike `_.at`, this method mutates `array`.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Array
   * @param {Array} array The array to modify.
   * @param {...(number|number[])} [indexes] The indexes of elements to remove.
   * @returns {Array} Returns the new array of removed elements.
   * @example
   *
   * var array = ['a', 'b', 'c', 'd'];
   * var pulled = _.pullAt(array, [1, 3]);
   *
   * console.log(array);
   * // => ['a', 'c']
   *
   * console.log(pulled);
   * // => ['b', 'd']
   */
  var pullAt = flatRest(function(array, indexes) {
    var length = array == null ? 0 : array.length,
        result = baseAt(array, indexes);

    basePullAt(array, arrayMap(indexes, function(index) {
      return isIndex(index, length) ? +index : index;
    }).sort(compareAscending));

    return result;
  });

  /**
   * Removes all elements from `array` that `predicate` returns truthy for
   * and returns an array of the removed elements. The predicate is invoked
   * with three arguments: (value, index, array).
   *
   * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
   * to pull elements from an array by value.
   *
   * @static
   * @memberOf _
   * @since 2.0.0
   * @category Array
   * @param {Array} array The array to modify.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @returns {Array} Returns the new array of removed elements.
   * @example
   *
   * var array = [1, 2, 3, 4];
   * var evens = _.remove(array, function(n) {
   *   return n % 2 == 0;
   * });
   *
   * console.log(array);
   * // => [1, 3]
   *
   * console.log(evens);
   * // => [2, 4]
   */
  function remove(array, predicate) {
    var result = [];
    if (!(array && array.length)) {
      return result;
    }
    var index = -1,
        indexes = [],
        length = array.length;

    predicate = getIteratee(predicate, 3);
    while (++index < length) {
      var value = array[index];
      if (predicate(value, index, array)) {
        result.push(value);
        indexes.push(index);
      }
    }
    basePullAt(array, indexes);
    return result;
  }

  /**
   * Reverses `array` so that the first element becomes the last, the second
   * element becomes the second to last, and so on.
   *
   * **Note:** This method mutates `array` and is based on
   * [`Array#reverse`](https://mdn.io/Array/reverse).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to modify.
   * @returns {Array} Returns `array`.
   * @example
   *
   * var array = [1, 2, 3];
   *
   * _.reverse(array);
   * // => [3, 2, 1]
   *
   * console.log(array);
   * // => [3, 2, 1]
   */
  function reverse(array) {
    return array == null ? array : nativeReverse.call(array);
  }

  /**
   * Creates a slice of `array` from `start` up to, but not including, `end`.
   *
   * **Note:** This method is used instead of
   * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
   * returned.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Array
   * @param {Array} array The array to slice.
   * @param {number} [start=0] The start position.
   * @param {number} [end=array.length] The end position.
   * @returns {Array} Returns the slice of `array`.
   */
  function slice(array, start, end) {
    var length = array == null ? 0 : array.length;
    if (!length) {
      return [];
    }
    if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
      start = 0;
      end = length;
    }
    else {
      start = start == null ? 0 : toInteger(start);
      end = end === undefined ? length : toInteger(end);
    }
    return baseSlice(array, start, end);
  }

  /**
   * Uses a binary search to determine the lowest index at which `value`
   * should be inserted into `array` in order to maintain its sort order.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {Array} array The sorted array to inspect.
   * @param {*} value The value to evaluate.
   * @returns {number} Returns the index at which `value` should be inserted
   *  into `array`.
   * @example
   *
   * _.sortedIndex([30, 50], 40);
   * // => 1
   */
  function sortedIndex(array, value) {
    return baseSortedIndex(array, value);
  }

  /**
   * This method is like `_.sortedIndex` except that it accepts `iteratee`
   * which is invoked for `value` and each element of `array` to compute their
   * sort ranking. The iteratee is invoked with one argument: (value).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The sorted array to inspect.
   * @param {*} value The value to evaluate.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {number} Returns the index at which `value` should be inserted
   *  into `array`.
   * @example
   *
   * var objects = [{ 'x': 4 }, { 'x': 5 }];
   *
   * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
   * // => 0
   *
   * // The `_.property` iteratee shorthand.
   * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
   * // => 0
   */
  function sortedIndexBy(array, value, iteratee) {
    return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
  }

  /**
   * This method is like `_.indexOf` except that it performs a binary
   * search on a sorted `array`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {*} value The value to search for.
   * @returns {number} Returns the index of the matched value, else `-1`.
   * @example
   *
   * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
   * // => 1
   */
  function sortedIndexOf(array, value) {
    var length = array == null ? 0 : array.length;
    if (length) {
      var index = baseSortedIndex(array, value);
      if (index < length && eq(array[index], value)) {
        return index;
      }
    }
    return -1;
  }

  /**
   * This method is like `_.sortedIndex` except that it returns the highest
   * index at which `value` should be inserted into `array` in order to
   * maintain its sort order.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Array
   * @param {Array} array The sorted array to inspect.
   * @param {*} value The value to evaluate.
   * @returns {number} Returns the index at which `value` should be inserted
   *  into `array`.
   * @example
   *
   * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
   * // => 4
   */
  function sortedLastIndex(array, value) {
    return baseSortedIndex(array, value, true);
  }

  /**
   * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
   * which is invoked for `value` and each element of `array` to compute their
   * sort ranking. The iteratee is invoked with one argument: (value).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The sorted array to inspect.
   * @param {*} value The value to evaluate.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {number} Returns the index at which `value` should be inserted
   *  into `array`.
   * @example
   *
   * var objects = [{ 'x': 4 }, { 'x': 5 }];
   *
   * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
   * // => 1
   *
   * // The `_.property` iteratee shorthand.
   * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
   * // => 1
   */
  function sortedLastIndexBy(array, value, iteratee) {
    return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
  }

  /**
   * This method is like `_.lastIndexOf` except that it performs a binary
   * search on a sorted `array`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {*} value The value to search for.
   * @returns {number} Returns the index of the matched value, else `-1`.
   * @example
   *
   * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
   * // => 3
   */
  function sortedLastIndexOf(array, value) {
    var length = array == null ? 0 : array.length;
    if (length) {
      var index = baseSortedIndex(array, value, true) - 1;
      if (eq(array[index], value)) {
        return index;
      }
    }
    return -1;
  }

  /**
   * This method is like `_.uniq` except that it's designed and optimized
   * for sorted arrays.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @returns {Array} Returns the new duplicate free array.
   * @example
   *
   * _.sortedUniq([1, 1, 2]);
   * // => [1, 2]
   */
  function sortedUniq(array) {
    return (array && array.length)
      ? baseSortedUniq(array)
      : [];
  }

  /**
   * This method is like `_.uniqBy` except that it's designed and optimized
   * for sorted arrays.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {Function} [iteratee] The iteratee invoked per element.
   * @returns {Array} Returns the new duplicate free array.
   * @example
   *
   * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
   * // => [1.1, 2.3]
   */
  function sortedUniqBy(array, iteratee) {
    return (array && array.length)
      ? baseSortedUniq(array, getIteratee(iteratee, 2))
      : [];
  }

  /**
   * Gets all but the first element of `array`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to query.
   * @returns {Array} Returns the slice of `array`.
   * @example
   *
   * _.tail([1, 2, 3]);
   * // => [2, 3]
   */
  function tail(array) {
    var length = array == null ? 0 : array.length;
    return length ? baseSlice(array, 1, length) : [];
  }

  /**
   * Creates a slice of `array` with `n` elements taken from the beginning.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {Array} array The array to query.
   * @param {number} [n=1] The number of elements to take.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {Array} Returns the slice of `array`.
   * @example
   *
   * _.take([1, 2, 3]);
   * // => [1]
   *
   * _.take([1, 2, 3], 2);
   * // => [1, 2]
   *
   * _.take([1, 2, 3], 5);
   * // => [1, 2, 3]
   *
   * _.take([1, 2, 3], 0);
   * // => []
   */
  function take(array, n, guard) {
    if (!(array && array.length)) {
      return [];
    }
    n = (guard || n === undefined) ? 1 : toInteger(n);
    return baseSlice(array, 0, n < 0 ? 0 : n);
  }

  /**
   * Creates a slice of `array` with `n` elements taken from the end.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Array
   * @param {Array} array The array to query.
   * @param {number} [n=1] The number of elements to take.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {Array} Returns the slice of `array`.
   * @example
   *
   * _.takeRight([1, 2, 3]);
   * // => [3]
   *
   * _.takeRight([1, 2, 3], 2);
   * // => [2, 3]
   *
   * _.takeRight([1, 2, 3], 5);
   * // => [1, 2, 3]
   *
   * _.takeRight([1, 2, 3], 0);
   * // => []
   */
  function takeRight(array, n, guard) {
    var length = array == null ? 0 : array.length;
    if (!length) {
      return [];
    }
    n = (guard || n === undefined) ? 1 : toInteger(n);
    n = length - n;
    return baseSlice(array, n < 0 ? 0 : n, length);
  }

  /**
   * Creates a slice of `array` with elements taken from the end. Elements are
   * taken until `predicate` returns falsey. The predicate is invoked with
   * three arguments: (value, index, array).
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Array
   * @param {Array} array The array to query.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @returns {Array} Returns the slice of `array`.
   * @example
   *
   * var users = [
   *   { 'user': 'barney',  'active': true },
   *   { 'user': 'fred',    'active': false },
   *   { 'user': 'pebbles', 'active': false }
   * ];
   *
   * _.takeRightWhile(users, function(o) { return !o.active; });
   * // => objects for ['fred', 'pebbles']
   *
   * // The `_.matches` iteratee shorthand.
   * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
   * // => objects for ['pebbles']
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.takeRightWhile(users, ['active', false]);
   * // => objects for ['fred', 'pebbles']
   *
   * // The `_.property` iteratee shorthand.
   * _.takeRightWhile(users, 'active');
   * // => []
   */
  function takeRightWhile(array, predicate) {
    return (array && array.length)
      ? baseWhile(array, getIteratee(predicate, 3), false, true)
      : [];
  }

  /**
   * Creates a slice of `array` with elements taken from the beginning. Elements
   * are taken until `predicate` returns falsey. The predicate is invoked with
   * three arguments: (value, index, array).
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Array
   * @param {Array} array The array to query.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @returns {Array} Returns the slice of `array`.
   * @example
   *
   * var users = [
   *   { 'user': 'barney',  'active': false },
   *   { 'user': 'fred',    'active': false },
   *   { 'user': 'pebbles', 'active': true }
   * ];
   *
   * _.takeWhile(users, function(o) { return !o.active; });
   * // => objects for ['barney', 'fred']
   *
   * // The `_.matches` iteratee shorthand.
   * _.takeWhile(users, { 'user': 'barney', 'active': false });
   * // => objects for ['barney']
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.takeWhile(users, ['active', false]);
   * // => objects for ['barney', 'fred']
   *
   * // The `_.property` iteratee shorthand.
   * _.takeWhile(users, 'active');
   * // => []
   */
  function takeWhile(array, predicate) {
    return (array && array.length)
      ? baseWhile(array, getIteratee(predicate, 3))
      : [];
  }

  /**
   * Creates an array of unique values, in order, from all given arrays using
   * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
   * for equality comparisons.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {...Array} [arrays] The arrays to inspect.
   * @returns {Array} Returns the new array of combined values.
   * @example
   *
   * _.union([2], [1, 2]);
   * // => [2, 1]
   */
  var union = baseRest(function(arrays) {
    return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
  });

  /**
   * This method is like `_.union` except that it accepts `iteratee` which is
   * invoked for each element of each `arrays` to generate the criterion by
   * which uniqueness is computed. Result values are chosen from the first
   * array in which the value occurs. The iteratee is invoked with one argument:
   * (value).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {...Array} [arrays] The arrays to inspect.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {Array} Returns the new array of combined values.
   * @example
   *
   * _.unionBy([2.1], [1.2, 2.3], Math.floor);
   * // => [2.1, 1.2]
   *
   * // The `_.property` iteratee shorthand.
   * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
   * // => [{ 'x': 1 }, { 'x': 2 }]
   */
  var unionBy = baseRest(function(arrays) {
    var iteratee = last(arrays);
    if (isArrayLikeObject(iteratee)) {
      iteratee = undefined;
    }
    return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
  });

  /**
   * This method is like `_.union` except that it accepts `comparator` which
   * is invoked to compare elements of `arrays`. Result values are chosen from
   * the first array in which the value occurs. The comparator is invoked
   * with two arguments: (arrVal, othVal).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {...Array} [arrays] The arrays to inspect.
   * @param {Function} [comparator] The comparator invoked per element.
   * @returns {Array} Returns the new array of combined values.
   * @example
   *
   * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
   * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
   *
   * _.unionWith(objects, others, _.isEqual);
   * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
   */
  var unionWith = baseRest(function(arrays) {
    var comparator = last(arrays);
    comparator = typeof comparator == 'function' ? comparator : undefined;
    return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
  });

  /**
   * Creates a duplicate-free version of an array, using
   * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
   * for equality comparisons, in which only the first occurrence of each element
   * is kept. The order of result values is determined by the order they occur
   * in the array.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @returns {Array} Returns the new duplicate free array.
   * @example
   *
   * _.uniq([2, 1, 2]);
   * // => [2, 1]
   */
  function uniq(array) {
    return (array && array.length) ? baseUniq(array) : [];
  }

  /**
   * This method is like `_.uniq` except that it accepts `iteratee` which is
   * invoked for each element in `array` to generate the criterion by which
   * uniqueness is computed. The order of result values is determined by the
   * order they occur in the array. The iteratee is invoked with one argument:
   * (value).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {Array} Returns the new duplicate free array.
   * @example
   *
   * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
   * // => [2.1, 1.2]
   *
   * // The `_.property` iteratee shorthand.
   * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
   * // => [{ 'x': 1 }, { 'x': 2 }]
   */
  function uniqBy(array, iteratee) {
    return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];
  }

  /**
   * This method is like `_.uniq` except that it accepts `comparator` which
   * is invoked to compare elements of `array`. The order of result values is
   * determined by the order they occur in the array.The comparator is invoked
   * with two arguments: (arrVal, othVal).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {Function} [comparator] The comparator invoked per element.
   * @returns {Array} Returns the new duplicate free array.
   * @example
   *
   * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
   *
   * _.uniqWith(objects, _.isEqual);
   * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
   */
  function uniqWith(array, comparator) {
    comparator = typeof comparator == 'function' ? comparator : undefined;
    return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
  }

  /**
   * This method is like `_.zip` except that it accepts an array of grouped
   * elements and creates an array regrouping the elements to their pre-zip
   * configuration.
   *
   * @static
   * @memberOf _
   * @since 1.2.0
   * @category Array
   * @param {Array} array The array of grouped elements to process.
   * @returns {Array} Returns the new array of regrouped elements.
   * @example
   *
   * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
   * // => [['a', 1, true], ['b', 2, false]]
   *
   * _.unzip(zipped);
   * // => [['a', 'b'], [1, 2], [true, false]]
   */
  function unzip(array) {
    if (!(array && array.length)) {
      return [];
    }
    var length = 0;
    array = arrayFilter(array, function(group) {
      if (isArrayLikeObject(group)) {
        length = nativeMax(group.length, length);
        return true;
      }
    });
    return baseTimes(length, function(index) {
      return arrayMap(array, baseProperty(index));
    });
  }

  /**
   * This method is like `_.unzip` except that it accepts `iteratee` to specify
   * how regrouped values should be combined. The iteratee is invoked with the
   * elements of each group: (...group).
   *
   * @static
   * @memberOf _
   * @since 3.8.0
   * @category Array
   * @param {Array} array The array of grouped elements to process.
   * @param {Function} [iteratee=_.identity] The function to combine
   *  regrouped values.
   * @returns {Array} Returns the new array of regrouped elements.
   * @example
   *
   * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
   * // => [[1, 10, 100], [2, 20, 200]]
   *
   * _.unzipWith(zipped, _.add);
   * // => [3, 30, 300]
   */
  function unzipWith(array, iteratee) {
    if (!(array && array.length)) {
      return [];
    }
    var result = unzip(array);
    if (iteratee == null) {
      return result;
    }
    return arrayMap(result, function(group) {
      return apply(iteratee, undefined, group);
    });
  }

  /**
   * Creates an array excluding all given values using
   * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
   * for equality comparisons.
   *
   * **Note:** Unlike `_.pull`, this method returns a new array.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {Array} array The array to inspect.
   * @param {...*} [values] The values to exclude.
   * @returns {Array} Returns the new array of filtered values.
   * @see _.difference, _.xor
   * @example
   *
   * _.without([2, 1, 2, 3], 1, 2);
   * // => [3]
   */
  var without = baseRest(function(array, values) {
    return isArrayLikeObject(array)
      ? baseDifference(array, values)
      : [];
  });

  /**
   * Creates an array of unique values that is the
   * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
   * of the given arrays. The order of result values is determined by the order
   * they occur in the arrays.
   *
   * @static
   * @memberOf _
   * @since 2.4.0
   * @category Array
   * @param {...Array} [arrays] The arrays to inspect.
   * @returns {Array} Returns the new array of filtered values.
   * @see _.difference, _.without
   * @example
   *
   * _.xor([2, 1], [2, 3]);
   * // => [1, 3]
   */
  var xor = baseRest(function(arrays) {
    return baseXor(arrayFilter(arrays, isArrayLikeObject));
  });

  /**
   * This method is like `_.xor` except that it accepts `iteratee` which is
   * invoked for each element of each `arrays` to generate the criterion by
   * which by which they're compared. The order of result values is determined
   * by the order they occur in the arrays. The iteratee is invoked with one
   * argument: (value).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {...Array} [arrays] The arrays to inspect.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {Array} Returns the new array of filtered values.
   * @example
   *
   * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
   * // => [1.2, 3.4]
   *
   * // The `_.property` iteratee shorthand.
   * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
   * // => [{ 'x': 2 }]
   */
  var xorBy = baseRest(function(arrays) {
    var iteratee = last(arrays);
    if (isArrayLikeObject(iteratee)) {
      iteratee = undefined;
    }
    return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
  });

  /**
   * This method is like `_.xor` except that it accepts `comparator` which is
   * invoked to compare elements of `arrays`. The order of result values is
   * determined by the order they occur in the arrays. The comparator is invoked
   * with two arguments: (arrVal, othVal).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Array
   * @param {...Array} [arrays] The arrays to inspect.
   * @param {Function} [comparator] The comparator invoked per element.
   * @returns {Array} Returns the new array of filtered values.
   * @example
   *
   * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
   * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
   *
   * _.xorWith(objects, others, _.isEqual);
   * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
   */
  var xorWith = baseRest(function(arrays) {
    var comparator = last(arrays);
    comparator = typeof comparator == 'function' ? comparator : undefined;
    return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
  });

  /**
   * Creates an array of grouped elements, the first of which contains the
   * first elements of the given arrays, the second of which contains the
   * second elements of the given arrays, and so on.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Array
   * @param {...Array} [arrays] The arrays to process.
   * @returns {Array} Returns the new array of grouped elements.
   * @example
   *
   * _.zip(['a', 'b'], [1, 2], [true, false]);
   * // => [['a', 1, true], ['b', 2, false]]
   */
  var zip = baseRest(unzip);

  /**
   * This method is like `_.fromPairs` except that it accepts two arrays,
   * one of property identifiers and one of corresponding values.
   *
   * @static
   * @memberOf _
   * @since 0.4.0
   * @category Array
   * @param {Array} [props=[]] The property identifiers.
   * @param {Array} [values=[]] The property values.
   * @returns {Object} Returns the new object.
   * @example
   *
   * _.zipObject(['a', 'b'], [1, 2]);
   * // => { 'a': 1, 'b': 2 }
   */
  function zipObject(props, values) {
    return baseZipObject(props || [], values || [], assignValue);
  }

  /**
   * This method is like `_.zipObject` except that it supports property paths.
   *
   * @static
   * @memberOf _
   * @since 4.1.0
   * @category Array
   * @param {Array} [props=[]] The property identifiers.
   * @param {Array} [values=[]] The property values.
   * @returns {Object} Returns the new object.
   * @example
   *
   * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
   * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
   */
  function zipObjectDeep(props, values) {
    return baseZipObject(props || [], values || [], baseSet);
  }

  /**
   * This method is like `_.zip` except that it accepts `iteratee` to specify
   * how grouped values should be combined. The iteratee is invoked with the
   * elements of each group: (...group).
   *
   * @static
   * @memberOf _
   * @since 3.8.0
   * @category Array
   * @param {...Array} [arrays] The arrays to process.
   * @param {Function} [iteratee=_.identity] The function to combine
   *  grouped values.
   * @returns {Array} Returns the new array of grouped elements.
   * @example
   *
   * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
   *   return a + b + c;
   * });
   * // => [111, 222]
   */
  var zipWith = baseRest(function(arrays) {
    var length = arrays.length,
        iteratee = length > 1 ? arrays[length - 1] : undefined;

    iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
    return unzipWith(arrays, iteratee);
  });

  /*------------------------------------------------------------------------*/

  /**
   * Creates a `lodash` wrapper instance that wraps `value` with explicit method
   * chain sequences enabled. The result of such sequences must be unwrapped
   * with `_#value`.
   *
   * @static
   * @memberOf _
   * @since 1.3.0
   * @category Seq
   * @param {*} value The value to wrap.
   * @returns {Object} Returns the new `lodash` wrapper instance.
   * @example
   *
   * var users = [
   *   { 'user': 'barney',  'age': 36 },
   *   { 'user': 'fred',    'age': 40 },
   *   { 'user': 'pebbles', 'age': 1 }
   * ];
   *
   * var youngest = _
   *   .chain(users)
   *   .sortBy('age')
   *   .map(function(o) {
   *     return o.user + ' is ' + o.age;
   *   })
   *   .head()
   *   .value();
   * // => 'pebbles is 1'
   */
  function chain(value) {
    var result = lodash(value);
    result.__chain__ = true;
    return result;
  }

  /**
   * This method invokes `interceptor` and returns `value`. The interceptor
   * is invoked with one argument; (value). The purpose of this method is to
   * "tap into" a method chain sequence in order to modify intermediate results.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Seq
   * @param {*} value The value to provide to `interceptor`.
   * @param {Function} interceptor The function to invoke.
   * @returns {*} Returns `value`.
   * @example
   *
   * _([1, 2, 3])
   *  .tap(function(array) {
   *    // Mutate input array.
   *    array.pop();
   *  })
   *  .reverse()
   *  .value();
   * // => [2, 1]
   */
  function tap(value, interceptor) {
    interceptor(value);
    return value;
  }

  /**
   * This method is like `_.tap` except that it returns the result of `interceptor`.
   * The purpose of this method is to "pass thru" values replacing intermediate
   * results in a method chain sequence.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Seq
   * @param {*} value The value to provide to `interceptor`.
   * @param {Function} interceptor The function to invoke.
   * @returns {*} Returns the result of `interceptor`.
   * @example
   *
   * _('  abc  ')
   *  .chain()
   *  .trim()
   *  .thru(function(value) {
   *    return [value];
   *  })
   *  .value();
   * // => ['abc']
   */
  function thru(value, interceptor) {
    return interceptor(value);
  }

  /**
   * This method is the wrapper version of `_.at`.
   *
   * @name at
   * @memberOf _
   * @since 1.0.0
   * @category Seq
   * @param {...(string|string[])} [paths] The property paths to pick.
   * @returns {Object} Returns the new `lodash` wrapper instance.
   * @example
   *
   * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
   *
   * _(object).at(['a[0].b.c', 'a[1]']).value();
   * // => [3, 4]
   */
  var wrapperAt = flatRest(function(paths) {
    var length = paths.length,
        start = length ? paths[0] : 0,
        value = this.__wrapped__,
        interceptor = function(object) { return baseAt(object, paths); };

    if (length > 1 || this.__actions__.length ||
        !(value instanceof LazyWrapper) || !isIndex(start)) {
      return this.thru(interceptor);
    }
    value = value.slice(start, +start + (length ? 1 : 0));
    value.__actions__.push({
      'func': thru,
      'args': [interceptor],
      'thisArg': undefined
    });
    return new LodashWrapper(value, this.__chain__).thru(function(array) {
      if (length && !array.length) {
        array.push(undefined);
      }
      return array;
    });
  });

  /**
   * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
   *
   * @name chain
   * @memberOf _
   * @since 0.1.0
   * @category Seq
   * @returns {Object} Returns the new `lodash` wrapper instance.
   * @example
   *
   * var users = [
   *   { 'user': 'barney', 'age': 36 },
   *   { 'user': 'fred',   'age': 40 }
   * ];
   *
   * // A sequence without explicit chaining.
   * _(users).head();
   * // => { 'user': 'barney', 'age': 36 }
   *
   * // A sequence with explicit chaining.
   * _(users)
   *   .chain()
   *   .head()
   *   .pick('user')
   *   .value();
   * // => { 'user': 'barney' }
   */
  function wrapperChain() {
    return chain(this);
  }

  /**
   * Executes the chain sequence and returns the wrapped result.
   *
   * @name commit
   * @memberOf _
   * @since 3.2.0
   * @category Seq
   * @returns {Object} Returns the new `lodash` wrapper instance.
   * @example
   *
   * var array = [1, 2];
   * var wrapped = _(array).push(3);
   *
   * console.log(array);
   * // => [1, 2]
   *
   * wrapped = wrapped.commit();
   * console.log(array);
   * // => [1, 2, 3]
   *
   * wrapped.last();
   * // => 3
   *
   * console.log(array);
   * // => [1, 2, 3]
   */
  function wrapperCommit() {
    return new LodashWrapper(this.value(), this.__chain__);
  }

  /**
   * Gets the next value on a wrapped object following the
   * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
   *
   * @name next
   * @memberOf _
   * @since 4.0.0
   * @category Seq
   * @returns {Object} Returns the next iterator value.
   * @example
   *
   * var wrapped = _([1, 2]);
   *
   * wrapped.next();
   * // => { 'done': false, 'value': 1 }
   *
   * wrapped.next();
   * // => { 'done': false, 'value': 2 }
   *
   * wrapped.next();
   * // => { 'done': true, 'value': undefined }
   */
  function wrapperNext() {
    if (this.__values__ === undefined) {
      this.__values__ = toArray(this.value());
    }
    var done = this.__index__ >= this.__values__.length,
        value = done ? undefined : this.__values__[this.__index__++];

    return { 'done': done, 'value': value };
  }

  /**
   * Enables the wrapper to be iterable.
   *
   * @name Symbol.iterator
   * @memberOf _
   * @since 4.0.0
   * @category Seq
   * @returns {Object} Returns the wrapper object.
   * @example
   *
   * var wrapped = _([1, 2]);
   *
   * wrapped[Symbol.iterator]() === wrapped;
   * // => true
   *
   * Array.from(wrapped);
   * // => [1, 2]
   */
  function wrapperToIterator() {
    return this;
  }

  /**
   * Creates a clone of the chain sequence planting `value` as the wrapped value.
   *
   * @name plant
   * @memberOf _
   * @since 3.2.0
   * @category Seq
   * @param {*} value The value to plant.
   * @returns {Object} Returns the new `lodash` wrapper instance.
   * @example
   *
   * function square(n) {
   *   return n * n;
   * }
   *
   * var wrapped = _([1, 2]).map(square);
   * var other = wrapped.plant([3, 4]);
   *
   * other.value();
   * // => [9, 16]
   *
   * wrapped.value();
   * // => [1, 4]
   */
  function wrapperPlant(value) {
    var result,
        parent = this;

    while (parent instanceof baseLodash) {
      var clone = wrapperClone(parent);
      clone.__index__ = 0;
      clone.__values__ = undefined;
      if (result) {
        previous.__wrapped__ = clone;
      } else {
        result = clone;
      }
      var previous = clone;
      parent = parent.__wrapped__;
    }
    previous.__wrapped__ = value;
    return result;
  }

  /**
   * This method is the wrapper version of `_.reverse`.
   *
   * **Note:** This method mutates the wrapped array.
   *
   * @name reverse
   * @memberOf _
   * @since 0.1.0
   * @category Seq
   * @returns {Object} Returns the new `lodash` wrapper instance.
   * @example
   *
   * var array = [1, 2, 3];
   *
   * _(array).reverse().value()
   * // => [3, 2, 1]
   *
   * console.log(array);
   * // => [3, 2, 1]
   */
  function wrapperReverse() {
    var value = this.__wrapped__;
    if (value instanceof LazyWrapper) {
      var wrapped = value;
      if (this.__actions__.length) {
        wrapped = new LazyWrapper(this);
      }
      wrapped = wrapped.reverse();
      wrapped.__actions__.push({
        'func': thru,
        'args': [reverse],
        'thisArg': undefined
      });
      return new LodashWrapper(wrapped, this.__chain__);
    }
    return this.thru(reverse);
  }

  /**
   * Executes the chain sequence to resolve the unwrapped value.
   *
   * @name value
   * @memberOf _
   * @since 0.1.0
   * @alias toJSON, valueOf
   * @category Seq
   * @returns {*} Returns the resolved unwrapped value.
   * @example
   *
   * _([1, 2, 3]).value();
   * // => [1, 2, 3]
   */
  function wrapperValue() {
    return baseWrapperValue(this.__wrapped__, this.__actions__);
  }

  /*------------------------------------------------------------------------*/

  /**
   * Creates an object composed of keys generated from the results of running
   * each element of `collection` thru `iteratee`. The corresponding value of
   * each key is the number of times the key was returned by `iteratee`. The
   * iteratee is invoked with one argument: (value).
   *
   * @static
   * @memberOf _
   * @since 0.5.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
   * @returns {Object} Returns the composed aggregate object.
   * @example
   *
   * _.countBy([6.1, 4.2, 6.3], Math.floor);
   * // => { '4': 1, '6': 2 }
   *
   * // The `_.property` iteratee shorthand.
   * _.countBy(['one', 'two', 'three'], 'length');
   * // => { '3': 2, '5': 1 }
   */
  var countBy = createAggregator(function(result, value, key) {
    if (hasOwnProperty.call(result, key)) {
      ++result[key];
    } else {
      baseAssignValue(result, key, 1);
    }
  });

  /**
   * Checks if `predicate` returns truthy for **all** elements of `collection`.
   * Iteration is stopped once `predicate` returns falsey. The predicate is
   * invoked with three arguments: (value, index|key, collection).
   *
   * **Note:** This method returns `true` for
   * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
   * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
   * elements of empty collections.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {boolean} Returns `true` if all elements pass the predicate check,
   *  else `false`.
   * @example
   *
   * _.every([true, 1, null, 'yes'], Boolean);
   * // => false
   *
   * var users = [
   *   { 'user': 'barney', 'age': 36, 'active': false },
   *   { 'user': 'fred',   'age': 40, 'active': false }
   * ];
   *
   * // The `_.matches` iteratee shorthand.
   * _.every(users, { 'user': 'barney', 'active': false });
   * // => false
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.every(users, ['active', false]);
   * // => true
   *
   * // The `_.property` iteratee shorthand.
   * _.every(users, 'active');
   * // => false
   */
  function every(collection, predicate, guard) {
    var func = isArray(collection) ? arrayEvery : baseEvery;
    if (guard && isIterateeCall(collection, predicate, guard)) {
      predicate = undefined;
    }
    return func(collection, getIteratee(predicate, 3));
  }

  /**
   * Iterates over elements of `collection`, returning an array of all elements
   * `predicate` returns truthy for. The predicate is invoked with three
   * arguments: (value, index|key, collection).
   *
   * **Note:** Unlike `_.remove`, this method returns a new array.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @returns {Array} Returns the new filtered array.
   * @see _.reject
   * @example
   *
   * var users = [
   *   { 'user': 'barney', 'age': 36, 'active': true },
   *   { 'user': 'fred',   'age': 40, 'active': false }
   * ];
   *
   * _.filter(users, function(o) { return !o.active; });
   * // => objects for ['fred']
   *
   * // The `_.matches` iteratee shorthand.
   * _.filter(users, { 'age': 36, 'active': true });
   * // => objects for ['barney']
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.filter(users, ['active', false]);
   * // => objects for ['fred']
   *
   * // The `_.property` iteratee shorthand.
   * _.filter(users, 'active');
   * // => objects for ['barney']
   */
  function filter(collection, predicate) {
    var func = isArray(collection) ? arrayFilter : baseFilter;
    return func(collection, getIteratee(predicate, 3));
  }

  /**
   * Iterates over elements of `collection`, returning the first element
   * `predicate` returns truthy for. The predicate is invoked with three
   * arguments: (value, index|key, collection).
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object} collection The collection to inspect.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @param {number} [fromIndex=0] The index to search from.
   * @returns {*} Returns the matched element, else `undefined`.
   * @example
   *
   * var users = [
   *   { 'user': 'barney',  'age': 36, 'active': true },
   *   { 'user': 'fred',    'age': 40, 'active': false },
   *   { 'user': 'pebbles', 'age': 1,  'active': true }
   * ];
   *
   * _.find(users, function(o) { return o.age < 40; });
   * // => object for 'barney'
   *
   * // The `_.matches` iteratee shorthand.
   * _.find(users, { 'age': 1, 'active': true });
   * // => object for 'pebbles'
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.find(users, ['active', false]);
   * // => object for 'fred'
   *
   * // The `_.property` iteratee shorthand.
   * _.find(users, 'active');
   * // => object for 'barney'
   */
  var find = createFind(findIndex);

  /**
   * This method is like `_.find` except that it iterates over elements of
   * `collection` from right to left.
   *
   * @static
   * @memberOf _
   * @since 2.0.0
   * @category Collection
   * @param {Array|Object} collection The collection to inspect.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @param {number} [fromIndex=collection.length-1] The index to search from.
   * @returns {*} Returns the matched element, else `undefined`.
   * @example
   *
   * _.findLast([1, 2, 3, 4], function(n) {
   *   return n % 2 == 1;
   * });
   * // => 3
   */
  var findLast = createFind(findLastIndex);

  /**
   * Creates a flattened array of values by running each element in `collection`
   * thru `iteratee` and flattening the mapped results. The iteratee is invoked
   * with three arguments: (value, index|key, collection).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @returns {Array} Returns the new flattened array.
   * @example
   *
   * function duplicate(n) {
   *   return [n, n];
   * }
   *
   * _.flatMap([1, 2], duplicate);
   * // => [1, 1, 2, 2]
   */
  function flatMap(collection, iteratee) {
    return baseFlatten(map(collection, iteratee), 1);
  }

  /**
   * This method is like `_.flatMap` except that it recursively flattens the
   * mapped results.
   *
   * @static
   * @memberOf _
   * @since 4.7.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @returns {Array} Returns the new flattened array.
   * @example
   *
   * function duplicate(n) {
   *   return [[[n, n]]];
   * }
   *
   * _.flatMapDeep([1, 2], duplicate);
   * // => [1, 1, 2, 2]
   */
  function flatMapDeep(collection, iteratee) {
    return baseFlatten(map(collection, iteratee), INFINITY);
  }

  /**
   * This method is like `_.flatMap` except that it recursively flattens the
   * mapped results up to `depth` times.
   *
   * @static
   * @memberOf _
   * @since 4.7.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @param {number} [depth=1] The maximum recursion depth.
   * @returns {Array} Returns the new flattened array.
   * @example
   *
   * function duplicate(n) {
   *   return [[[n, n]]];
   * }
   *
   * _.flatMapDepth([1, 2], duplicate, 2);
   * // => [[1, 1], [2, 2]]
   */
  function flatMapDepth(collection, iteratee, depth) {
    depth = depth === undefined ? 1 : toInteger(depth);
    return baseFlatten(map(collection, iteratee), depth);
  }

  /**
   * Iterates over elements of `collection` and invokes `iteratee` for each element.
   * The iteratee is invoked with three arguments: (value, index|key, collection).
   * Iteratee functions may exit iteration early by explicitly returning `false`.
   *
   * **Note:** As with other "Collections" methods, objects with a "length"
   * property are iterated like arrays. To avoid this behavior use `_.forIn`
   * or `_.forOwn` for object iteration.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @alias each
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @returns {Array|Object} Returns `collection`.
   * @see _.forEachRight
   * @example
   *
   * _.forEach([1, 2], function(value) {
   *   console.log(value);
   * });
   * // => Logs `1` then `2`.
   *
   * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
   *   console.log(key);
   * });
   * // => Logs 'a' then 'b' (iteration order is not guaranteed).
   */
  function forEach(collection, iteratee) {
    var func = isArray(collection) ? arrayEach : baseEach;
    return func(collection, getIteratee(iteratee, 3));
  }

  /**
   * This method is like `_.forEach` except that it iterates over elements of
   * `collection` from right to left.
   *
   * @static
   * @memberOf _
   * @since 2.0.0
   * @alias eachRight
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @returns {Array|Object} Returns `collection`.
   * @see _.forEach
   * @example
   *
   * _.forEachRight([1, 2], function(value) {
   *   console.log(value);
   * });
   * // => Logs `2` then `1`.
   */
  function forEachRight(collection, iteratee) {
    var func = isArray(collection) ? arrayEachRight : baseEachRight;
    return func(collection, getIteratee(iteratee, 3));
  }

  /**
   * Creates an object composed of keys generated from the results of running
   * each element of `collection` thru `iteratee`. The order of grouped values
   * is determined by the order they occur in `collection`. The corresponding
   * value of each key is an array of elements responsible for generating the
   * key. The iteratee is invoked with one argument: (value).
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
   * @returns {Object} Returns the composed aggregate object.
   * @example
   *
   * _.groupBy([6.1, 4.2, 6.3], Math.floor);
   * // => { '4': [4.2], '6': [6.1, 6.3] }
   *
   * // The `_.property` iteratee shorthand.
   * _.groupBy(['one', 'two', 'three'], 'length');
   * // => { '3': ['one', 'two'], '5': ['three'] }
   */
  var groupBy = createAggregator(function(result, value, key) {
    if (hasOwnProperty.call(result, key)) {
      result[key].push(value);
    } else {
      baseAssignValue(result, key, [value]);
    }
  });

  /**
   * Checks if `value` is in `collection`. If `collection` is a string, it's
   * checked for a substring of `value`, otherwise
   * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
   * is used for equality comparisons. If `fromIndex` is negative, it's used as
   * the offset from the end of `collection`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object|string} collection The collection to inspect.
   * @param {*} value The value to search for.
   * @param {number} [fromIndex=0] The index to search from.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
   * @returns {boolean} Returns `true` if `value` is found, else `false`.
   * @example
   *
   * _.includes([1, 2, 3], 1);
   * // => true
   *
   * _.includes([1, 2, 3], 1, 2);
   * // => false
   *
   * _.includes({ 'a': 1, 'b': 2 }, 1);
   * // => true
   *
   * _.includes('abcd', 'bc');
   * // => true
   */
  function includes(collection, value, fromIndex, guard) {
    collection = isArrayLike(collection) ? collection : values(collection);
    fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;

    var length = collection.length;
    if (fromIndex < 0) {
      fromIndex = nativeMax(length + fromIndex, 0);
    }
    return isString(collection)
      ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
      : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
  }

  /**
   * Invokes the method at `path` of each element in `collection`, returning
   * an array of the results of each invoked method. Any additional arguments
   * are provided to each invoked method. If `path` is a function, it's invoked
   * for, and `this` bound to, each element in `collection`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Array|Function|string} path The path of the method to invoke or
   *  the function invoked per iteration.
   * @param {...*} [args] The arguments to invoke each method with.
   * @returns {Array} Returns the array of results.
   * @example
   *
   * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
   * // => [[1, 5, 7], [1, 2, 3]]
   *
   * _.invokeMap([123, 456], String.prototype.split, '');
   * // => [['1', '2', '3'], ['4', '5', '6']]
   */
  var invokeMap = baseRest(function(collection, path, args) {
    var index = -1,
        isFunc = typeof path == 'function',
        result = isArrayLike(collection) ? Array(collection.length) : [];

    baseEach(collection, function(value) {
      result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
    });
    return result;
  });

  /**
   * Creates an object composed of keys generated from the results of running
   * each element of `collection` thru `iteratee`. The corresponding value of
   * each key is the last element responsible for generating the key. The
   * iteratee is invoked with one argument: (value).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
   * @returns {Object} Returns the composed aggregate object.
   * @example
   *
   * var array = [
   *   { 'dir': 'left', 'code': 97 },
   *   { 'dir': 'right', 'code': 100 }
   * ];
   *
   * _.keyBy(array, function(o) {
   *   return String.fromCharCode(o.code);
   * });
   * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
   *
   * _.keyBy(array, 'dir');
   * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
   */
  var keyBy = createAggregator(function(result, value, key) {
    baseAssignValue(result, key, value);
  });

  /**
   * Creates an array of values by running each element in `collection` thru
   * `iteratee`. The iteratee is invoked with three arguments:
   * (value, index|key, collection).
   *
   * Many lodash methods are guarded to work as iteratees for methods like
   * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
   *
   * The guarded methods are:
   * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
   * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
   * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
   * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @returns {Array} Returns the new mapped array.
   * @example
   *
   * function square(n) {
   *   return n * n;
   * }
   *
   * _.map([4, 8], square);
   * // => [16, 64]
   *
   * _.map({ 'a': 4, 'b': 8 }, square);
   * // => [16, 64] (iteration order is not guaranteed)
   *
   * var users = [
   *   { 'user': 'barney' },
   *   { 'user': 'fred' }
   * ];
   *
   * // The `_.property` iteratee shorthand.
   * _.map(users, 'user');
   * // => ['barney', 'fred']
   */
  function map(collection, iteratee) {
    var func = isArray(collection) ? arrayMap : baseMap;
    return func(collection, getIteratee(iteratee, 3));
  }

  /**
   * This method is like `_.sortBy` except that it allows specifying the sort
   * orders of the iteratees to sort by. If `orders` is unspecified, all values
   * are sorted in ascending order. Otherwise, specify an order of "desc" for
   * descending or "asc" for ascending sort order of corresponding values.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
   *  The iteratees to sort by.
   * @param {string[]} [orders] The sort orders of `iteratees`.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
   * @returns {Array} Returns the new sorted array.
   * @example
   *
   * var users = [
   *   { 'user': 'fred',   'age': 48 },
   *   { 'user': 'barney', 'age': 34 },
   *   { 'user': 'fred',   'age': 40 },
   *   { 'user': 'barney', 'age': 36 }
   * ];
   *
   * // Sort by `user` in ascending order and by `age` in descending order.
   * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
   * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
   */
  function orderBy(collection, iteratees, orders, guard) {
    if (collection == null) {
      return [];
    }
    if (!isArray(iteratees)) {
      iteratees = iteratees == null ? [] : [iteratees];
    }
    orders = guard ? undefined : orders;
    if (!isArray(orders)) {
      orders = orders == null ? [] : [orders];
    }
    return baseOrderBy(collection, iteratees, orders);
  }

  /**
   * Creates an array of elements split into two groups, the first of which
   * contains elements `predicate` returns truthy for, the second of which
   * contains elements `predicate` returns falsey for. The predicate is
   * invoked with one argument: (value).
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @returns {Array} Returns the array of grouped elements.
   * @example
   *
   * var users = [
   *   { 'user': 'barney',  'age': 36, 'active': false },
   *   { 'user': 'fred',    'age': 40, 'active': true },
   *   { 'user': 'pebbles', 'age': 1,  'active': false }
   * ];
   *
   * _.partition(users, function(o) { return o.active; });
   * // => objects for [['fred'], ['barney', 'pebbles']]
   *
   * // The `_.matches` iteratee shorthand.
   * _.partition(users, { 'age': 1, 'active': false });
   * // => objects for [['pebbles'], ['barney', 'fred']]
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.partition(users, ['active', false]);
   * // => objects for [['barney', 'pebbles'], ['fred']]
   *
   * // The `_.property` iteratee shorthand.
   * _.partition(users, 'active');
   * // => objects for [['fred'], ['barney', 'pebbles']]
   */
  var partition = createAggregator(function(result, value, key) {
    result[key ? 0 : 1].push(value);
  }, function() { return [[], []]; });

  /**
   * Reduces `collection` to a value which is the accumulated result of running
   * each element in `collection` thru `iteratee`, where each successive
   * invocation is supplied the return value of the previous. If `accumulator`
   * is not given, the first element of `collection` is used as the initial
   * value. The iteratee is invoked with four arguments:
   * (accumulator, value, index|key, collection).
   *
   * Many lodash methods are guarded to work as iteratees for methods like
   * `_.reduce`, `_.reduceRight`, and `_.transform`.
   *
   * The guarded methods are:
   * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
   * and `sortBy`
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @param {*} [accumulator] The initial value.
   * @returns {*} Returns the accumulated value.
   * @see _.reduceRight
   * @example
   *
   * _.reduce([1, 2], function(sum, n) {
   *   return sum + n;
   * }, 0);
   * // => 3
   *
   * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
   *   (result[value] || (result[value] = [])).push(key);
   *   return result;
   * }, {});
   * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
   */
  function reduce(collection, iteratee, accumulator) {
    var func = isArray(collection) ? arrayReduce : baseReduce,
        initAccum = arguments.length < 3;

    return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);
  }

  /**
   * This method is like `_.reduce` except that it iterates over elements of
   * `collection` from right to left.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @param {*} [accumulator] The initial value.
   * @returns {*} Returns the accumulated value.
   * @see _.reduce
   * @example
   *
   * var array = [[0, 1], [2, 3], [4, 5]];
   *
   * _.reduceRight(array, function(flattened, other) {
   *   return flattened.concat(other);
   * }, []);
   * // => [4, 5, 2, 3, 0, 1]
   */
  function reduceRight(collection, iteratee, accumulator) {
    var func = isArray(collection) ? arrayReduceRight : baseReduce,
        initAccum = arguments.length < 3;

    return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
  }

  /**
   * The opposite of `_.filter`; this method returns the elements of `collection`
   * that `predicate` does **not** return truthy for.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @returns {Array} Returns the new filtered array.
   * @see _.filter
   * @example
   *
   * var users = [
   *   { 'user': 'barney', 'age': 36, 'active': false },
   *   { 'user': 'fred',   'age': 40, 'active': true }
   * ];
   *
   * _.reject(users, function(o) { return !o.active; });
   * // => objects for ['fred']
   *
   * // The `_.matches` iteratee shorthand.
   * _.reject(users, { 'age': 40, 'active': true });
   * // => objects for ['barney']
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.reject(users, ['active', false]);
   * // => objects for ['fred']
   *
   * // The `_.property` iteratee shorthand.
   * _.reject(users, 'active');
   * // => objects for ['barney']
   */
  function reject(collection, predicate) {
    var func = isArray(collection) ? arrayFilter : baseFilter;
    return func(collection, negate(getIteratee(predicate, 3)));
  }

  /**
   * Gets a random element from `collection`.
   *
   * @static
   * @memberOf _
   * @since 2.0.0
   * @category Collection
   * @param {Array|Object} collection The collection to sample.
   * @returns {*} Returns the random element.
   * @example
   *
   * _.sample([1, 2, 3, 4]);
   * // => 2
   */
  function sample(collection) {
    var func = isArray(collection) ? arraySample : baseSample;
    return func(collection);
  }

  /**
   * Gets `n` random elements at unique keys from `collection` up to the
   * size of `collection`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Collection
   * @param {Array|Object} collection The collection to sample.
   * @param {number} [n=1] The number of elements to sample.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {Array} Returns the random elements.
   * @example
   *
   * _.sampleSize([1, 2, 3], 2);
   * // => [3, 1]
   *
   * _.sampleSize([1, 2, 3], 4);
   * // => [2, 3, 1]
   */
  function sampleSize(collection, n, guard) {
    if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
      n = 1;
    } else {
      n = toInteger(n);
    }
    var func = isArray(collection) ? arraySampleSize : baseSampleSize;
    return func(collection, n);
  }

  /**
   * Creates an array of shuffled values, using a version of the
   * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object} collection The collection to shuffle.
   * @returns {Array} Returns the new shuffled array.
   * @example
   *
   * _.shuffle([1, 2, 3, 4]);
   * // => [4, 1, 3, 2]
   */
  function shuffle(collection) {
    var func = isArray(collection) ? arrayShuffle : baseShuffle;
    return func(collection);
  }

  /**
   * Gets the size of `collection` by returning its length for array-like
   * values or the number of own enumerable string keyed properties for objects.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object|string} collection The collection to inspect.
   * @returns {number} Returns the collection size.
   * @example
   *
   * _.size([1, 2, 3]);
   * // => 3
   *
   * _.size({ 'a': 1, 'b': 2 });
   * // => 2
   *
   * _.size('pebbles');
   * // => 7
   */
  function size(collection) {
    if (collection == null) {
      return 0;
    }
    if (isArrayLike(collection)) {
      return isString(collection) ? stringSize(collection) : collection.length;
    }
    var tag = getTag(collection);
    if (tag == mapTag || tag == setTag) {
      return collection.size;
    }
    return baseKeys(collection).length;
  }

  /**
   * Checks if `predicate` returns truthy for **any** element of `collection`.
   * Iteration is stopped once `predicate` returns truthy. The predicate is
   * invoked with three arguments: (value, index|key, collection).
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {boolean} Returns `true` if any element passes the predicate check,
   *  else `false`.
   * @example
   *
   * _.some([null, 0, 'yes', false], Boolean);
   * // => true
   *
   * var users = [
   *   { 'user': 'barney', 'active': true },
   *   { 'user': 'fred',   'active': false }
   * ];
   *
   * // The `_.matches` iteratee shorthand.
   * _.some(users, { 'user': 'barney', 'active': false });
   * // => false
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.some(users, ['active', false]);
   * // => true
   *
   * // The `_.property` iteratee shorthand.
   * _.some(users, 'active');
   * // => true
   */
  function some(collection, predicate, guard) {
    var func = isArray(collection) ? arraySome : baseSome;
    if (guard && isIterateeCall(collection, predicate, guard)) {
      predicate = undefined;
    }
    return func(collection, getIteratee(predicate, 3));
  }

  /**
   * Creates an array of elements, sorted in ascending order by the results of
   * running each element in a collection thru each iteratee. This method
   * performs a stable sort, that is, it preserves the original sort order of
   * equal elements. The iteratees are invoked with one argument: (value).
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Collection
   * @param {Array|Object} collection The collection to iterate over.
   * @param {...(Function|Function[])} [iteratees=[_.identity]]
   *  The iteratees to sort by.
   * @returns {Array} Returns the new sorted array.
   * @example
   *
   * var users = [
   *   { 'user': 'fred',   'age': 48 },
   *   { 'user': 'barney', 'age': 36 },
   *   { 'user': 'fred',   'age': 40 },
   *   { 'user': 'barney', 'age': 34 }
   * ];
   *
   * _.sortBy(users, [function(o) { return o.user; }]);
   * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
   *
   * _.sortBy(users, ['user', 'age']);
   * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
   */
  var sortBy = baseRest(function(collection, iteratees) {
    if (collection == null) {
      return [];
    }
    var length = iteratees.length;
    if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
      iteratees = [];
    } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
      iteratees = [iteratees[0]];
    }
    return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
  });

  /*------------------------------------------------------------------------*/

  /**
   * Gets the timestamp of the number of milliseconds that have elapsed since
   * the Unix epoch (1 January 1970 00:00:00 UTC).
   *
   * @static
   * @memberOf _
   * @since 2.4.0
   * @category Date
   * @returns {number} Returns the timestamp.
   * @example
   *
   * _.defer(function(stamp) {
   *   console.log(_.now() - stamp);
   * }, _.now());
   * // => Logs the number of milliseconds it took for the deferred invocation.
   */
  var now = ctxNow || function() {
    return root.Date.now();
  };

  /*------------------------------------------------------------------------*/

  /**
   * The opposite of `_.before`; this method creates a function that invokes
   * `func` once it's called `n` or more times.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {number} n The number of calls before `func` is invoked.
   * @param {Function} func The function to restrict.
   * @returns {Function} Returns the new restricted function.
   * @example
   *
   * var saves = ['profile', 'settings'];
   *
   * var done = _.after(saves.length, function() {
   *   console.log('done saving!');
   * });
   *
   * _.forEach(saves, function(type) {
   *   asyncSave({ 'type': type, 'complete': done });
   * });
   * // => Logs 'done saving!' after the two async saves have completed.
   */
  function after(n, func) {
    if (typeof func != 'function') {
      throw new TypeError(FUNC_ERROR_TEXT);
    }
    n = toInteger(n);
    return function() {
      if (--n < 1) {
        return func.apply(this, arguments);
      }
    };
  }

  /**
   * Creates a function that invokes `func`, with up to `n` arguments,
   * ignoring any additional arguments.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Function
   * @param {Function} func The function to cap arguments for.
   * @param {number} [n=func.length] The arity cap.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {Function} Returns the new capped function.
   * @example
   *
   * _.map(['6', '8', '10'], _.ary(parseInt, 1));
   * // => [6, 8, 10]
   */
  function ary(func, n, guard) {
    n = guard ? undefined : n;
    n = (func && n == null) ? func.length : n;
    return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
  }

  /**
   * Creates a function that invokes `func`, with the `this` binding and arguments
   * of the created function, while it's called less than `n` times. Subsequent
   * calls to the created function return the result of the last `func` invocation.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Function
   * @param {number} n The number of calls at which `func` is no longer invoked.
   * @param {Function} func The function to restrict.
   * @returns {Function} Returns the new restricted function.
   * @example
   *
   * jQuery(element).on('click', _.before(5, addContactToList));
   * // => Allows adding up to 4 contacts to the list.
   */
  function before(n, func) {
    var result;
    if (typeof func != 'function') {
      throw new TypeError(FUNC_ERROR_TEXT);
    }
    n = toInteger(n);
    return function() {
      if (--n > 0) {
        result = func.apply(this, arguments);
      }
      if (n <= 1) {
        func = undefined;
      }
      return result;
    };
  }

  /**
   * Creates a function that invokes `func` with the `this` binding of `thisArg`
   * and `partials` prepended to the arguments it receives.
   *
   * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
   * may be used as a placeholder for partially applied arguments.
   *
   * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
   * property of bound functions.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {Function} func The function to bind.
   * @param {*} thisArg The `this` binding of `func`.
   * @param {...*} [partials] The arguments to be partially applied.
   * @returns {Function} Returns the new bound function.
   * @example
   *
   * function greet(greeting, punctuation) {
   *   return greeting + ' ' + this.user + punctuation;
   * }
   *
   * var object = { 'user': 'fred' };
   *
   * var bound = _.bind(greet, object, 'hi');
   * bound('!');
   * // => 'hi fred!'
   *
   * // Bound with placeholders.
   * var bound = _.bind(greet, object, _, '!');
   * bound('hi');
   * // => 'hi fred!'
   */
  var bind = baseRest(function(func, thisArg, partials) {
    var bitmask = WRAP_BIND_FLAG;
    if (partials.length) {
      var holders = replaceHolders(partials, getHolder(bind));
      bitmask |= WRAP_PARTIAL_FLAG;
    }
    return createWrap(func, bitmask, thisArg, partials, holders);
  });

  /**
   * Creates a function that invokes the method at `object[key]` with `partials`
   * prepended to the arguments it receives.
   *
   * This method differs from `_.bind` by allowing bound functions to reference
   * methods that may be redefined or don't yet exist. See
   * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
   * for more details.
   *
   * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
   * builds, may be used as a placeholder for partially applied arguments.
   *
   * @static
   * @memberOf _
   * @since 0.10.0
   * @category Function
   * @param {Object} object The object to invoke the method on.
   * @param {string} key The key of the method.
   * @param {...*} [partials] The arguments to be partially applied.
   * @returns {Function} Returns the new bound function.
   * @example
   *
   * var object = {
   *   'user': 'fred',
   *   'greet': function(greeting, punctuation) {
   *     return greeting + ' ' + this.user + punctuation;
   *   }
   * };
   *
   * var bound = _.bindKey(object, 'greet', 'hi');
   * bound('!');
   * // => 'hi fred!'
   *
   * object.greet = function(greeting, punctuation) {
   *   return greeting + 'ya ' + this.user + punctuation;
   * };
   *
   * bound('!');
   * // => 'hiya fred!'
   *
   * // Bound with placeholders.
   * var bound = _.bindKey(object, 'greet', _, '!');
   * bound('hi');
   * // => 'hiya fred!'
   */
  var bindKey = baseRest(function(object, key, partials) {
    var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
    if (partials.length) {
      var holders = replaceHolders(partials, getHolder(bindKey));
      bitmask |= WRAP_PARTIAL_FLAG;
    }
    return createWrap(key, bitmask, object, partials, holders);
  });

  /**
   * Creates a function that accepts arguments of `func` and either invokes
   * `func` returning its result, if at least `arity` number of arguments have
   * been provided, or returns a function that accepts the remaining `func`
   * arguments, and so on. The arity of `func` may be specified if `func.length`
   * is not sufficient.
   *
   * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
   * may be used as a placeholder for provided arguments.
   *
   * **Note:** This method doesn't set the "length" property of curried functions.
   *
   * @static
   * @memberOf _
   * @since 2.0.0
   * @category Function
   * @param {Function} func The function to curry.
   * @param {number} [arity=func.length] The arity of `func`.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {Function} Returns the new curried function.
   * @example
   *
   * var abc = function(a, b, c) {
   *   return [a, b, c];
   * };
   *
   * var curried = _.curry(abc);
   *
   * curried(1)(2)(3);
   * // => [1, 2, 3]
   *
   * curried(1, 2)(3);
   * // => [1, 2, 3]
   *
   * curried(1, 2, 3);
   * // => [1, 2, 3]
   *
   * // Curried with placeholders.
   * curried(1)(_, 3)(2);
   * // => [1, 2, 3]
   */
  function curry(func, arity, guard) {
    arity = guard ? undefined : arity;
    var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
    result.placeholder = curry.placeholder;
    return result;
  }

  /**
   * This method is like `_.curry` except that arguments are applied to `func`
   * in the manner of `_.partialRight` instead of `_.partial`.
   *
   * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
   * builds, may be used as a placeholder for provided arguments.
   *
   * **Note:** This method doesn't set the "length" property of curried functions.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Function
   * @param {Function} func The function to curry.
   * @param {number} [arity=func.length] The arity of `func`.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {Function} Returns the new curried function.
   * @example
   *
   * var abc = function(a, b, c) {
   *   return [a, b, c];
   * };
   *
   * var curried = _.curryRight(abc);
   *
   * curried(3)(2)(1);
   * // => [1, 2, 3]
   *
   * curried(2, 3)(1);
   * // => [1, 2, 3]
   *
   * curried(1, 2, 3);
   * // => [1, 2, 3]
   *
   * // Curried with placeholders.
   * curried(3)(1, _)(2);
   * // => [1, 2, 3]
   */
  function curryRight(func, arity, guard) {
    arity = guard ? undefined : arity;
    var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
    result.placeholder = curryRight.placeholder;
    return result;
  }

  /**
   * Creates a debounced function that delays invoking `func` until after `wait`
   * milliseconds have elapsed since the last time the debounced function was
   * invoked. The debounced function comes with a `cancel` method to cancel
   * delayed `func` invocations and a `flush` method to immediately invoke them.
   * Provide `options` to indicate whether `func` should be invoked on the
   * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
   * with the last arguments provided to the debounced function. Subsequent
   * calls to the debounced function return the result of the last `func`
   * invocation.
   *
   * **Note:** If `leading` and `trailing` options are `true`, `func` is
   * invoked on the trailing edge of the timeout only if the debounced function
   * is invoked more than once during the `wait` timeout.
   *
   * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
   * until to the next tick, similar to `setTimeout` with a timeout of `0`.
   *
   * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
   * for details over the differences between `_.debounce` and `_.throttle`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {Function} func The function to debounce.
   * @param {number} [wait=0] The number of milliseconds to delay.
   * @param {Object} [options={}] The options object.
   * @param {boolean} [options.leading=false]
   *  Specify invoking on the leading edge of the timeout.
   * @param {number} [options.maxWait]
   *  The maximum time `func` is allowed to be delayed before it's invoked.
   * @param {boolean} [options.trailing=true]
   *  Specify invoking on the trailing edge of the timeout.
   * @returns {Function} Returns the new debounced function.
   * @example
   *
   * // Avoid costly calculations while the window size is in flux.
   * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
   *
   * // Invoke `sendMail` when clicked, debouncing subsequent calls.
   * jQuery(element).on('click', _.debounce(sendMail, 300, {
   *   'leading': true,
   *   'trailing': false
   * }));
   *
   * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
   * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
   * var source = new EventSource('/stream');
   * jQuery(source).on('message', debounced);
   *
   * // Cancel the trailing debounced invocation.
   * jQuery(window).on('popstate', debounced.cancel);
   */
  function debounce(func, wait, options) {
    var lastArgs,
        lastThis,
        maxWait,
        result,
        timerId,
        lastCallTime,
        lastInvokeTime = 0,
        leading = false,
        maxing = false,
        trailing = true;

    if (typeof func != 'function') {
      throw new TypeError(FUNC_ERROR_TEXT);
    }
    wait = toNumber(wait) || 0;
    if (isObject(options)) {
      leading = !!options.leading;
      maxing = 'maxWait' in options;
      maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
      trailing = 'trailing' in options ? !!options.trailing : trailing;
    }

    function invokeFunc(time) {
      var args = lastArgs,
          thisArg = lastThis;

      lastArgs = lastThis = undefined;
      lastInvokeTime = time;
      result = func.apply(thisArg, args);
      return result;
    }

    function leadingEdge(time) {
      // Reset any `maxWait` timer.
      lastInvokeTime = time;
      // Start the timer for the trailing edge.
      timerId = setTimeout(timerExpired, wait);
      // Invoke the leading edge.
      return leading ? invokeFunc(time) : result;
    }

    function remainingWait(time) {
      var timeSinceLastCall = time - lastCallTime,
          timeSinceLastInvoke = time - lastInvokeTime,
          timeWaiting = wait - timeSinceLastCall;

      return maxing
        ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
        : timeWaiting;
    }

    function shouldInvoke(time) {
      var timeSinceLastCall = time - lastCallTime,
          timeSinceLastInvoke = time - lastInvokeTime;

      // Either this is the first call, activity has stopped and we're at the
      // trailing edge, the system time has gone backwards and we're treating
      // it as the trailing edge, or we've hit the `maxWait` limit.
      return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
        (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
    }

    function timerExpired() {
      var time = now();
      if (shouldInvoke(time)) {
        return trailingEdge(time);
      }
      // Restart the timer.
      timerId = setTimeout(timerExpired, remainingWait(time));
    }

    function trailingEdge(time) {
      timerId = undefined;

      // Only invoke if we have `lastArgs` which means `func` has been
      // debounced at least once.
      if (trailing && lastArgs) {
        return invokeFunc(time);
      }
      lastArgs = lastThis = undefined;
      return result;
    }

    function cancel() {
      if (timerId !== undefined) {
        clearTimeout(timerId);
      }
      lastInvokeTime = 0;
      lastArgs = lastCallTime = lastThis = timerId = undefined;
    }

    function flush() {
      return timerId === undefined ? result : trailingEdge(now());
    }

    function debounced() {
      var time = now(),
          isInvoking = shouldInvoke(time);

      lastArgs = arguments;
      lastThis = this;
      lastCallTime = time;

      if (isInvoking) {
        if (timerId === undefined) {
          return leadingEdge(lastCallTime);
        }
        if (maxing) {
          // Handle invocations in a tight loop.
          timerId = setTimeout(timerExpired, wait);
          return invokeFunc(lastCallTime);
        }
      }
      if (timerId === undefined) {
        timerId = setTimeout(timerExpired, wait);
      }
      return result;
    }
    debounced.cancel = cancel;
    debounced.flush = flush;
    return debounced;
  }

  /**
   * Defers invoking the `func` until the current call stack has cleared. Any
   * additional arguments are provided to `func` when it's invoked.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {Function} func The function to defer.
   * @param {...*} [args] The arguments to invoke `func` with.
   * @returns {number} Returns the timer id.
   * @example
   *
   * _.defer(function(text) {
   *   console.log(text);
   * }, 'deferred');
   * // => Logs 'deferred' after one millisecond.
   */
  var defer = baseRest(function(func, args) {
    return baseDelay(func, 1, args);
  });

  /**
   * Invokes `func` after `wait` milliseconds. Any additional arguments are
   * provided to `func` when it's invoked.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {Function} func The function to delay.
   * @param {number} wait The number of milliseconds to delay invocation.
   * @param {...*} [args] The arguments to invoke `func` with.
   * @returns {number} Returns the timer id.
   * @example
   *
   * _.delay(function(text) {
   *   console.log(text);
   * }, 1000, 'later');
   * // => Logs 'later' after one second.
   */
  var delay = baseRest(function(func, wait, args) {
    return baseDelay(func, toNumber(wait) || 0, args);
  });

  /**
   * Creates a function that invokes `func` with arguments reversed.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Function
   * @param {Function} func The function to flip arguments for.
   * @returns {Function} Returns the new flipped function.
   * @example
   *
   * var flipped = _.flip(function() {
   *   return _.toArray(arguments);
   * });
   *
   * flipped('a', 'b', 'c', 'd');
   * // => ['d', 'c', 'b', 'a']
   */
  function flip(func) {
    return createWrap(func, WRAP_FLIP_FLAG);
  }

  /**
   * Creates a function that memoizes the result of `func`. If `resolver` is
   * provided, it determines the cache key for storing the result based on the
   * arguments provided to the memoized function. By default, the first argument
   * provided to the memoized function is used as the map cache key. The `func`
   * is invoked with the `this` binding of the memoized function.
   *
   * **Note:** The cache is exposed as the `cache` property on the memoized
   * function. Its creation may be customized by replacing the `_.memoize.Cache`
   * constructor with one whose instances implement the
   * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
   * method interface of `clear`, `delete`, `get`, `has`, and `set`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {Function} func The function to have its output memoized.
   * @param {Function} [resolver] The function to resolve the cache key.
   * @returns {Function} Returns the new memoized function.
   * @example
   *
   * var object = { 'a': 1, 'b': 2 };
   * var other = { 'c': 3, 'd': 4 };
   *
   * var values = _.memoize(_.values);
   * values(object);
   * // => [1, 2]
   *
   * values(other);
   * // => [3, 4]
   *
   * object.a = 2;
   * values(object);
   * // => [1, 2]
   *
   * // Modify the result cache.
   * values.cache.set(object, ['a', 'b']);
   * values(object);
   * // => ['a', 'b']
   *
   * // Replace `_.memoize.Cache`.
   * _.memoize.Cache = WeakMap;
   */
  function memoize(func, resolver) {
    if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
      throw new TypeError(FUNC_ERROR_TEXT);
    }
    var memoized = function() {
      var args = arguments,
          key = resolver ? resolver.apply(this, args) : args[0],
          cache = memoized.cache;

      if (cache.has(key)) {
        return cache.get(key);
      }
      var result = func.apply(this, args);
      memoized.cache = cache.set(key, result) || cache;
      return result;
    };
    memoized.cache = new (memoize.Cache || MapCache);
    return memoized;
  }

  // Expose `MapCache`.
  memoize.Cache = MapCache;

  /**
   * Creates a function that negates the result of the predicate `func`. The
   * `func` predicate is invoked with the `this` binding and arguments of the
   * created function.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Function
   * @param {Function} predicate The predicate to negate.
   * @returns {Function} Returns the new negated function.
   * @example
   *
   * function isEven(n) {
   *   return n % 2 == 0;
   * }
   *
   * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
   * // => [1, 3, 5]
   */
  function negate(predicate) {
    if (typeof predicate != 'function') {
      throw new TypeError(FUNC_ERROR_TEXT);
    }
    return function() {
      var args = arguments;
      switch (args.length) {
        case 0: return !predicate.call(this);
        case 1: return !predicate.call(this, args[0]);
        case 2: return !predicate.call(this, args[0], args[1]);
        case 3: return !predicate.call(this, args[0], args[1], args[2]);
      }
      return !predicate.apply(this, args);
    };
  }

  /**
   * Creates a function that is restricted to invoking `func` once. Repeat calls
   * to the function return the value of the first invocation. The `func` is
   * invoked with the `this` binding and arguments of the created function.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {Function} func The function to restrict.
   * @returns {Function} Returns the new restricted function.
   * @example
   *
   * var initialize = _.once(createApplication);
   * initialize();
   * initialize();
   * // => `createApplication` is invoked once
   */
  function once(func) {
    return before(2, func);
  }

  /**
   * Creates a function that invokes `func` with its arguments transformed.
   *
   * @static
   * @since 4.0.0
   * @memberOf _
   * @category Function
   * @param {Function} func The function to wrap.
   * @param {...(Function|Function[])} [transforms=[_.identity]]
   *  The argument transforms.
   * @returns {Function} Returns the new function.
   * @example
   *
   * function doubled(n) {
   *   return n * 2;
   * }
   *
   * function square(n) {
   *   return n * n;
   * }
   *
   * var func = _.overArgs(function(x, y) {
   *   return [x, y];
   * }, [square, doubled]);
   *
   * func(9, 3);
   * // => [81, 6]
   *
   * func(10, 5);
   * // => [100, 10]
   */
  var overArgs = castRest(function(func, transforms) {
    transforms = (transforms.length == 1 && isArray(transforms[0]))
      ? arrayMap(transforms[0], baseUnary(getIteratee()))
      : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));

    var funcsLength = transforms.length;
    return baseRest(function(args) {
      var index = -1,
          length = nativeMin(args.length, funcsLength);

      while (++index < length) {
        args[index] = transforms[index].call(this, args[index]);
      }
      return apply(func, this, args);
    });
  });

  /**
   * Creates a function that invokes `func` with `partials` prepended to the
   * arguments it receives. This method is like `_.bind` except it does **not**
   * alter the `this` binding.
   *
   * The `_.partial.placeholder` value, which defaults to `_` in monolithic
   * builds, may be used as a placeholder for partially applied arguments.
   *
   * **Note:** This method doesn't set the "length" property of partially
   * applied functions.
   *
   * @static
   * @memberOf _
   * @since 0.2.0
   * @category Function
   * @param {Function} func The function to partially apply arguments to.
   * @param {...*} [partials] The arguments to be partially applied.
   * @returns {Function} Returns the new partially applied function.
   * @example
   *
   * function greet(greeting, name) {
   *   return greeting + ' ' + name;
   * }
   *
   * var sayHelloTo = _.partial(greet, 'hello');
   * sayHelloTo('fred');
   * // => 'hello fred'
   *
   * // Partially applied with placeholders.
   * var greetFred = _.partial(greet, _, 'fred');
   * greetFred('hi');
   * // => 'hi fred'
   */
  var partial = baseRest(function(func, partials) {
    var holders = replaceHolders(partials, getHolder(partial));
    return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
  });

  /**
   * This method is like `_.partial` except that partially applied arguments
   * are appended to the arguments it receives.
   *
   * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
   * builds, may be used as a placeholder for partially applied arguments.
   *
   * **Note:** This method doesn't set the "length" property of partially
   * applied functions.
   *
   * @static
   * @memberOf _
   * @since 1.0.0
   * @category Function
   * @param {Function} func The function to partially apply arguments to.
   * @param {...*} [partials] The arguments to be partially applied.
   * @returns {Function} Returns the new partially applied function.
   * @example
   *
   * function greet(greeting, name) {
   *   return greeting + ' ' + name;
   * }
   *
   * var greetFred = _.partialRight(greet, 'fred');
   * greetFred('hi');
   * // => 'hi fred'
   *
   * // Partially applied with placeholders.
   * var sayHelloTo = _.partialRight(greet, 'hello', _);
   * sayHelloTo('fred');
   * // => 'hello fred'
   */
  var partialRight = baseRest(function(func, partials) {
    var holders = replaceHolders(partials, getHolder(partialRight));
    return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
  });

  /**
   * Creates a function that invokes `func` with arguments arranged according
   * to the specified `indexes` where the argument value at the first index is
   * provided as the first argument, the argument value at the second index is
   * provided as the second argument, and so on.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Function
   * @param {Function} func The function to rearrange arguments for.
   * @param {...(number|number[])} indexes The arranged argument indexes.
   * @returns {Function} Returns the new function.
   * @example
   *
   * var rearged = _.rearg(function(a, b, c) {
   *   return [a, b, c];
   * }, [2, 0, 1]);
   *
   * rearged('b', 'c', 'a')
   * // => ['a', 'b', 'c']
   */
  var rearg = flatRest(function(func, indexes) {
    return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
  });

  /**
   * Creates a function that invokes `func` with the `this` binding of the
   * created function and arguments from `start` and beyond provided as
   * an array.
   *
   * **Note:** This method is based on the
   * [rest parameter](https://mdn.io/rest_parameters).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Function
   * @param {Function} func The function to apply a rest parameter to.
   * @param {number} [start=func.length-1] The start position of the rest parameter.
   * @returns {Function} Returns the new function.
   * @example
   *
   * var say = _.rest(function(what, names) {
   *   return what + ' ' + _.initial(names).join(', ') +
   *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
   * });
   *
   * say('hello', 'fred', 'barney', 'pebbles');
   * // => 'hello fred, barney, & pebbles'
   */
  function rest(func, start) {
    if (typeof func != 'function') {
      throw new TypeError(FUNC_ERROR_TEXT);
    }
    start = start === undefined ? start : toInteger(start);
    return baseRest(func, start);
  }

  /**
   * Creates a function that invokes `func` with the `this` binding of the
   * create function and an array of arguments much like
   * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
   *
   * **Note:** This method is based on the
   * [spread operator](https://mdn.io/spread_operator).
   *
   * @static
   * @memberOf _
   * @since 3.2.0
   * @category Function
   * @param {Function} func The function to spread arguments over.
   * @param {number} [start=0] The start position of the spread.
   * @returns {Function} Returns the new function.
   * @example
   *
   * var say = _.spread(function(who, what) {
   *   return who + ' says ' + what;
   * });
   *
   * say(['fred', 'hello']);
   * // => 'fred says hello'
   *
   * var numbers = Promise.all([
   *   Promise.resolve(40),
   *   Promise.resolve(36)
   * ]);
   *
   * numbers.then(_.spread(function(x, y) {
   *   return x + y;
   * }));
   * // => a Promise of 76
   */
  function spread(func, start) {
    if (typeof func != 'function') {
      throw new TypeError(FUNC_ERROR_TEXT);
    }
    start = start == null ? 0 : nativeMax(toInteger(start), 0);
    return baseRest(function(args) {
      var array = args[start],
          otherArgs = castSlice(args, 0, start);

      if (array) {
        arrayPush(otherArgs, array);
      }
      return apply(func, this, otherArgs);
    });
  }

  /**
   * Creates a throttled function that only invokes `func` at most once per
   * every `wait` milliseconds. The throttled function comes with a `cancel`
   * method to cancel delayed `func` invocations and a `flush` method to
   * immediately invoke them. Provide `options` to indicate whether `func`
   * should be invoked on the leading and/or trailing edge of the `wait`
   * timeout. The `func` is invoked with the last arguments provided to the
   * throttled function. Subsequent calls to the throttled function return the
   * result of the last `func` invocation.
   *
   * **Note:** If `leading` and `trailing` options are `true`, `func` is
   * invoked on the trailing edge of the timeout only if the throttled function
   * is invoked more than once during the `wait` timeout.
   *
   * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
   * until to the next tick, similar to `setTimeout` with a timeout of `0`.
   *
   * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
   * for details over the differences between `_.throttle` and `_.debounce`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {Function} func The function to throttle.
   * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
   * @param {Object} [options={}] The options object.
   * @param {boolean} [options.leading=true]
   *  Specify invoking on the leading edge of the timeout.
   * @param {boolean} [options.trailing=true]
   *  Specify invoking on the trailing edge of the timeout.
   * @returns {Function} Returns the new throttled function.
   * @example
   *
   * // Avoid excessively updating the position while scrolling.
   * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
   *
   * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
   * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
   * jQuery(element).on('click', throttled);
   *
   * // Cancel the trailing throttled invocation.
   * jQuery(window).on('popstate', throttled.cancel);
   */
  function throttle(func, wait, options) {
    var leading = true,
        trailing = true;

    if (typeof func != 'function') {
      throw new TypeError(FUNC_ERROR_TEXT);
    }
    if (isObject(options)) {
      leading = 'leading' in options ? !!options.leading : leading;
      trailing = 'trailing' in options ? !!options.trailing : trailing;
    }
    return debounce(func, wait, {
      'leading': leading,
      'maxWait': wait,
      'trailing': trailing
    });
  }

  /**
   * Creates a function that accepts up to one argument, ignoring any
   * additional arguments.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Function
   * @param {Function} func The function to cap arguments for.
   * @returns {Function} Returns the new capped function.
   * @example
   *
   * _.map(['6', '8', '10'], _.unary(parseInt));
   * // => [6, 8, 10]
   */
  function unary(func) {
    return ary(func, 1);
  }

  /**
   * Creates a function that provides `value` to `wrapper` as its first
   * argument. Any additional arguments provided to the function are appended
   * to those provided to the `wrapper`. The wrapper is invoked with the `this`
   * binding of the created function.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Function
   * @param {*} value The value to wrap.
   * @param {Function} [wrapper=identity] The wrapper function.
   * @returns {Function} Returns the new function.
   * @example
   *
   * var p = _.wrap(_.escape, function(func, text) {
   *   return '<p>' + func(text) + '</p>';
   * });
   *
   * p('fred, barney, & pebbles');
   * // => '<p>fred, barney, &amp; pebbles</p>'
   */
  function wrap(value, wrapper) {
    return partial(castFunction(wrapper), value);
  }

  /*------------------------------------------------------------------------*/

  /**
   * Casts `value` as an array if it's not one.
   *
   * @static
   * @memberOf _
   * @since 4.4.0
   * @category Lang
   * @param {*} value The value to inspect.
   * @returns {Array} Returns the cast array.
   * @example
   *
   * _.castArray(1);
   * // => [1]
   *
   * _.castArray({ 'a': 1 });
   * // => [{ 'a': 1 }]
   *
   * _.castArray('abc');
   * // => ['abc']
   *
   * _.castArray(null);
   * // => [null]
   *
   * _.castArray(undefined);
   * // => [undefined]
   *
   * _.castArray();
   * // => []
   *
   * var array = [1, 2, 3];
   * console.log(_.castArray(array) === array);
   * // => true
   */
  function castArray() {
    if (!arguments.length) {
      return [];
    }
    var value = arguments[0];
    return isArray(value) ? value : [value];
  }

  /**
   * Creates a shallow clone of `value`.
   *
   * **Note:** This method is loosely based on the
   * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
   * and supports cloning arrays, array buffers, booleans, date objects, maps,
   * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
   * arrays. The own enumerable properties of `arguments` objects are cloned
   * as plain objects. An empty object is returned for uncloneable values such
   * as error objects, functions, DOM nodes, and WeakMaps.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to clone.
   * @returns {*} Returns the cloned value.
   * @see _.cloneDeep
   * @example
   *
   * var objects = [{ 'a': 1 }, { 'b': 2 }];
   *
   * var shallow = _.clone(objects);
   * console.log(shallow[0] === objects[0]);
   * // => true
   */
  function clone(value) {
    return baseClone(value, CLONE_SYMBOLS_FLAG);
  }

  /**
   * This method is like `_.clone` except that it accepts `customizer` which
   * is invoked to produce the cloned value. If `customizer` returns `undefined`,
   * cloning is handled by the method instead. The `customizer` is invoked with
   * up to four arguments; (value [, index|key, object, stack]).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to clone.
   * @param {Function} [customizer] The function to customize cloning.
   * @returns {*} Returns the cloned value.
   * @see _.cloneDeepWith
   * @example
   *
   * function customizer(value) {
   *   if (_.isElement(value)) {
   *     return value.cloneNode(false);
   *   }
   * }
   *
   * var el = _.cloneWith(document.body, customizer);
   *
   * console.log(el === document.body);
   * // => false
   * console.log(el.nodeName);
   * // => 'BODY'
   * console.log(el.childNodes.length);
   * // => 0
   */
  function cloneWith(value, customizer) {
    customizer = typeof customizer == 'function' ? customizer : undefined;
    return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
  }

  /**
   * This method is like `_.clone` except that it recursively clones `value`.
   *
   * @static
   * @memberOf _
   * @since 1.0.0
   * @category Lang
   * @param {*} value The value to recursively clone.
   * @returns {*} Returns the deep cloned value.
   * @see _.clone
   * @example
   *
   * var objects = [{ 'a': 1 }, { 'b': 2 }];
   *
   * var deep = _.cloneDeep(objects);
   * console.log(deep[0] === objects[0]);
   * // => false
   */
  function cloneDeep(value) {
    return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
  }

  /**
   * This method is like `_.cloneWith` except that it recursively clones `value`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to recursively clone.
   * @param {Function} [customizer] The function to customize cloning.
   * @returns {*} Returns the deep cloned value.
   * @see _.cloneWith
   * @example
   *
   * function customizer(value) {
   *   if (_.isElement(value)) {
   *     return value.cloneNode(true);
   *   }
   * }
   *
   * var el = _.cloneDeepWith(document.body, customizer);
   *
   * console.log(el === document.body);
   * // => false
   * console.log(el.nodeName);
   * // => 'BODY'
   * console.log(el.childNodes.length);
   * // => 20
   */
  function cloneDeepWith(value, customizer) {
    customizer = typeof customizer == 'function' ? customizer : undefined;
    return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
  }

  /**
   * Checks if `object` conforms to `source` by invoking the predicate
   * properties of `source` with the corresponding property values of `object`.
   *
   * **Note:** This method is equivalent to `_.conforms` when `source` is
   * partially applied.
   *
   * @static
   * @memberOf _
   * @since 4.14.0
   * @category Lang
   * @param {Object} object The object to inspect.
   * @param {Object} source The object of property predicates to conform to.
   * @returns {boolean} Returns `true` if `object` conforms, else `false`.
   * @example
   *
   * var object = { 'a': 1, 'b': 2 };
   *
   * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
   * // => true
   *
   * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
   * // => false
   */
  function conformsTo(object, source) {
    return source == null || baseConformsTo(object, source, keys(source));
  }

  /**
   * Performs a
   * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
   * comparison between two values to determine if they are equivalent.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to compare.
   * @param {*} other The other value to compare.
   * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
   * @example
   *
   * var object = { 'a': 1 };
   * var other = { 'a': 1 };
   *
   * _.eq(object, object);
   * // => true
   *
   * _.eq(object, other);
   * // => false
   *
   * _.eq('a', 'a');
   * // => true
   *
   * _.eq('a', Object('a'));
   * // => false
   *
   * _.eq(NaN, NaN);
   * // => true
   */
  function eq(value, other) {
    return value === other || (value !== value && other !== other);
  }

  /**
   * Checks if `value` is greater than `other`.
   *
   * @static
   * @memberOf _
   * @since 3.9.0
   * @category Lang
   * @param {*} value The value to compare.
   * @param {*} other The other value to compare.
   * @returns {boolean} Returns `true` if `value` is greater than `other`,
   *  else `false`.
   * @see _.lt
   * @example
   *
   * _.gt(3, 1);
   * // => true
   *
   * _.gt(3, 3);
   * // => false
   *
   * _.gt(1, 3);
   * // => false
   */
  var gt = createRelationalOperation(baseGt);

  /**
   * Checks if `value` is greater than or equal to `other`.
   *
   * @static
   * @memberOf _
   * @since 3.9.0
   * @category Lang
   * @param {*} value The value to compare.
   * @param {*} other The other value to compare.
   * @returns {boolean} Returns `true` if `value` is greater than or equal to
   *  `other`, else `false`.
   * @see _.lte
   * @example
   *
   * _.gte(3, 1);
   * // => true
   *
   * _.gte(3, 3);
   * // => true
   *
   * _.gte(1, 3);
   * // => false
   */
  var gte = createRelationalOperation(function(value, other) {
    return value >= other;
  });

  /**
   * Checks if `value` is likely an `arguments` object.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is an `arguments` object,
   *  else `false`.
   * @example
   *
   * _.isArguments(function() { return arguments; }());
   * // => true
   *
   * _.isArguments([1, 2, 3]);
   * // => false
   */
  var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
    return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
      !propertyIsEnumerable.call(value, 'callee');
  };

  /**
   * Checks if `value` is classified as an `Array` object.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is an array, else `false`.
   * @example
   *
   * _.isArray([1, 2, 3]);
   * // => true
   *
   * _.isArray(document.body.children);
   * // => false
   *
   * _.isArray('abc');
   * // => false
   *
   * _.isArray(_.noop);
   * // => false
   */
  var isArray = Array.isArray;

  /**
   * Checks if `value` is classified as an `ArrayBuffer` object.
   *
   * @static
   * @memberOf _
   * @since 4.3.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
   * @example
   *
   * _.isArrayBuffer(new ArrayBuffer(2));
   * // => true
   *
   * _.isArrayBuffer(new Array(2));
   * // => false
   */
  var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;

  /**
   * Checks if `value` is array-like. A value is considered array-like if it's
   * not a function and has a `value.length` that's an integer greater than or
   * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
   * @example
   *
   * _.isArrayLike([1, 2, 3]);
   * // => true
   *
   * _.isArrayLike(document.body.children);
   * // => true
   *
   * _.isArrayLike('abc');
   * // => true
   *
   * _.isArrayLike(_.noop);
   * // => false
   */
  function isArrayLike(value) {
    return value != null && isLength(value.length) && !isFunction(value);
  }

  /**
   * This method is like `_.isArrayLike` except that it also checks if `value`
   * is an object.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is an array-like object,
   *  else `false`.
   * @example
   *
   * _.isArrayLikeObject([1, 2, 3]);
   * // => true
   *
   * _.isArrayLikeObject(document.body.children);
   * // => true
   *
   * _.isArrayLikeObject('abc');
   * // => false
   *
   * _.isArrayLikeObject(_.noop);
   * // => false
   */
  function isArrayLikeObject(value) {
    return isObjectLike(value) && isArrayLike(value);
  }

  /**
   * Checks if `value` is classified as a boolean primitive or object.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
   * @example
   *
   * _.isBoolean(false);
   * // => true
   *
   * _.isBoolean(null);
   * // => false
   */
  function isBoolean(value) {
    return value === true || value === false ||
      (isObjectLike(value) && baseGetTag(value) == boolTag);
  }

  /**
   * Checks if `value` is a buffer.
   *
   * @static
   * @memberOf _
   * @since 4.3.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
   * @example
   *
   * _.isBuffer(new Buffer(2));
   * // => true
   *
   * _.isBuffer(new Uint8Array(2));
   * // => false
   */
  var isBuffer = nativeIsBuffer || stubFalse;

  /**
   * Checks if `value` is classified as a `Date` object.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
   * @example
   *
   * _.isDate(new Date);
   * // => true
   *
   * _.isDate('Mon April 23 2012');
   * // => false
   */
  var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;

  /**
   * Checks if `value` is likely a DOM element.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
   * @example
   *
   * _.isElement(document.body);
   * // => true
   *
   * _.isElement('<body>');
   * // => false
   */
  function isElement(value) {
    return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
  }

  /**
   * Checks if `value` is an empty object, collection, map, or set.
   *
   * Objects are considered empty if they have no own enumerable string keyed
   * properties.
   *
   * Array-like values such as `arguments` objects, arrays, buffers, strings, or
   * jQuery-like collections are considered empty if they have a `length` of `0`.
   * Similarly, maps and sets are considered empty if they have a `size` of `0`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is empty, else `false`.
   * @example
   *
   * _.isEmpty(null);
   * // => true
   *
   * _.isEmpty(true);
   * // => true
   *
   * _.isEmpty(1);
   * // => true
   *
   * _.isEmpty([1, 2, 3]);
   * // => false
   *
   * _.isEmpty({ 'a': 1 });
   * // => false
   */
  function isEmpty(value) {
    if (value == null) {
      return true;
    }
    if (isArrayLike(value) &&
        (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
          isBuffer(value) || isTypedArray(value) || isArguments(value))) {
      return !value.length;
    }
    var tag = getTag(value);
    if (tag == mapTag || tag == setTag) {
      return !value.size;
    }
    if (isPrototype(value)) {
      return !baseKeys(value).length;
    }
    for (var key in value) {
      if (hasOwnProperty.call(value, key)) {
        return false;
      }
    }
    return true;
  }

  /**
   * Performs a deep comparison between two values to determine if they are
   * equivalent.
   *
   * **Note:** This method supports comparing arrays, array buffers, booleans,
   * date objects, error objects, maps, numbers, `Object` objects, regexes,
   * sets, strings, symbols, and typed arrays. `Object` objects are compared
   * by their own, not inherited, enumerable properties. Functions and DOM
   * nodes are compared by strict equality, i.e. `===`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to compare.
   * @param {*} other The other value to compare.
   * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
   * @example
   *
   * var object = { 'a': 1 };
   * var other = { 'a': 1 };
   *
   * _.isEqual(object, other);
   * // => true
   *
   * object === other;
   * // => false
   */
  function isEqual(value, other) {
    return baseIsEqual(value, other);
  }

  /**
   * This method is like `_.isEqual` except that it accepts `customizer` which
   * is invoked to compare values. If `customizer` returns `undefined`, comparisons
   * are handled by the method instead. The `customizer` is invoked with up to
   * six arguments: (objValue, othValue [, index|key, object, other, stack]).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to compare.
   * @param {*} other The other value to compare.
   * @param {Function} [customizer] The function to customize comparisons.
   * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
   * @example
   *
   * function isGreeting(value) {
   *   return /^h(?:i|ello)$/.test(value);
   * }
   *
   * function customizer(objValue, othValue) {
   *   if (isGreeting(objValue) && isGreeting(othValue)) {
   *     return true;
   *   }
   * }
   *
   * var array = ['hello', 'goodbye'];
   * var other = ['hi', 'goodbye'];
   *
   * _.isEqualWith(array, other, customizer);
   * // => true
   */
  function isEqualWith(value, other, customizer) {
    customizer = typeof customizer == 'function' ? customizer : undefined;
    var result = customizer ? customizer(value, other) : undefined;
    return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
  }

  /**
   * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
   * `SyntaxError`, `TypeError`, or `URIError` object.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
   * @example
   *
   * _.isError(new Error);
   * // => true
   *
   * _.isError(Error);
   * // => false
   */
  function isError(value) {
    if (!isObjectLike(value)) {
      return false;
    }
    var tag = baseGetTag(value);
    return tag == errorTag || tag == domExcTag ||
      (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
  }

  /**
   * Checks if `value` is a finite primitive number.
   *
   * **Note:** This method is based on
   * [`Number.isFinite`](https://mdn.io/Number/isFinite).
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
   * @example
   *
   * _.isFinite(3);
   * // => true
   *
   * _.isFinite(Number.MIN_VALUE);
   * // => true
   *
   * _.isFinite(Infinity);
   * // => false
   *
   * _.isFinite('3');
   * // => false
   */
  function isFinite(value) {
    return typeof value == 'number' && nativeIsFinite(value);
  }

  /**
   * Checks if `value` is classified as a `Function` object.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a function, else `false`.
   * @example
   *
   * _.isFunction(_);
   * // => true
   *
   * _.isFunction(/abc/);
   * // => false
   */
  function isFunction(value) {
    if (!isObject(value)) {
      return false;
    }
    // The use of `Object#toString` avoids issues with the `typeof` operator
    // in Safari 9 which returns 'object' for typed arrays and other constructors.
    var tag = baseGetTag(value);
    return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
  }

  /**
   * Checks if `value` is an integer.
   *
   * **Note:** This method is based on
   * [`Number.isInteger`](https://mdn.io/Number/isInteger).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
   * @example
   *
   * _.isInteger(3);
   * // => true
   *
   * _.isInteger(Number.MIN_VALUE);
   * // => false
   *
   * _.isInteger(Infinity);
   * // => false
   *
   * _.isInteger('3');
   * // => false
   */
  function isInteger(value) {
    return typeof value == 'number' && value == toInteger(value);
  }

  /**
   * Checks if `value` is a valid array-like length.
   *
   * **Note:** This method is loosely based on
   * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
   * @example
   *
   * _.isLength(3);
   * // => true
   *
   * _.isLength(Number.MIN_VALUE);
   * // => false
   *
   * _.isLength(Infinity);
   * // => false
   *
   * _.isLength('3');
   * // => false
   */
  function isLength(value) {
    return typeof value == 'number' &&
      value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
  }

  /**
   * Checks if `value` is the
   * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
   * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is an object, else `false`.
   * @example
   *
   * _.isObject({});
   * // => true
   *
   * _.isObject([1, 2, 3]);
   * // => true
   *
   * _.isObject(_.noop);
   * // => true
   *
   * _.isObject(null);
   * // => false
   */
  function isObject(value) {
    var type = typeof value;
    return value != null && (type == 'object' || type == 'function');
  }

  /**
   * Checks if `value` is object-like. A value is object-like if it's not `null`
   * and has a `typeof` result of "object".
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
   * @example
   *
   * _.isObjectLike({});
   * // => true
   *
   * _.isObjectLike([1, 2, 3]);
   * // => true
   *
   * _.isObjectLike(_.noop);
   * // => false
   *
   * _.isObjectLike(null);
   * // => false
   */
  function isObjectLike(value) {
    return value != null && typeof value == 'object';
  }

  /**
   * Checks if `value` is classified as a `Map` object.
   *
   * @static
   * @memberOf _
   * @since 4.3.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a map, else `false`.
   * @example
   *
   * _.isMap(new Map);
   * // => true
   *
   * _.isMap(new WeakMap);
   * // => false
   */
  var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;

  /**
   * Performs a partial deep comparison between `object` and `source` to
   * determine if `object` contains equivalent property values.
   *
   * **Note:** This method is equivalent to `_.matches` when `source` is
   * partially applied.
   *
   * Partial comparisons will match empty array and empty object `source`
   * values against any array or object value, respectively. See `_.isEqual`
   * for a list of supported value comparisons.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Lang
   * @param {Object} object The object to inspect.
   * @param {Object} source The object of property values to match.
   * @returns {boolean} Returns `true` if `object` is a match, else `false`.
   * @example
   *
   * var object = { 'a': 1, 'b': 2 };
   *
   * _.isMatch(object, { 'b': 2 });
   * // => true
   *
   * _.isMatch(object, { 'b': 1 });
   * // => false
   */
  function isMatch(object, source) {
    return object === source || baseIsMatch(object, source, getMatchData(source));
  }

  /**
   * This method is like `_.isMatch` except that it accepts `customizer` which
   * is invoked to compare values. If `customizer` returns `undefined`, comparisons
   * are handled by the method instead. The `customizer` is invoked with five
   * arguments: (objValue, srcValue, index|key, object, source).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {Object} object The object to inspect.
   * @param {Object} source The object of property values to match.
   * @param {Function} [customizer] The function to customize comparisons.
   * @returns {boolean} Returns `true` if `object` is a match, else `false`.
   * @example
   *
   * function isGreeting(value) {
   *   return /^h(?:i|ello)$/.test(value);
   * }
   *
   * function customizer(objValue, srcValue) {
   *   if (isGreeting(objValue) && isGreeting(srcValue)) {
   *     return true;
   *   }
   * }
   *
   * var object = { 'greeting': 'hello' };
   * var source = { 'greeting': 'hi' };
   *
   * _.isMatchWith(object, source, customizer);
   * // => true
   */
  function isMatchWith(object, source, customizer) {
    customizer = typeof customizer == 'function' ? customizer : undefined;
    return baseIsMatch(object, source, getMatchData(source), customizer);
  }

  /**
   * Checks if `value` is `NaN`.
   *
   * **Note:** This method is based on
   * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
   * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
   * `undefined` and other non-number values.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
   * @example
   *
   * _.isNaN(NaN);
   * // => true
   *
   * _.isNaN(new Number(NaN));
   * // => true
   *
   * isNaN(undefined);
   * // => true
   *
   * _.isNaN(undefined);
   * // => false
   */
  function isNaN(value) {
    // An `NaN` primitive is the only value that is not equal to itself.
    // Perform the `toStringTag` check first to avoid errors with some
    // ActiveX objects in IE.
    return isNumber(value) && value != +value;
  }

  /**
   * Checks if `value` is a pristine native function.
   *
   * **Note:** This method can't reliably detect native functions in the presence
   * of the core-js package because core-js circumvents this kind of detection.
   * Despite multiple requests, the core-js maintainer has made it clear: any
   * attempt to fix the detection will be obstructed. As a result, we're left
   * with little choice but to throw an error. Unfortunately, this also affects
   * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
   * which rely on core-js.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a native function,
   *  else `false`.
   * @example
   *
   * _.isNative(Array.prototype.push);
   * // => true
   *
   * _.isNative(_);
   * // => false
   */
  function isNative(value) {
    if (isMaskable(value)) {
      throw new Error(CORE_ERROR_TEXT);
    }
    return baseIsNative(value);
  }

  /**
   * Checks if `value` is `null`.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
   * @example
   *
   * _.isNull(null);
   * // => true
   *
   * _.isNull(void 0);
   * // => false
   */
  function isNull(value) {
    return value === null;
  }

  /**
   * Checks if `value` is `null` or `undefined`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
   * @example
   *
   * _.isNil(null);
   * // => true
   *
   * _.isNil(void 0);
   * // => true
   *
   * _.isNil(NaN);
   * // => false
   */
  function isNil(value) {
    return value == null;
  }

  /**
   * Checks if `value` is classified as a `Number` primitive or object.
   *
   * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
   * classified as numbers, use the `_.isFinite` method.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a number, else `false`.
   * @example
   *
   * _.isNumber(3);
   * // => true
   *
   * _.isNumber(Number.MIN_VALUE);
   * // => true
   *
   * _.isNumber(Infinity);
   * // => true
   *
   * _.isNumber('3');
   * // => false
   */
  function isNumber(value) {
    return typeof value == 'number' ||
      (isObjectLike(value) && baseGetTag(value) == numberTag);
  }

  /**
   * Checks if `value` is a plain object, that is, an object created by the
   * `Object` constructor or one with a `[[Prototype]]` of `null`.
   *
   * @static
   * @memberOf _
   * @since 0.8.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   * }
   *
   * _.isPlainObject(new Foo);
   * // => false
   *
   * _.isPlainObject([1, 2, 3]);
   * // => false
   *
   * _.isPlainObject({ 'x': 0, 'y': 0 });
   * // => true
   *
   * _.isPlainObject(Object.create(null));
   * // => true
   */
  function isPlainObject(value) {
    if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
      return false;
    }
    var proto = getPrototype(value);
    if (proto === null) {
      return true;
    }
    var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
    return typeof Ctor == 'function' && Ctor instanceof Ctor &&
      funcToString.call(Ctor) == objectCtorString;
  }

  /**
   * Checks if `value` is classified as a `RegExp` object.
   *
   * @static
   * @memberOf _
   * @since 0.1.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
   * @example
   *
   * _.isRegExp(/abc/);
   * // => true
   *
   * _.isRegExp('/abc/');
   * // => false
   */
  var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;

  /**
   * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
   * double precision number which isn't the result of a rounded unsafe integer.
   *
   * **Note:** This method is based on
   * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
   * @example
   *
   * _.isSafeInteger(3);
   * // => true
   *
   * _.isSafeInteger(Number.MIN_VALUE);
   * // => false
   *
   * _.isSafeInteger(Infinity);
   * // => false
   *
   * _.isSafeInteger('3');
   * // => false
   */
  function isSafeInteger(value) {
    return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
  }

  /**
   * Checks if `value` is classified as a `Set` object.
   *
   * @static
   * @memberOf _
   * @since 4.3.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a set, else `false`.
   * @example
   *
   * _.isSet(new Set);
   * // => true
   *
   * _.isSet(new WeakSet);
   * // => false
   */
  var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;

  /**
   * Checks if `value` is classified as a `String` primitive or object.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a string, else `false`.
   * @example
   *
   * _.isString('abc');
   * // => true
   *
   * _.isString(1);
   * // => false
   */
  function isString(value) {
    return typeof value == 'string' ||
      (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
  }

  /**
   * Checks if `value` is classified as a `Symbol` primitive or object.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
   * @example
   *
   * _.isSymbol(Symbol.iterator);
   * // => true
   *
   * _.isSymbol('abc');
   * // => false
   */
  function isSymbol(value) {
    return typeof value == 'symbol' ||
      (isObjectLike(value) && baseGetTag(value) == symbolTag);
  }

  /**
   * Checks if `value` is classified as a typed array.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
   * @example
   *
   * _.isTypedArray(new Uint8Array);
   * // => true
   *
   * _.isTypedArray([]);
   * // => false
   */
  var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;

  /**
   * Checks if `value` is `undefined`.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
   * @example
   *
   * _.isUndefined(void 0);
   * // => true
   *
   * _.isUndefined(null);
   * // => false
   */
  function isUndefined(value) {
    return value === undefined;
  }

  /**
   * Checks if `value` is classified as a `WeakMap` object.
   *
   * @static
   * @memberOf _
   * @since 4.3.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
   * @example
   *
   * _.isWeakMap(new WeakMap);
   * // => true
   *
   * _.isWeakMap(new Map);
   * // => false
   */
  function isWeakMap(value) {
    return isObjectLike(value) && getTag(value) == weakMapTag;
  }

  /**
   * Checks if `value` is classified as a `WeakSet` object.
   *
   * @static
   * @memberOf _
   * @since 4.3.0
   * @category Lang
   * @param {*} value The value to check.
   * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
   * @example
   *
   * _.isWeakSet(new WeakSet);
   * // => true
   *
   * _.isWeakSet(new Set);
   * // => false
   */
  function isWeakSet(value) {
    return isObjectLike(value) && baseGetTag(value) == weakSetTag;
  }

  /**
   * Checks if `value` is less than `other`.
   *
   * @static
   * @memberOf _
   * @since 3.9.0
   * @category Lang
   * @param {*} value The value to compare.
   * @param {*} other The other value to compare.
   * @returns {boolean} Returns `true` if `value` is less than `other`,
   *  else `false`.
   * @see _.gt
   * @example
   *
   * _.lt(1, 3);
   * // => true
   *
   * _.lt(3, 3);
   * // => false
   *
   * _.lt(3, 1);
   * // => false
   */
  var lt = createRelationalOperation(baseLt);

  /**
   * Checks if `value` is less than or equal to `other`.
   *
   * @static
   * @memberOf _
   * @since 3.9.0
   * @category Lang
   * @param {*} value The value to compare.
   * @param {*} other The other value to compare.
   * @returns {boolean} Returns `true` if `value` is less than or equal to
   *  `other`, else `false`.
   * @see _.gte
   * @example
   *
   * _.lte(1, 3);
   * // => true
   *
   * _.lte(3, 3);
   * // => true
   *
   * _.lte(3, 1);
   * // => false
   */
  var lte = createRelationalOperation(function(value, other) {
    return value <= other;
  });

  /**
   * Converts `value` to an array.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Lang
   * @param {*} value The value to convert.
   * @returns {Array} Returns the converted array.
   * @example
   *
   * _.toArray({ 'a': 1, 'b': 2 });
   * // => [1, 2]
   *
   * _.toArray('abc');
   * // => ['a', 'b', 'c']
   *
   * _.toArray(1);
   * // => []
   *
   * _.toArray(null);
   * // => []
   */
  function toArray(value) {
    if (!value) {
      return [];
    }
    if (isArrayLike(value)) {
      return isString(value) ? stringToArray(value) : copyArray(value);
    }
    if (symIterator && value[symIterator]) {
      return iteratorToArray(value[symIterator]());
    }
    var tag = getTag(value),
        func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);

    return func(value);
  }

  /**
   * Converts `value` to a finite number.
   *
   * @static
   * @memberOf _
   * @since 4.12.0
   * @category Lang
   * @param {*} value The value to convert.
   * @returns {number} Returns the converted number.
   * @example
   *
   * _.toFinite(3.2);
   * // => 3.2
   *
   * _.toFinite(Number.MIN_VALUE);
   * // => 5e-324
   *
   * _.toFinite(Infinity);
   * // => 1.7976931348623157e+308
   *
   * _.toFinite('3.2');
   * // => 3.2
   */
  function toFinite(value) {
    if (!value) {
      return value === 0 ? value : 0;
    }
    value = toNumber(value);
    if (value === INFINITY || value === -INFINITY) {
      var sign = (value < 0 ? -1 : 1);
      return sign * MAX_INTEGER;
    }
    return value === value ? value : 0;
  }

  /**
   * Converts `value` to an integer.
   *
   * **Note:** This method is loosely based on
   * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to convert.
   * @returns {number} Returns the converted integer.
   * @example
   *
   * _.toInteger(3.2);
   * // => 3
   *
   * _.toInteger(Number.MIN_VALUE);
   * // => 0
   *
   * _.toInteger(Infinity);
   * // => 1.7976931348623157e+308
   *
   * _.toInteger('3.2');
   * // => 3
   */
  function toInteger(value) {
    var result = toFinite(value),
        remainder = result % 1;

    return result === result ? (remainder ? result - remainder : result) : 0;
  }

  /**
   * Converts `value` to an integer suitable for use as the length of an
   * array-like object.
   *
   * **Note:** This method is based on
   * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to convert.
   * @returns {number} Returns the converted integer.
   * @example
   *
   * _.toLength(3.2);
   * // => 3
   *
   * _.toLength(Number.MIN_VALUE);
   * // => 0
   *
   * _.toLength(Infinity);
   * // => 4294967295
   *
   * _.toLength('3.2');
   * // => 3
   */
  function toLength(value) {
    return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
  }

  /**
   * Converts `value` to a number.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to process.
   * @returns {number} Returns the number.
   * @example
   *
   * _.toNumber(3.2);
   * // => 3.2
   *
   * _.toNumber(Number.MIN_VALUE);
   * // => 5e-324
   *
   * _.toNumber(Infinity);
   * // => Infinity
   *
   * _.toNumber('3.2');
   * // => 3.2
   */
  function toNumber(value) {
    if (typeof value == 'number') {
      return value;
    }
    if (isSymbol(value)) {
      return NAN;
    }
    if (isObject(value)) {
      var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
      value = isObject(other) ? (other + '') : other;
    }
    if (typeof value != 'string') {
      return value === 0 ? value : +value;
    }
    value = value.replace(reTrim, '');
    var isBinary = reIsBinary.test(value);
    return (isBinary || reIsOctal.test(value))
      ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
      : (reIsBadHex.test(value) ? NAN : +value);
  }

  /**
   * Converts `value` to a plain object flattening inherited enumerable string
   * keyed properties of `value` to own properties of the plain object.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Lang
   * @param {*} value The value to convert.
   * @returns {Object} Returns the converted plain object.
   * @example
   *
   * function Foo() {
   *   this.b = 2;
   * }
   *
   * Foo.prototype.c = 3;
   *
   * _.assign({ 'a': 1 }, new Foo);
   * // => { 'a': 1, 'b': 2 }
   *
   * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
   * // => { 'a': 1, 'b': 2, 'c': 3 }
   */
  function toPlainObject(value) {
    return copyObject(value, keysIn(value));
  }

  /**
   * Converts `value` to a safe integer. A safe integer can be compared and
   * represented correctly.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to convert.
   * @returns {number} Returns the converted integer.
   * @example
   *
   * _.toSafeInteger(3.2);
   * // => 3
   *
   * _.toSafeInteger(Number.MIN_VALUE);
   * // => 0
   *
   * _.toSafeInteger(Infinity);
   * // => 9007199254740991
   *
   * _.toSafeInteger('3.2');
   * // => 3
   */
  function toSafeInteger(value) {
    return value
      ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
      : (value === 0 ? value : 0);
  }

  /**
   * Converts `value` to a string. An empty string is returned for `null`
   * and `undefined` values. The sign of `-0` is preserved.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Lang
   * @param {*} value The value to convert.
   * @returns {string} Returns the converted string.
   * @example
   *
   * _.toString(null);
   * // => ''
   *
   * _.toString(-0);
   * // => '-0'
   *
   * _.toString([1, 2, 3]);
   * // => '1,2,3'
   */
  function toString(value) {
    return value == null ? '' : baseToString(value);
  }

  /*------------------------------------------------------------------------*/

  /**
   * Assigns own enumerable string keyed properties of source objects to the
   * destination object. Source objects are applied from left to right.
   * Subsequent sources overwrite property assignments of previous sources.
   *
   * **Note:** This method mutates `object` and is loosely based on
   * [`Object.assign`](https://mdn.io/Object/assign).
   *
   * @static
   * @memberOf _
   * @since 0.10.0
   * @category Object
   * @param {Object} object The destination object.
   * @param {...Object} [sources] The source objects.
   * @returns {Object} Returns `object`.
   * @see _.assignIn
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   * }
   *
   * function Bar() {
   *   this.c = 3;
   * }
   *
   * Foo.prototype.b = 2;
   * Bar.prototype.d = 4;
   *
   * _.assign({ 'a': 0 }, new Foo, new Bar);
   * // => { 'a': 1, 'c': 3 }
   */
  var assign = createAssigner(function(object, source) {
    if (isPrototype(source) || isArrayLike(source)) {
      copyObject(source, keys(source), object);
      return;
    }
    for (var key in source) {
      if (hasOwnProperty.call(source, key)) {
        assignValue(object, key, source[key]);
      }
    }
  });

  /**
   * This method is like `_.assign` except that it iterates over own and
   * inherited source properties.
   *
   * **Note:** This method mutates `object`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @alias extend
   * @category Object
   * @param {Object} object The destination object.
   * @param {...Object} [sources] The source objects.
   * @returns {Object} Returns `object`.
   * @see _.assign
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   * }
   *
   * function Bar() {
   *   this.c = 3;
   * }
   *
   * Foo.prototype.b = 2;
   * Bar.prototype.d = 4;
   *
   * _.assignIn({ 'a': 0 }, new Foo, new Bar);
   * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
   */
  var assignIn = createAssigner(function(object, source) {
    copyObject(source, keysIn(source), object);
  });

  /**
   * This method is like `_.assignIn` except that it accepts `customizer`
   * which is invoked to produce the assigned values. If `customizer` returns
   * `undefined`, assignment is handled by the method instead. The `customizer`
   * is invoked with five arguments: (objValue, srcValue, key, object, source).
   *
   * **Note:** This method mutates `object`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @alias extendWith
   * @category Object
   * @param {Object} object The destination object.
   * @param {...Object} sources The source objects.
   * @param {Function} [customizer] The function to customize assigned values.
   * @returns {Object} Returns `object`.
   * @see _.assignWith
   * @example
   *
   * function customizer(objValue, srcValue) {
   *   return _.isUndefined(objValue) ? srcValue : objValue;
   * }
   *
   * var defaults = _.partialRight(_.assignInWith, customizer);
   *
   * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
   * // => { 'a': 1, 'b': 2 }
   */
  var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
    copyObject(source, keysIn(source), object, customizer);
  });

  /**
   * This method is like `_.assign` except that it accepts `customizer`
   * which is invoked to produce the assigned values. If `customizer` returns
   * `undefined`, assignment is handled by the method instead. The `customizer`
   * is invoked with five arguments: (objValue, srcValue, key, object, source).
   *
   * **Note:** This method mutates `object`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Object
   * @param {Object} object The destination object.
   * @param {...Object} sources The source objects.
   * @param {Function} [customizer] The function to customize assigned values.
   * @returns {Object} Returns `object`.
   * @see _.assignInWith
   * @example
   *
   * function customizer(objValue, srcValue) {
   *   return _.isUndefined(objValue) ? srcValue : objValue;
   * }
   *
   * var defaults = _.partialRight(_.assignWith, customizer);
   *
   * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
   * // => { 'a': 1, 'b': 2 }
   */
  var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
    copyObject(source, keys(source), object, customizer);
  });

  /**
   * Creates an array of values corresponding to `paths` of `object`.
   *
   * @static
   * @memberOf _
   * @since 1.0.0
   * @category Object
   * @param {Object} object The object to iterate over.
   * @param {...(string|string[])} [paths] The property paths to pick.
   * @returns {Array} Returns the picked values.
   * @example
   *
   * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
   *
   * _.at(object, ['a[0].b.c', 'a[1]']);
   * // => [3, 4]
   */
  var at = flatRest(baseAt);

  /**
   * Creates an object that inherits from the `prototype` object. If a
   * `properties` object is given, its own enumerable string keyed properties
   * are assigned to the created object.
   *
   * @static
   * @memberOf _
   * @since 2.3.0
   * @category Object
   * @param {Object} prototype The object to inherit from.
   * @param {Object} [properties] The properties to assign to the object.
   * @returns {Object} Returns the new object.
   * @example
   *
   * function Shape() {
   *   this.x = 0;
   *   this.y = 0;
   * }
   *
   * function Circle() {
   *   Shape.call(this);
   * }
   *
   * Circle.prototype = _.create(Shape.prototype, {
   *   'constructor': Circle
   * });
   *
   * var circle = new Circle;
   * circle instanceof Circle;
   * // => true
   *
   * circle instanceof Shape;
   * // => true
   */
  function create(prototype, properties) {
    var result = baseCreate(prototype);
    return properties == null ? result : baseAssign(result, properties);
  }

  /**
   * Assigns own and inherited enumerable string keyed properties of source
   * objects to the destination object for all destination properties that
   * resolve to `undefined`. Source objects are applied from left to right.
   * Once a property is set, additional values of the same property are ignored.
   *
   * **Note:** This method mutates `object`.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Object
   * @param {Object} object The destination object.
   * @param {...Object} [sources] The source objects.
   * @returns {Object} Returns `object`.
   * @see _.defaultsDeep
   * @example
   *
   * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
   * // => { 'a': 1, 'b': 2 }
   */
  var defaults = baseRest(function(object, sources) {
    object = Object(object);

    var index = -1;
    var length = sources.length;
    var guard = length > 2 ? sources[2] : undefined;

    if (guard && isIterateeCall(sources[0], sources[1], guard)) {
      length = 1;
    }

    while (++index < length) {
      var source = sources[index];
      var props = keysIn(source);
      var propsIndex = -1;
      var propsLength = props.length;

      while (++propsIndex < propsLength) {
        var key = props[propsIndex];
        var value = object[key];

        if (value === undefined ||
            (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
          object[key] = source[key];
        }
      }
    }

    return object;
  });

  /**
   * This method is like `_.defaults` except that it recursively assigns
   * default properties.
   *
   * **Note:** This method mutates `object`.
   *
   * @static
   * @memberOf _
   * @since 3.10.0
   * @category Object
   * @param {Object} object The destination object.
   * @param {...Object} [sources] The source objects.
   * @returns {Object} Returns `object`.
   * @see _.defaults
   * @example
   *
   * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
   * // => { 'a': { 'b': 2, 'c': 3 } }
   */
  var defaultsDeep = baseRest(function(args) {
    args.push(undefined, customDefaultsMerge);
    return apply(mergeWith, undefined, args);
  });

  /**
   * This method is like `_.find` except that it returns the key of the first
   * element `predicate` returns truthy for instead of the element itself.
   *
   * @static
   * @memberOf _
   * @since 1.1.0
   * @category Object
   * @param {Object} object The object to inspect.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @returns {string|undefined} Returns the key of the matched element,
   *  else `undefined`.
   * @example
   *
   * var users = {
   *   'barney':  { 'age': 36, 'active': true },
   *   'fred':    { 'age': 40, 'active': false },
   *   'pebbles': { 'age': 1,  'active': true }
   * };
   *
   * _.findKey(users, function(o) { return o.age < 40; });
   * // => 'barney' (iteration order is not guaranteed)
   *
   * // The `_.matches` iteratee shorthand.
   * _.findKey(users, { 'age': 1, 'active': true });
   * // => 'pebbles'
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.findKey(users, ['active', false]);
   * // => 'fred'
   *
   * // The `_.property` iteratee shorthand.
   * _.findKey(users, 'active');
   * // => 'barney'
   */
  function findKey(object, predicate) {
    return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
  }

  /**
   * This method is like `_.findKey` except that it iterates over elements of
   * a collection in the opposite order.
   *
   * @static
   * @memberOf _
   * @since 2.0.0
   * @category Object
   * @param {Object} object The object to inspect.
   * @param {Function} [predicate=_.identity] The function invoked per iteration.
   * @returns {string|undefined} Returns the key of the matched element,
   *  else `undefined`.
   * @example
   *
   * var users = {
   *   'barney':  { 'age': 36, 'active': true },
   *   'fred':    { 'age': 40, 'active': false },
   *   'pebbles': { 'age': 1,  'active': true }
   * };
   *
   * _.findLastKey(users, function(o) { return o.age < 40; });
   * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
   *
   * // The `_.matches` iteratee shorthand.
   * _.findLastKey(users, { 'age': 36, 'active': true });
   * // => 'barney'
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.findLastKey(users, ['active', false]);
   * // => 'fred'
   *
   * // The `_.property` iteratee shorthand.
   * _.findLastKey(users, 'active');
   * // => 'pebbles'
   */
  function findLastKey(object, predicate) {
    return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
  }

  /**
   * Iterates over own and inherited enumerable string keyed properties of an
   * object and invokes `iteratee` for each property. The iteratee is invoked
   * with three arguments: (value, key, object). Iteratee functions may exit
   * iteration early by explicitly returning `false`.
   *
   * @static
   * @memberOf _
   * @since 0.3.0
   * @category Object
   * @param {Object} object The object to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @returns {Object} Returns `object`.
   * @see _.forInRight
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   *   this.b = 2;
   * }
   *
   * Foo.prototype.c = 3;
   *
   * _.forIn(new Foo, function(value, key) {
   *   console.log(key);
   * });
   * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
   */
  function forIn(object, iteratee) {
    return object == null
      ? object
      : baseFor(object, getIteratee(iteratee, 3), keysIn);
  }

  /**
   * This method is like `_.forIn` except that it iterates over properties of
   * `object` in the opposite order.
   *
   * @static
   * @memberOf _
   * @since 2.0.0
   * @category Object
   * @param {Object} object The object to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @returns {Object} Returns `object`.
   * @see _.forIn
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   *   this.b = 2;
   * }
   *
   * Foo.prototype.c = 3;
   *
   * _.forInRight(new Foo, function(value, key) {
   *   console.log(key);
   * });
   * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
   */
  function forInRight(object, iteratee) {
    return object == null
      ? object
      : baseForRight(object, getIteratee(iteratee, 3), keysIn);
  }

  /**
   * Iterates over own enumerable string keyed properties of an object and
   * invokes `iteratee` for each property. The iteratee is invoked with three
   * arguments: (value, key, object). Iteratee functions may exit iteration
   * early by explicitly returning `false`.
   *
   * @static
   * @memberOf _
   * @since 0.3.0
   * @category Object
   * @param {Object} object The object to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @returns {Object} Returns `object`.
   * @see _.forOwnRight
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   *   this.b = 2;
   * }
   *
   * Foo.prototype.c = 3;
   *
   * _.forOwn(new Foo, function(value, key) {
   *   console.log(key);
   * });
   * // => Logs 'a' then 'b' (iteration order is not guaranteed).
   */
  function forOwn(object, iteratee) {
    return object && baseForOwn(object, getIteratee(iteratee, 3));
  }

  /**
   * This method is like `_.forOwn` except that it iterates over properties of
   * `object` in the opposite order.
   *
   * @static
   * @memberOf _
   * @since 2.0.0
   * @category Object
   * @param {Object} object The object to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @returns {Object} Returns `object`.
   * @see _.forOwn
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   *   this.b = 2;
   * }
   *
   * Foo.prototype.c = 3;
   *
   * _.forOwnRight(new Foo, function(value, key) {
   *   console.log(key);
   * });
   * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
   */
  function forOwnRight(object, iteratee) {
    return object && baseForOwnRight(object, getIteratee(iteratee, 3));
  }

  /**
   * Creates an array of function property names from own enumerable properties
   * of `object`.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Object
   * @param {Object} object The object to inspect.
   * @returns {Array} Returns the function names.
   * @see _.functionsIn
   * @example
   *
   * function Foo() {
   *   this.a = _.constant('a');
   *   this.b = _.constant('b');
   * }
   *
   * Foo.prototype.c = _.constant('c');
   *
   * _.functions(new Foo);
   * // => ['a', 'b']
   */
  function functions(object) {
    return object == null ? [] : baseFunctions(object, keys(object));
  }

  /**
   * Creates an array of function property names from own and inherited
   * enumerable properties of `object`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Object
   * @param {Object} object The object to inspect.
   * @returns {Array} Returns the function names.
   * @see _.functions
   * @example
   *
   * function Foo() {
   *   this.a = _.constant('a');
   *   this.b = _.constant('b');
   * }
   *
   * Foo.prototype.c = _.constant('c');
   *
   * _.functionsIn(new Foo);
   * // => ['a', 'b', 'c']
   */
  function functionsIn(object) {
    return object == null ? [] : baseFunctions(object, keysIn(object));
  }

  /**
   * Gets the value at `path` of `object`. If the resolved value is
   * `undefined`, the `defaultValue` is returned in its place.
   *
   * @static
   * @memberOf _
   * @since 3.7.0
   * @category Object
   * @param {Object} object The object to query.
   * @param {Array|string} path The path of the property to get.
   * @param {*} [defaultValue] The value returned for `undefined` resolved values.
   * @returns {*} Returns the resolved value.
   * @example
   *
   * var object = { 'a': [{ 'b': { 'c': 3 } }] };
   *
   * _.get(object, 'a[0].b.c');
   * // => 3
   *
   * _.get(object, ['a', '0', 'b', 'c']);
   * // => 3
   *
   * _.get(object, 'a.b.c', 'default');
   * // => 'default'
   */
  function get(object, path, defaultValue) {
    var result = object == null ? undefined : baseGet(object, path);
    return result === undefined ? defaultValue : result;
  }

  /**
   * Checks if `path` is a direct property of `object`.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Object
   * @param {Object} object The object to query.
   * @param {Array|string} path The path to check.
   * @returns {boolean} Returns `true` if `path` exists, else `false`.
   * @example
   *
   * var object = { 'a': { 'b': 2 } };
   * var other = _.create({ 'a': _.create({ 'b': 2 }) });
   *
   * _.has(object, 'a');
   * // => true
   *
   * _.has(object, 'a.b');
   * // => true
   *
   * _.has(object, ['a', 'b']);
   * // => true
   *
   * _.has(other, 'a');
   * // => false
   */
  function has(object, path) {
    return object != null && hasPath(object, path, baseHas);
  }

  /**
   * Checks if `path` is a direct or inherited property of `object`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Object
   * @param {Object} object The object to query.
   * @param {Array|string} path The path to check.
   * @returns {boolean} Returns `true` if `path` exists, else `false`.
   * @example
   *
   * var object = _.create({ 'a': _.create({ 'b': 2 }) });
   *
   * _.hasIn(object, 'a');
   * // => true
   *
   * _.hasIn(object, 'a.b');
   * // => true
   *
   * _.hasIn(object, ['a', 'b']);
   * // => true
   *
   * _.hasIn(object, 'b');
   * // => false
   */
  function hasIn(object, path) {
    return object != null && hasPath(object, path, baseHasIn);
  }

  /**
   * Creates an object composed of the inverted keys and values of `object`.
   * If `object` contains duplicate values, subsequent values overwrite
   * property assignments of previous values.
   *
   * @static
   * @memberOf _
   * @since 0.7.0
   * @category Object
   * @param {Object} object The object to invert.
   * @returns {Object} Returns the new inverted object.
   * @example
   *
   * var object = { 'a': 1, 'b': 2, 'c': 1 };
   *
   * _.invert(object);
   * // => { '1': 'c', '2': 'b' }
   */
  var invert = createInverter(function(result, value, key) {
    if (value != null &&
        typeof value.toString != 'function') {
      value = nativeObjectToString.call(value);
    }

    result[value] = key;
  }, constant(identity));

  /**
   * This method is like `_.invert` except that the inverted object is generated
   * from the results of running each element of `object` thru `iteratee`. The
   * corresponding inverted value of each inverted key is an array of keys
   * responsible for generating the inverted value. The iteratee is invoked
   * with one argument: (value).
   *
   * @static
   * @memberOf _
   * @since 4.1.0
   * @category Object
   * @param {Object} object The object to invert.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {Object} Returns the new inverted object.
   * @example
   *
   * var object = { 'a': 1, 'b': 2, 'c': 1 };
   *
   * _.invertBy(object);
   * // => { '1': ['a', 'c'], '2': ['b'] }
   *
   * _.invertBy(object, function(value) {
   *   return 'group' + value;
   * });
   * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
   */
  var invertBy = createInverter(function(result, value, key) {
    if (value != null &&
        typeof value.toString != 'function') {
      value = nativeObjectToString.call(value);
    }

    if (hasOwnProperty.call(result, value)) {
      result[value].push(key);
    } else {
      result[value] = [key];
    }
  }, getIteratee);

  /**
   * Invokes the method at `path` of `object`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Object
   * @param {Object} object The object to query.
   * @param {Array|string} path The path of the method to invoke.
   * @param {...*} [args] The arguments to invoke the method with.
   * @returns {*} Returns the result of the invoked method.
   * @example
   *
   * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
   *
   * _.invoke(object, 'a[0].b.c.slice', 1, 3);
   * // => [2, 3]
   */
  var invoke = baseRest(baseInvoke);

  /**
   * Creates an array of the own enumerable property names of `object`.
   *
   * **Note:** Non-object values are coerced to objects. See the
   * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
   * for more details.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Object
   * @param {Object} object The object to query.
   * @returns {Array} Returns the array of property names.
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   *   this.b = 2;
   * }
   *
   * Foo.prototype.c = 3;
   *
   * _.keys(new Foo);
   * // => ['a', 'b'] (iteration order is not guaranteed)
   *
   * _.keys('hi');
   * // => ['0', '1']
   */
  function keys(object) {
    return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
  }

  /**
   * Creates an array of the own and inherited enumerable property names of `object`.
   *
   * **Note:** Non-object values are coerced to objects.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Object
   * @param {Object} object The object to query.
   * @returns {Array} Returns the array of property names.
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   *   this.b = 2;
   * }
   *
   * Foo.prototype.c = 3;
   *
   * _.keysIn(new Foo);
   * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
   */
  function keysIn(object) {
    return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
  }

  /**
   * The opposite of `_.mapValues`; this method creates an object with the
   * same values as `object` and keys generated by running each own enumerable
   * string keyed property of `object` thru `iteratee`. The iteratee is invoked
   * with three arguments: (value, key, object).
   *
   * @static
   * @memberOf _
   * @since 3.8.0
   * @category Object
   * @param {Object} object The object to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @returns {Object} Returns the new mapped object.
   * @see _.mapValues
   * @example
   *
   * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
   *   return key + value;
   * });
   * // => { 'a1': 1, 'b2': 2 }
   */
  function mapKeys(object, iteratee) {
    var result = {};
    iteratee = getIteratee(iteratee, 3);

    baseForOwn(object, function(value, key, object) {
      baseAssignValue(result, iteratee(value, key, object), value);
    });
    return result;
  }

  /**
   * Creates an object with the same keys as `object` and values generated
   * by running each own enumerable string keyed property of `object` thru
   * `iteratee`. The iteratee is invoked with three arguments:
   * (value, key, object).
   *
   * @static
   * @memberOf _
   * @since 2.4.0
   * @category Object
   * @param {Object} object The object to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @returns {Object} Returns the new mapped object.
   * @see _.mapKeys
   * @example
   *
   * var users = {
   *   'fred':    { 'user': 'fred',    'age': 40 },
   *   'pebbles': { 'user': 'pebbles', 'age': 1 }
   * };
   *
   * _.mapValues(users, function(o) { return o.age; });
   * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
   *
   * // The `_.property` iteratee shorthand.
   * _.mapValues(users, 'age');
   * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
   */
  function mapValues(object, iteratee) {
    var result = {};
    iteratee = getIteratee(iteratee, 3);

    baseForOwn(object, function(value, key, object) {
      baseAssignValue(result, key, iteratee(value, key, object));
    });
    return result;
  }

  /**
   * This method is like `_.assign` except that it recursively merges own and
   * inherited enumerable string keyed properties of source objects into the
   * destination object. Source properties that resolve to `undefined` are
   * skipped if a destination value exists. Array and plain object properties
   * are merged recursively. Other objects and value types are overridden by
   * assignment. Source objects are applied from left to right. Subsequent
   * sources overwrite property assignments of previous sources.
   *
   * **Note:** This method mutates `object`.
   *
   * @static
   * @memberOf _
   * @since 0.5.0
   * @category Object
   * @param {Object} object The destination object.
   * @param {...Object} [sources] The source objects.
   * @returns {Object} Returns `object`.
   * @example
   *
   * var object = {
   *   'a': [{ 'b': 2 }, { 'd': 4 }]
   * };
   *
   * var other = {
   *   'a': [{ 'c': 3 }, { 'e': 5 }]
   * };
   *
   * _.merge(object, other);
   * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
   */
  var merge = createAssigner(function(object, source, srcIndex) {
    baseMerge(object, source, srcIndex);
  });

  /**
   * This method is like `_.merge` except that it accepts `customizer` which
   * is invoked to produce the merged values of the destination and source
   * properties. If `customizer` returns `undefined`, merging is handled by the
   * method instead. The `customizer` is invoked with six arguments:
   * (objValue, srcValue, key, object, source, stack).
   *
   * **Note:** This method mutates `object`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Object
   * @param {Object} object The destination object.
   * @param {...Object} sources The source objects.
   * @param {Function} customizer The function to customize assigned values.
   * @returns {Object} Returns `object`.
   * @example
   *
   * function customizer(objValue, srcValue) {
   *   if (_.isArray(objValue)) {
   *     return objValue.concat(srcValue);
   *   }
   * }
   *
   * var object = { 'a': [1], 'b': [2] };
   * var other = { 'a': [3], 'b': [4] };
   *
   * _.mergeWith(object, other, customizer);
   * // => { 'a': [1, 3], 'b': [2, 4] }
   */
  var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
    baseMerge(object, source, srcIndex, customizer);
  });

  /**
   * The opposite of `_.pick`; this method creates an object composed of the
   * own and inherited enumerable property paths of `object` that are not omitted.
   *
   * **Note:** This method is considerably slower than `_.pick`.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Object
   * @param {Object} object The source object.
   * @param {...(string|string[])} [paths] The property paths to omit.
   * @returns {Object} Returns the new object.
   * @example
   *
   * var object = { 'a': 1, 'b': '2', 'c': 3 };
   *
   * _.omit(object, ['a', 'c']);
   * // => { 'b': '2' }
   */
  var omit = flatRest(function(object, paths) {
    var result = {};
    if (object == null) {
      return result;
    }
    var isDeep = false;
    paths = arrayMap(paths, function(path) {
      path = castPath(path, object);
      isDeep || (isDeep = path.length > 1);
      return path;
    });
    copyObject(object, getAllKeysIn(object), result);
    if (isDeep) {
      result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
    }
    var length = paths.length;
    while (length--) {
      baseUnset(result, paths[length]);
    }
    return result;
  });

  /**
   * The opposite of `_.pickBy`; this method creates an object composed of
   * the own and inherited enumerable string keyed properties of `object` that
   * `predicate` doesn't return truthy for. The predicate is invoked with two
   * arguments: (value, key).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Object
   * @param {Object} object The source object.
   * @param {Function} [predicate=_.identity] The function invoked per property.
   * @returns {Object} Returns the new object.
   * @example
   *
   * var object = { 'a': 1, 'b': '2', 'c': 3 };
   *
   * _.omitBy(object, _.isNumber);
   * // => { 'b': '2' }
   */
  function omitBy(object, predicate) {
    return pickBy(object, negate(getIteratee(predicate)));
  }

  /**
   * Creates an object composed of the picked `object` properties.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Object
   * @param {Object} object The source object.
   * @param {...(string|string[])} [paths] The property paths to pick.
   * @returns {Object} Returns the new object.
   * @example
   *
   * var object = { 'a': 1, 'b': '2', 'c': 3 };
   *
   * _.pick(object, ['a', 'c']);
   * // => { 'a': 1, 'c': 3 }
   */
  var pick = flatRest(function(object, paths) {
    return object == null ? {} : basePick(object, paths);
  });

  /**
   * Creates an object composed of the `object` properties `predicate` returns
   * truthy for. The predicate is invoked with two arguments: (value, key).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Object
   * @param {Object} object The source object.
   * @param {Function} [predicate=_.identity] The function invoked per property.
   * @returns {Object} Returns the new object.
   * @example
   *
   * var object = { 'a': 1, 'b': '2', 'c': 3 };
   *
   * _.pickBy(object, _.isNumber);
   * // => { 'a': 1, 'c': 3 }
   */
  function pickBy(object, predicate) {
    if (object == null) {
      return {};
    }
    var props = arrayMap(getAllKeysIn(object), function(prop) {
      return [prop];
    });
    predicate = getIteratee(predicate);
    return basePickBy(object, props, function(value, path) {
      return predicate(value, path[0]);
    });
  }

  /**
   * This method is like `_.get` except that if the resolved value is a
   * function it's invoked with the `this` binding of its parent object and
   * its result is returned.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Object
   * @param {Object} object The object to query.
   * @param {Array|string} path The path of the property to resolve.
   * @param {*} [defaultValue] The value returned for `undefined` resolved values.
   * @returns {*} Returns the resolved value.
   * @example
   *
   * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
   *
   * _.result(object, 'a[0].b.c1');
   * // => 3
   *
   * _.result(object, 'a[0].b.c2');
   * // => 4
   *
   * _.result(object, 'a[0].b.c3', 'default');
   * // => 'default'
   *
   * _.result(object, 'a[0].b.c3', _.constant('default'));
   * // => 'default'
   */
  function result(object, path, defaultValue) {
    path = castPath(path, object);

    var index = -1,
        length = path.length;

    // Ensure the loop is entered when path is empty.
    if (!length) {
      length = 1;
      object = undefined;
    }
    while (++index < length) {
      var value = object == null ? undefined : object[toKey(path[index])];
      if (value === undefined) {
        index = length;
        value = defaultValue;
      }
      object = isFunction(value) ? value.call(object) : value;
    }
    return object;
  }

  /**
   * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
   * it's created. Arrays are created for missing index properties while objects
   * are created for all other missing properties. Use `_.setWith` to customize
   * `path` creation.
   *
   * **Note:** This method mutates `object`.
   *
   * @static
   * @memberOf _
   * @since 3.7.0
   * @category Object
   * @param {Object} object The object to modify.
   * @param {Array|string} path The path of the property to set.
   * @param {*} value The value to set.
   * @returns {Object} Returns `object`.
   * @example
   *
   * var object = { 'a': [{ 'b': { 'c': 3 } }] };
   *
   * _.set(object, 'a[0].b.c', 4);
   * console.log(object.a[0].b.c);
   * // => 4
   *
   * _.set(object, ['x', '0', 'y', 'z'], 5);
   * console.log(object.x[0].y.z);
   * // => 5
   */
  function set(object, path, value) {
    return object == null ? object : baseSet(object, path, value);
  }

  /**
   * This method is like `_.set` except that it accepts `customizer` which is
   * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
   * path creation is handled by the method instead. The `customizer` is invoked
   * with three arguments: (nsValue, key, nsObject).
   *
   * **Note:** This method mutates `object`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Object
   * @param {Object} object The object to modify.
   * @param {Array|string} path The path of the property to set.
   * @param {*} value The value to set.
   * @param {Function} [customizer] The function to customize assigned values.
   * @returns {Object} Returns `object`.
   * @example
   *
   * var object = {};
   *
   * _.setWith(object, '[0][1]', 'a', Object);
   * // => { '0': { '1': 'a' } }
   */
  function setWith(object, path, value, customizer) {
    customizer = typeof customizer == 'function' ? customizer : undefined;
    return object == null ? object : baseSet(object, path, value, customizer);
  }

  /**
   * Creates an array of own enumerable string keyed-value pairs for `object`
   * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
   * entries are returned.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @alias entries
   * @category Object
   * @param {Object} object The object to query.
   * @returns {Array} Returns the key-value pairs.
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   *   this.b = 2;
   * }
   *
   * Foo.prototype.c = 3;
   *
   * _.toPairs(new Foo);
   * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
   */
  var toPairs = createToPairs(keys);

  /**
   * Creates an array of own and inherited enumerable string keyed-value pairs
   * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
   * or set, its entries are returned.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @alias entriesIn
   * @category Object
   * @param {Object} object The object to query.
   * @returns {Array} Returns the key-value pairs.
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   *   this.b = 2;
   * }
   *
   * Foo.prototype.c = 3;
   *
   * _.toPairsIn(new Foo);
   * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
   */
  var toPairsIn = createToPairs(keysIn);

  /**
   * An alternative to `_.reduce`; this method transforms `object` to a new
   * `accumulator` object which is the result of running each of its own
   * enumerable string keyed properties thru `iteratee`, with each invocation
   * potentially mutating the `accumulator` object. If `accumulator` is not
   * provided, a new object with the same `[[Prototype]]` will be used. The
   * iteratee is invoked with four arguments: (accumulator, value, key, object).
   * Iteratee functions may exit iteration early by explicitly returning `false`.
   *
   * @static
   * @memberOf _
   * @since 1.3.0
   * @category Object
   * @param {Object} object The object to iterate over.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @param {*} [accumulator] The custom accumulator value.
   * @returns {*} Returns the accumulated value.
   * @example
   *
   * _.transform([2, 3, 4], function(result, n) {
   *   result.push(n *= n);
   *   return n % 2 == 0;
   * }, []);
   * // => [4, 9]
   *
   * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
   *   (result[value] || (result[value] = [])).push(key);
   * }, {});
   * // => { '1': ['a', 'c'], '2': ['b'] }
   */
  function transform(object, iteratee, accumulator) {
    var isArr = isArray(object),
        isArrLike = isArr || isBuffer(object) || isTypedArray(object);

    iteratee = getIteratee(iteratee, 4);
    if (accumulator == null) {
      var Ctor = object && object.constructor;
      if (isArrLike) {
        accumulator = isArr ? new Ctor : [];
      }
      else if (isObject(object)) {
        accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
      }
      else {
        accumulator = {};
      }
    }
    (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
      return iteratee(accumulator, value, index, object);
    });
    return accumulator;
  }

  /**
   * Removes the property at `path` of `object`.
   *
   * **Note:** This method mutates `object`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Object
   * @param {Object} object The object to modify.
   * @param {Array|string} path The path of the property to unset.
   * @returns {boolean} Returns `true` if the property is deleted, else `false`.
   * @example
   *
   * var object = { 'a': [{ 'b': { 'c': 7 } }] };
   * _.unset(object, 'a[0].b.c');
   * // => true
   *
   * console.log(object);
   * // => { 'a': [{ 'b': {} }] };
   *
   * _.unset(object, ['a', '0', 'b', 'c']);
   * // => true
   *
   * console.log(object);
   * // => { 'a': [{ 'b': {} }] };
   */
  function unset(object, path) {
    return object == null ? true : baseUnset(object, path);
  }

  /**
   * This method is like `_.set` except that accepts `updater` to produce the
   * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
   * is invoked with one argument: (value).
   *
   * **Note:** This method mutates `object`.
   *
   * @static
   * @memberOf _
   * @since 4.6.0
   * @category Object
   * @param {Object} object The object to modify.
   * @param {Array|string} path The path of the property to set.
   * @param {Function} updater The function to produce the updated value.
   * @returns {Object} Returns `object`.
   * @example
   *
   * var object = { 'a': [{ 'b': { 'c': 3 } }] };
   *
   * _.update(object, 'a[0].b.c', function(n) { return n * n; });
   * console.log(object.a[0].b.c);
   * // => 9
   *
   * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
   * console.log(object.x[0].y.z);
   * // => 0
   */
  function update(object, path, updater) {
    return object == null ? object : baseUpdate(object, path, castFunction(updater));
  }

  /**
   * This method is like `_.update` except that it accepts `customizer` which is
   * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
   * path creation is handled by the method instead. The `customizer` is invoked
   * with three arguments: (nsValue, key, nsObject).
   *
   * **Note:** This method mutates `object`.
   *
   * @static
   * @memberOf _
   * @since 4.6.0
   * @category Object
   * @param {Object} object The object to modify.
   * @param {Array|string} path The path of the property to set.
   * @param {Function} updater The function to produce the updated value.
   * @param {Function} [customizer] The function to customize assigned values.
   * @returns {Object} Returns `object`.
   * @example
   *
   * var object = {};
   *
   * _.updateWith(object, '[0][1]', _.constant('a'), Object);
   * // => { '0': { '1': 'a' } }
   */
  function updateWith(object, path, updater, customizer) {
    customizer = typeof customizer == 'function' ? customizer : undefined;
    return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
  }

  /**
   * Creates an array of the own enumerable string keyed property values of `object`.
   *
   * **Note:** Non-object values are coerced to objects.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Object
   * @param {Object} object The object to query.
   * @returns {Array} Returns the array of property values.
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   *   this.b = 2;
   * }
   *
   * Foo.prototype.c = 3;
   *
   * _.values(new Foo);
   * // => [1, 2] (iteration order is not guaranteed)
   *
   * _.values('hi');
   * // => ['h', 'i']
   */
  function values(object) {
    return object == null ? [] : baseValues(object, keys(object));
  }

  /**
   * Creates an array of the own and inherited enumerable string keyed property
   * values of `object`.
   *
   * **Note:** Non-object values are coerced to objects.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Object
   * @param {Object} object The object to query.
   * @returns {Array} Returns the array of property values.
   * @example
   *
   * function Foo() {
   *   this.a = 1;
   *   this.b = 2;
   * }
   *
   * Foo.prototype.c = 3;
   *
   * _.valuesIn(new Foo);
   * // => [1, 2, 3] (iteration order is not guaranteed)
   */
  function valuesIn(object) {
    return object == null ? [] : baseValues(object, keysIn(object));
  }

  /*------------------------------------------------------------------------*/

  /**
   * Clamps `number` within the inclusive `lower` and `upper` bounds.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Number
   * @param {number} number The number to clamp.
   * @param {number} [lower] The lower bound.
   * @param {number} upper The upper bound.
   * @returns {number} Returns the clamped number.
   * @example
   *
   * _.clamp(-10, -5, 5);
   * // => -5
   *
   * _.clamp(10, -5, 5);
   * // => 5
   */
  function clamp(number, lower, upper) {
    if (upper === undefined) {
      upper = lower;
      lower = undefined;
    }
    if (upper !== undefined) {
      upper = toNumber(upper);
      upper = upper === upper ? upper : 0;
    }
    if (lower !== undefined) {
      lower = toNumber(lower);
      lower = lower === lower ? lower : 0;
    }
    return baseClamp(toNumber(number), lower, upper);
  }

  /**
   * Checks if `n` is between `start` and up to, but not including, `end`. If
   * `end` is not specified, it's set to `start` with `start` then set to `0`.
   * If `start` is greater than `end` the params are swapped to support
   * negative ranges.
   *
   * @static
   * @memberOf _
   * @since 3.3.0
   * @category Number
   * @param {number} number The number to check.
   * @param {number} [start=0] The start of the range.
   * @param {number} end The end of the range.
   * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
   * @see _.range, _.rangeRight
   * @example
   *
   * _.inRange(3, 2, 4);
   * // => true
   *
   * _.inRange(4, 8);
   * // => true
   *
   * _.inRange(4, 2);
   * // => false
   *
   * _.inRange(2, 2);
   * // => false
   *
   * _.inRange(1.2, 2);
   * // => true
   *
   * _.inRange(5.2, 4);
   * // => false
   *
   * _.inRange(-3, -2, -6);
   * // => true
   */
  function inRange(number, start, end) {
    start = toFinite(start);
    if (end === undefined) {
      end = start;
      start = 0;
    } else {
      end = toFinite(end);
    }
    number = toNumber(number);
    return baseInRange(number, start, end);
  }

  /**
   * Produces a random number between the inclusive `lower` and `upper` bounds.
   * If only one argument is provided a number between `0` and the given number
   * is returned. If `floating` is `true`, or either `lower` or `upper` are
   * floats, a floating-point number is returned instead of an integer.
   *
   * **Note:** JavaScript follows the IEEE-754 standard for resolving
   * floating-point values which can produce unexpected results.
   *
   * @static
   * @memberOf _
   * @since 0.7.0
   * @category Number
   * @param {number} [lower=0] The lower bound.
   * @param {number} [upper=1] The upper bound.
   * @param {boolean} [floating] Specify returning a floating-point number.
   * @returns {number} Returns the random number.
   * @example
   *
   * _.random(0, 5);
   * // => an integer between 0 and 5
   *
   * _.random(5);
   * // => also an integer between 0 and 5
   *
   * _.random(5, true);
   * // => a floating-point number between 0 and 5
   *
   * _.random(1.2, 5.2);
   * // => a floating-point number between 1.2 and 5.2
   */
  function random(lower, upper, floating) {
    if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
      upper = floating = undefined;
    }
    if (floating === undefined) {
      if (typeof upper == 'boolean') {
        floating = upper;
        upper = undefined;
      }
      else if (typeof lower == 'boolean') {
        floating = lower;
        lower = undefined;
      }
    }
    if (lower === undefined && upper === undefined) {
      lower = 0;
      upper = 1;
    }
    else {
      lower = toFinite(lower);
      if (upper === undefined) {
        upper = lower;
        lower = 0;
      } else {
        upper = toFinite(upper);
      }
    }
    if (lower > upper) {
      var temp = lower;
      lower = upper;
      upper = temp;
    }
    if (floating || lower % 1 || upper % 1) {
      var rand = nativeRandom();
      return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
    }
    return baseRandom(lower, upper);
  }

  /*------------------------------------------------------------------------*/

  /**
   * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category String
   * @param {string} [string=''] The string to convert.
   * @returns {string} Returns the camel cased string.
   * @example
   *
   * _.camelCase('Foo Bar');
   * // => 'fooBar'
   *
   * _.camelCase('--foo-bar--');
   * // => 'fooBar'
   *
   * _.camelCase('__FOO_BAR__');
   * // => 'fooBar'
   */
  var camelCase = createCompounder(function(result, word, index) {
    word = word.toLowerCase();
    return result + (index ? capitalize(word) : word);
  });

  /**
   * Converts the first character of `string` to upper case and the remaining
   * to lower case.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category String
   * @param {string} [string=''] The string to capitalize.
   * @returns {string} Returns the capitalized string.
   * @example
   *
   * _.capitalize('FRED');
   * // => 'Fred'
   */
  function capitalize(string) {
    return upperFirst(toString(string).toLowerCase());
  }

  /**
   * Deburrs `string` by converting
   * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
   * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
   * letters to basic Latin letters and removing
   * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category String
   * @param {string} [string=''] The string to deburr.
   * @returns {string} Returns the deburred string.
   * @example
   *
   * _.deburr('déjà vu');
   * // => 'deja vu'
   */
  function deburr(string) {
    string = toString(string);
    return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
  }

  /**
   * Checks if `string` ends with the given target string.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category String
   * @param {string} [string=''] The string to inspect.
   * @param {string} [target] The string to search for.
   * @param {number} [position=string.length] The position to search up to.
   * @returns {boolean} Returns `true` if `string` ends with `target`,
   *  else `false`.
   * @example
   *
   * _.endsWith('abc', 'c');
   * // => true
   *
   * _.endsWith('abc', 'b');
   * // => false
   *
   * _.endsWith('abc', 'b', 2);
   * // => true
   */
  function endsWith(string, target, position) {
    string = toString(string);
    target = baseToString(target);

    var length = string.length;
    position = position === undefined
      ? length
      : baseClamp(toInteger(position), 0, length);

    var end = position;
    position -= target.length;
    return position >= 0 && string.slice(position, end) == target;
  }

  /**
   * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
   * corresponding HTML entities.
   *
   * **Note:** No other characters are escaped. To escape additional
   * characters use a third-party library like [_he_](https://mths.be/he).
   *
   * Though the ">" character is escaped for symmetry, characters like
   * ">" and "/" don't need escaping in HTML and have no special meaning
   * unless they're part of a tag or unquoted attribute value. See
   * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
   * (under "semi-related fun fact") for more details.
   *
   * When working with HTML you should always
   * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
   * XSS vectors.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category String
   * @param {string} [string=''] The string to escape.
   * @returns {string} Returns the escaped string.
   * @example
   *
   * _.escape('fred, barney, & pebbles');
   * // => 'fred, barney, &amp; pebbles'
   */
  function escape(string) {
    string = toString(string);
    return (string && reHasUnescapedHtml.test(string))
      ? string.replace(reUnescapedHtml, escapeHtmlChar)
      : string;
  }

  /**
   * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
   * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category String
   * @param {string} [string=''] The string to escape.
   * @returns {string} Returns the escaped string.
   * @example
   *
   * _.escapeRegExp('[lodash](https://lodash.com/)');
   * // => '\[lodash\]\(https://lodash\.com/\)'
   */
  function escapeRegExp(string) {
    string = toString(string);
    return (string && reHasRegExpChar.test(string))
      ? string.replace(reRegExpChar, '\\$&')
      : string;
  }

  /**
   * Converts `string` to
   * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category String
   * @param {string} [string=''] The string to convert.
   * @returns {string} Returns the kebab cased string.
   * @example
   *
   * _.kebabCase('Foo Bar');
   * // => 'foo-bar'
   *
   * _.kebabCase('fooBar');
   * // => 'foo-bar'
   *
   * _.kebabCase('__FOO_BAR__');
   * // => 'foo-bar'
   */
  var kebabCase = createCompounder(function(result, word, index) {
    return result + (index ? '-' : '') + word.toLowerCase();
  });

  /**
   * Converts `string`, as space separated words, to lower case.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to convert.
   * @returns {string} Returns the lower cased string.
   * @example
   *
   * _.lowerCase('--Foo-Bar--');
   * // => 'foo bar'
   *
   * _.lowerCase('fooBar');
   * // => 'foo bar'
   *
   * _.lowerCase('__FOO_BAR__');
   * // => 'foo bar'
   */
  var lowerCase = createCompounder(function(result, word, index) {
    return result + (index ? ' ' : '') + word.toLowerCase();
  });

  /**
   * Converts the first character of `string` to lower case.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to convert.
   * @returns {string} Returns the converted string.
   * @example
   *
   * _.lowerFirst('Fred');
   * // => 'fred'
   *
   * _.lowerFirst('FRED');
   * // => 'fRED'
   */
  var lowerFirst = createCaseFirst('toLowerCase');

  /**
   * Pads `string` on the left and right sides if it's shorter than `length`.
   * Padding characters are truncated if they can't be evenly divided by `length`.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category String
   * @param {string} [string=''] The string to pad.
   * @param {number} [length=0] The padding length.
   * @param {string} [chars=' '] The string used as padding.
   * @returns {string} Returns the padded string.
   * @example
   *
   * _.pad('abc', 8);
   * // => '  abc   '
   *
   * _.pad('abc', 8, '_-');
   * // => '_-abc_-_'
   *
   * _.pad('abc', 3);
   * // => 'abc'
   */
  function pad(string, length, chars) {
    string = toString(string);
    length = toInteger(length);

    var strLength = length ? stringSize(string) : 0;
    if (!length || strLength >= length) {
      return string;
    }
    var mid = (length - strLength) / 2;
    return (
      createPadding(nativeFloor(mid), chars) +
      string +
      createPadding(nativeCeil(mid), chars)
    );
  }

  /**
   * Pads `string` on the right side if it's shorter than `length`. Padding
   * characters are truncated if they exceed `length`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to pad.
   * @param {number} [length=0] The padding length.
   * @param {string} [chars=' '] The string used as padding.
   * @returns {string} Returns the padded string.
   * @example
   *
   * _.padEnd('abc', 6);
   * // => 'abc   '
   *
   * _.padEnd('abc', 6, '_-');
   * // => 'abc_-_'
   *
   * _.padEnd('abc', 3);
   * // => 'abc'
   */
  function padEnd(string, length, chars) {
    string = toString(string);
    length = toInteger(length);

    var strLength = length ? stringSize(string) : 0;
    return (length && strLength < length)
      ? (string + createPadding(length - strLength, chars))
      : string;
  }

  /**
   * Pads `string` on the left side if it's shorter than `length`. Padding
   * characters are truncated if they exceed `length`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to pad.
   * @param {number} [length=0] The padding length.
   * @param {string} [chars=' '] The string used as padding.
   * @returns {string} Returns the padded string.
   * @example
   *
   * _.padStart('abc', 6);
   * // => '   abc'
   *
   * _.padStart('abc', 6, '_-');
   * // => '_-_abc'
   *
   * _.padStart('abc', 3);
   * // => 'abc'
   */
  function padStart(string, length, chars) {
    string = toString(string);
    length = toInteger(length);

    var strLength = length ? stringSize(string) : 0;
    return (length && strLength < length)
      ? (createPadding(length - strLength, chars) + string)
      : string;
  }

  /**
   * Converts `string` to an integer of the specified radix. If `radix` is
   * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
   * hexadecimal, in which case a `radix` of `16` is used.
   *
   * **Note:** This method aligns with the
   * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
   *
   * @static
   * @memberOf _
   * @since 1.1.0
   * @category String
   * @param {string} string The string to convert.
   * @param {number} [radix=10] The radix to interpret `value` by.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {number} Returns the converted integer.
   * @example
   *
   * _.parseInt('08');
   * // => 8
   *
   * _.map(['6', '08', '10'], _.parseInt);
   * // => [6, 8, 10]
   */
  function parseInt(string, radix, guard) {
    if (guard || radix == null) {
      radix = 0;
    } else if (radix) {
      radix = +radix;
    }
    return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
  }

  /**
   * Repeats the given string `n` times.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category String
   * @param {string} [string=''] The string to repeat.
   * @param {number} [n=1] The number of times to repeat the string.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {string} Returns the repeated string.
   * @example
   *
   * _.repeat('*', 3);
   * // => '***'
   *
   * _.repeat('abc', 2);
   * // => 'abcabc'
   *
   * _.repeat('abc', 0);
   * // => ''
   */
  function repeat(string, n, guard) {
    if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
      n = 1;
    } else {
      n = toInteger(n);
    }
    return baseRepeat(toString(string), n);
  }

  /**
   * Replaces matches for `pattern` in `string` with `replacement`.
   *
   * **Note:** This method is based on
   * [`String#replace`](https://mdn.io/String/replace).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to modify.
   * @param {RegExp|string} pattern The pattern to replace.
   * @param {Function|string} replacement The match replacement.
   * @returns {string} Returns the modified string.
   * @example
   *
   * _.replace('Hi Fred', 'Fred', 'Barney');
   * // => 'Hi Barney'
   */
  function replace() {
    var args = arguments,
        string = toString(args[0]);

    return args.length < 3 ? string : string.replace(args[1], args[2]);
  }

  /**
   * Converts `string` to
   * [snake case](https://en.wikipedia.org/wiki/Snake_case).
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category String
   * @param {string} [string=''] The string to convert.
   * @returns {string} Returns the snake cased string.
   * @example
   *
   * _.snakeCase('Foo Bar');
   * // => 'foo_bar'
   *
   * _.snakeCase('fooBar');
   * // => 'foo_bar'
   *
   * _.snakeCase('--FOO-BAR--');
   * // => 'foo_bar'
   */
  var snakeCase = createCompounder(function(result, word, index) {
    return result + (index ? '_' : '') + word.toLowerCase();
  });

  /**
   * Splits `string` by `separator`.
   *
   * **Note:** This method is based on
   * [`String#split`](https://mdn.io/String/split).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to split.
   * @param {RegExp|string} separator The separator pattern to split by.
   * @param {number} [limit] The length to truncate results to.
   * @returns {Array} Returns the string segments.
   * @example
   *
   * _.split('a-b-c', '-', 2);
   * // => ['a', 'b']
   */
  function split(string, separator, limit) {
    if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
      separator = limit = undefined;
    }
    limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
    if (!limit) {
      return [];
    }
    string = toString(string);
    if (string && (
          typeof separator == 'string' ||
          (separator != null && !isRegExp(separator))
        )) {
      separator = baseToString(separator);
      if (!separator && hasUnicode(string)) {
        return castSlice(stringToArray(string), 0, limit);
      }
    }
    return string.split(separator, limit);
  }

  /**
   * Converts `string` to
   * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
   *
   * @static
   * @memberOf _
   * @since 3.1.0
   * @category String
   * @param {string} [string=''] The string to convert.
   * @returns {string} Returns the start cased string.
   * @example
   *
   * _.startCase('--foo-bar--');
   * // => 'Foo Bar'
   *
   * _.startCase('fooBar');
   * // => 'Foo Bar'
   *
   * _.startCase('__FOO_BAR__');
   * // => 'FOO BAR'
   */
  var startCase = createCompounder(function(result, word, index) {
    return result + (index ? ' ' : '') + upperFirst(word);
  });

  /**
   * Checks if `string` starts with the given target string.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category String
   * @param {string} [string=''] The string to inspect.
   * @param {string} [target] The string to search for.
   * @param {number} [position=0] The position to search from.
   * @returns {boolean} Returns `true` if `string` starts with `target`,
   *  else `false`.
   * @example
   *
   * _.startsWith('abc', 'a');
   * // => true
   *
   * _.startsWith('abc', 'b');
   * // => false
   *
   * _.startsWith('abc', 'b', 1);
   * // => true
   */
  function startsWith(string, target, position) {
    string = toString(string);
    position = position == null
      ? 0
      : baseClamp(toInteger(position), 0, string.length);

    target = baseToString(target);
    return string.slice(position, position + target.length) == target;
  }

  /**
   * Creates a compiled template function that can interpolate data properties
   * in "interpolate" delimiters, HTML-escape interpolated data properties in
   * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
   * properties may be accessed as free variables in the template. If a setting
   * object is given, it takes precedence over `_.templateSettings` values.
   *
   * **Note:** In the development build `_.template` utilizes
   * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
   * for easier debugging.
   *
   * For more information on precompiling templates see
   * [lodash's custom builds documentation](https://lodash.com/custom-builds).
   *
   * For more information on Chrome extension sandboxes see
   * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category String
   * @param {string} [string=''] The template string.
   * @param {Object} [options={}] The options object.
   * @param {RegExp} [options.escape=_.templateSettings.escape]
   *  The HTML "escape" delimiter.
   * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
   *  The "evaluate" delimiter.
   * @param {Object} [options.imports=_.templateSettings.imports]
   *  An object to import into the template as free variables.
   * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
   *  The "interpolate" delimiter.
   * @param {string} [options.sourceURL='lodash.templateSources[n]']
   *  The sourceURL of the compiled template.
   * @param {string} [options.variable='obj']
   *  The data object variable name.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {Function} Returns the compiled template function.
   * @example
   *
   * // Use the "interpolate" delimiter to create a compiled template.
   * var compiled = _.template('hello <%= user %>!');
   * compiled({ 'user': 'fred' });
   * // => 'hello fred!'
   *
   * // Use the HTML "escape" delimiter to escape data property values.
   * var compiled = _.template('<b><%- value %></b>');
   * compiled({ 'value': '<script>' });
   * // => '<b>&lt;script&gt;</b>'
   *
   * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
   * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
   * compiled({ 'users': ['fred', 'barney'] });
   * // => '<li>fred</li><li>barney</li>'
   *
   * // Use the internal `print` function in "evaluate" delimiters.
   * var compiled = _.template('<% print("hello " + user); %>!');
   * compiled({ 'user': 'barney' });
   * // => 'hello barney!'
   *
   * // Use the ES template literal delimiter as an "interpolate" delimiter.
   * // Disable support by replacing the "interpolate" delimiter.
   * var compiled = _.template('hello ${ user }!');
   * compiled({ 'user': 'pebbles' });
   * // => 'hello pebbles!'
   *
   * // Use backslashes to treat delimiters as plain text.
   * var compiled = _.template('<%= "\\<%- value %\\>" %>');
   * compiled({ 'value': 'ignored' });
   * // => '<%- value %>'
   *
   * // Use the `imports` option to import `jQuery` as `jq`.
   * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
   * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
   * compiled({ 'users': ['fred', 'barney'] });
   * // => '<li>fred</li><li>barney</li>'
   *
   * // Use the `sourceURL` option to specify a custom sourceURL for the template.
   * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
   * compiled(data);
   * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
   *
   * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
   * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
   * compiled.source;
   * // => function(data) {
   * //   var __t, __p = '';
   * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
   * //   return __p;
   * // }
   *
   * // Use custom template delimiters.
   * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
   * var compiled = _.template('hello {{ user }}!');
   * compiled({ 'user': 'mustache' });
   * // => 'hello mustache!'
   *
   * // Use the `source` property to inline compiled templates for meaningful
   * // line numbers in error messages and stack traces.
   * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
   *   var JST = {\
   *     "main": ' + _.template(mainText).source + '\
   *   };\
   * ');
   */
  function template(string, options, guard) {
    // Based on John Resig's `tmpl` implementation
    // (http://ejohn.org/blog/javascript-micro-templating/)
    // and Laura Doktorova's doT.js (https://github.com/olado/doT).
    var settings = lodash.templateSettings;

    if (guard && isIterateeCall(string, options, guard)) {
      options = undefined;
    }
    string = toString(string);
    options = assignInWith({}, options, settings, customDefaultsAssignIn);

    var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
        importsKeys = keys(imports),
        importsValues = baseValues(imports, importsKeys);

    var isEscaping,
        isEvaluating,
        index = 0,
        interpolate = options.interpolate || reNoMatch,
        source = "__p += '";

    // Compile the regexp to match each delimiter.
    var reDelimiters = RegExp(
      (options.escape || reNoMatch).source + '|' +
      interpolate.source + '|' +
      (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
      (options.evaluate || reNoMatch).source + '|$'
    , 'g');

    // Use a sourceURL for easier debugging.
    var sourceURL = '//# sourceURL=' +
      ('sourceURL' in options
        ? options.sourceURL
        : ('lodash.templateSources[' + (++templateCounter) + ']')
      ) + '\n';

    string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
      interpolateValue || (interpolateValue = esTemplateValue);

      // Escape characters that can't be included in string literals.
      source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);

      // Replace delimiters with snippets.
      if (escapeValue) {
        isEscaping = true;
        source += "' +\n__e(" + escapeValue + ") +\n'";
      }
      if (evaluateValue) {
        isEvaluating = true;
        source += "';\n" + evaluateValue + ";\n__p += '";
      }
      if (interpolateValue) {
        source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
      }
      index = offset + match.length;

      // The JS engine embedded in Adobe products needs `match` returned in
      // order to produce the correct `offset` value.
      return match;
    });

    source += "';\n";

    // If `variable` is not specified wrap a with-statement around the generated
    // code to add the data object to the top of the scope chain.
    var variable = options.variable;
    if (!variable) {
      source = 'with (obj) {\n' + source + '\n}\n';
    }
    // Cleanup code by stripping empty strings.
    source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
      .replace(reEmptyStringMiddle, '$1')
      .replace(reEmptyStringTrailing, '$1;');

    // Frame code as the function body.
    source = 'function(' + (variable || 'obj') + ') {\n' +
      (variable
        ? ''
        : 'obj || (obj = {});\n'
      ) +
      "var __t, __p = ''" +
      (isEscaping
         ? ', __e = _.escape'
         : ''
      ) +
      (isEvaluating
        ? ', __j = Array.prototype.join;\n' +
          "function print() { __p += __j.call(arguments, '') }\n"
        : ';\n'
      ) +
      source +
      'return __p\n}';

    var result = attempt(function() {
      return Function(importsKeys, sourceURL + 'return ' + source)
        .apply(undefined, importsValues);
    });

    // Provide the compiled function's source by its `toString` method or
    // the `source` property as a convenience for inlining compiled templates.
    result.source = source;
    if (isError(result)) {
      throw result;
    }
    return result;
  }

  /**
   * Converts `string`, as a whole, to lower case just like
   * [String#toLowerCase](https://mdn.io/toLowerCase).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to convert.
   * @returns {string} Returns the lower cased string.
   * @example
   *
   * _.toLower('--Foo-Bar--');
   * // => '--foo-bar--'
   *
   * _.toLower('fooBar');
   * // => 'foobar'
   *
   * _.toLower('__FOO_BAR__');
   * // => '__foo_bar__'
   */
  function toLower(value) {
    return toString(value).toLowerCase();
  }

  /**
   * Converts `string`, as a whole, to upper case just like
   * [String#toUpperCase](https://mdn.io/toUpperCase).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to convert.
   * @returns {string} Returns the upper cased string.
   * @example
   *
   * _.toUpper('--foo-bar--');
   * // => '--FOO-BAR--'
   *
   * _.toUpper('fooBar');
   * // => 'FOOBAR'
   *
   * _.toUpper('__foo_bar__');
   * // => '__FOO_BAR__'
   */
  function toUpper(value) {
    return toString(value).toUpperCase();
  }

  /**
   * Removes leading and trailing whitespace or specified characters from `string`.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category String
   * @param {string} [string=''] The string to trim.
   * @param {string} [chars=whitespace] The characters to trim.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {string} Returns the trimmed string.
   * @example
   *
   * _.trim('  abc  ');
   * // => 'abc'
   *
   * _.trim('-_-abc-_-', '_-');
   * // => 'abc'
   *
   * _.map(['  foo  ', '  bar  '], _.trim);
   * // => ['foo', 'bar']
   */
  function trim(string, chars, guard) {
    string = toString(string);
    if (string && (guard || chars === undefined)) {
      return string.replace(reTrim, '');
    }
    if (!string || !(chars = baseToString(chars))) {
      return string;
    }
    var strSymbols = stringToArray(string),
        chrSymbols = stringToArray(chars),
        start = charsStartIndex(strSymbols, chrSymbols),
        end = charsEndIndex(strSymbols, chrSymbols) + 1;

    return castSlice(strSymbols, start, end).join('');
  }

  /**
   * Removes trailing whitespace or specified characters from `string`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to trim.
   * @param {string} [chars=whitespace] The characters to trim.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {string} Returns the trimmed string.
   * @example
   *
   * _.trimEnd('  abc  ');
   * // => '  abc'
   *
   * _.trimEnd('-_-abc-_-', '_-');
   * // => '-_-abc'
   */
  function trimEnd(string, chars, guard) {
    string = toString(string);
    if (string && (guard || chars === undefined)) {
      return string.replace(reTrimEnd, '');
    }
    if (!string || !(chars = baseToString(chars))) {
      return string;
    }
    var strSymbols = stringToArray(string),
        end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;

    return castSlice(strSymbols, 0, end).join('');
  }

  /**
   * Removes leading whitespace or specified characters from `string`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to trim.
   * @param {string} [chars=whitespace] The characters to trim.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {string} Returns the trimmed string.
   * @example
   *
   * _.trimStart('  abc  ');
   * // => 'abc  '
   *
   * _.trimStart('-_-abc-_-', '_-');
   * // => 'abc-_-'
   */
  function trimStart(string, chars, guard) {
    string = toString(string);
    if (string && (guard || chars === undefined)) {
      return string.replace(reTrimStart, '');
    }
    if (!string || !(chars = baseToString(chars))) {
      return string;
    }
    var strSymbols = stringToArray(string),
        start = charsStartIndex(strSymbols, stringToArray(chars));

    return castSlice(strSymbols, start).join('');
  }

  /**
   * Truncates `string` if it's longer than the given maximum string length.
   * The last characters of the truncated string are replaced with the omission
   * string which defaults to "...".
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to truncate.
   * @param {Object} [options={}] The options object.
   * @param {number} [options.length=30] The maximum string length.
   * @param {string} [options.omission='...'] The string to indicate text is omitted.
   * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
   * @returns {string} Returns the truncated string.
   * @example
   *
   * _.truncate('hi-diddly-ho there, neighborino');
   * // => 'hi-diddly-ho there, neighbo...'
   *
   * _.truncate('hi-diddly-ho there, neighborino', {
   *   'length': 24,
   *   'separator': ' '
   * });
   * // => 'hi-diddly-ho there,...'
   *
   * _.truncate('hi-diddly-ho there, neighborino', {
   *   'length': 24,
   *   'separator': /,? +/
   * });
   * // => 'hi-diddly-ho there...'
   *
   * _.truncate('hi-diddly-ho there, neighborino', {
   *   'omission': ' [...]'
   * });
   * // => 'hi-diddly-ho there, neig [...]'
   */
  function truncate(string, options) {
    var length = DEFAULT_TRUNC_LENGTH,
        omission = DEFAULT_TRUNC_OMISSION;

    if (isObject(options)) {
      var separator = 'separator' in options ? options.separator : separator;
      length = 'length' in options ? toInteger(options.length) : length;
      omission = 'omission' in options ? baseToString(options.omission) : omission;
    }
    string = toString(string);

    var strLength = string.length;
    if (hasUnicode(string)) {
      var strSymbols = stringToArray(string);
      strLength = strSymbols.length;
    }
    if (length >= strLength) {
      return string;
    }
    var end = length - stringSize(omission);
    if (end < 1) {
      return omission;
    }
    var result = strSymbols
      ? castSlice(strSymbols, 0, end).join('')
      : string.slice(0, end);

    if (separator === undefined) {
      return result + omission;
    }
    if (strSymbols) {
      end += (result.length - end);
    }
    if (isRegExp(separator)) {
      if (string.slice(end).search(separator)) {
        var match,
            substring = result;

        if (!separator.global) {
          separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
        }
        separator.lastIndex = 0;
        while ((match = separator.exec(substring))) {
          var newEnd = match.index;
        }
        result = result.slice(0, newEnd === undefined ? end : newEnd);
      }
    } else if (string.indexOf(baseToString(separator), end) != end) {
      var index = result.lastIndexOf(separator);
      if (index > -1) {
        result = result.slice(0, index);
      }
    }
    return result + omission;
  }

  /**
   * The inverse of `_.escape`; this method converts the HTML entities
   * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
   * their corresponding characters.
   *
   * **Note:** No other HTML entities are unescaped. To unescape additional
   * HTML entities use a third-party library like [_he_](https://mths.be/he).
   *
   * @static
   * @memberOf _
   * @since 0.6.0
   * @category String
   * @param {string} [string=''] The string to unescape.
   * @returns {string} Returns the unescaped string.
   * @example
   *
   * _.unescape('fred, barney, &amp; pebbles');
   * // => 'fred, barney, & pebbles'
   */
  function unescape(string) {
    string = toString(string);
    return (string && reHasEscapedHtml.test(string))
      ? string.replace(reEscapedHtml, unescapeHtmlChar)
      : string;
  }

  /**
   * Converts `string`, as space separated words, to upper case.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to convert.
   * @returns {string} Returns the upper cased string.
   * @example
   *
   * _.upperCase('--foo-bar');
   * // => 'FOO BAR'
   *
   * _.upperCase('fooBar');
   * // => 'FOO BAR'
   *
   * _.upperCase('__foo_bar__');
   * // => 'FOO BAR'
   */
  var upperCase = createCompounder(function(result, word, index) {
    return result + (index ? ' ' : '') + word.toUpperCase();
  });

  /**
   * Converts the first character of `string` to upper case.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category String
   * @param {string} [string=''] The string to convert.
   * @returns {string} Returns the converted string.
   * @example
   *
   * _.upperFirst('fred');
   * // => 'Fred'
   *
   * _.upperFirst('FRED');
   * // => 'FRED'
   */
  var upperFirst = createCaseFirst('toUpperCase');

  /**
   * Splits `string` into an array of its words.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category String
   * @param {string} [string=''] The string to inspect.
   * @param {RegExp|string} [pattern] The pattern to match words.
   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
   * @returns {Array} Returns the words of `string`.
   * @example
   *
   * _.words('fred, barney, & pebbles');
   * // => ['fred', 'barney', 'pebbles']
   *
   * _.words('fred, barney, & pebbles', /[^, ]+/g);
   * // => ['fred', 'barney', '&', 'pebbles']
   */
  function words(string, pattern, guard) {
    string = toString(string);
    pattern = guard ? undefined : pattern;

    if (pattern === undefined) {
      return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
    }
    return string.match(pattern) || [];
  }

  /*------------------------------------------------------------------------*/

  /**
   * Attempts to invoke `func`, returning either the result or the caught error
   * object. Any additional arguments are provided to `func` when it's invoked.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Util
   * @param {Function} func The function to attempt.
   * @param {...*} [args] The arguments to invoke `func` with.
   * @returns {*} Returns the `func` result or error object.
   * @example
   *
   * // Avoid throwing errors for invalid selectors.
   * var elements = _.attempt(function(selector) {
   *   return document.querySelectorAll(selector);
   * }, '>_>');
   *
   * if (_.isError(elements)) {
   *   elements = [];
   * }
   */
  var attempt = baseRest(function(func, args) {
    try {
      return apply(func, undefined, args);
    } catch (e) {
      return isError(e) ? e : new Error(e);
    }
  });

  /**
   * Binds methods of an object to the object itself, overwriting the existing
   * method.
   *
   * **Note:** This method doesn't set the "length" property of bound functions.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Util
   * @param {Object} object The object to bind and assign the bound methods to.
   * @param {...(string|string[])} methodNames The object method names to bind.
   * @returns {Object} Returns `object`.
   * @example
   *
   * var view = {
   *   'label': 'docs',
   *   'click': function() {
   *     console.log('clicked ' + this.label);
   *   }
   * };
   *
   * _.bindAll(view, ['click']);
   * jQuery(element).on('click', view.click);
   * // => Logs 'clicked docs' when clicked.
   */
  var bindAll = flatRest(function(object, methodNames) {
    arrayEach(methodNames, function(key) {
      key = toKey(key);
      baseAssignValue(object, key, bind(object[key], object));
    });
    return object;
  });

  /**
   * Creates a function that iterates over `pairs` and invokes the corresponding
   * function of the first predicate to return truthy. The predicate-function
   * pairs are invoked with the `this` binding and arguments of the created
   * function.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Util
   * @param {Array} pairs The predicate-function pairs.
   * @returns {Function} Returns the new composite function.
   * @example
   *
   * var func = _.cond([
   *   [_.matches({ 'a': 1 }),           _.constant('matches A')],
   *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
   *   [_.stubTrue,                      _.constant('no match')]
   * ]);
   *
   * func({ 'a': 1, 'b': 2 });
   * // => 'matches A'
   *
   * func({ 'a': 0, 'b': 1 });
   * // => 'matches B'
   *
   * func({ 'a': '1', 'b': '2' });
   * // => 'no match'
   */
  function cond(pairs) {
    var length = pairs == null ? 0 : pairs.length,
        toIteratee = getIteratee();

    pairs = !length ? [] : arrayMap(pairs, function(pair) {
      if (typeof pair[1] != 'function') {
        throw new TypeError(FUNC_ERROR_TEXT);
      }
      return [toIteratee(pair[0]), pair[1]];
    });

    return baseRest(function(args) {
      var index = -1;
      while (++index < length) {
        var pair = pairs[index];
        if (apply(pair[0], this, args)) {
          return apply(pair[1], this, args);
        }
      }
    });
  }

  /**
   * Creates a function that invokes the predicate properties of `source` with
   * the corresponding property values of a given object, returning `true` if
   * all predicates return truthy, else `false`.
   *
   * **Note:** The created function is equivalent to `_.conformsTo` with
   * `source` partially applied.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Util
   * @param {Object} source The object of property predicates to conform to.
   * @returns {Function} Returns the new spec function.
   * @example
   *
   * var objects = [
   *   { 'a': 2, 'b': 1 },
   *   { 'a': 1, 'b': 2 }
   * ];
   *
   * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
   * // => [{ 'a': 1, 'b': 2 }]
   */
  function conforms(source) {
    return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
  }

  /**
   * Creates a function that returns `value`.
   *
   * @static
   * @memberOf _
   * @since 2.4.0
   * @category Util
   * @param {*} value The value to return from the new function.
   * @returns {Function} Returns the new constant function.
   * @example
   *
   * var objects = _.times(2, _.constant({ 'a': 1 }));
   *
   * console.log(objects);
   * // => [{ 'a': 1 }, { 'a': 1 }]
   *
   * console.log(objects[0] === objects[1]);
   * // => true
   */
  function constant(value) {
    return function() {
      return value;
    };
  }

  /**
   * Checks `value` to determine whether a default value should be returned in
   * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
   * or `undefined`.
   *
   * @static
   * @memberOf _
   * @since 4.14.0
   * @category Util
   * @param {*} value The value to check.
   * @param {*} defaultValue The default value.
   * @returns {*} Returns the resolved value.
   * @example
   *
   * _.defaultTo(1, 10);
   * // => 1
   *
   * _.defaultTo(undefined, 10);
   * // => 10
   */
  function defaultTo(value, defaultValue) {
    return (value == null || value !== value) ? defaultValue : value;
  }

  /**
   * Creates a function that returns the result of invoking the given functions
   * with the `this` binding of the created function, where each successive
   * invocation is supplied the return value of the previous.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Util
   * @param {...(Function|Function[])} [funcs] The functions to invoke.
   * @returns {Function} Returns the new composite function.
   * @see _.flowRight
   * @example
   *
   * function square(n) {
   *   return n * n;
   * }
   *
   * var addSquare = _.flow([_.add, square]);
   * addSquare(1, 2);
   * // => 9
   */
  var flow = createFlow();

  /**
   * This method is like `_.flow` except that it creates a function that
   * invokes the given functions from right to left.
   *
   * @static
   * @since 3.0.0
   * @memberOf _
   * @category Util
   * @param {...(Function|Function[])} [funcs] The functions to invoke.
   * @returns {Function} Returns the new composite function.
   * @see _.flow
   * @example
   *
   * function square(n) {
   *   return n * n;
   * }
   *
   * var addSquare = _.flowRight([square, _.add]);
   * addSquare(1, 2);
   * // => 9
   */
  var flowRight = createFlow(true);

  /**
   * This method returns the first argument it receives.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Util
   * @param {*} value Any value.
   * @returns {*} Returns `value`.
   * @example
   *
   * var object = { 'a': 1 };
   *
   * console.log(_.identity(object) === object);
   * // => true
   */
  function identity(value) {
    return value;
  }

  /**
   * Creates a function that invokes `func` with the arguments of the created
   * function. If `func` is a property name, the created function returns the
   * property value for a given element. If `func` is an array or object, the
   * created function returns `true` for elements that contain the equivalent
   * source properties, otherwise it returns `false`.
   *
   * @static
   * @since 4.0.0
   * @memberOf _
   * @category Util
   * @param {*} [func=_.identity] The value to convert to a callback.
   * @returns {Function} Returns the callback.
   * @example
   *
   * var users = [
   *   { 'user': 'barney', 'age': 36, 'active': true },
   *   { 'user': 'fred',   'age': 40, 'active': false }
   * ];
   *
   * // The `_.matches` iteratee shorthand.
   * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
   * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
   *
   * // The `_.matchesProperty` iteratee shorthand.
   * _.filter(users, _.iteratee(['user', 'fred']));
   * // => [{ 'user': 'fred', 'age': 40 }]
   *
   * // The `_.property` iteratee shorthand.
   * _.map(users, _.iteratee('user'));
   * // => ['barney', 'fred']
   *
   * // Create custom iteratee shorthands.
   * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
   *   return !_.isRegExp(func) ? iteratee(func) : function(string) {
   *     return func.test(string);
   *   };
   * });
   *
   * _.filter(['abc', 'def'], /ef/);
   * // => ['def']
   */
  function iteratee(func) {
    return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
  }

  /**
   * Creates a function that performs a partial deep comparison between a given
   * object and `source`, returning `true` if the given object has equivalent
   * property values, else `false`.
   *
   * **Note:** The created function is equivalent to `_.isMatch` with `source`
   * partially applied.
   *
   * Partial comparisons will match empty array and empty object `source`
   * values against any array or object value, respectively. See `_.isEqual`
   * for a list of supported value comparisons.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Util
   * @param {Object} source The object of property values to match.
   * @returns {Function} Returns the new spec function.
   * @example
   *
   * var objects = [
   *   { 'a': 1, 'b': 2, 'c': 3 },
   *   { 'a': 4, 'b': 5, 'c': 6 }
   * ];
   *
   * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
   * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
   */
  function matches(source) {
    return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
  }

  /**
   * Creates a function that performs a partial deep comparison between the
   * value at `path` of a given object to `srcValue`, returning `true` if the
   * object value is equivalent, else `false`.
   *
   * **Note:** Partial comparisons will match empty array and empty object
   * `srcValue` values against any array or object value, respectively. See
   * `_.isEqual` for a list of supported value comparisons.
   *
   * @static
   * @memberOf _
   * @since 3.2.0
   * @category Util
   * @param {Array|string} path The path of the property to get.
   * @param {*} srcValue The value to match.
   * @returns {Function} Returns the new spec function.
   * @example
   *
   * var objects = [
   *   { 'a': 1, 'b': 2, 'c': 3 },
   *   { 'a': 4, 'b': 5, 'c': 6 }
   * ];
   *
   * _.find(objects, _.matchesProperty('a', 4));
   * // => { 'a': 4, 'b': 5, 'c': 6 }
   */
  function matchesProperty(path, srcValue) {
    return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
  }

  /**
   * Creates a function that invokes the method at `path` of a given object.
   * Any additional arguments are provided to the invoked method.
   *
   * @static
   * @memberOf _
   * @since 3.7.0
   * @category Util
   * @param {Array|string} path The path of the method to invoke.
   * @param {...*} [args] The arguments to invoke the method with.
   * @returns {Function} Returns the new invoker function.
   * @example
   *
   * var objects = [
   *   { 'a': { 'b': _.constant(2) } },
   *   { 'a': { 'b': _.constant(1) } }
   * ];
   *
   * _.map(objects, _.method('a.b'));
   * // => [2, 1]
   *
   * _.map(objects, _.method(['a', 'b']));
   * // => [2, 1]
   */
  var method = baseRest(function(path, args) {
    return function(object) {
      return baseInvoke(object, path, args);
    };
  });

  /**
   * The opposite of `_.method`; this method creates a function that invokes
   * the method at a given path of `object`. Any additional arguments are
   * provided to the invoked method.
   *
   * @static
   * @memberOf _
   * @since 3.7.0
   * @category Util
   * @param {Object} object The object to query.
   * @param {...*} [args] The arguments to invoke the method with.
   * @returns {Function} Returns the new invoker function.
   * @example
   *
   * var array = _.times(3, _.constant),
   *     object = { 'a': array, 'b': array, 'c': array };
   *
   * _.map(['a[2]', 'c[0]'], _.methodOf(object));
   * // => [2, 0]
   *
   * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
   * // => [2, 0]
   */
  var methodOf = baseRest(function(object, args) {
    return function(path) {
      return baseInvoke(object, path, args);
    };
  });

  /**
   * Adds all own enumerable string keyed function properties of a source
   * object to the destination object. If `object` is a function, then methods
   * are added to its prototype as well.
   *
   * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
   * avoid conflicts caused by modifying the original.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Util
   * @param {Function|Object} [object=lodash] The destination object.
   * @param {Object} source The object of functions to add.
   * @param {Object} [options={}] The options object.
   * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
   * @returns {Function|Object} Returns `object`.
   * @example
   *
   * function vowels(string) {
   *   return _.filter(string, function(v) {
   *     return /[aeiou]/i.test(v);
   *   });
   * }
   *
   * _.mixin({ 'vowels': vowels });
   * _.vowels('fred');
   * // => ['e']
   *
   * _('fred').vowels().value();
   * // => ['e']
   *
   * _.mixin({ 'vowels': vowels }, { 'chain': false });
   * _('fred').vowels();
   * // => ['e']
   */
  function mixin(object, source, options) {
    var props = keys(source),
        methodNames = baseFunctions(source, props);

    if (options == null &&
        !(isObject(source) && (methodNames.length || !props.length))) {
      options = source;
      source = object;
      object = this;
      methodNames = baseFunctions(source, keys(source));
    }
    var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
        isFunc = isFunction(object);

    arrayEach(methodNames, function(methodName) {
      var func = source[methodName];
      object[methodName] = func;
      if (isFunc) {
        object.prototype[methodName] = function() {
          var chainAll = this.__chain__;
          if (chain || chainAll) {
            var result = object(this.__wrapped__),
                actions = result.__actions__ = copyArray(this.__actions__);

            actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
            result.__chain__ = chainAll;
            return result;
          }
          return func.apply(object, arrayPush([this.value()], arguments));
        };
      }
    });

    return object;
  }

  /**
   * Reverts the `_` variable to its previous value and returns a reference to
   * the `lodash` function.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Util
   * @returns {Function} Returns the `lodash` function.
   * @example
   *
   * var lodash = _.noConflict();
   */
  function noConflict() {
    if (root._ === this) {
      root._ = oldDash;
    }
    return this;
  }

  /**
   * This method returns `undefined`.
   *
   * @static
   * @memberOf _
   * @since 2.3.0
   * @category Util
   * @example
   *
   * _.times(2, _.noop);
   * // => [undefined, undefined]
   */
  function noop() {
    // No operation performed.
  }

  /**
   * Creates a function that gets the argument at index `n`. If `n` is negative,
   * the nth argument from the end is returned.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Util
   * @param {number} [n=0] The index of the argument to return.
   * @returns {Function} Returns the new pass-thru function.
   * @example
   *
   * var func = _.nthArg(1);
   * func('a', 'b', 'c', 'd');
   * // => 'b'
   *
   * var func = _.nthArg(-2);
   * func('a', 'b', 'c', 'd');
   * // => 'c'
   */
  function nthArg(n) {
    n = toInteger(n);
    return baseRest(function(args) {
      return baseNth(args, n);
    });
  }

  /**
   * Creates a function that invokes `iteratees` with the arguments it receives
   * and returns their results.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Util
   * @param {...(Function|Function[])} [iteratees=[_.identity]]
   *  The iteratees to invoke.
   * @returns {Function} Returns the new function.
   * @example
   *
   * var func = _.over([Math.max, Math.min]);
   *
   * func(1, 2, 3, 4);
   * // => [4, 1]
   */
  var over = createOver(arrayMap);

  /**
   * Creates a function that checks if **all** of the `predicates` return
   * truthy when invoked with the arguments it receives.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Util
   * @param {...(Function|Function[])} [predicates=[_.identity]]
   *  The predicates to check.
   * @returns {Function} Returns the new function.
   * @example
   *
   * var func = _.overEvery([Boolean, isFinite]);
   *
   * func('1');
   * // => true
   *
   * func(null);
   * // => false
   *
   * func(NaN);
   * // => false
   */
  var overEvery = createOver(arrayEvery);

  /**
   * Creates a function that checks if **any** of the `predicates` return
   * truthy when invoked with the arguments it receives.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Util
   * @param {...(Function|Function[])} [predicates=[_.identity]]
   *  The predicates to check.
   * @returns {Function} Returns the new function.
   * @example
   *
   * var func = _.overSome([Boolean, isFinite]);
   *
   * func('1');
   * // => true
   *
   * func(null);
   * // => true
   *
   * func(NaN);
   * // => false
   */
  var overSome = createOver(arraySome);

  /**
   * Creates a function that returns the value at `path` of a given object.
   *
   * @static
   * @memberOf _
   * @since 2.4.0
   * @category Util
   * @param {Array|string} path The path of the property to get.
   * @returns {Function} Returns the new accessor function.
   * @example
   *
   * var objects = [
   *   { 'a': { 'b': 2 } },
   *   { 'a': { 'b': 1 } }
   * ];
   *
   * _.map(objects, _.property('a.b'));
   * // => [2, 1]
   *
   * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
   * // => [1, 2]
   */
  function property(path) {
    return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
  }

  /**
   * The opposite of `_.property`; this method creates a function that returns
   * the value at a given path of `object`.
   *
   * @static
   * @memberOf _
   * @since 3.0.0
   * @category Util
   * @param {Object} object The object to query.
   * @returns {Function} Returns the new accessor function.
   * @example
   *
   * var array = [0, 1, 2],
   *     object = { 'a': array, 'b': array, 'c': array };
   *
   * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
   * // => [2, 0]
   *
   * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
   * // => [2, 0]
   */
  function propertyOf(object) {
    return function(path) {
      return object == null ? undefined : baseGet(object, path);
    };
  }

  /**
   * Creates an array of numbers (positive and/or negative) progressing from
   * `start` up to, but not including, `end`. A step of `-1` is used if a negative
   * `start` is specified without an `end` or `step`. If `end` is not specified,
   * it's set to `start` with `start` then set to `0`.
   *
   * **Note:** JavaScript follows the IEEE-754 standard for resolving
   * floating-point values which can produce unexpected results.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Util
   * @param {number} [start=0] The start of the range.
   * @param {number} end The end of the range.
   * @param {number} [step=1] The value to increment or decrement by.
   * @returns {Array} Returns the range of numbers.
   * @see _.inRange, _.rangeRight
   * @example
   *
   * _.range(4);
   * // => [0, 1, 2, 3]
   *
   * _.range(-4);
   * // => [0, -1, -2, -3]
   *
   * _.range(1, 5);
   * // => [1, 2, 3, 4]
   *
   * _.range(0, 20, 5);
   * // => [0, 5, 10, 15]
   *
   * _.range(0, -4, -1);
   * // => [0, -1, -2, -3]
   *
   * _.range(1, 4, 0);
   * // => [1, 1, 1]
   *
   * _.range(0);
   * // => []
   */
  var range = createRange();

  /**
   * This method is like `_.range` except that it populates values in
   * descending order.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Util
   * @param {number} [start=0] The start of the range.
   * @param {number} end The end of the range.
   * @param {number} [step=1] The value to increment or decrement by.
   * @returns {Array} Returns the range of numbers.
   * @see _.inRange, _.range
   * @example
   *
   * _.rangeRight(4);
   * // => [3, 2, 1, 0]
   *
   * _.rangeRight(-4);
   * // => [-3, -2, -1, 0]
   *
   * _.rangeRight(1, 5);
   * // => [4, 3, 2, 1]
   *
   * _.rangeRight(0, 20, 5);
   * // => [15, 10, 5, 0]
   *
   * _.rangeRight(0, -4, -1);
   * // => [-3, -2, -1, 0]
   *
   * _.rangeRight(1, 4, 0);
   * // => [1, 1, 1]
   *
   * _.rangeRight(0);
   * // => []
   */
  var rangeRight = createRange(true);

  /**
   * This method returns a new empty array.
   *
   * @static
   * @memberOf _
   * @since 4.13.0
   * @category Util
   * @returns {Array} Returns the new empty array.
   * @example
   *
   * var arrays = _.times(2, _.stubArray);
   *
   * console.log(arrays);
   * // => [[], []]
   *
   * console.log(arrays[0] === arrays[1]);
   * // => false
   */
  function stubArray() {
    return [];
  }

  /**
   * This method returns `false`.
   *
   * @static
   * @memberOf _
   * @since 4.13.0
   * @category Util
   * @returns {boolean} Returns `false`.
   * @example
   *
   * _.times(2, _.stubFalse);
   * // => [false, false]
   */
  function stubFalse() {
    return false;
  }

  /**
   * This method returns a new empty object.
   *
   * @static
   * @memberOf _
   * @since 4.13.0
   * @category Util
   * @returns {Object} Returns the new empty object.
   * @example
   *
   * var objects = _.times(2, _.stubObject);
   *
   * console.log(objects);
   * // => [{}, {}]
   *
   * console.log(objects[0] === objects[1]);
   * // => false
   */
  function stubObject() {
    return {};
  }

  /**
   * This method returns an empty string.
   *
   * @static
   * @memberOf _
   * @since 4.13.0
   * @category Util
   * @returns {string} Returns the empty string.
   * @example
   *
   * _.times(2, _.stubString);
   * // => ['', '']
   */
  function stubString() {
    return '';
  }

  /**
   * This method returns `true`.
   *
   * @static
   * @memberOf _
   * @since 4.13.0
   * @category Util
   * @returns {boolean} Returns `true`.
   * @example
   *
   * _.times(2, _.stubTrue);
   * // => [true, true]
   */
  function stubTrue() {
    return true;
  }

  /**
   * Invokes the iteratee `n` times, returning an array of the results of
   * each invocation. The iteratee is invoked with one argument; (index).
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Util
   * @param {number} n The number of times to invoke `iteratee`.
   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
   * @returns {Array} Returns the array of results.
   * @example
   *
   * _.times(3, String);
   * // => ['0', '1', '2']
   *
   *  _.times(4, _.constant(0));
   * // => [0, 0, 0, 0]
   */
  function times(n, iteratee) {
    n = toInteger(n);
    if (n < 1 || n > MAX_SAFE_INTEGER) {
      return [];
    }
    var index = MAX_ARRAY_LENGTH,
        length = nativeMin(n, MAX_ARRAY_LENGTH);

    iteratee = getIteratee(iteratee);
    n -= MAX_ARRAY_LENGTH;

    var result = baseTimes(length, iteratee);
    while (++index < n) {
      iteratee(index);
    }
    return result;
  }

  /**
   * Converts `value` to a property path array.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Util
   * @param {*} value The value to convert.
   * @returns {Array} Returns the new property path array.
   * @example
   *
   * _.toPath('a.b.c');
   * // => ['a', 'b', 'c']
   *
   * _.toPath('a[0].b.c');
   * // => ['a', '0', 'b', 'c']
   */
  function toPath(value) {
    if (isArray(value)) {
      return arrayMap(value, toKey);
    }
    return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
  }

  /**
   * Generates a unique ID. If `prefix` is given, the ID is appended to it.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Util
   * @param {string} [prefix=''] The value to prefix the ID with.
   * @returns {string} Returns the unique ID.
   * @example
   *
   * _.uniqueId('contact_');
   * // => 'contact_104'
   *
   * _.uniqueId();
   * // => '105'
   */
  function uniqueId(prefix) {
    var id = ++idCounter;
    return toString(prefix) + id;
  }

  /*------------------------------------------------------------------------*/

  /**
   * Adds two numbers.
   *
   * @static
   * @memberOf _
   * @since 3.4.0
   * @category Math
   * @param {number} augend The first number in an addition.
   * @param {number} addend The second number in an addition.
   * @returns {number} Returns the total.
   * @example
   *
   * _.add(6, 4);
   * // => 10
   */
  var add = createMathOperation(function(augend, addend) {
    return augend + addend;
  }, 0);

  /**
   * Computes `number` rounded up to `precision`.
   *
   * @static
   * @memberOf _
   * @since 3.10.0
   * @category Math
   * @param {number} number The number to round up.
   * @param {number} [precision=0] The precision to round up to.
   * @returns {number} Returns the rounded up number.
   * @example
   *
   * _.ceil(4.006);
   * // => 5
   *
   * _.ceil(6.004, 2);
   * // => 6.01
   *
   * _.ceil(6040, -2);
   * // => 6100
   */
  var ceil = createRound('ceil');

  /**
   * Divide two numbers.
   *
   * @static
   * @memberOf _
   * @since 4.7.0
   * @category Math
   * @param {number} dividend The first number in a division.
   * @param {number} divisor The second number in a division.
   * @returns {number} Returns the quotient.
   * @example
   *
   * _.divide(6, 4);
   * // => 1.5
   */
  var divide = createMathOperation(function(dividend, divisor) {
    return dividend / divisor;
  }, 1);

  /**
   * Computes `number` rounded down to `precision`.
   *
   * @static
   * @memberOf _
   * @since 3.10.0
   * @category Math
   * @param {number} number The number to round down.
   * @param {number} [precision=0] The precision to round down to.
   * @returns {number} Returns the rounded down number.
   * @example
   *
   * _.floor(4.006);
   * // => 4
   *
   * _.floor(0.046, 2);
   * // => 0.04
   *
   * _.floor(4060, -2);
   * // => 4000
   */
  var floor = createRound('floor');

  /**
   * Computes the maximum value of `array`. If `array` is empty or falsey,
   * `undefined` is returned.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Math
   * @param {Array} array The array to iterate over.
   * @returns {*} Returns the maximum value.
   * @example
   *
   * _.max([4, 2, 8, 6]);
   * // => 8
   *
   * _.max([]);
   * // => undefined
   */
  function max(array) {
    return (array && array.length)
      ? baseExtremum(array, identity, baseGt)
      : undefined;
  }

  /**
   * This method is like `_.max` except that it accepts `iteratee` which is
   * invoked for each element in `array` to generate the criterion by which
   * the value is ranked. The iteratee is invoked with one argument: (value).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Math
   * @param {Array} array The array to iterate over.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {*} Returns the maximum value.
   * @example
   *
   * var objects = [{ 'n': 1 }, { 'n': 2 }];
   *
   * _.maxBy(objects, function(o) { return o.n; });
   * // => { 'n': 2 }
   *
   * // The `_.property` iteratee shorthand.
   * _.maxBy(objects, 'n');
   * // => { 'n': 2 }
   */
  function maxBy(array, iteratee) {
    return (array && array.length)
      ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)
      : undefined;
  }

  /**
   * Computes the mean of the values in `array`.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Math
   * @param {Array} array The array to iterate over.
   * @returns {number} Returns the mean.
   * @example
   *
   * _.mean([4, 2, 8, 6]);
   * // => 5
   */
  function mean(array) {
    return baseMean(array, identity);
  }

  /**
   * This method is like `_.mean` except that it accepts `iteratee` which is
   * invoked for each element in `array` to generate the value to be averaged.
   * The iteratee is invoked with one argument: (value).
   *
   * @static
   * @memberOf _
   * @since 4.7.0
   * @category Math
   * @param {Array} array The array to iterate over.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {number} Returns the mean.
   * @example
   *
   * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
   *
   * _.meanBy(objects, function(o) { return o.n; });
   * // => 5
   *
   * // The `_.property` iteratee shorthand.
   * _.meanBy(objects, 'n');
   * // => 5
   */
  function meanBy(array, iteratee) {
    return baseMean(array, getIteratee(iteratee, 2));
  }

  /**
   * Computes the minimum value of `array`. If `array` is empty or falsey,
   * `undefined` is returned.
   *
   * @static
   * @since 0.1.0
   * @memberOf _
   * @category Math
   * @param {Array} array The array to iterate over.
   * @returns {*} Returns the minimum value.
   * @example
   *
   * _.min([4, 2, 8, 6]);
   * // => 2
   *
   * _.min([]);
   * // => undefined
   */
  function min(array) {
    return (array && array.length)
      ? baseExtremum(array, identity, baseLt)
      : undefined;
  }

  /**
   * This method is like `_.min` except that it accepts `iteratee` which is
   * invoked for each element in `array` to generate the criterion by which
   * the value is ranked. The iteratee is invoked with one argument: (value).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Math
   * @param {Array} array The array to iterate over.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {*} Returns the minimum value.
   * @example
   *
   * var objects = [{ 'n': 1 }, { 'n': 2 }];
   *
   * _.minBy(objects, function(o) { return o.n; });
   * // => { 'n': 1 }
   *
   * // The `_.property` iteratee shorthand.
   * _.minBy(objects, 'n');
   * // => { 'n': 1 }
   */
  function minBy(array, iteratee) {
    return (array && array.length)
      ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)
      : undefined;
  }

  /**
   * Multiply two numbers.
   *
   * @static
   * @memberOf _
   * @since 4.7.0
   * @category Math
   * @param {number} multiplier The first number in a multiplication.
   * @param {number} multiplicand The second number in a multiplication.
   * @returns {number} Returns the product.
   * @example
   *
   * _.multiply(6, 4);
   * // => 24
   */
  var multiply = createMathOperation(function(multiplier, multiplicand) {
    return multiplier * multiplicand;
  }, 1);

  /**
   * Computes `number` rounded to `precision`.
   *
   * @static
   * @memberOf _
   * @since 3.10.0
   * @category Math
   * @param {number} number The number to round.
   * @param {number} [precision=0] The precision to round to.
   * @returns {number} Returns the rounded number.
   * @example
   *
   * _.round(4.006);
   * // => 4
   *
   * _.round(4.006, 2);
   * // => 4.01
   *
   * _.round(4060, -2);
   * // => 4100
   */
  var round = createRound('round');

  /**
   * Subtract two numbers.
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Math
   * @param {number} minuend The first number in a subtraction.
   * @param {number} subtrahend The second number in a subtraction.
   * @returns {number} Returns the difference.
   * @example
   *
   * _.subtract(6, 4);
   * // => 2
   */
  var subtract = createMathOperation(function(minuend, subtrahend) {
    return minuend - subtrahend;
  }, 0);

  /**
   * Computes the sum of the values in `array`.
   *
   * @static
   * @memberOf _
   * @since 3.4.0
   * @category Math
   * @param {Array} array The array to iterate over.
   * @returns {number} Returns the sum.
   * @example
   *
   * _.sum([4, 2, 8, 6]);
   * // => 20
   */
  function sum(array) {
    return (array && array.length)
      ? baseSum(array, identity)
      : 0;
  }

  /**
   * This method is like `_.sum` except that it accepts `iteratee` which is
   * invoked for each element in `array` to generate the value to be summed.
   * The iteratee is invoked with one argument: (value).
   *
   * @static
   * @memberOf _
   * @since 4.0.0
   * @category Math
   * @param {Array} array The array to iterate over.
   * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
   * @returns {number} Returns the sum.
   * @example
   *
   * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
   *
   * _.sumBy(objects, function(o) { return o.n; });
   * // => 20
   *
   * // The `_.property` iteratee shorthand.
   * _.sumBy(objects, 'n');
   * // => 20
   */
  function sumBy(array, iteratee) {
    return (array && array.length)
      ? baseSum(array, getIteratee(iteratee, 2))
      : 0;
  }

  /*------------------------------------------------------------------------*/

  // Add methods that return wrapped values in chain sequences.
  lodash.after = after;
  lodash.ary = ary;
  lodash.assign = assign;
  lodash.assignIn = assignIn;
  lodash.assignInWith = assignInWith;
  lodash.assignWith = assignWith;
  lodash.at = at;
  lodash.before = before;
  lodash.bind = bind;
  lodash.bindAll = bindAll;
  lodash.bindKey = bindKey;
  lodash.castArray = castArray;
  lodash.chain = chain;
  lodash.chunk = chunk;
  lodash.compact = compact;
  lodash.concat = concat;
  lodash.cond = cond;
  lodash.conforms = conforms;
  lodash.constant = constant;
  lodash.countBy = countBy;
  lodash.create = create;
  lodash.curry = curry;
  lodash.curryRight = curryRight;
  lodash.debounce = debounce;
  lodash.defaults = defaults;
  lodash.defaultsDeep = defaultsDeep;
  lodash.defer = defer;
  lodash.delay = delay;
  lodash.difference = difference;
  lodash.differenceBy = differenceBy;
  lodash.differenceWith = differenceWith;
  lodash.drop = drop;
  lodash.dropRight = dropRight;
  lodash.dropRightWhile = dropRightWhile;
  lodash.dropWhile = dropWhile;
  lodash.fill = fill;
  lodash.filter = filter;
  lodash.flatMap = flatMap;
  lodash.flatMapDeep = flatMapDeep;
  lodash.flatMapDepth = flatMapDepth;
  lodash.flatten = flatten;
  lodash.flattenDeep = flattenDeep;
  lodash.flattenDepth = flattenDepth;
  lodash.flip = flip;
  lodash.flow = flow;
  lodash.flowRight = flowRight;
  lodash.fromPairs = fromPairs;
  lodash.functions = functions;
  lodash.functionsIn = functionsIn;
  lodash.groupBy = groupBy;
  lodash.initial = initial;
  lodash.intersection = intersection;
  lodash.intersectionBy = intersectionBy;
  lodash.intersectionWith = intersectionWith;
  lodash.invert = invert;
  lodash.invertBy = invertBy;
  lodash.invokeMap = invokeMap;
  lodash.iteratee = iteratee;
  lodash.keyBy = keyBy;
  lodash.keys = keys;
  lodash.keysIn = keysIn;
  lodash.map = map;
  lodash.mapKeys = mapKeys;
  lodash.mapValues = mapValues;
  lodash.matches = matches;
  lodash.matchesProperty = matchesProperty;
  lodash.memoize = memoize;
  lodash.merge = merge;
  lodash.mergeWith = mergeWith;
  lodash.method = method;
  lodash.methodOf = methodOf;
  lodash.mixin = mixin;
  lodash.negate = negate;
  lodash.nthArg = nthArg;
  lodash.omit = omit;
  lodash.omitBy = omitBy;
  lodash.once = once;
  lodash.orderBy = orderBy;
  lodash.over = over;
  lodash.overArgs = overArgs;
  lodash.overEvery = overEvery;
  lodash.overSome = overSome;
  lodash.partial = partial;
  lodash.partialRight = partialRight;
  lodash.partition = partition;
  lodash.pick = pick;
  lodash.pickBy = pickBy;
  lodash.property = property;
  lodash.propertyOf = propertyOf;
  lodash.pull = pull;
  lodash.pullAll = pullAll;
  lodash.pullAllBy = pullAllBy;
  lodash.pullAllWith = pullAllWith;
  lodash.pullAt = pullAt;
  lodash.range = range;
  lodash.rangeRight = rangeRight;
  lodash.rearg = rearg;
  lodash.reject = reject;
  lodash.remove = remove;
  lodash.rest = rest;
  lodash.reverse = reverse;
  lodash.sampleSize = sampleSize;
  lodash.set = set;
  lodash.setWith = setWith;
  lodash.shuffle = shuffle;
  lodash.slice = slice;
  lodash.sortBy = sortBy;
  lodash.sortedUniq = sortedUniq;
  lodash.sortedUniqBy = sortedUniqBy;
  lodash.split = split;
  lodash.spread = spread;
  lodash.tail = tail;
  lodash.take = take;
  lodash.takeRight = takeRight;
  lodash.takeRightWhile = takeRightWhile;
  lodash.takeWhile = takeWhile;
  lodash.tap = tap;
  lodash.throttle = throttle;
  lodash.thru = thru;
  lodash.toArray = toArray;
  lodash.toPairs = toPairs;
  lodash.toPairsIn = toPairsIn;
  lodash.toPath = toPath;
  lodash.toPlainObject = toPlainObject;
  lodash.transform = transform;
  lodash.unary = unary;
  lodash.union = union;
  lodash.unionBy = unionBy;
  lodash.unionWith = unionWith;
  lodash.uniq = uniq;
  lodash.uniqBy = uniqBy;
  lodash.uniqWith = uniqWith;
  lodash.unset = unset;
  lodash.unzip = unzip;
  lodash.unzipWith = unzipWith;
  lodash.update = update;
  lodash.updateWith = updateWith;
  lodash.values = values;
  lodash.valuesIn = valuesIn;
  lodash.without = without;
  lodash.words = words;
  lodash.wrap = wrap;
  lodash.xor = xor;
  lodash.xorBy = xorBy;
  lodash.xorWith = xorWith;
  lodash.zip = zip;
  lodash.zipObject = zipObject;
  lodash.zipObjectDeep = zipObjectDeep;
  lodash.zipWith = zipWith;

  // Add aliases.
  lodash.entries = toPairs;
  lodash.entriesIn = toPairsIn;
  lodash.extend = assignIn;
  lodash.extendWith = assignInWith;

  // Add methods to `lodash.prototype`.
  mixin(lodash, lodash);

  /*------------------------------------------------------------------------*/

  // Add methods that return unwrapped values in chain sequences.
  lodash.add = add;
  lodash.attempt = attempt;
  lodash.camelCase = camelCase;
  lodash.capitalize = capitalize;
  lodash.ceil = ceil;
  lodash.clamp = clamp;
  lodash.clone = clone;
  lodash.cloneDeep = cloneDeep;
  lodash.cloneDeepWith = cloneDeepWith;
  lodash.cloneWith = cloneWith;
  lodash.conformsTo = conformsTo;
  lodash.deburr = deburr;
  lodash.defaultTo = defaultTo;
  lodash.divide = divide;
  lodash.endsWith = endsWith;
  lodash.eq = eq;
  lodash.escape = escape;
  lodash.escapeRegExp = escapeRegExp;
  lodash.every = every;
  lodash.find = find;
  lodash.findIndex = findIndex;
  lodash.findKey = findKey;
  lodash.findLast = findLast;
  lodash.findLastIndex = findLastIndex;
  lodash.findLastKey = findLastKey;
  lodash.floor = floor;
  lodash.forEach = forEach;
  lodash.forEachRight = forEachRight;
  lodash.forIn = forIn;
  lodash.forInRight = forInRight;
  lodash.forOwn = forOwn;
  lodash.forOwnRight = forOwnRight;
  lodash.get = get;
  lodash.gt = gt;
  lodash.gte = gte;
  lodash.has = has;
  lodash.hasIn = hasIn;
  lodash.head = head;
  lodash.identity = identity;
  lodash.includes = includes;
  lodash.indexOf = indexOf;
  lodash.inRange = inRange;
  lodash.invoke = invoke;
  lodash.isArguments = isArguments;
  lodash.isArray = isArray;
  lodash.isArrayBuffer = isArrayBuffer;
  lodash.isArrayLike = isArrayLike;
  lodash.isArrayLikeObject = isArrayLikeObject;
  lodash.isBoolean = isBoolean;
  lodash.isBuffer = isBuffer;
  lodash.isDate = isDate;
  lodash.isElement = isElement;
  lodash.isEmpty = isEmpty;
  lodash.isEqual = isEqual;
  lodash.isEqualWith = isEqualWith;
  lodash.isError = isError;
  lodash.isFinite = isFinite;
  lodash.isFunction = isFunction;
  lodash.isInteger = isInteger;
  lodash.isLength = isLength;
  lodash.isMap = isMap;
  lodash.isMatch = isMatch;
  lodash.isMatchWith = isMatchWith;
  lodash.isNaN = isNaN;
  lodash.isNative = isNative;
  lodash.isNil = isNil;
  lodash.isNull = isNull;
  lodash.isNumber = isNumber;
  lodash.isObject = isObject;
  lodash.isObjectLike = isObjectLike;
  lodash.isPlainObject = isPlainObject;
  lodash.isRegExp = isRegExp;
  lodash.isSafeInteger = isSafeInteger;
  lodash.isSet = isSet;
  lodash.isString = isString;
  lodash.isSymbol = isSymbol;
  lodash.isTypedArray = isTypedArray;
  lodash.isUndefined = isUndefined;
  lodash.isWeakMap = isWeakMap;
  lodash.isWeakSet = isWeakSet;
  lodash.join = join;
  lodash.kebabCase = kebabCase;
  lodash.last = last;
  lodash.lastIndexOf = lastIndexOf;
  lodash.lowerCase = lowerCase;
  lodash.lowerFirst = lowerFirst;
  lodash.lt = lt;
  lodash.lte = lte;
  lodash.max = max;
  lodash.maxBy = maxBy;
  lodash.mean = mean;
  lodash.meanBy = meanBy;
  lodash.min = min;
  lodash.minBy = minBy;
  lodash.stubArray = stubArray;
  lodash.stubFalse = stubFalse;
  lodash.stubObject = stubObject;
  lodash.stubString = stubString;
  lodash.stubTrue = stubTrue;
  lodash.multiply = multiply;
  lodash.nth = nth;
  lodash.noConflict = noConflict;
  lodash.noop = noop;
  lodash.now = now;
  lodash.pad = pad;
  lodash.padEnd = padEnd;
  lodash.padStart = padStart;
  lodash.parseInt = parseInt;
  lodash.random = random;
  lodash.reduce = reduce;
  lodash.reduceRight = reduceRight;
  lodash.repeat = repeat;
  lodash.replace = replace;
  lodash.result = result;
  lodash.round = round;
  lodash.runInContext = runInContext;
  lodash.sample = sample;
  lodash.size = size;
  lodash.snakeCase = snakeCase;
  lodash.some = some;
  lodash.sortedIndex = sortedIndex;
  lodash.sortedIndexBy = sortedIndexBy;
  lodash.sortedIndexOf = sortedIndexOf;
  lodash.sortedLastIndex = sortedLastIndex;
  lodash.sortedLastIndexBy = sortedLastIndexBy;
  lodash.sortedLastIndexOf = sortedLastIndexOf;
  lodash.startCase = startCase;
  lodash.startsWith = startsWith;
  lodash.subtract = subtract;
  lodash.sum = sum;
  lodash.sumBy = sumBy;
  lodash.template = template;
  lodash.times = times;
  lodash.toFinite = toFinite;
  lodash.toInteger = toInteger;
  lodash.toLength = toLength;
  lodash.toLower = toLower;
  lodash.toNumber = toNumber;
  lodash.toSafeInteger = toSafeInteger;
  lodash.toString = toString;
  lodash.toUpper = toUpper;
  lodash.trim = trim;
  lodash.trimEnd = trimEnd;
  lodash.trimStart = trimStart;
  lodash.truncate = truncate;
  lodash.unescape = unescape;
  lodash.uniqueId = uniqueId;
  lodash.upperCase = upperCase;
  lodash.upperFirst = upperFirst;

  // Add aliases.
  lodash.each = forEach;
  lodash.eachRight = forEachRight;
  lodash.first = head;

  mixin(lodash, (function() {
    var source = {};
    baseForOwn(lodash, function(func, methodName) {
      if (!hasOwnProperty.call(lodash.prototype, methodName)) {
        source[methodName] = func;
      }
    });
    return source;
  }()), { 'chain': false });

  /*------------------------------------------------------------------------*/

  /**
   * The semantic version number.
   *
   * @static
   * @memberOf _
   * @type {string}
   */
  lodash.VERSION = VERSION;

  // Assign default placeholders.
  arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {
    lodash[methodName].placeholder = lodash;
  });

  // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
  arrayEach(['drop', 'take'], function(methodName, index) {
    LazyWrapper.prototype[methodName] = function(n) {
      n = n === undefined ? 1 : nativeMax(toInteger(n), 0);

      var result = (this.__filtered__ && !index)
        ? new LazyWrapper(this)
        : this.clone();

      if (result.__filtered__) {
        result.__takeCount__ = nativeMin(n, result.__takeCount__);
      } else {
        result.__views__.push({
          'size': nativeMin(n, MAX_ARRAY_LENGTH),
          'type': methodName + (result.__dir__ < 0 ? 'Right' : '')
        });
      }
      return result;
    };

    LazyWrapper.prototype[methodName + 'Right'] = function(n) {
      return this.reverse()[methodName](n).reverse();
    };
  });

  // Add `LazyWrapper` methods that accept an `iteratee` value.
  arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
    var type = index + 1,
        isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;

    LazyWrapper.prototype[methodName] = function(iteratee) {
      var result = this.clone();
      result.__iteratees__.push({
        'iteratee': getIteratee(iteratee, 3),
        'type': type
      });
      result.__filtered__ = result.__filtered__ || isFilter;
      return result;
    };
  });

  // Add `LazyWrapper` methods for `_.head` and `_.last`.
  arrayEach(['head', 'last'], function(methodName, index) {
    var takeName = 'take' + (index ? 'Right' : '');

    LazyWrapper.prototype[methodName] = function() {
      return this[takeName](1).value()[0];
    };
  });

  // Add `LazyWrapper` methods for `_.initial` and `_.tail`.
  arrayEach(['initial', 'tail'], function(methodName, index) {
    var dropName = 'drop' + (index ? '' : 'Right');

    LazyWrapper.prototype[methodName] = function() {
      return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
    };
  });

  LazyWrapper.prototype.compact = function() {
    return this.filter(identity);
  };

  LazyWrapper.prototype.find = function(predicate) {
    return this.filter(predicate).head();
  };

  LazyWrapper.prototype.findLast = function(predicate) {
    return this.reverse().find(predicate);
  };

  LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
    if (typeof path == 'function') {
      return new LazyWrapper(this);
    }
    return this.map(function(value) {
      return baseInvoke(value, path, args);
    });
  });

  LazyWrapper.prototype.reject = function(predicate) {
    return this.filter(negate(getIteratee(predicate)));
  };

  LazyWrapper.prototype.slice = function(start, end) {
    start = toInteger(start);

    var result = this;
    if (result.__filtered__ && (start > 0 || end < 0)) {
      return new LazyWrapper(result);
    }
    if (start < 0) {
      result = result.takeRight(-start);
    } else if (start) {
      result = result.drop(start);
    }
    if (end !== undefined) {
      end = toInteger(end);
      result = end < 0 ? result.dropRight(-end) : result.take(end - start);
    }
    return result;
  };

  LazyWrapper.prototype.takeRightWhile = function(predicate) {
    return this.reverse().takeWhile(predicate).reverse();
  };

  LazyWrapper.prototype.toArray = function() {
    return this.take(MAX_ARRAY_LENGTH);
  };

  // Add `LazyWrapper` methods to `lodash.prototype`.
  baseForOwn(LazyWrapper.prototype, function(func, methodName) {
    var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),
        isTaker = /^(?:head|last)$/.test(methodName),
        lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],
        retUnwrapped = isTaker || /^find/.test(methodName);

    if (!lodashFunc) {
      return;
    }
    lodash.prototype[methodName] = function() {
      var value = this.__wrapped__,
          args = isTaker ? [1] : arguments,
          isLazy = value instanceof LazyWrapper,
          iteratee = args[0],
          useLazy = isLazy || isArray(value);

      var interceptor = function(value) {
        var result = lodashFunc.apply(lodash, arrayPush([value], args));
        return (isTaker && chainAll) ? result[0] : result;
      };

      if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
        // Avoid lazy use if the iteratee has a "length" value other than `1`.
        isLazy = useLazy = false;
      }
      var chainAll = this.__chain__,
          isHybrid = !!this.__actions__.length,
          isUnwrapped = retUnwrapped && !chainAll,
          onlyLazy = isLazy && !isHybrid;

      if (!retUnwrapped && useLazy) {
        value = onlyLazy ? value : new LazyWrapper(this);
        var result = func.apply(value, args);
        result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
        return new LodashWrapper(result, chainAll);
      }
      if (isUnwrapped && onlyLazy) {
        return func.apply(this, args);
      }
      result = this.thru(interceptor);
      return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;
    };
  });

  // Add `Array` methods to `lodash.prototype`.
  arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
    var func = arrayProto[methodName],
        chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
        retUnwrapped = /^(?:pop|shift)$/.test(methodName);

    lodash.prototype[methodName] = function() {
      var args = arguments;
      if (retUnwrapped && !this.__chain__) {
        var value = this.value();
        return func.apply(isArray(value) ? value : [], args);
      }
      return this[chainName](function(value) {
        return func.apply(isArray(value) ? value : [], args);
      });
    };
  });

  // Map minified method names to their real names.
  baseForOwn(LazyWrapper.prototype, function(func, methodName) {
    var lodashFunc = lodash[methodName];
    if (lodashFunc) {
      var key = (lodashFunc.name + ''),
          names = realNames[key] || (realNames[key] = []);

      names.push({ 'name': methodName, 'func': lodashFunc });
    }
  });

  realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
    'name': 'wrapper',
    'func': undefined
  }];

  // Add methods to `LazyWrapper`.
  LazyWrapper.prototype.clone = lazyClone;
  LazyWrapper.prototype.reverse = lazyReverse;
  LazyWrapper.prototype.value = lazyValue;

  // Add chain sequence methods to the `lodash` wrapper.
  lodash.prototype.at = wrapperAt;
  lodash.prototype.chain = wrapperChain;
  lodash.prototype.commit = wrapperCommit;
  lodash.prototype.next = wrapperNext;
  lodash.prototype.plant = wrapperPlant;
  lodash.prototype.reverse = wrapperReverse;
  lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;

  // Add lazy aliases.
  lodash.prototype.first = lodash.prototype.head;

  if (symIterator) {
    lodash.prototype[symIterator] = wrapperToIterator;
  }
  return lodash;
});

/*--------------------------------------------------------------------------*/

// Export lodash.
var _ = runInContext();

// Some AMD build optimizers, like r.js, check for condition patterns like:
if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
  // Expose Lodash on the global object to prevent errors when Lodash is
  // loaded by a script tag in the presence of an AMD loader.
  // See http://requirejs.org/docs/errors.html#mismatch for more details.
  // Use `_.noConflict` to remove Lodash from the global object.
  root._ = _;

  // Define as an anonymous module so, through path mapping, it can be
  // referenced as the "underscore" module.
  define(function() {
    return _;
  });
}
// Check for `exports` after `define` in case a build optimizer adds it.
else if (freeModule) {
  // Export for Node.js.
  (freeModule.exports = _)._ = _;
  // Export for CommonJS support.
  freeExports._ = _;
}
else {
  // Export to the global object.
  root._ = _;
}

}.call(this));

/* WEBPACK VAR INJECTION */}.call(this, webpack_require(/*! ./../webpack/buildin/global.js */ “./node_modules/webpack/buildin/global.js”), webpack_require(/*! ./../webpack/buildin/module.js */ “./node_modules/webpack/buildin/module.js”)(module)))

/***/ }),

/***/ “./node_modules/moment/locale sync recursive ^\.\/.*$”: /*!**************************************************!*\

!*** ./node_modules/moment/locale sync ^\.\/.*$ ***!
\**************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

var map = {

"./af": "./node_modules/moment/locale/af.js",
"./af.js": "./node_modules/moment/locale/af.js",
"./ar": "./node_modules/moment/locale/ar.js",
"./ar-dz": "./node_modules/moment/locale/ar-dz.js",
"./ar-dz.js": "./node_modules/moment/locale/ar-dz.js",
"./ar-kw": "./node_modules/moment/locale/ar-kw.js",
"./ar-kw.js": "./node_modules/moment/locale/ar-kw.js",
"./ar-ly": "./node_modules/moment/locale/ar-ly.js",
"./ar-ly.js": "./node_modules/moment/locale/ar-ly.js",
"./ar-ma": "./node_modules/moment/locale/ar-ma.js",
"./ar-ma.js": "./node_modules/moment/locale/ar-ma.js",
"./ar-sa": "./node_modules/moment/locale/ar-sa.js",
"./ar-sa.js": "./node_modules/moment/locale/ar-sa.js",
"./ar-tn": "./node_modules/moment/locale/ar-tn.js",
"./ar-tn.js": "./node_modules/moment/locale/ar-tn.js",
"./ar.js": "./node_modules/moment/locale/ar.js",
"./az": "./node_modules/moment/locale/az.js",
"./az.js": "./node_modules/moment/locale/az.js",
"./be": "./node_modules/moment/locale/be.js",
"./be.js": "./node_modules/moment/locale/be.js",
"./bg": "./node_modules/moment/locale/bg.js",
"./bg.js": "./node_modules/moment/locale/bg.js",
"./bm": "./node_modules/moment/locale/bm.js",
"./bm.js": "./node_modules/moment/locale/bm.js",
"./bn": "./node_modules/moment/locale/bn.js",
"./bn.js": "./node_modules/moment/locale/bn.js",
"./bo": "./node_modules/moment/locale/bo.js",
"./bo.js": "./node_modules/moment/locale/bo.js",
"./br": "./node_modules/moment/locale/br.js",
"./br.js": "./node_modules/moment/locale/br.js",
"./bs": "./node_modules/moment/locale/bs.js",
"./bs.js": "./node_modules/moment/locale/bs.js",
"./ca": "./node_modules/moment/locale/ca.js",
"./ca.js": "./node_modules/moment/locale/ca.js",
"./cs": "./node_modules/moment/locale/cs.js",
"./cs.js": "./node_modules/moment/locale/cs.js",
"./cv": "./node_modules/moment/locale/cv.js",
"./cv.js": "./node_modules/moment/locale/cv.js",
"./cy": "./node_modules/moment/locale/cy.js",
"./cy.js": "./node_modules/moment/locale/cy.js",
"./da": "./node_modules/moment/locale/da.js",
"./da.js": "./node_modules/moment/locale/da.js",
"./de": "./node_modules/moment/locale/de.js",
"./de-at": "./node_modules/moment/locale/de-at.js",
"./de-at.js": "./node_modules/moment/locale/de-at.js",
"./de-ch": "./node_modules/moment/locale/de-ch.js",
"./de-ch.js": "./node_modules/moment/locale/de-ch.js",
"./de.js": "./node_modules/moment/locale/de.js",
"./dv": "./node_modules/moment/locale/dv.js",
"./dv.js": "./node_modules/moment/locale/dv.js",
"./el": "./node_modules/moment/locale/el.js",
"./el.js": "./node_modules/moment/locale/el.js",
"./en-au": "./node_modules/moment/locale/en-au.js",
"./en-au.js": "./node_modules/moment/locale/en-au.js",
"./en-ca": "./node_modules/moment/locale/en-ca.js",
"./en-ca.js": "./node_modules/moment/locale/en-ca.js",
"./en-gb": "./node_modules/moment/locale/en-gb.js",
"./en-gb.js": "./node_modules/moment/locale/en-gb.js",
"./en-ie": "./node_modules/moment/locale/en-ie.js",
"./en-ie.js": "./node_modules/moment/locale/en-ie.js",
"./en-il": "./node_modules/moment/locale/en-il.js",
"./en-il.js": "./node_modules/moment/locale/en-il.js",
"./en-nz": "./node_modules/moment/locale/en-nz.js",
"./en-nz.js": "./node_modules/moment/locale/en-nz.js",
"./eo": "./node_modules/moment/locale/eo.js",
"./eo.js": "./node_modules/moment/locale/eo.js",
"./es": "./node_modules/moment/locale/es.js",
"./es-do": "./node_modules/moment/locale/es-do.js",
"./es-do.js": "./node_modules/moment/locale/es-do.js",
"./es-us": "./node_modules/moment/locale/es-us.js",
"./es-us.js": "./node_modules/moment/locale/es-us.js",
"./es.js": "./node_modules/moment/locale/es.js",
"./et": "./node_modules/moment/locale/et.js",
"./et.js": "./node_modules/moment/locale/et.js",
"./eu": "./node_modules/moment/locale/eu.js",
"./eu.js": "./node_modules/moment/locale/eu.js",
"./fa": "./node_modules/moment/locale/fa.js",
"./fa.js": "./node_modules/moment/locale/fa.js",
"./fi": "./node_modules/moment/locale/fi.js",
"./fi.js": "./node_modules/moment/locale/fi.js",
"./fo": "./node_modules/moment/locale/fo.js",
"./fo.js": "./node_modules/moment/locale/fo.js",
"./fr": "./node_modules/moment/locale/fr.js",
"./fr-ca": "./node_modules/moment/locale/fr-ca.js",
"./fr-ca.js": "./node_modules/moment/locale/fr-ca.js",
"./fr-ch": "./node_modules/moment/locale/fr-ch.js",
"./fr-ch.js": "./node_modules/moment/locale/fr-ch.js",
"./fr.js": "./node_modules/moment/locale/fr.js",
"./fy": "./node_modules/moment/locale/fy.js",
"./fy.js": "./node_modules/moment/locale/fy.js",
"./gd": "./node_modules/moment/locale/gd.js",
"./gd.js": "./node_modules/moment/locale/gd.js",
"./gl": "./node_modules/moment/locale/gl.js",
"./gl.js": "./node_modules/moment/locale/gl.js",
"./gom-latn": "./node_modules/moment/locale/gom-latn.js",
"./gom-latn.js": "./node_modules/moment/locale/gom-latn.js",
"./gu": "./node_modules/moment/locale/gu.js",
"./gu.js": "./node_modules/moment/locale/gu.js",
"./he": "./node_modules/moment/locale/he.js",
"./he.js": "./node_modules/moment/locale/he.js",
"./hi": "./node_modules/moment/locale/hi.js",
"./hi.js": "./node_modules/moment/locale/hi.js",
"./hr": "./node_modules/moment/locale/hr.js",
"./hr.js": "./node_modules/moment/locale/hr.js",
"./hu": "./node_modules/moment/locale/hu.js",
"./hu.js": "./node_modules/moment/locale/hu.js",
"./hy-am": "./node_modules/moment/locale/hy-am.js",
"./hy-am.js": "./node_modules/moment/locale/hy-am.js",
"./id": "./node_modules/moment/locale/id.js",
"./id.js": "./node_modules/moment/locale/id.js",
"./is": "./node_modules/moment/locale/is.js",
"./is.js": "./node_modules/moment/locale/is.js",
"./it": "./node_modules/moment/locale/it.js",
"./it.js": "./node_modules/moment/locale/it.js",
"./ja": "./node_modules/moment/locale/ja.js",
"./ja.js": "./node_modules/moment/locale/ja.js",
"./jv": "./node_modules/moment/locale/jv.js",
"./jv.js": "./node_modules/moment/locale/jv.js",
"./ka": "./node_modules/moment/locale/ka.js",
"./ka.js": "./node_modules/moment/locale/ka.js",
"./kk": "./node_modules/moment/locale/kk.js",
"./kk.js": "./node_modules/moment/locale/kk.js",
"./km": "./node_modules/moment/locale/km.js",
"./km.js": "./node_modules/moment/locale/km.js",
"./kn": "./node_modules/moment/locale/kn.js",
"./kn.js": "./node_modules/moment/locale/kn.js",
"./ko": "./node_modules/moment/locale/ko.js",
"./ko.js": "./node_modules/moment/locale/ko.js",
"./ky": "./node_modules/moment/locale/ky.js",
"./ky.js": "./node_modules/moment/locale/ky.js",
"./lb": "./node_modules/moment/locale/lb.js",
"./lb.js": "./node_modules/moment/locale/lb.js",
"./lo": "./node_modules/moment/locale/lo.js",
"./lo.js": "./node_modules/moment/locale/lo.js",
"./lt": "./node_modules/moment/locale/lt.js",
"./lt.js": "./node_modules/moment/locale/lt.js",
"./lv": "./node_modules/moment/locale/lv.js",
"./lv.js": "./node_modules/moment/locale/lv.js",
"./me": "./node_modules/moment/locale/me.js",
"./me.js": "./node_modules/moment/locale/me.js",
"./mi": "./node_modules/moment/locale/mi.js",
"./mi.js": "./node_modules/moment/locale/mi.js",
"./mk": "./node_modules/moment/locale/mk.js",
"./mk.js": "./node_modules/moment/locale/mk.js",
"./ml": "./node_modules/moment/locale/ml.js",
"./ml.js": "./node_modules/moment/locale/ml.js",
"./mr": "./node_modules/moment/locale/mr.js",
"./mr.js": "./node_modules/moment/locale/mr.js",
"./ms": "./node_modules/moment/locale/ms.js",
"./ms-my": "./node_modules/moment/locale/ms-my.js",
"./ms-my.js": "./node_modules/moment/locale/ms-my.js",
"./ms.js": "./node_modules/moment/locale/ms.js",
"./mt": "./node_modules/moment/locale/mt.js",
"./mt.js": "./node_modules/moment/locale/mt.js",
"./my": "./node_modules/moment/locale/my.js",
"./my.js": "./node_modules/moment/locale/my.js",
"./nb": "./node_modules/moment/locale/nb.js",
"./nb.js": "./node_modules/moment/locale/nb.js",
"./ne": "./node_modules/moment/locale/ne.js",
"./ne.js": "./node_modules/moment/locale/ne.js",
"./nl": "./node_modules/moment/locale/nl.js",
"./nl-be": "./node_modules/moment/locale/nl-be.js",
"./nl-be.js": "./node_modules/moment/locale/nl-be.js",
"./nl.js": "./node_modules/moment/locale/nl.js",
"./nn": "./node_modules/moment/locale/nn.js",
"./nn.js": "./node_modules/moment/locale/nn.js",
"./pa-in": "./node_modules/moment/locale/pa-in.js",
"./pa-in.js": "./node_modules/moment/locale/pa-in.js",
"./pl": "./node_modules/moment/locale/pl.js",
"./pl.js": "./node_modules/moment/locale/pl.js",
"./pt": "./node_modules/moment/locale/pt.js",
"./pt-br": "./node_modules/moment/locale/pt-br.js",
"./pt-br.js": "./node_modules/moment/locale/pt-br.js",
"./pt.js": "./node_modules/moment/locale/pt.js",
"./ro": "./node_modules/moment/locale/ro.js",
"./ro.js": "./node_modules/moment/locale/ro.js",
"./ru": "./node_modules/moment/locale/ru.js",
"./ru.js": "./node_modules/moment/locale/ru.js",
"./sd": "./node_modules/moment/locale/sd.js",
"./sd.js": "./node_modules/moment/locale/sd.js",
"./se": "./node_modules/moment/locale/se.js",
"./se.js": "./node_modules/moment/locale/se.js",
"./si": "./node_modules/moment/locale/si.js",
"./si.js": "./node_modules/moment/locale/si.js",
"./sk": "./node_modules/moment/locale/sk.js",
"./sk.js": "./node_modules/moment/locale/sk.js",
"./sl": "./node_modules/moment/locale/sl.js",
"./sl.js": "./node_modules/moment/locale/sl.js",
"./sq": "./node_modules/moment/locale/sq.js",
"./sq.js": "./node_modules/moment/locale/sq.js",
"./sr": "./node_modules/moment/locale/sr.js",
"./sr-cyrl": "./node_modules/moment/locale/sr-cyrl.js",
"./sr-cyrl.js": "./node_modules/moment/locale/sr-cyrl.js",
"./sr.js": "./node_modules/moment/locale/sr.js",
"./ss": "./node_modules/moment/locale/ss.js",
"./ss.js": "./node_modules/moment/locale/ss.js",
"./sv": "./node_modules/moment/locale/sv.js",
"./sv.js": "./node_modules/moment/locale/sv.js",
"./sw": "./node_modules/moment/locale/sw.js",
"./sw.js": "./node_modules/moment/locale/sw.js",
"./ta": "./node_modules/moment/locale/ta.js",
"./ta.js": "./node_modules/moment/locale/ta.js",
"./te": "./node_modules/moment/locale/te.js",
"./te.js": "./node_modules/moment/locale/te.js",
"./tet": "./node_modules/moment/locale/tet.js",
"./tet.js": "./node_modules/moment/locale/tet.js",
"./tg": "./node_modules/moment/locale/tg.js",
"./tg.js": "./node_modules/moment/locale/tg.js",
"./th": "./node_modules/moment/locale/th.js",
"./th.js": "./node_modules/moment/locale/th.js",
"./tl-ph": "./node_modules/moment/locale/tl-ph.js",
"./tl-ph.js": "./node_modules/moment/locale/tl-ph.js",
"./tlh": "./node_modules/moment/locale/tlh.js",
"./tlh.js": "./node_modules/moment/locale/tlh.js",
"./tr": "./node_modules/moment/locale/tr.js",
"./tr.js": "./node_modules/moment/locale/tr.js",
"./tzl": "./node_modules/moment/locale/tzl.js",
"./tzl.js": "./node_modules/moment/locale/tzl.js",
"./tzm": "./node_modules/moment/locale/tzm.js",
"./tzm-latn": "./node_modules/moment/locale/tzm-latn.js",
"./tzm-latn.js": "./node_modules/moment/locale/tzm-latn.js",
"./tzm.js": "./node_modules/moment/locale/tzm.js",
"./ug-cn": "./node_modules/moment/locale/ug-cn.js",
"./ug-cn.js": "./node_modules/moment/locale/ug-cn.js",
"./uk": "./node_modules/moment/locale/uk.js",
"./uk.js": "./node_modules/moment/locale/uk.js",
"./ur": "./node_modules/moment/locale/ur.js",
"./ur.js": "./node_modules/moment/locale/ur.js",
"./uz": "./node_modules/moment/locale/uz.js",
"./uz-latn": "./node_modules/moment/locale/uz-latn.js",
"./uz-latn.js": "./node_modules/moment/locale/uz-latn.js",
"./uz.js": "./node_modules/moment/locale/uz.js",
"./vi": "./node_modules/moment/locale/vi.js",
"./vi.js": "./node_modules/moment/locale/vi.js",
"./x-pseudo": "./node_modules/moment/locale/x-pseudo.js",
"./x-pseudo.js": "./node_modules/moment/locale/x-pseudo.js",
"./yo": "./node_modules/moment/locale/yo.js",
"./yo.js": "./node_modules/moment/locale/yo.js",
"./zh-cn": "./node_modules/moment/locale/zh-cn.js",
"./zh-cn.js": "./node_modules/moment/locale/zh-cn.js",
"./zh-hk": "./node_modules/moment/locale/zh-hk.js",
"./zh-hk.js": "./node_modules/moment/locale/zh-hk.js",
"./zh-tw": "./node_modules/moment/locale/zh-tw.js",
"./zh-tw.js": "./node_modules/moment/locale/zh-tw.js"

};

function webpackContext(req) {

var id = webpackContextResolve(req);
var module = __webpack_require__(id);
return module;

} function webpackContextResolve(req) {

var id = map[req];
if(!(id + 1)) { // check for number or string
        var e = new Error('Cannot find module "' + req + '".');
        e.code = 'MODULE_NOT_FOUND';
        throw e;
}
return id;

} webpackContext.keys = function webpackContextKeys() {

return Object.keys(map);

}; webpackContext.resolve = webpackContextResolve; module.exports = webpackContext; webpackContext.id = “./node_modules/moment/locale sync recursive ^\.\/.*$”;

/***/ }),

/***/ “./node_modules/moment/locale/af.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/af.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var af = moment.defineLocale('af', {

months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
meridiemParse: /vm|nm/i,
isPM : function (input) {
    return /^nm$/i.test(input);
},
meridiem : function (hours, minutes, isLower) {
    if (hours < 12) {
        return isLower ? 'vm' : 'VM';
    } else {
        return isLower ? 'nm' : 'NM';
    }
},
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[Vandag om] LT',
    nextDay : '[Môre om] LT',
    nextWeek : 'dddd [om] LT',
    lastDay : '[Gister om] LT',
    lastWeek : '[Laas] dddd [om] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'oor %s',
    past : '%s gelede',
    s : '\'n paar sekondes',
    ss : '%d sekondes',
    m : '\'n minuut',
    mm : '%d minute',
    h : '\'n uur',
    hh : '%d ure',
    d : '\'n dag',
    dd : '%d dae',
    M : '\'n maand',
    MM : '%d maande',
    y : '\'n jaar',
    yy : '%d jaar'
},
dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
ordinal : function (number) {
    return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
},
week : {
    dow : 1, // Maandag is die eerste dag van die week.
    doy : 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
}

});

return af;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ar-dz.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/ar-dz.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var arDz = moment.defineLocale('ar-dz', {

months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[اليوم على الساعة] LT',
    nextDay: '[غدا على الساعة] LT',
    nextWeek: 'dddd [على الساعة] LT',
    lastDay: '[أمس على الساعة] LT',
    lastWeek: 'dddd [على الساعة] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'في %s',
    past : 'منذ %s',
    s : 'ثوان',
    ss : '%d ثانية',
    m : 'دقيقة',
    mm : '%d دقائق',
    h : 'ساعة',
    hh : '%d ساعات',
    d : 'يوم',
    dd : '%d أيام',
    M : 'شهر',
    MM : '%d أشهر',
    y : 'سنة',
    yy : '%d سنوات'
},
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 4  // The week that contains Jan 1st is the first week of the year.
}

});

return arDz;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ar-kw.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/ar-kw.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var arKw = moment.defineLocale('ar-kw', {

months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[اليوم على الساعة] LT',
    nextDay: '[غدا على الساعة] LT',
    nextWeek: 'dddd [على الساعة] LT',
    lastDay: '[أمس على الساعة] LT',
    lastWeek: 'dddd [على الساعة] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'في %s',
    past : 'منذ %s',
    s : 'ثوان',
    ss : '%d ثانية',
    m : 'دقيقة',
    mm : '%d دقائق',
    h : 'ساعة',
    hh : '%d ساعات',
    d : 'يوم',
    dd : '%d أيام',
    M : 'شهر',
    MM : '%d أشهر',
    y : 'سنة',
    yy : '%d سنوات'
},
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 12  // The week that contains Jan 1st is the first week of the year.
}

});

return arKw;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ar-ly.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/ar-ly.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
'0': '0'

}, pluralForm = function (n) {

return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;

}, plurals = {

s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']

}, pluralize = function (u) {

return function (number, withoutSuffix, string, isFuture) {
    var f = pluralForm(number),
        str = plurals[u][pluralForm(number)];
    if (f === 2) {
        str = str[withoutSuffix ? 0 : 1];
    }
    return str.replace(/%d/i, number);
};

}, months = [

'يناير',
'فبراير',
'مارس',
'أبريل',
'مايو',
'يونيو',
'يوليو',
'أغسطس',
'سبتمبر',
'أكتوبر',
'نوفمبر',
'ديسمبر'

];

var arLy = moment.defineLocale('ar-ly', {

months : months,
monthsShort : months,
weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'D/\u200FM/\u200FYYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
meridiemParse: /ص|م/,
isPM : function (input) {
    return 'م' === input;
},
meridiem : function (hour, minute, isLower) {
    if (hour < 12) {
        return 'ص';
    } else {
        return 'م';
    }
},
calendar : {
    sameDay: '[اليوم عند الساعة] LT',
    nextDay: '[غدًا عند الساعة] LT',
    nextWeek: 'dddd [عند الساعة] LT',
    lastDay: '[أمس عند الساعة] LT',
    lastWeek: 'dddd [عند الساعة] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'بعد %s',
    past : 'منذ %s',
    s : pluralize('s'),
    ss : pluralize('s'),
    m : pluralize('m'),
    mm : pluralize('m'),
    h : pluralize('h'),
    hh : pluralize('h'),
    d : pluralize('d'),
    dd : pluralize('d'),
    M : pluralize('M'),
    MM : pluralize('M'),
    y : pluralize('y'),
    yy : pluralize('y')
},
preparse: function (string) {
    return string.replace(/،/g, ',');
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    }).replace(/,/g, '،');
},
week : {
    dow : 6, // Saturday is the first day of the week.
    doy : 12  // The week that contains Jan 1st is the first week of the year.
}

});

return arLy;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ar-ma.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/ar-ma.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var arMa = moment.defineLocale('ar-ma', {

months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[اليوم على الساعة] LT',
    nextDay: '[غدا على الساعة] LT',
    nextWeek: 'dddd [على الساعة] LT',
    lastDay: '[أمس على الساعة] LT',
    lastWeek: 'dddd [على الساعة] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'في %s',
    past : 'منذ %s',
    s : 'ثوان',
    ss : '%d ثانية',
    m : 'دقيقة',
    mm : '%d دقائق',
    h : 'ساعة',
    hh : '%d ساعات',
    d : 'يوم',
    dd : '%d أيام',
    M : 'شهر',
    MM : '%d أشهر',
    y : 'سنة',
    yy : '%d سنوات'
},
week : {
    dow : 6, // Saturday is the first day of the week.
    doy : 12  // The week that contains Jan 1st is the first week of the year.
}

});

return arMa;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ar-sa.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/ar-sa.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '١',
'2': '٢',
'3': '٣',
'4': '٤',
'5': '٥',
'6': '٦',
'7': '٧',
'8': '٨',
'9': '٩',
'0': '٠'

}, numberMap = {

'١': '1',
'٢': '2',
'٣': '3',
'٤': '4',
'٥': '5',
'٦': '6',
'٧': '7',
'٨': '8',
'٩': '9',
'٠': '0'

};

var arSa = moment.defineLocale('ar-sa', {

months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
meridiemParse: /ص|م/,
isPM : function (input) {
    return 'م' === input;
},
meridiem : function (hour, minute, isLower) {
    if (hour < 12) {
        return 'ص';
    } else {
        return 'م';
    }
},
calendar : {
    sameDay: '[اليوم على الساعة] LT',
    nextDay: '[غدا على الساعة] LT',
    nextWeek: 'dddd [على الساعة] LT',
    lastDay: '[أمس على الساعة] LT',
    lastWeek: 'dddd [على الساعة] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'في %s',
    past : 'منذ %s',
    s : 'ثوان',
    ss : '%d ثانية',
    m : 'دقيقة',
    mm : '%d دقائق',
    h : 'ساعة',
    hh : '%d ساعات',
    d : 'يوم',
    dd : '%d أيام',
    M : 'شهر',
    MM : '%d أشهر',
    y : 'سنة',
    yy : '%d سنوات'
},
preparse: function (string) {
    return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
        return numberMap[match];
    }).replace(/،/g, ',');
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    }).replace(/,/g, '،');
},
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 6  // The week that contains Jan 1st is the first week of the year.
}

});

return arSa;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ar-tn.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/ar-tn.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var arTn = moment.defineLocale('ar-tn', {

months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact : true,
longDateFormat: {
    LT: 'HH:mm',
    LTS: 'HH:mm:ss',
    L: 'DD/MM/YYYY',
    LL: 'D MMMM YYYY',
    LLL: 'D MMMM YYYY HH:mm',
    LLLL: 'dddd D MMMM YYYY HH:mm'
},
calendar: {
    sameDay: '[اليوم على الساعة] LT',
    nextDay: '[غدا على الساعة] LT',
    nextWeek: 'dddd [على الساعة] LT',
    lastDay: '[أمس على الساعة] LT',
    lastWeek: 'dddd [على الساعة] LT',
    sameElse: 'L'
},
relativeTime: {
    future: 'في %s',
    past: 'منذ %s',
    s: 'ثوان',
    ss : '%d ثانية',
    m: 'دقيقة',
    mm: '%d دقائق',
    h: 'ساعة',
    hh: '%d ساعات',
    d: 'يوم',
    dd: '%d أيام',
    M: 'شهر',
    MM: '%d أشهر',
    y: 'سنة',
    yy: '%d سنوات'
},
week: {
    dow: 1, // Monday is the first day of the week.
    doy: 4 // The week that contains Jan 4th is the first week of the year.
}

});

return arTn;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ar.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ar.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '١',
'2': '٢',
'3': '٣',
'4': '٤',
'5': '٥',
'6': '٦',
'7': '٧',
'8': '٨',
'9': '٩',
'0': '٠'

}, numberMap = {

'١': '1',
'٢': '2',
'٣': '3',
'٤': '4',
'٥': '5',
'٦': '6',
'٧': '7',
'٨': '8',
'٩': '9',
'٠': '0'

}, pluralForm = function (n) {

return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;

}, plurals = {

s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']

}, pluralize = function (u) {

return function (number, withoutSuffix, string, isFuture) {
    var f = pluralForm(number),
        str = plurals[u][pluralForm(number)];
    if (f === 2) {
        str = str[withoutSuffix ? 0 : 1];
    }
    return str.replace(/%d/i, number);
};

}, months = [

'يناير',
'فبراير',
'مارس',
'أبريل',
'مايو',
'يونيو',
'يوليو',
'أغسطس',
'سبتمبر',
'أكتوبر',
'نوفمبر',
'ديسمبر'

];

var ar = moment.defineLocale('ar', {

months : months,
monthsShort : months,
weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'D/\u200FM/\u200FYYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
meridiemParse: /ص|م/,
isPM : function (input) {
    return 'م' === input;
},
meridiem : function (hour, minute, isLower) {
    if (hour < 12) {
        return 'ص';
    } else {
        return 'م';
    }
},
calendar : {
    sameDay: '[اليوم عند الساعة] LT',
    nextDay: '[غدًا عند الساعة] LT',
    nextWeek: 'dddd [عند الساعة] LT',
    lastDay: '[أمس عند الساعة] LT',
    lastWeek: 'dddd [عند الساعة] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'بعد %s',
    past : 'منذ %s',
    s : pluralize('s'),
    ss : pluralize('s'),
    m : pluralize('m'),
    mm : pluralize('m'),
    h : pluralize('h'),
    hh : pluralize('h'),
    d : pluralize('d'),
    dd : pluralize('d'),
    M : pluralize('M'),
    MM : pluralize('M'),
    y : pluralize('y'),
    yy : pluralize('y')
},
preparse: function (string) {
    return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
        return numberMap[match];
    }).replace(/،/g, ',');
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    }).replace(/,/g, '،');
},
week : {
    dow : 6, // Saturday is the first day of the week.
    doy : 12  // The week that contains Jan 1st is the first week of the year.
}

});

return ar;

})));

/***/ }),

/***/ “./node_modules/moment/locale/az.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/az.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var suffixes = {

1: '-inci',
5: '-inci',
8: '-inci',
70: '-inci',
80: '-inci',
2: '-nci',
7: '-nci',
20: '-nci',
50: '-nci',
3: '-üncü',
4: '-üncü',
100: '-üncü',
6: '-ncı',
9: '-uncu',
10: '-uncu',
30: '-uncu',
60: '-ıncı',
90: '-ıncı'

};

var az = moment.defineLocale('az', {

months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[bugün saat] LT',
    nextDay : '[sabah saat] LT',
    nextWeek : '[gələn həftə] dddd [saat] LT',
    lastDay : '[dünən] LT',
    lastWeek : '[keçən həftə] dddd [saat] LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s sonra',
    past : '%s əvvəl',
    s : 'birneçə saniyyə',
    ss : '%d saniyə',
    m : 'bir dəqiqə',
    mm : '%d dəqiqə',
    h : 'bir saat',
    hh : '%d saat',
    d : 'bir gün',
    dd : '%d gün',
    M : 'bir ay',
    MM : '%d ay',
    y : 'bir il',
    yy : '%d il'
},
meridiemParse: /gecə|səhər|gündüz|axşam/,
isPM : function (input) {
    return /^(gündüz|axşam)$/.test(input);
},
meridiem : function (hour, minute, isLower) {
    if (hour < 4) {
        return 'gecə';
    } else if (hour < 12) {
        return 'səhər';
    } else if (hour < 17) {
        return 'gündüz';
    } else {
        return 'axşam';
    }
},
dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
ordinal : function (number) {
    if (number === 0) {  // special case for zero
        return number + '-ıncı';
    }
    var a = number % 10,
        b = number % 100 - a,
        c = number >= 100 ? 100 : null;
    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return az;

})));

/***/ }),

/***/ “./node_modules/moment/locale/be.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/be.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function plural(word, num) {

var forms = word.split('_');
return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);

} function relativeTimeWithPlural(number, withoutSuffix, key) {

var format = {
    'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
    'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
    'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
    'dd': 'дзень_дні_дзён',
    'MM': 'месяц_месяцы_месяцаў',
    'yy': 'год_гады_гадоў'
};
if (key === 'm') {
    return withoutSuffix ? 'хвіліна' : 'хвіліну';
}
else if (key === 'h') {
    return withoutSuffix ? 'гадзіна' : 'гадзіну';
}
else {
    return number + ' ' + plural(format[key], +number);
}

}

var be = moment.defineLocale('be', {

months : {
    format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
    standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
},
monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
weekdays : {
    format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
    standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
    isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/
},
weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY г.',
    LLL : 'D MMMM YYYY г., HH:mm',
    LLLL : 'dddd, D MMMM YYYY г., HH:mm'
},
calendar : {
    sameDay: '[Сёння ў] LT',
    nextDay: '[Заўтра ў] LT',
    lastDay: '[Учора ў] LT',
    nextWeek: function () {
        return '[У] dddd [ў] LT';
    },
    lastWeek: function () {
        switch (this.day()) {
            case 0:
            case 3:
            case 5:
            case 6:
                return '[У мінулую] dddd [ў] LT';
            case 1:
            case 2:
            case 4:
                return '[У мінулы] dddd [ў] LT';
        }
    },
    sameElse: 'L'
},
relativeTime : {
    future : 'праз %s',
    past : '%s таму',
    s : 'некалькі секунд',
    m : relativeTimeWithPlural,
    mm : relativeTimeWithPlural,
    h : relativeTimeWithPlural,
    hh : relativeTimeWithPlural,
    d : 'дзень',
    dd : relativeTimeWithPlural,
    M : 'месяц',
    MM : relativeTimeWithPlural,
    y : 'год',
    yy : relativeTimeWithPlural
},
meridiemParse: /ночы|раніцы|дня|вечара/,
isPM : function (input) {
    return /^(дня|вечара)$/.test(input);
},
meridiem : function (hour, minute, isLower) {
    if (hour < 4) {
        return 'ночы';
    } else if (hour < 12) {
        return 'раніцы';
    } else if (hour < 17) {
        return 'дня';
    } else {
        return 'вечара';
    }
},
dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
ordinal: function (number, period) {
    switch (period) {
        case 'M':
        case 'd':
        case 'DDD':
        case 'w':
        case 'W':
            return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';
        case 'D':
            return number + '-га';
        default:
            return number;
    }
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return be;

})));

/***/ }),

/***/ “./node_modules/moment/locale/bg.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/bg.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var bg = moment.defineLocale('bg', {

months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'D.MM.YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY H:mm',
    LLLL : 'dddd, D MMMM YYYY H:mm'
},
calendar : {
    sameDay : '[Днес в] LT',
    nextDay : '[Утре в] LT',
    nextWeek : 'dddd [в] LT',
    lastDay : '[Вчера в] LT',
    lastWeek : function () {
        switch (this.day()) {
            case 0:
            case 3:
            case 6:
                return '[В изминалата] dddd [в] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[В изминалия] dddd [в] LT';
        }
    },
    sameElse : 'L'
},
relativeTime : {
    future : 'след %s',
    past : 'преди %s',
    s : 'няколко секунди',
    ss : '%d секунди',
    m : 'минута',
    mm : '%d минути',
    h : 'час',
    hh : '%d часа',
    d : 'ден',
    dd : '%d дни',
    M : 'месец',
    MM : '%d месеца',
    y : 'година',
    yy : '%d години'
},
dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
ordinal : function (number) {
    var lastDigit = number % 10,
        last2Digits = number % 100;
    if (number === 0) {
        return number + '-ев';
    } else if (last2Digits === 0) {
        return number + '-ен';
    } else if (last2Digits > 10 && last2Digits < 20) {
        return number + '-ти';
    } else if (lastDigit === 1) {
        return number + '-ви';
    } else if (lastDigit === 2) {
        return number + '-ри';
    } else if (lastDigit === 7 || lastDigit === 8) {
        return number + '-ми';
    } else {
        return number + '-ти';
    }
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return bg;

})));

/***/ }),

/***/ “./node_modules/moment/locale/bm.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/bm.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var bm = moment.defineLocale('bm', {

months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),
monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'MMMM [tile] D [san] YYYY',
    LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
    LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'
},
calendar : {
    sameDay : '[Bi lɛrɛ] LT',
    nextDay : '[Sini lɛrɛ] LT',
    nextWeek : 'dddd [don lɛrɛ] LT',
    lastDay : '[Kunu lɛrɛ] LT',
    lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s kɔnɔ',
    past : 'a bɛ %s bɔ',
    s : 'sanga dama dama',
    ss : 'sekondi %d',
    m : 'miniti kelen',
    mm : 'miniti %d',
    h : 'lɛrɛ kelen',
    hh : 'lɛrɛ %d',
    d : 'tile kelen',
    dd : 'tile %d',
    M : 'kalo kelen',
    MM : 'kalo %d',
    y : 'san kelen',
    yy : 'san %d'
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return bm;

})));

/***/ }),

/***/ “./node_modules/moment/locale/bn.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/bn.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '১',
'2': '২',
'3': '৩',
'4': '৪',
'5': '৫',
'6': '৬',
'7': '৭',
'8': '৮',
'9': '৯',
'0': '০'

}, numberMap = {

'১': '1',
'২': '2',
'৩': '3',
'৪': '4',
'৫': '5',
'৬': '6',
'৭': '7',
'৮': '8',
'৯': '9',
'০': '0'

};

var bn = moment.defineLocale('bn', {

months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
longDateFormat : {
    LT : 'A h:mm সময়',
    LTS : 'A h:mm:ss সময়',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY, A h:mm সময়',
    LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'
},
calendar : {
    sameDay : '[আজ] LT',
    nextDay : '[আগামীকাল] LT',
    nextWeek : 'dddd, LT',
    lastDay : '[গতকাল] LT',
    lastWeek : '[গত] dddd, LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s পরে',
    past : '%s আগে',
    s : 'কয়েক সেকেন্ড',
    ss : '%d সেকেন্ড',
    m : 'এক মিনিট',
    mm : '%d মিনিট',
    h : 'এক ঘন্টা',
    hh : '%d ঘন্টা',
    d : 'এক দিন',
    dd : '%d দিন',
    M : 'এক মাস',
    MM : '%d মাস',
    y : 'এক বছর',
    yy : '%d বছর'
},
preparse: function (string) {
    return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
        return numberMap[match];
    });
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    });
},
meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if ((meridiem === 'রাত' && hour >= 4) ||
            (meridiem === 'দুপুর' && hour < 5) ||
            meridiem === 'বিকাল') {
        return hour + 12;
    } else {
        return hour;
    }
},
meridiem : function (hour, minute, isLower) {
    if (hour < 4) {
        return 'রাত';
    } else if (hour < 10) {
        return 'সকাল';
    } else if (hour < 17) {
        return 'দুপুর';
    } else if (hour < 20) {
        return 'বিকাল';
    } else {
        return 'রাত';
    }
},
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 6  // The week that contains Jan 1st is the first week of the year.
}

});

return bn;

})));

/***/ }),

/***/ “./node_modules/moment/locale/bo.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/bo.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '༡',
'2': '༢',
'3': '༣',
'4': '༤',
'5': '༥',
'6': '༦',
'7': '༧',
'8': '༨',
'9': '༩',
'0': '༠'

}, numberMap = {

'༡': '1',
'༢': '2',
'༣': '3',
'༤': '4',
'༥': '5',
'༦': '6',
'༧': '7',
'༨': '8',
'༩': '9',
'༠': '0'

};

var bo = moment.defineLocale('bo', {

months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
longDateFormat : {
    LT : 'A h:mm',
    LTS : 'A h:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY, A h:mm',
    LLLL : 'dddd, D MMMM YYYY, A h:mm'
},
calendar : {
    sameDay : '[དི་རིང] LT',
    nextDay : '[སང་ཉིན] LT',
    nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',
    lastDay : '[ཁ་སང] LT',
    lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s ལ་',
    past : '%s སྔན་ལ',
    s : 'ལམ་སང',
    ss : '%d སྐར་ཆ།',
    m : 'སྐར་མ་གཅིག',
    mm : '%d སྐར་མ',
    h : 'ཆུ་ཚོད་གཅིག',
    hh : '%d ཆུ་ཚོད',
    d : 'ཉིན་གཅིག',
    dd : '%d ཉིན་',
    M : 'ཟླ་བ་གཅིག',
    MM : '%d ཟླ་བ',
    y : 'ལོ་གཅིག',
    yy : '%d ལོ'
},
preparse: function (string) {
    return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
        return numberMap[match];
    });
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    });
},
meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if ((meridiem === 'མཚན་མོ' && hour >= 4) ||
            (meridiem === 'ཉིན་གུང' && hour < 5) ||
            meridiem === 'དགོང་དག') {
        return hour + 12;
    } else {
        return hour;
    }
},
meridiem : function (hour, minute, isLower) {
    if (hour < 4) {
        return 'མཚན་མོ';
    } else if (hour < 10) {
        return 'ཞོགས་ཀས';
    } else if (hour < 17) {
        return 'ཉིན་གུང';
    } else if (hour < 20) {
        return 'དགོང་དག';
    } else {
        return 'མཚན་མོ';
    }
},
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 6  // The week that contains Jan 1st is the first week of the year.
}

});

return bo;

})));

/***/ }),

/***/ “./node_modules/moment/locale/br.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/br.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function relativeTimeWithMutation(number, withoutSuffix, key) {

var format = {
    'mm': 'munutenn',
    'MM': 'miz',
    'dd': 'devezh'
};
return number + ' ' + mutation(format[key], number);

} function specialMutationForYears(number) {

switch (lastNumber(number)) {
    case 1:
    case 3:
    case 4:
    case 5:
    case 9:
        return number + ' bloaz';
    default:
        return number + ' vloaz';
}

} function lastNumber(number) {

if (number > 9) {
    return lastNumber(number % 10);
}
return number;

} function mutation(text, number) {

if (number === 2) {
    return softMutation(text);
}
return text;

} function softMutation(text) {

var mutationTable = {
    'm': 'v',
    'b': 'v',
    'd': 'z'
};
if (mutationTable[text.charAt(0)] === undefined) {
    return text;
}
return mutationTable[text.charAt(0)] + text.substring(1);

}

var br = moment.defineLocale('br', {

months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'h[e]mm A',
    LTS : 'h[e]mm:ss A',
    L : 'DD/MM/YYYY',
    LL : 'D [a viz] MMMM YYYY',
    LLL : 'D [a viz] MMMM YYYY h[e]mm A',
    LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'
},
calendar : {
    sameDay : '[Hiziv da] LT',
    nextDay : '[Warc\'hoazh da] LT',
    nextWeek : 'dddd [da] LT',
    lastDay : '[Dec\'h da] LT',
    lastWeek : 'dddd [paset da] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'a-benn %s',
    past : '%s \'zo',
    s : 'un nebeud segondennoù',
    ss : '%d eilenn',
    m : 'ur vunutenn',
    mm : relativeTimeWithMutation,
    h : 'un eur',
    hh : '%d eur',
    d : 'un devezh',
    dd : relativeTimeWithMutation,
    M : 'ur miz',
    MM : relativeTimeWithMutation,
    y : 'ur bloaz',
    yy : specialMutationForYears
},
dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
ordinal : function (number) {
    var output = (number === 1) ? 'añ' : 'vet';
    return number + output;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return br;

})));

/***/ }),

/***/ “./node_modules/moment/locale/bs.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/bs.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function translate(number, withoutSuffix, key) {

var result = number + ' ';
switch (key) {
    case 'ss':
        if (number === 1) {
            result += 'sekunda';
        } else if (number === 2 || number === 3 || number === 4) {
            result += 'sekunde';
        } else {
            result += 'sekundi';
        }
        return result;
    case 'm':
        return withoutSuffix ? 'jedna minuta' : 'jedne minute';
    case 'mm':
        if (number === 1) {
            result += 'minuta';
        } else if (number === 2 || number === 3 || number === 4) {
            result += 'minute';
        } else {
            result += 'minuta';
        }
        return result;
    case 'h':
        return withoutSuffix ? 'jedan sat' : 'jednog sata';
    case 'hh':
        if (number === 1) {
            result += 'sat';
        } else if (number === 2 || number === 3 || number === 4) {
            result += 'sata';
        } else {
            result += 'sati';
        }
        return result;
    case 'dd':
        if (number === 1) {
            result += 'dan';
        } else {
            result += 'dana';
        }
        return result;
    case 'MM':
        if (number === 1) {
            result += 'mjesec';
        } else if (number === 2 || number === 3 || number === 4) {
            result += 'mjeseca';
        } else {
            result += 'mjeseci';
        }
        return result;
    case 'yy':
        if (number === 1) {
            result += 'godina';
        } else if (number === 2 || number === 3 || number === 4) {
            result += 'godine';
        } else {
            result += 'godina';
        }
        return result;
}

}

var bs = moment.defineLocale('bs', {

months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
monthsParseExact: true,
weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM YYYY',
    LLL : 'D. MMMM YYYY H:mm',
    LLLL : 'dddd, D. MMMM YYYY H:mm'
},
calendar : {
    sameDay  : '[danas u] LT',
    nextDay  : '[sutra u] LT',
    nextWeek : function () {
        switch (this.day()) {
            case 0:
                return '[u] [nedjelju] [u] LT';
            case 3:
                return '[u] [srijedu] [u] LT';
            case 6:
                return '[u] [subotu] [u] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[u] dddd [u] LT';
        }
    },
    lastDay  : '[jučer u] LT',
    lastWeek : function () {
        switch (this.day()) {
            case 0:
            case 3:
                return '[prošlu] dddd [u] LT';
            case 6:
                return '[prošle] [subote] [u] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[prošli] dddd [u] LT';
        }
    },
    sameElse : 'L'
},
relativeTime : {
    future : 'za %s',
    past   : 'prije %s',
    s      : 'par sekundi',
    ss     : translate,
    m      : translate,
    mm     : translate,
    h      : translate,
    hh     : translate,
    d      : 'dan',
    dd     : translate,
    M      : 'mjesec',
    MM     : translate,
    y      : 'godinu',
    yy     : translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return bs;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ca.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ca.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var ca = moment.defineLocale('ca', {

months : {
    standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
    format: 'de gener_de febrer_de març_d\'abril_de maig_de juny_de juliol_d\'agost_de setembre_d\'octubre_de novembre_de desembre'.split('_'),
    isFormat: /D[oD]?(\s)+MMMM/
},
monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),
monthsParseExact : true,
weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM [de] YYYY',
    ll : 'D MMM YYYY',
    LLL : 'D MMMM [de] YYYY [a les] H:mm',
    lll : 'D MMM YYYY, H:mm',
    LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm',
    llll : 'ddd D MMM YYYY, H:mm'
},
calendar : {
    sameDay : function () {
        return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
    },
    nextDay : function () {
        return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
    },
    nextWeek : function () {
        return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
    },
    lastDay : function () {
        return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
    },
    lastWeek : function () {
        return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
    },
    sameElse : 'L'
},
relativeTime : {
    future : 'd\'aquí %s',
    past : 'fa %s',
    s : 'uns segons',
    ss : '%d segons',
    m : 'un minut',
    mm : '%d minuts',
    h : 'una hora',
    hh : '%d hores',
    d : 'un dia',
    dd : '%d dies',
    M : 'un mes',
    MM : '%d mesos',
    y : 'un any',
    yy : '%d anys'
},
dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
ordinal : function (number, period) {
    var output = (number === 1) ? 'r' :
        (number === 2) ? 'n' :
        (number === 3) ? 'r' :
        (number === 4) ? 't' : 'è';
    if (period === 'w' || period === 'W') {
        output = 'a';
    }
    return number + output;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return ca;

})));

/***/ }),

/***/ “./node_modules/moment/locale/cs.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/cs.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),

monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');

function plural(n) {

return (n > 1) && (n < 5) && (~~(n / 10) !== 1);

} function translate(number, withoutSuffix, key, isFuture) {

var result = number + ' ';
switch (key) {
    case 's':  // a few seconds / in a few seconds / a few seconds ago
        return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
    case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
        if (withoutSuffix || isFuture) {
            return result + (plural(number) ? 'sekundy' : 'sekund');
        } else {
            return result + 'sekundami';
        }
        break;
    case 'm':  // a minute / in a minute / a minute ago
        return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
    case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
        if (withoutSuffix || isFuture) {
            return result + (plural(number) ? 'minuty' : 'minut');
        } else {
            return result + 'minutami';
        }
        break;
    case 'h':  // an hour / in an hour / an hour ago
        return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
    case 'hh': // 9 hours / in 9 hours / 9 hours ago
        if (withoutSuffix || isFuture) {
            return result + (plural(number) ? 'hodiny' : 'hodin');
        } else {
            return result + 'hodinami';
        }
        break;
    case 'd':  // a day / in a day / a day ago
        return (withoutSuffix || isFuture) ? 'den' : 'dnem';
    case 'dd': // 9 days / in 9 days / 9 days ago
        if (withoutSuffix || isFuture) {
            return result + (plural(number) ? 'dny' : 'dní');
        } else {
            return result + 'dny';
        }
        break;
    case 'M':  // a month / in a month / a month ago
        return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
    case 'MM': // 9 months / in 9 months / 9 months ago
        if (withoutSuffix || isFuture) {
            return result + (plural(number) ? 'měsíce' : 'měsíců');
        } else {
            return result + 'měsíci';
        }
        break;
    case 'y':  // a year / in a year / a year ago
        return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
    case 'yy': // 9 years / in 9 years / 9 years ago
        if (withoutSuffix || isFuture) {
            return result + (plural(number) ? 'roky' : 'let');
        } else {
            return result + 'lety';
        }
        break;
}

}

var cs = moment.defineLocale('cs', {

months : months,
monthsShort : monthsShort,
monthsParse : (function (months, monthsShort) {
    var i, _monthsParse = [];
    for (i = 0; i < 12; i++) {
        // use custom parser to solve problem with July (červenec)
        _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
    }
    return _monthsParse;
}(months, monthsShort)),
shortMonthsParse : (function (monthsShort) {
    var i, _shortMonthsParse = [];
    for (i = 0; i < 12; i++) {
        _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');
    }
    return _shortMonthsParse;
}(monthsShort)),
longMonthsParse : (function (months) {
    var i, _longMonthsParse = [];
    for (i = 0; i < 12; i++) {
        _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');
    }
    return _longMonthsParse;
}(months)),
weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
longDateFormat : {
    LT: 'H:mm',
    LTS : 'H:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM YYYY',
    LLL : 'D. MMMM YYYY H:mm',
    LLLL : 'dddd D. MMMM YYYY H:mm',
    l : 'D. M. YYYY'
},
calendar : {
    sameDay: '[dnes v] LT',
    nextDay: '[zítra v] LT',
    nextWeek: function () {
        switch (this.day()) {
            case 0:
                return '[v neděli v] LT';
            case 1:
            case 2:
                return '[v] dddd [v] LT';
            case 3:
                return '[ve středu v] LT';
            case 4:
                return '[ve čtvrtek v] LT';
            case 5:
                return '[v pátek v] LT';
            case 6:
                return '[v sobotu v] LT';
        }
    },
    lastDay: '[včera v] LT',
    lastWeek: function () {
        switch (this.day()) {
            case 0:
                return '[minulou neděli v] LT';
            case 1:
            case 2:
                return '[minulé] dddd [v] LT';
            case 3:
                return '[minulou středu v] LT';
            case 4:
            case 5:
                return '[minulý] dddd [v] LT';
            case 6:
                return '[minulou sobotu v] LT';
        }
    },
    sameElse: 'L'
},
relativeTime : {
    future : 'za %s',
    past : 'před %s',
    s : translate,
    ss : translate,
    m : translate,
    mm : translate,
    h : translate,
    hh : translate,
    d : translate,
    dd : translate,
    M : translate,
    MM : translate,
    y : translate,
    yy : translate
},
dayOfMonthOrdinalParse : /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return cs;

})));

/***/ }),

/***/ “./node_modules/moment/locale/cv.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/cv.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var cv = moment.defineLocale('cv', {

months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD-MM-YYYY',
    LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
    LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
    LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
},
calendar : {
    sameDay: '[Паян] LT [сехетре]',
    nextDay: '[Ыран] LT [сехетре]',
    lastDay: '[Ӗнер] LT [сехетре]',
    nextWeek: '[Ҫитес] dddd LT [сехетре]',
    lastWeek: '[Иртнӗ] dddd LT [сехетре]',
    sameElse: 'L'
},
relativeTime : {
    future : function (output) {
        var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
        return output + affix;
    },
    past : '%s каялла',
    s : 'пӗр-ик ҫеккунт',
    ss : '%d ҫеккунт',
    m : 'пӗр минут',
    mm : '%d минут',
    h : 'пӗр сехет',
    hh : '%d сехет',
    d : 'пӗр кун',
    dd : '%d кун',
    M : 'пӗр уйӑх',
    MM : '%d уйӑх',
    y : 'пӗр ҫул',
    yy : '%d ҫул'
},
dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
ordinal : '%d-мӗш',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return cv;

})));

/***/ }),

/***/ “./node_modules/moment/locale/cy.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/cy.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var cy = moment.defineLocale('cy', {

months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
weekdaysParseExact : true,
// time formats are the same as en-gb
longDateFormat: {
    LT: 'HH:mm',
    LTS : 'HH:mm:ss',
    L: 'DD/MM/YYYY',
    LL: 'D MMMM YYYY',
    LLL: 'D MMMM YYYY HH:mm',
    LLLL: 'dddd, D MMMM YYYY HH:mm'
},
calendar: {
    sameDay: '[Heddiw am] LT',
    nextDay: '[Yfory am] LT',
    nextWeek: 'dddd [am] LT',
    lastDay: '[Ddoe am] LT',
    lastWeek: 'dddd [diwethaf am] LT',
    sameElse: 'L'
},
relativeTime: {
    future: 'mewn %s',
    past: '%s yn ôl',
    s: 'ychydig eiliadau',
    ss: '%d eiliad',
    m: 'munud',
    mm: '%d munud',
    h: 'awr',
    hh: '%d awr',
    d: 'diwrnod',
    dd: '%d diwrnod',
    M: 'mis',
    MM: '%d mis',
    y: 'blwyddyn',
    yy: '%d flynedd'
},
dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
// traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
ordinal: function (number) {
    var b = number,
        output = '',
        lookup = [
            '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
            'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
        ];
    if (b > 20) {
        if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
            output = 'fed'; // not 30ain, 70ain or 90ain
        } else {
            output = 'ain';
        }
    } else if (b > 0) {
        output = lookup[b];
    }
    return number + output;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return cy;

})));

/***/ }),

/***/ “./node_modules/moment/locale/da.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/da.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var da = moment.defineLocale('da', {

months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM YYYY',
    LLL : 'D. MMMM YYYY HH:mm',
    LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'
},
calendar : {
    sameDay : '[i dag kl.] LT',
    nextDay : '[i morgen kl.] LT',
    nextWeek : 'på dddd [kl.] LT',
    lastDay : '[i går kl.] LT',
    lastWeek : '[i] dddd[s kl.] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'om %s',
    past : '%s siden',
    s : 'få sekunder',
    ss : '%d sekunder',
    m : 'et minut',
    mm : '%d minutter',
    h : 'en time',
    hh : '%d timer',
    d : 'en dag',
    dd : '%d dage',
    M : 'en måned',
    MM : '%d måneder',
    y : 'et år',
    yy : '%d år'
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return da;

})));

/***/ }),

/***/ “./node_modules/moment/locale/de-at.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/de-at.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function processRelativeTime(number, withoutSuffix, key, isFuture) {

var format = {
    'm': ['eine Minute', 'einer Minute'],
    'h': ['eine Stunde', 'einer Stunde'],
    'd': ['ein Tag', 'einem Tag'],
    'dd': [number + ' Tage', number + ' Tagen'],
    'M': ['ein Monat', 'einem Monat'],
    'MM': [number + ' Monate', number + ' Monaten'],
    'y': ['ein Jahr', 'einem Jahr'],
    'yy': [number + ' Jahre', number + ' Jahren']
};
return withoutSuffix ? format[key][0] : format[key][1];

}

var deAt = moment.defineLocale('de-at', {

months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
monthsParseExact : true,
weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT: 'HH:mm',
    LTS: 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM YYYY',
    LLL : 'D. MMMM YYYY HH:mm',
    LLLL : 'dddd, D. MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[heute um] LT [Uhr]',
    sameElse: 'L',
    nextDay: '[morgen um] LT [Uhr]',
    nextWeek: 'dddd [um] LT [Uhr]',
    lastDay: '[gestern um] LT [Uhr]',
    lastWeek: '[letzten] dddd [um] LT [Uhr]'
},
relativeTime : {
    future : 'in %s',
    past : 'vor %s',
    s : 'ein paar Sekunden',
    ss : '%d Sekunden',
    m : processRelativeTime,
    mm : '%d Minuten',
    h : processRelativeTime,
    hh : '%d Stunden',
    d : processRelativeTime,
    dd : processRelativeTime,
    M : processRelativeTime,
    MM : processRelativeTime,
    y : processRelativeTime,
    yy : processRelativeTime
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return deAt;

})));

/***/ }),

/***/ “./node_modules/moment/locale/de-ch.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/de-ch.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function processRelativeTime(number, withoutSuffix, key, isFuture) {

var format = {
    'm': ['eine Minute', 'einer Minute'],
    'h': ['eine Stunde', 'einer Stunde'],
    'd': ['ein Tag', 'einem Tag'],
    'dd': [number + ' Tage', number + ' Tagen'],
    'M': ['ein Monat', 'einem Monat'],
    'MM': [number + ' Monate', number + ' Monaten'],
    'y': ['ein Jahr', 'einem Jahr'],
    'yy': [number + ' Jahre', number + ' Jahren']
};
return withoutSuffix ? format[key][0] : format[key][1];

}

var deCh = moment.defineLocale('de-ch', {

months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
monthsParseExact : true,
weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT: 'HH:mm',
    LTS: 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM YYYY',
    LLL : 'D. MMMM YYYY HH:mm',
    LLLL : 'dddd, D. MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[heute um] LT [Uhr]',
    sameElse: 'L',
    nextDay: '[morgen um] LT [Uhr]',
    nextWeek: 'dddd [um] LT [Uhr]',
    lastDay: '[gestern um] LT [Uhr]',
    lastWeek: '[letzten] dddd [um] LT [Uhr]'
},
relativeTime : {
    future : 'in %s',
    past : 'vor %s',
    s : 'ein paar Sekunden',
    ss : '%d Sekunden',
    m : processRelativeTime,
    mm : '%d Minuten',
    h : processRelativeTime,
    hh : '%d Stunden',
    d : processRelativeTime,
    dd : processRelativeTime,
    M : processRelativeTime,
    MM : processRelativeTime,
    y : processRelativeTime,
    yy : processRelativeTime
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return deCh;

})));

/***/ }),

/***/ “./node_modules/moment/locale/de.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/de.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function processRelativeTime(number, withoutSuffix, key, isFuture) {

var format = {
    'm': ['eine Minute', 'einer Minute'],
    'h': ['eine Stunde', 'einer Stunde'],
    'd': ['ein Tag', 'einem Tag'],
    'dd': [number + ' Tage', number + ' Tagen'],
    'M': ['ein Monat', 'einem Monat'],
    'MM': [number + ' Monate', number + ' Monaten'],
    'y': ['ein Jahr', 'einem Jahr'],
    'yy': [number + ' Jahre', number + ' Jahren']
};
return withoutSuffix ? format[key][0] : format[key][1];

}

var de = moment.defineLocale('de', {

months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
monthsParseExact : true,
weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT: 'HH:mm',
    LTS: 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM YYYY',
    LLL : 'D. MMMM YYYY HH:mm',
    LLLL : 'dddd, D. MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[heute um] LT [Uhr]',
    sameElse: 'L',
    nextDay: '[morgen um] LT [Uhr]',
    nextWeek: 'dddd [um] LT [Uhr]',
    lastDay: '[gestern um] LT [Uhr]',
    lastWeek: '[letzten] dddd [um] LT [Uhr]'
},
relativeTime : {
    future : 'in %s',
    past : 'vor %s',
    s : 'ein paar Sekunden',
    ss : '%d Sekunden',
    m : processRelativeTime,
    mm : '%d Minuten',
    h : processRelativeTime,
    hh : '%d Stunden',
    d : processRelativeTime,
    dd : processRelativeTime,
    M : processRelativeTime,
    MM : processRelativeTime,
    y : processRelativeTime,
    yy : processRelativeTime
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return de;

})));

/***/ }),

/***/ “./node_modules/moment/locale/dv.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/dv.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var months = [

'ޖެނުއަރީ',
'ފެބްރުއަރީ',
'މާރިޗު',
'އޭޕްރީލު',
'މޭ',
'ޖޫން',
'ޖުލައި',
'އޯގަސްޓު',
'ސެޕްޓެމްބަރު',
'އޮކްޓޯބަރު',
'ނޮވެމްބަރު',
'ޑިސެމްބަރު'

], weekdays = [

'އާދިއްތަ',
'ހޯމަ',
'އަންގާރަ',
'ބުދަ',
'ބުރާސްފަތި',
'ހުކުރު',
'ހޮނިހިރު'

];

var dv = moment.defineLocale('dv', {

months : months,
monthsShort : months,
weekdays : weekdays,
weekdaysShort : weekdays,
weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
longDateFormat : {

    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'D/M/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
meridiemParse: /މކ|މފ/,
isPM : function (input) {
    return 'މފ' === input;
},
meridiem : function (hour, minute, isLower) {
    if (hour < 12) {
        return 'މކ';
    } else {
        return 'މފ';
    }
},
calendar : {
    sameDay : '[މިއަދު] LT',
    nextDay : '[މާދަމާ] LT',
    nextWeek : 'dddd LT',
    lastDay : '[އިއްޔެ] LT',
    lastWeek : '[ފާއިތުވި] dddd LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'ތެރޭގައި %s',
    past : 'ކުރިން %s',
    s : 'ސިކުންތުކޮޅެއް',
    ss : 'd% ސިކުންތު',
    m : 'މިނިޓެއް',
    mm : 'މިނިޓު %d',
    h : 'ގަޑިއިރެއް',
    hh : 'ގަޑިއިރު %d',
    d : 'ދުވަހެއް',
    dd : 'ދުވަސް %d',
    M : 'މަހެއް',
    MM : 'މަސް %d',
    y : 'އަހަރެއް',
    yy : 'އަހަރު %d'
},
preparse: function (string) {
    return string.replace(/،/g, ',');
},
postformat: function (string) {
    return string.replace(/,/g, '،');
},
week : {
    dow : 7,  // Sunday is the first day of the week.
    doy : 12  // The week that contains Jan 1st is the first week of the year.
}

});

return dv;

})));

/***/ }),

/***/ “./node_modules/moment/locale/el.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/el.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function isFunction(input) {

return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';

}

var el = moment.defineLocale('el', {

monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
months : function (momentToFormat, format) {
    if (!momentToFormat) {
        return this._monthsNominativeEl;
    } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
        return this._monthsGenitiveEl[momentToFormat.month()];
    } else {
        return this._monthsNominativeEl[momentToFormat.month()];
    }
},
monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
meridiem : function (hours, minutes, isLower) {
    if (hours > 11) {
        return isLower ? 'μμ' : 'ΜΜ';
    } else {
        return isLower ? 'πμ' : 'ΠΜ';
    }
},
isPM : function (input) {
    return ((input + '').toLowerCase()[0] === 'μ');
},
meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
longDateFormat : {
    LT : 'h:mm A',
    LTS : 'h:mm:ss A',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY h:mm A',
    LLLL : 'dddd, D MMMM YYYY h:mm A'
},
calendarEl : {
    sameDay : '[Σήμερα {}] LT',
    nextDay : '[Αύριο {}] LT',
    nextWeek : 'dddd [{}] LT',
    lastDay : '[Χθες {}] LT',
    lastWeek : function () {
        switch (this.day()) {
            case 6:
                return '[το προηγούμενο] dddd [{}] LT';
            default:
                return '[την προηγούμενη] dddd [{}] LT';
        }
    },
    sameElse : 'L'
},
calendar : function (key, mom) {
    var output = this._calendarEl[key],
        hours = mom && mom.hours();
    if (isFunction(output)) {
        output = output.apply(mom);
    }
    return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
},
relativeTime : {
    future : 'σε %s',
    past : '%s πριν',
    s : 'λίγα δευτερόλεπτα',
    ss : '%d δευτερόλεπτα',
    m : 'ένα λεπτό',
    mm : '%d λεπτά',
    h : 'μία ώρα',
    hh : '%d ώρες',
    d : 'μία μέρα',
    dd : '%d μέρες',
    M : 'ένας μήνας',
    MM : '%d μήνες',
    y : 'ένας χρόνος',
    yy : '%d χρόνια'
},
dayOfMonthOrdinalParse: /\d{1,2}η/,
ordinal: '%dη',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4st is the first week of the year.
}

});

return el;

})));

/***/ }),

/***/ “./node_modules/moment/locale/en-au.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/en-au.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var enAu = moment.defineLocale('en-au', {

months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
longDateFormat : {
    LT : 'h:mm A',
    LTS : 'h:mm:ss A',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY h:mm A',
    LLLL : 'dddd, D MMMM YYYY h:mm A'
},
calendar : {
    sameDay : '[Today at] LT',
    nextDay : '[Tomorrow at] LT',
    nextWeek : 'dddd [at] LT',
    lastDay : '[Yesterday at] LT',
    lastWeek : '[Last] dddd [at] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'in %s',
    past : '%s ago',
    s : 'a few seconds',
    ss : '%d seconds',
    m : 'a minute',
    mm : '%d minutes',
    h : 'an hour',
    hh : '%d hours',
    d : 'a day',
    dd : '%d days',
    M : 'a month',
    MM : '%d months',
    y : 'a year',
    yy : '%d years'
},
dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
    var b = number % 10,
        output = (~~(number % 100 / 10) === 1) ? 'th' :
        (b === 1) ? 'st' :
        (b === 2) ? 'nd' :
        (b === 3) ? 'rd' : 'th';
    return number + output;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return enAu;

})));

/***/ }),

/***/ “./node_modules/moment/locale/en-ca.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/en-ca.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var enCa = moment.defineLocale('en-ca', {

months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
longDateFormat : {
    LT : 'h:mm A',
    LTS : 'h:mm:ss A',
    L : 'YYYY-MM-DD',
    LL : 'MMMM D, YYYY',
    LLL : 'MMMM D, YYYY h:mm A',
    LLLL : 'dddd, MMMM D, YYYY h:mm A'
},
calendar : {
    sameDay : '[Today at] LT',
    nextDay : '[Tomorrow at] LT',
    nextWeek : 'dddd [at] LT',
    lastDay : '[Yesterday at] LT',
    lastWeek : '[Last] dddd [at] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'in %s',
    past : '%s ago',
    s : 'a few seconds',
    ss : '%d seconds',
    m : 'a minute',
    mm : '%d minutes',
    h : 'an hour',
    hh : '%d hours',
    d : 'a day',
    dd : '%d days',
    M : 'a month',
    MM : '%d months',
    y : 'a year',
    yy : '%d years'
},
dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
    var b = number % 10,
        output = (~~(number % 100 / 10) === 1) ? 'th' :
        (b === 1) ? 'st' :
        (b === 2) ? 'nd' :
        (b === 3) ? 'rd' : 'th';
    return number + output;
}

});

return enCa;

})));

/***/ }),

/***/ “./node_modules/moment/locale/en-gb.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/en-gb.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var enGb = moment.defineLocale('en-gb', {

months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[Today at] LT',
    nextDay : '[Tomorrow at] LT',
    nextWeek : 'dddd [at] LT',
    lastDay : '[Yesterday at] LT',
    lastWeek : '[Last] dddd [at] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'in %s',
    past : '%s ago',
    s : 'a few seconds',
    ss : '%d seconds',
    m : 'a minute',
    mm : '%d minutes',
    h : 'an hour',
    hh : '%d hours',
    d : 'a day',
    dd : '%d days',
    M : 'a month',
    MM : '%d months',
    y : 'a year',
    yy : '%d years'
},
dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
    var b = number % 10,
        output = (~~(number % 100 / 10) === 1) ? 'th' :
        (b === 1) ? 'st' :
        (b === 2) ? 'nd' :
        (b === 3) ? 'rd' : 'th';
    return number + output;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return enGb;

})));

/***/ }),

/***/ “./node_modules/moment/locale/en-ie.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/en-ie.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var enIe = moment.defineLocale('en-ie', {

months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD-MM-YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[Today at] LT',
    nextDay : '[Tomorrow at] LT',
    nextWeek : 'dddd [at] LT',
    lastDay : '[Yesterday at] LT',
    lastWeek : '[Last] dddd [at] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'in %s',
    past : '%s ago',
    s : 'a few seconds',
    ss : '%d seconds',
    m : 'a minute',
    mm : '%d minutes',
    h : 'an hour',
    hh : '%d hours',
    d : 'a day',
    dd : '%d days',
    M : 'a month',
    MM : '%d months',
    y : 'a year',
    yy : '%d years'
},
dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
    var b = number % 10,
        output = (~~(number % 100 / 10) === 1) ? 'th' :
        (b === 1) ? 'st' :
        (b === 2) ? 'nd' :
        (b === 3) ? 'rd' : 'th';
    return number + output;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return enIe;

})));

/***/ }),

/***/ “./node_modules/moment/locale/en-il.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/en-il.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var enIl = moment.defineLocale('en-il', {

months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[Today at] LT',
    nextDay : '[Tomorrow at] LT',
    nextWeek : 'dddd [at] LT',
    lastDay : '[Yesterday at] LT',
    lastWeek : '[Last] dddd [at] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'in %s',
    past : '%s ago',
    s : 'a few seconds',
    m : 'a minute',
    mm : '%d minutes',
    h : 'an hour',
    hh : '%d hours',
    d : 'a day',
    dd : '%d days',
    M : 'a month',
    MM : '%d months',
    y : 'a year',
    yy : '%d years'
},
dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
    var b = number % 10,
        output = (~~(number % 100 / 10) === 1) ? 'th' :
        (b === 1) ? 'st' :
        (b === 2) ? 'nd' :
        (b === 3) ? 'rd' : 'th';
    return number + output;
}

});

return enIl;

})));

/***/ }),

/***/ “./node_modules/moment/locale/en-nz.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/en-nz.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var enNz = moment.defineLocale('en-nz', {

months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
longDateFormat : {
    LT : 'h:mm A',
    LTS : 'h:mm:ss A',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY h:mm A',
    LLLL : 'dddd, D MMMM YYYY h:mm A'
},
calendar : {
    sameDay : '[Today at] LT',
    nextDay : '[Tomorrow at] LT',
    nextWeek : 'dddd [at] LT',
    lastDay : '[Yesterday at] LT',
    lastWeek : '[Last] dddd [at] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'in %s',
    past : '%s ago',
    s : 'a few seconds',
    ss : '%d seconds',
    m : 'a minute',
    mm : '%d minutes',
    h : 'an hour',
    hh : '%d hours',
    d : 'a day',
    dd : '%d days',
    M : 'a month',
    MM : '%d months',
    y : 'a year',
    yy : '%d years'
},
dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
    var b = number % 10,
        output = (~~(number % 100 / 10) === 1) ? 'th' :
        (b === 1) ? 'st' :
        (b === 2) ? 'nd' :
        (b === 3) ? 'rd' : 'th';
    return number + output;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return enNz;

})));

/***/ }),

/***/ “./node_modules/moment/locale/eo.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/eo.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var eo = moment.defineLocale('eo', {

months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),
monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),
weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'YYYY-MM-DD',
    LL : 'D[-a de] MMMM, YYYY',
    LLL : 'D[-a de] MMMM, YYYY HH:mm',
    LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'
},
meridiemParse: /[ap]\.t\.m/i,
isPM: function (input) {
    return input.charAt(0).toLowerCase() === 'p';
},
meridiem : function (hours, minutes, isLower) {
    if (hours > 11) {
        return isLower ? 'p.t.m.' : 'P.T.M.';
    } else {
        return isLower ? 'a.t.m.' : 'A.T.M.';
    }
},
calendar : {
    sameDay : '[Hodiaŭ je] LT',
    nextDay : '[Morgaŭ je] LT',
    nextWeek : 'dddd [je] LT',
    lastDay : '[Hieraŭ je] LT',
    lastWeek : '[pasinta] dddd [je] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'post %s',
    past : 'antaŭ %s',
    s : 'sekundoj',
    ss : '%d sekundoj',
    m : 'minuto',
    mm : '%d minutoj',
    h : 'horo',
    hh : '%d horoj',
    d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
    dd : '%d tagoj',
    M : 'monato',
    MM : '%d monatoj',
    y : 'jaro',
    yy : '%d jaroj'
},
dayOfMonthOrdinalParse: /\d{1,2}a/,
ordinal : '%da',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return eo;

})));

/***/ }),

/***/ “./node_modules/moment/locale/es-do.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/es-do.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),

monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');

var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene.?|feb.?|mar.?|abr.?|may.?|jun.?|jul.?|ago.?|sep.?|oct.?|nov.?|dic.?)/i;

var esDo = moment.defineLocale('es-do', {

months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
monthsShort : function (m, format) {
    if (!m) {
        return monthsShortDot;
    } else if (/-MMM-/.test(format)) {
        return monthsShort[m.month()];
    } else {
        return monthsShortDot[m.month()];
    }
},
monthsRegex: monthsRegex,
monthsShortRegex: monthsRegex,
monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
monthsParse: monthsParse,
longMonthsParse: monthsParse,
shortMonthsParse: monthsParse,
weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'h:mm A',
    LTS : 'h:mm:ss A',
    L : 'DD/MM/YYYY',
    LL : 'D [de] MMMM [de] YYYY',
    LLL : 'D [de] MMMM [de] YYYY h:mm A',
    LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'
},
calendar : {
    sameDay : function () {
        return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    nextDay : function () {
        return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    nextWeek : function () {
        return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    lastDay : function () {
        return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    lastWeek : function () {
        return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    sameElse : 'L'
},
relativeTime : {
    future : 'en %s',
    past : 'hace %s',
    s : 'unos segundos',
    ss : '%d segundos',
    m : 'un minuto',
    mm : '%d minutos',
    h : 'una hora',
    hh : '%d horas',
    d : 'un día',
    dd : '%d días',
    M : 'un mes',
    MM : '%d meses',
    y : 'un año',
    yy : '%d años'
},
dayOfMonthOrdinalParse : /\d{1,2}º/,
ordinal : '%dº',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return esDo;

})));

/***/ }),

/***/ “./node_modules/moment/locale/es-us.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/es-us.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),

monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');

var esUs = moment.defineLocale('es-us', {

months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
monthsShort : function (m, format) {
    if (!m) {
        return monthsShortDot;
    } else if (/-MMM-/.test(format)) {
        return monthsShort[m.month()];
    } else {
        return monthsShortDot[m.month()];
    }
},
monthsParseExact : true,
weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'h:mm A',
    LTS : 'h:mm:ss A',
    L : 'MM/DD/YYYY',
    LL : 'MMMM [de] D [de] YYYY',
    LLL : 'MMMM [de] D [de] YYYY h:mm A',
    LLLL : 'dddd, MMMM [de] D [de] YYYY h:mm A'
},
calendar : {
    sameDay : function () {
        return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    nextDay : function () {
        return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    nextWeek : function () {
        return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    lastDay : function () {
        return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    lastWeek : function () {
        return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    sameElse : 'L'
},
relativeTime : {
    future : 'en %s',
    past : 'hace %s',
    s : 'unos segundos',
    ss : '%d segundos',
    m : 'un minuto',
    mm : '%d minutos',
    h : 'una hora',
    hh : '%d horas',
    d : 'un día',
    dd : '%d días',
    M : 'un mes',
    MM : '%d meses',
    y : 'un año',
    yy : '%d años'
},
dayOfMonthOrdinalParse : /\d{1,2}º/,
ordinal : '%dº',
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 6  // The week that contains Jan 1st is the first week of the year.
}

});

return esUs;

})));

/***/ }),

/***/ “./node_modules/moment/locale/es.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/es.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),

monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');

var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene.?|feb.?|mar.?|abr.?|may.?|jun.?|jul.?|ago.?|sep.?|oct.?|nov.?|dic.?)/i;

var es = moment.defineLocale('es', {

months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
monthsShort : function (m, format) {
    if (!m) {
        return monthsShortDot;
    } else if (/-MMM-/.test(format)) {
        return monthsShort[m.month()];
    } else {
        return monthsShortDot[m.month()];
    }
},
monthsRegex : monthsRegex,
monthsShortRegex : monthsRegex,
monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
monthsShortStrictRegex : /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
monthsParse : monthsParse,
longMonthsParse : monthsParse,
shortMonthsParse : monthsParse,
weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D [de] MMMM [de] YYYY',
    LLL : 'D [de] MMMM [de] YYYY H:mm',
    LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
},
calendar : {
    sameDay : function () {
        return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    nextDay : function () {
        return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    nextWeek : function () {
        return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    lastDay : function () {
        return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    lastWeek : function () {
        return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
    },
    sameElse : 'L'
},
relativeTime : {
    future : 'en %s',
    past : 'hace %s',
    s : 'unos segundos',
    ss : '%d segundos',
    m : 'un minuto',
    mm : '%d minutos',
    h : 'una hora',
    hh : '%d horas',
    d : 'un día',
    dd : '%d días',
    M : 'un mes',
    MM : '%d meses',
    y : 'un año',
    yy : '%d años'
},
dayOfMonthOrdinalParse : /\d{1,2}º/,
ordinal : '%dº',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return es;

})));

/***/ }),

/***/ “./node_modules/moment/locale/et.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/et.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function processRelativeTime(number, withoutSuffix, key, isFuture) {

var format = {
    's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
    'ss': [number + 'sekundi', number + 'sekundit'],
    'm' : ['ühe minuti', 'üks minut'],
    'mm': [number + ' minuti', number + ' minutit'],
    'h' : ['ühe tunni', 'tund aega', 'üks tund'],
    'hh': [number + ' tunni', number + ' tundi'],
    'd' : ['ühe päeva', 'üks päev'],
    'M' : ['kuu aja', 'kuu aega', 'üks kuu'],
    'MM': [number + ' kuu', number + ' kuud'],
    'y' : ['ühe aasta', 'aasta', 'üks aasta'],
    'yy': [number + ' aasta', number + ' aastat']
};
if (withoutSuffix) {
    return format[key][2] ? format[key][2] : format[key][1];
}
return isFuture ? format[key][0] : format[key][1];

}

var et = moment.defineLocale('et', {

months        : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
monthsShort   : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
weekdays      : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),
weekdaysMin   : 'P_E_T_K_N_R_L'.split('_'),
longDateFormat : {
    LT   : 'H:mm',
    LTS : 'H:mm:ss',
    L    : 'DD.MM.YYYY',
    LL   : 'D. MMMM YYYY',
    LLL  : 'D. MMMM YYYY H:mm',
    LLLL : 'dddd, D. MMMM YYYY H:mm'
},
calendar : {
    sameDay  : '[Täna,] LT',
    nextDay  : '[Homme,] LT',
    nextWeek : '[Järgmine] dddd LT',
    lastDay  : '[Eile,] LT',
    lastWeek : '[Eelmine] dddd LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s pärast',
    past   : '%s tagasi',
    s      : processRelativeTime,
    ss     : processRelativeTime,
    m      : processRelativeTime,
    mm     : processRelativeTime,
    h      : processRelativeTime,
    hh     : processRelativeTime,
    d      : processRelativeTime,
    dd     : '%d päeva',
    M      : processRelativeTime,
    MM     : processRelativeTime,
    y      : processRelativeTime,
    yy     : processRelativeTime
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return et;

})));

/***/ }),

/***/ “./node_modules/moment/locale/eu.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/eu.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var eu = moment.defineLocale('eu', {

months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
monthsParseExact : true,
weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),
weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'YYYY-MM-DD',
    LL : 'YYYY[ko] MMMM[ren] D[a]',
    LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',
    LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
    l : 'YYYY-M-D',
    ll : 'YYYY[ko] MMM D[a]',
    lll : 'YYYY[ko] MMM D[a] HH:mm',
    llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'
},
calendar : {
    sameDay : '[gaur] LT[etan]',
    nextDay : '[bihar] LT[etan]',
    nextWeek : 'dddd LT[etan]',
    lastDay : '[atzo] LT[etan]',
    lastWeek : '[aurreko] dddd LT[etan]',
    sameElse : 'L'
},
relativeTime : {
    future : '%s barru',
    past : 'duela %s',
    s : 'segundo batzuk',
    ss : '%d segundo',
    m : 'minutu bat',
    mm : '%d minutu',
    h : 'ordu bat',
    hh : '%d ordu',
    d : 'egun bat',
    dd : '%d egun',
    M : 'hilabete bat',
    MM : '%d hilabete',
    y : 'urte bat',
    yy : '%d urte'
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return eu;

})));

/***/ }),

/***/ “./node_modules/moment/locale/fa.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/fa.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '۱',
'2': '۲',
'3': '۳',
'4': '۴',
'5': '۵',
'6': '۶',
'7': '۷',
'8': '۸',
'9': '۹',
'0': '۰'

}, numberMap = {

'۱': '1',
'۲': '2',
'۳': '3',
'۴': '4',
'۵': '5',
'۶': '6',
'۷': '7',
'۸': '8',
'۹': '9',
'۰': '0'

};

var fa = moment.defineLocale('fa', {

months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
meridiemParse: /قبل از ظهر|بعد از ظهر/,
isPM: function (input) {
    return /بعد از ظهر/.test(input);
},
meridiem : function (hour, minute, isLower) {
    if (hour < 12) {
        return 'قبل از ظهر';
    } else {
        return 'بعد از ظهر';
    }
},
calendar : {
    sameDay : '[امروز ساعت] LT',
    nextDay : '[فردا ساعت] LT',
    nextWeek : 'dddd [ساعت] LT',
    lastDay : '[دیروز ساعت] LT',
    lastWeek : 'dddd [پیش] [ساعت] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'در %s',
    past : '%s پیش',
    s : 'چند ثانیه',
    ss : 'ثانیه d%',
    m : 'یک دقیقه',
    mm : '%d دقیقه',
    h : 'یک ساعت',
    hh : '%d ساعت',
    d : 'یک روز',
    dd : '%d روز',
    M : 'یک ماه',
    MM : '%d ماه',
    y : 'یک سال',
    yy : '%d سال'
},
preparse: function (string) {
    return string.replace(/[۰-۹]/g, function (match) {
        return numberMap[match];
    }).replace(/،/g, ',');
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    }).replace(/,/g, '،');
},
dayOfMonthOrdinalParse: /\d{1,2}م/,
ordinal : '%dم',
week : {
    dow : 6, // Saturday is the first day of the week.
    doy : 12 // The week that contains Jan 1st is the first week of the year.
}

});

return fa;

})));

/***/ }),

/***/ “./node_modules/moment/locale/fi.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/fi.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),

numbersFuture = [
    'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
    numbersPast[7], numbersPast[8], numbersPast[9]
];

function translate(number, withoutSuffix, key, isFuture) {

var result = '';
switch (key) {
    case 's':
        return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
    case 'ss':
        return isFuture ? 'sekunnin' : 'sekuntia';
    case 'm':
        return isFuture ? 'minuutin' : 'minuutti';
    case 'mm':
        result = isFuture ? 'minuutin' : 'minuuttia';
        break;
    case 'h':
        return isFuture ? 'tunnin' : 'tunti';
    case 'hh':
        result = isFuture ? 'tunnin' : 'tuntia';
        break;
    case 'd':
        return isFuture ? 'päivän' : 'päivä';
    case 'dd':
        result = isFuture ? 'päivän' : 'päivää';
        break;
    case 'M':
        return isFuture ? 'kuukauden' : 'kuukausi';
    case 'MM':
        result = isFuture ? 'kuukauden' : 'kuukautta';
        break;
    case 'y':
        return isFuture ? 'vuoden' : 'vuosi';
    case 'yy':
        result = isFuture ? 'vuoden' : 'vuotta';
        break;
}
result = verbalNumber(number, isFuture) + ' ' + result;
return result;

} function verbalNumber(number, isFuture) {

return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;

}

var fi = moment.defineLocale('fi', {

months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
longDateFormat : {
    LT : 'HH.mm',
    LTS : 'HH.mm.ss',
    L : 'DD.MM.YYYY',
    LL : 'Do MMMM[ta] YYYY',
    LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
    LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
    l : 'D.M.YYYY',
    ll : 'Do MMM YYYY',
    lll : 'Do MMM YYYY, [klo] HH.mm',
    llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
},
calendar : {
    sameDay : '[tänään] [klo] LT',
    nextDay : '[huomenna] [klo] LT',
    nextWeek : 'dddd [klo] LT',
    lastDay : '[eilen] [klo] LT',
    lastWeek : '[viime] dddd[na] [klo] LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s päästä',
    past : '%s sitten',
    s : translate,
    ss : translate,
    m : translate,
    mm : translate,
    h : translate,
    hh : translate,
    d : translate,
    dd : translate,
    M : translate,
    MM : translate,
    y : translate,
    yy : translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return fi;

})));

/***/ }),

/***/ “./node_modules/moment/locale/fo.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/fo.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var fo = moment.defineLocale('fo', {

months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D. MMMM, YYYY HH:mm'
},
calendar : {
    sameDay : '[Í dag kl.] LT',
    nextDay : '[Í morgin kl.] LT',
    nextWeek : 'dddd [kl.] LT',
    lastDay : '[Í gjár kl.] LT',
    lastWeek : '[síðstu] dddd [kl] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'um %s',
    past : '%s síðani',
    s : 'fá sekund',
    ss : '%d sekundir',
    m : 'ein minutt',
    mm : '%d minuttir',
    h : 'ein tími',
    hh : '%d tímar',
    d : 'ein dagur',
    dd : '%d dagar',
    M : 'ein mánaði',
    MM : '%d mánaðir',
    y : 'eitt ár',
    yy : '%d ár'
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return fo;

})));

/***/ }),

/***/ “./node_modules/moment/locale/fr-ca.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/fr-ca.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var frCa = moment.defineLocale('fr-ca', {

months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
monthsParseExact : true,
weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'YYYY-MM-DD',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[Aujourd’hui à] LT',
    nextDay : '[Demain à] LT',
    nextWeek : 'dddd [à] LT',
    lastDay : '[Hier à] LT',
    lastWeek : 'dddd [dernier à] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'dans %s',
    past : 'il y a %s',
    s : 'quelques secondes',
    ss : '%d secondes',
    m : 'une minute',
    mm : '%d minutes',
    h : 'une heure',
    hh : '%d heures',
    d : 'un jour',
    dd : '%d jours',
    M : 'un mois',
    MM : '%d mois',
    y : 'un an',
    yy : '%d ans'
},
dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
ordinal : function (number, period) {
    switch (period) {
        // Words with masculine grammatical gender: mois, trimestre, jour
        default:
        case 'M':
        case 'Q':
        case 'D':
        case 'DDD':
        case 'd':
            return number + (number === 1 ? 'er' : 'e');

        // Words with feminine grammatical gender: semaine
        case 'w':
        case 'W':
            return number + (number === 1 ? 're' : 'e');
    }
}

});

return frCa;

})));

/***/ }),

/***/ “./node_modules/moment/locale/fr-ch.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/fr-ch.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var frCh = moment.defineLocale('fr-ch', {

months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
monthsParseExact : true,
weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[Aujourd’hui à] LT',
    nextDay : '[Demain à] LT',
    nextWeek : 'dddd [à] LT',
    lastDay : '[Hier à] LT',
    lastWeek : 'dddd [dernier à] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'dans %s',
    past : 'il y a %s',
    s : 'quelques secondes',
    ss : '%d secondes',
    m : 'une minute',
    mm : '%d minutes',
    h : 'une heure',
    hh : '%d heures',
    d : 'un jour',
    dd : '%d jours',
    M : 'un mois',
    MM : '%d mois',
    y : 'un an',
    yy : '%d ans'
},
dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
ordinal : function (number, period) {
    switch (period) {
        // Words with masculine grammatical gender: mois, trimestre, jour
        default:
        case 'M':
        case 'Q':
        case 'D':
        case 'DDD':
        case 'd':
            return number + (number === 1 ? 'er' : 'e');

        // Words with feminine grammatical gender: semaine
        case 'w':
        case 'W':
            return number + (number === 1 ? 're' : 'e');
    }
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return frCh;

})));

/***/ }),

/***/ “./node_modules/moment/locale/fr.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/fr.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var fr = moment.defineLocale('fr', {

months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
monthsParseExact : true,
weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[Aujourd’hui à] LT',
    nextDay : '[Demain à] LT',
    nextWeek : 'dddd [à] LT',
    lastDay : '[Hier à] LT',
    lastWeek : 'dddd [dernier à] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'dans %s',
    past : 'il y a %s',
    s : 'quelques secondes',
    ss : '%d secondes',
    m : 'une minute',
    mm : '%d minutes',
    h : 'une heure',
    hh : '%d heures',
    d : 'un jour',
    dd : '%d jours',
    M : 'un mois',
    MM : '%d mois',
    y : 'un an',
    yy : '%d ans'
},
dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
ordinal : function (number, period) {
    switch (period) {
        // TODO: Return 'e' when day of month > 1. Move this case inside
        // block for masculine words below.
        // See https://github.com/moment/moment/issues/3375
        case 'D':
            return number + (number === 1 ? 'er' : '');

        // Words with masculine grammatical gender: mois, trimestre, jour
        default:
        case 'M':
        case 'Q':
        case 'DDD':
        case 'd':
            return number + (number === 1 ? 'er' : 'e');

        // Words with feminine grammatical gender: semaine
        case 'w':
        case 'W':
            return number + (number === 1 ? 're' : 'e');
    }
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return fr;

})));

/***/ }),

/***/ “./node_modules/moment/locale/fy.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/fy.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),

monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');

var fy = moment.defineLocale('fy', {

months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
monthsShort : function (m, format) {
    if (!m) {
        return monthsShortWithDots;
    } else if (/-MMM-/.test(format)) {
        return monthsShortWithoutDots[m.month()];
    } else {
        return monthsShortWithDots[m.month()];
    }
},
monthsParseExact : true,
weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD-MM-YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[hjoed om] LT',
    nextDay: '[moarn om] LT',
    nextWeek: 'dddd [om] LT',
    lastDay: '[juster om] LT',
    lastWeek: '[ôfrûne] dddd [om] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'oer %s',
    past : '%s lyn',
    s : 'in pear sekonden',
    ss : '%d sekonden',
    m : 'ien minút',
    mm : '%d minuten',
    h : 'ien oere',
    hh : '%d oeren',
    d : 'ien dei',
    dd : '%d dagen',
    M : 'ien moanne',
    MM : '%d moannen',
    y : 'ien jier',
    yy : '%d jierren'
},
dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
ordinal : function (number) {
    return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return fy;

})));

/***/ }),

/***/ “./node_modules/moment/locale/gd.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/gd.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var months = [

'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'

];

var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];

var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];

var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];

var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];

var gd = moment.defineLocale('gd', {

months : months,
monthsShort : monthsShort,
monthsParseExact : true,
weekdays : weekdays,
weekdaysShort : weekdaysShort,
weekdaysMin : weekdaysMin,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[An-diugh aig] LT',
    nextDay : '[A-màireach aig] LT',
    nextWeek : 'dddd [aig] LT',
    lastDay : '[An-dè aig] LT',
    lastWeek : 'dddd [seo chaidh] [aig] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'ann an %s',
    past : 'bho chionn %s',
    s : 'beagan diogan',
    ss : '%d diogan',
    m : 'mionaid',
    mm : '%d mionaidean',
    h : 'uair',
    hh : '%d uairean',
    d : 'latha',
    dd : '%d latha',
    M : 'mìos',
    MM : '%d mìosan',
    y : 'bliadhna',
    yy : '%d bliadhna'
},
dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/,
ordinal : function (number) {
    var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
    return number + output;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return gd;

})));

/***/ }),

/***/ “./node_modules/moment/locale/gl.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/gl.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var gl = moment.defineLocale('gl', {

months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),
monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),
monthsParseExact: true,
weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D [de] MMMM [de] YYYY',
    LLL : 'D [de] MMMM [de] YYYY H:mm',
    LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
},
calendar : {
    sameDay : function () {
        return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
    },
    nextDay : function () {
        return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
    },
    nextWeek : function () {
        return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
    },
    lastDay : function () {
        return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
    },
    lastWeek : function () {
        return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
    },
    sameElse : 'L'
},
relativeTime : {
    future : function (str) {
        if (str.indexOf('un') === 0) {
            return 'n' + str;
        }
        return 'en ' + str;
    },
    past : 'hai %s',
    s : 'uns segundos',
    ss : '%d segundos',
    m : 'un minuto',
    mm : '%d minutos',
    h : 'unha hora',
    hh : '%d horas',
    d : 'un día',
    dd : '%d días',
    M : 'un mes',
    MM : '%d meses',
    y : 'un ano',
    yy : '%d anos'
},
dayOfMonthOrdinalParse : /\d{1,2}º/,
ordinal : '%dº',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return gl;

})));

/***/ }),

/***/ “./node_modules/moment/locale/gom-latn.js”: /*!************************************************!*\

!*** ./node_modules/moment/locale/gom-latn.js ***!
\************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function processRelativeTime(number, withoutSuffix, key, isFuture) {

var format = {
    's': ['thodde secondanim', 'thodde second'],
    'ss': [number + ' secondanim', number + ' second'],
    'm': ['eka mintan', 'ek minute'],
    'mm': [number + ' mintanim', number + ' mintam'],
    'h': ['eka horan', 'ek hor'],
    'hh': [number + ' horanim', number + ' hor'],
    'd': ['eka disan', 'ek dis'],
    'dd': [number + ' disanim', number + ' dis'],
    'M': ['eka mhoinean', 'ek mhoino'],
    'MM': [number + ' mhoineanim', number + ' mhoine'],
    'y': ['eka vorsan', 'ek voros'],
    'yy': [number + ' vorsanim', number + ' vorsam']
};
return withoutSuffix ? format[key][0] : format[key][1];

}

var gomLatn = moment.defineLocale('gom-latn', {

months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),
monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
monthsParseExact : true,
weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'),
weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'A h:mm [vazta]',
    LTS : 'A h:mm:ss [vazta]',
    L : 'DD-MM-YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY A h:mm [vazta]',
    LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',
    llll: 'ddd, D MMM YYYY, A h:mm [vazta]'
},
calendar : {
    sameDay: '[Aiz] LT',
    nextDay: '[Faleam] LT',
    nextWeek: '[Ieta to] dddd[,] LT',
    lastDay: '[Kal] LT',
    lastWeek: '[Fatlo] dddd[,] LT',
    sameElse: 'L'
},
relativeTime : {
    future : '%s',
    past : '%s adim',
    s : processRelativeTime,
    ss : processRelativeTime,
    m : processRelativeTime,
    mm : processRelativeTime,
    h : processRelativeTime,
    hh : processRelativeTime,
    d : processRelativeTime,
    dd : processRelativeTime,
    M : processRelativeTime,
    MM : processRelativeTime,
    y : processRelativeTime,
    yy : processRelativeTime
},
dayOfMonthOrdinalParse : /\d{1,2}(er)/,
ordinal : function (number, period) {
    switch (period) {
        // the ordinal 'er' only applies to day of the month
        case 'D':
            return number + 'er';
        default:
        case 'M':
        case 'Q':
        case 'DDD':
        case 'd':
        case 'w':
        case 'W':
            return number;
    }
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
},
meridiemParse: /rati|sokalli|donparam|sanje/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'rati') {
        return hour < 4 ? hour : hour + 12;
    } else if (meridiem === 'sokalli') {
        return hour;
    } else if (meridiem === 'donparam') {
        return hour > 12 ? hour : hour + 12;
    } else if (meridiem === 'sanje') {
        return hour + 12;
    }
},
meridiem : function (hour, minute, isLower) {
    if (hour < 4) {
        return 'rati';
    } else if (hour < 12) {
        return 'sokalli';
    } else if (hour < 16) {
        return 'donparam';
    } else if (hour < 20) {
        return 'sanje';
    } else {
        return 'rati';
    }
}

});

return gomLatn;

})));

/***/ }),

/***/ “./node_modules/moment/locale/gu.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/gu.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

    '1': '૧',
    '2': '૨',
    '3': '૩',
    '4': '૪',
    '5': '૫',
    '6': '૬',
    '7': '૭',
    '8': '૮',
    '9': '૯',
    '0': '૦'
},
numberMap = {
    '૧': '1',
    '૨': '2',
    '૩': '3',
    '૪': '4',
    '૫': '5',
    '૬': '6',
    '૭': '7',
    '૮': '8',
    '૯': '9',
    '૦': '0'
};

var gu = moment.defineLocale('gu', {

months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),
monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),
monthsParseExact: true,
weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),
weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
longDateFormat: {
    LT: 'A h:mm વાગ્યે',
    LTS: 'A h:mm:ss વાગ્યે',
    L: 'DD/MM/YYYY',
    LL: 'D MMMM YYYY',
    LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
    LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'
},
calendar: {
    sameDay: '[આજ] LT',
    nextDay: '[કાલે] LT',
    nextWeek: 'dddd, LT',
    lastDay: '[ગઇકાલે] LT',
    lastWeek: '[પાછલા] dddd, LT',
    sameElse: 'L'
},
relativeTime: {
    future: '%s મા',
    past: '%s પેહલા',
    s: 'અમુક પળો',
    ss: '%d સેકંડ',
    m: 'એક મિનિટ',
    mm: '%d મિનિટ',
    h: 'એક કલાક',
    hh: '%d કલાક',
    d: 'એક દિવસ',
    dd: '%d દિવસ',
    M: 'એક મહિનો',
    MM: '%d મહિનો',
    y: 'એક વર્ષ',
    yy: '%d વર્ષ'
},
preparse: function (string) {
    return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
        return numberMap[match];
    });
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    });
},
// Gujarati notation for meridiems are quite fuzzy in practice. While there exists
// a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
meridiemHour: function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'રાત') {
        return hour < 4 ? hour : hour + 12;
    } else if (meridiem === 'સવાર') {
        return hour;
    } else if (meridiem === 'બપોર') {
        return hour >= 10 ? hour : hour + 12;
    } else if (meridiem === 'સાંજ') {
        return hour + 12;
    }
},
meridiem: function (hour, minute, isLower) {
    if (hour < 4) {
        return 'રાત';
    } else if (hour < 10) {
        return 'સવાર';
    } else if (hour < 17) {
        return 'બપોર';
    } else if (hour < 20) {
        return 'સાંજ';
    } else {
        return 'રાત';
    }
},
week: {
    dow: 0, // Sunday is the first day of the week.
    doy: 6 // The week that contains Jan 1st is the first week of the year.
}

});

return gu;

})));

/***/ }),

/***/ “./node_modules/moment/locale/he.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/he.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var he = moment.defineLocale('he', {

months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D [ב]MMMM YYYY',
    LLL : 'D [ב]MMMM YYYY HH:mm',
    LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',
    l : 'D/M/YYYY',
    ll : 'D MMM YYYY',
    lll : 'D MMM YYYY HH:mm',
    llll : 'ddd, D MMM YYYY HH:mm'
},
calendar : {
    sameDay : '[היום ב־]LT',
    nextDay : '[מחר ב־]LT',
    nextWeek : 'dddd [בשעה] LT',
    lastDay : '[אתמול ב־]LT',
    lastWeek : '[ביום] dddd [האחרון בשעה] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'בעוד %s',
    past : 'לפני %s',
    s : 'מספר שניות',
    ss : '%d שניות',
    m : 'דקה',
    mm : '%d דקות',
    h : 'שעה',
    hh : function (number) {
        if (number === 2) {
            return 'שעתיים';
        }
        return number + ' שעות';
    },
    d : 'יום',
    dd : function (number) {
        if (number === 2) {
            return 'יומיים';
        }
        return number + ' ימים';
    },
    M : 'חודש',
    MM : function (number) {
        if (number === 2) {
            return 'חודשיים';
        }
        return number + ' חודשים';
    },
    y : 'שנה',
    yy : function (number) {
        if (number === 2) {
            return 'שנתיים';
        } else if (number % 10 === 0 && number !== 10) {
            return number + ' שנה';
        }
        return number + ' שנים';
    }
},
meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
isPM : function (input) {
    return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
},
meridiem : function (hour, minute, isLower) {
    if (hour < 5) {
        return 'לפנות בוקר';
    } else if (hour < 10) {
        return 'בבוקר';
    } else if (hour < 12) {
        return isLower ? 'לפנה"צ' : 'לפני הצהריים';
    } else if (hour < 18) {
        return isLower ? 'אחה"צ' : 'אחרי הצהריים';
    } else {
        return 'בערב';
    }
}

});

return he;

})));

/***/ }),

/***/ “./node_modules/moment/locale/hi.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/hi.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '१',
'2': '२',
'3': '३',
'4': '४',
'5': '५',
'6': '६',
'7': '७',
'8': '८',
'9': '९',
'0': '०'

}, numberMap = {

'१': '1',
'२': '2',
'३': '3',
'४': '4',
'५': '5',
'६': '6',
'७': '7',
'८': '8',
'९': '9',
'०': '0'

};

var hi = moment.defineLocale('hi', {

months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
monthsParseExact: true,
weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
longDateFormat : {
    LT : 'A h:mm बजे',
    LTS : 'A h:mm:ss बजे',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY, A h:mm बजे',
    LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'
},
calendar : {
    sameDay : '[आज] LT',
    nextDay : '[कल] LT',
    nextWeek : 'dddd, LT',
    lastDay : '[कल] LT',
    lastWeek : '[पिछले] dddd, LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s में',
    past : '%s पहले',
    s : 'कुछ ही क्षण',
    ss : '%d सेकंड',
    m : 'एक मिनट',
    mm : '%d मिनट',
    h : 'एक घंटा',
    hh : '%d घंटे',
    d : 'एक दिन',
    dd : '%d दिन',
    M : 'एक महीने',
    MM : '%d महीने',
    y : 'एक वर्ष',
    yy : '%d वर्ष'
},
preparse: function (string) {
    return string.replace(/[१२३४५६७८९०]/g, function (match) {
        return numberMap[match];
    });
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    });
},
// Hindi notation for meridiems are quite fuzzy in practice. While there exists
// a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
meridiemParse: /रात|सुबह|दोपहर|शाम/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'रात') {
        return hour < 4 ? hour : hour + 12;
    } else if (meridiem === 'सुबह') {
        return hour;
    } else if (meridiem === 'दोपहर') {
        return hour >= 10 ? hour : hour + 12;
    } else if (meridiem === 'शाम') {
        return hour + 12;
    }
},
meridiem : function (hour, minute, isLower) {
    if (hour < 4) {
        return 'रात';
    } else if (hour < 10) {
        return 'सुबह';
    } else if (hour < 17) {
        return 'दोपहर';
    } else if (hour < 20) {
        return 'शाम';
    } else {
        return 'रात';
    }
},
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 6  // The week that contains Jan 1st is the first week of the year.
}

});

return hi;

})));

/***/ }),

/***/ “./node_modules/moment/locale/hr.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/hr.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function translate(number, withoutSuffix, key) {

var result = number + ' ';
switch (key) {
    case 'ss':
        if (number === 1) {
            result += 'sekunda';
        } else if (number === 2 || number === 3 || number === 4) {
            result += 'sekunde';
        } else {
            result += 'sekundi';
        }
        return result;
    case 'm':
        return withoutSuffix ? 'jedna minuta' : 'jedne minute';
    case 'mm':
        if (number === 1) {
            result += 'minuta';
        } else if (number === 2 || number === 3 || number === 4) {
            result += 'minute';
        } else {
            result += 'minuta';
        }
        return result;
    case 'h':
        return withoutSuffix ? 'jedan sat' : 'jednog sata';
    case 'hh':
        if (number === 1) {
            result += 'sat';
        } else if (number === 2 || number === 3 || number === 4) {
            result += 'sata';
        } else {
            result += 'sati';
        }
        return result;
    case 'dd':
        if (number === 1) {
            result += 'dan';
        } else {
            result += 'dana';
        }
        return result;
    case 'MM':
        if (number === 1) {
            result += 'mjesec';
        } else if (number === 2 || number === 3 || number === 4) {
            result += 'mjeseca';
        } else {
            result += 'mjeseci';
        }
        return result;
    case 'yy':
        if (number === 1) {
            result += 'godina';
        } else if (number === 2 || number === 3 || number === 4) {
            result += 'godine';
        } else {
            result += 'godina';
        }
        return result;
}

}

var hr = moment.defineLocale('hr', {

months : {
    format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
    standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
},
monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
monthsParseExact: true,
weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM YYYY',
    LLL : 'D. MMMM YYYY H:mm',
    LLLL : 'dddd, D. MMMM YYYY H:mm'
},
calendar : {
    sameDay  : '[danas u] LT',
    nextDay  : '[sutra u] LT',
    nextWeek : function () {
        switch (this.day()) {
            case 0:
                return '[u] [nedjelju] [u] LT';
            case 3:
                return '[u] [srijedu] [u] LT';
            case 6:
                return '[u] [subotu] [u] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[u] dddd [u] LT';
        }
    },
    lastDay  : '[jučer u] LT',
    lastWeek : function () {
        switch (this.day()) {
            case 0:
            case 3:
                return '[prošlu] dddd [u] LT';
            case 6:
                return '[prošle] [subote] [u] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[prošli] dddd [u] LT';
        }
    },
    sameElse : 'L'
},
relativeTime : {
    future : 'za %s',
    past   : 'prije %s',
    s      : 'par sekundi',
    ss     : translate,
    m      : translate,
    mm     : translate,
    h      : translate,
    hh     : translate,
    d      : 'dan',
    dd     : translate,
    M      : 'mjesec',
    MM     : translate,
    y      : 'godinu',
    yy     : translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return hr;

})));

/***/ }),

/***/ “./node_modules/moment/locale/hu.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/hu.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); function translate(number, withoutSuffix, key, isFuture) {

var num = number;
switch (key) {
    case 's':
        return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
    case 'ss':
        return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';
    case 'm':
        return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
    case 'mm':
        return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
    case 'h':
        return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
    case 'hh':
        return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
    case 'd':
        return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
    case 'dd':
        return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
    case 'M':
        return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
    case 'MM':
        return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
    case 'y':
        return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
    case 'yy':
        return num + (isFuture || withoutSuffix ? ' év' : ' éve');
}
return '';

} function week(isFuture) {

return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';

}

var hu = moment.defineLocale('hu', {

months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'YYYY.MM.DD.',
    LL : 'YYYY. MMMM D.',
    LLL : 'YYYY. MMMM D. H:mm',
    LLLL : 'YYYY. MMMM D., dddd H:mm'
},
meridiemParse: /de|du/i,
isPM: function (input) {
    return input.charAt(1).toLowerCase() === 'u';
},
meridiem : function (hours, minutes, isLower) {
    if (hours < 12) {
        return isLower === true ? 'de' : 'DE';
    } else {
        return isLower === true ? 'du' : 'DU';
    }
},
calendar : {
    sameDay : '[ma] LT[-kor]',
    nextDay : '[holnap] LT[-kor]',
    nextWeek : function () {
        return week.call(this, true);
    },
    lastDay : '[tegnap] LT[-kor]',
    lastWeek : function () {
        return week.call(this, false);
    },
    sameElse : 'L'
},
relativeTime : {
    future : '%s múlva',
    past : '%s',
    s : translate,
    ss : translate,
    m : translate,
    mm : translate,
    h : translate,
    hh : translate,
    d : translate,
    dd : translate,
    M : translate,
    MM : translate,
    y : translate,
    yy : translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return hu;

})));

/***/ }),

/***/ “./node_modules/moment/locale/hy-am.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/hy-am.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var hyAm = moment.defineLocale('hy-am', {

months : {
    format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
    standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
},
monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY թ.',
    LLL : 'D MMMM YYYY թ., HH:mm',
    LLLL : 'dddd, D MMMM YYYY թ., HH:mm'
},
calendar : {
    sameDay: '[այսօր] LT',
    nextDay: '[վաղը] LT',
    lastDay: '[երեկ] LT',
    nextWeek: function () {
        return 'dddd [օրը ժամը] LT';
    },
    lastWeek: function () {
        return '[անցած] dddd [օրը ժամը] LT';
    },
    sameElse: 'L'
},
relativeTime : {
    future : '%s հետո',
    past : '%s առաջ',
    s : 'մի քանի վայրկյան',
    ss : '%d վայրկյան',
    m : 'րոպե',
    mm : '%d րոպե',
    h : 'ժամ',
    hh : '%d ժամ',
    d : 'օր',
    dd : '%d օր',
    M : 'ամիս',
    MM : '%d ամիս',
    y : 'տարի',
    yy : '%d տարի'
},
meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
isPM: function (input) {
    return /^(ցերեկվա|երեկոյան)$/.test(input);
},
meridiem : function (hour) {
    if (hour < 4) {
        return 'գիշերվա';
    } else if (hour < 12) {
        return 'առավոտվա';
    } else if (hour < 17) {
        return 'ցերեկվա';
    } else {
        return 'երեկոյան';
    }
},
dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
ordinal: function (number, period) {
    switch (period) {
        case 'DDD':
        case 'w':
        case 'W':
        case 'DDDo':
            if (number === 1) {
                return number + '-ին';
            }
            return number + '-րդ';
        default:
            return number;
    }
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return hyAm;

})));

/***/ }),

/***/ “./node_modules/moment/locale/id.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/id.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var id = moment.defineLocale('id', {

months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
longDateFormat : {
    LT : 'HH.mm',
    LTS : 'HH.mm.ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY [pukul] HH.mm',
    LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
},
meridiemParse: /pagi|siang|sore|malam/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'pagi') {
        return hour;
    } else if (meridiem === 'siang') {
        return hour >= 11 ? hour : hour + 12;
    } else if (meridiem === 'sore' || meridiem === 'malam') {
        return hour + 12;
    }
},
meridiem : function (hours, minutes, isLower) {
    if (hours < 11) {
        return 'pagi';
    } else if (hours < 15) {
        return 'siang';
    } else if (hours < 19) {
        return 'sore';
    } else {
        return 'malam';
    }
},
calendar : {
    sameDay : '[Hari ini pukul] LT',
    nextDay : '[Besok pukul] LT',
    nextWeek : 'dddd [pukul] LT',
    lastDay : '[Kemarin pukul] LT',
    lastWeek : 'dddd [lalu pukul] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'dalam %s',
    past : '%s yang lalu',
    s : 'beberapa detik',
    ss : '%d detik',
    m : 'semenit',
    mm : '%d menit',
    h : 'sejam',
    hh : '%d jam',
    d : 'sehari',
    dd : '%d hari',
    M : 'sebulan',
    MM : '%d bulan',
    y : 'setahun',
    yy : '%d tahun'
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return id;

})));

/***/ }),

/***/ “./node_modules/moment/locale/is.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/is.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function plural(n) {

if (n % 100 === 11) {
    return true;
} else if (n % 10 === 1) {
    return false;
}
return true;

} function translate(number, withoutSuffix, key, isFuture) {

var result = number + ' ';
switch (key) {
    case 's':
        return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
    case 'ss':
        if (plural(number)) {
            return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');
        }
        return result + 'sekúnda';
    case 'm':
        return withoutSuffix ? 'mínúta' : 'mínútu';
    case 'mm':
        if (plural(number)) {
            return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
        } else if (withoutSuffix) {
            return result + 'mínúta';
        }
        return result + 'mínútu';
    case 'hh':
        if (plural(number)) {
            return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
        }
        return result + 'klukkustund';
    case 'd':
        if (withoutSuffix) {
            return 'dagur';
        }
        return isFuture ? 'dag' : 'degi';
    case 'dd':
        if (plural(number)) {
            if (withoutSuffix) {
                return result + 'dagar';
            }
            return result + (isFuture ? 'daga' : 'dögum');
        } else if (withoutSuffix) {
            return result + 'dagur';
        }
        return result + (isFuture ? 'dag' : 'degi');
    case 'M':
        if (withoutSuffix) {
            return 'mánuður';
        }
        return isFuture ? 'mánuð' : 'mánuði';
    case 'MM':
        if (plural(number)) {
            if (withoutSuffix) {
                return result + 'mánuðir';
            }
            return result + (isFuture ? 'mánuði' : 'mánuðum');
        } else if (withoutSuffix) {
            return result + 'mánuður';
        }
        return result + (isFuture ? 'mánuð' : 'mánuði');
    case 'y':
        return withoutSuffix || isFuture ? 'ár' : 'ári';
    case 'yy':
        if (plural(number)) {
            return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
        }
        return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
}

}

var is = moment.defineLocale('is', {

months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM YYYY',
    LLL : 'D. MMMM YYYY [kl.] H:mm',
    LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'
},
calendar : {
    sameDay : '[í dag kl.] LT',
    nextDay : '[á morgun kl.] LT',
    nextWeek : 'dddd [kl.] LT',
    lastDay : '[í gær kl.] LT',
    lastWeek : '[síðasta] dddd [kl.] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'eftir %s',
    past : 'fyrir %s síðan',
    s : translate,
    ss : translate,
    m : translate,
    mm : translate,
    h : 'klukkustund',
    hh : translate,
    d : translate,
    dd : translate,
    M : translate,
    MM : translate,
    y : translate,
    yy : translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return is;

})));

/***/ }),

/***/ “./node_modules/moment/locale/it.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/it.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var it = moment.defineLocale('it', {

months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[Oggi alle] LT',
    nextDay: '[Domani alle] LT',
    nextWeek: 'dddd [alle] LT',
    lastDay: '[Ieri alle] LT',
    lastWeek: function () {
        switch (this.day()) {
            case 0:
                return '[la scorsa] dddd [alle] LT';
            default:
                return '[lo scorso] dddd [alle] LT';
        }
    },
    sameElse: 'L'
},
relativeTime : {
    future : function (s) {
        return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
    },
    past : '%s fa',
    s : 'alcuni secondi',
    ss : '%d secondi',
    m : 'un minuto',
    mm : '%d minuti',
    h : 'un\'ora',
    hh : '%d ore',
    d : 'un giorno',
    dd : '%d giorni',
    M : 'un mese',
    MM : '%d mesi',
    y : 'un anno',
    yy : '%d anni'
},
dayOfMonthOrdinalParse : /\d{1,2}º/,
ordinal: '%dº',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return it;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ja.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ja.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var ja = moment.defineLocale('ja', {

months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'YYYY/MM/DD',
    LL : 'YYYY年M月D日',
    LLL : 'YYYY年M月D日 HH:mm',
    LLLL : 'YYYY年M月D日 HH:mm dddd',
    l : 'YYYY/MM/DD',
    ll : 'YYYY年M月D日',
    lll : 'YYYY年M月D日 HH:mm',
    llll : 'YYYY年M月D日 HH:mm dddd'
},
meridiemParse: /午前|午後/i,
isPM : function (input) {
    return input === '午後';
},
meridiem : function (hour, minute, isLower) {
    if (hour < 12) {
        return '午前';
    } else {
        return '午後';
    }
},
calendar : {
    sameDay : '[今日] LT',
    nextDay : '[明日] LT',
    nextWeek : '[来週]dddd LT',
    lastDay : '[昨日] LT',
    lastWeek : '[前週]dddd LT',
    sameElse : 'L'
},
dayOfMonthOrdinalParse : /\d{1,2}日/,
ordinal : function (number, period) {
    switch (period) {
        case 'd':
        case 'D':
        case 'DDD':
            return number + '日';
        default:
            return number;
    }
},
relativeTime : {
    future : '%s後',
    past : '%s前',
    s : '数秒',
    ss : '%d秒',
    m : '1分',
    mm : '%d分',
    h : '1時間',
    hh : '%d時間',
    d : '1日',
    dd : '%d日',
    M : '1ヶ月',
    MM : '%dヶ月',
    y : '1年',
    yy : '%d年'
}

});

return ja;

})));

/***/ }),

/***/ “./node_modules/moment/locale/jv.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/jv.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var jv = moment.defineLocale('jv', {

months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
longDateFormat : {
    LT : 'HH.mm',
    LTS : 'HH.mm.ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY [pukul] HH.mm',
    LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
},
meridiemParse: /enjing|siyang|sonten|ndalu/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'enjing') {
        return hour;
    } else if (meridiem === 'siyang') {
        return hour >= 11 ? hour : hour + 12;
    } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
        return hour + 12;
    }
},
meridiem : function (hours, minutes, isLower) {
    if (hours < 11) {
        return 'enjing';
    } else if (hours < 15) {
        return 'siyang';
    } else if (hours < 19) {
        return 'sonten';
    } else {
        return 'ndalu';
    }
},
calendar : {
    sameDay : '[Dinten puniko pukul] LT',
    nextDay : '[Mbenjang pukul] LT',
    nextWeek : 'dddd [pukul] LT',
    lastDay : '[Kala wingi pukul] LT',
    lastWeek : 'dddd [kepengker pukul] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'wonten ing %s',
    past : '%s ingkang kepengker',
    s : 'sawetawis detik',
    ss : '%d detik',
    m : 'setunggal menit',
    mm : '%d menit',
    h : 'setunggal jam',
    hh : '%d jam',
    d : 'sedinten',
    dd : '%d dinten',
    M : 'sewulan',
    MM : '%d wulan',
    y : 'setaun',
    yy : '%d taun'
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return jv;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ka.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ka.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var ka = moment.defineLocale('ka', {

months : {
    standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
    format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
},
monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
weekdays : {
    standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
    format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
    isFormat: /(წინა|შემდეგ)/
},
weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
longDateFormat : {
    LT : 'h:mm A',
    LTS : 'h:mm:ss A',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY h:mm A',
    LLLL : 'dddd, D MMMM YYYY h:mm A'
},
calendar : {
    sameDay : '[დღეს] LT[-ზე]',
    nextDay : '[ხვალ] LT[-ზე]',
    lastDay : '[გუშინ] LT[-ზე]',
    nextWeek : '[შემდეგ] dddd LT[-ზე]',
    lastWeek : '[წინა] dddd LT-ზე',
    sameElse : 'L'
},
relativeTime : {
    future : function (s) {
        return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
            s.replace(/ი$/, 'ში') :
            s + 'ში';
    },
    past : function (s) {
        if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
            return s.replace(/(ი|ე)$/, 'ის უკან');
        }
        if ((/წელი/).test(s)) {
            return s.replace(/წელი$/, 'წლის უკან');
        }
    },
    s : 'რამდენიმე წამი',
    ss : '%d წამი',
    m : 'წუთი',
    mm : '%d წუთი',
    h : 'საათი',
    hh : '%d საათი',
    d : 'დღე',
    dd : '%d დღე',
    M : 'თვე',
    MM : '%d თვე',
    y : 'წელი',
    yy : '%d წელი'
},
dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
ordinal : function (number) {
    if (number === 0) {
        return number;
    }
    if (number === 1) {
        return number + '-ლი';
    }
    if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
        return 'მე-' + number;
    }
    return number + '-ე';
},
week : {
    dow : 1,
    doy : 7
}

});

return ka;

})));

/***/ }),

/***/ “./node_modules/moment/locale/kk.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/kk.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var suffixes = {

0: '-ші',
1: '-ші',
2: '-ші',
3: '-ші',
4: '-ші',
5: '-ші',
6: '-шы',
7: '-ші',
8: '-ші',
9: '-шы',
10: '-шы',
20: '-шы',
30: '-шы',
40: '-шы',
50: '-ші',
60: '-шы',
70: '-ші',
80: '-ші',
90: '-шы',
100: '-ші'

};

var kk = moment.defineLocale('kk', {

months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[Бүгін сағат] LT',
    nextDay : '[Ертең сағат] LT',
    nextWeek : 'dddd [сағат] LT',
    lastDay : '[Кеше сағат] LT',
    lastWeek : '[Өткен аптаның] dddd [сағат] LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s ішінде',
    past : '%s бұрын',
    s : 'бірнеше секунд',
    ss : '%d секунд',
    m : 'бір минут',
    mm : '%d минут',
    h : 'бір сағат',
    hh : '%d сағат',
    d : 'бір күн',
    dd : '%d күн',
    M : 'бір ай',
    MM : '%d ай',
    y : 'бір жыл',
    yy : '%d жыл'
},
dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
ordinal : function (number) {
    var a = number % 10,
        b = number >= 100 ? 100 : null;
    return number + (suffixes[number] || suffixes[a] || suffixes[b]);
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return kk;

})));

/***/ }),

/***/ “./node_modules/moment/locale/km.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/km.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var km = moment.defineLocale('km', {

months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
longDateFormat: {
    LT: 'HH:mm',
    LTS : 'HH:mm:ss',
    L: 'DD/MM/YYYY',
    LL: 'D MMMM YYYY',
    LLL: 'D MMMM YYYY HH:mm',
    LLLL: 'dddd, D MMMM YYYY HH:mm'
},
calendar: {
    sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
    nextDay: '[ស្អែក ម៉ោង] LT',
    nextWeek: 'dddd [ម៉ោង] LT',
    lastDay: '[ម្សិលមិញ ម៉ោង] LT',
    lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
    sameElse: 'L'
},
relativeTime: {
    future: '%sទៀត',
    past: '%sមុន',
    s: 'ប៉ុន្មានវិនាទី',
    ss: '%d វិនាទី',
    m: 'មួយនាទី',
    mm: '%d នាទី',
    h: 'មួយម៉ោង',
    hh: '%d ម៉ោង',
    d: 'មួយថ្ងៃ',
    dd: '%d ថ្ងៃ',
    M: 'មួយខែ',
    MM: '%d ខែ',
    y: 'មួយឆ្នាំ',
    yy: '%d ឆ្នាំ'
},
week: {
    dow: 1, // Monday is the first day of the week.
    doy: 4 // The week that contains Jan 4th is the first week of the year.
}

});

return km;

})));

/***/ }),

/***/ “./node_modules/moment/locale/kn.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/kn.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '೧',
'2': '೨',
'3': '೩',
'4': '೪',
'5': '೫',
'6': '೬',
'7': '೭',
'8': '೮',
'9': '೯',
'0': '೦'

}, numberMap = {

'೧': '1',
'೨': '2',
'೩': '3',
'೪': '4',
'೫': '5',
'೬': '6',
'೭': '7',
'೮': '8',
'೯': '9',
'೦': '0'

};

var kn = moment.defineLocale('kn', {

months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),
monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),
monthsParseExact: true,
weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),
weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
longDateFormat : {
    LT : 'A h:mm',
    LTS : 'A h:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY, A h:mm',
    LLLL : 'dddd, D MMMM YYYY, A h:mm'
},
calendar : {
    sameDay : '[ಇಂದು] LT',
    nextDay : '[ನಾಳೆ] LT',
    nextWeek : 'dddd, LT',
    lastDay : '[ನಿನ್ನೆ] LT',
    lastWeek : '[ಕೊನೆಯ] dddd, LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s ನಂತರ',
    past : '%s ಹಿಂದೆ',
    s : 'ಕೆಲವು ಕ್ಷಣಗಳು',
    ss : '%d ಸೆಕೆಂಡುಗಳು',
    m : 'ಒಂದು ನಿಮಿಷ',
    mm : '%d ನಿಮಿಷ',
    h : 'ಒಂದು ಗಂಟೆ',
    hh : '%d ಗಂಟೆ',
    d : 'ಒಂದು ದಿನ',
    dd : '%d ದಿನ',
    M : 'ಒಂದು ತಿಂಗಳು',
    MM : '%d ತಿಂಗಳು',
    y : 'ಒಂದು ವರ್ಷ',
    yy : '%d ವರ್ಷ'
},
preparse: function (string) {
    return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
        return numberMap[match];
    });
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    });
},
meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'ರಾತ್ರಿ') {
        return hour < 4 ? hour : hour + 12;
    } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
        return hour;
    } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
        return hour >= 10 ? hour : hour + 12;
    } else if (meridiem === 'ಸಂಜೆ') {
        return hour + 12;
    }
},
meridiem : function (hour, minute, isLower) {
    if (hour < 4) {
        return 'ರಾತ್ರಿ';
    } else if (hour < 10) {
        return 'ಬೆಳಿಗ್ಗೆ';
    } else if (hour < 17) {
        return 'ಮಧ್ಯಾಹ್ನ';
    } else if (hour < 20) {
        return 'ಸಂಜೆ';
    } else {
        return 'ರಾತ್ರಿ';
    }
},
dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
ordinal : function (number) {
    return number + 'ನೇ';
},
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 6  // The week that contains Jan 1st is the first week of the year.
}

});

return kn;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ko.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ko.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var ko = moment.defineLocale('ko', {

months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
longDateFormat : {
    LT : 'A h:mm',
    LTS : 'A h:mm:ss',
    L : 'YYYY.MM.DD.',
    LL : 'YYYY년 MMMM D일',
    LLL : 'YYYY년 MMMM D일 A h:mm',
    LLLL : 'YYYY년 MMMM D일 dddd A h:mm',
    l : 'YYYY.MM.DD.',
    ll : 'YYYY년 MMMM D일',
    lll : 'YYYY년 MMMM D일 A h:mm',
    llll : 'YYYY년 MMMM D일 dddd A h:mm'
},
calendar : {
    sameDay : '오늘 LT',
    nextDay : '내일 LT',
    nextWeek : 'dddd LT',
    lastDay : '어제 LT',
    lastWeek : '지난주 dddd LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s 후',
    past : '%s 전',
    s : '몇 초',
    ss : '%d초',
    m : '1분',
    mm : '%d분',
    h : '한 시간',
    hh : '%d시간',
    d : '하루',
    dd : '%d일',
    M : '한 달',
    MM : '%d달',
    y : '일 년',
    yy : '%d년'
},
dayOfMonthOrdinalParse : /\d{1,2}(일|월|주)/,
ordinal : function (number, period) {
    switch (period) {
        case 'd':
        case 'D':
        case 'DDD':
            return number + '일';
        case 'M':
            return number + '월';
        case 'w':
        case 'W':
            return number + '주';
        default:
            return number;
    }
},
meridiemParse : /오전|오후/,
isPM : function (token) {
    return token === '오후';
},
meridiem : function (hour, minute, isUpper) {
    return hour < 12 ? '오전' : '오후';
}

});

return ko;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ky.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ky.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var suffixes = {

0: '-чү',
1: '-чи',
2: '-чи',
3: '-чү',
4: '-чү',
5: '-чи',
6: '-чы',
7: '-чи',
8: '-чи',
9: '-чу',
10: '-чу',
20: '-чы',
30: '-чу',
40: '-чы',
50: '-чү',
60: '-чы',
70: '-чи',
80: '-чи',
90: '-чу',
100: '-чү'

};

var ky = moment.defineLocale('ky', {

months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[Бүгүн саат] LT',
    nextDay : '[Эртең саат] LT',
    nextWeek : 'dddd [саат] LT',
    lastDay : '[Кече саат] LT',
    lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s ичинде',
    past : '%s мурун',
    s : 'бирнече секунд',
    ss : '%d секунд',
    m : 'бир мүнөт',
    mm : '%d мүнөт',
    h : 'бир саат',
    hh : '%d саат',
    d : 'бир күн',
    dd : '%d күн',
    M : 'бир ай',
    MM : '%d ай',
    y : 'бир жыл',
    yy : '%d жыл'
},
dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
ordinal : function (number) {
    var a = number % 10,
        b = number >= 100 ? 100 : null;
    return number + (suffixes[number] || suffixes[a] || suffixes[b]);
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return ky;

})));

/***/ }),

/***/ “./node_modules/moment/locale/lb.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/lb.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function processRelativeTime(number, withoutSuffix, key, isFuture) {

var format = {
    'm': ['eng Minutt', 'enger Minutt'],
    'h': ['eng Stonn', 'enger Stonn'],
    'd': ['een Dag', 'engem Dag'],
    'M': ['ee Mount', 'engem Mount'],
    'y': ['ee Joer', 'engem Joer']
};
return withoutSuffix ? format[key][0] : format[key][1];

} function processFutureTime(string) {

var number = string.substr(0, string.indexOf(' '));
if (eifelerRegelAppliesToNumber(number)) {
    return 'a ' + string;
}
return 'an ' + string;

} function processPastTime(string) {

var number = string.substr(0, string.indexOf(' '));
if (eifelerRegelAppliesToNumber(number)) {
    return 'viru ' + string;
}
return 'virun ' + string;

} /**

* Returns true if the word before the given number loses the '-n' ending.
* e.g. 'an 10 Deeg' but 'a 5 Deeg'
*
* @param number {integer}
* @returns {boolean}
*/

function eifelerRegelAppliesToNumber(number) {

number = parseInt(number, 10);
if (isNaN(number)) {
    return false;
}
if (number < 0) {
    // Negative Number --> always true
    return true;
} else if (number < 10) {
    // Only 1 digit
    if (4 <= number && number <= 7) {
        return true;
    }
    return false;
} else if (number < 100) {
    // 2 digits
    var lastDigit = number % 10, firstDigit = number / 10;
    if (lastDigit === 0) {
        return eifelerRegelAppliesToNumber(firstDigit);
    }
    return eifelerRegelAppliesToNumber(lastDigit);
} else if (number < 10000) {
    // 3 or 4 digits --> recursively check first digit
    while (number >= 10) {
        number = number / 10;
    }
    return eifelerRegelAppliesToNumber(number);
} else {
    // Anything larger than 4 digits: recursively check first n-3 digits
    number = number / 1000;
    return eifelerRegelAppliesToNumber(number);
}

}

var lb = moment.defineLocale('lb', {

months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
monthsParseExact : true,
weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
weekdaysParseExact : true,
longDateFormat: {
    LT: 'H:mm [Auer]',
    LTS: 'H:mm:ss [Auer]',
    L: 'DD.MM.YYYY',
    LL: 'D. MMMM YYYY',
    LLL: 'D. MMMM YYYY H:mm [Auer]',
    LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
},
calendar: {
    sameDay: '[Haut um] LT',
    sameElse: 'L',
    nextDay: '[Muer um] LT',
    nextWeek: 'dddd [um] LT',
    lastDay: '[Gëschter um] LT',
    lastWeek: function () {
        // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
        switch (this.day()) {
            case 2:
            case 4:
                return '[Leschten] dddd [um] LT';
            default:
                return '[Leschte] dddd [um] LT';
        }
    }
},
relativeTime : {
    future : processFutureTime,
    past : processPastTime,
    s : 'e puer Sekonnen',
    ss : '%d Sekonnen',
    m : processRelativeTime,
    mm : '%d Minutten',
    h : processRelativeTime,
    hh : '%d Stonnen',
    d : processRelativeTime,
    dd : '%d Deeg',
    M : processRelativeTime,
    MM : '%d Méint',
    y : processRelativeTime,
    yy : '%d Joer'
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal: '%d.',
week: {
    dow: 1, // Monday is the first day of the week.
    doy: 4  // The week that contains Jan 4th is the first week of the year.
}

});

return lb;

})));

/***/ }),

/***/ “./node_modules/moment/locale/lo.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/lo.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var lo = moment.defineLocale('lo', {

months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'ວັນdddd D MMMM YYYY HH:mm'
},
meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
isPM: function (input) {
    return input === 'ຕອນແລງ';
},
meridiem : function (hour, minute, isLower) {
    if (hour < 12) {
        return 'ຕອນເຊົ້າ';
    } else {
        return 'ຕອນແລງ';
    }
},
calendar : {
    sameDay : '[ມື້ນີ້ເວລາ] LT',
    nextDay : '[ມື້ອື່ນເວລາ] LT',
    nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',
    lastDay : '[ມື້ວານນີ້ເວລາ] LT',
    lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'ອີກ %s',
    past : '%sຜ່ານມາ',
    s : 'ບໍ່ເທົ່າໃດວິນາທີ',
    ss : '%d ວິນາທີ' ,
    m : '1 ນາທີ',
    mm : '%d ນາທີ',
    h : '1 ຊົ່ວໂມງ',
    hh : '%d ຊົ່ວໂມງ',
    d : '1 ມື້',
    dd : '%d ມື້',
    M : '1 ເດືອນ',
    MM : '%d ເດືອນ',
    y : '1 ປີ',
    yy : '%d ປີ'
},
dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
ordinal : function (number) {
    return 'ທີ່' + number;
}

});

return lo;

})));

/***/ }),

/***/ “./node_modules/moment/locale/lt.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/lt.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var units = {

'ss' : 'sekundė_sekundžių_sekundes',
'm' : 'minutė_minutės_minutę',
'mm': 'minutės_minučių_minutes',
'h' : 'valanda_valandos_valandą',
'hh': 'valandos_valandų_valandas',
'd' : 'diena_dienos_dieną',
'dd': 'dienos_dienų_dienas',
'M' : 'mėnuo_mėnesio_mėnesį',
'MM': 'mėnesiai_mėnesių_mėnesius',
'y' : 'metai_metų_metus',
'yy': 'metai_metų_metus'

}; function translateSeconds(number, withoutSuffix, key, isFuture) {

if (withoutSuffix) {
    return 'kelios sekundės';
} else {
    return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
}

} function translateSingular(number, withoutSuffix, key, isFuture) {

return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);

} function special(number) {

return number % 10 === 0 || (number > 10 && number < 20);

} function forms(key) {

return units[key].split('_');

} function translate(number, withoutSuffix, key, isFuture) {

var result = number + ' ';
if (number === 1) {
    return result + translateSingular(number, withoutSuffix, key[0], isFuture);
} else if (withoutSuffix) {
    return result + (special(number) ? forms(key)[1] : forms(key)[0]);
} else {
    if (isFuture) {
        return result + forms(key)[1];
    } else {
        return result + (special(number) ? forms(key)[1] : forms(key)[2]);
    }
}

} var lt = moment.defineLocale('lt', {

months : {
    format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
    standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),
    isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/
},
monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
weekdays : {
    format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
    standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
    isFormat: /dddd HH:mm/
},
weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'YYYY-MM-DD',
    LL : 'YYYY [m.] MMMM D [d.]',
    LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
    LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
    l : 'YYYY-MM-DD',
    ll : 'YYYY [m.] MMMM D [d.]',
    lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
    llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
},
calendar : {
    sameDay : '[Šiandien] LT',
    nextDay : '[Rytoj] LT',
    nextWeek : 'dddd LT',
    lastDay : '[Vakar] LT',
    lastWeek : '[Praėjusį] dddd LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'po %s',
    past : 'prieš %s',
    s : translateSeconds,
    ss : translate,
    m : translateSingular,
    mm : translate,
    h : translateSingular,
    hh : translate,
    d : translateSingular,
    dd : translate,
    M : translateSingular,
    MM : translate,
    y : translateSingular,
    yy : translate
},
dayOfMonthOrdinalParse: /\d{1,2}-oji/,
ordinal : function (number) {
    return number + '-oji';
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return lt;

})));

/***/ }),

/***/ “./node_modules/moment/locale/lv.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/lv.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var units = {

'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
'h': 'stundas_stundām_stunda_stundas'.split('_'),
'hh': 'stundas_stundām_stunda_stundas'.split('_'),
'd': 'dienas_dienām_diena_dienas'.split('_'),
'dd': 'dienas_dienām_diena_dienas'.split('_'),
'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
'y': 'gada_gadiem_gads_gadi'.split('_'),
'yy': 'gada_gadiem_gads_gadi'.split('_')

}; /**

* @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
*/

function format(forms, number, withoutSuffix) {

if (withoutSuffix) {
    // E.g. "21 minūte", "3 minūtes".
    return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
} else {
    // E.g. "21 minūtes" as in "pēc 21 minūtes".
    // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
    return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
}

} function relativeTimeWithPlural(number, withoutSuffix, key) {

return number + ' ' + format(units[key], number, withoutSuffix);

} function relativeTimeWithSingular(number, withoutSuffix, key) {

return format(units[key], number, withoutSuffix);

} function relativeSeconds(number, withoutSuffix) {

return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';

}

var lv = moment.defineLocale('lv', {

months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),
weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY.',
    LL : 'YYYY. [gada] D. MMMM',
    LLL : 'YYYY. [gada] D. MMMM, HH:mm',
    LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'
},
calendar : {
    sameDay : '[Šodien pulksten] LT',
    nextDay : '[Rīt pulksten] LT',
    nextWeek : 'dddd [pulksten] LT',
    lastDay : '[Vakar pulksten] LT',
    lastWeek : '[Pagājušā] dddd [pulksten] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'pēc %s',
    past : 'pirms %s',
    s : relativeSeconds,
    ss : relativeTimeWithPlural,
    m : relativeTimeWithSingular,
    mm : relativeTimeWithPlural,
    h : relativeTimeWithSingular,
    hh : relativeTimeWithPlural,
    d : relativeTimeWithSingular,
    dd : relativeTimeWithPlural,
    M : relativeTimeWithSingular,
    MM : relativeTimeWithPlural,
    y : relativeTimeWithSingular,
    yy : relativeTimeWithPlural
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return lv;

})));

/***/ }),

/***/ “./node_modules/moment/locale/me.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/me.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var translator = {

words: { //Different grammatical cases
    ss: ['sekund', 'sekunda', 'sekundi'],
    m: ['jedan minut', 'jednog minuta'],
    mm: ['minut', 'minuta', 'minuta'],
    h: ['jedan sat', 'jednog sata'],
    hh: ['sat', 'sata', 'sati'],
    dd: ['dan', 'dana', 'dana'],
    MM: ['mjesec', 'mjeseca', 'mjeseci'],
    yy: ['godina', 'godine', 'godina']
},
correctGrammaticalCase: function (number, wordKey) {
    return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
},
translate: function (number, withoutSuffix, key) {
    var wordKey = translator.words[key];
    if (key.length === 1) {
        return withoutSuffix ? wordKey[0] : wordKey[1];
    } else {
        return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
    }
}

};

var me = moment.defineLocale('me', {

months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
monthsParseExact : true,
weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
weekdaysParseExact : true,
longDateFormat: {
    LT: 'H:mm',
    LTS : 'H:mm:ss',
    L: 'DD.MM.YYYY',
    LL: 'D. MMMM YYYY',
    LLL: 'D. MMMM YYYY H:mm',
    LLLL: 'dddd, D. MMMM YYYY H:mm'
},
calendar: {
    sameDay: '[danas u] LT',
    nextDay: '[sjutra u] LT',

    nextWeek: function () {
        switch (this.day()) {
            case 0:
                return '[u] [nedjelju] [u] LT';
            case 3:
                return '[u] [srijedu] [u] LT';
            case 6:
                return '[u] [subotu] [u] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[u] dddd [u] LT';
        }
    },
    lastDay  : '[juče u] LT',
    lastWeek : function () {
        var lastWeekDays = [
            '[prošle] [nedjelje] [u] LT',
            '[prošlog] [ponedjeljka] [u] LT',
            '[prošlog] [utorka] [u] LT',
            '[prošle] [srijede] [u] LT',
            '[prošlog] [četvrtka] [u] LT',
            '[prošlog] [petka] [u] LT',
            '[prošle] [subote] [u] LT'
        ];
        return lastWeekDays[this.day()];
    },
    sameElse : 'L'
},
relativeTime : {
    future : 'za %s',
    past   : 'prije %s',
    s      : 'nekoliko sekundi',
    ss     : translator.translate,
    m      : translator.translate,
    mm     : translator.translate,
    h      : translator.translate,
    hh     : translator.translate,
    d      : 'dan',
    dd     : translator.translate,
    M      : 'mjesec',
    MM     : translator.translate,
    y      : 'godinu',
    yy     : translator.translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return me;

})));

/***/ }),

/***/ “./node_modules/moment/locale/mi.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/mi.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var mi = moment.defineLocale('mi', {

months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),
monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),
monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
longDateFormat: {
    LT: 'HH:mm',
    LTS: 'HH:mm:ss',
    L: 'DD/MM/YYYY',
    LL: 'D MMMM YYYY',
    LLL: 'D MMMM YYYY [i] HH:mm',
    LLLL: 'dddd, D MMMM YYYY [i] HH:mm'
},
calendar: {
    sameDay: '[i teie mahana, i] LT',
    nextDay: '[apopo i] LT',
    nextWeek: 'dddd [i] LT',
    lastDay: '[inanahi i] LT',
    lastWeek: 'dddd [whakamutunga i] LT',
    sameElse: 'L'
},
relativeTime: {
    future: 'i roto i %s',
    past: '%s i mua',
    s: 'te hēkona ruarua',
    ss: '%d hēkona',
    m: 'he meneti',
    mm: '%d meneti',
    h: 'te haora',
    hh: '%d haora',
    d: 'he ra',
    dd: '%d ra',
    M: 'he marama',
    MM: '%d marama',
    y: 'he tau',
    yy: '%d tau'
},
dayOfMonthOrdinalParse: /\d{1,2}º/,
ordinal: '%dº',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return mi;

})));

/***/ }),

/***/ “./node_modules/moment/locale/mk.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/mk.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var mk = moment.defineLocale('mk', {

months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'D.MM.YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY H:mm',
    LLLL : 'dddd, D MMMM YYYY H:mm'
},
calendar : {
    sameDay : '[Денес во] LT',
    nextDay : '[Утре во] LT',
    nextWeek : '[Во] dddd [во] LT',
    lastDay : '[Вчера во] LT',
    lastWeek : function () {
        switch (this.day()) {
            case 0:
            case 3:
            case 6:
                return '[Изминатата] dddd [во] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[Изминатиот] dddd [во] LT';
        }
    },
    sameElse : 'L'
},
relativeTime : {
    future : 'после %s',
    past : 'пред %s',
    s : 'неколку секунди',
    ss : '%d секунди',
    m : 'минута',
    mm : '%d минути',
    h : 'час',
    hh : '%d часа',
    d : 'ден',
    dd : '%d дена',
    M : 'месец',
    MM : '%d месеци',
    y : 'година',
    yy : '%d години'
},
dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
ordinal : function (number) {
    var lastDigit = number % 10,
        last2Digits = number % 100;
    if (number === 0) {
        return number + '-ев';
    } else if (last2Digits === 0) {
        return number + '-ен';
    } else if (last2Digits > 10 && last2Digits < 20) {
        return number + '-ти';
    } else if (lastDigit === 1) {
        return number + '-ви';
    } else if (lastDigit === 2) {
        return number + '-ри';
    } else if (lastDigit === 7 || lastDigit === 8) {
        return number + '-ми';
    } else {
        return number + '-ти';
    }
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return mk;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ml.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ml.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var ml = moment.defineLocale('ml', {

months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
monthsParseExact : true,
weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
longDateFormat : {
    LT : 'A h:mm -നു',
    LTS : 'A h:mm:ss -നു',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY, A h:mm -നു',
    LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'
},
calendar : {
    sameDay : '[ഇന്ന്] LT',
    nextDay : '[നാളെ] LT',
    nextWeek : 'dddd, LT',
    lastDay : '[ഇന്നലെ] LT',
    lastWeek : '[കഴിഞ്ഞ] dddd, LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s കഴിഞ്ഞ്',
    past : '%s മുൻപ്',
    s : 'അൽപ നിമിഷങ്ങൾ',
    ss : '%d സെക്കൻഡ്',
    m : 'ഒരു മിനിറ്റ്',
    mm : '%d മിനിറ്റ്',
    h : 'ഒരു മണിക്കൂർ',
    hh : '%d മണിക്കൂർ',
    d : 'ഒരു ദിവസം',
    dd : '%d ദിവസം',
    M : 'ഒരു മാസം',
    MM : '%d മാസം',
    y : 'ഒരു വർഷം',
    yy : '%d വർഷം'
},
meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if ((meridiem === 'രാത്രി' && hour >= 4) ||
            meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
            meridiem === 'വൈകുന്നേരം') {
        return hour + 12;
    } else {
        return hour;
    }
},
meridiem : function (hour, minute, isLower) {
    if (hour < 4) {
        return 'രാത്രി';
    } else if (hour < 12) {
        return 'രാവിലെ';
    } else if (hour < 17) {
        return 'ഉച്ച കഴിഞ്ഞ്';
    } else if (hour < 20) {
        return 'വൈകുന്നേരം';
    } else {
        return 'രാത്രി';
    }
}

});

return ml;

})));

/***/ }),

/***/ “./node_modules/moment/locale/mr.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/mr.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '१',
'2': '२',
'3': '३',
'4': '४',
'5': '५',
'6': '६',
'7': '७',
'8': '८',
'9': '९',
'0': '०'

}, numberMap = {

'१': '1',
'२': '2',
'३': '3',
'४': '4',
'५': '5',
'६': '6',
'७': '7',
'८': '8',
'९': '9',
'०': '0'

};

function relativeTimeMr(number, withoutSuffix, string, isFuture) {

var output = '';
if (withoutSuffix) {
    switch (string) {
        case 's': output = 'काही सेकंद'; break;
        case 'ss': output = '%d सेकंद'; break;
        case 'm': output = 'एक मिनिट'; break;
        case 'mm': output = '%d मिनिटे'; break;
        case 'h': output = 'एक तास'; break;
        case 'hh': output = '%d तास'; break;
        case 'd': output = 'एक दिवस'; break;
        case 'dd': output = '%d दिवस'; break;
        case 'M': output = 'एक महिना'; break;
        case 'MM': output = '%d महिने'; break;
        case 'y': output = 'एक वर्ष'; break;
        case 'yy': output = '%d वर्षे'; break;
    }
}
else {
    switch (string) {
        case 's': output = 'काही सेकंदां'; break;
        case 'ss': output = '%d सेकंदां'; break;
        case 'm': output = 'एका मिनिटा'; break;
        case 'mm': output = '%d मिनिटां'; break;
        case 'h': output = 'एका तासा'; break;
        case 'hh': output = '%d तासां'; break;
        case 'd': output = 'एका दिवसा'; break;
        case 'dd': output = '%d दिवसां'; break;
        case 'M': output = 'एका महिन्या'; break;
        case 'MM': output = '%d महिन्यां'; break;
        case 'y': output = 'एका वर्षा'; break;
        case 'yy': output = '%d वर्षां'; break;
    }
}
return output.replace(/%d/i, number);

}

var mr = moment.defineLocale('mr', {

months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
monthsParseExact : true,
weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
longDateFormat : {
    LT : 'A h:mm वाजता',
    LTS : 'A h:mm:ss वाजता',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY, A h:mm वाजता',
    LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'
},
calendar : {
    sameDay : '[आज] LT',
    nextDay : '[उद्या] LT',
    nextWeek : 'dddd, LT',
    lastDay : '[काल] LT',
    lastWeek: '[मागील] dddd, LT',
    sameElse : 'L'
},
relativeTime : {
    future: '%sमध्ये',
    past: '%sपूर्वी',
    s: relativeTimeMr,
    ss: relativeTimeMr,
    m: relativeTimeMr,
    mm: relativeTimeMr,
    h: relativeTimeMr,
    hh: relativeTimeMr,
    d: relativeTimeMr,
    dd: relativeTimeMr,
    M: relativeTimeMr,
    MM: relativeTimeMr,
    y: relativeTimeMr,
    yy: relativeTimeMr
},
preparse: function (string) {
    return string.replace(/[१२३४५६७८९०]/g, function (match) {
        return numberMap[match];
    });
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    });
},
meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'रात्री') {
        return hour < 4 ? hour : hour + 12;
    } else if (meridiem === 'सकाळी') {
        return hour;
    } else if (meridiem === 'दुपारी') {
        return hour >= 10 ? hour : hour + 12;
    } else if (meridiem === 'सायंकाळी') {
        return hour + 12;
    }
},
meridiem: function (hour, minute, isLower) {
    if (hour < 4) {
        return 'रात्री';
    } else if (hour < 10) {
        return 'सकाळी';
    } else if (hour < 17) {
        return 'दुपारी';
    } else if (hour < 20) {
        return 'सायंकाळी';
    } else {
        return 'रात्री';
    }
},
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 6  // The week that contains Jan 1st is the first week of the year.
}

});

return mr;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ms-my.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/ms-my.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var msMy = moment.defineLocale('ms-my', {

months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
longDateFormat : {
    LT : 'HH.mm',
    LTS : 'HH.mm.ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY [pukul] HH.mm',
    LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
},
meridiemParse: /pagi|tengahari|petang|malam/,
meridiemHour: function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'pagi') {
        return hour;
    } else if (meridiem === 'tengahari') {
        return hour >= 11 ? hour : hour + 12;
    } else if (meridiem === 'petang' || meridiem === 'malam') {
        return hour + 12;
    }
},
meridiem : function (hours, minutes, isLower) {
    if (hours < 11) {
        return 'pagi';
    } else if (hours < 15) {
        return 'tengahari';
    } else if (hours < 19) {
        return 'petang';
    } else {
        return 'malam';
    }
},
calendar : {
    sameDay : '[Hari ini pukul] LT',
    nextDay : '[Esok pukul] LT',
    nextWeek : 'dddd [pukul] LT',
    lastDay : '[Kelmarin pukul] LT',
    lastWeek : 'dddd [lepas pukul] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'dalam %s',
    past : '%s yang lepas',
    s : 'beberapa saat',
    ss : '%d saat',
    m : 'seminit',
    mm : '%d minit',
    h : 'sejam',
    hh : '%d jam',
    d : 'sehari',
    dd : '%d hari',
    M : 'sebulan',
    MM : '%d bulan',
    y : 'setahun',
    yy : '%d tahun'
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return msMy;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ms.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ms.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var ms = moment.defineLocale('ms', {

months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
longDateFormat : {
    LT : 'HH.mm',
    LTS : 'HH.mm.ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY [pukul] HH.mm',
    LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
},
meridiemParse: /pagi|tengahari|petang|malam/,
meridiemHour: function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'pagi') {
        return hour;
    } else if (meridiem === 'tengahari') {
        return hour >= 11 ? hour : hour + 12;
    } else if (meridiem === 'petang' || meridiem === 'malam') {
        return hour + 12;
    }
},
meridiem : function (hours, minutes, isLower) {
    if (hours < 11) {
        return 'pagi';
    } else if (hours < 15) {
        return 'tengahari';
    } else if (hours < 19) {
        return 'petang';
    } else {
        return 'malam';
    }
},
calendar : {
    sameDay : '[Hari ini pukul] LT',
    nextDay : '[Esok pukul] LT',
    nextWeek : 'dddd [pukul] LT',
    lastDay : '[Kelmarin pukul] LT',
    lastWeek : 'dddd [lepas pukul] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'dalam %s',
    past : '%s yang lepas',
    s : 'beberapa saat',
    ss : '%d saat',
    m : 'seminit',
    mm : '%d minit',
    h : 'sejam',
    hh : '%d jam',
    d : 'sehari',
    dd : '%d hari',
    M : 'sebulan',
    MM : '%d bulan',
    y : 'setahun',
    yy : '%d tahun'
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return ms;

})));

/***/ }),

/***/ “./node_modules/moment/locale/mt.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/mt.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var mt = moment.defineLocale('mt', {

months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),
monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),
weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[Illum fil-]LT',
    nextDay : '[Għada fil-]LT',
    nextWeek : 'dddd [fil-]LT',
    lastDay : '[Il-bieraħ fil-]LT',
    lastWeek : 'dddd [li għadda] [fil-]LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'f’ %s',
    past : '%s ilu',
    s : 'ftit sekondi',
    ss : '%d sekondi',
    m : 'minuta',
    mm : '%d minuti',
    h : 'siegħa',
    hh : '%d siegħat',
    d : 'ġurnata',
    dd : '%d ġranet',
    M : 'xahar',
    MM : '%d xhur',
    y : 'sena',
    yy : '%d sni'
},
dayOfMonthOrdinalParse : /\d{1,2}º/,
ordinal: '%dº',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return mt;

})));

/***/ }),

/***/ “./node_modules/moment/locale/my.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/my.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '၁',
'2': '၂',
'3': '၃',
'4': '၄',
'5': '၅',
'6': '၆',
'7': '၇',
'8': '၈',
'9': '၉',
'0': '၀'

}, numberMap = {

'၁': '1',
'၂': '2',
'၃': '3',
'၄': '4',
'၅': '5',
'၆': '6',
'၇': '7',
'၈': '8',
'၉': '9',
'၀': '0'

};

var my = moment.defineLocale('my', {

months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),

longDateFormat: {
    LT: 'HH:mm',
    LTS: 'HH:mm:ss',
    L: 'DD/MM/YYYY',
    LL: 'D MMMM YYYY',
    LLL: 'D MMMM YYYY HH:mm',
    LLLL: 'dddd D MMMM YYYY HH:mm'
},
calendar: {
    sameDay: '[ယနေ.] LT [မှာ]',
    nextDay: '[မနက်ဖြန်] LT [မှာ]',
    nextWeek: 'dddd LT [မှာ]',
    lastDay: '[မနေ.က] LT [မှာ]',
    lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
    sameElse: 'L'
},
relativeTime: {
    future: 'လာမည့် %s မှာ',
    past: 'လွန်ခဲ့သော %s က',
    s: 'စက္ကန်.အနည်းငယ်',
    ss : '%d စက္ကန့်',
    m: 'တစ်မိနစ်',
    mm: '%d မိနစ်',
    h: 'တစ်နာရီ',
    hh: '%d နာရီ',
    d: 'တစ်ရက်',
    dd: '%d ရက်',
    M: 'တစ်လ',
    MM: '%d လ',
    y: 'တစ်နှစ်',
    yy: '%d နှစ်'
},
preparse: function (string) {
    return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
        return numberMap[match];
    });
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    });
},
week: {
    dow: 1, // Monday is the first day of the week.
    doy: 4 // The week that contains Jan 1st is the first week of the year.
}

});

return my;

})));

/***/ }),

/***/ “./node_modules/moment/locale/nb.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/nb.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var nb = moment.defineLocale('nb', {

months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
monthsParseExact : true,
weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),
weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM YYYY',
    LLL : 'D. MMMM YYYY [kl.] HH:mm',
    LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
},
calendar : {
    sameDay: '[i dag kl.] LT',
    nextDay: '[i morgen kl.] LT',
    nextWeek: 'dddd [kl.] LT',
    lastDay: '[i går kl.] LT',
    lastWeek: '[forrige] dddd [kl.] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'om %s',
    past : '%s siden',
    s : 'noen sekunder',
    ss : '%d sekunder',
    m : 'ett minutt',
    mm : '%d minutter',
    h : 'en time',
    hh : '%d timer',
    d : 'en dag',
    dd : '%d dager',
    M : 'en måned',
    MM : '%d måneder',
    y : 'ett år',
    yy : '%d år'
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return nb;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ne.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ne.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '१',
'2': '२',
'3': '३',
'4': '४',
'5': '५',
'6': '६',
'7': '७',
'8': '८',
'9': '९',
'0': '०'

}, numberMap = {

'१': '1',
'२': '2',
'३': '3',
'४': '4',
'५': '5',
'६': '6',
'७': '7',
'८': '8',
'९': '9',
'०': '0'

};

var ne = moment.defineLocale('ne', {

months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
monthsParseExact : true,
weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'Aको h:mm बजे',
    LTS : 'Aको h:mm:ss बजे',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY, Aको h:mm बजे',
    LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'
},
preparse: function (string) {
    return string.replace(/[१२३४५६७८९०]/g, function (match) {
        return numberMap[match];
    });
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    });
},
meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'राति') {
        return hour < 4 ? hour : hour + 12;
    } else if (meridiem === 'बिहान') {
        return hour;
    } else if (meridiem === 'दिउँसो') {
        return hour >= 10 ? hour : hour + 12;
    } else if (meridiem === 'साँझ') {
        return hour + 12;
    }
},
meridiem : function (hour, minute, isLower) {
    if (hour < 3) {
        return 'राति';
    } else if (hour < 12) {
        return 'बिहान';
    } else if (hour < 16) {
        return 'दिउँसो';
    } else if (hour < 20) {
        return 'साँझ';
    } else {
        return 'राति';
    }
},
calendar : {
    sameDay : '[आज] LT',
    nextDay : '[भोलि] LT',
    nextWeek : '[आउँदो] dddd[,] LT',
    lastDay : '[हिजो] LT',
    lastWeek : '[गएको] dddd[,] LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%sमा',
    past : '%s अगाडि',
    s : 'केही क्षण',
    ss : '%d सेकेण्ड',
    m : 'एक मिनेट',
    mm : '%d मिनेट',
    h : 'एक घण्टा',
    hh : '%d घण्टा',
    d : 'एक दिन',
    dd : '%d दिन',
    M : 'एक महिना',
    MM : '%d महिना',
    y : 'एक बर्ष',
    yy : '%d बर्ष'
},
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 6  // The week that contains Jan 1st is the first week of the year.
}

});

return ne;

})));

/***/ }),

/***/ “./node_modules/moment/locale/nl-be.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/nl-be.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),

monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');

var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun?$/i, /^jul?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan.?|feb.?|mrt.?|apr.?|ju.?|aug.?|sep.?|okt.?|nov.?|dec.?)/i;

var nlBe = moment.defineLocale('nl-be', {

months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
monthsShort : function (m, format) {
    if (!m) {
        return monthsShortWithDots;
    } else if (/-MMM-/.test(format)) {
        return monthsShortWithoutDots[m.month()];
    } else {
        return monthsShortWithDots[m.month()];
    }
},

monthsRegex: monthsRegex,
monthsShortRegex: monthsRegex,
monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,

monthsParse : monthsParse,
longMonthsParse : monthsParse,
shortMonthsParse : monthsParse,

weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[vandaag om] LT',
    nextDay: '[morgen om] LT',
    nextWeek: 'dddd [om] LT',
    lastDay: '[gisteren om] LT',
    lastWeek: '[afgelopen] dddd [om] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'over %s',
    past : '%s geleden',
    s : 'een paar seconden',
    ss : '%d seconden',
    m : 'één minuut',
    mm : '%d minuten',
    h : 'één uur',
    hh : '%d uur',
    d : 'één dag',
    dd : '%d dagen',
    M : 'één maand',
    MM : '%d maanden',
    y : 'één jaar',
    yy : '%d jaar'
},
dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
ordinal : function (number) {
    return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return nlBe;

})));

/***/ }),

/***/ “./node_modules/moment/locale/nl.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/nl.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),

monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');

var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun?$/i, /^jul?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan.?|feb.?|mrt.?|apr.?|ju.?|aug.?|sep.?|okt.?|nov.?|dec.?)/i;

var nl = moment.defineLocale('nl', {

months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
monthsShort : function (m, format) {
    if (!m) {
        return monthsShortWithDots;
    } else if (/-MMM-/.test(format)) {
        return monthsShortWithoutDots[m.month()];
    } else {
        return monthsShortWithDots[m.month()];
    }
},

monthsRegex: monthsRegex,
monthsShortRegex: monthsRegex,
monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,

monthsParse : monthsParse,
longMonthsParse : monthsParse,
shortMonthsParse : monthsParse,

weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD-MM-YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[vandaag om] LT',
    nextDay: '[morgen om] LT',
    nextWeek: 'dddd [om] LT',
    lastDay: '[gisteren om] LT',
    lastWeek: '[afgelopen] dddd [om] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'over %s',
    past : '%s geleden',
    s : 'een paar seconden',
    ss : '%d seconden',
    m : 'één minuut',
    mm : '%d minuten',
    h : 'één uur',
    hh : '%d uur',
    d : 'één dag',
    dd : '%d dagen',
    M : 'één maand',
    MM : '%d maanden',
    y : 'één jaar',
    yy : '%d jaar'
},
dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
ordinal : function (number) {
    return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return nl;

})));

/***/ }),

/***/ “./node_modules/moment/locale/nn.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/nn.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var nn = moment.defineLocale('nn', {

months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM YYYY',
    LLL : 'D. MMMM YYYY [kl.] H:mm',
    LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
},
calendar : {
    sameDay: '[I dag klokka] LT',
    nextDay: '[I morgon klokka] LT',
    nextWeek: 'dddd [klokka] LT',
    lastDay: '[I går klokka] LT',
    lastWeek: '[Føregåande] dddd [klokka] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'om %s',
    past : '%s sidan',
    s : 'nokre sekund',
    ss : '%d sekund',
    m : 'eit minutt',
    mm : '%d minutt',
    h : 'ein time',
    hh : '%d timar',
    d : 'ein dag',
    dd : '%d dagar',
    M : 'ein månad',
    MM : '%d månader',
    y : 'eit år',
    yy : '%d år'
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return nn;

})));

/***/ }),

/***/ “./node_modules/moment/locale/pa-in.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/pa-in.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '੧',
'2': '੨',
'3': '੩',
'4': '੪',
'5': '੫',
'6': '੬',
'7': '੭',
'8': '੮',
'9': '੯',
'0': '੦'

}, numberMap = {

'੧': '1',
'੨': '2',
'੩': '3',
'੪': '4',
'੫': '5',
'੬': '6',
'੭': '7',
'੮': '8',
'੯': '9',
'੦': '0'

};

var paIn = moment.defineLocale('pa-in', {

// There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.
months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),
weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
longDateFormat : {
    LT : 'A h:mm ਵਜੇ',
    LTS : 'A h:mm:ss ਵਜੇ',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',
    LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'
},
calendar : {
    sameDay : '[ਅਜ] LT',
    nextDay : '[ਕਲ] LT',
    nextWeek : 'dddd, LT',
    lastDay : '[ਕਲ] LT',
    lastWeek : '[ਪਿਛਲੇ] dddd, LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s ਵਿੱਚ',
    past : '%s ਪਿਛਲੇ',
    s : 'ਕੁਝ ਸਕਿੰਟ',
    ss : '%d ਸਕਿੰਟ',
    m : 'ਇਕ ਮਿੰਟ',
    mm : '%d ਮਿੰਟ',
    h : 'ਇੱਕ ਘੰਟਾ',
    hh : '%d ਘੰਟੇ',
    d : 'ਇੱਕ ਦਿਨ',
    dd : '%d ਦਿਨ',
    M : 'ਇੱਕ ਮਹੀਨਾ',
    MM : '%d ਮਹੀਨੇ',
    y : 'ਇੱਕ ਸਾਲ',
    yy : '%d ਸਾਲ'
},
preparse: function (string) {
    return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
        return numberMap[match];
    });
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    });
},
// Punjabi notation for meridiems are quite fuzzy in practice. While there exists
// a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'ਰਾਤ') {
        return hour < 4 ? hour : hour + 12;
    } else if (meridiem === 'ਸਵੇਰ') {
        return hour;
    } else if (meridiem === 'ਦੁਪਹਿਰ') {
        return hour >= 10 ? hour : hour + 12;
    } else if (meridiem === 'ਸ਼ਾਮ') {
        return hour + 12;
    }
},
meridiem : function (hour, minute, isLower) {
    if (hour < 4) {
        return 'ਰਾਤ';
    } else if (hour < 10) {
        return 'ਸਵੇਰ';
    } else if (hour < 17) {
        return 'ਦੁਪਹਿਰ';
    } else if (hour < 20) {
        return 'ਸ਼ਾਮ';
    } else {
        return 'ਰਾਤ';
    }
},
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 6  // The week that contains Jan 1st is the first week of the year.
}

});

return paIn;

})));

/***/ }),

/***/ “./node_modules/moment/locale/pl.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/pl.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),

monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');

function plural(n) {

return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);

} function translate(number, withoutSuffix, key) {

var result = number + ' ';
switch (key) {
    case 'ss':
        return result + (plural(number) ? 'sekundy' : 'sekund');
    case 'm':
        return withoutSuffix ? 'minuta' : 'minutę';
    case 'mm':
        return result + (plural(number) ? 'minuty' : 'minut');
    case 'h':
        return withoutSuffix  ? 'godzina'  : 'godzinę';
    case 'hh':
        return result + (plural(number) ? 'godziny' : 'godzin');
    case 'MM':
        return result + (plural(number) ? 'miesiące' : 'miesięcy');
    case 'yy':
        return result + (plural(number) ? 'lata' : 'lat');
}

}

var pl = moment.defineLocale('pl', {

months : function (momentToFormat, format) {
    if (!momentToFormat) {
        return monthsNominative;
    } else if (format === '') {
        // Hack: if format empty we know this is used to generate
        // RegExp by moment. Give then back both valid forms of months
        // in RegExp ready format.
        return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
    } else if (/D MMMM/.test(format)) {
        return monthsSubjective[momentToFormat.month()];
    } else {
        return monthsNominative[momentToFormat.month()];
    }
},
monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[Dziś o] LT',
    nextDay: '[Jutro o] LT',
    nextWeek: function () {
        switch (this.day()) {
            case 0:
                return '[W niedzielę o] LT';

            case 2:
                return '[We wtorek o] LT';

            case 3:
                return '[W środę o] LT';

            case 6:
                return '[W sobotę o] LT';

            default:
                return '[W] dddd [o] LT';
        }
    },
    lastDay: '[Wczoraj o] LT',
    lastWeek: function () {
        switch (this.day()) {
            case 0:
                return '[W zeszłą niedzielę o] LT';
            case 3:
                return '[W zeszłą środę o] LT';
            case 6:
                return '[W zeszłą sobotę o] LT';
            default:
                return '[W zeszły] dddd [o] LT';
        }
    },
    sameElse: 'L'
},
relativeTime : {
    future : 'za %s',
    past : '%s temu',
    s : 'kilka sekund',
    ss : translate,
    m : translate,
    mm : translate,
    h : translate,
    hh : translate,
    d : '1 dzień',
    dd : '%d dni',
    M : 'miesiąc',
    MM : translate,
    y : 'rok',
    yy : translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return pl;

})));

/***/ }),

/***/ “./node_modules/moment/locale/pt-br.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/pt-br.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var ptBr = moment.defineLocale('pt-br', {

months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D [de] MMMM [de] YYYY',
    LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
    LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
},
calendar : {
    sameDay: '[Hoje às] LT',
    nextDay: '[Amanhã às] LT',
    nextWeek: 'dddd [às] LT',
    lastDay: '[Ontem às] LT',
    lastWeek: function () {
        return (this.day() === 0 || this.day() === 6) ?
            '[Último] dddd [às] LT' : // Saturday + Sunday
            '[Última] dddd [às] LT'; // Monday - Friday
    },
    sameElse: 'L'
},
relativeTime : {
    future : 'em %s',
    past : 'há %s',
    s : 'poucos segundos',
    ss : '%d segundos',
    m : 'um minuto',
    mm : '%d minutos',
    h : 'uma hora',
    hh : '%d horas',
    d : 'um dia',
    dd : '%d dias',
    M : 'um mês',
    MM : '%d meses',
    y : 'um ano',
    yy : '%d anos'
},
dayOfMonthOrdinalParse: /\d{1,2}º/,
ordinal : '%dº'

});

return ptBr;

})));

/***/ }),

/***/ “./node_modules/moment/locale/pt.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/pt.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var pt = moment.defineLocale('pt', {

months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D [de] MMMM [de] YYYY',
    LLL : 'D [de] MMMM [de] YYYY HH:mm',
    LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'
},
calendar : {
    sameDay: '[Hoje às] LT',
    nextDay: '[Amanhã às] LT',
    nextWeek: 'dddd [às] LT',
    lastDay: '[Ontem às] LT',
    lastWeek: function () {
        return (this.day() === 0 || this.day() === 6) ?
            '[Último] dddd [às] LT' : // Saturday + Sunday
            '[Última] dddd [às] LT'; // Monday - Friday
    },
    sameElse: 'L'
},
relativeTime : {
    future : 'em %s',
    past : 'há %s',
    s : 'segundos',
    ss : '%d segundos',
    m : 'um minuto',
    mm : '%d minutos',
    h : 'uma hora',
    hh : '%d horas',
    d : 'um dia',
    dd : '%d dias',
    M : 'um mês',
    MM : '%d meses',
    y : 'um ano',
    yy : '%d anos'
},
dayOfMonthOrdinalParse: /\d{1,2}º/,
ordinal : '%dº',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return pt;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ro.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ro.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function relativeTimeWithPlural(number, withoutSuffix, key) {

var format = {
        'ss': 'secunde',
        'mm': 'minute',
        'hh': 'ore',
        'dd': 'zile',
        'MM': 'luni',
        'yy': 'ani'
    },
    separator = ' ';
if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
    separator = ' de ';
}
return number + separator + format[key];

}

var ro = moment.defineLocale('ro', {

months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
monthsParseExact: true,
weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY H:mm',
    LLLL : 'dddd, D MMMM YYYY H:mm'
},
calendar : {
    sameDay: '[azi la] LT',
    nextDay: '[mâine la] LT',
    nextWeek: 'dddd [la] LT',
    lastDay: '[ieri la] LT',
    lastWeek: '[fosta] dddd [la] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'peste %s',
    past : '%s în urmă',
    s : 'câteva secunde',
    ss : relativeTimeWithPlural,
    m : 'un minut',
    mm : relativeTimeWithPlural,
    h : 'o oră',
    hh : relativeTimeWithPlural,
    d : 'o zi',
    dd : relativeTimeWithPlural,
    M : 'o lună',
    MM : relativeTimeWithPlural,
    y : 'un an',
    yy : relativeTimeWithPlural
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return ro;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ru.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ru.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function plural(word, num) {

var forms = word.split('_');
return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);

} function relativeTimeWithPlural(number, withoutSuffix, key) {

var format = {
    'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
    'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
    'hh': 'час_часа_часов',
    'dd': 'день_дня_дней',
    'MM': 'месяц_месяца_месяцев',
    'yy': 'год_года_лет'
};
if (key === 'm') {
    return withoutSuffix ? 'минута' : 'минуту';
}
else {
    return number + ' ' + plural(format[key], +number);
}

} var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];

// new.gramota.ru/spravka/rules/139-prop : § 103 // Сокращения месяцев: new.gramota.ru/spravka/buro/search-answer?s=242637 // CLDR data: www.unicode.org/cldr/charts/28/summary/ru.html#1753 var ru = moment.defineLocale('ru', {

months : {
    format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),
    standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')
},
monthsShort : {
    // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ?
    format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),
    standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')
},
weekdays : {
    standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
    format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),
    isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/
},
weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
monthsParse : monthsParse,
longMonthsParse : monthsParse,
shortMonthsParse : monthsParse,

// полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,

// копия предыдущего
monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,

// полные названия с падежами
monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,

// Выражение, которое соотвествует только сокращённым формам
monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY г.',
    LLL : 'D MMMM YYYY г., H:mm',
    LLLL : 'dddd, D MMMM YYYY г., H:mm'
},
calendar : {
    sameDay: '[Сегодня в] LT',
    nextDay: '[Завтра в] LT',
    lastDay: '[Вчера в] LT',
    nextWeek: function (now) {
        if (now.week() !== this.week()) {
            switch (this.day()) {
                case 0:
                    return '[В следующее] dddd [в] LT';
                case 1:
                case 2:
                case 4:
                    return '[В следующий] dddd [в] LT';
                case 3:
                case 5:
                case 6:
                    return '[В следующую] dddd [в] LT';
            }
        } else {
            if (this.day() === 2) {
                return '[Во] dddd [в] LT';
            } else {
                return '[В] dddd [в] LT';
            }
        }
    },
    lastWeek: function (now) {
        if (now.week() !== this.week()) {
            switch (this.day()) {
                case 0:
                    return '[В прошлое] dddd [в] LT';
                case 1:
                case 2:
                case 4:
                    return '[В прошлый] dddd [в] LT';
                case 3:
                case 5:
                case 6:
                    return '[В прошлую] dddd [в] LT';
            }
        } else {
            if (this.day() === 2) {
                return '[Во] dddd [в] LT';
            } else {
                return '[В] dddd [в] LT';
            }
        }
    },
    sameElse: 'L'
},
relativeTime : {
    future : 'через %s',
    past : '%s назад',
    s : 'несколько секунд',
    ss : relativeTimeWithPlural,
    m : relativeTimeWithPlural,
    mm : relativeTimeWithPlural,
    h : 'час',
    hh : relativeTimeWithPlural,
    d : 'день',
    dd : relativeTimeWithPlural,
    M : 'месяц',
    MM : relativeTimeWithPlural,
    y : 'год',
    yy : relativeTimeWithPlural
},
meridiemParse: /ночи|утра|дня|вечера/i,
isPM : function (input) {
    return /^(дня|вечера)$/.test(input);
},
meridiem : function (hour, minute, isLower) {
    if (hour < 4) {
        return 'ночи';
    } else if (hour < 12) {
        return 'утра';
    } else if (hour < 17) {
        return 'дня';
    } else {
        return 'вечера';
    }
},
dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
ordinal: function (number, period) {
    switch (period) {
        case 'M':
        case 'd':
        case 'DDD':
            return number + '-й';
        case 'D':
            return number + '-го';
        case 'w':
        case 'W':
            return number + '-я';
        default:
            return number;
    }
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return ru;

})));

/***/ }),

/***/ “./node_modules/moment/locale/sd.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/sd.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var months = [

'جنوري',
'فيبروري',
'مارچ',
'اپريل',
'مئي',
'جون',
'جولاءِ',
'آگسٽ',
'سيپٽمبر',
'آڪٽوبر',
'نومبر',
'ڊسمبر'

]; var days = [

'آچر',
'سومر',
'اڱارو',
'اربع',
'خميس',
'جمع',
'ڇنڇر'

];

var sd = moment.defineLocale('sd', {

months : months,
monthsShort : months,
weekdays : days,
weekdaysShort : days,
weekdaysMin : days,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd، D MMMM YYYY HH:mm'
},
meridiemParse: /صبح|شام/,
isPM : function (input) {
    return 'شام' === input;
},
meridiem : function (hour, minute, isLower) {
    if (hour < 12) {
        return 'صبح';
    }
    return 'شام';
},
calendar : {
    sameDay : '[اڄ] LT',
    nextDay : '[سڀاڻي] LT',
    nextWeek : 'dddd [اڳين هفتي تي] LT',
    lastDay : '[ڪالهه] LT',
    lastWeek : '[گزريل هفتي] dddd [تي] LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s پوء',
    past : '%s اڳ',
    s : 'چند سيڪنڊ',
    ss : '%d سيڪنڊ',
    m : 'هڪ منٽ',
    mm : '%d منٽ',
    h : 'هڪ ڪلاڪ',
    hh : '%d ڪلاڪ',
    d : 'هڪ ڏينهن',
    dd : '%d ڏينهن',
    M : 'هڪ مهينو',
    MM : '%d مهينا',
    y : 'هڪ سال',
    yy : '%d سال'
},
preparse: function (string) {
    return string.replace(/،/g, ',');
},
postformat: function (string) {
    return string.replace(/,/g, '،');
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return sd;

})));

/***/ }),

/***/ “./node_modules/moment/locale/se.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/se.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var se = moment.defineLocale('se', {

months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),
monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
weekdaysMin : 's_v_m_g_d_b_L'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'MMMM D. [b.] YYYY',
    LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',
    LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
},
calendar : {
    sameDay: '[otne ti] LT',
    nextDay: '[ihttin ti] LT',
    nextWeek: 'dddd [ti] LT',
    lastDay: '[ikte ti] LT',
    lastWeek: '[ovddit] dddd [ti] LT',
    sameElse: 'L'
},
relativeTime : {
    future : '%s geažes',
    past : 'maŋit %s',
    s : 'moadde sekunddat',
    ss: '%d sekunddat',
    m : 'okta minuhta',
    mm : '%d minuhtat',
    h : 'okta diimmu',
    hh : '%d diimmut',
    d : 'okta beaivi',
    dd : '%d beaivvit',
    M : 'okta mánnu',
    MM : '%d mánut',
    y : 'okta jahki',
    yy : '%d jagit'
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return se;

})));

/***/ }),

/***/ “./node_modules/moment/locale/si.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/si.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

/*jshint -W100*/ var si = moment.defineLocale('si', {

months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'a h:mm',
    LTS : 'a h:mm:ss',
    L : 'YYYY/MM/DD',
    LL : 'YYYY MMMM D',
    LLL : 'YYYY MMMM D, a h:mm',
    LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
},
calendar : {
    sameDay : '[අද] LT[ට]',
    nextDay : '[හෙට] LT[ට]',
    nextWeek : 'dddd LT[ට]',
    lastDay : '[ඊයේ] LT[ට]',
    lastWeek : '[පසුගිය] dddd LT[ට]',
    sameElse : 'L'
},
relativeTime : {
    future : '%sකින්',
    past : '%sකට පෙර',
    s : 'තත්පර කිහිපය',
    ss : 'තත්පර %d',
    m : 'මිනිත්තුව',
    mm : 'මිනිත්තු %d',
    h : 'පැය',
    hh : 'පැය %d',
    d : 'දිනය',
    dd : 'දින %d',
    M : 'මාසය',
    MM : 'මාස %d',
    y : 'වසර',
    yy : 'වසර %d'
},
dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
ordinal : function (number) {
    return number + ' වැනි';
},
meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
isPM : function (input) {
    return input === 'ප.ව.' || input === 'පස් වරු';
},
meridiem : function (hours, minutes, isLower) {
    if (hours > 11) {
        return isLower ? 'ප.ව.' : 'පස් වරු';
    } else {
        return isLower ? 'පෙ.ව.' : 'පෙර වරු';
    }
}

});

return si;

})));

/***/ }),

/***/ “./node_modules/moment/locale/sk.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/sk.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),

monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');

function plural(n) {

return (n > 1) && (n < 5);

} function translate(number, withoutSuffix, key, isFuture) {

var result = number + ' ';
switch (key) {
    case 's':  // a few seconds / in a few seconds / a few seconds ago
        return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
    case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
        if (withoutSuffix || isFuture) {
            return result + (plural(number) ? 'sekundy' : 'sekúnd');
        } else {
            return result + 'sekundami';
        }
        break;
    case 'm':  // a minute / in a minute / a minute ago
        return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
    case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
        if (withoutSuffix || isFuture) {
            return result + (plural(number) ? 'minúty' : 'minút');
        } else {
            return result + 'minútami';
        }
        break;
    case 'h':  // an hour / in an hour / an hour ago
        return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
    case 'hh': // 9 hours / in 9 hours / 9 hours ago
        if (withoutSuffix || isFuture) {
            return result + (plural(number) ? 'hodiny' : 'hodín');
        } else {
            return result + 'hodinami';
        }
        break;
    case 'd':  // a day / in a day / a day ago
        return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
    case 'dd': // 9 days / in 9 days / 9 days ago
        if (withoutSuffix || isFuture) {
            return result + (plural(number) ? 'dni' : 'dní');
        } else {
            return result + 'dňami';
        }
        break;
    case 'M':  // a month / in a month / a month ago
        return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
    case 'MM': // 9 months / in 9 months / 9 months ago
        if (withoutSuffix || isFuture) {
            return result + (plural(number) ? 'mesiace' : 'mesiacov');
        } else {
            return result + 'mesiacmi';
        }
        break;
    case 'y':  // a year / in a year / a year ago
        return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
    case 'yy': // 9 years / in 9 years / 9 years ago
        if (withoutSuffix || isFuture) {
            return result + (plural(number) ? 'roky' : 'rokov');
        } else {
            return result + 'rokmi';
        }
        break;
}

}

var sk = moment.defineLocale('sk', {

months : months,
monthsShort : monthsShort,
weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),
weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),
longDateFormat : {
    LT: 'H:mm',
    LTS : 'H:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM YYYY',
    LLL : 'D. MMMM YYYY H:mm',
    LLLL : 'dddd D. MMMM YYYY H:mm'
},
calendar : {
    sameDay: '[dnes o] LT',
    nextDay: '[zajtra o] LT',
    nextWeek: function () {
        switch (this.day()) {
            case 0:
                return '[v nedeľu o] LT';
            case 1:
            case 2:
                return '[v] dddd [o] LT';
            case 3:
                return '[v stredu o] LT';
            case 4:
                return '[vo štvrtok o] LT';
            case 5:
                return '[v piatok o] LT';
            case 6:
                return '[v sobotu o] LT';
        }
    },
    lastDay: '[včera o] LT',
    lastWeek: function () {
        switch (this.day()) {
            case 0:
                return '[minulú nedeľu o] LT';
            case 1:
            case 2:
                return '[minulý] dddd [o] LT';
            case 3:
                return '[minulú stredu o] LT';
            case 4:
            case 5:
                return '[minulý] dddd [o] LT';
            case 6:
                return '[minulú sobotu o] LT';
        }
    },
    sameElse: 'L'
},
relativeTime : {
    future : 'za %s',
    past : 'pred %s',
    s : translate,
    ss : translate,
    m : translate,
    mm : translate,
    h : translate,
    hh : translate,
    d : translate,
    dd : translate,
    M : translate,
    MM : translate,
    y : translate,
    yy : translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return sk;

})));

/***/ }),

/***/ “./node_modules/moment/locale/sl.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/sl.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function processRelativeTime(number, withoutSuffix, key, isFuture) {

var result = number + ' ';
switch (key) {
    case 's':
        return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
    case 'ss':
        if (number === 1) {
            result += withoutSuffix ? 'sekundo' : 'sekundi';
        } else if (number === 2) {
            result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
        } else if (number < 5) {
            result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
        } else {
            result += withoutSuffix || isFuture ? 'sekund' : 'sekund';
        }
        return result;
    case 'm':
        return withoutSuffix ? 'ena minuta' : 'eno minuto';
    case 'mm':
        if (number === 1) {
            result += withoutSuffix ? 'minuta' : 'minuto';
        } else if (number === 2) {
            result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
        } else if (number < 5) {
            result += withoutSuffix || isFuture ? 'minute' : 'minutami';
        } else {
            result += withoutSuffix || isFuture ? 'minut' : 'minutami';
        }
        return result;
    case 'h':
        return withoutSuffix ? 'ena ura' : 'eno uro';
    case 'hh':
        if (number === 1) {
            result += withoutSuffix ? 'ura' : 'uro';
        } else if (number === 2) {
            result += withoutSuffix || isFuture ? 'uri' : 'urama';
        } else if (number < 5) {
            result += withoutSuffix || isFuture ? 'ure' : 'urami';
        } else {
            result += withoutSuffix || isFuture ? 'ur' : 'urami';
        }
        return result;
    case 'd':
        return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
    case 'dd':
        if (number === 1) {
            result += withoutSuffix || isFuture ? 'dan' : 'dnem';
        } else if (number === 2) {
            result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
        } else {
            result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
        }
        return result;
    case 'M':
        return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
    case 'MM':
        if (number === 1) {
            result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
        } else if (number === 2) {
            result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
        } else if (number < 5) {
            result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
        } else {
            result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
        }
        return result;
    case 'y':
        return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
    case 'yy':
        if (number === 1) {
            result += withoutSuffix || isFuture ? 'leto' : 'letom';
        } else if (number === 2) {
            result += withoutSuffix || isFuture ? 'leti' : 'letoma';
        } else if (number < 5) {
            result += withoutSuffix || isFuture ? 'leta' : 'leti';
        } else {
            result += withoutSuffix || isFuture ? 'let' : 'leti';
        }
        return result;
}

}

var sl = moment.defineLocale('sl', {

months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
monthsParseExact: true,
weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM YYYY',
    LLL : 'D. MMMM YYYY H:mm',
    LLLL : 'dddd, D. MMMM YYYY H:mm'
},
calendar : {
    sameDay  : '[danes ob] LT',
    nextDay  : '[jutri ob] LT',

    nextWeek : function () {
        switch (this.day()) {
            case 0:
                return '[v] [nedeljo] [ob] LT';
            case 3:
                return '[v] [sredo] [ob] LT';
            case 6:
                return '[v] [soboto] [ob] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[v] dddd [ob] LT';
        }
    },
    lastDay  : '[včeraj ob] LT',
    lastWeek : function () {
        switch (this.day()) {
            case 0:
                return '[prejšnjo] [nedeljo] [ob] LT';
            case 3:
                return '[prejšnjo] [sredo] [ob] LT';
            case 6:
                return '[prejšnjo] [soboto] [ob] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[prejšnji] dddd [ob] LT';
        }
    },
    sameElse : 'L'
},
relativeTime : {
    future : 'čez %s',
    past   : 'pred %s',
    s      : processRelativeTime,
    ss     : processRelativeTime,
    m      : processRelativeTime,
    mm     : processRelativeTime,
    h      : processRelativeTime,
    hh     : processRelativeTime,
    d      : processRelativeTime,
    dd     : processRelativeTime,
    M      : processRelativeTime,
    MM     : processRelativeTime,
    y      : processRelativeTime,
    yy     : processRelativeTime
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return sl;

})));

/***/ }),

/***/ “./node_modules/moment/locale/sq.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/sq.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var sq = moment.defineLocale('sq', {

months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),
weekdaysParseExact : true,
meridiemParse: /PD|MD/,
isPM: function (input) {
    return input.charAt(0) === 'M';
},
meridiem : function (hours, minutes, isLower) {
    return hours < 12 ? 'PD' : 'MD';
},
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[Sot në] LT',
    nextDay : '[Nesër në] LT',
    nextWeek : 'dddd [në] LT',
    lastDay : '[Dje në] LT',
    lastWeek : 'dddd [e kaluar në] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'në %s',
    past : '%s më parë',
    s : 'disa sekonda',
    ss : '%d sekonda',
    m : 'një minutë',
    mm : '%d minuta',
    h : 'një orë',
    hh : '%d orë',
    d : 'një ditë',
    dd : '%d ditë',
    M : 'një muaj',
    MM : '%d muaj',
    y : 'një vit',
    yy : '%d vite'
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return sq;

})));

/***/ }),

/***/ “./node_modules/moment/locale/sr-cyrl.js”: /*!***********************************************!*\

!*** ./node_modules/moment/locale/sr-cyrl.js ***!
\***********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var translator = {

words: { //Different grammatical cases
    ss: ['секунда', 'секунде', 'секунди'],
    m: ['један минут', 'једне минуте'],
    mm: ['минут', 'минуте', 'минута'],
    h: ['један сат', 'једног сата'],
    hh: ['сат', 'сата', 'сати'],
    dd: ['дан', 'дана', 'дана'],
    MM: ['месец', 'месеца', 'месеци'],
    yy: ['година', 'године', 'година']
},
correctGrammaticalCase: function (number, wordKey) {
    return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
},
translate: function (number, withoutSuffix, key) {
    var wordKey = translator.words[key];
    if (key.length === 1) {
        return withoutSuffix ? wordKey[0] : wordKey[1];
    } else {
        return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
    }
}

};

var srCyrl = moment.defineLocale('sr-cyrl', {

months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),
monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
monthsParseExact: true,
weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
weekdaysParseExact : true,
longDateFormat: {
    LT: 'H:mm',
    LTS : 'H:mm:ss',
    L: 'DD.MM.YYYY',
    LL: 'D. MMMM YYYY',
    LLL: 'D. MMMM YYYY H:mm',
    LLLL: 'dddd, D. MMMM YYYY H:mm'
},
calendar: {
    sameDay: '[данас у] LT',
    nextDay: '[сутра у] LT',
    nextWeek: function () {
        switch (this.day()) {
            case 0:
                return '[у] [недељу] [у] LT';
            case 3:
                return '[у] [среду] [у] LT';
            case 6:
                return '[у] [суботу] [у] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[у] dddd [у] LT';
        }
    },
    lastDay  : '[јуче у] LT',
    lastWeek : function () {
        var lastWeekDays = [
            '[прошле] [недеље] [у] LT',
            '[прошлог] [понедељка] [у] LT',
            '[прошлог] [уторка] [у] LT',
            '[прошле] [среде] [у] LT',
            '[прошлог] [четвртка] [у] LT',
            '[прошлог] [петка] [у] LT',
            '[прошле] [суботе] [у] LT'
        ];
        return lastWeekDays[this.day()];
    },
    sameElse : 'L'
},
relativeTime : {
    future : 'за %s',
    past   : 'пре %s',
    s      : 'неколико секунди',
    ss     : translator.translate,
    m      : translator.translate,
    mm     : translator.translate,
    h      : translator.translate,
    hh     : translator.translate,
    d      : 'дан',
    dd     : translator.translate,
    M      : 'месец',
    MM     : translator.translate,
    y      : 'годину',
    yy     : translator.translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return srCyrl;

})));

/***/ }),

/***/ “./node_modules/moment/locale/sr.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/sr.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var translator = {

words: { //Different grammatical cases
    ss: ['sekunda', 'sekunde', 'sekundi'],
    m: ['jedan minut', 'jedne minute'],
    mm: ['minut', 'minute', 'minuta'],
    h: ['jedan sat', 'jednog sata'],
    hh: ['sat', 'sata', 'sati'],
    dd: ['dan', 'dana', 'dana'],
    MM: ['mesec', 'meseca', 'meseci'],
    yy: ['godina', 'godine', 'godina']
},
correctGrammaticalCase: function (number, wordKey) {
    return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
},
translate: function (number, withoutSuffix, key) {
    var wordKey = translator.words[key];
    if (key.length === 1) {
        return withoutSuffix ? wordKey[0] : wordKey[1];
    } else {
        return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
    }
}

};

var sr = moment.defineLocale('sr', {

months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
monthsParseExact: true,
weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),
weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
weekdaysParseExact : true,
longDateFormat: {
    LT: 'H:mm',
    LTS : 'H:mm:ss',
    L: 'DD.MM.YYYY',
    LL: 'D. MMMM YYYY',
    LLL: 'D. MMMM YYYY H:mm',
    LLLL: 'dddd, D. MMMM YYYY H:mm'
},
calendar: {
    sameDay: '[danas u] LT',
    nextDay: '[sutra u] LT',
    nextWeek: function () {
        switch (this.day()) {
            case 0:
                return '[u] [nedelju] [u] LT';
            case 3:
                return '[u] [sredu] [u] LT';
            case 6:
                return '[u] [subotu] [u] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[u] dddd [u] LT';
        }
    },
    lastDay  : '[juče u] LT',
    lastWeek : function () {
        var lastWeekDays = [
            '[prošle] [nedelje] [u] LT',
            '[prošlog] [ponedeljka] [u] LT',
            '[prošlog] [utorka] [u] LT',
            '[prošle] [srede] [u] LT',
            '[prošlog] [četvrtka] [u] LT',
            '[prošlog] [petka] [u] LT',
            '[prošle] [subote] [u] LT'
        ];
        return lastWeekDays[this.day()];
    },
    sameElse : 'L'
},
relativeTime : {
    future : 'za %s',
    past   : 'pre %s',
    s      : 'nekoliko sekundi',
    ss     : translator.translate,
    m      : translator.translate,
    mm     : translator.translate,
    h      : translator.translate,
    hh     : translator.translate,
    d      : 'dan',
    dd     : translator.translate,
    M      : 'mesec',
    MM     : translator.translate,
    y      : 'godinu',
    yy     : translator.translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return sr;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ss.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ss.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var ss = moment.defineLocale('ss', {

months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'),
monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),
weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'h:mm A',
    LTS : 'h:mm:ss A',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY h:mm A',
    LLLL : 'dddd, D MMMM YYYY h:mm A'
},
calendar : {
    sameDay : '[Namuhla nga] LT',
    nextDay : '[Kusasa nga] LT',
    nextWeek : 'dddd [nga] LT',
    lastDay : '[Itolo nga] LT',
    lastWeek : 'dddd [leliphelile] [nga] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'nga %s',
    past : 'wenteka nga %s',
    s : 'emizuzwana lomcane',
    ss : '%d mzuzwana',
    m : 'umzuzu',
    mm : '%d emizuzu',
    h : 'lihora',
    hh : '%d emahora',
    d : 'lilanga',
    dd : '%d emalanga',
    M : 'inyanga',
    MM : '%d tinyanga',
    y : 'umnyaka',
    yy : '%d iminyaka'
},
meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
meridiem : function (hours, minutes, isLower) {
    if (hours < 11) {
        return 'ekuseni';
    } else if (hours < 15) {
        return 'emini';
    } else if (hours < 19) {
        return 'entsambama';
    } else {
        return 'ebusuku';
    }
},
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'ekuseni') {
        return hour;
    } else if (meridiem === 'emini') {
        return hour >= 11 ? hour : hour + 12;
    } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
        if (hour === 0) {
            return 0;
        }
        return hour + 12;
    }
},
dayOfMonthOrdinalParse: /\d{1,2}/,
ordinal : '%d',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return ss;

})));

/***/ }),

/***/ “./node_modules/moment/locale/sv.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/sv.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var sv = moment.defineLocale('sv', {

months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'YYYY-MM-DD',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY [kl.] HH:mm',
    LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',
    lll : 'D MMM YYYY HH:mm',
    llll : 'ddd D MMM YYYY HH:mm'
},
calendar : {
    sameDay: '[Idag] LT',
    nextDay: '[Imorgon] LT',
    lastDay: '[Igår] LT',
    nextWeek: '[På] dddd LT',
    lastWeek: '[I] dddd[s] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'om %s',
    past : 'för %s sedan',
    s : 'några sekunder',
    ss : '%d sekunder',
    m : 'en minut',
    mm : '%d minuter',
    h : 'en timme',
    hh : '%d timmar',
    d : 'en dag',
    dd : '%d dagar',
    M : 'en månad',
    MM : '%d månader',
    y : 'ett år',
    yy : '%d år'
},
dayOfMonthOrdinalParse: /\d{1,2}(e|a)/,
ordinal : function (number) {
    var b = number % 10,
        output = (~~(number % 100 / 10) === 1) ? 'e' :
        (b === 1) ? 'a' :
        (b === 2) ? 'a' :
        (b === 3) ? 'e' : 'e';
    return number + output;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return sv;

})));

/***/ }),

/***/ “./node_modules/moment/locale/sw.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/sw.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var sw = moment.defineLocale('sw', {

months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[leo saa] LT',
    nextDay : '[kesho saa] LT',
    nextWeek : '[wiki ijayo] dddd [saat] LT',
    lastDay : '[jana] LT',
    lastWeek : '[wiki iliyopita] dddd [saat] LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s baadaye',
    past : 'tokea %s',
    s : 'hivi punde',
    ss : 'sekunde %d',
    m : 'dakika moja',
    mm : 'dakika %d',
    h : 'saa limoja',
    hh : 'masaa %d',
    d : 'siku moja',
    dd : 'masiku %d',
    M : 'mwezi mmoja',
    MM : 'miezi %d',
    y : 'mwaka mmoja',
    yy : 'miaka %d'
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return sw;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ta.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ta.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var symbolMap = {

'1': '௧',
'2': '௨',
'3': '௩',
'4': '௪',
'5': '௫',
'6': '௬',
'7': '௭',
'8': '௮',
'9': '௯',
'0': '௦'

}, numberMap = {

'௧': '1',
'௨': '2',
'௩': '3',
'௪': '4',
'௫': '5',
'௬': '6',
'௭': '7',
'௮': '8',
'௯': '9',
'௦': '0'

};

var ta = moment.defineLocale('ta', {

months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY, HH:mm',
    LLLL : 'dddd, D MMMM YYYY, HH:mm'
},
calendar : {
    sameDay : '[இன்று] LT',
    nextDay : '[நாளை] LT',
    nextWeek : 'dddd, LT',
    lastDay : '[நேற்று] LT',
    lastWeek : '[கடந்த வாரம்] dddd, LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s இல்',
    past : '%s முன்',
    s : 'ஒரு சில விநாடிகள்',
    ss : '%d விநாடிகள்',
    m : 'ஒரு நிமிடம்',
    mm : '%d நிமிடங்கள்',
    h : 'ஒரு மணி நேரம்',
    hh : '%d மணி நேரம்',
    d : 'ஒரு நாள்',
    dd : '%d நாட்கள்',
    M : 'ஒரு மாதம்',
    MM : '%d மாதங்கள்',
    y : 'ஒரு வருடம்',
    yy : '%d ஆண்டுகள்'
},
dayOfMonthOrdinalParse: /\d{1,2}வது/,
ordinal : function (number) {
    return number + 'வது';
},
preparse: function (string) {
    return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
        return numberMap[match];
    });
},
postformat: function (string) {
    return string.replace(/\d/g, function (match) {
        return symbolMap[match];
    });
},
// refer http://ta.wikipedia.org/s/1er1
meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
meridiem : function (hour, minute, isLower) {
    if (hour < 2) {
        return ' யாமம்';
    } else if (hour < 6) {
        return ' வைகறை';  // வைகறை
    } else if (hour < 10) {
        return ' காலை'; // காலை
    } else if (hour < 14) {
        return ' நண்பகல்'; // நண்பகல்
    } else if (hour < 18) {
        return ' எற்பாடு'; // எற்பாடு
    } else if (hour < 22) {
        return ' மாலை'; // மாலை
    } else {
        return ' யாமம்';
    }
},
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'யாமம்') {
        return hour < 2 ? hour : hour + 12;
    } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
        return hour;
    } else if (meridiem === 'நண்பகல்') {
        return hour >= 10 ? hour : hour + 12;
    } else {
        return hour + 12;
    }
},
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 6  // The week that contains Jan 1st is the first week of the year.
}

});

return ta;

})));

/***/ }),

/***/ “./node_modules/moment/locale/te.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/te.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var te = moment.defineLocale('te', {

months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
monthsParseExact : true,
weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
longDateFormat : {
    LT : 'A h:mm',
    LTS : 'A h:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY, A h:mm',
    LLLL : 'dddd, D MMMM YYYY, A h:mm'
},
calendar : {
    sameDay : '[నేడు] LT',
    nextDay : '[రేపు] LT',
    nextWeek : 'dddd, LT',
    lastDay : '[నిన్న] LT',
    lastWeek : '[గత] dddd, LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s లో',
    past : '%s క్రితం',
    s : 'కొన్ని క్షణాలు',
    ss : '%d సెకన్లు',
    m : 'ఒక నిమిషం',
    mm : '%d నిమిషాలు',
    h : 'ఒక గంట',
    hh : '%d గంటలు',
    d : 'ఒక రోజు',
    dd : '%d రోజులు',
    M : 'ఒక నెల',
    MM : '%d నెలలు',
    y : 'ఒక సంవత్సరం',
    yy : '%d సంవత్సరాలు'
},
dayOfMonthOrdinalParse : /\d{1,2}వ/,
ordinal : '%dవ',
meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'రాత్రి') {
        return hour < 4 ? hour : hour + 12;
    } else if (meridiem === 'ఉదయం') {
        return hour;
    } else if (meridiem === 'మధ్యాహ్నం') {
        return hour >= 10 ? hour : hour + 12;
    } else if (meridiem === 'సాయంత్రం') {
        return hour + 12;
    }
},
meridiem : function (hour, minute, isLower) {
    if (hour < 4) {
        return 'రాత్రి';
    } else if (hour < 10) {
        return 'ఉదయం';
    } else if (hour < 17) {
        return 'మధ్యాహ్నం';
    } else if (hour < 20) {
        return 'సాయంత్రం';
    } else {
        return 'రాత్రి';
    }
},
week : {
    dow : 0, // Sunday is the first day of the week.
    doy : 6  // The week that contains Jan 1st is the first week of the year.
}

});

return te;

})));

/***/ }),

/***/ “./node_modules/moment/locale/tet.js”: /*!*******************************************!*\

!*** ./node_modules/moment/locale/tet.js ***!
\*******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var tet = moment.defineLocale('tet', {

months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),
monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[Ohin iha] LT',
    nextDay: '[Aban iha] LT',
    nextWeek: 'dddd [iha] LT',
    lastDay: '[Horiseik iha] LT',
    lastWeek: 'dddd [semana kotuk] [iha] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'iha %s',
    past : '%s liuba',
    s : 'minutu balun',
    ss : 'minutu %d',
    m : 'minutu ida',
    mm : 'minutu %d',
    h : 'oras ida',
    hh : 'oras %d',
    d : 'loron ida',
    dd : 'loron %d',
    M : 'fulan ida',
    MM : 'fulan %d',
    y : 'tinan ida',
    yy : 'tinan %d'
},
dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
ordinal : function (number) {
    var b = number % 10,
        output = (~~(number % 100 / 10) === 1) ? 'th' :
        (b === 1) ? 'st' :
        (b === 2) ? 'nd' :
        (b === 3) ? 'rd' : 'th';
    return number + output;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return tet;

})));

/***/ }),

/***/ “./node_modules/moment/locale/tg.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/tg.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var suffixes = {

0: '-ум',
1: '-ум',
2: '-юм',
3: '-юм',
4: '-ум',
5: '-ум',
6: '-ум',
7: '-ум',
8: '-ум',
9: '-ум',
10: '-ум',
12: '-ум',
13: '-ум',
20: '-ум',
30: '-юм',
40: '-ум',
50: '-ум',
60: '-ум',
70: '-ум',
80: '-ум',
90: '-ум',
100: '-ум'

};

var tg = moment.defineLocale('tg', {

months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),
weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[Имрӯз соати] LT',
    nextDay : '[Пагоҳ соати] LT',
    lastDay : '[Дирӯз соати] LT',
    nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT',
    lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'баъди %s',
    past : '%s пеш',
    s : 'якчанд сония',
    m : 'як дақиқа',
    mm : '%d дақиқа',
    h : 'як соат',
    hh : '%d соат',
    d : 'як рӯз',
    dd : '%d рӯз',
    M : 'як моҳ',
    MM : '%d моҳ',
    y : 'як сол',
    yy : '%d сол'
},
meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
meridiemHour: function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === 'шаб') {
        return hour < 4 ? hour : hour + 12;
    } else if (meridiem === 'субҳ') {
        return hour;
    } else if (meridiem === 'рӯз') {
        return hour >= 11 ? hour : hour + 12;
    } else if (meridiem === 'бегоҳ') {
        return hour + 12;
    }
},
meridiem: function (hour, minute, isLower) {
    if (hour < 4) {
        return 'шаб';
    } else if (hour < 11) {
        return 'субҳ';
    } else if (hour < 16) {
        return 'рӯз';
    } else if (hour < 19) {
        return 'бегоҳ';
    } else {
        return 'шаб';
    }
},
dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
ordinal: function (number) {
    var a = number % 10,
        b = number >= 100 ? 100 : null;
    return number + (suffixes[number] || suffixes[a] || suffixes[b]);
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1th is the first week of the year.
}

});

return tg;

})));

/***/ }),

/***/ “./node_modules/moment/locale/th.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/th.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var th = moment.defineLocale('th', {

months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),
monthsParseExact: true,
weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'H:mm',
    LTS : 'H:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY เวลา H:mm',
    LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'
},
meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
isPM: function (input) {
    return input === 'หลังเที่ยง';
},
meridiem : function (hour, minute, isLower) {
    if (hour < 12) {
        return 'ก่อนเที่ยง';
    } else {
        return 'หลังเที่ยง';
    }
},
calendar : {
    sameDay : '[วันนี้ เวลา] LT',
    nextDay : '[พรุ่งนี้ เวลา] LT',
    nextWeek : 'dddd[หน้า เวลา] LT',
    lastDay : '[เมื่อวานนี้ เวลา] LT',
    lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'อีก %s',
    past : '%sที่แล้ว',
    s : 'ไม่กี่วินาที',
    ss : '%d วินาที',
    m : '1 นาที',
    mm : '%d นาที',
    h : '1 ชั่วโมง',
    hh : '%d ชั่วโมง',
    d : '1 วัน',
    dd : '%d วัน',
    M : '1 เดือน',
    MM : '%d เดือน',
    y : '1 ปี',
    yy : '%d ปี'
}

});

return th;

})));

/***/ }),

/***/ “./node_modules/moment/locale/tl-ph.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/tl-ph.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var tlPh = moment.defineLocale('tl-ph', {

months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'MM/D/YYYY',
    LL : 'MMMM D, YYYY',
    LLL : 'MMMM D, YYYY HH:mm',
    LLLL : 'dddd, MMMM DD, YYYY HH:mm'
},
calendar : {
    sameDay: 'LT [ngayong araw]',
    nextDay: '[Bukas ng] LT',
    nextWeek: 'LT [sa susunod na] dddd',
    lastDay: 'LT [kahapon]',
    lastWeek: 'LT [noong nakaraang] dddd',
    sameElse: 'L'
},
relativeTime : {
    future : 'sa loob ng %s',
    past : '%s ang nakalipas',
    s : 'ilang segundo',
    ss : '%d segundo',
    m : 'isang minuto',
    mm : '%d minuto',
    h : 'isang oras',
    hh : '%d oras',
    d : 'isang araw',
    dd : '%d araw',
    M : 'isang buwan',
    MM : '%d buwan',
    y : 'isang taon',
    yy : '%d taon'
},
dayOfMonthOrdinalParse: /\d{1,2}/,
ordinal : function (number) {
    return number;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return tlPh;

})));

/***/ }),

/***/ “./node_modules/moment/locale/tlh.js”: /*!*******************************************!*\

!*** ./node_modules/moment/locale/tlh.js ***!
\*******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');

function translateFuture(output) {

var time = output;
time = (output.indexOf('jaj') !== -1) ?
time.slice(0, -3) + 'leS' :
(output.indexOf('jar') !== -1) ?
time.slice(0, -3) + 'waQ' :
(output.indexOf('DIS') !== -1) ?
time.slice(0, -3) + 'nem' :
time + ' pIq';
return time;

}

function translatePast(output) {

var time = output;
time = (output.indexOf('jaj') !== -1) ?
time.slice(0, -3) + 'Hu’' :
(output.indexOf('jar') !== -1) ?
time.slice(0, -3) + 'wen' :
(output.indexOf('DIS') !== -1) ?
time.slice(0, -3) + 'ben' :
time + ' ret';
return time;

}

function translate(number, withoutSuffix, string, isFuture) {

var numberNoun = numberAsNoun(number);
switch (string) {
    case 'ss':
        return numberNoun + ' lup';
    case 'mm':
        return numberNoun + ' tup';
    case 'hh':
        return numberNoun + ' rep';
    case 'dd':
        return numberNoun + ' jaj';
    case 'MM':
        return numberNoun + ' jar';
    case 'yy':
        return numberNoun + ' DIS';
}

}

function numberAsNoun(number) {

var hundred = Math.floor((number % 1000) / 100),
ten = Math.floor((number % 100) / 10),
one = number % 10,
word = '';
if (hundred > 0) {
    word += numbersNouns[hundred] + 'vatlh';
}
if (ten > 0) {
    word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';
}
if (one > 0) {
    word += ((word !== '') ? ' ' : '') + numbersNouns[one];
}
return (word === '') ? 'pagh' : word;

}

var tlh = moment.defineLocale('tlh', {

months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),
monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),
monthsParseExact : true,
weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[DaHjaj] LT',
    nextDay: '[wa’leS] LT',
    nextWeek: 'LLL',
    lastDay: '[wa’Hu’] LT',
    lastWeek: 'LLL',
    sameElse: 'L'
},
relativeTime : {
    future : translateFuture,
    past : translatePast,
    s : 'puS lup',
    ss : translate,
    m : 'wa’ tup',
    mm : translate,
    h : 'wa’ rep',
    hh : translate,
    d : 'wa’ jaj',
    dd : translate,
    M : 'wa’ jar',
    MM : translate,
    y : 'wa’ DIS',
    yy : translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return tlh;

})));

/***/ }),

/***/ “./node_modules/moment/locale/tr.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/tr.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var suffixes = {

1: '\'inci',
5: '\'inci',
8: '\'inci',
70: '\'inci',
80: '\'inci',
2: '\'nci',
7: '\'nci',
20: '\'nci',
50: '\'nci',
3: '\'üncü',
4: '\'üncü',
100: '\'üncü',
6: '\'ncı',
9: '\'uncu',
10: '\'uncu',
30: '\'uncu',
60: '\'ıncı',
90: '\'ıncı'

};

var tr = moment.defineLocale('tr', {

months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[bugün saat] LT',
    nextDay : '[yarın saat] LT',
    nextWeek : '[gelecek] dddd [saat] LT',
    lastDay : '[dün] LT',
    lastWeek : '[geçen] dddd [saat] LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s sonra',
    past : '%s önce',
    s : 'birkaç saniye',
    ss : '%d saniye',
    m : 'bir dakika',
    mm : '%d dakika',
    h : 'bir saat',
    hh : '%d saat',
    d : 'bir gün',
    dd : '%d gün',
    M : 'bir ay',
    MM : '%d ay',
    y : 'bir yıl',
    yy : '%d yıl'
},
ordinal: function (number, period) {
    switch (period) {
        case 'd':
        case 'D':
        case 'Do':
        case 'DD':
            return number;
        default:
            if (number === 0) {  // special case for zero
                return number + '\'ıncı';
            }
            var a = number % 10,
                b = number % 100 - a,
                c = number >= 100 ? 100 : null;
            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
    }
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return tr;

})));

/***/ }),

/***/ “./node_modules/moment/locale/tzl.js”: /*!*******************************************!*\

!*** ./node_modules/moment/locale/tzl.js ***!
\*******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. // This is currently too difficult (maybe even impossible) to add. var tzl = moment.defineLocale('tzl', {

months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
longDateFormat : {
    LT : 'HH.mm',
    LTS : 'HH.mm.ss',
    L : 'DD.MM.YYYY',
    LL : 'D. MMMM [dallas] YYYY',
    LLL : 'D. MMMM [dallas] YYYY HH.mm',
    LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
},
meridiemParse: /d\'o|d\'a/i,
isPM : function (input) {
    return 'd\'o' === input.toLowerCase();
},
meridiem : function (hours, minutes, isLower) {
    if (hours > 11) {
        return isLower ? 'd\'o' : 'D\'O';
    } else {
        return isLower ? 'd\'a' : 'D\'A';
    }
},
calendar : {
    sameDay : '[oxhi à] LT',
    nextDay : '[demà à] LT',
    nextWeek : 'dddd [à] LT',
    lastDay : '[ieiri à] LT',
    lastWeek : '[sür el] dddd [lasteu à] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'osprei %s',
    past : 'ja%s',
    s : processRelativeTime,
    ss : processRelativeTime,
    m : processRelativeTime,
    mm : processRelativeTime,
    h : processRelativeTime,
    hh : processRelativeTime,
    d : processRelativeTime,
    dd : processRelativeTime,
    M : processRelativeTime,
    MM : processRelativeTime,
    y : processRelativeTime,
    yy : processRelativeTime
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

function processRelativeTime(number, withoutSuffix, key, isFuture) {

var format = {
    's': ['viensas secunds', '\'iensas secunds'],
    'ss': [number + ' secunds', '' + number + ' secunds'],
    'm': ['\'n míut', '\'iens míut'],
    'mm': [number + ' míuts', '' + number + ' míuts'],
    'h': ['\'n þora', '\'iensa þora'],
    'hh': [number + ' þoras', '' + number + ' þoras'],
    'd': ['\'n ziua', '\'iensa ziua'],
    'dd': [number + ' ziuas', '' + number + ' ziuas'],
    'M': ['\'n mes', '\'iens mes'],
    'MM': [number + ' mesen', '' + number + ' mesen'],
    'y': ['\'n ar', '\'iens ar'],
    'yy': [number + ' ars', '' + number + ' ars']
};
return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);

}

return tzl;

})));

/***/ }),

/***/ “./node_modules/moment/locale/tzm-latn.js”: /*!************************************************!*\

!*** ./node_modules/moment/locale/tzm-latn.js ***!
\************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var tzmLatn = moment.defineLocale('tzm-latn', {

months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[asdkh g] LT',
    nextDay: '[aska g] LT',
    nextWeek: 'dddd [g] LT',
    lastDay: '[assant g] LT',
    lastWeek: 'dddd [g] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'dadkh s yan %s',
    past : 'yan %s',
    s : 'imik',
    ss : '%d imik',
    m : 'minuḍ',
    mm : '%d minuḍ',
    h : 'saɛa',
    hh : '%d tassaɛin',
    d : 'ass',
    dd : '%d ossan',
    M : 'ayowr',
    MM : '%d iyyirn',
    y : 'asgas',
    yy : '%d isgasn'
},
week : {
    dow : 6, // Saturday is the first day of the week.
    doy : 12  // The week that contains Jan 1st is the first week of the year.
}

});

return tzmLatn;

})));

/***/ }),

/***/ “./node_modules/moment/locale/tzm.js”: /*!*******************************************!*\

!*** ./node_modules/moment/locale/tzm.js ***!
\*******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var tzm = moment.defineLocale('tzm', {

months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS: 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
    sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
    nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
    nextWeek: 'dddd [ⴴ] LT',
    lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
    lastWeek: 'dddd [ⴴ] LT',
    sameElse: 'L'
},
relativeTime : {
    future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
    past : 'ⵢⴰⵏ %s',
    s : 'ⵉⵎⵉⴽ',
    ss : '%d ⵉⵎⵉⴽ',
    m : 'ⵎⵉⵏⵓⴺ',
    mm : '%d ⵎⵉⵏⵓⴺ',
    h : 'ⵙⴰⵄⴰ',
    hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
    d : 'ⴰⵙⵙ',
    dd : '%d oⵙⵙⴰⵏ',
    M : 'ⴰⵢoⵓⵔ',
    MM : '%d ⵉⵢⵢⵉⵔⵏ',
    y : 'ⴰⵙⴳⴰⵙ',
    yy : '%d ⵉⵙⴳⴰⵙⵏ'
},
week : {
    dow : 6, // Saturday is the first day of the week.
    doy : 12  // The week that contains Jan 1st is the first week of the year.
}

});

return tzm;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ug-cn.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/ug-cn.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js language configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var ugCn = moment.defineLocale('ug-cn', {

months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
    '_'
),
monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
    '_'
),
weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
    '_'
),
weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
longDateFormat: {
    LT: 'HH:mm',
    LTS: 'HH:mm:ss',
    L: 'YYYY-MM-DD',
    LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
    LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
    LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'
},
meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
meridiemHour: function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (
        meridiem === 'يېرىم كېچە' ||
        meridiem === 'سەھەر' ||
        meridiem === 'چۈشتىن بۇرۇن'
    ) {
        return hour;
    } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
        return hour + 12;
    } else {
        return hour >= 11 ? hour : hour + 12;
    }
},
meridiem: function (hour, minute, isLower) {
    var hm = hour * 100 + minute;
    if (hm < 600) {
        return 'يېرىم كېچە';
    } else if (hm < 900) {
        return 'سەھەر';
    } else if (hm < 1130) {
        return 'چۈشتىن بۇرۇن';
    } else if (hm < 1230) {
        return 'چۈش';
    } else if (hm < 1800) {
        return 'چۈشتىن كېيىن';
    } else {
        return 'كەچ';
    }
},
calendar: {
    sameDay: '[بۈگۈن سائەت] LT',
    nextDay: '[ئەتە سائەت] LT',
    nextWeek: '[كېلەركى] dddd [سائەت] LT',
    lastDay: '[تۆنۈگۈن] LT',
    lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
    sameElse: 'L'
},
relativeTime: {
    future: '%s كېيىن',
    past: '%s بۇرۇن',
    s: 'نەچچە سېكونت',
    ss: '%d سېكونت',
    m: 'بىر مىنۇت',
    mm: '%d مىنۇت',
    h: 'بىر سائەت',
    hh: '%d سائەت',
    d: 'بىر كۈن',
    dd: '%d كۈن',
    M: 'بىر ئاي',
    MM: '%d ئاي',
    y: 'بىر يىل',
    yy: '%d يىل'
},

dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
ordinal: function (number, period) {
    switch (period) {
        case 'd':
        case 'D':
        case 'DDD':
            return number + '-كۈنى';
        case 'w':
        case 'W':
            return number + '-ھەپتە';
        default:
            return number;
    }
},
preparse: function (string) {
    return string.replace(/،/g, ',');
},
postformat: function (string) {
    return string.replace(/,/g, '،');
},
week: {
    // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
    dow: 1, // Monday is the first day of the week.
    doy: 7 // The week that contains Jan 1st is the first week of the year.
}

});

return ugCn;

})));

/***/ }),

/***/ “./node_modules/moment/locale/uk.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/uk.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

function plural(word, num) {

var forms = word.split('_');
return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);

} function relativeTimeWithPlural(number, withoutSuffix, key) {

var format = {
    'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
    'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
    'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
    'dd': 'день_дні_днів',
    'MM': 'місяць_місяці_місяців',
    'yy': 'рік_роки_років'
};
if (key === 'm') {
    return withoutSuffix ? 'хвилина' : 'хвилину';
}
else if (key === 'h') {
    return withoutSuffix ? 'година' : 'годину';
}
else {
    return number + ' ' + plural(format[key], +number);
}

} function weekdaysCaseReplace(m, format) {

var weekdays = {
    'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
    'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
    'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
};

if (!m) {
    return weekdays['nominative'];
}

var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
    'accusative' :
    ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
        'genitive' :
        'nominative');
return weekdays[nounCase][m.day()];

} function processHoursFunction(str) {

return function () {
    return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
};

}

var uk = moment.defineLocale('uk', {

months : {
    'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),
    'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')
},
monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
weekdays : weekdaysCaseReplace,
weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD.MM.YYYY',
    LL : 'D MMMM YYYY р.',
    LLL : 'D MMMM YYYY р., HH:mm',
    LLLL : 'dddd, D MMMM YYYY р., HH:mm'
},
calendar : {
    sameDay: processHoursFunction('[Сьогодні '),
    nextDay: processHoursFunction('[Завтра '),
    lastDay: processHoursFunction('[Вчора '),
    nextWeek: processHoursFunction('[У] dddd ['),
    lastWeek: function () {
        switch (this.day()) {
            case 0:
            case 3:
            case 5:
            case 6:
                return processHoursFunction('[Минулої] dddd [').call(this);
            case 1:
            case 2:
            case 4:
                return processHoursFunction('[Минулого] dddd [').call(this);
        }
    },
    sameElse: 'L'
},
relativeTime : {
    future : 'за %s',
    past : '%s тому',
    s : 'декілька секунд',
    ss : relativeTimeWithPlural,
    m : relativeTimeWithPlural,
    mm : relativeTimeWithPlural,
    h : 'годину',
    hh : relativeTimeWithPlural,
    d : 'день',
    dd : relativeTimeWithPlural,
    M : 'місяць',
    MM : relativeTimeWithPlural,
    y : 'рік',
    yy : relativeTimeWithPlural
},
// M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
meridiemParse: /ночі|ранку|дня|вечора/,
isPM: function (input) {
    return /^(дня|вечора)$/.test(input);
},
meridiem : function (hour, minute, isLower) {
    if (hour < 4) {
        return 'ночі';
    } else if (hour < 12) {
        return 'ранку';
    } else if (hour < 17) {
        return 'дня';
    } else {
        return 'вечора';
    }
},
dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
ordinal: function (number, period) {
    switch (period) {
        case 'M':
        case 'd':
        case 'DDD':
        case 'w':
        case 'W':
            return number + '-й';
        case 'D':
            return number + '-го';
        default:
            return number;
    }
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return uk;

})));

/***/ }),

/***/ “./node_modules/moment/locale/ur.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/ur.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var months = [

'جنوری',
'فروری',
'مارچ',
'اپریل',
'مئی',
'جون',
'جولائی',
'اگست',
'ستمبر',
'اکتوبر',
'نومبر',
'دسمبر'

]; var days = [

'اتوار',
'پیر',
'منگل',
'بدھ',
'جمعرات',
'جمعہ',
'ہفتہ'

];

var ur = moment.defineLocale('ur', {

months : months,
monthsShort : months,
weekdays : days,
weekdaysShort : days,
weekdaysMin : days,
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd، D MMMM YYYY HH:mm'
},
meridiemParse: /صبح|شام/,
isPM : function (input) {
    return 'شام' === input;
},
meridiem : function (hour, minute, isLower) {
    if (hour < 12) {
        return 'صبح';
    }
    return 'شام';
},
calendar : {
    sameDay : '[آج بوقت] LT',
    nextDay : '[کل بوقت] LT',
    nextWeek : 'dddd [بوقت] LT',
    lastDay : '[گذشتہ روز بوقت] LT',
    lastWeek : '[گذشتہ] dddd [بوقت] LT',
    sameElse : 'L'
},
relativeTime : {
    future : '%s بعد',
    past : '%s قبل',
    s : 'چند سیکنڈ',
    ss : '%d سیکنڈ',
    m : 'ایک منٹ',
    mm : '%d منٹ',
    h : 'ایک گھنٹہ',
    hh : '%d گھنٹے',
    d : 'ایک دن',
    dd : '%d دن',
    M : 'ایک ماہ',
    MM : '%d ماہ',
    y : 'ایک سال',
    yy : '%d سال'
},
preparse: function (string) {
    return string.replace(/،/g, ',');
},
postformat: function (string) {
    return string.replace(/,/g, '،');
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return ur;

})));

/***/ }),

/***/ “./node_modules/moment/locale/uz-latn.js”: /*!***********************************************!*\

!*** ./node_modules/moment/locale/uz-latn.js ***!
\***********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var uzLatn = moment.defineLocale('uz-latn', {

months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),
monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),
weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'D MMMM YYYY, dddd HH:mm'
},
calendar : {
    sameDay : '[Bugun soat] LT [da]',
    nextDay : '[Ertaga] LT [da]',
    nextWeek : 'dddd [kuni soat] LT [da]',
    lastDay : '[Kecha soat] LT [da]',
    lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]',
    sameElse : 'L'
},
relativeTime : {
    future : 'Yaqin %s ichida',
    past : 'Bir necha %s oldin',
    s : 'soniya',
    ss : '%d soniya',
    m : 'bir daqiqa',
    mm : '%d daqiqa',
    h : 'bir soat',
    hh : '%d soat',
    d : 'bir kun',
    dd : '%d kun',
    M : 'bir oy',
    MM : '%d oy',
    y : 'bir yil',
    yy : '%d yil'
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 1st is the first week of the year.
}

});

return uzLatn;

})));

/***/ }),

/***/ “./node_modules/moment/locale/uz.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/uz.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var uz = moment.defineLocale('uz', {

months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'D MMMM YYYY, dddd HH:mm'
},
calendar : {
    sameDay : '[Бугун соат] LT [да]',
    nextDay : '[Эртага] LT [да]',
    nextWeek : 'dddd [куни соат] LT [да]',
    lastDay : '[Кеча соат] LT [да]',
    lastWeek : '[Утган] dddd [куни соат] LT [да]',
    sameElse : 'L'
},
relativeTime : {
    future : 'Якин %s ичида',
    past : 'Бир неча %s олдин',
    s : 'фурсат',
    ss : '%d фурсат',
    m : 'бир дакика',
    mm : '%d дакика',
    h : 'бир соат',
    hh : '%d соат',
    d : 'бир кун',
    dd : '%d кун',
    M : 'бир ой',
    MM : '%d ой',
    y : 'бир йил',
    yy : '%d йил'
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 7  // The week that contains Jan 4th is the first week of the year.
}

});

return uz;

})));

/***/ }),

/***/ “./node_modules/moment/locale/vi.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/vi.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var vi = moment.defineLocale('vi', {

months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),
monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
monthsParseExact : true,
weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
weekdaysParseExact : true,
meridiemParse: /sa|ch/i,
isPM : function (input) {
    return /^ch$/i.test(input);
},
meridiem : function (hours, minutes, isLower) {
    if (hours < 12) {
        return isLower ? 'sa' : 'SA';
    } else {
        return isLower ? 'ch' : 'CH';
    }
},
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM [năm] YYYY',
    LLL : 'D MMMM [năm] YYYY HH:mm',
    LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',
    l : 'DD/M/YYYY',
    ll : 'D MMM YYYY',
    lll : 'D MMM YYYY HH:mm',
    llll : 'ddd, D MMM YYYY HH:mm'
},
calendar : {
    sameDay: '[Hôm nay lúc] LT',
    nextDay: '[Ngày mai lúc] LT',
    nextWeek: 'dddd [tuần tới lúc] LT',
    lastDay: '[Hôm qua lúc] LT',
    lastWeek: 'dddd [tuần rồi lúc] LT',
    sameElse: 'L'
},
relativeTime : {
    future : '%s tới',
    past : '%s trước',
    s : 'vài giây',
    ss : '%d giây' ,
    m : 'một phút',
    mm : '%d phút',
    h : 'một giờ',
    hh : '%d giờ',
    d : 'một ngày',
    dd : '%d ngày',
    M : 'một tháng',
    MM : '%d tháng',
    y : 'một năm',
    yy : '%d năm'
},
dayOfMonthOrdinalParse: /\d{1,2}/,
ordinal : function (number) {
    return number;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return vi;

})));

/***/ }),

/***/ “./node_modules/moment/locale/x-pseudo.js”: /*!************************************************!*\

!*** ./node_modules/moment/locale/x-pseudo.js ***!
\************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var xPseudo = moment.defineLocale('x-pseudo', {

months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),
monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),
monthsParseExact : true,
weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),
weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
    LT : 'HH:mm',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY HH:mm',
    LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
    sameDay : '[T~ódá~ý át] LT',
    nextDay : '[T~ómó~rró~w át] LT',
    nextWeek : 'dddd [át] LT',
    lastDay : '[Ý~ést~érdá~ý át] LT',
    lastWeek : '[L~ást] dddd [át] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'í~ñ %s',
    past : '%s á~gó',
    s : 'á ~féw ~sécó~ñds',
    ss : '%d s~écóñ~ds',
    m : 'á ~míñ~úté',
    mm : '%d m~íñú~tés',
    h : 'á~ñ hó~úr',
    hh : '%d h~óúrs',
    d : 'á ~dáý',
    dd : '%d d~áýs',
    M : 'á ~móñ~th',
    MM : '%d m~óñt~hs',
    y : 'á ~ýéár',
    yy : '%d ý~éárs'
},
dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
ordinal : function (number) {
    var b = number % 10,
        output = (~~(number % 100 / 10) === 1) ? 'th' :
        (b === 1) ? 'st' :
        (b === 2) ? 'nd' :
        (b === 3) ? 'rd' : 'th';
    return number + output;
},
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return xPseudo;

})));

/***/ }),

/***/ “./node_modules/moment/locale/yo.js”: /*!******************************************!*\

!*** ./node_modules/moment/locale/yo.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var yo = moment.defineLocale('yo', {

months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),
monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
longDateFormat : {
    LT : 'h:mm A',
    LTS : 'h:mm:ss A',
    L : 'DD/MM/YYYY',
    LL : 'D MMMM YYYY',
    LLL : 'D MMMM YYYY h:mm A',
    LLLL : 'dddd, D MMMM YYYY h:mm A'
},
calendar : {
    sameDay : '[Ònì ni] LT',
    nextDay : '[Ọ̀la ni] LT',
    nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT',
    lastDay : '[Àna ni] LT',
    lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
    sameElse : 'L'
},
relativeTime : {
    future : 'ní %s',
    past : '%s kọjá',
    s : 'ìsẹjú aayá die',
    ss :'aayá %d',
    m : 'ìsẹjú kan',
    mm : 'ìsẹjú %d',
    h : 'wákati kan',
    hh : 'wákati %d',
    d : 'ọjọ́ kan',
    dd : 'ọjọ́ %d',
    M : 'osù kan',
    MM : 'osù %d',
    y : 'ọdún kan',
    yy : 'ọdún %d'
},
dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/,
ordinal : 'ọjọ́ %d',
week : {
    dow : 1, // Monday is the first day of the week.
    doy : 4 // The week that contains Jan 4th is the first week of the year.
}

});

return yo;

})));

/***/ }),

/***/ “./node_modules/moment/locale/zh-cn.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/zh-cn.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var zhCn = moment.defineLocale('zh-cn', {

months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'YYYY/MM/DD',
    LL : 'YYYY年M月D日',
    LLL : 'YYYY年M月D日Ah点mm分',
    LLLL : 'YYYY年M月D日ddddAh点mm分',
    l : 'YYYY/M/D',
    ll : 'YYYY年M月D日',
    lll : 'YYYY年M月D日 HH:mm',
    llll : 'YYYY年M月D日dddd HH:mm'
},
meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
meridiemHour: function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === '凌晨' || meridiem === '早上' ||
            meridiem === '上午') {
        return hour;
    } else if (meridiem === '下午' || meridiem === '晚上') {
        return hour + 12;
    } else {
        // '中午'
        return hour >= 11 ? hour : hour + 12;
    }
},
meridiem : function (hour, minute, isLower) {
    var hm = hour * 100 + minute;
    if (hm < 600) {
        return '凌晨';
    } else if (hm < 900) {
        return '早上';
    } else if (hm < 1130) {
        return '上午';
    } else if (hm < 1230) {
        return '中午';
    } else if (hm < 1800) {
        return '下午';
    } else {
        return '晚上';
    }
},
calendar : {
    sameDay : '[今天]LT',
    nextDay : '[明天]LT',
    nextWeek : '[下]ddddLT',
    lastDay : '[昨天]LT',
    lastWeek : '[上]ddddLT',
    sameElse : 'L'
},
dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
ordinal : function (number, period) {
    switch (period) {
        case 'd':
        case 'D':
        case 'DDD':
            return number + '日';
        case 'M':
            return number + '月';
        case 'w':
        case 'W':
            return number + '周';
        default:
            return number;
    }
},
relativeTime : {
    future : '%s内',
    past : '%s前',
    s : '几秒',
    ss : '%d 秒',
    m : '1 分钟',
    mm : '%d 分钟',
    h : '1 小时',
    hh : '%d 小时',
    d : '1 天',
    dd : '%d 天',
    M : '1 个月',
    MM : '%d 个月',
    y : '1 年',
    yy : '%d 年'
},
week : {
    // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
    dow : 1, // Monday is the first day of the week.
    doy : 4  // The week that contains Jan 4th is the first week of the year.
}

});

return zhCn;

})));

/***/ }),

/***/ “./node_modules/moment/locale/zh-hk.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/zh-hk.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var zhHk = moment.defineLocale('zh-hk', {

months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'YYYY/MM/DD',
    LL : 'YYYY年M月D日',
    LLL : 'YYYY年M月D日 HH:mm',
    LLLL : 'YYYY年M月D日dddd HH:mm',
    l : 'YYYY/M/D',
    ll : 'YYYY年M月D日',
    lll : 'YYYY年M月D日 HH:mm',
    llll : 'YYYY年M月D日dddd HH:mm'
},
meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
        return hour;
    } else if (meridiem === '中午') {
        return hour >= 11 ? hour : hour + 12;
    } else if (meridiem === '下午' || meridiem === '晚上') {
        return hour + 12;
    }
},
meridiem : function (hour, minute, isLower) {
    var hm = hour * 100 + minute;
    if (hm < 600) {
        return '凌晨';
    } else if (hm < 900) {
        return '早上';
    } else if (hm < 1130) {
        return '上午';
    } else if (hm < 1230) {
        return '中午';
    } else if (hm < 1800) {
        return '下午';
    } else {
        return '晚上';
    }
},
calendar : {
    sameDay : '[今天]LT',
    nextDay : '[明天]LT',
    nextWeek : '[下]ddddLT',
    lastDay : '[昨天]LT',
    lastWeek : '[上]ddddLT',
    sameElse : 'L'
},
dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
ordinal : function (number, period) {
    switch (period) {
        case 'd' :
        case 'D' :
        case 'DDD' :
            return number + '日';
        case 'M' :
            return number + '月';
        case 'w' :
        case 'W' :
            return number + '週';
        default :
            return number;
    }
},
relativeTime : {
    future : '%s內',
    past : '%s前',
    s : '幾秒',
    ss : '%d 秒',
    m : '1 分鐘',
    mm : '%d 分鐘',
    h : '1 小時',
    hh : '%d 小時',
    d : '1 天',
    dd : '%d 天',
    M : '1 個月',
    MM : '%d 個月',
    y : '1 年',
    yy : '%d 年'
}

});

return zhHk;

})));

/***/ }),

/***/ “./node_modules/moment/locale/zh-tw.js”: /*!*********************************************!*\

!*** ./node_modules/moment/locale/zh-tw.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

//! moment.js locale configuration

;(function (global, factory) {

 true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
undefined

}(this, (function (moment) { 'use strict';

var zhTw = moment.defineLocale('zh-tw', {

months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
longDateFormat : {
    LT : 'HH:mm',
    LTS : 'HH:mm:ss',
    L : 'YYYY/MM/DD',
    LL : 'YYYY年M月D日',
    LLL : 'YYYY年M月D日 HH:mm',
    LLLL : 'YYYY年M月D日dddd HH:mm',
    l : 'YYYY/M/D',
    ll : 'YYYY年M月D日',
    lll : 'YYYY年M月D日 HH:mm',
    llll : 'YYYY年M月D日dddd HH:mm'
},
meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
meridiemHour : function (hour, meridiem) {
    if (hour === 12) {
        hour = 0;
    }
    if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
        return hour;
    } else if (meridiem === '中午') {
        return hour >= 11 ? hour : hour + 12;
    } else if (meridiem === '下午' || meridiem === '晚上') {
        return hour + 12;
    }
},
meridiem : function (hour, minute, isLower) {
    var hm = hour * 100 + minute;
    if (hm < 600) {
        return '凌晨';
    } else if (hm < 900) {
        return '早上';
    } else if (hm < 1130) {
        return '上午';
    } else if (hm < 1230) {
        return '中午';
    } else if (hm < 1800) {
        return '下午';
    } else {
        return '晚上';
    }
},
calendar : {
    sameDay : '[今天]LT',
    nextDay : '[明天]LT',
    nextWeek : '[下]ddddLT',
    lastDay : '[昨天]LT',
    lastWeek : '[上]ddddLT',
    sameElse : 'L'
},
dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
ordinal : function (number, period) {
    switch (period) {
        case 'd' :
        case 'D' :
        case 'DDD' :
            return number + '日';
        case 'M' :
            return number + '月';
        case 'w' :
        case 'W' :
            return number + '週';
        default :
            return number;
    }
},
relativeTime : {
    future : '%s內',
    past : '%s前',
    s : '幾秒',
    ss : '%d 秒',
    m : '1 分鐘',
    mm : '%d 分鐘',
    h : '1 小時',
    hh : '%d 小時',
    d : '1 天',
    dd : '%d 天',
    M : '1 個月',
    MM : '%d 個月',
    y : '1 年',
    yy : '%d 年'
}

});

return zhTw;

})));

/***/ }),

/***/ “./node_modules/moment/moment.js”: /*!***************************************!*\

!*** ./node_modules/moment/moment.js ***!
\***************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

/* WEBPACK VAR INJECTION */(function(module) {var require;//! moment.js

;(function (global, factory) {

 true ? module.exports = factory() :
undefined

}(this, (function () { 'use strict';

var hookCallback;

function hooks () {

return hookCallback.apply(null, arguments);

}

// This is done to register the method called with moment() // without creating circular dependencies. function setHookCallback (callback) {

hookCallback = callback;

}

function isArray(input) {

return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';

}

function isObject(input) {

// IE8 will treat undefined and null as object if it wasn't for
// input != null
return input != null && Object.prototype.toString.call(input) === '[object Object]';

}

function isObjectEmpty(obj) {

if (Object.getOwnPropertyNames) {
    return (Object.getOwnPropertyNames(obj).length === 0);
} else {
    var k;
    for (k in obj) {
        if (obj.hasOwnProperty(k)) {
            return false;
        }
    }
    return true;
}

}

function isUndefined(input) {

return input === void 0;

}

function isNumber(input) {

return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';

}

function isDate(input) {

return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';

}

function map(arr, fn) {

var res = [], i;
for (i = 0; i < arr.length; ++i) {
    res.push(fn(arr[i], i));
}
return res;

}

function hasOwnProp(a, b) {

return Object.prototype.hasOwnProperty.call(a, b);

}

function extend(a, b) {

for (var i in b) {
    if (hasOwnProp(b, i)) {
        a[i] = b[i];
    }
}

if (hasOwnProp(b, 'toString')) {
    a.toString = b.toString;
}

if (hasOwnProp(b, 'valueOf')) {
    a.valueOf = b.valueOf;
}

return a;

}

function createUTC (input, format, locale, strict) {

return createLocalOrUTC(input, format, locale, strict, true).utc();

}

function defaultParsingFlags() {

// We need to deep clone this object.
return {
    empty           : false,
    unusedTokens    : [],
    unusedInput     : [],
    overflow        : -2,
    charsLeftOver   : 0,
    nullInput       : false,
    invalidMonth    : null,
    invalidFormat   : false,
    userInvalidated : false,
    iso             : false,
    parsedDateParts : [],
    meridiem        : null,
    rfc2822         : false,
    weekdayMismatch : false
};

}

function getParsingFlags(m) {

if (m._pf == null) {
    m._pf = defaultParsingFlags();
}
return m._pf;

}

var some; if (Array.prototype.some) {

some = Array.prototype.some;

} else {

some = function (fun) {
    var t = Object(this);
    var len = t.length >>> 0;

    for (var i = 0; i < len; i++) {
        if (i in t && fun.call(this, t[i], i, t)) {
            return true;
        }
    }

    return false;
};

}

function isValid(m) {

if (m._isValid == null) {
    var flags = getParsingFlags(m);
    var parsedParts = some.call(flags.parsedDateParts, function (i) {
        return i != null;
    });
    var isNowValid = !isNaN(m._d.getTime()) &&
        flags.overflow < 0 &&
        !flags.empty &&
        !flags.invalidMonth &&
        !flags.invalidWeekday &&
        !flags.weekdayMismatch &&
        !flags.nullInput &&
        !flags.invalidFormat &&
        !flags.userInvalidated &&
        (!flags.meridiem || (flags.meridiem && parsedParts));

    if (m._strict) {
        isNowValid = isNowValid &&
            flags.charsLeftOver === 0 &&
            flags.unusedTokens.length === 0 &&
            flags.bigHour === undefined;
    }

    if (Object.isFrozen == null || !Object.isFrozen(m)) {
        m._isValid = isNowValid;
    }
    else {
        return isNowValid;
    }
}
return m._isValid;

}

function createInvalid (flags) {

var m = createUTC(NaN);
if (flags != null) {
    extend(getParsingFlags(m), flags);
}
else {
    getParsingFlags(m).userInvalidated = true;
}

return m;

}

// Plugins that add properties should also add the key here (null value), // so we can properly clone ourselves. var momentProperties = hooks.momentProperties = [];

function copyConfig(to, from) {

var i, prop, val;

if (!isUndefined(from._isAMomentObject)) {
    to._isAMomentObject = from._isAMomentObject;
}
if (!isUndefined(from._i)) {
    to._i = from._i;
}
if (!isUndefined(from._f)) {
    to._f = from._f;
}
if (!isUndefined(from._l)) {
    to._l = from._l;
}
if (!isUndefined(from._strict)) {
    to._strict = from._strict;
}
if (!isUndefined(from._tzm)) {
    to._tzm = from._tzm;
}
if (!isUndefined(from._isUTC)) {
    to._isUTC = from._isUTC;
}
if (!isUndefined(from._offset)) {
    to._offset = from._offset;
}
if (!isUndefined(from._pf)) {
    to._pf = getParsingFlags(from);
}
if (!isUndefined(from._locale)) {
    to._locale = from._locale;
}

if (momentProperties.length > 0) {
    for (i = 0; i < momentProperties.length; i++) {
        prop = momentProperties[i];
        val = from[prop];
        if (!isUndefined(val)) {
            to[prop] = val;
        }
    }
}

return to;

}

var updateInProgress = false;

// Moment prototype object function Moment(config) {

copyConfig(this, config);
this._d = new Date(config._d != null ? config._d.getTime() : NaN);
if (!this.isValid()) {
    this._d = new Date(NaN);
}
// Prevent infinite loop in case updateOffset creates new moment
// objects.
if (updateInProgress === false) {
    updateInProgress = true;
    hooks.updateOffset(this);
    updateInProgress = false;
}

}

function isMoment (obj) {

return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);

}

function absFloor (number) {

if (number < 0) {
    // -0 -> 0
    return Math.ceil(number) || 0;
} else {
    return Math.floor(number);
}

}

function toInt(argumentForCoercion) {

var coercedNumber = +argumentForCoercion,
    value = 0;

if (coercedNumber !== 0 && isFinite(coercedNumber)) {
    value = absFloor(coercedNumber);
}

return value;

}

// compare two arrays, return the number of differences function compareArrays(array1, array2, dontConvert) {

var len = Math.min(array1.length, array2.length),
    lengthDiff = Math.abs(array1.length - array2.length),
    diffs = 0,
    i;
for (i = 0; i < len; i++) {
    if ((dontConvert && array1[i] !== array2[i]) ||
        (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
        diffs++;
    }
}
return diffs + lengthDiff;

}

function warn(msg) {

if (hooks.suppressDeprecationWarnings === false &&
        (typeof console !==  'undefined') && console.warn) {
    console.warn('Deprecation warning: ' + msg);
}

}

function deprecate(msg, fn) {

var firstTime = true;

return extend(function () {
    if (hooks.deprecationHandler != null) {
        hooks.deprecationHandler(null, msg);
    }
    if (firstTime) {
        var args = [];
        var arg;
        for (var i = 0; i < arguments.length; i++) {
            arg = '';
            if (typeof arguments[i] === 'object') {
                arg += '\n[' + i + '] ';
                for (var key in arguments[0]) {
                    arg += key + ': ' + arguments[0][key] + ', ';
                }
                arg = arg.slice(0, -2); // Remove trailing comma and space
            } else {
                arg = arguments[i];
            }
            args.push(arg);
        }
        warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack);
        firstTime = false;
    }
    return fn.apply(this, arguments);
}, fn);

}

var deprecations = {};

function deprecateSimple(name, msg) {

if (hooks.deprecationHandler != null) {
    hooks.deprecationHandler(name, msg);
}
if (!deprecations[name]) {
    warn(msg);
    deprecations[name] = true;
}

}

hooks.suppressDeprecationWarnings = false; hooks.deprecationHandler = null;

function isFunction(input) {

return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';

}

function set (config) {

var prop, i;
for (i in config) {
    prop = config[i];
    if (isFunction(prop)) {
        this[i] = prop;
    } else {
        this['_' + i] = prop;
    }
}
this._config = config;
// Lenient ordinal parsing accepts just a number in addition to
// number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
// TODO: Remove "ordinalParse" fallback in next major release.
this._dayOfMonthOrdinalParseLenient = new RegExp(
    (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
        '|' + (/\d{1,2}/).source);

}

function mergeConfigs(parentConfig, childConfig) {

var res = extend({}, parentConfig), prop;
for (prop in childConfig) {
    if (hasOwnProp(childConfig, prop)) {
        if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
            res[prop] = {};
            extend(res[prop], parentConfig[prop]);
            extend(res[prop], childConfig[prop]);
        } else if (childConfig[prop] != null) {
            res[prop] = childConfig[prop];
        } else {
            delete res[prop];
        }
    }
}
for (prop in parentConfig) {
    if (hasOwnProp(parentConfig, prop) &&
            !hasOwnProp(childConfig, prop) &&
            isObject(parentConfig[prop])) {
        // make sure changes to properties don't modify parent config
        res[prop] = extend({}, res[prop]);
    }
}
return res;

}

function Locale(config) {

if (config != null) {
    this.set(config);
}

}

var keys;

if (Object.keys) {

keys = Object.keys;

} else {

keys = function (obj) {
    var i, res = [];
    for (i in obj) {
        if (hasOwnProp(obj, i)) {
            res.push(i);
        }
    }
    return res;
};

}

var defaultCalendar = {

sameDay : '[Today at] LT',
nextDay : '[Tomorrow at] LT',
nextWeek : 'dddd [at] LT',
lastDay : '[Yesterday at] LT',
lastWeek : '[Last] dddd [at] LT',
sameElse : 'L'

};

function calendar (key, mom, now) {

var output = this._calendar[key] || this._calendar['sameElse'];
return isFunction(output) ? output.call(mom, now) : output;

}

var defaultLongDateFormat = {

LTS  : 'h:mm:ss A',
LT   : 'h:mm A',
L    : 'MM/DD/YYYY',
LL   : 'MMMM D, YYYY',
LLL  : 'MMMM D, YYYY h:mm A',
LLLL : 'dddd, MMMM D, YYYY h:mm A'

};

function longDateFormat (key) {

var format = this._longDateFormat[key],
    formatUpper = this._longDateFormat[key.toUpperCase()];

if (format || !formatUpper) {
    return format;
}

this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
    return val.slice(1);
});

return this._longDateFormat[key];

}

var defaultInvalidDate = 'Invalid date';

function invalidDate () {

return this._invalidDate;

}

var defaultOrdinal = '%d'; var defaultDayOfMonthOrdinalParse = /d{1,2}/;

function ordinal (number) {

return this._ordinal.replace('%d', number);

}

var defaultRelativeTime = {

future : 'in %s',
past   : '%s ago',
s  : 'a few seconds',
ss : '%d seconds',
m  : 'a minute',
mm : '%d minutes',
h  : 'an hour',
hh : '%d hours',
d  : 'a day',
dd : '%d days',
M  : 'a month',
MM : '%d months',
y  : 'a year',
yy : '%d years'

};

function relativeTime (number, withoutSuffix, string, isFuture) {

var output = this._relativeTime[string];
return (isFunction(output)) ?
    output(number, withoutSuffix, string, isFuture) :
    output.replace(/%d/i, number);

}

function pastFuture (diff, output) {

var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
return isFunction(format) ? format(output) : format.replace(/%s/i, output);

}

var aliases = {};

function addUnitAlias (unit, shorthand) {

var lowerCase = unit.toLowerCase();
aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;

}

function normalizeUnits(units) {

return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;

}

function normalizeObjectUnits(inputObject) {

var normalizedInput = {},
    normalizedProp,
    prop;

for (prop in inputObject) {
    if (hasOwnProp(inputObject, prop)) {
        normalizedProp = normalizeUnits(prop);
        if (normalizedProp) {
            normalizedInput[normalizedProp] = inputObject[prop];
        }
    }
}

return normalizedInput;

}

var priorities = {};

function addUnitPriority(unit, priority) {

priorities[unit] = priority;

}

function getPrioritizedUnits(unitsObj) {

var units = [];
for (var u in unitsObj) {
    units.push({unit: u, priority: priorities[u]});
}
units.sort(function (a, b) {
    return a.priority - b.priority;
});
return units;

}

function zeroFill(number, targetLength, forceSign) {

var absNumber = '' + Math.abs(number),
    zerosToFill = targetLength - absNumber.length,
    sign = number >= 0;
return (sign ? (forceSign ? '+' : '') : '-') +
    Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;

}

var formattingTokens = /([[^[]*])|(\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w?|W?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;

var localFormattingTokens = /([[^[]*])|(\)?(LTS|LT|LL?L?L?|l{1,4})/g;

var formatFunctions = {};

var formatTokenFunctions = {};

// token: 'M' // padded: ['MM', 2] // ordinal: 'Mo' // callback: function () { this.month() + 1 } function addFormatToken (token, padded, ordinal, callback) {

var func = callback;
if (typeof callback === 'string') {
    func = function () {
        return this[callback]();
    };
}
if (token) {
    formatTokenFunctions[token] = func;
}
if (padded) {
    formatTokenFunctions[padded[0]] = function () {
        return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
    };
}
if (ordinal) {
    formatTokenFunctions[ordinal] = function () {
        return this.localeData().ordinal(func.apply(this, arguments), token);
    };
}

}

function removeFormattingTokens(input) {

if (input.match(/\[[\s\S]/)) {
    return input.replace(/^\[|\]$/g, '');
}
return input.replace(/\\/g, '');

}

function makeFormatFunction(format) {

var array = format.match(formattingTokens), i, length;

for (i = 0, length = array.length; i < length; i++) {
    if (formatTokenFunctions[array[i]]) {
        array[i] = formatTokenFunctions[array[i]];
    } else {
        array[i] = removeFormattingTokens(array[i]);
    }
}

return function (mom) {
    var output = '', i;
    for (i = 0; i < length; i++) {
        output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];
    }
    return output;
};

}

// format date using native date object function formatMoment(m, format) {

if (!m.isValid()) {
    return m.localeData().invalidDate();
}

format = expandFormat(format, m.localeData());
formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);

return formatFunctions[format](m);

}

function expandFormat(format, locale) {

var i = 5;

function replaceLongDateFormatTokens(input) {
    return locale.longDateFormat(input) || input;
}

localFormattingTokens.lastIndex = 0;
while (i >= 0 && localFormattingTokens.test(format)) {
    format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
    localFormattingTokens.lastIndex = 0;
    i -= 1;
}

return format;

}

var match1 = /d/; // 0 - 9 var match2 = /dd/; // 00 - 99 var match3 = /d{3}/; // 000 - 999 var match4 = /d{4}/; // 0000 - 9999 var match6 = /[+-]?d{6}/; // -999999 - 999999 var match1to2 = /dd?/; // 0 - 99 var match3to4 = /dddd?/; // 999 - 9999 var match5to6 = /dddddd?/; // 99999 - 999999 var match1to3 = /d{1,3}/; // 0 - 999 var match1to4 = /d{1,4}/; // 0 - 9999 var match1to6 = /[+-]?d{1,6}/; // -999999 - 999999

var matchUnsigned = /d+/; // 0 - inf var matchSigned = /[+-]?d+/; // -inf - inf

var matchOffset = /Z|dd:?dd/gi; // +00:00 -00:00 +0000 -0000 or Z var matchShortOffset = /Z|dd(?::?dd)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z

var matchTimestamp = /[+-]?d+(.d{1,3})?/; // 123456789 123456789.123

// any word (or two) characters or numbers including two/three word month in arabic. // includes scottish gaelic two word and hyphenated months var matchWord = /[0-9]0,256{1,256}|[u0600-u06FF/]{1,256}(s*?[u0600-u06FF]{1,256}){1,2}/i;

var regexes = {};

function addRegexToken (token, regex, strictRegex) {

regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
    return (isStrict && strictRegex) ? strictRegex : regex;
};

}

function getParseRegexForToken (token, config) {

if (!hasOwnProp(regexes, token)) {
    return new RegExp(unescapeFormat(token));
}

return regexes[token](config._strict, config._locale);

}

// Code from stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript function unescapeFormat(s) {

return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
    return p1 || p2 || p3 || p4;
}));

}

function regexEscape(s) {

return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');

}

var tokens = {};

function addParseToken (token, callback) {

var i, func = callback;
if (typeof token === 'string') {
    token = [token];
}
if (isNumber(callback)) {
    func = function (input, array) {
        array[callback] = toInt(input);
    };
}
for (i = 0; i < token.length; i++) {
    tokens[token[i]] = func;
}

}

function addWeekParseToken (token, callback) {

addParseToken(token, function (input, array, config, token) {
    config._w = config._w || {};
    callback(input, config._w, config, token);
});

}

function addTimeToArrayFromToken(token, input, config) {

if (input != null && hasOwnProp(tokens, token)) {
    tokens[token](input, config._a, config, token);
}

}

var YEAR = 0; var MONTH = 1; var DATE = 2; var HOUR = 3; var MINUTE = 4; var SECOND = 5; var MILLISECOND = 6; var WEEK = 7; var WEEKDAY = 8;

// FORMATTING

addFormatToken('Y', 0, 0, function () {

var y = this.year();
return y <= 9999 ? '' + y : '+' + y;

});

addFormatToken(0, ['YY', 2], 0, function () {

return this.year() % 100;

});

addFormatToken(0, ['YYYY', 4], 0, 'year'); addFormatToken(0, ['YYYYY', 5], 0, 'year'); addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');

// ALIASES

addUnitAlias('year', 'y');

// PRIORITIES

addUnitPriority('year', 1);

// PARSING

addRegexToken('Y', matchSigned); addRegexToken('YY', match1to2, match2); addRegexToken('YYYY', match1to4, match4); addRegexToken('YYYYY', match1to6, match6); addRegexToken('YYYYYY', match1to6, match6);

addParseToken(['YYYYY', 'YYYYYY'], YEAR); addParseToken('YYYY', function (input, array) {

array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);

}); addParseToken('YY', function (input, array) {

array[YEAR] = hooks.parseTwoDigitYear(input);

}); addParseToken('Y', function (input, array) {

array[YEAR] = parseInt(input, 10);

});

// HELPERS

function daysInYear(year) {

return isLeapYear(year) ? 366 : 365;

}

function isLeapYear(year) {

return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;

}

// HOOKS

hooks.parseTwoDigitYear = function (input) {

return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);

};

// MOMENTS

var getSetYear = makeGetSet('FullYear', true);

function getIsLeapYear () {

return isLeapYear(this.year());

}

function makeGetSet (unit, keepTime) {

return function (value) {
    if (value != null) {
        set$1(this, unit, value);
        hooks.updateOffset(this, keepTime);
        return this;
    } else {
        return get(this, unit);
    }
};

}

function get (mom, unit) {

return mom.isValid() ?
    mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;

}

function set$1 (mom, unit, value) {

if (mom.isValid() && !isNaN(value)) {
    if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {
        mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));
    }
    else {
        mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
    }
}

}

// MOMENTS

function stringGet (units) {

units = normalizeUnits(units);
if (isFunction(this[units])) {
    return this[units]();
}
return this;

}

function stringSet (units, value) {

if (typeof units === 'object') {
    units = normalizeObjectUnits(units);
    var prioritized = getPrioritizedUnits(units);
    for (var i = 0; i < prioritized.length; i++) {
        this[prioritized[i].unit](units[prioritized[i].unit]);
    }
} else {
    units = normalizeUnits(units);
    if (isFunction(this[units])) {
        return this[units](value);
    }
}
return this;

}

function mod(n, x) {

return ((n % x) + x) % x;

}

var indexOf;

if (Array.prototype.indexOf) {

indexOf = Array.prototype.indexOf;

} else {

indexOf = function (o) {
    // I know
    var i;
    for (i = 0; i < this.length; ++i) {
        if (this[i] === o) {
            return i;
        }
    }
    return -1;
};

}

function daysInMonth(year, month) {

if (isNaN(year) || isNaN(month)) {
    return NaN;
}
var modMonth = mod(month, 12);
year += (month - modMonth) / 12;
return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);

}

// FORMATTING

addFormatToken('M', ['MM', 2], 'Mo', function () {

return this.month() + 1;

});

addFormatToken('MMM', 0, 0, function (format) {

return this.localeData().monthsShort(this, format);

});

addFormatToken('MMMM', 0, 0, function (format) {

return this.localeData().months(this, format);

});

// ALIASES

addUnitAlias('month', 'M');

// PRIORITY

addUnitPriority('month', 8);

// PARSING

addRegexToken('M', match1to2); addRegexToken('MM', match1to2, match2); addRegexToken('MMM', function (isStrict, locale) {

return locale.monthsShortRegex(isStrict);

}); addRegexToken('MMMM', function (isStrict, locale) {

return locale.monthsRegex(isStrict);

});

addParseToken(['M', 'MM'], function (input, array) {

array[MONTH] = toInt(input) - 1;

});

addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {

var month = config._locale.monthsParse(input, token, config._strict);
// if we didn't find a month name, mark the date as invalid.
if (month != null) {
    array[MONTH] = month;
} else {
    getParsingFlags(config).invalidMonth = input;
}

});

// LOCALES

var MONTHS_IN_FORMAT = /D?([[^[]]*]|s)+MMMM?/; var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); function localeMonths (m, format) {

if (!m) {
    return isArray(this._months) ? this._months :
        this._months['standalone'];
}
return isArray(this._months) ? this._months[m.month()] :
    this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];

}

var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); function localeMonthsShort (m, format) {

if (!m) {
    return isArray(this._monthsShort) ? this._monthsShort :
        this._monthsShort['standalone'];
}
return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
    this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];

}

function handleStrictParse(monthName, format, strict) {

var i, ii, mom, llc = monthName.toLocaleLowerCase();
if (!this._monthsParse) {
    // this is not used
    this._monthsParse = [];
    this._longMonthsParse = [];
    this._shortMonthsParse = [];
    for (i = 0; i < 12; ++i) {
        mom = createUTC([2000, i]);
        this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
        this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
    }
}

if (strict) {
    if (format === 'MMM') {
        ii = indexOf.call(this._shortMonthsParse, llc);
        return ii !== -1 ? ii : null;
    } else {
        ii = indexOf.call(this._longMonthsParse, llc);
        return ii !== -1 ? ii : null;
    }
} else {
    if (format === 'MMM') {
        ii = indexOf.call(this._shortMonthsParse, llc);
        if (ii !== -1) {
            return ii;
        }
        ii = indexOf.call(this._longMonthsParse, llc);
        return ii !== -1 ? ii : null;
    } else {
        ii = indexOf.call(this._longMonthsParse, llc);
        if (ii !== -1) {
            return ii;
        }
        ii = indexOf.call(this._shortMonthsParse, llc);
        return ii !== -1 ? ii : null;
    }
}

}

function localeMonthsParse (monthName, format, strict) {

var i, mom, regex;

if (this._monthsParseExact) {
    return handleStrictParse.call(this, monthName, format, strict);
}

if (!this._monthsParse) {
    this._monthsParse = [];
    this._longMonthsParse = [];
    this._shortMonthsParse = [];
}

// TODO: add sorting
// Sorting makes sure if one month (or abbr) is a prefix of another
// see sorting in computeMonthsParse
for (i = 0; i < 12; i++) {
    // make the regex if we don't have it already
    mom = createUTC([2000, i]);
    if (strict && !this._longMonthsParse[i]) {
        this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
        this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
    }
    if (!strict && !this._monthsParse[i]) {
        regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
        this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
    }
    // test the regex
    if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
        return i;
    } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
        return i;
    } else if (!strict && this._monthsParse[i].test(monthName)) {
        return i;
    }
}

}

// MOMENTS

function setMonth (mom, value) {

var dayOfMonth;

if (!mom.isValid()) {
    // No op
    return mom;
}

if (typeof value === 'string') {
    if (/^\d+$/.test(value)) {
        value = toInt(value);
    } else {
        value = mom.localeData().monthsParse(value);
        // TODO: Another silent failure?
        if (!isNumber(value)) {
            return mom;
        }
    }
}

dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
return mom;

}

function getSetMonth (value) {

if (value != null) {
    setMonth(this, value);
    hooks.updateOffset(this, true);
    return this;
} else {
    return get(this, 'Month');
}

}

function getDaysInMonth () {

return daysInMonth(this.year(), this.month());

}

var defaultMonthsShortRegex = matchWord; function monthsShortRegex (isStrict) {

if (this._monthsParseExact) {
    if (!hasOwnProp(this, '_monthsRegex')) {
        computeMonthsParse.call(this);
    }
    if (isStrict) {
        return this._monthsShortStrictRegex;
    } else {
        return this._monthsShortRegex;
    }
} else {
    if (!hasOwnProp(this, '_monthsShortRegex')) {
        this._monthsShortRegex = defaultMonthsShortRegex;
    }
    return this._monthsShortStrictRegex && isStrict ?
        this._monthsShortStrictRegex : this._monthsShortRegex;
}

}

var defaultMonthsRegex = matchWord; function monthsRegex (isStrict) {

if (this._monthsParseExact) {
    if (!hasOwnProp(this, '_monthsRegex')) {
        computeMonthsParse.call(this);
    }
    if (isStrict) {
        return this._monthsStrictRegex;
    } else {
        return this._monthsRegex;
    }
} else {
    if (!hasOwnProp(this, '_monthsRegex')) {
        this._monthsRegex = defaultMonthsRegex;
    }
    return this._monthsStrictRegex && isStrict ?
        this._monthsStrictRegex : this._monthsRegex;
}

}

function computeMonthsParse () {

function cmpLenRev(a, b) {
    return b.length - a.length;
}

var shortPieces = [], longPieces = [], mixedPieces = [],
    i, mom;
for (i = 0; i < 12; i++) {
    // make the regex if we don't have it already
    mom = createUTC([2000, i]);
    shortPieces.push(this.monthsShort(mom, ''));
    longPieces.push(this.months(mom, ''));
    mixedPieces.push(this.months(mom, ''));
    mixedPieces.push(this.monthsShort(mom, ''));
}
// Sorting makes sure if one month (or abbr) is a prefix of another it
// will match the longer piece.
shortPieces.sort(cmpLenRev);
longPieces.sort(cmpLenRev);
mixedPieces.sort(cmpLenRev);
for (i = 0; i < 12; i++) {
    shortPieces[i] = regexEscape(shortPieces[i]);
    longPieces[i] = regexEscape(longPieces[i]);
}
for (i = 0; i < 24; i++) {
    mixedPieces[i] = regexEscape(mixedPieces[i]);
}

this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
this._monthsShortRegex = this._monthsRegex;
this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');

}

function createDate (y, m, d, h, M, s, ms) {

// can't just apply() to create a date:
// https://stackoverflow.com/q/181348
var date = new Date(y, m, d, h, M, s, ms);

// the date constructor remaps years 0-99 to 1900-1999
if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
    date.setFullYear(y);
}
return date;

}

function createUTCDate (y) {

var date = new Date(Date.UTC.apply(null, arguments));

// the Date.UTC function remaps years 0-99 to 1900-1999
if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
    date.setUTCFullYear(y);
}
return date;

}

// start-of-first-week - start-of-year function firstWeekOffset(year, dow, doy) {

var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
    fwd = 7 + dow - doy,
    // first-week day local weekday -- which local weekday is fwd
    fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;

return -fwdlw + fwd - 1;

}

// en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday function dayOfYearFromWeeks(year, week, weekday, dow, doy) {

var localWeekday = (7 + weekday - dow) % 7,
    weekOffset = firstWeekOffset(year, dow, doy),
    dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
    resYear, resDayOfYear;

if (dayOfYear <= 0) {
    resYear = year - 1;
    resDayOfYear = daysInYear(resYear) + dayOfYear;
} else if (dayOfYear > daysInYear(year)) {
    resYear = year + 1;
    resDayOfYear = dayOfYear - daysInYear(year);
} else {
    resYear = year;
    resDayOfYear = dayOfYear;
}

return {
    year: resYear,
    dayOfYear: resDayOfYear
};

}

function weekOfYear(mom, dow, doy) {

var weekOffset = firstWeekOffset(mom.year(), dow, doy),
    week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
    resWeek, resYear;

if (week < 1) {
    resYear = mom.year() - 1;
    resWeek = week + weeksInYear(resYear, dow, doy);
} else if (week > weeksInYear(mom.year(), dow, doy)) {
    resWeek = week - weeksInYear(mom.year(), dow, doy);
    resYear = mom.year() + 1;
} else {
    resYear = mom.year();
    resWeek = week;
}

return {
    week: resWeek,
    year: resYear
};

}

function weeksInYear(year, dow, doy) {

var weekOffset = firstWeekOffset(year, dow, doy),
    weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;

}

// FORMATTING

addFormatToken('w', ['ww', 2], 'wo', 'week'); addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');

// ALIASES

addUnitAlias('week', 'w'); addUnitAlias('isoWeek', 'W');

// PRIORITIES

addUnitPriority('week', 5); addUnitPriority('isoWeek', 5);

// PARSING

addRegexToken('w', match1to2); addRegexToken('ww', match1to2, match2); addRegexToken('W', match1to2); addRegexToken('WW', match1to2, match2);

addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {

week[token.substr(0, 1)] = toInt(input);

});

// HELPERS

// LOCALES

function localeWeek (mom) {

return weekOfYear(mom, this._week.dow, this._week.doy).week;

}

var defaultLocaleWeek = {

dow : 0, // Sunday is the first day of the week.
doy : 6  // The week that contains Jan 1st is the first week of the year.

};

function localeFirstDayOfWeek () {

return this._week.dow;

}

function localeFirstDayOfYear () {

return this._week.doy;

}

// MOMENTS

function getSetWeek (input) {

var week = this.localeData().week(this);
return input == null ? week : this.add((input - week) * 7, 'd');

}

function getSetISOWeek (input) {

var week = weekOfYear(this, 1, 4).week;
return input == null ? week : this.add((input - week) * 7, 'd');

}

// FORMATTING

addFormatToken('d', 0, 'do', 'day');

addFormatToken('dd', 0, 0, function (format) {

return this.localeData().weekdaysMin(this, format);

});

addFormatToken('ddd', 0, 0, function (format) {

return this.localeData().weekdaysShort(this, format);

});

addFormatToken('dddd', 0, 0, function (format) {

return this.localeData().weekdays(this, format);

});

addFormatToken('e', 0, 0, 'weekday'); addFormatToken('E', 0, 0, 'isoWeekday');

// ALIASES

addUnitAlias('day', 'd'); addUnitAlias('weekday', 'e'); addUnitAlias('isoWeekday', 'E');

// PRIORITY addUnitPriority('day', 11); addUnitPriority('weekday', 11); addUnitPriority('isoWeekday', 11);

// PARSING

addRegexToken('d', match1to2); addRegexToken('e', match1to2); addRegexToken('E', match1to2); addRegexToken('dd', function (isStrict, locale) {

return locale.weekdaysMinRegex(isStrict);

}); addRegexToken('ddd', function (isStrict, locale) {

return locale.weekdaysShortRegex(isStrict);

}); addRegexToken('dddd', function (isStrict, locale) {

return locale.weekdaysRegex(isStrict);

});

addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {

var weekday = config._locale.weekdaysParse(input, token, config._strict);
// if we didn't get a weekday name, mark the date as invalid
if (weekday != null) {
    week.d = weekday;
} else {
    getParsingFlags(config).invalidWeekday = input;
}

});

addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {

week[token] = toInt(input);

});

// HELPERS

function parseWeekday(input, locale) {

if (typeof input !== 'string') {
    return input;
}

if (!isNaN(input)) {
    return parseInt(input, 10);
}

input = locale.weekdaysParse(input);
if (typeof input === 'number') {
    return input;
}

return null;

}

function parseIsoWeekday(input, locale) {

if (typeof input === 'string') {
    return locale.weekdaysParse(input) % 7 || 7;
}
return isNaN(input) ? null : input;

}

// LOCALES

var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); function localeWeekdays (m, format) {

if (!m) {
    return isArray(this._weekdays) ? this._weekdays :
        this._weekdays['standalone'];
}
return isArray(this._weekdays) ? this._weekdays[m.day()] :
    this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];

}

var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); function localeWeekdaysShort (m) {

return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;

}

var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); function localeWeekdaysMin (m) {

return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;

}

function handleStrictParse$1(weekdayName, format, strict) {

var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
if (!this._weekdaysParse) {
    this._weekdaysParse = [];
    this._shortWeekdaysParse = [];
    this._minWeekdaysParse = [];

    for (i = 0; i < 7; ++i) {
        mom = createUTC([2000, 1]).day(i);
        this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
        this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
        this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
    }
}

if (strict) {
    if (format === 'dddd') {
        ii = indexOf.call(this._weekdaysParse, llc);
        return ii !== -1 ? ii : null;
    } else if (format === 'ddd') {
        ii = indexOf.call(this._shortWeekdaysParse, llc);
        return ii !== -1 ? ii : null;
    } else {
        ii = indexOf.call(this._minWeekdaysParse, llc);
        return ii !== -1 ? ii : null;
    }
} else {
    if (format === 'dddd') {
        ii = indexOf.call(this._weekdaysParse, llc);
        if (ii !== -1) {
            return ii;
        }
        ii = indexOf.call(this._shortWeekdaysParse, llc);
        if (ii !== -1) {
            return ii;
        }
        ii = indexOf.call(this._minWeekdaysParse, llc);
        return ii !== -1 ? ii : null;
    } else if (format === 'ddd') {
        ii = indexOf.call(this._shortWeekdaysParse, llc);
        if (ii !== -1) {
            return ii;
        }
        ii = indexOf.call(this._weekdaysParse, llc);
        if (ii !== -1) {
            return ii;
        }
        ii = indexOf.call(this._minWeekdaysParse, llc);
        return ii !== -1 ? ii : null;
    } else {
        ii = indexOf.call(this._minWeekdaysParse, llc);
        if (ii !== -1) {
            return ii;
        }
        ii = indexOf.call(this._weekdaysParse, llc);
        if (ii !== -1) {
            return ii;
        }
        ii = indexOf.call(this._shortWeekdaysParse, llc);
        return ii !== -1 ? ii : null;
    }
}

}

function localeWeekdaysParse (weekdayName, format, strict) {

var i, mom, regex;

if (this._weekdaysParseExact) {
    return handleStrictParse$1.call(this, weekdayName, format, strict);
}

if (!this._weekdaysParse) {
    this._weekdaysParse = [];
    this._minWeekdaysParse = [];
    this._shortWeekdaysParse = [];
    this._fullWeekdaysParse = [];
}

for (i = 0; i < 7; i++) {
    // make the regex if we don't have it already

    mom = createUTC([2000, 1]).day(i);
    if (strict && !this._fullWeekdaysParse[i]) {
        this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i');
        this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i');
        this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i');
    }
    if (!this._weekdaysParse[i]) {
        regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
        this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
    }
    // test the regex
    if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
        return i;
    } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
        return i;
    } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
        return i;
    } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
        return i;
    }
}

}

// MOMENTS

function getSetDayOfWeek (input) {

if (!this.isValid()) {
    return input != null ? this : NaN;
}
var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
if (input != null) {
    input = parseWeekday(input, this.localeData());
    return this.add(input - day, 'd');
} else {
    return day;
}

}

function getSetLocaleDayOfWeek (input) {

if (!this.isValid()) {
    return input != null ? this : NaN;
}
var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
return input == null ? weekday : this.add(input - weekday, 'd');

}

function getSetISODayOfWeek (input) {

if (!this.isValid()) {
    return input != null ? this : NaN;
}

// behaves the same as moment#day except
// as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
// as a setter, sunday should belong to the previous week.

if (input != null) {
    var weekday = parseIsoWeekday(input, this.localeData());
    return this.day(this.day() % 7 ? weekday : weekday - 7);
} else {
    return this.day() || 7;
}

}

var defaultWeekdaysRegex = matchWord; function weekdaysRegex (isStrict) {

if (this._weekdaysParseExact) {
    if (!hasOwnProp(this, '_weekdaysRegex')) {
        computeWeekdaysParse.call(this);
    }
    if (isStrict) {
        return this._weekdaysStrictRegex;
    } else {
        return this._weekdaysRegex;
    }
} else {
    if (!hasOwnProp(this, '_weekdaysRegex')) {
        this._weekdaysRegex = defaultWeekdaysRegex;
    }
    return this._weekdaysStrictRegex && isStrict ?
        this._weekdaysStrictRegex : this._weekdaysRegex;
}

}

var defaultWeekdaysShortRegex = matchWord; function weekdaysShortRegex (isStrict) {

if (this._weekdaysParseExact) {
    if (!hasOwnProp(this, '_weekdaysRegex')) {
        computeWeekdaysParse.call(this);
    }
    if (isStrict) {
        return this._weekdaysShortStrictRegex;
    } else {
        return this._weekdaysShortRegex;
    }
} else {
    if (!hasOwnProp(this, '_weekdaysShortRegex')) {
        this._weekdaysShortRegex = defaultWeekdaysShortRegex;
    }
    return this._weekdaysShortStrictRegex && isStrict ?
        this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
}

}

var defaultWeekdaysMinRegex = matchWord; function weekdaysMinRegex (isStrict) {

if (this._weekdaysParseExact) {
    if (!hasOwnProp(this, '_weekdaysRegex')) {
        computeWeekdaysParse.call(this);
    }
    if (isStrict) {
        return this._weekdaysMinStrictRegex;
    } else {
        return this._weekdaysMinRegex;
    }
} else {
    if (!hasOwnProp(this, '_weekdaysMinRegex')) {
        this._weekdaysMinRegex = defaultWeekdaysMinRegex;
    }
    return this._weekdaysMinStrictRegex && isStrict ?
        this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
}

}

function computeWeekdaysParse () {

function cmpLenRev(a, b) {
    return b.length - a.length;
}

var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
    i, mom, minp, shortp, longp;
for (i = 0; i < 7; i++) {
    // make the regex if we don't have it already
    mom = createUTC([2000, 1]).day(i);
    minp = this.weekdaysMin(mom, '');
    shortp = this.weekdaysShort(mom, '');
    longp = this.weekdays(mom, '');
    minPieces.push(minp);
    shortPieces.push(shortp);
    longPieces.push(longp);
    mixedPieces.push(minp);
    mixedPieces.push(shortp);
    mixedPieces.push(longp);
}
// Sorting makes sure if one weekday (or abbr) is a prefix of another it
// will match the longer piece.
minPieces.sort(cmpLenRev);
shortPieces.sort(cmpLenRev);
longPieces.sort(cmpLenRev);
mixedPieces.sort(cmpLenRev);
for (i = 0; i < 7; i++) {
    shortPieces[i] = regexEscape(shortPieces[i]);
    longPieces[i] = regexEscape(longPieces[i]);
    mixedPieces[i] = regexEscape(mixedPieces[i]);
}

this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
this._weekdaysShortRegex = this._weekdaysRegex;
this._weekdaysMinRegex = this._weekdaysRegex;

this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');

}

// FORMATTING

function hFormat() {

return this.hours() % 12 || 12;

}

function kFormat() {

return this.hours() || 24;

}

addFormatToken('H', ['HH', 2], 0, 'hour'); addFormatToken('h', ['hh', 2], 0, hFormat); addFormatToken('k', ['kk', 2], 0, kFormat);

addFormatToken('hmm', 0, 0, function () {

return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);

});

addFormatToken('hmmss', 0, 0, function () {

return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
    zeroFill(this.seconds(), 2);

});

addFormatToken('Hmm', 0, 0, function () {

return '' + this.hours() + zeroFill(this.minutes(), 2);

});

addFormatToken('Hmmss', 0, 0, function () {

return '' + this.hours() + zeroFill(this.minutes(), 2) +
    zeroFill(this.seconds(), 2);

});

function meridiem (token, lowercase) {

addFormatToken(token, 0, 0, function () {
    return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
});

}

meridiem('a', true); meridiem('A', false);

// ALIASES

addUnitAlias('hour', 'h');

// PRIORITY addUnitPriority('hour', 13);

// PARSING

function matchMeridiem (isStrict, locale) {

return locale._meridiemParse;

}

addRegexToken('a', matchMeridiem); addRegexToken('A', matchMeridiem); addRegexToken('H', match1to2); addRegexToken('h', match1to2); addRegexToken('k', match1to2); addRegexToken('HH', match1to2, match2); addRegexToken('hh', match1to2, match2); addRegexToken('kk', match1to2, match2);

addRegexToken('hmm', match3to4); addRegexToken('hmmss', match5to6); addRegexToken('Hmm', match3to4); addRegexToken('Hmmss', match5to6);

addParseToken(['H', 'HH'], HOUR); addParseToken(['k', 'kk'], function (input, array, config) {

var kInput = toInt(input);
array[HOUR] = kInput === 24 ? 0 : kInput;

}); addParseToken(['a', 'A'], function (input, array, config) {

config._isPm = config._locale.isPM(input);
config._meridiem = input;

}); addParseToken(['h', 'hh'], function (input, array, config) {

array[HOUR] = toInt(input);
getParsingFlags(config).bigHour = true;

}); addParseToken('hmm', function (input, array, config) {

var pos = input.length - 2;
array[HOUR] = toInt(input.substr(0, pos));
array[MINUTE] = toInt(input.substr(pos));
getParsingFlags(config).bigHour = true;

}); addParseToken('hmmss', function (input, array, config) {

var pos1 = input.length - 4;
var pos2 = input.length - 2;
array[HOUR] = toInt(input.substr(0, pos1));
array[MINUTE] = toInt(input.substr(pos1, 2));
array[SECOND] = toInt(input.substr(pos2));
getParsingFlags(config).bigHour = true;

}); addParseToken('Hmm', function (input, array, config) {

var pos = input.length - 2;
array[HOUR] = toInt(input.substr(0, pos));
array[MINUTE] = toInt(input.substr(pos));

}); addParseToken('Hmmss', function (input, array, config) {

var pos1 = input.length - 4;
var pos2 = input.length - 2;
array[HOUR] = toInt(input.substr(0, pos1));
array[MINUTE] = toInt(input.substr(pos1, 2));
array[SECOND] = toInt(input.substr(pos2));

});

// LOCALES

function localeIsPM (input) {

// IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
// Using charAt should be more compatible.
return ((input + '').toLowerCase().charAt(0) === 'p');

}

var defaultLocaleMeridiemParse = /[ap].?m?.?/i; function localeMeridiem (hours, minutes, isLower) {

if (hours > 11) {
    return isLower ? 'pm' : 'PM';
} else {
    return isLower ? 'am' : 'AM';
}

}

// MOMENTS

// Setting the hour should keep the time, because the user explicitly // specified which hour he wants. So trying to maintain the same hour (in // a new timezone) makes sense. Adding/subtracting hours does not follow // this rule. var getSetHour = makeGetSet('Hours', true);

var baseConfig = {

calendar: defaultCalendar,
longDateFormat: defaultLongDateFormat,
invalidDate: defaultInvalidDate,
ordinal: defaultOrdinal,
dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
relativeTime: defaultRelativeTime,

months: defaultLocaleMonths,
monthsShort: defaultLocaleMonthsShort,

week: defaultLocaleWeek,

weekdays: defaultLocaleWeekdays,
weekdaysMin: defaultLocaleWeekdaysMin,
weekdaysShort: defaultLocaleWeekdaysShort,

meridiemParse: defaultLocaleMeridiemParse

};

// internal storage for locale config files var locales = {}; var localeFamilies = {}; var globalLocale;

function normalizeLocale(key) {

return key ? key.toLowerCase().replace('_', '-') : key;

}

// pick the locale from the array // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root function chooseLocale(names) {

var i = 0, j, next, locale, split;

while (i < names.length) {
    split = normalizeLocale(names[i]).split('-');
    j = split.length;
    next = normalizeLocale(names[i + 1]);
    next = next ? next.split('-') : null;
    while (j > 0) {
        locale = loadLocale(split.slice(0, j).join('-'));
        if (locale) {
            return locale;
        }
        if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
            //the next array item is better than a shallower substring of this one
            break;
        }
        j--;
    }
    i++;
}
return globalLocale;

}

function loadLocale(name) {

var oldLocale = null;
// TODO: Find a better way to register and load all the locales in Node
if (!locales[name] && (typeof module !== 'undefined') &&
        module && module.exports) {
    try {
        oldLocale = globalLocale._abbr;
        var aliasedRequire = require;
        __webpack_require__("./node_modules/moment/locale sync recursive ^\\.\\/.*$")("./" + name);
        getSetGlobalLocale(oldLocale);
    } catch (e) {}
}
return locales[name];

}

// This function will load locale and then set the global locale. If // no arguments are passed in, it will simply return the current global // locale key. function getSetGlobalLocale (key, values) {

var data;
if (key) {
    if (isUndefined(values)) {
        data = getLocale(key);
    }
    else {
        data = defineLocale(key, values);
    }

    if (data) {
        // moment.duration._locale = moment._locale = data;
        globalLocale = data;
    }
    else {
        if ((typeof console !==  'undefined') && console.warn) {
            //warn user if arguments are passed but the locale could not be set
            console.warn('Locale ' + key +  ' not found. Did you forget to load it?');
        }
    }
}

return globalLocale._abbr;

}

function defineLocale (name, config) {

if (config !== null) {
    var locale, parentConfig = baseConfig;
    config.abbr = name;
    if (locales[name] != null) {
        deprecateSimple('defineLocaleOverride',
                'use moment.updateLocale(localeName, config) to change ' +
                'an existing locale. moment.defineLocale(localeName, ' +
                'config) should only be used for creating a new locale ' +
                'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');
        parentConfig = locales[name]._config;
    } else if (config.parentLocale != null) {
        if (locales[config.parentLocale] != null) {
            parentConfig = locales[config.parentLocale]._config;
        } else {
            locale = loadLocale(config.parentLocale);
            if (locale != null) {
                parentConfig = locale._config;
            } else {
                if (!localeFamilies[config.parentLocale]) {
                    localeFamilies[config.parentLocale] = [];
                }
                localeFamilies[config.parentLocale].push({
                    name: name,
                    config: config
                });
                return null;
            }
        }
    }
    locales[name] = new Locale(mergeConfigs(parentConfig, config));

    if (localeFamilies[name]) {
        localeFamilies[name].forEach(function (x) {
            defineLocale(x.name, x.config);
        });
    }

    // backwards compat for now: also set the locale
    // make sure we set the locale AFTER all child locales have been
    // created, so we won't end up with the child locale set.
    getSetGlobalLocale(name);

    return locales[name];
} else {
    // useful for testing
    delete locales[name];
    return null;
}

}

function updateLocale(name, config) {

if (config != null) {
    var locale, tmpLocale, parentConfig = baseConfig;
    // MERGE
    tmpLocale = loadLocale(name);
    if (tmpLocale != null) {
        parentConfig = tmpLocale._config;
    }
    config = mergeConfigs(parentConfig, config);
    locale = new Locale(config);
    locale.parentLocale = locales[name];
    locales[name] = locale;

    // backwards compat for now: also set the locale
    getSetGlobalLocale(name);
} else {
    // pass null for config to unupdate, useful for tests
    if (locales[name] != null) {
        if (locales[name].parentLocale != null) {
            locales[name] = locales[name].parentLocale;
        } else if (locales[name] != null) {
            delete locales[name];
        }
    }
}
return locales[name];

}

// returns locale data function getLocale (key) {

var locale;

if (key && key._locale && key._locale._abbr) {
    key = key._locale._abbr;
}

if (!key) {
    return globalLocale;
}

if (!isArray(key)) {
    //short-circuit everything else
    locale = loadLocale(key);
    if (locale) {
        return locale;
    }
    key = [key];
}

return chooseLocale(key);

}

function listLocales() {

return keys(locales);

}

function checkOverflow (m) {

var overflow;
var a = m._a;

if (a && getParsingFlags(m).overflow === -2) {
    overflow =
        a[MONTH]       < 0 || a[MONTH]       > 11  ? MONTH :
        a[DATE]        < 1 || a[DATE]        > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
        a[HOUR]        < 0 || a[HOUR]        > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
        a[MINUTE]      < 0 || a[MINUTE]      > 59  ? MINUTE :
        a[SECOND]      < 0 || a[SECOND]      > 59  ? SECOND :
        a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
        -1;

    if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
        overflow = DATE;
    }
    if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
        overflow = WEEK;
    }
    if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
        overflow = WEEKDAY;
    }

    getParsingFlags(m).overflow = overflow;
}

return m;

}

// Pick the first defined of two or three arguments. function defaults(a, b, c) {

if (a != null) {
    return a;
}
if (b != null) {
    return b;
}
return c;

}

function currentDateArray(config) {

// hooks is actually the exported moment object
var nowValue = new Date(hooks.now());
if (config._useUTC) {
    return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
}
return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];

}

// convert an array to a date. // the array should mirror the parameters below // note: all values past the year are optional and will default to the lowest possible value. // [year, month, day , hour, minute, second, millisecond] function configFromArray (config) {

var i, date, input = [], currentDate, expectedWeekday, yearToUse;

if (config._d) {
    return;
}

currentDate = currentDateArray(config);

//compute day of the year from weeks and weekdays
if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
    dayOfYearFromWeekInfo(config);
}

//if the day of the year is set, figure out what it is
if (config._dayOfYear != null) {
    yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);

    if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
        getParsingFlags(config)._overflowDayOfYear = true;
    }

    date = createUTCDate(yearToUse, 0, config._dayOfYear);
    config._a[MONTH] = date.getUTCMonth();
    config._a[DATE] = date.getUTCDate();
}

// Default to current date.
// * if no year, month, day of month are given, default to today
// * if day of month is given, default month and year
// * if month is given, default only year
// * if year is given, don't default anything
for (i = 0; i < 3 && config._a[i] == null; ++i) {
    config._a[i] = input[i] = currentDate[i];
}

// Zero out whatever was not defaulted, including time
for (; i < 7; i++) {
    config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
}

// Check for 24:00:00.000
if (config._a[HOUR] === 24 &&
        config._a[MINUTE] === 0 &&
        config._a[SECOND] === 0 &&
        config._a[MILLISECOND] === 0) {
    config._nextDay = true;
    config._a[HOUR] = 0;
}

config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();

// Apply timezone offset from input. The actual utcOffset can be changed
// with parseZone.
if (config._tzm != null) {
    config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
}

if (config._nextDay) {
    config._a[HOUR] = 24;
}

// check for mismatching day of week
if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {
    getParsingFlags(config).weekdayMismatch = true;
}

}

function dayOfYearFromWeekInfo(config) {

var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;

w = config._w;
if (w.GG != null || w.W != null || w.E != null) {
    dow = 1;
    doy = 4;

    // TODO: We need to take the current isoWeekYear, but that depends on
    // how we interpret now (local, utc, fixed offset). So create
    // a now version of current config (take local/utc/offset flags, and
    // create now).
    weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);
    week = defaults(w.W, 1);
    weekday = defaults(w.E, 1);
    if (weekday < 1 || weekday > 7) {
        weekdayOverflow = true;
    }
} else {
    dow = config._locale._week.dow;
    doy = config._locale._week.doy;

    var curWeek = weekOfYear(createLocal(), dow, doy);

    weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);

    // Default to current week.
    week = defaults(w.w, curWeek.week);

    if (w.d != null) {
        // weekday -- low day numbers are considered next week
        weekday = w.d;
        if (weekday < 0 || weekday > 6) {
            weekdayOverflow = true;
        }
    } else if (w.e != null) {
        // local weekday -- counting starts from begining of week
        weekday = w.e + dow;
        if (w.e < 0 || w.e > 6) {
            weekdayOverflow = true;
        }
    } else {
        // default to begining of week
        weekday = dow;
    }
}
if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
    getParsingFlags(config)._overflowWeeks = true;
} else if (weekdayOverflow != null) {
    getParsingFlags(config)._overflowWeekday = true;
} else {
    temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
    config._a[YEAR] = temp.year;
    config._dayOfYear = temp.dayOfYear;
}

}

// iso 8601 regex // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) var extendedIsoRegex = /^s*((?:d{6}|d{4})-(?:dd-dd|Wdd-d|Wdd|ddd|dd))(?:(T| )(dd(?::dd(?::dd(?:[.,]d+)?)?)?)(dd(?::?dd)?|s*Z)?)?$/; var basicIsoRegex = /^s*((?:d{6}|d{4})(?:dddd|Wddd|Wdd|ddd|dd))(?:(T| )(dd(?:dd(?:dd(?:[.,]d+)?)?)?)(dd(?::?dd)?|s*Z)?)?$/;

var tzRegex = /Z|dd(?::?dd)?/;

var isoDates = [

['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
['GGGG-[W]WW', /\d{4}-W\d\d/, false],
['YYYY-DDD', /\d{4}-\d{3}/],
['YYYY-MM', /\d{4}-\d\d/, false],
['YYYYYYMMDD', /[+-]\d{10}/],
['YYYYMMDD', /\d{8}/],
// YYYYMM is NOT allowed by the standard
['GGGG[W]WWE', /\d{4}W\d{3}/],
['GGGG[W]WW', /\d{4}W\d{2}/, false],
['YYYYDDD', /\d{7}/]

];

// iso time formats and regexes var isoTimes = [

['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
['HH:mm:ss', /\d\d:\d\d:\d\d/],
['HH:mm', /\d\d:\d\d/],
['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
['HHmmss', /\d\d\d\d\d\d/],
['HHmm', /\d\d\d\d/],
['HH', /\d\d/]

];

var aspNetJsonRegex = /^/?Date((-?d+)/i;

// date from iso format function configFromISO(config) {

var i, l,
    string = config._i,
    match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
    allowTime, dateFormat, timeFormat, tzFormat;

if (match) {
    getParsingFlags(config).iso = true;

    for (i = 0, l = isoDates.length; i < l; i++) {
        if (isoDates[i][1].exec(match[1])) {
            dateFormat = isoDates[i][0];
            allowTime = isoDates[i][2] !== false;
            break;
        }
    }
    if (dateFormat == null) {
        config._isValid = false;
        return;
    }
    if (match[3]) {
        for (i = 0, l = isoTimes.length; i < l; i++) {
            if (isoTimes[i][1].exec(match[3])) {
                // match[2] should be 'T' or space
                timeFormat = (match[2] || ' ') + isoTimes[i][0];
                break;
            }
        }
        if (timeFormat == null) {
            config._isValid = false;
            return;
        }
    }
    if (!allowTime && timeFormat != null) {
        config._isValid = false;
        return;
    }
    if (match[4]) {
        if (tzRegex.exec(match[4])) {
            tzFormat = 'Z';
        } else {
            config._isValid = false;
            return;
        }
    }
    config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
    configFromStringAndFormat(config);
} else {
    config._isValid = false;
}

}

// RFC 2822 regex: For details see tools.ietf.org/html/rfc2822#section-3.3 var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?s)?(d{1,2})s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)s(d{2,4})s(dd):(dd)(?::(dd))?s(?:(UT|GMT|[ECMP][SD]T)|()|([+-]d{4}))$/;

function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {

var result = [
    untruncateYear(yearStr),
    defaultLocaleMonthsShort.indexOf(monthStr),
    parseInt(dayStr, 10),
    parseInt(hourStr, 10),
    parseInt(minuteStr, 10)
];

if (secondStr) {
    result.push(parseInt(secondStr, 10));
}

return result;

}

function untruncateYear(yearStr) {

var year = parseInt(yearStr, 10);
if (year <= 49) {
    return 2000 + year;
} else if (year <= 999) {
    return 1900 + year;
}
return year;

}

function preprocessRFC2822(s) {

// Remove comments and folding whitespace and replace multiple-spaces with a single space
return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').trim();

}

function checkWeekday(weekdayStr, parsedInput, config) {

if (weekdayStr) {
    // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.
    var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
        weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();
    if (weekdayProvided !== weekdayActual) {
        getParsingFlags(config).weekdayMismatch = true;
        config._isValid = false;
        return false;
    }
}
return true;

}

var obsOffsets = {

UT: 0,
GMT: 0,
EDT: -4 * 60,
EST: -5 * 60,
CDT: -5 * 60,
CST: -6 * 60,
MDT: -6 * 60,
MST: -7 * 60,
PDT: -7 * 60,
PST: -8 * 60

};

function calculateOffset(obsOffset, militaryOffset, numOffset) {

if (obsOffset) {
    return obsOffsets[obsOffset];
} else if (militaryOffset) {
    // the only allowed military tz is Z
    return 0;
} else {
    var hm = parseInt(numOffset, 10);
    var m = hm % 100, h = (hm - m) / 100;
    return h * 60 + m;
}

}

// date and time from ref 2822 format function configFromRFC2822(config) {

var match = rfc2822.exec(preprocessRFC2822(config._i));
if (match) {
    var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);
    if (!checkWeekday(match[1], parsedArray, config)) {
        return;
    }

    config._a = parsedArray;
    config._tzm = calculateOffset(match[8], match[9], match[10]);

    config._d = createUTCDate.apply(null, config._a);
    config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);

    getParsingFlags(config).rfc2822 = true;
} else {
    config._isValid = false;
}

}

// date from iso format or fallback function configFromString(config) {

var matched = aspNetJsonRegex.exec(config._i);

if (matched !== null) {
    config._d = new Date(+matched[1]);
    return;
}

configFromISO(config);
if (config._isValid === false) {
    delete config._isValid;
} else {
    return;
}

configFromRFC2822(config);
if (config._isValid === false) {
    delete config._isValid;
} else {
    return;
}

// Final attempt, use Input Fallback
hooks.createFromInputFallback(config);

}

hooks.createFromInputFallback = deprecate(

'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
'discouraged and will be removed in an upcoming major release. Please refer to ' +
'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
function (config) {
    config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
}

);

// constant that refers to the ISO standard hooks.ISO_8601 = function () {};

// constant that refers to the RFC 2822 form hooks.RFC_2822 = function () {};

// date from string and format string function configFromStringAndFormat(config) {

// TODO: Move this to another part of the creation flow to prevent circular deps
if (config._f === hooks.ISO_8601) {
    configFromISO(config);
    return;
}
if (config._f === hooks.RFC_2822) {
    configFromRFC2822(config);
    return;
}
config._a = [];
getParsingFlags(config).empty = true;

// This array is used to make a Date, either with `new Date` or `Date.UTC`
var string = '' + config._i,
    i, parsedInput, tokens, token, skipped,
    stringLength = string.length,
    totalParsedInputLength = 0;

tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];

for (i = 0; i < tokens.length; i++) {
    token = tokens[i];
    parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
    // console.log('token', token, 'parsedInput', parsedInput,
    //         'regex', getParseRegexForToken(token, config));
    if (parsedInput) {
        skipped = string.substr(0, string.indexOf(parsedInput));
        if (skipped.length > 0) {
            getParsingFlags(config).unusedInput.push(skipped);
        }
        string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
        totalParsedInputLength += parsedInput.length;
    }
    // don't parse if it's not a known token
    if (formatTokenFunctions[token]) {
        if (parsedInput) {
            getParsingFlags(config).empty = false;
        }
        else {
            getParsingFlags(config).unusedTokens.push(token);
        }
        addTimeToArrayFromToken(token, parsedInput, config);
    }
    else if (config._strict && !parsedInput) {
        getParsingFlags(config).unusedTokens.push(token);
    }
}

// add remaining unparsed input length to the string
getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
if (string.length > 0) {
    getParsingFlags(config).unusedInput.push(string);
}

// clear _12h flag if hour is <= 12
if (config._a[HOUR] <= 12 &&
    getParsingFlags(config).bigHour === true &&
    config._a[HOUR] > 0) {
    getParsingFlags(config).bigHour = undefined;
}

getParsingFlags(config).parsedDateParts = config._a.slice(0);
getParsingFlags(config).meridiem = config._meridiem;
// handle meridiem
config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);

configFromArray(config);
checkOverflow(config);

}

function meridiemFixWrap (locale, hour, meridiem) {

var isPm;

if (meridiem == null) {
    // nothing to do
    return hour;
}
if (locale.meridiemHour != null) {
    return locale.meridiemHour(hour, meridiem);
} else if (locale.isPM != null) {
    // Fallback
    isPm = locale.isPM(meridiem);
    if (isPm && hour < 12) {
        hour += 12;
    }
    if (!isPm && hour === 12) {
        hour = 0;
    }
    return hour;
} else {
    // this is not supposed to happen
    return hour;
}

}

// date from string and array of format strings function configFromStringAndArray(config) {

var tempConfig,
    bestMoment,

    scoreToBeat,
    i,
    currentScore;

if (config._f.length === 0) {
    getParsingFlags(config).invalidFormat = true;
    config._d = new Date(NaN);
    return;
}

for (i = 0; i < config._f.length; i++) {
    currentScore = 0;
    tempConfig = copyConfig({}, config);
    if (config._useUTC != null) {
        tempConfig._useUTC = config._useUTC;
    }
    tempConfig._f = config._f[i];
    configFromStringAndFormat(tempConfig);

    if (!isValid(tempConfig)) {
        continue;
    }

    // if there is any input that was not parsed add a penalty for that format
    currentScore += getParsingFlags(tempConfig).charsLeftOver;

    //or tokens
    currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;

    getParsingFlags(tempConfig).score = currentScore;

    if (scoreToBeat == null || currentScore < scoreToBeat) {
        scoreToBeat = currentScore;
        bestMoment = tempConfig;
    }
}

extend(config, bestMoment || tempConfig);

}

function configFromObject(config) {

if (config._d) {
    return;
}

var i = normalizeObjectUnits(config._i);
config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
    return obj && parseInt(obj, 10);
});

configFromArray(config);

}

function createFromConfig (config) {

var res = new Moment(checkOverflow(prepareConfig(config)));
if (res._nextDay) {
    // Adding is smart enough around DST
    res.add(1, 'd');
    res._nextDay = undefined;
}

return res;

}

function prepareConfig (config) {

var input = config._i,
    format = config._f;

config._locale = config._locale || getLocale(config._l);

if (input === null || (format === undefined && input === '')) {
    return createInvalid({nullInput: true});
}

if (typeof input === 'string') {
    config._i = input = config._locale.preparse(input);
}

if (isMoment(input)) {
    return new Moment(checkOverflow(input));
} else if (isDate(input)) {
    config._d = input;
} else if (isArray(format)) {
    configFromStringAndArray(config);
} else if (format) {
    configFromStringAndFormat(config);
}  else {
    configFromInput(config);
}

if (!isValid(config)) {
    config._d = null;
}

return config;

}

function configFromInput(config) {

var input = config._i;
if (isUndefined(input)) {
    config._d = new Date(hooks.now());
} else if (isDate(input)) {
    config._d = new Date(input.valueOf());
} else if (typeof input === 'string') {
    configFromString(config);
} else if (isArray(input)) {
    config._a = map(input.slice(0), function (obj) {
        return parseInt(obj, 10);
    });
    configFromArray(config);
} else if (isObject(input)) {
    configFromObject(config);
} else if (isNumber(input)) {
    // from milliseconds
    config._d = new Date(input);
} else {
    hooks.createFromInputFallback(config);
}

}

function createLocalOrUTC (input, format, locale, strict, isUTC) {

var c = {};

if (locale === true || locale === false) {
    strict = locale;
    locale = undefined;
}

if ((isObject(input) && isObjectEmpty(input)) ||
        (isArray(input) && input.length === 0)) {
    input = undefined;
}
// object construction must be done this way.
// https://github.com/moment/moment/issues/1423
c._isAMomentObject = true;
c._useUTC = c._isUTC = isUTC;
c._l = locale;
c._i = input;
c._f = format;
c._strict = strict;

return createFromConfig(c);

}

function createLocal (input, format, locale, strict) {

return createLocalOrUTC(input, format, locale, strict, false);

}

var prototypeMin = deprecate(

'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
function () {
    var other = createLocal.apply(null, arguments);
    if (this.isValid() && other.isValid()) {
        return other < this ? this : other;
    } else {
        return createInvalid();
    }
}

);

var prototypeMax = deprecate(

'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
function () {
    var other = createLocal.apply(null, arguments);
    if (this.isValid() && other.isValid()) {
        return other > this ? this : other;
    } else {
        return createInvalid();
    }
}

);

// Pick a moment m from moments so that m(other) is true for all // other. This relies on the function fn to be transitive. // // moments should either be an array of moment objects or an array, whose // first element is an array of moment objects. function pickBy(fn, moments) {

var res, i;
if (moments.length === 1 && isArray(moments[0])) {
    moments = moments[0];
}
if (!moments.length) {
    return createLocal();
}
res = moments[0];
for (i = 1; i < moments.length; ++i) {
    if (!moments[i].isValid() || moments[i][fn](res)) {
        res = moments[i];
    }
}
return res;

}

// TODO: Use [].sort instead? function min () {

var args = [].slice.call(arguments, 0);

return pickBy('isBefore', args);

}

function max () {

var args = [].slice.call(arguments, 0);

return pickBy('isAfter', args);

}

var now = function () {

return Date.now ? Date.now() : +(new Date());

};

var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];

function isDurationValid(m) {

for (var key in m) {
    if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
        return false;
    }
}

var unitHasDecimal = false;
for (var i = 0; i < ordering.length; ++i) {
    if (m[ordering[i]]) {
        if (unitHasDecimal) {
            return false; // only allow non-integers for smallest unit
        }
        if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
            unitHasDecimal = true;
        }
    }
}

return true;

}

function isValid$1() {

return this._isValid;

}

function createInvalid$1() {

return createDuration(NaN);

}

function Duration (duration) {

var normalizedInput = normalizeObjectUnits(duration),
    years = normalizedInput.year || 0,
    quarters = normalizedInput.quarter || 0,
    months = normalizedInput.month || 0,
    weeks = normalizedInput.week || 0,
    days = normalizedInput.day || 0,
    hours = normalizedInput.hour || 0,
    minutes = normalizedInput.minute || 0,
    seconds = normalizedInput.second || 0,
    milliseconds = normalizedInput.millisecond || 0;

this._isValid = isDurationValid(normalizedInput);

// representation for dateAddRemove
this._milliseconds = +milliseconds +
    seconds * 1e3 + // 1000
    minutes * 6e4 + // 1000 * 60
    hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
// Because of dateAddRemove treats 24 hours as different from a
// day when working around DST, we need to store them separately
this._days = +days +
    weeks * 7;
// It is impossible to translate months into days without knowing
// which months you are are talking about, so we have to store
// it separately.
this._months = +months +
    quarters * 3 +
    years * 12;

this._data = {};

this._locale = getLocale();

this._bubble();

}

function isDuration (obj) {

return obj instanceof Duration;

}

function absRound (number) {

if (number < 0) {
    return Math.round(-1 * number) * -1;
} else {
    return Math.round(number);
}

}

// FORMATTING

function offset (token, separator) {

addFormatToken(token, 0, 0, function () {
    var offset = this.utcOffset();
    var sign = '+';
    if (offset < 0) {
        offset = -offset;
        sign = '-';
    }
    return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
});

}

offset('Z', ':'); offset('ZZ', '');

// PARSING

addRegexToken('Z', matchShortOffset); addRegexToken('ZZ', matchShortOffset); addParseToken(['Z', 'ZZ'], function (input, array, config) {

config._useUTC = true;
config._tzm = offsetFromString(matchShortOffset, input);

});

// HELPERS

// timezone chunker // '+10:00' > ['10', '00'] // '-1530' > ['-15', '30'] var chunkOffset = /([+-]|dd)/gi;

function offsetFromString(matcher, string) {

var matches = (string || '').match(matcher);

if (matches === null) {
    return null;
}

var chunk   = matches[matches.length - 1] || [];
var parts   = (chunk + '').match(chunkOffset) || ['-', 0, 0];
var minutes = +(parts[1] * 60) + toInt(parts[2]);

return minutes === 0 ?
  0 :
  parts[0] === '+' ? minutes : -minutes;

}

// Return a moment from input, that is local/utc/zone equivalent to model. function cloneWithOffset(input, model) {

var res, diff;
if (model._isUTC) {
    res = model.clone();
    diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
    // Use low-level api, because this fn is low-level api.
    res._d.setTime(res._d.valueOf() + diff);
    hooks.updateOffset(res, false);
    return res;
} else {
    return createLocal(input).local();
}

}

function getDateOffset (m) {

// On Firefox.24 Date#getTimezoneOffset returns a floating point.
// https://github.com/moment/moment/pull/1871
return -Math.round(m._d.getTimezoneOffset() / 15) * 15;

}

// HOOKS

// This function will be called whenever a moment is mutated. // It is intended to keep the offset in sync with the timezone. hooks.updateOffset = function () {};

// MOMENTS

// keepLocalTime = true means only change the timezone, without // affecting the local hour. So 5:31:26 +0300 –[utcOffset(2, true)]–> // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset // +0200, so we adjust the time as needed, to be valid. // // Keeping the time actually adds/subtracts (one hour) // from the actual represented time. That is why we call updateOffset // a second time. In case it wants us to change the offset again // _changeInProgress == true case, then we have to adjust, because // there is no such time in the given timezone. function getSetOffset (input, keepLocalTime, keepMinutes) {

var offset = this._offset || 0,
    localAdjust;
if (!this.isValid()) {
    return input != null ? this : NaN;
}
if (input != null) {
    if (typeof input === 'string') {
        input = offsetFromString(matchShortOffset, input);
        if (input === null) {
            return this;
        }
    } else if (Math.abs(input) < 16 && !keepMinutes) {
        input = input * 60;
    }
    if (!this._isUTC && keepLocalTime) {
        localAdjust = getDateOffset(this);
    }
    this._offset = input;
    this._isUTC = true;
    if (localAdjust != null) {
        this.add(localAdjust, 'm');
    }
    if (offset !== input) {
        if (!keepLocalTime || this._changeInProgress) {
            addSubtract(this, createDuration(input - offset, 'm'), 1, false);
        } else if (!this._changeInProgress) {
            this._changeInProgress = true;
            hooks.updateOffset(this, true);
            this._changeInProgress = null;
        }
    }
    return this;
} else {
    return this._isUTC ? offset : getDateOffset(this);
}

}

function getSetZone (input, keepLocalTime) {

if (input != null) {
    if (typeof input !== 'string') {
        input = -input;
    }

    this.utcOffset(input, keepLocalTime);

    return this;
} else {
    return -this.utcOffset();
}

}

function setOffsetToUTC (keepLocalTime) {

return this.utcOffset(0, keepLocalTime);

}

function setOffsetToLocal (keepLocalTime) {

if (this._isUTC) {
    this.utcOffset(0, keepLocalTime);
    this._isUTC = false;

    if (keepLocalTime) {
        this.subtract(getDateOffset(this), 'm');
    }
}
return this;

}

function setOffsetToParsedOffset () {

if (this._tzm != null) {
    this.utcOffset(this._tzm, false, true);
} else if (typeof this._i === 'string') {
    var tZone = offsetFromString(matchOffset, this._i);
    if (tZone != null) {
        this.utcOffset(tZone);
    }
    else {
        this.utcOffset(0, true);
    }
}
return this;

}

function hasAlignedHourOffset (input) {

if (!this.isValid()) {
    return false;
}
input = input ? createLocal(input).utcOffset() : 0;

return (this.utcOffset() - input) % 60 === 0;

}

function isDaylightSavingTime () {

return (
    this.utcOffset() > this.clone().month(0).utcOffset() ||
    this.utcOffset() > this.clone().month(5).utcOffset()
);

}

function isDaylightSavingTimeShifted () {

if (!isUndefined(this._isDSTShifted)) {
    return this._isDSTShifted;
}

var c = {};

copyConfig(c, this);
c = prepareConfig(c);

if (c._a) {
    var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
    this._isDSTShifted = this.isValid() &&
        compareArrays(c._a, other.toArray()) > 0;
} else {
    this._isDSTShifted = false;
}

return this._isDSTShifted;

}

function isLocal () {

return this.isValid() ? !this._isUTC : false;

}

function isUtcOffset () {

return this.isValid() ? this._isUTC : false;

}

function isUtc () {

return this.isValid() ? this._isUTC && this._offset === 0 : false;

}

// ASP.NET json date format regex var aspNetRegex = /^(-|+)?(?:(d*)[. ])?(d+):(d+)(?::(d+)(.d*)?)?$/;

// from docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere // and further modified to allow for strings containing both week and day var isoRegex = /^(-|+)?P(?:(?[0-9,.]*)Y)?(?:(?[0-9,.]*)M)?(?:(?[0-9,.]*)W)?(?:(?[0-9,.]*)D)?(?:T(?:(?[0-9,.]*)H)?(?:(?[0-9,.]*)M)?(?:(?[0-9,.]*)S)?)?$/;

function createDuration (input, key) {

var duration = input,
    // matching against regexp is expensive, do it on demand
    match = null,
    sign,
    ret,
    diffRes;

if (isDuration(input)) {
    duration = {
        ms : input._milliseconds,
        d  : input._days,
        M  : input._months
    };
} else if (isNumber(input)) {
    duration = {};
    if (key) {
        duration[key] = input;
    } else {
        duration.milliseconds = input;
    }
} else if (!!(match = aspNetRegex.exec(input))) {
    sign = (match[1] === '-') ? -1 : 1;
    duration = {
        y  : 0,
        d  : toInt(match[DATE])                         * sign,
        h  : toInt(match[HOUR])                         * sign,
        m  : toInt(match[MINUTE])                       * sign,
        s  : toInt(match[SECOND])                       * sign,
        ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match
    };
} else if (!!(match = isoRegex.exec(input))) {
    sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;
    duration = {
        y : parseIso(match[2], sign),
        M : parseIso(match[3], sign),
        w : parseIso(match[4], sign),
        d : parseIso(match[5], sign),
        h : parseIso(match[6], sign),
        m : parseIso(match[7], sign),
        s : parseIso(match[8], sign)
    };
} else if (duration == null) {// checks for null or undefined
    duration = {};
} else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
    diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));

    duration = {};
    duration.ms = diffRes.milliseconds;
    duration.M = diffRes.months;
}

ret = new Duration(duration);

if (isDuration(input) && hasOwnProp(input, '_locale')) {
    ret._locale = input._locale;
}

return ret;

}

createDuration.fn = Duration.prototype; createDuration.invalid = createInvalid$1;

function parseIso (inp, sign) {

// We'd normally use ~~inp for this, but unfortunately it also
// converts floats to ints.
// inp may be undefined, so careful calling replace on it.
var res = inp && parseFloat(inp.replace(',', '.'));
// apply sign while we're at it
return (isNaN(res) ? 0 : res) * sign;

}

function positiveMomentsDifference(base, other) {

var res = {milliseconds: 0, months: 0};

res.months = other.month() - base.month() +
    (other.year() - base.year()) * 12;
if (base.clone().add(res.months, 'M').isAfter(other)) {
    --res.months;
}

res.milliseconds = +other - +(base.clone().add(res.months, 'M'));

return res;

}

function momentsDifference(base, other) {

var res;
if (!(base.isValid() && other.isValid())) {
    return {milliseconds: 0, months: 0};
}

other = cloneWithOffset(other, base);
if (base.isBefore(other)) {
    res = positiveMomentsDifference(base, other);
} else {
    res = positiveMomentsDifference(other, base);
    res.milliseconds = -res.milliseconds;
    res.months = -res.months;
}

return res;

}

// TODO: remove 'name' arg after deprecation is removed function createAdder(direction, name) {

return function (val, period) {
    var dur, tmp;
    //invert the arguments, but complain about it
    if (period !== null && !isNaN(+period)) {
        deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +
        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');
        tmp = val; val = period; period = tmp;
    }

    val = typeof val === 'string' ? +val : val;
    dur = createDuration(val, period);
    addSubtract(this, dur, direction);
    return this;
};

}

function addSubtract (mom, duration, isAdding, updateOffset) {

var milliseconds = duration._milliseconds,
    days = absRound(duration._days),
    months = absRound(duration._months);

if (!mom.isValid()) {
    // No op
    return;
}

updateOffset = updateOffset == null ? true : updateOffset;

if (months) {
    setMonth(mom, get(mom, 'Month') + months * isAdding);
}
if (days) {
    set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
}
if (milliseconds) {
    mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
}
if (updateOffset) {
    hooks.updateOffset(mom, days || months);
}

}

var add = createAdder(1, 'add'); var subtract = createAdder(-1, 'subtract');

function getCalendarFormat(myMoment, now) {

var diff = myMoment.diff(now, 'days', true);
return diff < -6 ? 'sameElse' :
        diff < -1 ? 'lastWeek' :
        diff < 0 ? 'lastDay' :
        diff < 1 ? 'sameDay' :
        diff < 2 ? 'nextDay' :
        diff < 7 ? 'nextWeek' : 'sameElse';

}

function calendar$1 (time, formats) {

// We want to compare the start of today, vs this.
// Getting start-of-today depends on whether we're local/utc/offset or not.
var now = time || createLocal(),
    sod = cloneWithOffset(now, this).startOf('day'),
    format = hooks.calendarFormat(this, sod) || 'sameElse';

var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);

return this.format(output || this.localeData().calendar(format, this, createLocal(now)));

}

function clone () {

return new Moment(this);

}

function isAfter (input, units) {

var localInput = isMoment(input) ? input : createLocal(input);
if (!(this.isValid() && localInput.isValid())) {
    return false;
}
units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
if (units === 'millisecond') {
    return this.valueOf() > localInput.valueOf();
} else {
    return localInput.valueOf() < this.clone().startOf(units).valueOf();
}

}

function isBefore (input, units) {

var localInput = isMoment(input) ? input : createLocal(input);
if (!(this.isValid() && localInput.isValid())) {
    return false;
}
units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
if (units === 'millisecond') {
    return this.valueOf() < localInput.valueOf();
} else {
    return this.clone().endOf(units).valueOf() < localInput.valueOf();
}

}

function isBetween (from, to, units, inclusivity) {

inclusivity = inclusivity || '()';
return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&
    (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));

}

function isSame (input, units) {

var localInput = isMoment(input) ? input : createLocal(input),
    inputMs;
if (!(this.isValid() && localInput.isValid())) {
    return false;
}
units = normalizeUnits(units || 'millisecond');
if (units === 'millisecond') {
    return this.valueOf() === localInput.valueOf();
} else {
    inputMs = localInput.valueOf();
    return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
}

}

function isSameOrAfter (input, units) {

return this.isSame(input, units) || this.isAfter(input,units);

}

function isSameOrBefore (input, units) {

return this.isSame(input, units) || this.isBefore(input,units);

}

function diff (input, units, asFloat) {

var that,
    zoneDelta,
    output;

if (!this.isValid()) {
    return NaN;
}

that = cloneWithOffset(input, this);

if (!that.isValid()) {
    return NaN;
}

zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;

units = normalizeUnits(units);

switch (units) {
    case 'year': output = monthDiff(this, that) / 12; break;
    case 'month': output = monthDiff(this, that); break;
    case 'quarter': output = monthDiff(this, that) / 3; break;
    case 'second': output = (this - that) / 1e3; break; // 1000
    case 'minute': output = (this - that) / 6e4; break; // 1000 * 60
    case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60
    case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst
    case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst
    default: output = this - that;
}

return asFloat ? output : absFloor(output);

}

function monthDiff (a, b) {

// difference in months
var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
    // b is in (anchor - 1 month, anchor + 1 month)
    anchor = a.clone().add(wholeMonthDiff, 'months'),
    anchor2, adjust;

if (b - anchor < 0) {
    anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
    // linear across the month
    adjust = (b - anchor) / (anchor - anchor2);
} else {
    anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
    // linear across the month
    adjust = (b - anchor) / (anchor2 - anchor);
}

//check for negative zero, return zero if negative zero
return -(wholeMonthDiff + adjust) || 0;

}

hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss';

function toString () {

return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');

}

function toISOString(keepOffset) {

if (!this.isValid()) {
    return null;
}
var utc = keepOffset !== true;
var m = utc ? this.clone().utc() : this;
if (m.year() < 0 || m.year() > 9999) {
    return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');
}
if (isFunction(Date.prototype.toISOString)) {
    // native implementation is ~50x faster, use it when we can
    if (utc) {
        return this.toDate().toISOString();
    } else {
        return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));
    }
}
return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');

}

/**

* Return a human readable representation of a moment that can
* also be evaluated to get a new moment which is the same
*
* @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
*/

function inspect () {

if (!this.isValid()) {
    return 'moment.invalid(/* ' + this._i + ' */)';
}
var func = 'moment';
var zone = '';
if (!this.isLocal()) {
    func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
    zone = 'Z';
}
var prefix = '[' + func + '("]';
var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
var datetime = '-MM-DD[T]HH:mm:ss.SSS';
var suffix = zone + '[")]';

return this.format(prefix + year + datetime + suffix);

}

function format (inputString) {

if (!inputString) {
    inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
}
var output = formatMoment(this, inputString);
return this.localeData().postformat(output);

}

function from (time, withoutSuffix) {

if (this.isValid() &&
        ((isMoment(time) && time.isValid()) ||
         createLocal(time).isValid())) {
    return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
} else {
    return this.localeData().invalidDate();
}

}

function fromNow (withoutSuffix) {

return this.from(createLocal(), withoutSuffix);

}

function to (time, withoutSuffix) {

if (this.isValid() &&
        ((isMoment(time) && time.isValid()) ||
         createLocal(time).isValid())) {
    return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
} else {
    return this.localeData().invalidDate();
}

}

function toNow (withoutSuffix) {

return this.to(createLocal(), withoutSuffix);

}

// If passed a locale key, it will set the locale for this // instance. Otherwise, it will return the locale configuration // variables for this instance. function locale (key) {

var newLocaleData;

if (key === undefined) {
    return this._locale._abbr;
} else {
    newLocaleData = getLocale(key);
    if (newLocaleData != null) {
        this._locale = newLocaleData;
    }
    return this;
}

}

var lang = deprecate(

'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
function (key) {
    if (key === undefined) {
        return this.localeData();
    } else {
        return this.locale(key);
    }
}

);

function localeData () {

return this._locale;

}

function startOf (units) {

units = normalizeUnits(units);
// the following switch intentionally omits break keywords
// to utilize falling through the cases.
switch (units) {
    case 'year':
        this.month(0);
        /* falls through */
    case 'quarter':
    case 'month':
        this.date(1);
        /* falls through */
    case 'week':
    case 'isoWeek':
    case 'day':
    case 'date':
        this.hours(0);
        /* falls through */
    case 'hour':
        this.minutes(0);
        /* falls through */
    case 'minute':
        this.seconds(0);
        /* falls through */
    case 'second':
        this.milliseconds(0);
}

// weeks are a special case
if (units === 'week') {
    this.weekday(0);
}
if (units === 'isoWeek') {
    this.isoWeekday(1);
}

// quarters are also special
if (units === 'quarter') {
    this.month(Math.floor(this.month() / 3) * 3);
}

return this;

}

function endOf (units) {

units = normalizeUnits(units);
if (units === undefined || units === 'millisecond') {
    return this;
}

// 'date' is an alias for 'day', so it should be considered as such.
if (units === 'date') {
    units = 'day';
}

return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');

}

function valueOf () {

return this._d.valueOf() - ((this._offset || 0) * 60000);

}

function unix () {

return Math.floor(this.valueOf() / 1000);

}

function toDate () {

return new Date(this.valueOf());

}

function toArray () {

var m = this;
return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];

}

function toObject () {

var m = this;
return {
    years: m.year(),
    months: m.month(),
    date: m.date(),
    hours: m.hours(),
    minutes: m.minutes(),
    seconds: m.seconds(),
    milliseconds: m.milliseconds()
};

}

function toJSON () {

// new Date(NaN).toJSON() === null
return this.isValid() ? this.toISOString() : null;

}

function isValid$2 () {

return isValid(this);

}

function parsingFlags () {

return extend({}, getParsingFlags(this));

}

function invalidAt () {

return getParsingFlags(this).overflow;

}

function creationData() {

return {
    input: this._i,
    format: this._f,
    locale: this._locale,
    isUTC: this._isUTC,
    strict: this._strict
};

}

// FORMATTING

addFormatToken(0, ['gg', 2], 0, function () {

return this.weekYear() % 100;

});

addFormatToken(0, ['GG', 2], 0, function () {

return this.isoWeekYear() % 100;

});

function addWeekYearFormatToken (token, getter) {

addFormatToken(0, [token, token.length], 0, getter);

}

addWeekYearFormatToken('gggg', 'weekYear'); addWeekYearFormatToken('ggggg', 'weekYear'); addWeekYearFormatToken('GGGG', 'isoWeekYear'); addWeekYearFormatToken('GGGGG', 'isoWeekYear');

// ALIASES

addUnitAlias('weekYear', 'gg'); addUnitAlias('isoWeekYear', 'GG');

// PRIORITY

addUnitPriority('weekYear', 1); addUnitPriority('isoWeekYear', 1);

// PARSING

addRegexToken('G', matchSigned); addRegexToken('g', matchSigned); addRegexToken('GG', match1to2, match2); addRegexToken('gg', match1to2, match2); addRegexToken('GGGG', match1to4, match4); addRegexToken('gggg', match1to4, match4); addRegexToken('GGGGG', match1to6, match6); addRegexToken('ggggg', match1to6, match6);

addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {

week[token.substr(0, 2)] = toInt(input);

});

addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {

week[token] = hooks.parseTwoDigitYear(input);

});

// MOMENTS

function getSetWeekYear (input) {

return getSetWeekYearHelper.call(this,
        input,
        this.week(),
        this.weekday(),
        this.localeData()._week.dow,
        this.localeData()._week.doy);

}

function getSetISOWeekYear (input) {

return getSetWeekYearHelper.call(this,
        input, this.isoWeek(), this.isoWeekday(), 1, 4);

}

function getISOWeeksInYear () {

return weeksInYear(this.year(), 1, 4);

}

function getWeeksInYear () {

var weekInfo = this.localeData()._week;
return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);

}

function getSetWeekYearHelper(input, week, weekday, dow, doy) {

var weeksTarget;
if (input == null) {
    return weekOfYear(this, dow, doy).year;
} else {
    weeksTarget = weeksInYear(input, dow, doy);
    if (week > weeksTarget) {
        week = weeksTarget;
    }
    return setWeekAll.call(this, input, week, weekday, dow, doy);
}

}

function setWeekAll(weekYear, week, weekday, dow, doy) {

var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
    date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);

this.year(date.getUTCFullYear());
this.month(date.getUTCMonth());
this.date(date.getUTCDate());
return this;

}

// FORMATTING

addFormatToken('Q', 0, 'Qo', 'quarter');

// ALIASES

addUnitAlias('quarter', 'Q');

// PRIORITY

addUnitPriority('quarter', 7);

// PARSING

addRegexToken('Q', match1); addParseToken('Q', function (input, array) {

array[MONTH] = (toInt(input) - 1) * 3;

});

// MOMENTS

function getSetQuarter (input) {

return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);

}

// FORMATTING

addFormatToken('D', ['DD', 2], 'Do', 'date');

// ALIASES

addUnitAlias('date', 'D');

// PRIOROITY addUnitPriority('date', 9);

// PARSING

addRegexToken('D', match1to2); addRegexToken('DD', match1to2, match2); addRegexToken('Do', function (isStrict, locale) {

// TODO: Remove "ordinalParse" fallback in next major release.
return isStrict ?
  (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :
  locale._dayOfMonthOrdinalParseLenient;

});

addParseToken(['D', 'DD'], DATE); addParseToken('Do', function (input, array) {

array[DATE] = toInt(input.match(match1to2)[0]);

});

// MOMENTS

var getSetDayOfMonth = makeGetSet('Date', true);

// FORMATTING

addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');

// ALIASES

addUnitAlias('dayOfYear', 'DDD');

// PRIORITY addUnitPriority('dayOfYear', 4);

// PARSING

addRegexToken('DDD', match1to3); addRegexToken('DDDD', match3); addParseToken(['DDD', 'DDDD'], function (input, array, config) {

config._dayOfYear = toInt(input);

});

// HELPERS

// MOMENTS

function getSetDayOfYear (input) {

var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');

}

// FORMATTING

addFormatToken('m', ['mm', 2], 0, 'minute');

// ALIASES

addUnitAlias('minute', 'm');

// PRIORITY

addUnitPriority('minute', 14);

// PARSING

addRegexToken('m', match1to2); addRegexToken('mm', match1to2, match2); addParseToken(['m', 'mm'], MINUTE);

// MOMENTS

var getSetMinute = makeGetSet('Minutes', false);

// FORMATTING

addFormatToken('s', ['ss', 2], 0, 'second');

// ALIASES

addUnitAlias('second', 's');

// PRIORITY

addUnitPriority('second', 15);

// PARSING

addRegexToken('s', match1to2); addRegexToken('ss', match1to2, match2); addParseToken(['s', 'ss'], SECOND);

// MOMENTS

var getSetSecond = makeGetSet('Seconds', false);

// FORMATTING

addFormatToken('S', 0, 0, function () {

return ~~(this.millisecond() / 100);

});

addFormatToken(0, ['SS', 2], 0, function () {

return ~~(this.millisecond() / 10);

});

addFormatToken(0, ['SSS', 3], 0, 'millisecond'); addFormatToken(0, ['SSSS', 4], 0, function () {

return this.millisecond() * 10;

}); addFormatToken(0, ['SSSSS', 5], 0, function () {

return this.millisecond() * 100;

}); addFormatToken(0, ['SSSSSS', 6], 0, function () {

return this.millisecond() * 1000;

}); addFormatToken(0, ['SSSSSSS', 7], 0, function () {

return this.millisecond() * 10000;

}); addFormatToken(0, ['SSSSSSSS', 8], 0, function () {

return this.millisecond() * 100000;

}); addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {

return this.millisecond() * 1000000;

});

// ALIASES

addUnitAlias('millisecond', 'ms');

// PRIORITY

addUnitPriority('millisecond', 16);

// PARSING

addRegexToken('S', match1to3, match1); addRegexToken('SS', match1to3, match2); addRegexToken('SSS', match1to3, match3);

var token; for (token = 'SSSS'; token.length <= 9; token += 'S') {

addRegexToken(token, matchUnsigned);

}

function parseMs(input, array) {

array[MILLISECOND] = toInt(('0.' + input) * 1000);

}

for (token = 'S'; token.length <= 9; token += 'S') {

addParseToken(token, parseMs);

} // MOMENTS

var getSetMillisecond = makeGetSet('Milliseconds', false);

// FORMATTING

addFormatToken('z', 0, 0, 'zoneAbbr'); addFormatToken('zz', 0, 0, 'zoneName');

// MOMENTS

function getZoneAbbr () {

return this._isUTC ? 'UTC' : '';

}

function getZoneName () {

return this._isUTC ? 'Coordinated Universal Time' : '';

}

var proto = Moment.prototype;

proto.add = add; proto.calendar = calendar$1; proto.clone = clone; proto.diff = diff; proto.endOf = endOf; proto.format = format; proto.from = from; proto.fromNow = fromNow; proto.to = to; proto.toNow = toNow; proto.get = stringGet; proto.invalidAt = invalidAt; proto.isAfter = isAfter; proto.isBefore = isBefore; proto.isBetween = isBetween; proto.isSame = isSame; proto.isSameOrAfter = isSameOrAfter; proto.isSameOrBefore = isSameOrBefore; proto.isValid = isValid$2; proto.lang = lang; proto.locale = locale; proto.localeData = localeData; proto.max = prototypeMax; proto.min = prototypeMin; proto.parsingFlags = parsingFlags; proto.set = stringSet; proto.startOf = startOf; proto.subtract = subtract; proto.toArray = toArray; proto.toObject = toObject; proto.toDate = toDate; proto.toISOString = toISOString; proto.inspect = inspect; proto.toJSON = toJSON; proto.toString = toString; proto.unix = unix; proto.valueOf = valueOf; proto.creationData = creationData; proto.year = getSetYear; proto.isLeapYear = getIsLeapYear; proto.weekYear = getSetWeekYear; proto.isoWeekYear = getSetISOWeekYear; proto.quarter = proto.quarters = getSetQuarter; proto.month = getSetMonth; proto.daysInMonth = getDaysInMonth; proto.week = proto.weeks = getSetWeek; proto.isoWeek = proto.isoWeeks = getSetISOWeek; proto.weeksInYear = getWeeksInYear; proto.isoWeeksInYear = getISOWeeksInYear; proto.date = getSetDayOfMonth; proto.day = proto.days = getSetDayOfWeek; proto.weekday = getSetLocaleDayOfWeek; proto.isoWeekday = getSetISODayOfWeek; proto.dayOfYear = getSetDayOfYear; proto.hour = proto.hours = getSetHour; proto.minute = proto.minutes = getSetMinute; proto.second = proto.seconds = getSetSecond; proto.millisecond = proto.milliseconds = getSetMillisecond; proto.utcOffset = getSetOffset; proto.utc = setOffsetToUTC; proto.local = setOffsetToLocal; proto.parseZone = setOffsetToParsedOffset; proto.hasAlignedHourOffset = hasAlignedHourOffset; proto.isDST = isDaylightSavingTime; proto.isLocal = isLocal; proto.isUtcOffset = isUtcOffset; proto.isUtc = isUtc; proto.isUTC = isUtc; proto.zoneAbbr = getZoneAbbr; proto.zoneName = getZoneName; proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. momentjs.com/guides/#/warnings/zone/', getSetZone); proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);

function createUnix (input) {

return createLocal(input * 1000);

}

function createInZone () {

return createLocal.apply(null, arguments).parseZone();

}

function preParsePostFormat (string) {

return string;

}

var proto$1 = Locale.prototype;

proto$1.calendar = calendar; proto$1.longDateFormat = longDateFormat; proto$1.invalidDate = invalidDate; proto$1.ordinal = ordinal; proto$1.preparse = preParsePostFormat; proto$1.postformat = preParsePostFormat; proto$1.relativeTime = relativeTime; proto$1.pastFuture = pastFuture; proto$1.set = set;

proto$1.months = localeMonths; proto$1.monthsShort = localeMonthsShort; proto$1.monthsParse = localeMonthsParse; proto$1.monthsRegex = monthsRegex; proto$1.monthsShortRegex = monthsShortRegex; proto$1.week = localeWeek; proto$1.firstDayOfYear = localeFirstDayOfYear; proto$1.firstDayOfWeek = localeFirstDayOfWeek;

proto$1.weekdays = localeWeekdays; proto$1.weekdaysMin = localeWeekdaysMin; proto$1.weekdaysShort = localeWeekdaysShort; proto$1.weekdaysParse = localeWeekdaysParse;

proto$1.weekdaysRegex = weekdaysRegex; proto$1.weekdaysShortRegex = weekdaysShortRegex; proto$1.weekdaysMinRegex = weekdaysMinRegex;

proto$1.isPM = localeIsPM; proto$1.meridiem = localeMeridiem;

function get$1 (format, index, field, setter) {

var locale = getLocale();
var utc = createUTC().set(setter, index);
return locale[field](utc, format);

}

function listMonthsImpl (format, index, field) {

if (isNumber(format)) {
    index = format;
    format = undefined;
}

format = format || '';

if (index != null) {
    return get$1(format, index, field, 'month');
}

var i;
var out = [];
for (i = 0; i < 12; i++) {
    out[i] = get$1(format, i, field, 'month');
}
return out;

}

// () // (5) // (fmt, 5) // (fmt) // (true) // (true, 5) // (true, fmt, 5) // (true, fmt) function listWeekdaysImpl (localeSorted, format, index, field) {

if (typeof localeSorted === 'boolean') {
    if (isNumber(format)) {
        index = format;
        format = undefined;
    }

    format = format || '';
} else {
    format = localeSorted;
    index = format;
    localeSorted = false;

    if (isNumber(format)) {
        index = format;
        format = undefined;
    }

    format = format || '';
}

var locale = getLocale(),
    shift = localeSorted ? locale._week.dow : 0;

if (index != null) {
    return get$1(format, (index + shift) % 7, field, 'day');
}

var i;
var out = [];
for (i = 0; i < 7; i++) {
    out[i] = get$1(format, (i + shift) % 7, field, 'day');
}
return out;

}

function listMonths (format, index) {

return listMonthsImpl(format, index, 'months');

}

function listMonthsShort (format, index) {

return listMonthsImpl(format, index, 'monthsShort');

}

function listWeekdays (localeSorted, format, index) {

return listWeekdaysImpl(localeSorted, format, index, 'weekdays');

}

function listWeekdaysShort (localeSorted, format, index) {

return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');

}

function listWeekdaysMin (localeSorted, format, index) {

return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');

}

getSetGlobalLocale('en', {

dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
ordinal : function (number) {
    var b = number % 10,
        output = (toInt(number % 100 / 10) === 1) ? 'th' :
        (b === 1) ? 'st' :
        (b === 2) ? 'nd' :
        (b === 3) ? 'rd' : 'th';
    return number + output;
}

});

// Side effect imports

hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);

var mathAbs = Math.abs;

function abs () {

var data           = this._data;

this._milliseconds = mathAbs(this._milliseconds);
this._days         = mathAbs(this._days);
this._months       = mathAbs(this._months);

data.milliseconds  = mathAbs(data.milliseconds);
data.seconds       = mathAbs(data.seconds);
data.minutes       = mathAbs(data.minutes);
data.hours         = mathAbs(data.hours);
data.months        = mathAbs(data.months);
data.years         = mathAbs(data.years);

return this;

}

function addSubtract$1 (duration, input, value, direction) {

var other = createDuration(input, value);

duration._milliseconds += direction * other._milliseconds;
duration._days         += direction * other._days;
duration._months       += direction * other._months;

return duration._bubble();

}

// supports only 2.0-style add(1, 's') or add(duration) function add$1 (input, value) {

return addSubtract$1(this, input, value, 1);

}

// supports only 2.0-style subtract(1, 's') or subtract(duration) function subtract$1 (input, value) {

return addSubtract$1(this, input, value, -1);

}

function absCeil (number) {

if (number < 0) {
    return Math.floor(number);
} else {
    return Math.ceil(number);
}

}

function bubble () {

var milliseconds = this._milliseconds;
var days         = this._days;
var months       = this._months;
var data         = this._data;
var seconds, minutes, hours, years, monthsFromDays;

// if we have a mix of positive and negative values, bubble down first
// check: https://github.com/moment/moment/issues/2166
if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
        (milliseconds <= 0 && days <= 0 && months <= 0))) {
    milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
    days = 0;
    months = 0;
}

// The following code bubbles up values, see the tests for
// examples of what that means.
data.milliseconds = milliseconds % 1000;

seconds           = absFloor(milliseconds / 1000);
data.seconds      = seconds % 60;

minutes           = absFloor(seconds / 60);
data.minutes      = minutes % 60;

hours             = absFloor(minutes / 60);
data.hours        = hours % 24;

days += absFloor(hours / 24);

// convert days to months
monthsFromDays = absFloor(daysToMonths(days));
months += monthsFromDays;
days -= absCeil(monthsToDays(monthsFromDays));

// 12 months -> 1 year
years = absFloor(months / 12);
months %= 12;

data.days   = days;
data.months = months;
data.years  = years;

return this;

}

function daysToMonths (days) {

// 400 years have 146097 days (taking into account leap year rules)
// 400 years have 12 months === 4800
return days * 4800 / 146097;

}

function monthsToDays (months) {

// the reverse of daysToMonths
return months * 146097 / 4800;

}

function as (units) {

if (!this.isValid()) {
    return NaN;
}
var days;
var months;
var milliseconds = this._milliseconds;

units = normalizeUnits(units);

if (units === 'month' || units === 'year') {
    days   = this._days   + milliseconds / 864e5;
    months = this._months + daysToMonths(days);
    return units === 'month' ? months : months / 12;
} else {
    // handle milliseconds separately because of floating point math errors (issue #1867)
    days = this._days + Math.round(monthsToDays(this._months));
    switch (units) {
        case 'week'   : return days / 7     + milliseconds / 6048e5;
        case 'day'    : return days         + milliseconds / 864e5;
        case 'hour'   : return days * 24    + milliseconds / 36e5;
        case 'minute' : return days * 1440  + milliseconds / 6e4;
        case 'second' : return days * 86400 + milliseconds / 1000;
        // Math.floor prevents floating point math errors here
        case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
        default: throw new Error('Unknown unit ' + units);
    }
}

}

// TODO: Use this.as('ms')? function valueOf$1 () {

if (!this.isValid()) {
    return NaN;
}
return (
    this._milliseconds +
    this._days * 864e5 +
    (this._months % 12) * 2592e6 +
    toInt(this._months / 12) * 31536e6
);

}

function makeAs (alias) {

return function () {
    return this.as(alias);
};

}

var asMilliseconds = makeAs('ms'); var asSeconds = makeAs('s'); var asMinutes = makeAs('m'); var asHours = makeAs('h'); var asDays = makeAs('d'); var asWeeks = makeAs('w'); var asMonths = makeAs('M'); var asYears = makeAs('y');

function clone$1 () {

return createDuration(this);

}

function get$2 (units) {

units = normalizeUnits(units);
return this.isValid() ? this[units + 's']() : NaN;

}

function makeGetter(name) {

return function () {
    return this.isValid() ? this._data[name] : NaN;
};

}

var milliseconds = makeGetter('milliseconds'); var seconds = makeGetter('seconds'); var minutes = makeGetter('minutes'); var hours = makeGetter('hours'); var days = makeGetter('days'); var months = makeGetter('months'); var years = makeGetter('years');

function weeks () {

return absFloor(this.days() / 7);

}

var round = Math.round; var thresholds = {

ss: 44,         // a few seconds to seconds
s : 45,         // seconds to minute
m : 45,         // minutes to hour
h : 22,         // hours to day
d : 26,         // days to month
M : 11          // months to year

};

// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {

return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);

}

function relativeTime$1 (posNegDuration, withoutSuffix, locale) {

var duration = createDuration(posNegDuration).abs();
var seconds  = round(duration.as('s'));
var minutes  = round(duration.as('m'));
var hours    = round(duration.as('h'));
var days     = round(duration.as('d'));
var months   = round(duration.as('M'));
var years    = round(duration.as('y'));

var a = seconds <= thresholds.ss && ['s', seconds]  ||
        seconds < thresholds.s   && ['ss', seconds] ||
        minutes <= 1             && ['m']           ||
        minutes < thresholds.m   && ['mm', minutes] ||
        hours   <= 1             && ['h']           ||
        hours   < thresholds.h   && ['hh', hours]   ||
        days    <= 1             && ['d']           ||
        days    < thresholds.d   && ['dd', days]    ||
        months  <= 1             && ['M']           ||
        months  < thresholds.M   && ['MM', months]  ||
        years   <= 1             && ['y']           || ['yy', years];

a[2] = withoutSuffix;
a[3] = +posNegDuration > 0;
a[4] = locale;
return substituteTimeAgo.apply(null, a);

}

// This function allows you to set the rounding function for relative time strings function getSetRelativeTimeRounding (roundingFunction) {

if (roundingFunction === undefined) {
    return round;
}
if (typeof(roundingFunction) === 'function') {
    round = roundingFunction;
    return true;
}
return false;

}

// This function allows you to set a threshold for relative time strings function getSetRelativeTimeThreshold (threshold, limit) {

if (thresholds[threshold] === undefined) {
    return false;
}
if (limit === undefined) {
    return thresholds[threshold];
}
thresholds[threshold] = limit;
if (threshold === 's') {
    thresholds.ss = limit - 1;
}
return true;

}

function humanize (withSuffix) {

if (!this.isValid()) {
    return this.localeData().invalidDate();
}

var locale = this.localeData();
var output = relativeTime$1(this, !withSuffix, locale);

if (withSuffix) {
    output = locale.pastFuture(+this, output);
}

return locale.postformat(output);

}

var abs$1 = Math.abs;

function sign(x) {

return ((x > 0) - (x < 0)) || +x;

}

function toISOString$1() {

// for ISO strings we do not use the normal bubbling rules:
//  * milliseconds bubble up until they become hours
//  * days do not bubble at all
//  * months bubble up until they become years
// This is because there is no context-free conversion between hours and days
// (think of clock changes)
// and also not between days and months (28-31 days per month)
if (!this.isValid()) {
    return this.localeData().invalidDate();
}

var seconds = abs$1(this._milliseconds) / 1000;
var days         = abs$1(this._days);
var months       = abs$1(this._months);
var minutes, hours, years;

// 3600 seconds -> 60 minutes -> 1 hour
minutes           = absFloor(seconds / 60);
hours             = absFloor(minutes / 60);
seconds %= 60;
minutes %= 60;

// 12 months -> 1 year
years  = absFloor(months / 12);
months %= 12;

// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
var Y = years;
var M = months;
var D = days;
var h = hours;
var m = minutes;
var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
var total = this.asSeconds();

if (!total) {
    // this is the same as C#'s (Noda) and python (isodate)...
    // but not other JS (goog.date)
    return 'P0D';
}

var totalSign = total < 0 ? '-' : '';
var ymSign = sign(this._months) !== sign(total) ? '-' : '';
var daysSign = sign(this._days) !== sign(total) ? '-' : '';
var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';

return totalSign + 'P' +
    (Y ? ymSign + Y + 'Y' : '') +
    (M ? ymSign + M + 'M' : '') +
    (D ? daysSign + D + 'D' : '') +
    ((h || m || s) ? 'T' : '') +
    (h ? hmsSign + h + 'H' : '') +
    (m ? hmsSign + m + 'M' : '') +
    (s ? hmsSign + s + 'S' : '');

}

var proto$2 = Duration.prototype;

proto$2.isValid = isValid$1; proto$2.abs = abs; proto$2.add = add$1; proto$2.subtract = subtract$1; proto$2.as = as; proto$2.asMilliseconds = asMilliseconds; proto$2.asSeconds = asSeconds; proto$2.asMinutes = asMinutes; proto$2.asHours = asHours; proto$2.asDays = asDays; proto$2.asWeeks = asWeeks; proto$2.asMonths = asMonths; proto$2.asYears = asYears; proto$2.valueOf = valueOf$1; proto$2._bubble = bubble; proto$2.clone = clone$1; proto$2.get = get$2; proto$2.milliseconds = milliseconds; proto$2.seconds = seconds; proto$2.minutes = minutes; proto$2.hours = hours; proto$2.days = days; proto$2.weeks = weeks; proto$2.months = months; proto$2.years = years; proto$2.humanize = humanize; proto$2.toISOString = toISOString$1; proto$2.toString = toISOString$1; proto$2.toJSON = toISOString$1; proto$2.locale = locale; proto$2.localeData = localeData;

proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); proto$2.lang = lang;

// Side effect imports

// FORMATTING

addFormatToken('X', 0, 0, 'unix'); addFormatToken('x', 0, 0, 'valueOf');

// PARSING

addRegexToken('x', matchSigned); addRegexToken('X', matchTimestamp); addParseToken('X', function (input, array, config) {

config._d = new Date(parseFloat(input, 10) * 1000);

}); addParseToken('x', function (input, array, config) {

config._d = new Date(toInt(input));

});

// Side effect imports

hooks.version = '2.21.0';

setHookCallback(createLocal);

hooks.fn = proto; hooks.min = min; hooks.max = max; hooks.now = now; hooks.utc = createUTC; hooks.unix = createUnix; hooks.months = listMonths; hooks.isDate = isDate; hooks.locale = getSetGlobalLocale; hooks.invalid = createInvalid; hooks.duration = createDuration; hooks.isMoment = isMoment; hooks.weekdays = listWeekdays; hooks.parseZone = createInZone; hooks.localeData = getLocale; hooks.isDuration = isDuration; hooks.monthsShort = listMonthsShort; hooks.weekdaysMin = listWeekdaysMin; hooks.defineLocale = defineLocale; hooks.updateLocale = updateLocale; hooks.locales = listLocales; hooks.weekdaysShort = listWeekdaysShort; hooks.normalizeUnits = normalizeUnits; hooks.relativeTimeRounding = getSetRelativeTimeRounding; hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; hooks.calendarFormat = getCalendarFormat; hooks.prototype = proto;

// currently HTML5 input type only supports 24-hour formats hooks.HTML5_FMT = {

DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',             // <input type="datetime-local" />
DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',  // <input type="datetime-local" step="1" />
DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',   // <input type="datetime-local" step="0.001" />
DATE: 'YYYY-MM-DD',                             // <input type="date" />
TIME: 'HH:mm',                                  // <input type="time" />
TIME_SECONDS: 'HH:mm:ss',                       // <input type="time" step="1" />
TIME_MS: 'HH:mm:ss.SSS',                        // <input type="time" step="0.001" />
WEEK: 'YYYY-[W]WW',                             // <input type="week" />
MONTH: 'YYYY-MM'                                // <input type="month" />

};

return hooks;

})));

/* WEBPACK VAR INJECTION */}.call(this, webpack_require(/*! ./../webpack/buildin/module.js */ “./node_modules/webpack/buildin/module.js”)(module)))

/***/ }),

/***/ “./node_modules/node-libs-browser/mock/empty.js”: /*!******************************************************!*\

!*** ./node_modules/node-libs-browser/mock/empty.js ***!
\******************************************************/

/*! no static exports found */ /***/ (function(module, exports) {

/***/ }),

/***/ “./node_modules/path-browserify/index.js”: /*!***********************************************!*\

!*** ./node_modules/path-browserify/index.js ***!
\***********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the // “Software”), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to permit // persons to whom the Software is furnished to do so, subject to the // following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE.

// resolves . and .. elements in a path array with directory names there // must be no slashes, empty elements, or device names (c:) in the array // (so also no leading and trailing slashes - it does not distinguish // relative and absolute paths) function normalizeArray(parts, allowAboveRoot) {

// if the path tries to go above the root, `up` ends up > 0
var up = 0;
for (var i = parts.length - 1; i >= 0; i--) {
  var last = parts[i];
  if (last === '.') {
    parts.splice(i, 1);
  } else if (last === '..') {
    parts.splice(i, 1);
    up++;
  } else if (up) {
    parts.splice(i, 1);
    up--;
  }
}

// if the path is allowed to go above the root, restore leading ..s
if (allowAboveRoot) {
  for (; up--; up) {
    parts.unshift('..');
  }
}

return parts;

}

// Split a filename into [root, dir, basename, ext], unix version // 'root' is just a slash, or nothing. var splitPathRe =

/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;

var splitPath = function(filename) {

return splitPathRe.exec(filename).slice(1);

};

// path.resolve([from …], to) // posix version exports.resolve = function() {

var resolvedPath = '',
    resolvedAbsolute = false;

for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
  var path = (i >= 0) ? arguments[i] : process.cwd();

  // Skip empty and invalid entries
  if (typeof path !== 'string') {
    throw new TypeError('Arguments to path.resolve must be strings');
  } else if (!path) {
    continue;
  }

  resolvedPath = path + '/' + resolvedPath;
  resolvedAbsolute = path.charAt(0) === '/';
}

// At this point the path should be resolved to a full absolute path, but
// handle relative paths to be safe (might happen when process.cwd() fails)

// Normalize the path
resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
  return !!p;
}), !resolvedAbsolute).join('/');

return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';

};

// path.normalize(path) // posix version exports.normalize = function(path) {

var isAbsolute = exports.isAbsolute(path),
    trailingSlash = substr(path, -1) === '/';

// Normalize the path
path = normalizeArray(filter(path.split('/'), function(p) {
  return !!p;
}), !isAbsolute).join('/');

if (!path && !isAbsolute) {
  path = '.';
}
if (path && trailingSlash) {
  path += '/';
}

return (isAbsolute ? '/' : '') + path;

};

// posix version exports.isAbsolute = function(path) {

return path.charAt(0) === '/';

};

// posix version exports.join = function() {

var paths = Array.prototype.slice.call(arguments, 0);
return exports.normalize(filter(paths, function(p, index) {
  if (typeof p !== 'string') {
    throw new TypeError('Arguments to path.join must be strings');
  }
  return p;
}).join('/'));

};

// path.relative(from, to) // posix version exports.relative = function(from, to) {

from = exports.resolve(from).substr(1);
to = exports.resolve(to).substr(1);

function trim(arr) {
  var start = 0;
  for (; start < arr.length; start++) {
    if (arr[start] !== '') break;
  }

  var end = arr.length - 1;
  for (; end >= 0; end--) {
    if (arr[end] !== '') break;
  }

  if (start > end) return [];
  return arr.slice(start, end - start + 1);
}

var fromParts = trim(from.split('/'));
var toParts = trim(to.split('/'));

var length = Math.min(fromParts.length, toParts.length);
var samePartsLength = length;
for (var i = 0; i < length; i++) {
  if (fromParts[i] !== toParts[i]) {
    samePartsLength = i;
    break;
  }
}

var outputParts = [];
for (var i = samePartsLength; i < fromParts.length; i++) {
  outputParts.push('..');
}

outputParts = outputParts.concat(toParts.slice(samePartsLength));

return outputParts.join('/');

};

exports.sep = '/'; exports.delimiter = ':';

exports.dirname = function(path) {

var result = splitPath(path),
    root = result[0],
    dir = result[1];

if (!root && !dir) {
  // No dirname whatsoever
  return '.';
}

if (dir) {
  // It has a dirname, strip trailing slash
  dir = dir.substr(0, dir.length - 1);
}

return root + dir;

};

exports.basename = function(path, ext) {

var f = splitPath(path)[2];
// TODO: make this comparison case-insensitive on windows?
if (ext && f.substr(-1 * ext.length) === ext) {
  f = f.substr(0, f.length - ext.length);
}
return f;

};

exports.extname = function(path) {

return splitPath(path)[3];

};

function filter (xs, f) {

if (xs.filter) return xs.filter(f);
var res = [];
for (var i = 0; i < xs.length; i++) {
    if (f(xs[i], i, xs)) res.push(xs[i]);
}
return res;

}

// String.prototype.substr - negative index don't work in IE8 var substr = 'ab'.substr(-1) === 'b'

? function (str, start, len) { return str.substr(start, len) }
: function (str, start, len) {
    if (start < 0) start = str.length + start;
    return str.substr(start, len);
}

;

/* WEBPACK VAR INJECTION */}.call(this, webpack_require(/*! ./../process/browser.js */ “./node_modules/process/browser.js”)))

/***/ }),

/***/ “./node_modules/process/browser.js”: /*!*****************************************!*\

!*** ./node_modules/process/browser.js ***!
\*****************************************/

/*! no static exports found */ /***/ (function(module, exports) {

// shim for using process in browser var process = module.exports = {};

// cached from whatever global is present so that test runners that stub it // don't break things. But we need to wrap it in a try catch in case it is // wrapped in strict mode code which doesn't define any globals. It's inside a // function because try/catches deoptimize in certain engines.

var cachedSetTimeout; var cachedClearTimeout;

function defaultSetTimout() {

throw new Error('setTimeout has not been defined');

} function defaultClearTimeout () {

throw new Error('clearTimeout has not been defined');

} (function () {

try {
    if (typeof setTimeout === 'function') {
        cachedSetTimeout = setTimeout;
    } else {
        cachedSetTimeout = defaultSetTimout;
    }
} catch (e) {
    cachedSetTimeout = defaultSetTimout;
}
try {
    if (typeof clearTimeout === 'function') {
        cachedClearTimeout = clearTimeout;
    } else {
        cachedClearTimeout = defaultClearTimeout;
    }
} catch (e) {
    cachedClearTimeout = defaultClearTimeout;
}

} ()) function runTimeout(fun) {

if (cachedSetTimeout === setTimeout) {
    //normal enviroments in sane situations
    return setTimeout(fun, 0);
}
// if setTimeout wasn't available but was latter defined
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
    cachedSetTimeout = setTimeout;
    return setTimeout(fun, 0);
}
try {
    // when when somebody has screwed with setTimeout but no I.E. maddness
    return cachedSetTimeout(fun, 0);
} catch(e){
    try {
        // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
        return cachedSetTimeout.call(null, fun, 0);
    } catch(e){
        // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
        return cachedSetTimeout.call(this, fun, 0);
    }
}

} function runClearTimeout(marker) {

if (cachedClearTimeout === clearTimeout) {
    //normal enviroments in sane situations
    return clearTimeout(marker);
}
// if clearTimeout wasn't available but was latter defined
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
    cachedClearTimeout = clearTimeout;
    return clearTimeout(marker);
}
try {
    // when when somebody has screwed with setTimeout but no I.E. maddness
    return cachedClearTimeout(marker);
} catch (e){
    try {
        // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
        return cachedClearTimeout.call(null, marker);
    } catch (e){
        // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
        // Some versions of I.E. have different rules for clearTimeout vs setTimeout
        return cachedClearTimeout.call(this, marker);
    }
}

} var queue = []; var draining = false; var currentQueue; var queueIndex = -1;

function cleanUpNextTick() {

if (!draining || !currentQueue) {
    return;
}
draining = false;
if (currentQueue.length) {
    queue = currentQueue.concat(queue);
} else {
    queueIndex = -1;
}
if (queue.length) {
    drainQueue();
}

}

function drainQueue() {

if (draining) {
    return;
}
var timeout = runTimeout(cleanUpNextTick);
draining = true;

var len = queue.length;
while(len) {
    currentQueue = queue;
    queue = [];
    while (++queueIndex < len) {
        if (currentQueue) {
            currentQueue[queueIndex].run();
        }
    }
    queueIndex = -1;
    len = queue.length;
}
currentQueue = null;
draining = false;
runClearTimeout(timeout);

}

process.nextTick = function (fun) {

var args = new Array(arguments.length - 1);
if (arguments.length > 1) {
    for (var i = 1; i < arguments.length; i++) {
        args[i - 1] = arguments[i];
    }
}
queue.push(new Item(fun, args));
if (queue.length === 1 && !draining) {
    runTimeout(drainQueue);
}

};

// v8 likes predictible objects function Item(fun, array) {

this.fun = fun;
this.array = array;

} Item.prototype.run = function () {

this.fun.apply(null, this.array);

}; process.title = 'browser'; process.browser = true; process.env = {}; process.argv = []; process.version = ''; // empty string to avoid regexp issues process.versions = {};

function noop() {}

process.on = noop; process.addListener = noop; process.once = noop; process.off = noop; process.removeListener = noop; process.removeAllListeners = noop; process.emit = noop; process.prependListener = noop; process.prependOnceListener = noop;

process.listeners = function (name) { return [] }

process.binding = function (name) {

throw new Error('process.binding is not supported');

};

process.cwd = function () { return '/' }; process.chdir = function (dir) {

throw new Error('process.chdir is not supported');

}; process.umask = function() { return 0; };

/***/ }),

/***/ “./node_modules/scope-css/index.js”: /*!*****************************************!*\

!*** ./node_modules/scope-css/index.js ***!
\*****************************************/

/*! no static exports found */ /***/ (function(module, exports) {

module.exports = scope; scope.replace = replace;

function scope (css, parent) {

if (!css) return css;

if (!parent) return css;

css = replace(css, parent + ' $1$2');

//regexp.escape
var parentRe = parent.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');

//replace self-selectors
css = css.replace(new RegExp('(' + parentRe + ')\\s*\\1(?=[\\s\\r\\n,{])', 'g'), '$1');

//replace `:host` with parent
css = css.replace(new RegExp('(' + parentRe + ')\\s*:host', 'g'), '$1');

//revoke wrongly replaced @ statements, like @supports, @import, @media etc.
css = css.replace(new RegExp('(' + parentRe + ')\\s*@', 'g'), '@');

return css;

}

function replace (css, replacer) {

//strip block comments
css = css.replace(/\/\*([\s\S]*?)\*\//g, '');

return css.replace(/([^\r\n,{}]+)(,(?=[^}]*{)|\s*{)/g, replacer);

}

/***/ }),

/***/ “./node_modules/webpack/buildin/global.js”: /*!***********************************!*\

!*** (webpack)/buildin/global.js ***!
\***********************************/

/*! no static exports found */ /***/ (function(module, exports) {

var g;

// This works in non-strict mode g = (function() {

return this;

})();

try {

// This works if eval is allowed (see CSP)
g = g || Function("return this")() || (1, eval)("this");

} catch (e) {

// This works if the window reference is available
if (typeof window === "object") g = window;

}

// g can still be undefined, but nothing to do about it… // We return undefined, instead of nothing here, so it's // easier to handle this case. if(!global) { …}

module.exports = g;

/***/ }),

/***/ “./node_modules/webpack/buildin/module.js”: /*!***********************************!*\

!*** (webpack)/buildin/module.js ***!
\***********************************/

/*! no static exports found */ /***/ (function(module, exports) {

module.exports = function(module) {

if (!module.webpackPolyfill) {
        module.deprecate = function() {};
        module.paths = [];
        // module.parent = undefined by default
        if (!module.children) module.children = [];
        Object.defineProperty(module, "loaded", {
                enumerable: true,
                get: function() {
                        return module.l;
                }
        });
        Object.defineProperty(module, "id", {
                enumerable: true,
                get: function() {
                        return module.i;
                }
        });
        module.webpackPolyfill = 1;
}
return module;

};

/***/ }),

/***/ “./src/diagrams/class/classDb.js”: /*!***************************************!*\

!*** ./src/diagrams/class/classDb.js ***!
\***************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.relationType = exports.lineType = exports.cleanupLabel = exports.addMembers = exports.addRelation = exports.getRelations = exports.getClasses = exports.getClass = exports.clear = exports.addClass = undefined;

var _logger = webpack_require(/*! ../../logger */ “./src/logger.js”);

var relations = []; var classes = {};

/**

* Function called by parser when a node definition has been found.
* @param id
* @param text
* @param type
* @param style
*/

var addClass = exports.addClass = function addClass(id) {

if (typeof classes[id] === 'undefined') {
  classes[id] = {
    id: id,
    methods: [],
    members: []
  };
}

};

var clear = exports.clear = function clear() {

relations = [];
classes = {};

};

var getClass = exports.getClass = function getClass(id) {

return classes[id];

}; var getClasses = exports.getClasses = function getClasses() {

return classes;

};

var getRelations = exports.getRelations = function getRelations() {

return relations;

};

var addRelation = exports.addRelation = function addRelation(relation) {

_logger.logger.debug('Adding relation: ' + JSON.stringify(relation));
addClass(relation.id1);
addClass(relation.id2);
relations.push(relation);

};

var addMembers = exports.addMembers = function addMembers(className, MembersArr) {

var theClass = classes[className];
if (typeof MembersArr === 'string') {
  if (MembersArr.substr(-1) === ')') {
    theClass.methods.push(MembersArr);
  } else {
    theClass.members.push(MembersArr);
  }
}

};

var cleanupLabel = exports.cleanupLabel = function cleanupLabel(label) {

if (label.substring(0, 1) === ':') {
  return label.substr(2).trim();
} else {
  return label.trim();
}

};

var lineType = exports.lineType = {

LINE: 0,
DOTTED_LINE: 1

};

var relationType = exports.relationType = {

AGGREGATION: 0,
EXTENSION: 1,
COMPOSITION: 2,
DEPENDENCY: 3

};

exports.default = {

addClass: addClass,
clear: clear,
getClass: getClass,
getClasses: getClasses,
getRelations: getRelations,
addRelation: addRelation,
addMembers: addMembers,
cleanupLabel: cleanupLabel,
lineType: lineType,
relationType: relationType

};

/***/ }),

/***/ “./src/diagrams/class/classRenderer.js”: /*!*********************************************!*\

!*** ./src/diagrams/class/classRenderer.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.draw = exports.setConf = undefined;

var _dagreLayout = webpack_require(/*! dagre-layout */ “./node_modules/dagre-layout/dist/dagre-layout.core.js”);

var _dagreLayout2 = _interopRequireDefault(_dagreLayout);

var _graphlibrary = webpack_require(/*! graphlibrary */ “./node_modules/graphlibrary/index.js”);

var _graphlibrary2 = _interopRequireDefault(_graphlibrary);

var _d = webpack_require(/*! d3 */ “./node_modules/d3/index.js”);

var d3 = _interopRequireWildcard(_d);

var _classDb = webpack_require(/*! ./classDb */ “./src/diagrams/class/classDb.js”);

var _classDb2 = _interopRequireDefault(_classDb);

var _logger = webpack_require(/*! ../../logger */ “./src/logger.js”);

var _classDiagram = webpack_require(/*! ./parser/classDiagram */ “./src/diagrams/class/parser/classDiagram.js”);

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj = obj; } } newObj.default = obj; return newObj; } }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

_classDiagram.parser.yy = _classDb2.default;

var idCache = {};

var classCnt = 0; var conf = {

dividerMargin: 10,
padding: 5,
textHeight: 10

// Todo optimize

};var getGraphId = function getGraphId(label) {

var keys = Object.keys(idCache);

for (var i = 0; i < keys.length; i++) {
  if (idCache[keys[i]].label === label) {
    return keys[i];
  }
}

return undefined;

};

/**

* Setup arrow head and define the marker. The result is appended to the svg.
*/

var insertMarkers = function insertMarkers(elem) {

elem.append('defs').append('marker').attr('id', 'extensionStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 1,7 L18,13 V 1 Z');

elem.append('defs').append('marker').attr('id', 'extensionEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead

elem.append('defs').append('marker').attr('id', 'compositionStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');

elem.append('defs').append('marker').attr('id', 'compositionEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');

elem.append('defs').append('marker').attr('id', 'aggregationStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');

elem.append('defs').append('marker').attr('id', 'aggregationEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');

elem.append('defs').append('marker').attr('id', 'dependencyStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');

elem.append('defs').append('marker').attr('id', 'dependencyEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');

};

var edgeCount = 0; var drawEdge = function drawEdge(elem, path, relation) {

var getRelationType = function getRelationType(type) {
  switch (type) {
    case _classDb2.default.relationType.AGGREGATION:
      return 'aggregation';
    case _classDb2.default.relationType.EXTENSION:
      return 'extension';
    case _classDb2.default.relationType.COMPOSITION:
      return 'composition';
    case _classDb2.default.relationType.DEPENDENCY:
      return 'dependency';
  }
};

// The data for our line
var lineData = path.points;

// This is the accessor function we talked about above
var lineFunction = d3.line().x(function (d) {
  return d.x;
}).y(function (d) {
  return d.y;
}).curve(d3.curveBasis);

var svgPath = elem.append('path').attr('d', lineFunction(lineData)).attr('id', 'edge' + edgeCount).attr('class', 'relation');
var url = '';
if (conf.arrowMarkerAbsolute) {
  url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;
  url = url.replace(/\(/g, '\\(');
  url = url.replace(/\)/g, '\\)');
}

if (relation.relation.type1 !== 'none') {
  svgPath.attr('marker-start', 'url(' + url + '#' + getRelationType(relation.relation.type1) + 'Start' + ')');
}
if (relation.relation.type2 !== 'none') {
  svgPath.attr('marker-end', 'url(' + url + '#' + getRelationType(relation.relation.type2) + 'End' + ')');
}

var x = void 0,
    y = void 0;
var l = path.points.length;
if (l % 2 !== 0) {
  var p1 = path.points[Math.floor(l / 2)];
  var p2 = path.points[Math.ceil(l / 2)];
  x = (p1.x + p2.x) / 2;
  y = (p1.y + p2.y) / 2;
} else {
  var p = path.points[Math.floor(l / 2)];
  x = p.x;
  y = p.y;
}

if (typeof relation.title !== 'undefined') {
  var g = elem.append('g').attr('class', 'classLabel');
  var label = g.append('text').attr('class', 'label').attr('x', x).attr('y', y).attr('fill', 'red').attr('text-anchor', 'middle').text(relation.title);

  window.label = label;
  var bounds = label.node().getBBox();

  g.insert('rect', ':first-child').attr('class', 'box').attr('x', bounds.x - conf.padding / 2).attr('y', bounds.y - conf.padding / 2).attr('width', bounds.width + conf.padding).attr('height', bounds.height + conf.padding);
}

edgeCount++;

};

var drawClass = function drawClass(elem, classDef) {

_logger.logger.info('Rendering class ' + classDef);

var addTspan = function addTspan(textEl, txt, isFirst) {
  var tSpan = textEl.append('tspan').attr('x', conf.padding).text(txt);
  if (!isFirst) {
    tSpan.attr('dy', conf.textHeight);
  }
};

var id = 'classId' + classCnt;
var classInfo = {
  id: id,
  label: classDef.id,
  width: 0,
  height: 0
};

var g = elem.append('g').attr('id', id).attr('class', 'classGroup');
var title = g.append('text').attr('x', conf.padding).attr('y', conf.textHeight + conf.padding).text(classDef.id);

var titleHeight = title.node().getBBox().height;

var membersLine = g.append('line') // text label for the x axis
.attr('x1', 0).attr('y1', conf.padding + titleHeight + conf.dividerMargin / 2).attr('y2', conf.padding + titleHeight + conf.dividerMargin / 2);

var members = g.append('text') // text label for the x axis
.attr('x', conf.padding).attr('y', titleHeight + conf.dividerMargin + conf.textHeight).attr('fill', 'white').attr('class', 'classText');

var isFirst = true;
classDef.members.forEach(function (member) {
  addTspan(members, member, isFirst);
  isFirst = false;
});

var membersBox = members.node().getBBox();

var methodsLine = g.append('line') // text label for the x axis
.attr('x1', 0).attr('y1', conf.padding + titleHeight + conf.dividerMargin + membersBox.height).attr('y2', conf.padding + titleHeight + conf.dividerMargin + membersBox.height);

var methods = g.append('text') // text label for the x axis
.attr('x', conf.padding).attr('y', titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight).attr('fill', 'white').attr('class', 'classText');

isFirst = true;

classDef.methods.forEach(function (method) {
  addTspan(methods, method, isFirst);
  isFirst = false;
});

var classBox = g.node().getBBox();
g.insert('rect', ':first-child').attr('x', 0).attr('y', 0).attr('width', classBox.width + 2 * conf.padding).attr('height', classBox.height + conf.padding + 0.5 * conf.dividerMargin);

membersLine.attr('x2', classBox.width + 2 * conf.padding);
methodsLine.attr('x2', classBox.width + 2 * conf.padding);

classInfo.width = classBox.width + 2 * conf.padding;
classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;

idCache[id] = classInfo;
classCnt++;
return classInfo;

};

var setConf = exports.setConf = function setConf(cnf) {

var keys = Object.keys(cnf);

keys.forEach(function (key) {
  conf[key] = cnf[key];
});

}; /**

* Draws a flowchart in the tag with id: id based on the graph definition in text.
* @param text
* @param id
*/

var draw = exports.draw = function draw(text, id) {

_classDiagram.parser.yy.clear();
_classDiagram.parser.parse(text);

_logger.logger.info('Rendering diagram ' + text);

/// / Fetch the default direction, use TD if none was found
var diagram = d3.select('[id="' + id + '"]');
insertMarkers(diagram);

// Layout graph, Create a new directed graph
var g = new _graphlibrary2.default.Graph({
  multigraph: true
});

// Set an object for the graph label
g.setGraph({
  isMultiGraph: true
});

// Default to assigning a new object as a label for each new edge.
g.setDefaultEdgeLabel(function () {
  return {};
});

var classes = _classDb2.default.getClasses();
var keys = Object.keys(classes);
for (var i = 0; i < keys.length; i++) {
  var classDef = classes[keys[i]];
  var node = drawClass(diagram, classDef);
  // Add nodes to the graph. The first argument is the node id. The second is
  // metadata about the node. In this case we're going to add labels to each of
  // our nodes.
  g.setNode(node.id, node);
  _logger.logger.info('Org height: ' + node.height);
}

var relations = _classDb2.default.getRelations();
relations.forEach(function (relation) {
  _logger.logger.info('tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation));
  g.setEdge(getGraphId(relation.id1), getGraphId(relation.id2), { relation: relation });
});
_dagreLayout2.default.layout(g);
g.nodes().forEach(function (v) {
  if (typeof v !== 'undefined') {
    _logger.logger.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));
    d3.select('#' + v).attr('transform', 'translate(' + (g.node(v).x - g.node(v).width / 2) + ',' + (g.node(v).y - g.node(v).height / 2) + ' )');
  }
});
g.edges().forEach(function (e) {
  _logger.logger.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));
  drawEdge(diagram, g.edge(e), g.edge(e).relation);
});

diagram.attr('height', '100%');
diagram.attr('width', '100%');
diagram.attr('viewBox', '0 0 ' + (g.graph().width + 20) + ' ' + (g.graph().height + 20));

};

exports.default = {

setConf: setConf,
draw: draw

};

/***/ }),

/***/ “./src/diagrams/class/parser/classDiagram.js”: /*!***************************************************!*\

!*** ./src/diagrams/class/parser/classDiagram.js ***!
\***************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”; /* WEBPACK VAR INJECTION */(function(process, module) {

/* parser generated by jison 0.4.18 */ /*

Returns a Parser object of the following structure:

Parser: {
  yy: {}
}

Parser.prototype: {
  yy: {},
  trace: function(),
  symbols_: {associative list: name ==> number},
  terminals_: {associative list: number ==> name},
  productions_: [...],
  performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
  table: [...],
  defaultActions: {...},
  parseError: function(str, hash),
  parse: function(input),

  lexer: {
      EOF: 1,
      parseError: function(str, hash),
      setInput: function(input),
      input: function(),
      unput: function(str),
      more: function(),
      less: function(n),
      pastInput: function(),
      upcomingInput: function(),
      showPosition: function(),
      test_match: function(regex_match_array, rule_index),
      next: function(),
      lex: function(),
      begin: function(condition),
      popState: function(),
      _currentRules: function(),
      topState: function(),
      pushState: function(condition),

      options: {
          ranges: boolean           (optional: true ==> token location info will include a .range[] member)
          flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
          backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
      },

      performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
      rules: [...],
      conditions: {associative list: name ==> set},
  }
}

token location info (@$, _$, etc.): {
  first_line: n,
  last_line: n,
  first_column: n,
  last_column: n,
  range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
}

the parseError function receives a 'hash' object with these members for lexer and parser errors: {
  text:        (matched text)
  token:       (the produced terminal token, if any)
  line:        (yylineno)
}
while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
  loc:         (yylloc)
  expected:    (string describing the set of expected tokens)
  recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
}

*/ var parser = function () {

var o = function o(k, v, _o, l) {
    for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v) {}return _o;
},
    $V0 = [1, 11],
    $V1 = [1, 12],
    $V2 = [1, 13],
    $V3 = [1, 15],
    $V4 = [1, 16],
    $V5 = [1, 17],
    $V6 = [6, 8],
    $V7 = [1, 26],
    $V8 = [1, 27],
    $V9 = [1, 28],
    $Va = [1, 29],
    $Vb = [1, 30],
    $Vc = [1, 31],
    $Vd = [6, 8, 13, 17, 23, 26, 27, 28, 29, 30, 31],
    $Ve = [6, 8, 13, 17, 23, 26, 27, 28, 29, 30, 31, 45, 46, 47],
    $Vf = [23, 45, 46, 47],
    $Vg = [23, 30, 31, 45, 46, 47],
    $Vh = [23, 26, 27, 28, 29, 45, 46, 47],
    $Vi = [6, 8, 13],
    $Vj = [1, 46];
var parser = { trace: function trace() {},
    yy: {},
    symbols_: { "error": 2, "mermaidDoc": 3, "graphConfig": 4, "CLASS_DIAGRAM": 5, "NEWLINE": 6, "statements": 7, "EOF": 8, "statement": 9, "className": 10, "alphaNumToken": 11, "relationStatement": 12, "LABEL": 13, "classStatement": 14, "methodStatement": 15, "CLASS": 16, "STRUCT_START": 17, "members": 18, "STRUCT_STOP": 19, "MEMBER": 20, "SEPARATOR": 21, "relation": 22, "STR": 23, "relationType": 24, "lineType": 25, "AGGREGATION": 26, "EXTENSION": 27, "COMPOSITION": 28, "DEPENDENCY": 29, "LINE": 30, "DOTTED_LINE": 31, "commentToken": 32, "textToken": 33, "graphCodeTokens": 34, "textNoTagsToken": 35, "TAGSTART": 36, "TAGEND": 37, "==": 38, "--": 39, "PCT": 40, "DEFAULT": 41, "SPACE": 42, "MINUS": 43, "keywords": 44, "UNICODE_TEXT": 45, "NUM": 46, "ALPHA": 47, "$accept": 0, "$end": 1 },
    terminals_: { 2: "error", 5: "CLASS_DIAGRAM", 6: "NEWLINE", 8: "EOF", 13: "LABEL", 16: "CLASS", 17: "STRUCT_START", 19: "STRUCT_STOP", 20: "MEMBER", 21: "SEPARATOR", 23: "STR", 26: "AGGREGATION", 27: "EXTENSION", 28: "COMPOSITION", 29: "DEPENDENCY", 30: "LINE", 31: "DOTTED_LINE", 34: "graphCodeTokens", 36: "TAGSTART", 37: "TAGEND", 38: "==", 39: "--", 40: "PCT", 41: "DEFAULT", 42: "SPACE", 43: "MINUS", 44: "keywords", 45: "UNICODE_TEXT", 46: "NUM", 47: "ALPHA" },
    productions_: [0, [3, 1], [4, 4], [7, 1], [7, 3], [10, 2], [10, 1], [9, 1], [9, 2], [9, 1], [9, 1], [14, 2], [14, 5], [18, 1], [18, 2], [15, 1], [15, 2], [15, 1], [15, 1], [12, 3], [12, 4], [12, 4], [12, 5], [22, 3], [22, 2], [22, 2], [22, 1], [24, 1], [24, 1], [24, 1], [24, 1], [25, 1], [25, 1], [32, 1], [32, 1], [33, 1], [33, 1], [33, 1], [33, 1], [33, 1], [33, 1], [33, 1], [35, 1], [35, 1], [35, 1], [35, 1], [11, 1], [11, 1], [11, 1]],
    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
        /* this == yyval */

        var $0 = $$.length - 1;
        switch (yystate) {
            case 5:
                this.$ = $$[$0 - 1] + $$[$0];
                break;
            case 6:
                this.$ = $$[$0];
                break;
            case 7:
                yy.addRelation($$[$0]);
                break;
            case 8:
                $$[$0 - 1].title = yy.cleanupLabel($$[$0]);yy.addRelation($$[$0 - 1]);
                break;
            case 12:
                /*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addMembers($$[$0 - 3], $$[$0 - 1]);
                break;
            case 13:
                this.$ = [$$[$0]];
                break;
            case 14:
                $$[$0].push($$[$0 - 1]);this.$ = $$[$0];
                break;
            case 15:
                /*console.log('Rel found',$$[$0]);*/
                break;
            case 16:
                yy.addMembers($$[$0 - 1], yy.cleanupLabel($$[$0]));
                break;
            case 17:
                console.warn('Member', $$[$0]);
                break;
            case 18:
                /*console.log('sep found',$$[$0]);*/
                break;
            case 19:
                this.$ = { 'id1': $$[$0 - 2], 'id2': $$[$0], relation: $$[$0 - 1], relationTitle1: 'none', relationTitle2: 'none' };
                break;
            case 20:
                this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 1], relationTitle1: $$[$0 - 2], relationTitle2: 'none' };
                break;
            case 21:
                this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: 'none', relationTitle2: $$[$0 - 1] };
                break;
            case 22:
                this.$ = { id1: $$[$0 - 4], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: $$[$0 - 3], relationTitle2: $$[$0 - 1] };
                break;
            case 23:
                this.$ = { type1: $$[$0 - 2], type2: $$[$0], lineType: $$[$0 - 1] };
                break;
            case 24:
                this.$ = { type1: 'none', type2: $$[$0], lineType: $$[$0 - 1] };
                break;
            case 25:
                this.$ = { type1: $$[$0 - 1], type2: 'none', lineType: $$[$0] };
                break;
            case 26:
                this.$ = { type1: 'none', type2: 'none', lineType: $$[$0] };
                break;
            case 27:
                this.$ = yy.relationType.AGGREGATION;
                break;
            case 28:
                this.$ = yy.relationType.EXTENSION;
                break;
            case 29:
                this.$ = yy.relationType.COMPOSITION;
                break;
            case 30:
                this.$ = yy.relationType.DEPENDENCY;
                break;
            case 31:
                this.$ = yy.lineType.LINE;
                break;
            case 32:
                this.$ = yy.lineType.DOTTED_LINE;
                break;
        }
    },
    table: [{ 3: 1, 4: 2, 5: [1, 3] }, { 1: [3] }, { 1: [2, 1] }, { 6: [1, 4] }, { 7: 5, 9: 6, 10: 10, 11: 14, 12: 7, 14: 8, 15: 9, 16: $V0, 20: $V1, 21: $V2, 45: $V3, 46: $V4, 47: $V5 }, { 8: [1, 18] }, { 6: [1, 19], 8: [2, 3] }, o($V6, [2, 7], { 13: [1, 20] }), o($V6, [2, 9]), o($V6, [2, 10]), o($V6, [2, 15], { 22: 21, 24: 24, 25: 25, 13: [1, 23], 23: [1, 22], 26: $V7, 27: $V8, 28: $V9, 29: $Va, 30: $Vb, 31: $Vc }), { 10: 32, 11: 14, 45: $V3, 46: $V4, 47: $V5 }, o($V6, [2, 17]), o($V6, [2, 18]), o($Vd, [2, 6], { 11: 14, 10: 33, 45: $V3, 46: $V4, 47: $V5 }), o($Ve, [2, 46]), o($Ve, [2, 47]), o($Ve, [2, 48]), { 1: [2, 2] }, { 7: 34, 9: 6, 10: 10, 11: 14, 12: 7, 14: 8, 15: 9, 16: $V0, 20: $V1, 21: $V2, 45: $V3, 46: $V4, 47: $V5 }, o($V6, [2, 8]), { 10: 35, 11: 14, 23: [1, 36], 45: $V3, 46: $V4, 47: $V5 }, { 22: 37, 24: 24, 25: 25, 26: $V7, 27: $V8, 28: $V9, 29: $Va, 30: $Vb, 31: $Vc }, o($V6, [2, 16]), { 25: 38, 30: $Vb, 31: $Vc }, o($Vf, [2, 26], { 24: 39, 26: $V7, 27: $V8, 28: $V9, 29: $Va }), o($Vg, [2, 27]), o($Vg, [2, 28]), o($Vg, [2, 29]), o($Vg, [2, 30]), o($Vh, [2, 31]), o($Vh, [2, 32]), o($V6, [2, 11], { 17: [1, 40] }), o($Vd, [2, 5]), { 8: [2, 4] }, o($Vi, [2, 19]), { 10: 41, 11: 14, 45: $V3, 46: $V4, 47: $V5 }, { 10: 42, 11: 14, 23: [1, 43], 45: $V3, 46: $V4, 47: $V5 }, o($Vf, [2, 25], { 24: 44, 26: $V7, 27: $V8, 28: $V9, 29: $Va }), o($Vf, [2, 24]), { 18: 45, 20: $Vj }, o($Vi, [2, 21]), o($Vi, [2, 20]), { 10: 47, 11: 14, 45: $V3, 46: $V4, 47: $V5 }, o($Vf, [2, 23]), { 19: [1, 48] }, { 18: 49, 19: [2, 13], 20: $Vj }, o($Vi, [2, 22]), o($V6, [2, 12]), { 19: [2, 14] }],
    defaultActions: { 2: [2, 1], 18: [2, 2], 34: [2, 4], 49: [2, 14] },
    parseError: function parseError(str, hash) {
        if (hash.recoverable) {
            this.trace(str);
        } else {
            var error = new Error(str);
            error.hash = hash;
            throw error;
        }
    },
    parse: function parse(input) {
        var self = this,
            stack = [0],
            tstack = [],
            vstack = [null],
            lstack = [],
            table = this.table,
            yytext = '',
            yylineno = 0,
            yyleng = 0,
            recovering = 0,
            TERROR = 2,
            EOF = 1;
        var args = lstack.slice.call(arguments, 1);
        var lexer = Object.create(this.lexer);
        var sharedState = { yy: {} };
        for (var k in this.yy) {
            if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
                sharedState.yy[k] = this.yy[k];
            }
        }
        lexer.setInput(input, sharedState.yy);
        sharedState.yy.lexer = lexer;
        sharedState.yy.parser = this;
        if (typeof lexer.yylloc == 'undefined') {
            lexer.yylloc = {};
        }
        var yyloc = lexer.yylloc;
        lstack.push(yyloc);
        var ranges = lexer.options && lexer.options.ranges;
        if (typeof sharedState.yy.parseError === 'function') {
            this.parseError = sharedState.yy.parseError;
        } else {
            this.parseError = Object.getPrototypeOf(this).parseError;
        }
        function popStack(n) {
            stack.length = stack.length - 2 * n;
            vstack.length = vstack.length - n;
            lstack.length = lstack.length - n;
        }
        function lex() {
            var token;
            token = tstack.pop() || lexer.lex() || EOF;
            if (typeof token !== 'number') {
                if (token instanceof Array) {
                    tstack = token;
                    token = tstack.pop();
                }
                token = self.symbols_[token] || token;
            }
            return token;
        }
        var symbol,
            preErrorSymbol,
            state,
            action,
            a,
            r,
            yyval = {},
            p,
            len,
            newState,
            expected;
        while (true) {
            state = stack[stack.length - 1];
            if (this.defaultActions[state]) {
                action = this.defaultActions[state];
            } else {
                if (symbol === null || typeof symbol == 'undefined') {
                    symbol = lex();
                }
                action = table[state] && table[state][symbol];
            }
            if (typeof action === 'undefined' || !action.length || !action[0]) {
                var errStr = '';
                expected = [];
                for (p in table[state]) {
                    if (this.terminals_[p] && p > TERROR) {
                        expected.push('\'' + this.terminals_[p] + '\'');
                    }
                }
                if (lexer.showPosition) {
                    errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
                } else {
                    errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
                }
                this.parseError(errStr, {
                    text: lexer.match,
                    token: this.terminals_[symbol] || symbol,
                    line: lexer.yylineno,
                    loc: yyloc,
                    expected: expected
                });
            }
            if (action[0] instanceof Array && action.length > 1) {
                throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
            }
            switch (action[0]) {
                case 1:
                    stack.push(symbol);
                    vstack.push(lexer.yytext);
                    lstack.push(lexer.yylloc);
                    stack.push(action[1]);
                    symbol = null;
                    if (!preErrorSymbol) {
                        yyleng = lexer.yyleng;
                        yytext = lexer.yytext;
                        yylineno = lexer.yylineno;
                        yyloc = lexer.yylloc;
                        if (recovering > 0) {
                            recovering--;
                        }
                    } else {
                        symbol = preErrorSymbol;
                        preErrorSymbol = null;
                    }
                    break;
                case 2:
                    len = this.productions_[action[1]][1];
                    yyval.$ = vstack[vstack.length - len];
                    yyval._$ = {
                        first_line: lstack[lstack.length - (len || 1)].first_line,
                        last_line: lstack[lstack.length - 1].last_line,
                        first_column: lstack[lstack.length - (len || 1)].first_column,
                        last_column: lstack[lstack.length - 1].last_column
                    };
                    if (ranges) {
                        yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
                    }
                    r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
                    if (typeof r !== 'undefined') {
                        return r;
                    }
                    if (len) {
                        stack = stack.slice(0, -1 * len * 2);
                        vstack = vstack.slice(0, -1 * len);
                        lstack = lstack.slice(0, -1 * len);
                    }
                    stack.push(this.productions_[action[1]][0]);
                    vstack.push(yyval.$);
                    lstack.push(yyval._$);
                    newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
                    stack.push(newState);
                    break;
                case 3:
                    return true;
            }
        }
        return true;
    } };

/* generated by jison-lex 0.3.4 */
var lexer = function () {
    var lexer = {

        EOF: 1,

        parseError: function parseError(str, hash) {
            if (this.yy.parser) {
                this.yy.parser.parseError(str, hash);
            } else {
                throw new Error(str);
            }
        },

        // resets the lexer, sets new input
        setInput: function setInput(input, yy) {
            this.yy = yy || this.yy || {};
            this._input = input;
            this._more = this._backtrack = this.done = false;
            this.yylineno = this.yyleng = 0;
            this.yytext = this.matched = this.match = '';
            this.conditionStack = ['INITIAL'];
            this.yylloc = {
                first_line: 1,
                first_column: 0,
                last_line: 1,
                last_column: 0
            };
            if (this.options.ranges) {
                this.yylloc.range = [0, 0];
            }
            this.offset = 0;
            return this;
        },

        // consumes and returns one char from the input
        input: function input() {
            var ch = this._input[0];
            this.yytext += ch;
            this.yyleng++;
            this.offset++;
            this.match += ch;
            this.matched += ch;
            var lines = ch.match(/(?:\r\n?|\n).*/g);
            if (lines) {
                this.yylineno++;
                this.yylloc.last_line++;
            } else {
                this.yylloc.last_column++;
            }
            if (this.options.ranges) {
                this.yylloc.range[1]++;
            }

            this._input = this._input.slice(1);
            return ch;
        },

        // unshifts one char (or a string) into the input
        unput: function unput(ch) {
            var len = ch.length;
            var lines = ch.split(/(?:\r\n?|\n)/g);

            this._input = ch + this._input;
            this.yytext = this.yytext.substr(0, this.yytext.length - len);
            //this.yyleng -= len;
            this.offset -= len;
            var oldLines = this.match.split(/(?:\r\n?|\n)/g);
            this.match = this.match.substr(0, this.match.length - 1);
            this.matched = this.matched.substr(0, this.matched.length - 1);

            if (lines.length - 1) {
                this.yylineno -= lines.length - 1;
            }
            var r = this.yylloc.range;

            this.yylloc = {
                first_line: this.yylloc.first_line,
                last_line: this.yylineno + 1,
                first_column: this.yylloc.first_column,
                last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
            };

            if (this.options.ranges) {
                this.yylloc.range = [r[0], r[0] + this.yyleng - len];
            }
            this.yyleng = this.yytext.length;
            return this;
        },

        // When called from action, caches matched text and appends it on next action
        more: function more() {
            this._more = true;
            return this;
        },

        // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
        reject: function reject() {
            if (this.options.backtrack_lexer) {
                this._backtrack = true;
            } else {
                return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
                    text: "",
                    token: null,
                    line: this.yylineno
                });
            }
            return this;
        },

        // retain first n characters of the match
        less: function less(n) {
            this.unput(this.match.slice(n));
        },

        // displays already matched input, i.e. for error messages
        pastInput: function pastInput() {
            var past = this.matched.substr(0, this.matched.length - this.match.length);
            return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, "");
        },

        // displays upcoming input, i.e. for error messages
        upcomingInput: function upcomingInput() {
            var next = this.match;
            if (next.length < 20) {
                next += this._input.substr(0, 20 - next.length);
            }
            return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
        },

        // displays the character position where the lexing error occurred, i.e. for error messages
        showPosition: function showPosition() {
            var pre = this.pastInput();
            var c = new Array(pre.length + 1).join("-");
            return pre + this.upcomingInput() + "\n" + c + "^";
        },

        // test the lexed token: return FALSE when not a match, otherwise return token
        test_match: function test_match(match, indexed_rule) {
            var token, lines, backup;

            if (this.options.backtrack_lexer) {
                // save context
                backup = {
                    yylineno: this.yylineno,
                    yylloc: {
                        first_line: this.yylloc.first_line,
                        last_line: this.last_line,
                        first_column: this.yylloc.first_column,
                        last_column: this.yylloc.last_column
                    },
                    yytext: this.yytext,
                    match: this.match,
                    matches: this.matches,
                    matched: this.matched,
                    yyleng: this.yyleng,
                    offset: this.offset,
                    _more: this._more,
                    _input: this._input,
                    yy: this.yy,
                    conditionStack: this.conditionStack.slice(0),
                    done: this.done
                };
                if (this.options.ranges) {
                    backup.yylloc.range = this.yylloc.range.slice(0);
                }
            }

            lines = match[0].match(/(?:\r\n?|\n).*/g);
            if (lines) {
                this.yylineno += lines.length;
            }
            this.yylloc = {
                first_line: this.yylloc.last_line,
                last_line: this.yylineno + 1,
                first_column: this.yylloc.last_column,
                last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
            };
            this.yytext += match[0];
            this.match += match[0];
            this.matches = match;
            this.yyleng = this.yytext.length;
            if (this.options.ranges) {
                this.yylloc.range = [this.offset, this.offset += this.yyleng];
            }
            this._more = false;
            this._backtrack = false;
            this._input = this._input.slice(match[0].length);
            this.matched += match[0];
            token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
            if (this.done && this._input) {
                this.done = false;
            }
            if (token) {
                return token;
            } else if (this._backtrack) {
                // recover context
                for (var k in backup) {
                    this[k] = backup[k];
                }
                return false; // rule action called reject() implying the next rule should be tested instead.
            }
            return false;
        },

        // return next match in input
        next: function next() {
            if (this.done) {
                return this.EOF;
            }
            if (!this._input) {
                this.done = true;
            }

            var token, match, tempMatch, index;
            if (!this._more) {
                this.yytext = '';
                this.match = '';
            }
            var rules = this._currentRules();
            for (var i = 0; i < rules.length; i++) {
                tempMatch = this._input.match(this.rules[rules[i]]);
                if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
                    match = tempMatch;
                    index = i;
                    if (this.options.backtrack_lexer) {
                        token = this.test_match(tempMatch, rules[i]);
                        if (token !== false) {
                            return token;
                        } else if (this._backtrack) {
                            match = false;
                            continue; // rule action called reject() implying a rule MISmatch.
                        } else {
                            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                            return false;
                        }
                    } else if (!this.options.flex) {
                        break;
                    }
                }
            }
            if (match) {
                token = this.test_match(match, rules[index]);
                if (token !== false) {
                    return token;
                }
                // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                return false;
            }
            if (this._input === "") {
                return this.EOF;
            } else {
                return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
                    text: "",
                    token: null,
                    line: this.yylineno
                });
            }
        },

        // return next match that has a token
        lex: function lex() {
            var r = this.next();
            if (r) {
                return r;
            } else {
                return this.lex();
            }
        },

        // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
        begin: function begin(condition) {
            this.conditionStack.push(condition);
        },

        // pop the previously active lexer condition state off the condition stack
        popState: function popState() {
            var n = this.conditionStack.length - 1;
            if (n > 0) {
                return this.conditionStack.pop();
            } else {
                return this.conditionStack[0];
            }
        },

        // produce the lexer rule set which is active for the currently active lexer condition state
        _currentRules: function _currentRules() {
            if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
                return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
            } else {
                return this.conditions["INITIAL"].rules;
            }
        },

        // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
        topState: function topState(n) {
            n = this.conditionStack.length - 1 - Math.abs(n || 0);
            if (n >= 0) {
                return this.conditionStack[n];
            } else {
                return "INITIAL";
            }
        },

        // alias for begin(condition)
        pushState: function pushState(condition) {
            this.begin(condition);
        },

        // return the number of states currently on the stack
        stateStackSize: function stateStackSize() {
            return this.conditionStack.length;
        },
        options: {},
        performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
            var YYSTATE = YY_START;
            switch ($avoiding_name_collisions) {
                case 0:
                    /* do nothing */
                    break;
                case 1:
                    return 6;
                    break;
                case 2:
                    /* skip whitespace */
                    break;
                case 3:
                    return 5;
                    break;
                case 4:
                    this.begin("struct"); /*console.log('Starting struct');*/return 17;
                    break;
                case 5:
                    /*console.log('Ending struct');*/this.popState();return 19;
                    break;
                case 6:
                    /* nothing */
                    break;
                case 7:
                    /*console.log('lex-member: ' + yy_.yytext);*/return "MEMBER";
                    break;
                case 8:
                    return 16;
                    break;
                case 9:
                    this.begin("string");
                    break;
                case 10:
                    this.popState();
                    break;
                case 11:
                    return "STR";
                    break;
                case 12:
                    return 27;
                    break;
                case 13:
                    return 27;
                    break;
                case 14:
                    return 29;
                    break;
                case 15:
                    return 29;
                    break;
                case 16:
                    return 28;
                    break;
                case 17:
                    return 26;
                    break;
                case 18:
                    return 30;
                    break;
                case 19:
                    return 31;
                    break;
                case 20:
                    return 13;
                    break;
                case 21:
                    return 43;
                    break;
                case 22:
                    return 'DOT';
                    break;
                case 23:
                    return 'PLUS';
                    break;
                case 24:
                    return 40;
                    break;
                case 25:
                    return 'EQUALS';
                    break;
                case 26:
                    return 'EQUALS';
                    break;
                case 27:
                    return 47;
                    break;
                case 28:
                    return 'PUNCTUATION';
                    break;
                case 29:
                    return 46;
                    break;
                case 30:
                    return 45;
                    break;
                case 31:
                    return 42;
                    break;
                case 32:
                    return 8;
                    break;
            }
        },
        rules: [/^(?:%%[^\n]*)/, /^(?:\n+)/, /^(?:\s+)/, /^(?:classDiagram\b)/, /^(?:[\{])/, /^(?:\})/, /^(?:[\n])/, /^(?:[^\{\}\n]*)/, /^(?:class\b)/, /^(?:["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:\s*<\|)/, /^(?:\s*\|>)/, /^(?:\s*>)/, /^(?:\s*<)/, /^(?:\s*\*)/, /^(?:\s*o\b)/, /^(?:--)/, /^(?:\.\.)/, /^(?::[^#\n;]+)/, /^(?:-)/, /^(?:\.)/, /^(?:\+)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:[A-Za-z]+)/, /^(?:[!"#$%&'*+,-.`?\\_\/])/, /^(?:[0-9]+)/, /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/, /^(?:\s)/, /^(?:$)/],
        conditions: { "string": { "rules": [10, 11], "inclusive": false }, "struct": { "rules": [5, 6, 7], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], "inclusive": true } }
    };
    return lexer;
}();
parser.lexer = lexer;
function Parser() {
    this.yy = {};
}
Parser.prototype = parser;parser.Parser = Parser;
return new Parser();

}();

if (true) {

exports.parser = parser;
exports.Parser = parser.Parser;
exports.parse = function () {
    return parser.parse.apply(parser, arguments);
};
exports.main = function commonjsMain(args) {
    if (!args[1]) {
        console.log('Usage: ' + args[0] + ' FILE');
        process.exit(1);
    }
    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
    return exports.parser.parse(source);
};
if (typeof module !== 'undefined' && __webpack_require__.c[__webpack_require__.s] === module) {
    exports.main(process.argv.slice(1));
}

} /* WEBPACK VAR INJECTION */}.call(this, webpack_require(/*! ./../../../../node_modules/process/browser.js */ “./node_modules/process/browser.js”), webpack_require(/*! ./../../../../node_modules/webpack/buildin/module.js */ “./node_modules/webpack/buildin/module.js”)(module)))

/***/ }),

/***/ “./src/diagrams/flowchart/flowDb.js”: /*!******************************************!*\

!*** ./src/diagrams/flowchart/flowDb.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.getSubGraphs = exports.indexNodes = exports.getDepthFirstPos = exports.addSubGraph = exports.defaultStyle = exports.clear = exports.getClasses = exports.getEdges = exports.getVertices = exports.getDirection = exports.bindFunctions = exports.setClickEvent = exports.getTooltip = exports.setClass = exports.setDirection = exports.addClass = exports.updateLink = exports.updateLinkInterpolate = exports.addLink = exports.addVertex = undefined;

var _typeof = typeof Symbol === “function” && typeof Symbol.iterator === “symbol” ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === “function” && obj.constructor === Symbol && obj !== Symbol.prototype ? “symbol” : typeof obj; };

var _d = webpack_require(/*! d3 */ “./node_modules/d3/index.js”);

var d3 = _interopRequireWildcard(_d);

var _logger = webpack_require(/*! ../../logger */ “./src/logger.js”);

var _utils = webpack_require(/*! ../../utils */ “./src/utils.js”);

var _utils2 = _interopRequireDefault(_utils);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj = obj; } } newObj.default = obj; return newObj; } }

var vertices = {}; var edges = []; var classes = []; var subGraphs = []; var tooltips = {}; var subCount = 0; var direction = void 0; // Functions to be run after graph rendering var funs = []; /**

* Function called by parser when a node definition has been found
* @param id
* @param text
* @param type
* @param style
*/

var addVertex = exports.addVertex = function addVertex(id, text, type, style) {

var txt = void 0;

if (typeof id === 'undefined') {
  return;
}
if (id.trim().length === 0) {
  return;
}

if (typeof vertices[id] === 'undefined') {
  vertices[id] = { id: id, styles: [], classes: [] };
}
if (typeof text !== 'undefined') {
  txt = text.trim();

  // strip quotes if string starts and exnds with a quote
  if (txt[0] === '"' && txt[txt.length - 1] === '"') {
    txt = txt.substring(1, txt.length - 1);
  }

  vertices[id].text = txt;
}
if (typeof type !== 'undefined') {
  vertices[id].type = type;
}
if (typeof type !== 'undefined') {
  vertices[id].type = type;
}
if (typeof style !== 'undefined') {
  if (style !== null) {
    style.forEach(function (s) {
      vertices[id].styles.push(s);
    });
  }
}

};

/**

* Function called by parser when a link/edge definition has been found
* @param start
* @param end
* @param type
* @param linktext
*/

var addLink = exports.addLink = function addLink(start, end, type, linktext) {

_logger.logger.info('Got edge...', start, end);
var edge = { start: start, end: end, type: undefined, text: '' };
linktext = type.text;

if (typeof linktext !== 'undefined') {
  edge.text = linktext.trim();

  // strip quotes if string starts and exnds with a quote
  if (edge.text[0] === '"' && edge.text[edge.text.length - 1] === '"') {
    edge.text = edge.text.substring(1, edge.text.length - 1);
  }
}

if (typeof type !== 'undefined') {
  edge.type = type.type;
  edge.stroke = type.stroke;
}
edges.push(edge);

};

/**

* Updates a link's line interpolation algorithm
* @param pos
* @param interpolate
*/

var updateLinkInterpolate = exports.updateLinkInterpolate = function updateLinkInterpolate(pos, interp) {

if (pos === 'default') {
  edges.defaultInterpolate = interp;
} else {
  edges[pos].interpolate = interp;
}

};

/**

* Updates a link with a style
* @param pos
* @param style
*/

var updateLink = exports.updateLink = function updateLink(pos, style) {

if (pos === 'default') {
  edges.defaultStyle = style;
} else {
  if (_utils2.default.isSubstringInArray('fill', style) === -1) {
    style.push('fill:none');
  }
  edges[pos].style = style;
}

};

var addClass = exports.addClass = function addClass(id, style) {

if (typeof classes[id] === 'undefined') {
  classes[id] = { id: id, styles: [] };
}

if (typeof style !== 'undefined') {
  if (style !== null) {
    style.forEach(function (s) {
      classes[id].styles.push(s);
    });
  }
}

};

/**

* Called by parser when a graph definition is found, stores the direction of the chart.
* @param dir
*/

var setDirection = exports.setDirection = function setDirection(dir) {

direction = dir;

};

/**

* Called by parser when a graph definition is found, stores the direction of the chart.
* @param dir
*/

var setClass = exports.setClass = function setClass(id, className) {

if (id.indexOf(',') > 0) {
  id.split(',').forEach(function (id2) {
    if (typeof vertices[id2] !== 'undefined') {
      vertices[id2].classes.push(className);
    }
  });
} else {
  if (typeof vertices[id] !== 'undefined') {
    vertices[id].classes.push(className);
  }
}

};

var setTooltip = function setTooltip(id, tooltip) {

if (typeof tooltip !== 'undefined') {
  tooltips[id] = tooltip;
}

};

var setClickFun = function setClickFun(id, functionName) {

if (typeof functionName === 'undefined') {
  return;
}
if (typeof vertices[id] !== 'undefined') {
  funs.push(function (element) {
    var elem = d3.select(element).select('[id="' + id + '"]');
    if (elem !== null) {
      elem.on('click', function () {
        window[functionName](id);
      });
    }
  });
}

};

var setLink = function setLink(id, linkStr) {

if (typeof linkStr === 'undefined') {
  return;
}
if (typeof vertices[id] !== 'undefined') {
  funs.push(function (element) {
    var elem = d3.select(element).select('[id="' + id + '"]');
    if (elem !== null) {
      elem.on('click', function () {
        window.open(linkStr, 'newTab');
      });
    }
  });
}

}; var getTooltip = exports.getTooltip = function getTooltip(id) {

return tooltips[id];

};

/**

* Called by parser when a graph definition is found, stores the direction of the chart.
* @param dir
*/

var setClickEvent = exports.setClickEvent = function setClickEvent(id, functionName, link, tooltip) {

if (id.indexOf(',') > 0) {
  id.split(',').forEach(function (id2) {
    setTooltip(id2, tooltip);
    setClickFun(id2, functionName);
    setLink(id2, link);
    setClass(id, 'clickable');
  });
} else {
  setTooltip(id, tooltip);
  setClickFun(id, functionName);
  setLink(id, link);
  setClass(id, 'clickable');
}

};

var bindFunctions = exports.bindFunctions = function bindFunctions(element) {

funs.forEach(function (fun) {
  fun(element);
});

}; var getDirection = exports.getDirection = function getDirection() {

return direction;

}; /**

* Retrieval function for fetching the found nodes after parsing has completed.
* @returns {{}|*|vertices}
*/

var getVertices = exports.getVertices = function getVertices() {

return vertices;

};

/**

* Retrieval function for fetching the found links after parsing has completed.
* @returns {{}|*|edges}
*/

var getEdges = exports.getEdges = function getEdges() {

return edges;

};

/**

* Retrieval function for fetching the found class definitions after parsing has completed.
* @returns {{}|*|classes}
*/

var getClasses = exports.getClasses = function getClasses() {

return classes;

};

var setupToolTips = function setupToolTips(element) {

var tooltipElem = d3.select('.mermaidTooltip');
if ((tooltipElem._groups || tooltipElem)[0][0] === null) {
  tooltipElem = d3.select('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);
}

var svg = d3.select(element).select('svg');

var nodes = svg.selectAll('g.node');
nodes.on('mouseover', function () {
  var el = d3.select(this);
  var title = el.attr('title');
  // Dont try to draw a tooltip if no data is provided
  if (title === null) {
    return;
  }
  var rect = this.getBoundingClientRect();

  tooltipElem.transition().duration(200).style('opacity', '.9');
  tooltipElem.html(el.attr('title')).style('left', rect.left + (rect.right - rect.left) / 2 + 'px').style('top', rect.top - 14 + document.body.scrollTop + 'px');
  el.classed('hover', true);
}).on('mouseout', function () {
  tooltipElem.transition().duration(500).style('opacity', 0);
  var el = d3.select(this);
  el.classed('hover', false);
});

}; funs.push(setupToolTips);

/**

* Clears the internal graph db so that a new graph can be parsed.
*/

var clear = exports.clear = function clear() {

vertices = {};
classes = {};
edges = [];
funs = [];
funs.push(setupToolTips);
subGraphs = [];
subCount = 0;
tooltips = [];

}; /**

*
* @returns {string}
*/

var defaultStyle = exports.defaultStyle = function defaultStyle() {

return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;';

};

/**

* Clears the internal graph db so that a new graph can be parsed.
*/

var addSubGraph = exports.addSubGraph = function addSubGraph(list, title) {

function uniq(a) {
  var prims = { 'boolean': {}, 'number': {}, 'string': {} };
  var objs = [];

  return a.filter(function (item) {
    var type = typeof item === 'undefined' ? 'undefined' : _typeof(item);
    if (item.trim() === '') {
      return false;
    }
    if (type in prims) {
      return prims[type].hasOwnProperty(item) ? false : prims[type][item] = true;
    } else {
      return objs.indexOf(item) >= 0 ? false : objs.push(item);
    }
  });
}

var nodeList = [];

nodeList = uniq(nodeList.concat.apply(nodeList, list));

var subGraph = { id: 'subGraph' + subCount, nodes: nodeList, title: title.trim() };
subGraphs.push(subGraph);
subCount = subCount + 1;
return subGraph.id;

};

var getPosForId = function getPosForId(id) {

for (var i = 0; i < subGraphs.length; i++) {
  if (subGraphs[i].id === id) {
    return i;
  }
}
return -1;

}; var secCount = -1; var posCrossRef = []; var indexNodes2 = function indexNodes2(id, pos) {

var nodes = subGraphs[pos].nodes;
secCount = secCount + 1;
if (secCount > 2000) {
  return;
}
posCrossRef[secCount] = pos;
// Check if match
if (subGraphs[pos].id === id) {
  return {
    result: true,
    count: 0
  };
}

var count = 0;
var posCount = 1;
while (count < nodes.length) {
  var childPos = getPosForId(nodes[count]);
  // Ignore regular nodes (pos will be -1)
  if (childPos >= 0) {
    var res = indexNodes2(id, childPos);
    if (res.result) {
      return {
        result: true,
        count: posCount + res.count
      };
    } else {
      posCount = posCount + res.count;
    }
  }
  count = count + 1;
}

return {
  result: false,
  count: posCount
};

};

var getDepthFirstPos = exports.getDepthFirstPos = function getDepthFirstPos(pos) {

return posCrossRef[pos];

}; var indexNodes = exports.indexNodes = function indexNodes() {

secCount = -1;
if (subGraphs.length > 0) {
  indexNodes2('none', subGraphs.length - 1, 0);
}

};

var getSubGraphs = exports.getSubGraphs = function getSubGraphs() {

return subGraphs;

};

exports.default = {

addVertex: addVertex,
addLink: addLink,
updateLinkInterpolate: updateLinkInterpolate,
updateLink: updateLink,
addClass: addClass,
setDirection: setDirection,
setClass: setClass,
getTooltip: getTooltip,
setClickEvent: setClickEvent,
bindFunctions: bindFunctions,
getDirection: getDirection,
getVertices: getVertices,
getEdges: getEdges,
getClasses: getClasses,
clear: clear,
defaultStyle: defaultStyle,
addSubGraph: addSubGraph,
getDepthFirstPos: getDepthFirstPos,
indexNodes: indexNodes,
getSubGraphs: getSubGraphs

};

/***/ }),

/***/ “./src/diagrams/flowchart/flowRenderer.js”: /*!************************************************!*\

!*** ./src/diagrams/flowchart/flowRenderer.js ***!
\************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.draw = exports.getClasses = exports.addEdges = exports.addVertices = exports.setConf = undefined;

var _graphlibrary = webpack_require(/*! graphlibrary */ “./node_modules/graphlibrary/index.js”);

var _graphlibrary2 = _interopRequireDefault(_graphlibrary);

var _d = webpack_require(/*! d3 */ “./node_modules/d3/index.js”);

var d3 = _interopRequireWildcard(_d);

var _flowDb = webpack_require(/*! ./flowDb */ “./src/diagrams/flowchart/flowDb.js”);

var _flowDb2 = _interopRequireDefault(_flowDb);

var _flow = webpack_require(/*! ./parser/flow */ “./src/diagrams/flowchart/parser/flow.js”);

var _flow2 = _interopRequireDefault(_flow);

var _dagreD3Renderer = webpack_require(/*! dagre-d3-renderer */ “./node_modules/dagre-d3-renderer/dist/dagre-d3.core.js”);

var _dagreD3Renderer2 = _interopRequireDefault(_dagreD3Renderer);

var _logger = webpack_require(/*! ../../logger */ “./src/logger.js”);

var _utils = webpack_require(/*! ../../utils */ “./src/utils.js”);

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj = obj; } } newObj.default = obj; return newObj; } }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var conf = {}; var setConf = exports.setConf = function setConf(cnf) {

var keys = Object.keys(cnf);
for (var i = 0; i < keys.length; i++) {
  conf[keys[i]] = cnf[keys[i]];
}

};

/**

* Function that adds the vertices found in the graph definition to the graph to be rendered.
* @param vert Object containing the vertices.
* @param g The graph that is to be drawn.
*/

var addVertices = exports.addVertices = function addVertices(vert, g) {

var keys = Object.keys(vert);

var styleFromStyleArr = function styleFromStyleArr(styleStr, arr) {
  // Create a compound style definition from the style definitions found for the node in the graph definition
  for (var i = 0; i < arr.length; i++) {
    if (typeof arr[i] !== 'undefined') {
      styleStr = styleStr + arr[i] + ';';
    }
  }

  return styleStr;
};

// Iterate through each item in the vertice object (containing all the vertices found) in the graph definition
keys.forEach(function (id) {
  var vertice = vert[id];
  var verticeText = void 0;

  /**
   * Variable for storing the classes for the vertice
   * @type {string}
   */
  var classStr = '';
  if (vertice.classes.length > 0) {
    classStr = vertice.classes.join(' ');
  }

  /**
   * Variable for storing the extracted style for the vertice
   * @type {string}
   */
  var style = '';
  // Create a compound style definition from the style definitions found for the node in the graph definition
  style = styleFromStyleArr(style, vertice.styles);

  // Use vertice id as text in the box if no text is provided by the graph definition
  if (typeof vertice.text === 'undefined') {
    verticeText = vertice.id;
  } else {
    verticeText = vertice.text;
  }

  var labelTypeStr = '';
  if (conf.htmlLabels) {
    labelTypeStr = 'html';
    verticeText = verticeText.replace(/fa:fa[\w-]+/g, function (s) {
      return '<i class="fa ' + s.substring(3) + '"></i>';
    });
  } else {
    var svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');

    var rows = verticeText.split(/<br>/);

    for (var j = 0; j < rows.length; j++) {
      var tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');
      tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');
      tspan.setAttribute('dy', '1em');
      tspan.setAttribute('x', '1');
      tspan.textContent = rows[j];
      svgLabel.appendChild(tspan);
    }

    labelTypeStr = 'svg';
    verticeText = svgLabel;
  }

  var radious = 0;
  var _shape = '';
  // Set the shape based parameters
  switch (vertice.type) {
    case 'round':
      radious = 5;
      _shape = 'rect';
      break;
    case 'square':
      _shape = 'rect';
      break;
    case 'diamond':
      _shape = 'question';
      break;
    case 'odd':
      _shape = 'rect_left_inv_arrow';
      break;
    case 'odd_right':
      _shape = 'rect_left_inv_arrow';
      break;
    case 'circle':
      _shape = 'circle';
      break;
    case 'ellipse':
      _shape = 'ellipse';
      break;
    case 'group':
      _shape = 'rect';
      // Need to create a text node if using svg labels, see #367
      verticeText = conf.htmlLabels ? '' : document.createElementNS('http://www.w3.org/2000/svg', 'text');
      break;
    default:
      _shape = 'rect';
  }
  // Add the node
  g.setNode(vertice.id, { labelType: labelTypeStr, shape: _shape, label: verticeText, rx: radious, ry: radious, 'class': classStr, style: style, id: vertice.id });
});

};

/**

* Add edges to graph based on parsed graph defninition
* @param {Object} edges The edges to add to the graph
* @param {Object} g The graph object
*/

var addEdges = exports.addEdges = function addEdges(edges, g) {

var cnt = 0;

var defaultStyle = void 0;
if (typeof edges.defaultStyle !== 'undefined') {
  defaultStyle = edges.defaultStyle.toString().replace(/,/g, ';');
}

edges.forEach(function (edge) {
  cnt++;
  var edgeData = {};

  // Set link type for rendering
  if (edge.type === 'arrow_open') {
    edgeData.arrowhead = 'none';
  } else {
    edgeData.arrowhead = 'normal';
  }

  var style = '';
  if (typeof edge.style !== 'undefined') {
    edge.style.forEach(function (s) {
      style = style + s + ';';
    });
  } else {
    switch (edge.stroke) {
      case 'normal':
        style = 'fill:none';
        if (typeof defaultStyle !== 'undefined') {
          style = defaultStyle;
        }
        break;
      case 'dotted':
        style = 'stroke: #333; fill:none;stroke-width:2px;stroke-dasharray:3;';
        break;
      case 'thick':
        style = 'stroke: #333; stroke-width: 3.5px;fill:none';
        break;
    }
  }
  edgeData.style = style;

  if (typeof edge.interpolate !== 'undefined') {
    edgeData.curve = (0, _utils.interpolateToCurve)(edge.interpolate, d3.curveLinear);
  } else if (typeof edges.defaultInterpolate !== 'undefined') {
    edgeData.curve = (0, _utils.interpolateToCurve)(edges.defaultInterpolate, d3.curveLinear);
  } else {
    edgeData.curve = (0, _utils.interpolateToCurve)(conf.curve, d3.curveLinear);
  }

  if (typeof edge.text === 'undefined') {
    if (typeof edge.style !== 'undefined') {
      edgeData.arrowheadStyle = 'fill: #333';
    }
  } else {
    edgeData.arrowheadStyle = 'fill: #333';
    if (typeof edge.style === 'undefined') {
      edgeData.labelpos = 'c';
      if (conf.htmlLabels) {
        edgeData.labelType = 'html';
        edgeData.label = '<span class="edgeLabel">' + edge.text + '</span>';
      } else {
        edgeData.labelType = 'text';
        edgeData.style = 'stroke: #333; stroke-width: 1.5px;fill:none';
        edgeData.label = edge.text.replace(/<br>/g, '\n');
      }
    } else {
      edgeData.label = edge.text.replace(/<br>/g, '\n');
    }
  }
  // Add the edge to the graph
  g.setEdge(edge.start, edge.end, edgeData, cnt);
});

};

/**

* Returns the all the styles from classDef statements in the graph definition.
* @returns {object} classDef styles
*/

var getClasses = exports.getClasses = function getClasses(text) {

_flowDb2.default.clear();
var parser = _flow2.default.parser;
parser.yy = _flowDb2.default;

// Parse the graph definition
parser.parse(text);
return _flowDb2.default.getClasses();

};

/**

* Draws a flowchart in the tag with id: id based on the graph definition in text.
* @param text
* @param id
*/

var draw = exports.draw = function draw(text, id) {

_logger.logger.debug('Drawing flowchart');
_flowDb2.default.clear();
var parser = _flow2.default.parser;
parser.yy = _flowDb2.default;

// Parse the graph definition
try {
  parser.parse(text);
} catch (err) {
  _logger.logger.debug('Parsing failed');
}

// Fetch the default direction, use TD if none was found
var dir = _flowDb2.default.getDirection();
if (typeof dir === 'undefined') {
  dir = 'TD';
}

// Create the input mermaid.graph
var g = new _graphlibrary2.default.Graph({
  multigraph: true,
  compound: true
}).setGraph({
  rankdir: dir,
  marginx: 20,
  marginy: 20

}).setDefaultEdgeLabel(function () {
  return {};
});

var subG = void 0;
var subGraphs = _flowDb2.default.getSubGraphs();
for (var _i = subGraphs.length - 1; _i >= 0; _i--) {
  subG = subGraphs[_i];
  _flowDb2.default.addVertex(subG.id, subG.title, 'group', undefined);
}

// Fetch the verices/nodes and edges/links from the parsed graph definition
var vert = _flowDb2.default.getVertices();

var edges = _flowDb2.default.getEdges();

var i = 0;
for (i = subGraphs.length - 1; i >= 0; i--) {
  subG = subGraphs[i];

  d3.selectAll('cluster').append('text');

  for (var j = 0; j < subG.nodes.length; j++) {
    g.setParent(subG.nodes[j], subG.id);
  }
}
addVertices(vert, g);
addEdges(edges, g);

// Create the renderer
var Render = _dagreD3Renderer2.default.render;
var render = new Render();

// Add custom shape for rhombus type of boc (decision)
render.shapes().question = function (parent, bbox, node) {
  var w = bbox.width;
  var h = bbox.height;
  var s = (w + h) * 0.9;
  var points = [{ x: s / 2, y: 0 }, { x: s, y: -s / 2 }, { x: s / 2, y: -s }, { x: 0, y: -s / 2 }];
  var shapeSvg = parent.insert('polygon', ':first-child').attr('points', points.map(function (d) {
    return d.x + ',' + d.y;
  }).join(' ')).attr('rx', 5).attr('ry', 5).attr('transform', 'translate(' + -s / 2 + ',' + s * 2 / 4 + ')');
  node.intersect = function (point) {
    return _dagreD3Renderer2.default.intersect.polygon(node, points, point);
  };
  return shapeSvg;
};

// Add custom shape for box with inverted arrow on left side
render.shapes().rect_left_inv_arrow = function (parent, bbox, node) {
  var w = bbox.width;
  var h = bbox.height;
  var points = [{ x: -h / 2, y: 0 }, { x: w, y: 0 }, { x: w, y: -h }, { x: -h / 2, y: -h }, { x: 0, y: -h / 2 }];
  var shapeSvg = parent.insert('polygon', ':first-child').attr('points', points.map(function (d) {
    return d.x + ',' + d.y;
  }).join(' ')).attr('transform', 'translate(' + -w / 2 + ',' + h * 2 / 4 + ')');
  node.intersect = function (point) {
    return _dagreD3Renderer2.default.intersect.polygon(node, points, point);
  };
  return shapeSvg;
};

// Add custom shape for box with inverted arrow on right side
render.shapes().rect_right_inv_arrow = function (parent, bbox, node) {
  var w = bbox.width;
  var h = bbox.height;
  var points = [{ x: 0, y: 0 }, { x: w + h / 2, y: 0 }, { x: w, y: -h / 2 }, { x: w + h / 2, y: -h }, { x: 0, y: -h }];
  var shapeSvg = parent.insert('polygon', ':first-child').attr('points', points.map(function (d) {
    return d.x + ',' + d.y;
  }).join(' ')).attr('transform', 'translate(' + -w / 2 + ',' + h * 2 / 4 + ')');
  node.intersect = function (point) {
    return _dagreD3Renderer2.default.intersect.polygon(node, points, point);
  };
  return shapeSvg;
};

// Add our custom arrow - an empty arrowhead
render.arrows().none = function normal(parent, id, edge, type) {
  var marker = parent.append('marker').attr('id', id).attr('viewBox', '0 0 10 10').attr('refX', 9).attr('refY', 5).attr('markerUnits', 'strokeWidth').attr('markerWidth', 8).attr('markerHeight', 6).attr('orient', 'auto');

  var path = marker.append('path').attr('d', 'M 0 0 L 0 0 L 0 0 z');
  _dagreD3Renderer2.default.util.applyStyle(path, edge[type + 'Style']);
};

// Override normal arrowhead defined in d3. Remove style & add class to allow css styling.
render.arrows().normal = function normal(parent, id, edge, type) {
  var marker = parent.append('marker').attr('id', id).attr('viewBox', '0 0 10 10').attr('refX', 9).attr('refY', 5).attr('markerUnits', 'strokeWidth').attr('markerWidth', 8).attr('markerHeight', 6).attr('orient', 'auto');

  marker.append('path').attr('d', 'M 0 0 L 10 5 L 0 10 z').attr('class', 'arrowheadPath').style('stroke-width', 1).style('stroke-dasharray', '1,0');
};

// Set up an SVG group so that we can translate the final graph.
var svg = d3.select('[id="' + id + '"]');

// Run the renderer. This is what draws the final graph.
var element = d3.select('#' + id + ' g');
render(element, g);

element.selectAll('g.node').attr('title', function () {
  return _flowDb2.default.getTooltip(this.id);
});

var padding = 8;
var width = g.maxX - g.minX + padding * 2;
var height = g.maxY - g.minY + padding * 2;
svg.attr('width', '100%');
svg.attr('style', 'max-width: ' + width + 'px;');
svg.attr('viewBox', '0 0 ' + width + ' ' + height);
svg.select('g').attr('transform', 'translate(' + (padding - g.minX) + ', ' + (padding - g.minY) + ')');

// Index nodes
_flowDb2.default.indexNodes('subGraph' + i);

for (i = 0; i < subGraphs.length; i++) {
  subG = subGraphs[i];

  if (subG.title !== 'undefined') {
    var clusterRects = document.querySelectorAll('#' + id + ' #' + subG.id + ' rect');
    var clusterEl = document.querySelectorAll('#' + id + ' #' + subG.id);

    var xPos = clusterRects[0].x.baseVal.value;
    var yPos = clusterRects[0].y.baseVal.value;
    var _width = clusterRects[0].width.baseVal.value;
    var cluster = d3.select(clusterEl[0]);
    var te = cluster.append('text');
    te.attr('x', xPos + _width / 2);
    te.attr('y', yPos + 14);
    te.attr('fill', 'black');
    te.attr('stroke', 'none');
    te.attr('id', id + 'Text');
    te.style('text-anchor', 'middle');

    if (typeof subG.title === 'undefined') {
      te.text('Undef');
    } else {
      te.text(subG.title);
    }
  }
}

// Add label rects for non html labels
if (!conf.htmlLabels) {
  var labels = document.querySelectorAll('#' + id + ' .edgeLabel .label');
  for (var k = 0; k < labels.length; k++) {
    var label = labels[k];

    // Get dimensions of label
    var dim = label.getBBox();

    var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
    rect.setAttribute('rx', 0);
    rect.setAttribute('ry', 0);
    rect.setAttribute('width', dim.width);
    rect.setAttribute('height', dim.height);
    rect.setAttribute('style', 'fill:#e8e8e8;');

    label.insertBefore(rect, label.firstChild);
  }
}

};

exports.default = {

setConf: setConf,
addVertices: addVertices,
addEdges: addEdges,
getClasses: getClasses,
draw: draw

};

/***/ }),

/***/ “./src/diagrams/flowchart/parser/flow.js”: /*!***********************************************!*\

!*** ./src/diagrams/flowchart/parser/flow.js ***!
\***********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”; /* WEBPACK VAR INJECTION */(function(process, module) {

/* parser generated by jison 0.4.18 */ /*

Returns a Parser object of the following structure:

Parser: {
  yy: {}
}

Parser.prototype: {
  yy: {},
  trace: function(),
  symbols_: {associative list: name ==> number},
  terminals_: {associative list: number ==> name},
  productions_: [...],
  performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
  table: [...],
  defaultActions: {...},
  parseError: function(str, hash),
  parse: function(input),

  lexer: {
      EOF: 1,
      parseError: function(str, hash),
      setInput: function(input),
      input: function(),
      unput: function(str),
      more: function(),
      less: function(n),
      pastInput: function(),
      upcomingInput: function(),
      showPosition: function(),
      test_match: function(regex_match_array, rule_index),
      next: function(),
      lex: function(),
      begin: function(condition),
      popState: function(),
      _currentRules: function(),
      topState: function(),
      pushState: function(condition),

      options: {
          ranges: boolean           (optional: true ==> token location info will include a .range[] member)
          flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
          backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
      },

      performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
      rules: [...],
      conditions: {associative list: name ==> set},
  }
}

token location info (@$, _$, etc.): {
  first_line: n,
  last_line: n,
  first_column: n,
  last_column: n,
  range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
}

the parseError function receives a 'hash' object with these members for lexer and parser errors: {
  text:        (matched text)
  token:       (the produced terminal token, if any)
  line:        (yylineno)
}
while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
  loc:         (yylloc)
  expected:    (string describing the set of expected tokens)
  recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
}

*/ var parser = function () {

var o = function o(k, v, _o, l) {
    for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v) {}return _o;
},
    $V0 = [1, 4],
    $V1 = [1, 3],
    $V2 = [1, 5],
    $V3 = [1, 8, 9, 10, 11, 13, 18, 30, 46, 71, 72, 73, 74, 75, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98],
    $V4 = [2, 2],
    $V5 = [1, 12],
    $V6 = [1, 13],
    $V7 = [1, 14],
    $V8 = [1, 15],
    $V9 = [1, 31],
    $Va = [1, 33],
    $Vb = [1, 22],
    $Vc = [1, 34],
    $Vd = [1, 24],
    $Ve = [1, 25],
    $Vf = [1, 26],
    $Vg = [1, 27],
    $Vh = [1, 28],
    $Vi = [1, 38],
    $Vj = [1, 40],
    $Vk = [1, 35],
    $Vl = [1, 39],
    $Vm = [1, 45],
    $Vn = [1, 44],
    $Vo = [1, 36],
    $Vp = [1, 37],
    $Vq = [1, 41],
    $Vr = [1, 42],
    $Vs = [1, 43],
    $Vt = [1, 8, 9, 10, 11, 13, 18, 30, 32, 46, 71, 72, 73, 74, 75, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98],
    $Vu = [1, 53],
    $Vv = [1, 52],
    $Vw = [1, 54],
    $Vx = [1, 72],
    $Vy = [1, 80],
    $Vz = [1, 81],
    $VA = [1, 66],
    $VB = [1, 65],
    $VC = [1, 85],
    $VD = [1, 84],
    $VE = [1, 82],
    $VF = [1, 83],
    $VG = [1, 73],
    $VH = [1, 68],
    $VI = [1, 67],
    $VJ = [1, 63],
    $VK = [1, 75],
    $VL = [1, 76],
    $VM = [1, 77],
    $VN = [1, 78],
    $VO = [1, 79],
    $VP = [1, 70],
    $VQ = [1, 69],
    $VR = [8, 9, 11],
    $VS = [8, 9, 11, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64],
    $VT = [1, 115],
    $VU = [8, 9, 10, 11, 13, 15, 18, 36, 38, 40, 42, 46, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98],
    $VV = [8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 30, 32, 36, 37, 38, 39, 40, 41, 42, 43, 46, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 71, 72, 73, 74, 75, 78, 81, 84, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98],
    $VW = [1, 117],
    $VX = [1, 118],
    $VY = [8, 9, 10, 11, 13, 18, 30, 32, 46, 71, 72, 73, 74, 75, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98],
    $VZ = [8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 30, 32, 37, 39, 41, 43, 46, 50, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 71, 72, 73, 74, 75, 78, 81, 84, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98],
    $V_ = [13, 18, 46, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98],
    $V$ = [13, 18, 46, 49, 65, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98],
    $V01 = [1, 191],
    $V11 = [1, 188],
    $V21 = [1, 195],
    $V31 = [1, 192],
    $V41 = [1, 189],
    $V51 = [1, 196],
    $V61 = [1, 186],
    $V71 = [1, 187],
    $V81 = [1, 190],
    $V91 = [1, 193],
    $Va1 = [1, 194],
    $Vb1 = [1, 213],
    $Vc1 = [8, 9, 11, 86],
    $Vd1 = [8, 9, 10, 11, 46, 71, 80, 81, 84, 86, 88, 89, 90, 91, 92];
var parser = { trace: function trace() {},
    yy: {},
    symbols_: { "error": 2, "mermaidDoc": 3, "graphConfig": 4, "document": 5, "line": 6, "statement": 7, "SEMI": 8, "NEWLINE": 9, "SPACE": 10, "EOF": 11, "GRAPH": 12, "DIR": 13, "FirstStmtSeperator": 14, "TAGEND": 15, "TAGSTART": 16, "UP": 17, "DOWN": 18, "ending": 19, "endToken": 20, "spaceList": 21, "spaceListNewline": 22, "verticeStatement": 23, "separator": 24, "styleStatement": 25, "linkStyleStatement": 26, "classDefStatement": 27, "classStatement": 28, "clickStatement": 29, "subgraph": 30, "text": 31, "end": 32, "vertex": 33, "link": 34, "alphaNum": 35, "SQS": 36, "SQE": 37, "PS": 38, "PE": 39, "(-": 40, "-)": 41, "DIAMOND_START": 42, "DIAMOND_STOP": 43, "alphaNumStatement": 44, "alphaNumToken": 45, "MINUS": 46, "linkStatement": 47, "arrowText": 48, "TESTSTR": 49, "--": 50, "ARROW_POINT": 51, "ARROW_CIRCLE": 52, "ARROW_CROSS": 53, "ARROW_OPEN": 54, "-.": 55, "DOTTED_ARROW_POINT": 56, "DOTTED_ARROW_CIRCLE": 57, "DOTTED_ARROW_CROSS": 58, "DOTTED_ARROW_OPEN": 59, "==": 60, "THICK_ARROW_POINT": 61, "THICK_ARROW_CIRCLE": 62, "THICK_ARROW_CROSS": 63, "THICK_ARROW_OPEN": 64, "PIPE": 65, "textToken": 66, "STR": 67, "commentText": 68, "commentToken": 69, "keywords": 70, "STYLE": 71, "LINKSTYLE": 72, "CLASSDEF": 73, "CLASS": 74, "CLICK": 75, "textNoTags": 76, "textNoTagsToken": 77, "DEFAULT": 78, "stylesOpt": 79, "HEX": 80, "NUM": 81, "INTERPOLATE": 82, "commentStatement": 83, "PCT": 84, "style": 85, "COMMA": 86, "styleComponent": 87, "ALPHA": 88, "COLON": 89, "UNIT": 90, "BRKT": 91, "DOT": 92, "graphCodeTokens": 93, "PUNCTUATION": 94, "UNICODE_TEXT": 95, "PLUS": 96, "EQUALS": 97, "MULT": 98, "TAG_START": 99, "TAG_END": 100, "QUOTE": 101, "$accept": 0, "$end": 1 },
    terminals_: { 2: "error", 8: "SEMI", 9: "NEWLINE", 10: "SPACE", 11: "EOF", 12: "GRAPH", 13: "DIR", 15: "TAGEND", 16: "TAGSTART", 17: "UP", 18: "DOWN", 30: "subgraph", 32: "end", 36: "SQS", 37: "SQE", 38: "PS", 39: "PE", 40: "(-", 41: "-)", 42: "DIAMOND_START", 43: "DIAMOND_STOP", 46: "MINUS", 49: "TESTSTR", 50: "--", 51: "ARROW_POINT", 52: "ARROW_CIRCLE", 53: "ARROW_CROSS", 54: "ARROW_OPEN", 55: "-.", 56: "DOTTED_ARROW_POINT", 57: "DOTTED_ARROW_CIRCLE", 58: "DOTTED_ARROW_CROSS", 59: "DOTTED_ARROW_OPEN", 60: "==", 61: "THICK_ARROW_POINT", 62: "THICK_ARROW_CIRCLE", 63: "THICK_ARROW_CROSS", 64: "THICK_ARROW_OPEN", 65: "PIPE", 67: "STR", 71: "STYLE", 72: "LINKSTYLE", 73: "CLASSDEF", 74: "CLASS", 75: "CLICK", 78: "DEFAULT", 80: "HEX", 81: "NUM", 82: "INTERPOLATE", 84: "PCT", 86: "COMMA", 88: "ALPHA", 89: "COLON", 90: "UNIT", 91: "BRKT", 92: "DOT", 94: "PUNCTUATION", 95: "UNICODE_TEXT", 96: "PLUS", 97: "EQUALS", 98: "MULT", 99: "TAG_START", 100: "TAG_END", 101: "QUOTE" },
    productions_: [0, [3, 2], [5, 0], [5, 2], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [4, 2], [4, 2], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [19, 2], [19, 1], [20, 1], [20, 1], [20, 1], [14, 1], [14, 1], [14, 2], [22, 2], [22, 2], [22, 1], [22, 1], [21, 2], [21, 1], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 5], [7, 4], [24, 1], [24, 1], [24, 1], [23, 3], [23, 1], [33, 4], [33, 5], [33, 6], [33, 7], [33, 4], [33, 5], [33, 4], [33, 5], [33, 4], [33, 5], [33, 4], [33, 5], [33, 1], [33, 2], [35, 1], [35, 2], [44, 1], [44, 1], [44, 1], [44, 1], [34, 2], [34, 3], [34, 3], [34, 1], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [34, 3], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [47, 1], [48, 3], [31, 1], [31, 2], [31, 1], [68, 1], [68, 2], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [70, 1], [76, 1], [76, 2], [27, 5], [27, 5], [28, 5], [29, 5], [29, 7], [29, 5], [29, 7], [25, 5], [25, 5], [26, 5], [26, 5], [26, 9], [26, 9], [26, 7], [26, 7], [83, 3], [79, 1], [79, 3], [85, 1], [85, 2], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [87, 1], [69, 1], [69, 1], [66, 1], [66, 1], [66, 1], [66, 1], [66, 1], [66, 1], [66, 1], [77, 1], [77, 1], [77, 1], [77, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1], [93, 1]],
    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
        /* this == yyval */

        var $0 = $$.length - 1;
        switch (yystate) {
            case 2:
                this.$ = [];
                break;
            case 3:

                if ($$[$0] !== []) {
                    $$[$0 - 1].push($$[$0]);
                }
                this.$ = $$[$0 - 1];
                break;
            case 4:case 57:case 59:case 60:case 92:case 94:case 95:case 108:
                this.$ = $$[$0];
                break;
            case 11:
                yy.setDirection($$[$0 - 1]);this.$ = $$[$0 - 1];
                break;
            case 12:
                yy.setDirection("LR");this.$ = $$[$0 - 1];
                break;
            case 13:
                yy.setDirection("RL");this.$ = $$[$0 - 1];
                break;
            case 14:
                yy.setDirection("BT");this.$ = $$[$0 - 1];
                break;
            case 15:
                yy.setDirection("TB");this.$ = $$[$0 - 1];
                break;
            case 30:
                this.$ = $$[$0 - 1];
                break;
            case 31:case 32:case 33:case 34:case 35:
                this.$ = [];
                break;
            case 36:
                this.$ = yy.addSubGraph($$[$0 - 1], $$[$0 - 3]);
                break;
            case 37:
                this.$ = yy.addSubGraph($$[$0 - 1], undefined);
                break;
            case 41:
                yy.addLink($$[$0 - 2], $$[$0], $$[$0 - 1]);this.$ = [$$[$0 - 2], $$[$0]];
                break;
            case 42:
                this.$ = [$$[$0]];
                break;
            case 43:
                this.$ = $$[$0 - 3];yy.addVertex($$[$0 - 3], $$[$0 - 1], 'square');
                break;
            case 44:
                this.$ = $$[$0 - 4];yy.addVertex($$[$0 - 4], $$[$0 - 2], 'square');
                break;
            case 45:
                this.$ = $$[$0 - 5];yy.addVertex($$[$0 - 5], $$[$0 - 2], 'circle');
                break;
            case 46:
                this.$ = $$[$0 - 6];yy.addVertex($$[$0 - 6], $$[$0 - 3], 'circle');
                break;
            case 47:
                this.$ = $$[$0 - 3];yy.addVertex($$[$0 - 3], $$[$0 - 1], 'ellipse');
                break;
            case 48:
                this.$ = $$[$0 - 4];yy.addVertex($$[$0 - 4], $$[$0 - 2], 'ellipse');
                break;
            case 49:
                this.$ = $$[$0 - 3];yy.addVertex($$[$0 - 3], $$[$0 - 1], 'round');
                break;
            case 50:
                this.$ = $$[$0 - 4];yy.addVertex($$[$0 - 4], $$[$0 - 2], 'round');
                break;
            case 51:
                this.$ = $$[$0 - 3];yy.addVertex($$[$0 - 3], $$[$0 - 1], 'diamond');
                break;
            case 52:
                this.$ = $$[$0 - 4];yy.addVertex($$[$0 - 4], $$[$0 - 2], 'diamond');
                break;
            case 53:
                this.$ = $$[$0 - 3];yy.addVertex($$[$0 - 3], $$[$0 - 1], 'odd');
                break;
            case 54:
                this.$ = $$[$0 - 4];yy.addVertex($$[$0 - 4], $$[$0 - 2], 'odd');
                break;
            case 55:
                this.$ = $$[$0];yy.addVertex($$[$0]);
                break;
            case 56:
                this.$ = $$[$0 - 1];yy.addVertex($$[$0 - 1]);
                break;
            case 58:case 93:case 96:case 109:
                this.$ = $$[$0 - 1] + '' + $$[$0];
                break;
            case 61:
                this.$ = 'v';
                break;
            case 62:
                this.$ = '-';
                break;
            case 63:
                $$[$0 - 1].text = $$[$0];this.$ = $$[$0 - 1];
                break;
            case 64:case 65:
                $$[$0 - 2].text = $$[$0 - 1];this.$ = $$[$0 - 2];
                break;
            case 66:
                this.$ = $$[$0];
                break;
            case 67:
                this.$ = { "type": "arrow", "stroke": "normal", "text": $$[$0 - 1] };
                break;
            case 68:
                this.$ = { "type": "arrow_circle", "stroke": "normal", "text": $$[$0 - 1] };
                break;
            case 69:
                this.$ = { "type": "arrow_cross", "stroke": "normal", "text": $$[$0 - 1] };
                break;
            case 70:
                this.$ = { "type": "arrow_open", "stroke": "normal", "text": $$[$0 - 1] };
                break;
            case 71:
                this.$ = { "type": "arrow", "stroke": "dotted", "text": $$[$0 - 1] };
                break;
            case 72:
                this.$ = { "type": "arrow_circle", "stroke": "dotted", "text": $$[$0 - 1] };
                break;
            case 73:
                this.$ = { "type": "arrow_cross", "stroke": "dotted", "text": $$[$0 - 1] };
                break;
            case 74:
                this.$ = { "type": "arrow_open", "stroke": "dotted", "text": $$[$0 - 1] };
                break;
            case 75:
                this.$ = { "type": "arrow", "stroke": "thick", "text": $$[$0 - 1] };
                break;
            case 76:
                this.$ = { "type": "arrow_circle", "stroke": "thick", "text": $$[$0 - 1] };
                break;
            case 77:
                this.$ = { "type": "arrow_cross", "stroke": "thick", "text": $$[$0 - 1] };
                break;
            case 78:
                this.$ = { "type": "arrow_open", "stroke": "thick", "text": $$[$0 - 1] };
                break;
            case 79:
                this.$ = { "type": "arrow", "stroke": "normal" };
                break;
            case 80:
                this.$ = { "type": "arrow_circle", "stroke": "normal" };
                break;
            case 81:
                this.$ = { "type": "arrow_cross", "stroke": "normal" };
                break;
            case 82:
                this.$ = { "type": "arrow_open", "stroke": "normal" };
                break;
            case 83:
                this.$ = { "type": "arrow", "stroke": "dotted" };
                break;
            case 84:
                this.$ = { "type": "arrow_circle", "stroke": "dotted" };
                break;
            case 85:
                this.$ = { "type": "arrow_cross", "stroke": "dotted" };
                break;
            case 86:
                this.$ = { "type": "arrow_open", "stroke": "dotted" };
                break;
            case 87:
                this.$ = { "type": "arrow", "stroke": "thick" };
                break;
            case 88:
                this.$ = { "type": "arrow_circle", "stroke": "thick" };
                break;
            case 89:
                this.$ = { "type": "arrow_cross", "stroke": "thick" };
                break;
            case 90:
                this.$ = { "type": "arrow_open", "stroke": "thick" };
                break;
            case 91:
                this.$ = $$[$0 - 1];
                break;
            case 110:case 111:
                this.$ = $$[$0 - 4];yy.addClass($$[$0 - 2], $$[$0]);
                break;
            case 112:
                this.$ = $$[$0 - 4];yy.setClass($$[$0 - 2], $$[$0]);
                break;
            case 113:
                this.$ = $$[$0 - 4];yy.setClickEvent($$[$0 - 2], $$[$0], undefined, undefined);
                break;
            case 114:
                this.$ = $$[$0 - 6];yy.setClickEvent($$[$0 - 4], $$[$0 - 2], undefined, $$[$0]);
                break;
            case 115:
                this.$ = $$[$0 - 4];yy.setClickEvent($$[$0 - 2], undefined, $$[$0], undefined);
                break;
            case 116:
                this.$ = $$[$0 - 6];yy.setClickEvent($$[$0 - 4], undefined, $$[$0 - 2], $$[$0]);
                break;
            case 117:
                this.$ = $$[$0 - 4];yy.addVertex($$[$0 - 2], undefined, undefined, $$[$0]);
                break;
            case 118:case 119:case 120:
                this.$ = $$[$0 - 4];yy.updateLink($$[$0 - 2], $$[$0]);
                break;
            case 121:case 122:
                this.$ = $$[$0 - 8];yy.updateLinkInterpolate($$[$0 - 6], $$[$0 - 2]);yy.updateLink($$[$0 - 6], $$[$0]);
                break;
            case 123:case 124:
                this.$ = $$[$0 - 6];yy.updateLinkInterpolate($$[$0 - 4], $$[$0]);
                break;
            case 126:
                this.$ = [$$[$0]];
                break;
            case 127:
                $$[$0 - 2].push($$[$0]);this.$ = $$[$0 - 2];
                break;
            case 129:
                this.$ = $$[$0 - 1] + $$[$0];
                break;
        }
    },
    table: [{ 3: 1, 4: 2, 9: $V0, 10: $V1, 12: $V2 }, { 1: [3] }, o($V3, $V4, { 5: 6 }), { 4: 7, 9: $V0, 10: $V1, 12: $V2 }, { 4: 8, 9: $V0, 10: $V1, 12: $V2 }, { 10: [1, 9] }, { 1: [2, 1], 6: 10, 7: 11, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 13: $V9, 18: $Va, 23: 16, 25: 17, 26: 18, 27: 19, 28: 20, 29: 21, 30: $Vb, 33: 23, 35: 29, 44: 30, 45: 32, 46: $Vc, 71: $Vd, 72: $Ve, 73: $Vf, 74: $Vg, 75: $Vh, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, o($V3, [2, 9]), o($V3, [2, 10]), { 13: [1, 46], 15: [1, 47], 16: [1, 48], 17: [1, 49], 18: [1, 50] }, o($Vt, [2, 3]), o($Vt, [2, 4]), o($Vt, [2, 5]), o($Vt, [2, 6]), o($Vt, [2, 7]), o($Vt, [2, 8]), { 8: $Vu, 9: $Vv, 11: $Vw, 24: 51 }, { 8: $Vu, 9: $Vv, 11: $Vw, 24: 55 }, { 8: $Vu, 9: $Vv, 11: $Vw, 24: 56 }, { 8: $Vu, 9: $Vv, 11: $Vw, 24: 57 }, { 8: $Vu, 9: $Vv, 11: $Vw, 24: 58 }, { 8: $Vu, 9: $Vv, 11: $Vw, 24: 59 }, { 8: $Vu, 9: $Vv, 10: $Vx, 11: $Vw, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 24: 61, 30: $VE, 31: 60, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, o($VR, [2, 42], { 34: 86, 47: 87, 50: [1, 88], 51: [1, 91], 52: [1, 92], 53: [1, 93], 54: [1, 94], 55: [1, 89], 56: [1, 95], 57: [1, 96], 58: [1, 97], 59: [1, 98], 60: [1, 90], 61: [1, 99], 62: [1, 100], 63: [1, 101], 64: [1, 102] }), { 10: [1, 103] }, { 10: [1, 104] }, { 10: [1, 105] }, { 10: [1, 106] }, { 10: [1, 107] }, o($VS, [2, 55], { 45: 32, 21: 113, 44: 114, 10: $VT, 13: $V9, 15: [1, 112], 18: $Va, 36: [1, 108], 38: [1, 109], 40: [1, 110], 42: [1, 111], 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }), o($VU, [2, 57]), o($VU, [2, 59]), o($VU, [2, 60]), o($VU, [2, 61]), o($VU, [2, 62]), o($VV, [2, 154]), o($VV, [2, 155]), o($VV, [2, 156]), o($VV, [2, 157]), o($VV, [2, 158]), o($VV, [2, 159]), o($VV, [2, 160]), o($VV, [2, 161]), o($VV, [2, 162]), o($VV, [2, 163]), o($VV, [2, 164]), { 8: $VW, 9: $VX, 10: $VT, 14: 116, 21: 119 }, { 8: $VW, 9: $VX, 10: $VT, 14: 120, 21: 119 }, { 8: $VW, 9: $VX, 10: $VT, 14: 121, 21: 119 }, { 8: $VW, 9: $VX, 10: $VT, 14: 122, 21: 119 }, { 8: $VW, 9: $VX, 10: $VT, 14: 123, 21: 119 }, o($Vt, [2, 30]), o($Vt, [2, 38]), o($Vt, [2, 39]), o($Vt, [2, 40]), o($Vt, [2, 31]), o($Vt, [2, 32]), o($Vt, [2, 33]), o($Vt, [2, 34]), o($Vt, [2, 35]), { 8: $Vu, 9: $Vv, 10: $Vx, 11: $Vw, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 24: 124, 30: $VE, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, o($VY, $V4, { 5: 126 }), o($VZ, [2, 92]), o($VZ, [2, 94]), o($VZ, [2, 143]), o($VZ, [2, 144]), o($VZ, [2, 145]), o($VZ, [2, 146]), o($VZ, [2, 147]), o($VZ, [2, 148]), o($VZ, [2, 149]), o($VZ, [2, 150]), o($VZ, [2, 151]), o($VZ, [2, 152]), o($VZ, [2, 153]), o($VZ, [2, 97]), o($VZ, [2, 98]), o($VZ, [2, 99]), o($VZ, [2, 100]), o($VZ, [2, 101]), o($VZ, [2, 102]), o($VZ, [2, 103]), o($VZ, [2, 104]), o($VZ, [2, 105]), o($VZ, [2, 106]), o($VZ, [2, 107]), { 13: $V9, 18: $Va, 33: 127, 35: 29, 44: 30, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, o($V_, [2, 66], { 48: 128, 49: [1, 129], 65: [1, 130] }), { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 131, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 132, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 133, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, o($V$, [2, 79]), o($V$, [2, 80]), o($V$, [2, 81]), o($V$, [2, 82]), o($V$, [2, 83]), o($V$, [2, 84]), o($V$, [2, 85]), o($V$, [2, 86]), o($V$, [2, 87]), o($V$, [2, 88]), o($V$, [2, 89]), o($V$, [2, 90]), { 13: $V9, 18: $Va, 35: 134, 44: 30, 45: 32, 46: $Vc, 80: [1, 135], 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 78: [1, 136], 81: [1, 137] }, { 13: $V9, 18: $Va, 35: 139, 44: 30, 45: 32, 46: $Vc, 78: [1, 138], 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 13: $V9, 18: $Va, 35: 140, 44: 30, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 13: $V9, 18: $Va, 35: 141, 44: 30, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 142, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 144, 32: $VF, 38: [1, 143], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 145, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 146, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 147, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, o($VS, [2, 56]), o($VU, [2, 58]), o($VS, [2, 29], { 21: 148, 10: $VT }), o($V3, [2, 11]), o($V3, [2, 21]), o($V3, [2, 22]), { 9: [1, 149] }, o($V3, [2, 12]), o($V3, [2, 13]), o($V3, [2, 14]), o($V3, [2, 15]), o($VY, $V4, { 5: 150 }), o($VZ, [2, 93]), { 6: 10, 7: 11, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 13: $V9, 18: $Va, 23: 16, 25: 17, 26: 18, 27: 19, 28: 20, 29: 21, 30: $Vb, 32: [1, 151], 33: 23, 35: 29, 44: 30, 45: 32, 46: $Vc, 71: $Vd, 72: $Ve, 73: $Vf, 74: $Vg, 75: $Vh, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, o($VR, [2, 41]), o($V_, [2, 63], { 10: [1, 152] }), { 10: [1, 153] }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 154, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 45: 71, 46: $VG, 50: $VH, 51: [1, 155], 52: [1, 156], 53: [1, 157], 54: [1, 158], 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 45: 71, 46: $VG, 50: $VH, 56: [1, 159], 57: [1, 160], 58: [1, 161], 59: [1, 162], 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 61: [1, 163], 62: [1, 164], 63: [1, 165], 64: [1, 166], 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: [1, 167], 13: $V9, 18: $Va, 44: 114, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: [1, 168] }, { 10: [1, 169] }, { 10: [1, 170] }, { 10: [1, 171] }, { 10: [1, 172], 13: $V9, 18: $Va, 44: 114, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: [1, 173], 13: $V9, 18: $Va, 44: 114, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: [1, 174], 13: $V9, 18: $Va, 44: 114, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 37: [1, 175], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 31: 176, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 62, 67: $VJ, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 39: [1, 177], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 41: [1, 178], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 43: [1, 179], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 37: [1, 180], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, o($VS, [2, 28]), o($V3, [2, 23]), { 6: 10, 7: 11, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 13: $V9, 18: $Va, 23: 16, 25: 17, 26: 18, 27: 19, 28: 20, 29: 21, 30: $Vb, 32: [1, 181], 33: 23, 35: 29, 44: 30, 45: 32, 46: $Vc, 71: $Vd, 72: $Ve, 73: $Vf, 74: $Vg, 75: $Vh, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, o($Vt, [2, 37]), o($V_, [2, 65]), o($V_, [2, 64]), { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 45: 71, 46: $VG, 50: $VH, 60: $VI, 65: [1, 182], 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, o($V_, [2, 67]), o($V_, [2, 68]), o($V_, [2, 69]), o($V_, [2, 70]), o($V_, [2, 71]), o($V_, [2, 72]), o($V_, [2, 73]), o($V_, [2, 74]), o($V_, [2, 75]), o($V_, [2, 76]), o($V_, [2, 77]), o($V_, [2, 78]), { 10: $V01, 46: $V11, 71: $V21, 79: 183, 80: $V31, 81: $V41, 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1 }, { 10: $V01, 46: $V11, 71: $V21, 79: 197, 80: $V31, 81: $V41, 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1 }, { 10: $V01, 46: $V11, 71: $V21, 79: 198, 80: $V31, 81: $V41, 82: [1, 199], 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1 }, { 10: $V01, 46: $V11, 71: $V21, 79: 200, 80: $V31, 81: $V41, 82: [1, 201], 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1 }, { 10: $V01, 46: $V11, 71: $V21, 79: 202, 80: $V31, 81: $V41, 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1 }, { 10: $V01, 46: $V11, 71: $V21, 79: 203, 80: $V31, 81: $V41, 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1 }, { 13: $V9, 18: $Va, 35: 204, 44: 30, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 13: $V9, 18: $Va, 35: 205, 44: 30, 45: 32, 46: $Vc, 67: [1, 206], 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, o($VS, [2, 43], { 21: 207, 10: $VT }), { 10: $Vx, 12: $Vy, 13: $Vz, 15: $VA, 16: $VB, 17: $VC, 18: $VD, 30: $VE, 32: $VF, 39: [1, 208], 45: 71, 46: $VG, 50: $VH, 60: $VI, 66: 125, 70: 74, 71: $VK, 72: $VL, 73: $VM, 74: $VN, 75: $VO, 77: 64, 78: $VP, 81: $Vi, 84: $VQ, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, o($VS, [2, 49], { 21: 209, 10: $VT }), o($VS, [2, 47], { 21: 210, 10: $VT }), o($VS, [2, 51], { 21: 211, 10: $VT }), o($VS, [2, 53], { 21: 212, 10: $VT }), o($Vt, [2, 36]), o([10, 13, 18, 46, 81, 86, 88, 89, 91, 92, 94, 95, 96, 97, 98], [2, 91]), o($VR, [2, 117], { 86: $Vb1 }), o($Vc1, [2, 126], { 87: 214, 10: $V01, 46: $V11, 71: $V21, 80: $V31, 81: $V41, 84: $V51, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1 }), o($Vd1, [2, 128]), o($Vd1, [2, 130]), o($Vd1, [2, 131]), o($Vd1, [2, 132]), o($Vd1, [2, 133]), o($Vd1, [2, 134]), o($Vd1, [2, 135]), o($Vd1, [2, 136]), o($Vd1, [2, 137]), o($Vd1, [2, 138]), o($Vd1, [2, 139]), o($Vd1, [2, 140]), o($VR, [2, 118], { 86: $Vb1 }), o($VR, [2, 119], { 86: $Vb1 }), { 10: [1, 215] }, o($VR, [2, 120], { 86: $Vb1 }), { 10: [1, 216] }, o($VR, [2, 110], { 86: $Vb1 }), o($VR, [2, 111], { 86: $Vb1 }), o($VR, [2, 112], { 45: 32, 44: 114, 13: $V9, 18: $Va, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }), o($VR, [2, 113], { 45: 32, 44: 114, 10: [1, 217], 13: $V9, 18: $Va, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }), o($VR, [2, 115], { 10: [1, 218] }), o($VS, [2, 44]), { 39: [1, 219] }, o($VS, [2, 50]), o($VS, [2, 48]), o($VS, [2, 52]), o($VS, [2, 54]), { 10: $V01, 46: $V11, 71: $V21, 80: $V31, 81: $V41, 84: $V51, 85: 220, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1 }, o($Vd1, [2, 129]), { 13: $V9, 18: $Va, 35: 221, 44: 30, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 13: $V9, 18: $Va, 35: 222, 44: 30, 45: 32, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }, { 67: [1, 223] }, { 67: [1, 224] }, o($VS, [2, 45], { 21: 225, 10: $VT }), o($Vc1, [2, 127], { 87: 214, 10: $V01, 46: $V11, 71: $V21, 80: $V31, 81: $V41, 84: $V51, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1 }), o($VR, [2, 123], { 45: 32, 44: 114, 10: [1, 226], 13: $V9, 18: $Va, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }), o($VR, [2, 124], { 45: 32, 44: 114, 10: [1, 227], 13: $V9, 18: $Va, 46: $Vc, 81: $Vi, 86: $Vj, 88: $Vk, 89: $Vl, 91: $Vm, 92: $Vn, 94: $Vo, 95: $Vp, 96: $Vq, 97: $Vr, 98: $Vs }), o($VR, [2, 114]), o($VR, [2, 116]), o($VS, [2, 46]), { 10: $V01, 46: $V11, 71: $V21, 79: 228, 80: $V31, 81: $V41, 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1 }, { 10: $V01, 46: $V11, 71: $V21, 79: 229, 80: $V31, 81: $V41, 84: $V51, 85: 184, 87: 185, 88: $V61, 89: $V71, 90: $V81, 91: $V91, 92: $Va1 }, o($VR, [2, 121], { 86: $Vb1 }), o($VR, [2, 122], { 86: $Vb1 })],
    defaultActions: {},
    parseError: function parseError(str, hash) {
        if (hash.recoverable) {
            this.trace(str);
        } else {
            var error = new Error(str);
            error.hash = hash;
            throw error;
        }
    },
    parse: function parse(input) {
        var self = this,
            stack = [0],
            tstack = [],
            vstack = [null],
            lstack = [],
            table = this.table,
            yytext = '',
            yylineno = 0,
            yyleng = 0,
            recovering = 0,
            TERROR = 2,
            EOF = 1;
        var args = lstack.slice.call(arguments, 1);
        var lexer = Object.create(this.lexer);
        var sharedState = { yy: {} };
        for (var k in this.yy) {
            if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
                sharedState.yy[k] = this.yy[k];
            }
        }
        lexer.setInput(input, sharedState.yy);
        sharedState.yy.lexer = lexer;
        sharedState.yy.parser = this;
        if (typeof lexer.yylloc == 'undefined') {
            lexer.yylloc = {};
        }
        var yyloc = lexer.yylloc;
        lstack.push(yyloc);
        var ranges = lexer.options && lexer.options.ranges;
        if (typeof sharedState.yy.parseError === 'function') {
            this.parseError = sharedState.yy.parseError;
        } else {
            this.parseError = Object.getPrototypeOf(this).parseError;
        }
        function popStack(n) {
            stack.length = stack.length - 2 * n;
            vstack.length = vstack.length - n;
            lstack.length = lstack.length - n;
        }
        function lex() {
            var token;
            token = tstack.pop() || lexer.lex() || EOF;
            if (typeof token !== 'number') {
                if (token instanceof Array) {
                    tstack = token;
                    token = tstack.pop();
                }
                token = self.symbols_[token] || token;
            }
            return token;
        }
        var symbol,
            preErrorSymbol,
            state,
            action,
            a,
            r,
            yyval = {},
            p,
            len,
            newState,
            expected;
        while (true) {
            state = stack[stack.length - 1];
            if (this.defaultActions[state]) {
                action = this.defaultActions[state];
            } else {
                if (symbol === null || typeof symbol == 'undefined') {
                    symbol = lex();
                }
                action = table[state] && table[state][symbol];
            }
            if (typeof action === 'undefined' || !action.length || !action[0]) {
                var errStr = '';
                expected = [];
                for (p in table[state]) {
                    if (this.terminals_[p] && p > TERROR) {
                        expected.push('\'' + this.terminals_[p] + '\'');
                    }
                }
                if (lexer.showPosition) {
                    errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
                } else {
                    errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
                }
                this.parseError(errStr, {
                    text: lexer.match,
                    token: this.terminals_[symbol] || symbol,
                    line: lexer.yylineno,
                    loc: yyloc,
                    expected: expected
                });
            }
            if (action[0] instanceof Array && action.length > 1) {
                throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
            }
            switch (action[0]) {
                case 1:
                    stack.push(symbol);
                    vstack.push(lexer.yytext);
                    lstack.push(lexer.yylloc);
                    stack.push(action[1]);
                    symbol = null;
                    if (!preErrorSymbol) {
                        yyleng = lexer.yyleng;
                        yytext = lexer.yytext;
                        yylineno = lexer.yylineno;
                        yyloc = lexer.yylloc;
                        if (recovering > 0) {
                            recovering--;
                        }
                    } else {
                        symbol = preErrorSymbol;
                        preErrorSymbol = null;
                    }
                    break;
                case 2:
                    len = this.productions_[action[1]][1];
                    yyval.$ = vstack[vstack.length - len];
                    yyval._$ = {
                        first_line: lstack[lstack.length - (len || 1)].first_line,
                        last_line: lstack[lstack.length - 1].last_line,
                        first_column: lstack[lstack.length - (len || 1)].first_column,
                        last_column: lstack[lstack.length - 1].last_column
                    };
                    if (ranges) {
                        yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
                    }
                    r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
                    if (typeof r !== 'undefined') {
                        return r;
                    }
                    if (len) {
                        stack = stack.slice(0, -1 * len * 2);
                        vstack = vstack.slice(0, -1 * len);
                        lstack = lstack.slice(0, -1 * len);
                    }
                    stack.push(this.productions_[action[1]][0]);
                    vstack.push(yyval.$);
                    lstack.push(yyval._$);
                    newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
                    stack.push(newState);
                    break;
                case 3:
                    return true;
            }
        }
        return true;
    } };

/* generated by jison-lex 0.3.4 */
var lexer = function () {
    var lexer = {

        EOF: 1,

        parseError: function parseError(str, hash) {
            if (this.yy.parser) {
                this.yy.parser.parseError(str, hash);
            } else {
                throw new Error(str);
            }
        },

        // resets the lexer, sets new input
        setInput: function setInput(input, yy) {
            this.yy = yy || this.yy || {};
            this._input = input;
            this._more = this._backtrack = this.done = false;
            this.yylineno = this.yyleng = 0;
            this.yytext = this.matched = this.match = '';
            this.conditionStack = ['INITIAL'];
            this.yylloc = {
                first_line: 1,
                first_column: 0,
                last_line: 1,
                last_column: 0
            };
            if (this.options.ranges) {
                this.yylloc.range = [0, 0];
            }
            this.offset = 0;
            return this;
        },

        // consumes and returns one char from the input
        input: function input() {
            var ch = this._input[0];
            this.yytext += ch;
            this.yyleng++;
            this.offset++;
            this.match += ch;
            this.matched += ch;
            var lines = ch.match(/(?:\r\n?|\n).*/g);
            if (lines) {
                this.yylineno++;
                this.yylloc.last_line++;
            } else {
                this.yylloc.last_column++;
            }
            if (this.options.ranges) {
                this.yylloc.range[1]++;
            }

            this._input = this._input.slice(1);
            return ch;
        },

        // unshifts one char (or a string) into the input
        unput: function unput(ch) {
            var len = ch.length;
            var lines = ch.split(/(?:\r\n?|\n)/g);

            this._input = ch + this._input;
            this.yytext = this.yytext.substr(0, this.yytext.length - len);
            //this.yyleng -= len;
            this.offset -= len;
            var oldLines = this.match.split(/(?:\r\n?|\n)/g);
            this.match = this.match.substr(0, this.match.length - 1);
            this.matched = this.matched.substr(0, this.matched.length - 1);

            if (lines.length - 1) {
                this.yylineno -= lines.length - 1;
            }
            var r = this.yylloc.range;

            this.yylloc = {
                first_line: this.yylloc.first_line,
                last_line: this.yylineno + 1,
                first_column: this.yylloc.first_column,
                last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
            };

            if (this.options.ranges) {
                this.yylloc.range = [r[0], r[0] + this.yyleng - len];
            }
            this.yyleng = this.yytext.length;
            return this;
        },

        // When called from action, caches matched text and appends it on next action
        more: function more() {
            this._more = true;
            return this;
        },

        // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
        reject: function reject() {
            if (this.options.backtrack_lexer) {
                this._backtrack = true;
            } else {
                return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
                    text: "",
                    token: null,
                    line: this.yylineno
                });
            }
            return this;
        },

        // retain first n characters of the match
        less: function less(n) {
            this.unput(this.match.slice(n));
        },

        // displays already matched input, i.e. for error messages
        pastInput: function pastInput() {
            var past = this.matched.substr(0, this.matched.length - this.match.length);
            return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, "");
        },

        // displays upcoming input, i.e. for error messages
        upcomingInput: function upcomingInput() {
            var next = this.match;
            if (next.length < 20) {
                next += this._input.substr(0, 20 - next.length);
            }
            return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
        },

        // displays the character position where the lexing error occurred, i.e. for error messages
        showPosition: function showPosition() {
            var pre = this.pastInput();
            var c = new Array(pre.length + 1).join("-");
            return pre + this.upcomingInput() + "\n" + c + "^";
        },

        // test the lexed token: return FALSE when not a match, otherwise return token
        test_match: function test_match(match, indexed_rule) {
            var token, lines, backup;

            if (this.options.backtrack_lexer) {
                // save context
                backup = {
                    yylineno: this.yylineno,
                    yylloc: {
                        first_line: this.yylloc.first_line,
                        last_line: this.last_line,
                        first_column: this.yylloc.first_column,
                        last_column: this.yylloc.last_column
                    },
                    yytext: this.yytext,
                    match: this.match,
                    matches: this.matches,
                    matched: this.matched,
                    yyleng: this.yyleng,
                    offset: this.offset,
                    _more: this._more,
                    _input: this._input,
                    yy: this.yy,
                    conditionStack: this.conditionStack.slice(0),
                    done: this.done
                };
                if (this.options.ranges) {
                    backup.yylloc.range = this.yylloc.range.slice(0);
                }
            }

            lines = match[0].match(/(?:\r\n?|\n).*/g);
            if (lines) {
                this.yylineno += lines.length;
            }
            this.yylloc = {
                first_line: this.yylloc.last_line,
                last_line: this.yylineno + 1,
                first_column: this.yylloc.last_column,
                last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
            };
            this.yytext += match[0];
            this.match += match[0];
            this.matches = match;
            this.yyleng = this.yytext.length;
            if (this.options.ranges) {
                this.yylloc.range = [this.offset, this.offset += this.yyleng];
            }
            this._more = false;
            this._backtrack = false;
            this._input = this._input.slice(match[0].length);
            this.matched += match[0];
            token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
            if (this.done && this._input) {
                this.done = false;
            }
            if (token) {
                return token;
            } else if (this._backtrack) {
                // recover context
                for (var k in backup) {
                    this[k] = backup[k];
                }
                return false; // rule action called reject() implying the next rule should be tested instead.
            }
            return false;
        },

        // return next match in input
        next: function next() {
            if (this.done) {
                return this.EOF;
            }
            if (!this._input) {
                this.done = true;
            }

            var token, match, tempMatch, index;
            if (!this._more) {
                this.yytext = '';
                this.match = '';
            }
            var rules = this._currentRules();
            for (var i = 0; i < rules.length; i++) {
                tempMatch = this._input.match(this.rules[rules[i]]);
                if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
                    match = tempMatch;
                    index = i;
                    if (this.options.backtrack_lexer) {
                        token = this.test_match(tempMatch, rules[i]);
                        if (token !== false) {
                            return token;
                        } else if (this._backtrack) {
                            match = false;
                            continue; // rule action called reject() implying a rule MISmatch.
                        } else {
                            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                            return false;
                        }
                    } else if (!this.options.flex) {
                        break;
                    }
                }
            }
            if (match) {
                token = this.test_match(match, rules[index]);
                if (token !== false) {
                    return token;
                }
                // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                return false;
            }
            if (this._input === "") {
                return this.EOF;
            } else {
                return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
                    text: "",
                    token: null,
                    line: this.yylineno
                });
            }
        },

        // return next match that has a token
        lex: function lex() {
            var r = this.next();
            if (r) {
                return r;
            } else {
                return this.lex();
            }
        },

        // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
        begin: function begin(condition) {
            this.conditionStack.push(condition);
        },

        // pop the previously active lexer condition state off the condition stack
        popState: function popState() {
            var n = this.conditionStack.length - 1;
            if (n > 0) {
                return this.conditionStack.pop();
            } else {
                return this.conditionStack[0];
            }
        },

        // produce the lexer rule set which is active for the currently active lexer condition state
        _currentRules: function _currentRules() {
            if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
                return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
            } else {
                return this.conditions["INITIAL"].rules;
            }
        },

        // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
        topState: function topState(n) {
            n = this.conditionStack.length - 1 - Math.abs(n || 0);
            if (n >= 0) {
                return this.conditionStack[n];
            } else {
                return "INITIAL";
            }
        },

        // alias for begin(condition)
        pushState: function pushState(condition) {
            this.begin(condition);
        },

        // return the number of states currently on the stack
        stateStackSize: function stateStackSize() {
            return this.conditionStack.length;
        },
        options: {},
        performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
            var YYSTATE = YY_START;
            switch ($avoiding_name_collisions) {
                case 0:
                    /* do nothing */
                    break;
                case 1:
                    this.begin("string");
                    break;
                case 2:
                    this.popState();
                    break;
                case 3:
                    return "STR";
                    break;
                case 4:
                    return 71;
                    break;
                case 5:
                    return 78;
                    break;
                case 6:
                    return 72;
                    break;
                case 7:
                    return 82;
                    break;
                case 8:
                    return 73;
                    break;
                case 9:
                    return 74;
                    break;
                case 10:
                    return 75;
                    break;
                case 11:
                    return 12;
                    break;
                case 12:
                    return 30;
                    break;
                case 13:
                    return 32;
                    break;
                case 14:
                    return 13;
                    break;
                case 15:
                    return 13;
                    break;
                case 16:
                    return 13;
                    break;
                case 17:
                    return 13;
                    break;
                case 18:
                    return 13;
                    break;
                case 19:
                    return 13;
                    break;
                case 20:
                    return 81;
                    break;
                case 21:
                    return 91;
                    break;
                case 22:
                    return 89;
                    break;
                case 23:
                    return 8;
                    break;
                case 24:
                    return 86;
                    break;
                case 25:
                    return 98;
                    break;
                case 26:
                    return 16;
                    break;
                case 27:
                    return 15;
                    break;
                case 28:
                    return 17;
                    break;
                case 29:
                    return 18;
                    break;
                case 30:
                    return 53;
                    break;
                case 31:
                    return 51;
                    break;
                case 32:
                    return 52;
                    break;
                case 33:
                    return 54;
                    break;
                case 34:
                    return 58;
                    break;
                case 35:
                    return 56;
                    break;
                case 36:
                    return 57;
                    break;
                case 37:
                    return 59;
                    break;
                case 38:
                    return 58;
                    break;
                case 39:
                    return 56;
                    break;
                case 40:
                    return 57;
                    break;
                case 41:
                    return 59;
                    break;
                case 42:
                    return 63;
                    break;
                case 43:
                    return 61;
                    break;
                case 44:
                    return 62;
                    break;
                case 45:
                    return 64;
                    break;
                case 46:
                    return 50;
                    break;
                case 47:
                    return 55;
                    break;
                case 48:
                    return 60;
                    break;
                case 49:
                    return 40;
                    break;
                case 50:
                    return 41;
                    break;
                case 51:
                    return 46;
                    break;
                case 52:
                    return 92;
                    break;
                case 53:
                    return 96;
                    break;
                case 54:
                    return 84;
                    break;
                case 55:
                    return 97;
                    break;
                case 56:
                    return 97;
                    break;
                case 57:
                    return 88;
                    break;
                case 58:
                    return 94;
                    break;
                case 59:
                    return 95;
                    break;
                case 60:
                    return 65;
                    break;
                case 61:
                    return 38;
                    break;
                case 62:
                    return 39;
                    break;
                case 63:
                    return 36;
                    break;
                case 64:
                    return 37;
                    break;
                case 65:
                    return 42;
                    break;
                case 66:
                    return 43;
                    break;
                case 67:
                    return 101;
                    break;
                case 68:
                    return 9;
                    break;
                case 69:
                    return 10;
                    break;
                case 70:
                    return 11;
                    break;
            }
        },
        rules: [/^(?:%%[^\n]*)/, /^(?:["])/, /^(?:["])/, /^(?:[^"]*)/, /^(?:style\b)/, /^(?:default\b)/, /^(?:linkStyle\b)/, /^(?:interpolate\b)/, /^(?:classDef\b)/, /^(?:class\b)/, /^(?:click\b)/, /^(?:graph\b)/, /^(?:subgraph\b)/, /^(?:end\b\s*)/, /^(?:LR\b)/, /^(?:RL\b)/, /^(?:TB\b)/, /^(?:BT\b)/, /^(?:TD\b)/, /^(?:BR\b)/, /^(?:[0-9]+)/, /^(?:#)/, /^(?::)/, /^(?:;)/, /^(?:,)/, /^(?:\*)/, /^(?:<)/, /^(?:>)/, /^(?:\^)/, /^(?:v\b)/, /^(?:\s*--[x]\s*)/, /^(?:\s*-->\s*)/, /^(?:\s*--[o]\s*)/, /^(?:\s*---\s*)/, /^(?:\s*-\.-[x]\s*)/, /^(?:\s*-\.->\s*)/, /^(?:\s*-\.-[o]\s*)/, /^(?:\s*-\.-\s*)/, /^(?:\s*.-[x]\s*)/, /^(?:\s*\.->\s*)/, /^(?:\s*\.-[o]\s*)/, /^(?:\s*\.-\s*)/, /^(?:\s*==[x]\s*)/, /^(?:\s*==>\s*)/, /^(?:\s*==[o]\s*)/, /^(?:\s*==[\=]\s*)/, /^(?:\s*--\s*)/, /^(?:\s*-\.\s*)/, /^(?:\s*==\s*)/, /^(?:\(-)/, /^(?:-\))/, /^(?:-)/, /^(?:\.)/, /^(?:\+)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:[A-Za-z]+)/, /^(?:[!"#$%&'*+,-.`?\\_\/])/, /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/, /^(?:\|)/, /^(?:\()/, /^(?:\))/, /^(?:\[)/, /^(?:\])/, /^(?:\{)/, /^(?:\})/, /^(?:")/, /^(?:\n+)/, /^(?:\s)/, /^(?:$)/],
        conditions: { "string": { "rules": [2, 3], "inclusive": false }, "INITIAL": { "rules": [0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70], "inclusive": true } }
    };
    return lexer;
}();
parser.lexer = lexer;
function Parser() {
    this.yy = {};
}
Parser.prototype = parser;parser.Parser = Parser;
return new Parser();

}();

if (true) {

exports.parser = parser;
exports.Parser = parser.Parser;
exports.parse = function () {
    return parser.parse.apply(parser, arguments);
};
exports.main = function commonjsMain(args) {
    if (!args[1]) {
        console.log('Usage: ' + args[0] + ' FILE');
        process.exit(1);
    }
    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
    return exports.parser.parse(source);
};
if (typeof module !== 'undefined' && __webpack_require__.c[__webpack_require__.s] === module) {
    exports.main(process.argv.slice(1));
}

} /* WEBPACK VAR INJECTION */}.call(this, webpack_require(/*! ./../../../../node_modules/process/browser.js */ “./node_modules/process/browser.js”), webpack_require(/*! ./../../../../node_modules/webpack/buildin/module.js */ “./node_modules/webpack/buildin/module.js”)(module)))

/***/ }),

/***/ “./src/diagrams/gantt/ganttDb.js”: /*!***************************************!*\

!*** ./src/diagrams/gantt/ganttDb.js ***!
\***************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.addTaskOrg = exports.findTaskById = exports.addTask = exports.getTasks = exports.addSection = exports.getTitle = exports.setTitle = exports.setDateFormat = exports.getAxisFormat = exports.setAxisFormat = exports.clear = undefined;

var _moment = webpack_require(/*! moment */ “./node_modules/moment/moment.js”);

var _moment2 = _interopRequireDefault(_moment);

var _logger = webpack_require(/*! ../../logger */ “./src/logger.js”);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var dateFormat = ''; var axisFormat = ''; var title = ''; var sections = []; var tasks = []; var currentSection = '';

var clear = exports.clear = function clear() {

sections = [];
tasks = [];
currentSection = '';
title = '';
taskCnt = 0;
lastTask = undefined;
lastTaskID = undefined;
rawTasks = [];

};

var setAxisFormat = exports.setAxisFormat = function setAxisFormat(txt) {

axisFormat = txt;

};

var getAxisFormat = exports.getAxisFormat = function getAxisFormat() {

return axisFormat;

};

var setDateFormat = exports.setDateFormat = function setDateFormat(txt) {

dateFormat = txt;

};

var setTitle = exports.setTitle = function setTitle(txt) {

title = txt;

};

var getTitle = exports.getTitle = function getTitle() {

return title;

};

var addSection = exports.addSection = function addSection(txt) {

currentSection = txt;
sections.push(txt);

};

var getTasks = exports.getTasks = function getTasks() {

var allItemsPricessed = compileTasks();
var maxDepth = 10;
var iterationCount = 0;
while (!allItemsPricessed && iterationCount < maxDepth) {
  allItemsPricessed = compileTasks();
  iterationCount++;
}

tasks = rawTasks;

return tasks;

};

var getStartDate = function getStartDate(prevTime, dateFormat, str) {

str = str.trim();

// Test for after
var re = /^after\s+([\d\w-]+)/;
var afterStatement = re.exec(str.trim());

if (afterStatement !== null) {
  var task = findTaskById(afterStatement[1]);

  if (typeof task === 'undefined') {
    var dt = new Date();
    dt.setHours(0, 0, 0, 0);
    return dt;
  }
  return task.endTime;
}

// Check for actual date set
if ((0, _moment2.default)(str, dateFormat.trim(), true).isValid()) {
  return (0, _moment2.default)(str, dateFormat.trim(), true).toDate();
} else {
  _logger.logger.debug('Invalid date:' + str);
  _logger.logger.debug('With date format:' + dateFormat.trim());
}

// Default date - now
return new Date();

};

var getEndDate = function getEndDate(prevTime, dateFormat, str) {

str = str.trim();

// Check for actual date
if ((0, _moment2.default)(str, dateFormat.trim(), true).isValid()) {
  return (0, _moment2.default)(str, dateFormat.trim()).toDate();
}

var d = (0, _moment2.default)(prevTime);
// Check for length
var re = /^([\d]+)([wdhms])/;
var durationStatement = re.exec(str.trim());

if (durationStatement !== null) {
  switch (durationStatement[2]) {
    case 's':
      d.add(durationStatement[1], 'seconds');
      break;
    case 'm':
      d.add(durationStatement[1], 'minutes');
      break;
    case 'h':
      d.add(durationStatement[1], 'hours');
      break;
    case 'd':
      d.add(durationStatement[1], 'days');
      break;
    case 'w':
      d.add(durationStatement[1], 'weeks');
      break;
  }
  return d.toDate();
}
// Default date - now
return d.toDate();

};

var taskCnt = 0; var parseId = function parseId(idStr) {

if (typeof idStr === 'undefined') {
  taskCnt = taskCnt + 1;
  return 'task' + taskCnt;
}
return idStr;

}; // id, startDate, endDate // id, startDate, length // id, after x, endDate // id, after x, length // startDate, endDate // startDate, length // after x, endDate // after x, length // endDate // length

var compileData = function compileData(prevTask, dataStr) {

var ds = void 0;

if (dataStr.substr(0, 1) === ':') {
  ds = dataStr.substr(1, dataStr.length);
} else {
  ds = dataStr;
}

var data = ds.split(',');

var task = {};

// Get tags like active, done cand crit
var matchFound = true;
while (matchFound) {
  matchFound = false;
  if (data[0].match(/^\s*active\s*$/)) {
    task.active = true;
    data.shift(1);
    matchFound = true;
  }
  if (data[0].match(/^\s*done\s*$/)) {
    task.done = true;
    data.shift(1);
    matchFound = true;
  }
  if (data[0].match(/^\s*crit\s*$/)) {
    task.crit = true;
    data.shift(1);
    matchFound = true;
  }
}
for (var i = 0; i < data.length; i++) {
  data[i] = data[i].trim();
}

switch (data.length) {
  case 1:
    task.id = parseId();
    task.startTime = prevTask.endTime;
    task.endTime = getEndDate(task.startTime, dateFormat, data[0]);
    break;
  case 2:
    task.id = parseId();
    task.startTime = getStartDate(undefined, dateFormat, data[0]);
    task.endTime = getEndDate(task.startTime, dateFormat, data[1]);
    break;
  case 3:
    task.id = parseId(data[0]);
    task.startTime = getStartDate(undefined, dateFormat, data[1]);
    task.endTime = getEndDate(task.startTime, dateFormat, data[2]);
    break;
  default:
}

return task;

};

var parseData = function parseData(prevTaskId, dataStr) {

var ds = void 0;
if (dataStr.substr(0, 1) === ':') {
  ds = dataStr.substr(1, dataStr.length);
} else {
  ds = dataStr;
}

var data = ds.split(',');

var task = {};

// Get tags like active, done cand crit
var matchFound = true;
while (matchFound) {
  matchFound = false;
  if (data[0].match(/^\s*active\s*$/)) {
    task.active = true;
    data.shift(1);
    matchFound = true;
  }
  if (data[0].match(/^\s*done\s*$/)) {
    task.done = true;
    data.shift(1);
    matchFound = true;
  }
  if (data[0].match(/^\s*crit\s*$/)) {
    task.crit = true;
    data.shift(1);
    matchFound = true;
  }
}
for (var i = 0; i < data.length; i++) {
  data[i] = data[i].trim();
}

switch (data.length) {
  case 1:
    task.id = parseId();
    task.startTime = { type: 'prevTaskEnd', id: prevTaskId };
    task.endTime = { data: data[0] };
    break;
  case 2:
    task.id = parseId();
    task.startTime = { type: 'getStartDate', startData: data[0] };
    task.endTime = { data: data[1] };
    break;
  case 3:
    task.id = parseId(data[0]);
    task.startTime = { type: 'getStartDate', startData: data[1] };
    task.endTime = { data: data[2] };
    break;
  default:
}

return task;

};

var lastTask = void 0; var lastTaskID = void 0; var rawTasks = []; var taskDb = {}; var addTask = exports.addTask = function addTask(descr, data) {

var rawTask = {
  section: currentSection,
  type: currentSection,
  processed: false,
  raw: { data: data },
  task: descr
};
var taskInfo = parseData(lastTaskID, data);
rawTask.raw.startTime = taskInfo.startTime;
rawTask.raw.endTime = taskInfo.endTime;
rawTask.id = taskInfo.id;
rawTask.prevTaskId = lastTaskID;
rawTask.active = taskInfo.active;
rawTask.done = taskInfo.done;
rawTask.crit = taskInfo.crit;

var pos = rawTasks.push(rawTask);

lastTaskID = rawTask.id;
// Store cross ref
taskDb[rawTask.id] = pos - 1;

};

var findTaskById = exports.findTaskById = function findTaskById(id) {

var pos = taskDb[id];
return rawTasks[pos];

};

var addTaskOrg = exports.addTaskOrg = function addTaskOrg(descr, data) {

var newTask = {
  section: currentSection,
  type: currentSection,
  description: descr,
  task: descr
};
var taskInfo = compileData(lastTask, data);
newTask.startTime = taskInfo.startTime;
newTask.endTime = taskInfo.endTime;
newTask.id = taskInfo.id;
newTask.active = taskInfo.active;
newTask.done = taskInfo.done;
newTask.crit = taskInfo.crit;
lastTask = newTask;
tasks.push(newTask);

};

var compileTasks = function compileTasks() {

var compileTask = function compileTask(pos) {
  var task = rawTasks[pos];
  var startTime = '';
  switch (rawTasks[pos].raw.startTime.type) {
    case 'prevTaskEnd':
      var prevTask = findTaskById(task.prevTaskId);
      task.startTime = prevTask.endTime;
      break;
    case 'getStartDate':
      startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);
      if (startTime) {
        rawTasks[pos].startTime = startTime;
      }
      break;
  }

  if (rawTasks[pos].startTime) {
    rawTasks[pos].endTime = getEndDate(rawTasks[pos].startTime, dateFormat, rawTasks[pos].raw.endTime.data);
    if (rawTasks[pos].endTime) {
      rawTasks[pos].processed = true;
    }
  }

  return rawTasks[pos].processed;
};

var allProcessed = true;
for (var i = 0; i < rawTasks.length; i++) {
  compileTask(i);

  allProcessed = allProcessed && rawTasks[i].processed;
}
return allProcessed;

};

exports.default = {

clear: clear,
setDateFormat: setDateFormat,
setAxisFormat: setAxisFormat,
getAxisFormat: getAxisFormat,
setTitle: setTitle,
getTitle: getTitle,
addSection: addSection,
getTasks: getTasks,
addTask: addTask,
findTaskById: findTaskById,
addTaskOrg: addTaskOrg

};

/***/ }),

/***/ “./src/diagrams/gantt/ganttRenderer.js”: /*!*********************************************!*\

!*** ./src/diagrams/gantt/ganttRenderer.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.draw = exports.setConf = undefined;

var _d = webpack_require(/*! d3 */ “./node_modules/d3/index.js”);

var d3 = _interopRequireWildcard(_d);

var _gantt = webpack_require(/*! ./parser/gantt */ “./src/diagrams/gantt/parser/gantt.js”);

var _ganttDb = webpack_require(/*! ./ganttDb */ “./src/diagrams/gantt/ganttDb.js”);

var _ganttDb2 = _interopRequireDefault(_ganttDb);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj = obj; } } newObj.default = obj; return newObj; } }

_gantt.parser.yy = _ganttDb2.default;

var conf = {

titleTopMargin: 25,
barHeight: 20,
barGap: 4,
topPadding: 50,
rightPadding: 75,
leftPadding: 75,
gridLineStartPadding: 35,
fontSize: 11,
fontFamily: '"Open-Sans", "sans-serif"'

}; var setConf = exports.setConf = function setConf(cnf) {

var keys = Object.keys(cnf);

keys.forEach(function (key) {
  conf[key] = cnf[key];
});

}; var w = void 0; var draw = exports.draw = function draw(text, id) {

_gantt.parser.yy.clear();
_gantt.parser.parse(text);

var elem = document.getElementById(id);
w = elem.parentElement.offsetWidth;

if (typeof w === 'undefined') {
  w = 1200;
}

if (typeof conf.useWidth !== 'undefined') {
  w = conf.useWidth;
}

var taskArray = _gantt.parser.yy.getTasks();

// Set height based on number of tasks
var h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding;

elem.setAttribute('height', '100%');
// Set viewBox
elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);
var svg = d3.select('[id="' + id + '"]');

// Set timescale
var timeScale = d3.scaleTime().domain([d3.min(taskArray, function (d) {
  return d.startTime;
}), d3.max(taskArray, function (d) {
  return d.endTime;
})]).rangeRound([0, w - conf.leftPadding - conf.rightPadding]);

var categories = [];

for (var i = 0; i < taskArray.length; i++) {
  categories.push(taskArray[i].type);
}

var catsUnfiltered = categories; // for vert labels

categories = checkUnique(categories);

makeGant(taskArray, w, h);
if (typeof conf.useWidth !== 'undefined') {
  elem.setAttribute('width', w);
}

svg.append('text').text(_gantt.parser.yy.getTitle()).attr('x', w / 2).attr('y', conf.titleTopMargin).attr('class', 'titleText');

function makeGant(tasks, pageWidth, pageHeight) {
  var barHeight = conf.barHeight;
  var gap = barHeight + conf.barGap;
  var topPadding = conf.topPadding;
  var leftPadding = conf.leftPadding;

  var colorScale = d3.scaleLinear().domain([0, categories.length]).range(['#00B9FA', '#F95002']).interpolate(d3.interpolateHcl);

  makeGrid(leftPadding, topPadding, pageWidth, pageHeight);
  drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);
  vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);
  drawToday(leftPadding, topPadding, pageWidth, pageHeight);
}

function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w, h) {
  svg.append('g').selectAll('rect').data(theArray).enter().append('rect').attr('x', 0).attr('y', function (d, i) {
    return i * theGap + theTopPad - 2;
  }).attr('width', function () {
    return w - conf.rightPadding / 2;
  }).attr('height', theGap).attr('class', function (d) {
    for (var _i = 0; _i < categories.length; _i++) {
      if (d.type === categories[_i]) {
        return 'section section' + _i % conf.numberSectionStyles;
      }
    }
    return 'section section0';
  });

  var rectangles = svg.append('g').selectAll('rect').data(theArray).enter();

  rectangles.append('rect').attr('rx', 3).attr('ry', 3).attr('x', function (d) {
    return timeScale(d.startTime) + theSidePad;
  }).attr('y', function (d, i) {
    return i * theGap + theTopPad;
  }).attr('width', function (d) {
    return timeScale(d.endTime) - timeScale(d.startTime);
  }).attr('height', theBarHeight).attr('class', function (d) {
    var res = 'task ';

    var secNum = 0;
    for (var _i2 = 0; _i2 < categories.length; _i2++) {
      if (d.type === categories[_i2]) {
        secNum = _i2 % conf.numberSectionStyles;
      }
    }

    if (d.active) {
      if (d.crit) {
        return res + ' activeCrit' + secNum;
      } else {
        return res + ' active' + secNum;
      }
    }

    if (d.done) {
      if (d.crit) {
        return res + ' doneCrit' + secNum;
      } else {
        return res + ' done' + secNum;
      }
    }

    if (d.crit) {
      return res + ' crit' + secNum;
    }

    return res + ' task' + secNum;
  });

  rectangles.append('text').text(function (d) {
    return d.task;
  }).attr('font-size', conf.fontSize).attr('x', function (d) {
    var startX = timeScale(d.startTime);
    var endX = timeScale(d.endTime);
    var textWidth = this.getBBox().width;

    // Check id text width > width of rectangle
    if (textWidth > endX - startX) {
      if (endX + textWidth + 1.5 * conf.leftPadding > w) {
        return startX + theSidePad - 5;
      } else {
        return endX + theSidePad + 5;
      }
    } else {
      return (endX - startX) / 2 + startX + theSidePad;
    }
  }).attr('y', function (d, i) {
    return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;
  }).attr('text-height', theBarHeight).attr('class', function (d) {
    var startX = timeScale(d.startTime);
    var endX = timeScale(d.endTime);
    var textWidth = this.getBBox().width;
    var secNum = 0;
    for (var _i3 = 0; _i3 < categories.length; _i3++) {
      if (d.type === categories[_i3]) {
        secNum = _i3 % conf.numberSectionStyles;
      }
    }

    var taskType = '';
    if (d.active) {
      if (d.crit) {
        taskType = 'activeCritText' + secNum;
      } else {
        taskType = 'activeText' + secNum;
      }
    }

    if (d.done) {
      if (d.crit) {
        taskType = taskType + ' doneCritText' + secNum;
      } else {
        taskType = taskType + ' doneText' + secNum;
      }
    } else {
      if (d.crit) {
        taskType = taskType + ' critText' + secNum;
      }
    }

    // Check id text width > width of rectangle
    if (textWidth > endX - startX) {
      if (endX + textWidth + 1.5 * conf.leftPadding > w) {
        return 'taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;
      } else {
        return 'taskTextOutsideRight taskTextOutside' + secNum + ' ' + taskType;
      }
    } else {
      return 'taskText taskText' + secNum + ' ' + taskType;
    }
  });
}

function makeGrid(theSidePad, theTopPad, w, h) {
  var xAxis = d3.axisBottom(timeScale).tickSize(-h + theTopPad + conf.gridLineStartPadding).tickFormat(d3.timeFormat(_gantt.parser.yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));

  svg.append('g').attr('class', 'grid').attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')').call(xAxis).selectAll('text').style('text-anchor', 'middle').attr('fill', '#000').attr('stroke', 'none').attr('font-size', 10).attr('dy', '1em');
}

function vertLabels(theGap, theTopPad) {
  var numOccurances = [];
  var prevGap = 0;

  for (var _i4 = 0; _i4 < categories.length; _i4++) {
    numOccurances[_i4] = [categories[_i4], getCount(categories[_i4], catsUnfiltered)];
  }

  svg.append('g') // without doing this, impossible to put grid lines behind text
  .selectAll('text').data(numOccurances).enter().append('text').text(function (d) {
    return d[0];
  }).attr('x', 10).attr('y', function (d, i) {
    if (i > 0) {
      for (var j = 0; j < i; j++) {
        prevGap += numOccurances[i - 1][1];
        return d[1] * theGap / 2 + prevGap * theGap + theTopPad;
      }
    } else {
      return d[1] * theGap / 2 + theTopPad;
    }
  }).attr('class', function (d) {
    for (var _i5 = 0; _i5 < categories.length; _i5++) {
      if (d[0] === categories[_i5]) {
        return 'sectionTitle sectionTitle' + _i5 % conf.numberSectionStyles;
      }
    }
    return 'sectionTitle';
  });
}

function drawToday(theSidePad, theTopPad, w, h) {
  var todayG = svg.append('g').attr('class', 'today');

  var today = new Date();

  todayG.append('line').attr('x1', timeScale(today) + theSidePad).attr('x2', timeScale(today) + theSidePad).attr('y1', conf.titleTopMargin).attr('y2', h - conf.titleTopMargin).attr('class', 'today');
}

// from this stackexchange question: http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript
function checkUnique(arr) {
  var hash = {};
  var result = [];
  for (var _i6 = 0, l = arr.length; _i6 < l; ++_i6) {
    if (!hash.hasOwnProperty(arr[_i6])) {
      // it works with objects! in FF, at least
      hash[arr[_i6]] = true;
      result.push(arr[_i6]);
    }
  }
  return result;
}

// from this stackexchange question: http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array
function getCounts(arr) {
  var i = arr.length; // const to loop over
  var obj = {}; // obj to store results
  while (i) {
    obj[arr[--i]] = (obj[arr[i]] || 0) + 1; // count occurrences
  }
  return obj;
}

// get specific from everything
function getCount(word, arr) {
  return getCounts(arr)[word] || 0;
}

};

exports.default = {

setConf: setConf,
draw: draw

};

/***/ }),

/***/ “./src/diagrams/gantt/parser/gantt.js”: /*!********************************************!*\

!*** ./src/diagrams/gantt/parser/gantt.js ***!
\********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”; /* WEBPACK VAR INJECTION */(function(process, module) {

/* parser generated by jison 0.4.18 */ /*

Returns a Parser object of the following structure:

Parser: {
  yy: {}
}

Parser.prototype: {
  yy: {},
  trace: function(),
  symbols_: {associative list: name ==> number},
  terminals_: {associative list: number ==> name},
  productions_: [...],
  performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
  table: [...],
  defaultActions: {...},
  parseError: function(str, hash),
  parse: function(input),

  lexer: {
      EOF: 1,
      parseError: function(str, hash),
      setInput: function(input),
      input: function(),
      unput: function(str),
      more: function(),
      less: function(n),
      pastInput: function(),
      upcomingInput: function(),
      showPosition: function(),
      test_match: function(regex_match_array, rule_index),
      next: function(),
      lex: function(),
      begin: function(condition),
      popState: function(),
      _currentRules: function(),
      topState: function(),
      pushState: function(condition),

      options: {
          ranges: boolean           (optional: true ==> token location info will include a .range[] member)
          flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
          backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
      },

      performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
      rules: [...],
      conditions: {associative list: name ==> set},
  }
}

token location info (@$, _$, etc.): {
  first_line: n,
  last_line: n,
  first_column: n,
  last_column: n,
  range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
}

the parseError function receives a 'hash' object with these members for lexer and parser errors: {
  text:        (matched text)
  token:       (the produced terminal token, if any)
  line:        (yylineno)
}
while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
  loc:         (yylloc)
  expected:    (string describing the set of expected tokens)
  recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
}

*/ var parser = function () {

var o = function o(k, v, _o, l) {
    for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v) {}return _o;
},
    $V0 = [6, 8, 10, 11, 12, 13, 14, 15],
    $V1 = [1, 9],
    $V2 = [1, 10],
    $V3 = [1, 11],
    $V4 = [1, 12],
    $V5 = [1, 13];
var parser = { trace: function trace() {},
    yy: {},
    symbols_: { "error": 2, "start": 3, "gantt": 4, "document": 5, "EOF": 6, "line": 7, "SPACE": 8, "statement": 9, "NL": 10, "dateFormat": 11, "axisFormat": 12, "title": 13, "section": 14, "taskTxt": 15, "taskData": 16, "$accept": 0, "$end": 1 },
    terminals_: { 2: "error", 4: "gantt", 6: "EOF", 8: "SPACE", 10: "NL", 11: "dateFormat", 12: "axisFormat", 13: "title", 14: "section", 15: "taskTxt", 16: "taskData" },
    productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 2]],
    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
        /* this == yyval */

        var $0 = $$.length - 1;
        switch (yystate) {
            case 1:
                return $$[$0 - 1];
                break;
            case 2:
                this.$ = [];
                break;
            case 3:
                $$[$0 - 1].push($$[$0]);this.$ = $$[$0 - 1];
                break;
            case 4:case 5:
                this.$ = $$[$0];
                break;
            case 6:case 7:
                this.$ = [];
                break;
            case 8:
                yy.setDateFormat($$[$0].substr(11));this.$ = $$[$0].substr(11);
                break;
            case 9:
                yy.setAxisFormat($$[$0].substr(11));this.$ = $$[$0].substr(11);
                break;
            case 10:
                yy.setTitle($$[$0].substr(6));this.$ = $$[$0].substr(6);
                break;
            case 11:
                yy.addSection($$[$0].substr(8));this.$ = $$[$0].substr(8);
                break;
            case 12:
                yy.addTask($$[$0 - 1], $$[$0]);this.$ = 'task';
                break;
        }
    },
    table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: $V1, 12: $V2, 13: $V3, 14: $V4, 15: $V5 }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 14, 11: $V1, 12: $V2, 13: $V3, 14: $V4, 15: $V5 }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 8]), o($V0, [2, 9]), o($V0, [2, 10]), o($V0, [2, 11]), { 16: [1, 15] }, o($V0, [2, 4]), o($V0, [2, 12])],
    defaultActions: {},
    parseError: function parseError(str, hash) {
        if (hash.recoverable) {
            this.trace(str);
        } else {
            var error = new Error(str);
            error.hash = hash;
            throw error;
        }
    },
    parse: function parse(input) {
        var self = this,
            stack = [0],
            tstack = [],
            vstack = [null],
            lstack = [],
            table = this.table,
            yytext = '',
            yylineno = 0,
            yyleng = 0,
            recovering = 0,
            TERROR = 2,
            EOF = 1;
        var args = lstack.slice.call(arguments, 1);
        var lexer = Object.create(this.lexer);
        var sharedState = { yy: {} };
        for (var k in this.yy) {
            if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
                sharedState.yy[k] = this.yy[k];
            }
        }
        lexer.setInput(input, sharedState.yy);
        sharedState.yy.lexer = lexer;
        sharedState.yy.parser = this;
        if (typeof lexer.yylloc == 'undefined') {
            lexer.yylloc = {};
        }
        var yyloc = lexer.yylloc;
        lstack.push(yyloc);
        var ranges = lexer.options && lexer.options.ranges;
        if (typeof sharedState.yy.parseError === 'function') {
            this.parseError = sharedState.yy.parseError;
        } else {
            this.parseError = Object.getPrototypeOf(this).parseError;
        }
        function popStack(n) {
            stack.length = stack.length - 2 * n;
            vstack.length = vstack.length - n;
            lstack.length = lstack.length - n;
        }
        function lex() {
            var token;
            token = tstack.pop() || lexer.lex() || EOF;
            if (typeof token !== 'number') {
                if (token instanceof Array) {
                    tstack = token;
                    token = tstack.pop();
                }
                token = self.symbols_[token] || token;
            }
            return token;
        }
        var symbol,
            preErrorSymbol,
            state,
            action,
            a,
            r,
            yyval = {},
            p,
            len,
            newState,
            expected;
        while (true) {
            state = stack[stack.length - 1];
            if (this.defaultActions[state]) {
                action = this.defaultActions[state];
            } else {
                if (symbol === null || typeof symbol == 'undefined') {
                    symbol = lex();
                }
                action = table[state] && table[state][symbol];
            }
            if (typeof action === 'undefined' || !action.length || !action[0]) {
                var errStr = '';
                expected = [];
                for (p in table[state]) {
                    if (this.terminals_[p] && p > TERROR) {
                        expected.push('\'' + this.terminals_[p] + '\'');
                    }
                }
                if (lexer.showPosition) {
                    errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
                } else {
                    errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
                }
                this.parseError(errStr, {
                    text: lexer.match,
                    token: this.terminals_[symbol] || symbol,
                    line: lexer.yylineno,
                    loc: yyloc,
                    expected: expected
                });
            }
            if (action[0] instanceof Array && action.length > 1) {
                throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
            }
            switch (action[0]) {
                case 1:
                    stack.push(symbol);
                    vstack.push(lexer.yytext);
                    lstack.push(lexer.yylloc);
                    stack.push(action[1]);
                    symbol = null;
                    if (!preErrorSymbol) {
                        yyleng = lexer.yyleng;
                        yytext = lexer.yytext;
                        yylineno = lexer.yylineno;
                        yyloc = lexer.yylloc;
                        if (recovering > 0) {
                            recovering--;
                        }
                    } else {
                        symbol = preErrorSymbol;
                        preErrorSymbol = null;
                    }
                    break;
                case 2:
                    len = this.productions_[action[1]][1];
                    yyval.$ = vstack[vstack.length - len];
                    yyval._$ = {
                        first_line: lstack[lstack.length - (len || 1)].first_line,
                        last_line: lstack[lstack.length - 1].last_line,
                        first_column: lstack[lstack.length - (len || 1)].first_column,
                        last_column: lstack[lstack.length - 1].last_column
                    };
                    if (ranges) {
                        yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
                    }
                    r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
                    if (typeof r !== 'undefined') {
                        return r;
                    }
                    if (len) {
                        stack = stack.slice(0, -1 * len * 2);
                        vstack = vstack.slice(0, -1 * len);
                        lstack = lstack.slice(0, -1 * len);
                    }
                    stack.push(this.productions_[action[1]][0]);
                    vstack.push(yyval.$);
                    lstack.push(yyval._$);
                    newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
                    stack.push(newState);
                    break;
                case 3:
                    return true;
            }
        }
        return true;
    } };

/* generated by jison-lex 0.3.4 */
var lexer = function () {
    var lexer = {

        EOF: 1,

        parseError: function parseError(str, hash) {
            if (this.yy.parser) {
                this.yy.parser.parseError(str, hash);
            } else {
                throw new Error(str);
            }
        },

        // resets the lexer, sets new input
        setInput: function setInput(input, yy) {
            this.yy = yy || this.yy || {};
            this._input = input;
            this._more = this._backtrack = this.done = false;
            this.yylineno = this.yyleng = 0;
            this.yytext = this.matched = this.match = '';
            this.conditionStack = ['INITIAL'];
            this.yylloc = {
                first_line: 1,
                first_column: 0,
                last_line: 1,
                last_column: 0
            };
            if (this.options.ranges) {
                this.yylloc.range = [0, 0];
            }
            this.offset = 0;
            return this;
        },

        // consumes and returns one char from the input
        input: function input() {
            var ch = this._input[0];
            this.yytext += ch;
            this.yyleng++;
            this.offset++;
            this.match += ch;
            this.matched += ch;
            var lines = ch.match(/(?:\r\n?|\n).*/g);
            if (lines) {
                this.yylineno++;
                this.yylloc.last_line++;
            } else {
                this.yylloc.last_column++;
            }
            if (this.options.ranges) {
                this.yylloc.range[1]++;
            }

            this._input = this._input.slice(1);
            return ch;
        },

        // unshifts one char (or a string) into the input
        unput: function unput(ch) {
            var len = ch.length;
            var lines = ch.split(/(?:\r\n?|\n)/g);

            this._input = ch + this._input;
            this.yytext = this.yytext.substr(0, this.yytext.length - len);
            //this.yyleng -= len;
            this.offset -= len;
            var oldLines = this.match.split(/(?:\r\n?|\n)/g);
            this.match = this.match.substr(0, this.match.length - 1);
            this.matched = this.matched.substr(0, this.matched.length - 1);

            if (lines.length - 1) {
                this.yylineno -= lines.length - 1;
            }
            var r = this.yylloc.range;

            this.yylloc = {
                first_line: this.yylloc.first_line,
                last_line: this.yylineno + 1,
                first_column: this.yylloc.first_column,
                last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
            };

            if (this.options.ranges) {
                this.yylloc.range = [r[0], r[0] + this.yyleng - len];
            }
            this.yyleng = this.yytext.length;
            return this;
        },

        // When called from action, caches matched text and appends it on next action
        more: function more() {
            this._more = true;
            return this;
        },

        // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
        reject: function reject() {
            if (this.options.backtrack_lexer) {
                this._backtrack = true;
            } else {
                return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
                    text: "",
                    token: null,
                    line: this.yylineno
                });
            }
            return this;
        },

        // retain first n characters of the match
        less: function less(n) {
            this.unput(this.match.slice(n));
        },

        // displays already matched input, i.e. for error messages
        pastInput: function pastInput() {
            var past = this.matched.substr(0, this.matched.length - this.match.length);
            return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, "");
        },

        // displays upcoming input, i.e. for error messages
        upcomingInput: function upcomingInput() {
            var next = this.match;
            if (next.length < 20) {
                next += this._input.substr(0, 20 - next.length);
            }
            return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
        },

        // displays the character position where the lexing error occurred, i.e. for error messages
        showPosition: function showPosition() {
            var pre = this.pastInput();
            var c = new Array(pre.length + 1).join("-");
            return pre + this.upcomingInput() + "\n" + c + "^";
        },

        // test the lexed token: return FALSE when not a match, otherwise return token
        test_match: function test_match(match, indexed_rule) {
            var token, lines, backup;

            if (this.options.backtrack_lexer) {
                // save context
                backup = {
                    yylineno: this.yylineno,
                    yylloc: {
                        first_line: this.yylloc.first_line,
                        last_line: this.last_line,
                        first_column: this.yylloc.first_column,
                        last_column: this.yylloc.last_column
                    },
                    yytext: this.yytext,
                    match: this.match,
                    matches: this.matches,
                    matched: this.matched,
                    yyleng: this.yyleng,
                    offset: this.offset,
                    _more: this._more,
                    _input: this._input,
                    yy: this.yy,
                    conditionStack: this.conditionStack.slice(0),
                    done: this.done
                };
                if (this.options.ranges) {
                    backup.yylloc.range = this.yylloc.range.slice(0);
                }
            }

            lines = match[0].match(/(?:\r\n?|\n).*/g);
            if (lines) {
                this.yylineno += lines.length;
            }
            this.yylloc = {
                first_line: this.yylloc.last_line,
                last_line: this.yylineno + 1,
                first_column: this.yylloc.last_column,
                last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
            };
            this.yytext += match[0];
            this.match += match[0];
            this.matches = match;
            this.yyleng = this.yytext.length;
            if (this.options.ranges) {
                this.yylloc.range = [this.offset, this.offset += this.yyleng];
            }
            this._more = false;
            this._backtrack = false;
            this._input = this._input.slice(match[0].length);
            this.matched += match[0];
            token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
            if (this.done && this._input) {
                this.done = false;
            }
            if (token) {
                return token;
            } else if (this._backtrack) {
                // recover context
                for (var k in backup) {
                    this[k] = backup[k];
                }
                return false; // rule action called reject() implying the next rule should be tested instead.
            }
            return false;
        },

        // return next match in input
        next: function next() {
            if (this.done) {
                return this.EOF;
            }
            if (!this._input) {
                this.done = true;
            }

            var token, match, tempMatch, index;
            if (!this._more) {
                this.yytext = '';
                this.match = '';
            }
            var rules = this._currentRules();
            for (var i = 0; i < rules.length; i++) {
                tempMatch = this._input.match(this.rules[rules[i]]);
                if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
                    match = tempMatch;
                    index = i;
                    if (this.options.backtrack_lexer) {
                        token = this.test_match(tempMatch, rules[i]);
                        if (token !== false) {
                            return token;
                        } else if (this._backtrack) {
                            match = false;
                            continue; // rule action called reject() implying a rule MISmatch.
                        } else {
                            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                            return false;
                        }
                    } else if (!this.options.flex) {
                        break;
                    }
                }
            }
            if (match) {
                token = this.test_match(match, rules[index]);
                if (token !== false) {
                    return token;
                }
                // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                return false;
            }
            if (this._input === "") {
                return this.EOF;
            } else {
                return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
                    text: "",
                    token: null,
                    line: this.yylineno
                });
            }
        },

        // return next match that has a token
        lex: function lex() {
            var r = this.next();
            if (r) {
                return r;
            } else {
                return this.lex();
            }
        },

        // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
        begin: function begin(condition) {
            this.conditionStack.push(condition);
        },

        // pop the previously active lexer condition state off the condition stack
        popState: function popState() {
            var n = this.conditionStack.length - 1;
            if (n > 0) {
                return this.conditionStack.pop();
            } else {
                return this.conditionStack[0];
            }
        },

        // produce the lexer rule set which is active for the currently active lexer condition state
        _currentRules: function _currentRules() {
            if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
                return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
            } else {
                return this.conditions["INITIAL"].rules;
            }
        },

        // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
        topState: function topState(n) {
            n = this.conditionStack.length - 1 - Math.abs(n || 0);
            if (n >= 0) {
                return this.conditionStack[n];
            } else {
                return "INITIAL";
            }
        },

        // alias for begin(condition)
        pushState: function pushState(condition) {
            this.begin(condition);
        },

        // return the number of states currently on the stack
        stateStackSize: function stateStackSize() {
            return this.conditionStack.length;
        },
        options: { "case-insensitive": true },
        performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
            // Pre-lexer code can go here

            var YYSTATE = YY_START;
            switch ($avoiding_name_collisions) {
                case 0:
                    return 10;
                    break;
                case 1:
                    /* skip whitespace */
                    break;
                case 2:
                    /* skip comments */
                    break;
                case 3:
                    /* skip comments */
                    break;
                case 4:
                    return 4;
                    break;
                case 5:
                    return 11;
                    break;
                case 6:
                    return 12;
                    break;
                case 7:
                    return 'date';
                    break;
                case 8:
                    return 13;
                    break;
                case 9:
                    return 14;
                    break;
                case 10:
                    return 15;
                    break;
                case 11:
                    return 16;
                    break;
                case 12:
                    return ':';
                    break;
                case 13:
                    return 6;
                    break;
                case 14:
                    return 'INVALID';
                    break;
            }
        },
        rules: [/^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:gantt\b)/i, /^(?:dateFormat\s[^#\n;]+)/i, /^(?:axisFormat\s[^#\n;]+)/i, /^(?:\d\d\d\d-\d\d-\d\d\b)/i, /^(?:title\s[^#\n;]+)/i, /^(?:section\s[^#:\n;]+)/i, /^(?:[^#:\n;]+)/i, /^(?::[^#\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i],
        conditions: { "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "inclusive": true } }
    };
    return lexer;
}();
parser.lexer = lexer;
function Parser() {
    this.yy = {};
}
Parser.prototype = parser;parser.Parser = Parser;
return new Parser();

}();

if (true) {

exports.parser = parser;
exports.Parser = parser.Parser;
exports.parse = function () {
    return parser.parse.apply(parser, arguments);
};
exports.main = function commonjsMain(args) {
    if (!args[1]) {
        console.log('Usage: ' + args[0] + ' FILE');
        process.exit(1);
    }
    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
    return exports.parser.parse(source);
};
if (typeof module !== 'undefined' && __webpack_require__.c[__webpack_require__.s] === module) {
    exports.main(process.argv.slice(1));
}

} /* WEBPACK VAR INJECTION */}.call(this, webpack_require(/*! ./../../../../node_modules/process/browser.js */ “./node_modules/process/browser.js”), webpack_require(/*! ./../../../../node_modules/webpack/buildin/module.js */ “./node_modules/webpack/buildin/module.js”)(module)))

/***/ }),

/***/ “./src/diagrams/git/gitGraphAst.js”: /*!*****************************************!*\

!*** ./src/diagrams/git/gitGraphAst.js ***!
\*****************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.getHead = exports.getDirection = exports.getCurrentBranch = exports.getCommitsArray = exports.getCommits = exports.getBranches = exports.getBranchesAsObjArray = exports.clear = exports.prettyPrint = exports.reset = exports.checkout = exports.merge = exports.branch = exports.commit = exports.getOptions = exports.setOptions = exports.setDirection = undefined;

var _lodash = webpack_require(/*! lodash */ “./node_modules/lodash/lodash.js”);

var _lodash2 = _interopRequireDefault(_lodash);

var _logger = webpack_require(/*! ../../logger */ “./src/logger.js”);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var commits = {}; var head = null; var branches = { 'master': head }; var curBranch = 'master'; var direction = 'LR'; var seq = 0;

function getRandomInt(min, max) {

return Math.floor(Math.random() * (max - min)) + min;

}

function getId() {

var pool = '0123456789abcdef';
var id = '';
for (var i = 0; i < 7; i++) {
  id += pool[getRandomInt(0, 16)];
}
return id;

}

function isfastforwardable(currentCommit, otherCommit) {

_logger.logger.debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id);
while (currentCommit.seq <= otherCommit.seq && currentCommit !== otherCommit) {
  // only if other branch has more commits
  if (otherCommit.parent == null) break;
  if (Array.isArray(otherCommit.parent)) {
    _logger.logger.debug('In merge commit:', otherCommit.parent);
    return isfastforwardable(currentCommit, commits[otherCommit.parent[0]]) || isfastforwardable(currentCommit, commits[otherCommit.parent[1]]);
  } else {
    otherCommit = commits[otherCommit.parent];
  }
}
_logger.logger.debug(currentCommit.id, otherCommit.id);
return currentCommit.id === otherCommit.id;

}

function isReachableFrom(currentCommit, otherCommit) {

var currentSeq = currentCommit.seq;
var otherSeq = otherCommit.seq;
if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit);
return false;

}

var setDirection = exports.setDirection = function setDirection(dir) {

direction = dir;

}; var options = {}; var setOptions = exports.setOptions = function setOptions(rawOptString) {

_logger.logger.debug('options str', rawOptString);
rawOptString = rawOptString && rawOptString.trim();
rawOptString = rawOptString || '{}';
try {
  options = JSON.parse(rawOptString);
} catch (e) {
  _logger.logger.error('error while parsing gitGraph options', e.message);
}

};

var getOptions = exports.getOptions = function getOptions() {

return options;

};

var commit = exports.commit = function commit(msg) {

var commit = {
  id: getId(),
  message: msg,
  seq: seq++,
  parent: head == null ? null : head.id
};
head = commit;
commits[commit.id] = commit;
branches[curBranch] = commit.id;
_logger.logger.debug('in pushCommit ' + commit.id);

};

var branch = exports.branch = function branch(name) {

branches[name] = head != null ? head.id : null;
_logger.logger.debug('in createBranch');

};

var merge = exports.merge = function merge(otherBranch) {

var currentCommit = commits[branches[curBranch]];
var otherCommit = commits[branches[otherBranch]];
if (isReachableFrom(currentCommit, otherCommit)) {
  _logger.logger.debug('Already merged');
  return;
}
if (isfastforwardable(currentCommit, otherCommit)) {
  branches[curBranch] = branches[otherBranch];
  head = commits[branches[curBranch]];
} else {
  // create merge commit
  var _commit = {
    id: getId(),
    message: 'merged branch ' + otherBranch + ' into ' + curBranch,
    seq: seq++,
    parent: [head == null ? null : head.id, branches[otherBranch]]
  };
  head = _commit;
  commits[_commit.id] = _commit;
  branches[curBranch] = _commit.id;
}
_logger.logger.debug(branches);
_logger.logger.debug('in mergeBranch');

};

var checkout = exports.checkout = function checkout(branch) {

_logger.logger.debug('in checkout');
curBranch = branch;
var id = branches[curBranch];
head = commits[id];

};

var reset = exports.reset = function reset(commitRef) {

_logger.logger.debug('in reset', commitRef);
var ref = commitRef.split(':')[0];
var parentCount = parseInt(commitRef.split(':')[1]);
var commit = ref === 'HEAD' ? head : commits[branches[ref]];
_logger.logger.debug(commit, parentCount);
while (parentCount > 0) {
  commit = commits[commit.parent];
  parentCount--;
  if (!commit) {
    var err = 'Critical error - unique parent commit not found during reset';
    _logger.logger.error(err);
    throw err;
  }
}
head = commit;
branches[curBranch] = commit.id;

};

function upsert(arr, key, newval) {

var index = arr.indexOf(key);
if (index === -1) {
  arr.push(newval);
} else {
  arr.splice(index, 1, newval);
}

}

function prettyPrintCommitHistory(commitArr) {

var commit = _lodash2.default.maxBy(commitArr, 'seq');
var line = '';
commitArr.forEach(function (c) {
  if (c === commit) {
    line += '\t*';
  } else {
    line += '\t|';
  }
});
var label = [line, commit.id, commit.seq];
_lodash2.default.each(branches, function (value, key) {
  if (value === commit.id) label.push(key);
});
_logger.logger.debug(label.join(' '));
if (Array.isArray(commit.parent)) {
  var newCommit = commits[commit.parent[0]];
  upsert(commitArr, commit, newCommit);
  commitArr.push(commits[commit.parent[1]]);
} else if (commit.parent == null) {
  return;
} else {
  var nextCommit = commits[commit.parent];
  upsert(commitArr, commit, nextCommit);
}
commitArr = _lodash2.default.uniqBy(commitArr, 'id');
prettyPrintCommitHistory(commitArr);

}

var prettyPrint = exports.prettyPrint = function prettyPrint() {

_logger.logger.debug(commits);
var node = getCommitsArray()[0];
prettyPrintCommitHistory([node]);

};

var clear = exports.clear = function clear() {

commits = {};
head = null;
branches = { 'master': head };
curBranch = 'master';
seq = 0;

};

var getBranchesAsObjArray = exports.getBranchesAsObjArray = function getBranchesAsObjArray() {

var branchArr = _lodash2.default.map(branches, function (value, key) {
  return { 'name': key, 'commit': commits[value] };
});
return branchArr;

};

var getBranches = exports.getBranches = function getBranches() {

return branches;

}; var getCommits = exports.getCommits = function getCommits() {

return commits;

}; var getCommitsArray = exports.getCommitsArray = function getCommitsArray() {

var commitArr = Object.keys(commits).map(function (key) {
  return commits[key];
});
commitArr.forEach(function (o) {
  _logger.logger.debug(o.id);
});
return _lodash2.default.orderBy(commitArr, ['seq'], ['desc']);

}; var getCurrentBranch = exports.getCurrentBranch = function getCurrentBranch() {

return curBranch;

}; var getDirection = exports.getDirection = function getDirection() {

return direction;

}; var getHead = exports.getHead = function getHead() {

return head;

};

exports.default = {

setDirection: setDirection,
setOptions: setOptions,
getOptions: getOptions,
commit: commit,
branch: branch,
merge: merge,
checkout: checkout,
reset: reset,
prettyPrint: prettyPrint,
clear: clear,
getBranchesAsObjArray: getBranchesAsObjArray,
getBranches: getBranches,
getCommits: getCommits,
getCommitsArray: getCommitsArray,
getCurrentBranch: getCurrentBranch,
getDirection: getDirection,
getHead: getHead

};

/***/ }),

/***/ “./src/diagrams/git/gitGraphRenderer.js”: /*!**********************************************!*\

!*** ./src/diagrams/git/gitGraphRenderer.js ***!
\**********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.draw = exports.setConf = undefined;

var _lodash = webpack_require(/*! lodash */ “./node_modules/lodash/lodash.js”);

var _lodash2 = _interopRequireDefault(_lodash);

var _d = webpack_require(/*! d3 */ “./node_modules/d3/index.js”);

var d3 = _interopRequireWildcard(_d);

var _gitGraphAst = webpack_require(/*! ./gitGraphAst */ “./src/diagrams/git/gitGraphAst.js”);

var _gitGraphAst2 = _interopRequireDefault(_gitGraphAst);

var _gitGraph = webpack_require(/*! ./parser/gitGraph */ “./src/diagrams/git/parser/gitGraph.js”);

var _gitGraph2 = _interopRequireDefault(_gitGraph);

var _logger = webpack_require(/*! ../../logger */ “./src/logger.js”);

var _utils = webpack_require(/*! ../../utils */ “./src/utils.js”);

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj = obj; } } newObj.default = obj; return newObj; } }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var allCommitsDict = {}; var branchNum = void 0; var config = {

nodeSpacing: 150,
nodeFillColor: 'yellow',
nodeStrokeWidth: 2,
nodeStrokeColor: 'grey',
lineStrokeWidth: 4,
branchOffset: 50,
lineColor: 'grey',
leftMargin: 50,
branchColors: ['#442f74', '#983351', '#609732', '#AA9A39'],
nodeRadius: 10,
nodeLabel: {
  width: 75,
  height: 100,
  x: -25,
  y: 0
}

}; var apiConfig = {}; var setConf = exports.setConf = function setConf© {

apiConfig = c;

};

function svgCreateDefs(svg) {

svg.append('defs').append('g').attr('id', 'def-commit').append('circle').attr('r', config.nodeRadius).attr('cx', 0).attr('cy', 0);
svg.select('#def-commit').append('foreignObject').attr('width', config.nodeLabel.width).attr('height', config.nodeLabel.height).attr('x', config.nodeLabel.x).attr('y', config.nodeLabel.y).attr('class', 'node-label').attr('requiredFeatures', 'http://www.w3.org/TR/SVG11/feature#Extensibility').append('p').html('');

}

function svgDrawLine(svg, points, colorIdx, interpolate) {

var curve = (0, _utils.interpolateToCurve)(interpolate, d3.curveBasis);
var color = config.branchColors[colorIdx % config.branchColors.length];
var lineGen = d3.line().x(function (d) {
  return Math.round(d.x);
}).y(function (d) {
  return Math.round(d.y);
}).curve(curve);

svg.append('svg:path').attr('d', lineGen(points)).style('stroke', color).style('stroke-width', config.lineStrokeWidth).style('fill', 'none');

}

// Pass in the element and its pre-transform coords function getElementCoords(element, coords) {

coords = coords || element.node().getBBox();
var ctm = element.node().getCTM();
var xn = ctm.e + coords.x * ctm.a;
var yn = ctm.f + coords.y * ctm.d;
return {
  left: xn,
  top: yn,
  width: coords.width,
  height: coords.height
};

}

function svgDrawLineForCommits(svg, fromId, toId, direction, color) {

_logger.logger.debug('svgDrawLineForCommits: ', fromId, toId);
var fromBbox = getElementCoords(svg.select('#node-' + fromId + ' circle'));
var toBbox = getElementCoords(svg.select('#node-' + toId + ' circle'));
switch (direction) {
  case 'LR':
    // (toBbox)
    //  +--------
    //          + (fromBbox)
    if (fromBbox.left - toBbox.left > config.nodeSpacing) {
      var lineStart = { x: fromBbox.left - config.nodeSpacing, y: toBbox.top + toBbox.height / 2 };
      var lineEnd = { x: toBbox.left + toBbox.width, y: toBbox.top + toBbox.height / 2 };
      svgDrawLine(svg, [lineStart, lineEnd], color, 'linear');
      svgDrawLine(svg, [{ x: fromBbox.left, y: fromBbox.top + fromBbox.height / 2 }, { x: fromBbox.left - config.nodeSpacing / 2, y: fromBbox.top + fromBbox.height / 2 }, { x: fromBbox.left - config.nodeSpacing / 2, y: lineStart.y }, lineStart], color);
    } else {
      svgDrawLine(svg, [{
        'x': fromBbox.left,
        'y': fromBbox.top + fromBbox.height / 2
      }, {
        'x': fromBbox.left - config.nodeSpacing / 2,
        'y': fromBbox.top + fromBbox.height / 2
      }, {
        'x': fromBbox.left - config.nodeSpacing / 2,
        'y': toBbox.top + toBbox.height / 2
      }, {
        'x': toBbox.left + toBbox.width,
        'y': toBbox.top + toBbox.height / 2
      }], color);
    }
    break;
  case 'BT':
    //      +           (fromBbox)
    //      |
    //      |
    //              +   (toBbox)
    if (toBbox.top - fromBbox.top > config.nodeSpacing) {
      var _lineStart = { x: toBbox.left + toBbox.width / 2, y: fromBbox.top + fromBbox.height + config.nodeSpacing };
      var _lineEnd = { x: toBbox.left + toBbox.width / 2, y: toBbox.top };
      svgDrawLine(svg, [_lineStart, _lineEnd], color, 'linear');
      svgDrawLine(svg, [{ x: fromBbox.left + fromBbox.width / 2, y: fromBbox.top + fromBbox.height }, { x: fromBbox.left + fromBbox.width / 2, y: fromBbox.top + fromBbox.height + config.nodeSpacing / 2 }, { x: toBbox.left + toBbox.width / 2, y: _lineStart.y - config.nodeSpacing / 2 }, _lineStart], color);
    } else {
      svgDrawLine(svg, [{
        'x': fromBbox.left + fromBbox.width / 2,
        'y': fromBbox.top + fromBbox.height
      }, {
        'x': fromBbox.left + fromBbox.width / 2,
        'y': fromBbox.top + config.nodeSpacing / 2
      }, {
        'x': toBbox.left + toBbox.width / 2,
        'y': toBbox.top - config.nodeSpacing / 2
      }, {
        'x': toBbox.left + toBbox.width / 2,
        'y': toBbox.top
      }], color);
    }
    break;
}

}

function cloneNode(svg, selector) {

return svg.select(selector).node().cloneNode(true);

}

function renderCommitHistory(svg, commitid, branches, direction) {

var commit = void 0;
var numCommits = Object.keys(allCommitsDict).length;
if (_lodash2.default.isString(commitid)) {
  do {
    commit = allCommitsDict[commitid];
    _logger.logger.debug('in renderCommitHistory', commit.id, commit.seq);
    if (svg.select('#node-' + commitid).size() > 0) {
      return;
    }
    svg.append(function () {
      return cloneNode(svg, '#def-commit');
    }).attr('class', 'commit').attr('id', function () {
      return 'node-' + commit.id;
    }).attr('transform', function () {
      switch (direction) {
        case 'LR':
          return 'translate(' + (commit.seq * config.nodeSpacing + config.leftMargin) + ', ' + branchNum * config.branchOffset + ')';
        case 'BT':
          return 'translate(' + (branchNum * config.branchOffset + config.leftMargin) + ', ' + (numCommits - commit.seq) * config.nodeSpacing + ')';
      }
    }).attr('fill', config.nodeFillColor).attr('stroke', config.nodeStrokeColor).attr('stroke-width', config.nodeStrokeWidth);

    var branch = _lodash2.default.find(branches, ['commit', commit]);
    if (branch) {
      _logger.logger.debug('found branch ', branch.name);
      svg.select('#node-' + commit.id + ' p').append('xhtml:span').attr('class', 'branch-label').text(branch.name + ', ');
    }
    svg.select('#node-' + commit.id + ' p').append('xhtml:span').attr('class', 'commit-id').text(commit.id);
    if (commit.message !== '' && direction === 'BT') {
      svg.select('#node-' + commit.id + ' p').append('xhtml:span').attr('class', 'commit-msg').text(', ' + commit.message);
    }
    commitid = commit.parent;
  } while (commitid && allCommitsDict[commitid]);
}

if (_lodash2.default.isArray(commitid)) {
  _logger.logger.debug('found merge commmit', commitid);
  renderCommitHistory(svg, commitid[0], branches, direction);
  branchNum++;
  renderCommitHistory(svg, commitid[1], branches, direction);
  branchNum--;
}

}

function renderLines(svg, commit, direction, branchColor) {

branchColor = branchColor || 0;
while (commit.seq > 0 && !commit.lineDrawn) {
  if (_lodash2.default.isString(commit.parent)) {
    svgDrawLineForCommits(svg, commit.id, commit.parent, direction, branchColor);
    commit.lineDrawn = true;
    commit = allCommitsDict[commit.parent];
  } else if (_lodash2.default.isArray(commit.parent)) {
    svgDrawLineForCommits(svg, commit.id, commit.parent[0], direction, branchColor);
    svgDrawLineForCommits(svg, commit.id, commit.parent[1], direction, branchColor + 1);
    renderLines(svg, allCommitsDict[commit.parent[1]], direction, branchColor + 1);
    commit.lineDrawn = true;
    commit = allCommitsDict[commit.parent[0]];
  }
}

}

var draw = exports.draw = function draw(txt, id, ver) {

try {
  var parser = _gitGraph2.default.parser;
  parser.yy = _gitGraphAst2.default;

  _logger.logger.debug('in gitgraph renderer', txt, id, ver);
  // Parse the graph definition
  parser.parse(txt + '\n');

  config = _lodash2.default.extend(config, apiConfig, _gitGraphAst2.default.getOptions());
  _logger.logger.debug('effective options', config);
  var direction = _gitGraphAst2.default.getDirection();
  allCommitsDict = _gitGraphAst2.default.getCommits();
  var branches = _gitGraphAst2.default.getBranchesAsObjArray();
  if (direction === 'BT') {
    config.nodeLabel.x = branches.length * config.branchOffset;
    config.nodeLabel.width = '100%';
    config.nodeLabel.y = -1 * 2 * config.nodeRadius;
  }
  var svg = d3.select('[id="' + id + '"]');
  svgCreateDefs(svg);
  branchNum = 1;
  _lodash2.default.each(branches, function (v) {
    renderCommitHistory(svg, v.commit.id, branches, direction);
    renderLines(svg, v.commit, direction);
    branchNum++;
  });
  svg.attr('height', function () {
    if (direction === 'BT') return Object.keys(allCommitsDict).length * config.nodeSpacing;
    return (branches.length + 1) * config.branchOffset;
  });
} catch (e) {
  _logger.logger.error('Error while rendering gitgraph');
  _logger.logger.error(e.message);
}

};

exports.default = {

setConf: setConf,
draw: draw

};

/***/ }),

/***/ “./src/diagrams/git/parser/gitGraph.js”: /*!*********************************************!*\

!*** ./src/diagrams/git/parser/gitGraph.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”; /* WEBPACK VAR INJECTION */(function(process, module) {

/* parser generated by jison 0.4.18 */ /*

Returns a Parser object of the following structure:

Parser: {
  yy: {}
}

Parser.prototype: {
  yy: {},
  trace: function(),
  symbols_: {associative list: name ==> number},
  terminals_: {associative list: number ==> name},
  productions_: [...],
  performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
  table: [...],
  defaultActions: {...},
  parseError: function(str, hash),
  parse: function(input),

  lexer: {
      EOF: 1,
      parseError: function(str, hash),
      setInput: function(input),
      input: function(),
      unput: function(str),
      more: function(),
      less: function(n),
      pastInput: function(),
      upcomingInput: function(),
      showPosition: function(),
      test_match: function(regex_match_array, rule_index),
      next: function(),
      lex: function(),
      begin: function(condition),
      popState: function(),
      _currentRules: function(),
      topState: function(),
      pushState: function(condition),

      options: {
          ranges: boolean           (optional: true ==> token location info will include a .range[] member)
          flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
          backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
      },

      performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
      rules: [...],
      conditions: {associative list: name ==> set},
  }
}

token location info (@$, _$, etc.): {
  first_line: n,
  last_line: n,
  first_column: n,
  last_column: n,
  range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
}

the parseError function receives a 'hash' object with these members for lexer and parser errors: {
  text:        (matched text)
  token:       (the produced terminal token, if any)
  line:        (yylineno)
}
while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
  loc:         (yylloc)
  expected:    (string describing the set of expected tokens)
  recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
}

*/ var parser = function () {

var o = function o(k, v, _o, l) {
    for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v) {}return _o;
},
    $V0 = [2, 3],
    $V1 = [1, 7],
    $V2 = [7, 12, 15, 17, 19, 20, 21],
    $V3 = [7, 11, 12, 15, 17, 19, 20, 21],
    $V4 = [2, 20],
    $V5 = [1, 32];
var parser = { trace: function trace() {},
    yy: {},
    symbols_: { "error": 2, "start": 3, "GG": 4, ":": 5, "document": 6, "EOF": 7, "DIR": 8, "options": 9, "body": 10, "OPT": 11, "NL": 12, "line": 13, "statement": 14, "COMMIT": 15, "commit_arg": 16, "BRANCH": 17, "ID": 18, "CHECKOUT": 19, "MERGE": 20, "RESET": 21, "reset_arg": 22, "STR": 23, "HEAD": 24, "reset_parents": 25, "CARET": 26, "$accept": 0, "$end": 1 },
    terminals_: { 2: "error", 4: "GG", 5: ":", 7: "EOF", 8: "DIR", 11: "OPT", 12: "NL", 15: "COMMIT", 17: "BRANCH", 18: "ID", 19: "CHECKOUT", 20: "MERGE", 21: "RESET", 23: "STR", 24: "HEAD", 26: "CARET" },
    productions_: [0, [3, 4], [3, 5], [6, 0], [6, 2], [9, 2], [9, 1], [10, 0], [10, 2], [13, 2], [13, 1], [14, 2], [14, 2], [14, 2], [14, 2], [14, 2], [16, 0], [16, 1], [22, 2], [22, 2], [25, 0], [25, 2]],
    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
        /* this == yyval */

        var $0 = $$.length - 1;
        switch (yystate) {
            case 1:
                return $$[$0 - 1];
                break;
            case 2:
                yy.setDirection($$[$0 - 3]);return $$[$0 - 1];
                break;
            case 4:
                yy.setOptions($$[$0 - 1]);this.$ = $$[$0];
                break;
            case 5:
                $$[$0 - 1] += $$[$0];this.$ = $$[$0 - 1];
                break;
            case 7:
                this.$ = [];
                break;
            case 8:
                $$[$0 - 1].push($$[$0]);this.$ = $$[$0 - 1];
                break;
            case 9:
                this.$ = $$[$0 - 1];
                break;
            case 11:
                yy.commit($$[$0]);
                break;
            case 12:
                yy.branch($$[$0]);
                break;
            case 13:
                yy.checkout($$[$0]);
                break;
            case 14:
                yy.merge($$[$0]);
                break;
            case 15:
                yy.reset($$[$0]);
                break;
            case 16:
                this.$ = "";
                break;
            case 17:
                this.$ = $$[$0];
                break;
            case 18:
                this.$ = $$[$0 - 1] + ":" + $$[$0];
                break;
            case 19:
                this.$ = $$[$0 - 1] + ":" + yy.count;yy.count = 0;
                break;
            case 20:
                yy.count = 0;
                break;
            case 21:
                yy.count += 1;
                break;
        }
    },
    table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, { 5: [1, 3], 8: [1, 4] }, { 6: 5, 7: $V0, 9: 6, 12: $V1 }, { 5: [1, 8] }, { 7: [1, 9] }, o($V2, [2, 7], { 10: 10, 11: [1, 11] }), o($V3, [2, 6]), { 6: 12, 7: $V0, 9: 6, 12: $V1 }, { 1: [2, 1] }, { 7: [2, 4], 12: [1, 15], 13: 13, 14: 14, 15: [1, 16], 17: [1, 17], 19: [1, 18], 20: [1, 19], 21: [1, 20] }, o($V3, [2, 5]), { 7: [1, 21] }, o($V2, [2, 8]), { 12: [1, 22] }, o($V2, [2, 10]), { 12: [2, 16], 16: 23, 23: [1, 24] }, { 18: [1, 25] }, { 18: [1, 26] }, { 18: [1, 27] }, { 18: [1, 30], 22: 28, 24: [1, 29] }, { 1: [2, 2] }, o($V2, [2, 9]), { 12: [2, 11] }, { 12: [2, 17] }, { 12: [2, 12] }, { 12: [2, 13] }, { 12: [2, 14] }, { 12: [2, 15] }, { 12: $V4, 25: 31, 26: $V5 }, { 12: $V4, 25: 33, 26: $V5 }, { 12: [2, 18] }, { 12: $V4, 25: 34, 26: $V5 }, { 12: [2, 19] }, { 12: [2, 21] }],
    defaultActions: { 9: [2, 1], 21: [2, 2], 23: [2, 11], 24: [2, 17], 25: [2, 12], 26: [2, 13], 27: [2, 14], 28: [2, 15], 31: [2, 18], 33: [2, 19], 34: [2, 21] },
    parseError: function parseError(str, hash) {
        if (hash.recoverable) {
            this.trace(str);
        } else {
            var error = new Error(str);
            error.hash = hash;
            throw error;
        }
    },
    parse: function parse(input) {
        var self = this,
            stack = [0],
            tstack = [],
            vstack = [null],
            lstack = [],
            table = this.table,
            yytext = '',
            yylineno = 0,
            yyleng = 0,
            recovering = 0,
            TERROR = 2,
            EOF = 1;
        var args = lstack.slice.call(arguments, 1);
        var lexer = Object.create(this.lexer);
        var sharedState = { yy: {} };
        for (var k in this.yy) {
            if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
                sharedState.yy[k] = this.yy[k];
            }
        }
        lexer.setInput(input, sharedState.yy);
        sharedState.yy.lexer = lexer;
        sharedState.yy.parser = this;
        if (typeof lexer.yylloc == 'undefined') {
            lexer.yylloc = {};
        }
        var yyloc = lexer.yylloc;
        lstack.push(yyloc);
        var ranges = lexer.options && lexer.options.ranges;
        if (typeof sharedState.yy.parseError === 'function') {
            this.parseError = sharedState.yy.parseError;
        } else {
            this.parseError = Object.getPrototypeOf(this).parseError;
        }
        function popStack(n) {
            stack.length = stack.length - 2 * n;
            vstack.length = vstack.length - n;
            lstack.length = lstack.length - n;
        }
        function lex() {
            var token;
            token = tstack.pop() || lexer.lex() || EOF;
            if (typeof token !== 'number') {
                if (token instanceof Array) {
                    tstack = token;
                    token = tstack.pop();
                }
                token = self.symbols_[token] || token;
            }
            return token;
        }
        var symbol,
            preErrorSymbol,
            state,
            action,
            a,
            r,
            yyval = {},
            p,
            len,
            newState,
            expected;
        while (true) {
            state = stack[stack.length - 1];
            if (this.defaultActions[state]) {
                action = this.defaultActions[state];
            } else {
                if (symbol === null || typeof symbol == 'undefined') {
                    symbol = lex();
                }
                action = table[state] && table[state][symbol];
            }
            if (typeof action === 'undefined' || !action.length || !action[0]) {
                var errStr = '';
                expected = [];
                for (p in table[state]) {
                    if (this.terminals_[p] && p > TERROR) {
                        expected.push('\'' + this.terminals_[p] + '\'');
                    }
                }
                if (lexer.showPosition) {
                    errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
                } else {
                    errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
                }
                this.parseError(errStr, {
                    text: lexer.match,
                    token: this.terminals_[symbol] || symbol,
                    line: lexer.yylineno,
                    loc: yyloc,
                    expected: expected
                });
            }
            if (action[0] instanceof Array && action.length > 1) {
                throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
            }
            switch (action[0]) {
                case 1:
                    stack.push(symbol);
                    vstack.push(lexer.yytext);
                    lstack.push(lexer.yylloc);
                    stack.push(action[1]);
                    symbol = null;
                    if (!preErrorSymbol) {
                        yyleng = lexer.yyleng;
                        yytext = lexer.yytext;
                        yylineno = lexer.yylineno;
                        yyloc = lexer.yylloc;
                        if (recovering > 0) {
                            recovering--;
                        }
                    } else {
                        symbol = preErrorSymbol;
                        preErrorSymbol = null;
                    }
                    break;
                case 2:
                    len = this.productions_[action[1]][1];
                    yyval.$ = vstack[vstack.length - len];
                    yyval._$ = {
                        first_line: lstack[lstack.length - (len || 1)].first_line,
                        last_line: lstack[lstack.length - 1].last_line,
                        first_column: lstack[lstack.length - (len || 1)].first_column,
                        last_column: lstack[lstack.length - 1].last_column
                    };
                    if (ranges) {
                        yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
                    }
                    r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
                    if (typeof r !== 'undefined') {
                        return r;
                    }
                    if (len) {
                        stack = stack.slice(0, -1 * len * 2);
                        vstack = vstack.slice(0, -1 * len);
                        lstack = lstack.slice(0, -1 * len);
                    }
                    stack.push(this.productions_[action[1]][0]);
                    vstack.push(yyval.$);
                    lstack.push(yyval._$);
                    newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
                    stack.push(newState);
                    break;
                case 3:
                    return true;
            }
        }
        return true;
    } };
/* generated by jison-lex 0.3.4 */
var lexer = function () {
    var lexer = {

        EOF: 1,

        parseError: function parseError(str, hash) {
            if (this.yy.parser) {
                this.yy.parser.parseError(str, hash);
            } else {
                throw new Error(str);
            }
        },

        // resets the lexer, sets new input
        setInput: function setInput(input, yy) {
            this.yy = yy || this.yy || {};
            this._input = input;
            this._more = this._backtrack = this.done = false;
            this.yylineno = this.yyleng = 0;
            this.yytext = this.matched = this.match = '';
            this.conditionStack = ['INITIAL'];
            this.yylloc = {
                first_line: 1,
                first_column: 0,
                last_line: 1,
                last_column: 0
            };
            if (this.options.ranges) {
                this.yylloc.range = [0, 0];
            }
            this.offset = 0;
            return this;
        },

        // consumes and returns one char from the input
        input: function input() {
            var ch = this._input[0];
            this.yytext += ch;
            this.yyleng++;
            this.offset++;
            this.match += ch;
            this.matched += ch;
            var lines = ch.match(/(?:\r\n?|\n).*/g);
            if (lines) {
                this.yylineno++;
                this.yylloc.last_line++;
            } else {
                this.yylloc.last_column++;
            }
            if (this.options.ranges) {
                this.yylloc.range[1]++;
            }

            this._input = this._input.slice(1);
            return ch;
        },

        // unshifts one char (or a string) into the input
        unput: function unput(ch) {
            var len = ch.length;
            var lines = ch.split(/(?:\r\n?|\n)/g);

            this._input = ch + this._input;
            this.yytext = this.yytext.substr(0, this.yytext.length - len);
            //this.yyleng -= len;
            this.offset -= len;
            var oldLines = this.match.split(/(?:\r\n?|\n)/g);
            this.match = this.match.substr(0, this.match.length - 1);
            this.matched = this.matched.substr(0, this.matched.length - 1);

            if (lines.length - 1) {
                this.yylineno -= lines.length - 1;
            }
            var r = this.yylloc.range;

            this.yylloc = {
                first_line: this.yylloc.first_line,
                last_line: this.yylineno + 1,
                first_column: this.yylloc.first_column,
                last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
            };

            if (this.options.ranges) {
                this.yylloc.range = [r[0], r[0] + this.yyleng - len];
            }
            this.yyleng = this.yytext.length;
            return this;
        },

        // When called from action, caches matched text and appends it on next action
        more: function more() {
            this._more = true;
            return this;
        },

        // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
        reject: function reject() {
            if (this.options.backtrack_lexer) {
                this._backtrack = true;
            } else {
                return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
                    text: "",
                    token: null,
                    line: this.yylineno
                });
            }
            return this;
        },

        // retain first n characters of the match
        less: function less(n) {
            this.unput(this.match.slice(n));
        },

        // displays already matched input, i.e. for error messages
        pastInput: function pastInput() {
            var past = this.matched.substr(0, this.matched.length - this.match.length);
            return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, "");
        },

        // displays upcoming input, i.e. for error messages
        upcomingInput: function upcomingInput() {
            var next = this.match;
            if (next.length < 20) {
                next += this._input.substr(0, 20 - next.length);
            }
            return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
        },

        // displays the character position where the lexing error occurred, i.e. for error messages
        showPosition: function showPosition() {
            var pre = this.pastInput();
            var c = new Array(pre.length + 1).join("-");
            return pre + this.upcomingInput() + "\n" + c + "^";
        },

        // test the lexed token: return FALSE when not a match, otherwise return token
        test_match: function test_match(match, indexed_rule) {
            var token, lines, backup;

            if (this.options.backtrack_lexer) {
                // save context
                backup = {
                    yylineno: this.yylineno,
                    yylloc: {
                        first_line: this.yylloc.first_line,
                        last_line: this.last_line,
                        first_column: this.yylloc.first_column,
                        last_column: this.yylloc.last_column
                    },
                    yytext: this.yytext,
                    match: this.match,
                    matches: this.matches,
                    matched: this.matched,
                    yyleng: this.yyleng,
                    offset: this.offset,
                    _more: this._more,
                    _input: this._input,
                    yy: this.yy,
                    conditionStack: this.conditionStack.slice(0),
                    done: this.done
                };
                if (this.options.ranges) {
                    backup.yylloc.range = this.yylloc.range.slice(0);
                }
            }

            lines = match[0].match(/(?:\r\n?|\n).*/g);
            if (lines) {
                this.yylineno += lines.length;
            }
            this.yylloc = {
                first_line: this.yylloc.last_line,
                last_line: this.yylineno + 1,
                first_column: this.yylloc.last_column,
                last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
            };
            this.yytext += match[0];
            this.match += match[0];
            this.matches = match;
            this.yyleng = this.yytext.length;
            if (this.options.ranges) {
                this.yylloc.range = [this.offset, this.offset += this.yyleng];
            }
            this._more = false;
            this._backtrack = false;
            this._input = this._input.slice(match[0].length);
            this.matched += match[0];
            token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
            if (this.done && this._input) {
                this.done = false;
            }
            if (token) {
                return token;
            } else if (this._backtrack) {
                // recover context
                for (var k in backup) {
                    this[k] = backup[k];
                }
                return false; // rule action called reject() implying the next rule should be tested instead.
            }
            return false;
        },

        // return next match in input
        next: function next() {
            if (this.done) {
                return this.EOF;
            }
            if (!this._input) {
                this.done = true;
            }

            var token, match, tempMatch, index;
            if (!this._more) {
                this.yytext = '';
                this.match = '';
            }
            var rules = this._currentRules();
            for (var i = 0; i < rules.length; i++) {
                tempMatch = this._input.match(this.rules[rules[i]]);
                if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
                    match = tempMatch;
                    index = i;
                    if (this.options.backtrack_lexer) {
                        token = this.test_match(tempMatch, rules[i]);
                        if (token !== false) {
                            return token;
                        } else if (this._backtrack) {
                            match = false;
                            continue; // rule action called reject() implying a rule MISmatch.
                        } else {
                            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                            return false;
                        }
                    } else if (!this.options.flex) {
                        break;
                    }
                }
            }
            if (match) {
                token = this.test_match(match, rules[index]);
                if (token !== false) {
                    return token;
                }
                // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                return false;
            }
            if (this._input === "") {
                return this.EOF;
            } else {
                return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
                    text: "",
                    token: null,
                    line: this.yylineno
                });
            }
        },

        // return next match that has a token
        lex: function lex() {
            var r = this.next();
            if (r) {
                return r;
            } else {
                return this.lex();
            }
        },

        // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
        begin: function begin(condition) {
            this.conditionStack.push(condition);
        },

        // pop the previously active lexer condition state off the condition stack
        popState: function popState() {
            var n = this.conditionStack.length - 1;
            if (n > 0) {
                return this.conditionStack.pop();
            } else {
                return this.conditionStack[0];
            }
        },

        // produce the lexer rule set which is active for the currently active lexer condition state
        _currentRules: function _currentRules() {
            if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
                return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
            } else {
                return this.conditions["INITIAL"].rules;
            }
        },

        // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
        topState: function topState(n) {
            n = this.conditionStack.length - 1 - Math.abs(n || 0);
            if (n >= 0) {
                return this.conditionStack[n];
            } else {
                return "INITIAL";
            }
        },

        // alias for begin(condition)
        pushState: function pushState(condition) {
            this.begin(condition);
        },

        // return the number of states currently on the stack
        stateStackSize: function stateStackSize() {
            return this.conditionStack.length;
        },
        options: { "case-insensitive": true },
        performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
            var YYSTATE = YY_START;
            switch ($avoiding_name_collisions) {
                case 0:
                    return 12;
                    break;
                case 1:
                    /* skip all whitespace */
                    break;
                case 2:
                    /* skip comments */
                    break;
                case 3:
                    /* skip comments */
                    break;
                case 4:
                    return 4;
                    break;
                case 5:
                    return 15;
                    break;
                case 6:
                    return 17;
                    break;
                case 7:
                    return 20;
                    break;
                case 8:
                    return 21;
                    break;
                case 9:
                    return 19;
                    break;
                case 10:
                    return 8;
                    break;
                case 11:
                    return 8;
                    break;
                case 12:
                    return 5;
                    break;
                case 13:
                    return 26;
                    break;
                case 14:
                    this.begin("options");
                    break;
                case 15:
                    this.popState();
                    break;
                case 16:
                    return 11;
                    break;
                case 17:
                    this.begin("string");
                    break;
                case 18:
                    this.popState();
                    break;
                case 19:
                    return 23;
                    break;
                case 20:
                    return 18;
                    break;
                case 21:
                    return 7;
                    break;
            }
        },
        rules: [/^(?:(\r?\n)+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:gitGraph\b)/i, /^(?:commit\b)/i, /^(?:branch\b)/i, /^(?:merge\b)/i, /^(?:reset\b)/i, /^(?:checkout\b)/i, /^(?:LR\b)/i, /^(?:BT\b)/i, /^(?::)/i, /^(?:\^)/i, /^(?:options\r?\n)/i, /^(?:end\r?\n)/i, /^(?:[^\n]+\r?\n)/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[a-zA-Z][a-zA-Z0-9_]+)/i, /^(?:$)/i],
        conditions: { "options": { "rules": [15, 16], "inclusive": false }, "string": { "rules": [18, 19], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 21], "inclusive": true } }
    };
    return lexer;
}();
parser.lexer = lexer;
function Parser() {
    this.yy = {};
}
Parser.prototype = parser;parser.Parser = Parser;
return new Parser();

}();

if (true) {

exports.parser = parser;
exports.Parser = parser.Parser;
exports.parse = function () {
    return parser.parse.apply(parser, arguments);
};
exports.main = function commonjsMain(args) {
    if (!args[1]) {
        console.log('Usage: ' + args[0] + ' FILE');
        process.exit(1);
    }
    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
    return exports.parser.parse(source);
};
if (typeof module !== 'undefined' && __webpack_require__.c[__webpack_require__.s] === module) {
    exports.main(process.argv.slice(1));
}

} /* WEBPACK VAR INJECTION */}.call(this, webpack_require(/*! ./../../../../node_modules/process/browser.js */ “./node_modules/process/browser.js”), webpack_require(/*! ./../../../../node_modules/webpack/buildin/module.js */ “./node_modules/webpack/buildin/module.js”)(module)))

/***/ }),

/***/ “./src/diagrams/sequence/parser/sequenceDiagram.js”: /*!*********************************************************!*\

!*** ./src/diagrams/sequence/parser/sequenceDiagram.js ***!
\*********************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”; /* WEBPACK VAR INJECTION */(function(process, module) {

/* parser generated by jison 0.4.18 */ /*

Returns a Parser object of the following structure:

Parser: {
  yy: {}
}

Parser.prototype: {
  yy: {},
  trace: function(),
  symbols_: {associative list: name ==> number},
  terminals_: {associative list: number ==> name},
  productions_: [...],
  performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
  table: [...],
  defaultActions: {...},
  parseError: function(str, hash),
  parse: function(input),

  lexer: {
      EOF: 1,
      parseError: function(str, hash),
      setInput: function(input),
      input: function(),
      unput: function(str),
      more: function(),
      less: function(n),
      pastInput: function(),
      upcomingInput: function(),
      showPosition: function(),
      test_match: function(regex_match_array, rule_index),
      next: function(),
      lex: function(),
      begin: function(condition),
      popState: function(),
      _currentRules: function(),
      topState: function(),
      pushState: function(condition),

      options: {
          ranges: boolean           (optional: true ==> token location info will include a .range[] member)
          flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
          backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
      },

      performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
      rules: [...],
      conditions: {associative list: name ==> set},
  }
}

token location info (@$, _$, etc.): {
  first_line: n,
  last_line: n,
  first_column: n,
  last_column: n,
  range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
}

the parseError function receives a 'hash' object with these members for lexer and parser errors: {
  text:        (matched text)
  token:       (the produced terminal token, if any)
  line:        (yylineno)
}
while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
  loc:         (yylloc)
  expected:    (string describing the set of expected tokens)
  recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
}

*/ var parser = function () {

var o = function o(k, v, _o, l) {
    for (_o = _o || {}, l = k.length; l--; _o[k[l]] = v) {}return _o;
},
    $V0 = [1, 2],
    $V1 = [1, 3],
    $V2 = [1, 4],
    $V3 = [2, 4],
    $V4 = [1, 9],
    $V5 = [1, 11],
    $V6 = [1, 12],
    $V7 = [1, 14],
    $V8 = [1, 15],
    $V9 = [1, 17],
    $Va = [1, 18],
    $Vb = [1, 19],
    $Vc = [1, 20],
    $Vd = [1, 21],
    $Ve = [1, 23],
    $Vf = [1, 24],
    $Vg = [1, 4, 5, 10, 15, 16, 18, 20, 21, 22, 23, 25, 27, 28, 29, 40],
    $Vh = [1, 32],
    $Vi = [4, 5, 10, 15, 16, 18, 20, 21, 22, 23, 25, 29, 40],
    $Vj = [4, 5, 10, 15, 16, 18, 20, 21, 22, 23, 25, 28, 29, 40],
    $Vk = [4, 5, 10, 15, 16, 18, 20, 21, 22, 23, 25, 27, 29, 40],
    $Vl = [38, 39, 40];
var parser = { trace: function trace() {},
    yy: {},
    symbols_: { "error": 2, "start": 3, "SPACE": 4, "NL": 5, "SD": 6, "document": 7, "line": 8, "statement": 9, "participant": 10, "actor": 11, "AS": 12, "restOfLine": 13, "signal": 14, "activate": 15, "deactivate": 16, "note_statement": 17, "title": 18, "text2": 19, "loop": 20, "end": 21, "opt": 22, "alt": 23, "else_sections": 24, "par": 25, "par_sections": 26, "and": 27, "else": 28, "note": 29, "placement": 30, "over": 31, "actor_pair": 32, "spaceList": 33, ",": 34, "left_of": 35, "right_of": 36, "signaltype": 37, "+": 38, "-": 39, "ACTOR": 40, "SOLID_OPEN_ARROW": 41, "DOTTED_OPEN_ARROW": 42, "SOLID_ARROW": 43, "DOTTED_ARROW": 44, "SOLID_CROSS": 45, "DOTTED_CROSS": 46, "TXT": 47, "$accept": 0, "$end": 1 },
    terminals_: { 2: "error", 4: "SPACE", 5: "NL", 6: "SD", 10: "participant", 12: "AS", 13: "restOfLine", 15: "activate", 16: "deactivate", 18: "title", 20: "loop", 21: "end", 22: "opt", 23: "alt", 25: "par", 27: "and", 28: "else", 29: "note", 31: "over", 34: ",", 35: "left_of", 36: "right_of", 38: "+", 39: "-", 40: "ACTOR", 41: "SOLID_OPEN_ARROW", 42: "DOTTED_OPEN_ARROW", 43: "SOLID_ARROW", 44: "DOTTED_ARROW", 45: "SOLID_CROSS", 46: "DOTTED_CROSS", 47: "TXT" },
    productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [9, 5], [9, 3], [9, 2], [9, 3], [9, 3], [9, 2], [9, 3], [9, 4], [9, 4], [9, 4], [9, 4], [26, 1], [26, 4], [24, 1], [24, 4], [17, 4], [17, 4], [33, 2], [33, 1], [32, 3], [32, 1], [30, 1], [30, 1], [14, 5], [14, 5], [14, 4], [11, 1], [37, 1], [37, 1], [37, 1], [37, 1], [37, 1], [37, 1], [19, 1]],
    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
        /* this == yyval */

        var $0 = $$.length - 1;
        switch (yystate) {
            case 3:
                yy.apply($$[$0]);return $$[$0];
                break;
            case 4:
                this.$ = [];
                break;
            case 5:
                $$[$0 - 1].push($$[$0]);this.$ = $$[$0 - 1];
                break;
            case 6:case 7:
                this.$ = $$[$0];
                break;
            case 8:
                this.$ = [];
                break;
            case 9:
                $$[$0 - 3].description = $$[$0 - 1];this.$ = $$[$0 - 3];
                break;
            case 10:
                this.$ = $$[$0 - 1];
                break;
            case 12:
                this.$ = { type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1] };
                break;
            case 13:
                this.$ = { type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 1] };
                break;
            case 15:
                this.$ = [{ type: 'setTitle', text: $$[$0 - 1] }];
                break;
            case 16:

                $$[$0 - 1].unshift({ type: 'loopStart', loopText: $$[$0 - 2], signalType: yy.LINETYPE.LOOP_START });
                $$[$0 - 1].push({ type: 'loopEnd', loopText: $$[$0 - 2], signalType: yy.LINETYPE.LOOP_END });
                this.$ = $$[$0 - 1];
                break;
            case 17:

                $$[$0 - 1].unshift({ type: 'optStart', optText: $$[$0 - 2], signalType: yy.LINETYPE.OPT_START });
                $$[$0 - 1].push({ type: 'optEnd', optText: $$[$0 - 2], signalType: yy.LINETYPE.OPT_END });
                this.$ = $$[$0 - 1];
                break;
            case 18:

                // Alt start
                $$[$0 - 1].unshift({ type: 'altStart', altText: $$[$0 - 2], signalType: yy.LINETYPE.ALT_START });
                // Content in alt is already in $$[$0-1]
                // End
                $$[$0 - 1].push({ type: 'altEnd', signalType: yy.LINETYPE.ALT_END });
                this.$ = $$[$0 - 1];
                break;
            case 19:

                // Parallel start
                $$[$0 - 1].unshift({ type: 'parStart', parText: $$[$0 - 2], signalType: yy.LINETYPE.PAR_START });
                // Content in par is already in $$[$0-1]
                // End
                $$[$0 - 1].push({ type: 'parEnd', signalType: yy.LINETYPE.PAR_END });
                this.$ = $$[$0 - 1];
                break;
            case 21:
                this.$ = $$[$0 - 3].concat([{ type: 'and', parText: $$[$0 - 1], signalType: yy.LINETYPE.PAR_AND }, $$[$0]]);
                break;
            case 23:
                this.$ = $$[$0 - 3].concat([{ type: 'else', altText: $$[$0 - 1], signalType: yy.LINETYPE.ALT_ELSE }, $$[$0]]);
                break;
            case 24:

                this.$ = [$$[$0 - 1], { type: 'addNote', placement: $$[$0 - 2], actor: $$[$0 - 1].actor, text: $$[$0] }];
                break;
            case 25:

                // Coerce actor_pair into a [to, from, ...] array
                $$[$0 - 2] = [].concat($$[$0 - 1], $$[$0 - 1]).slice(0, 2);
                $$[$0 - 2][0] = $$[$0 - 2][0].actor;
                $$[$0 - 2][1] = $$[$0 - 2][1].actor;
                this.$ = [$$[$0 - 1], { type: 'addNote', placement: yy.PLACEMENT.OVER, actor: $$[$0 - 2].slice(0, 2), text: $$[$0] }];
                break;
            case 28:
                this.$ = [$$[$0 - 2], $$[$0]];
                break;
            case 29:
                this.$ = $$[$0];
                break;
            case 30:
                this.$ = yy.PLACEMENT.LEFTOF;
                break;
            case 31:
                this.$ = yy.PLACEMENT.RIGHTOF;
                break;
            case 32:
                this.$ = [$$[$0 - 4], $$[$0 - 1], { type: 'addMessage', from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0] }, { type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1] }];
                break;
            case 33:
                this.$ = [$$[$0 - 4], $$[$0 - 1], { type: 'addMessage', from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0] }, { type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 4] }];
                break;
            case 34:
                this.$ = [$$[$0 - 3], $$[$0 - 1], { type: 'addMessage', from: $$[$0 - 3].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 2], msg: $$[$0] }];
                break;
            case 35:
                this.$ = { type: 'addActor', actor: $$[$0] };
                break;
            case 36:
                this.$ = yy.LINETYPE.SOLID_OPEN;
                break;
            case 37:
                this.$ = yy.LINETYPE.DOTTED_OPEN;
                break;
            case 38:
                this.$ = yy.LINETYPE.SOLID;
                break;
            case 39:
                this.$ = yy.LINETYPE.DOTTED;
                break;
            case 40:
                this.$ = yy.LINETYPE.SOLID_CROSS;
                break;
            case 41:
                this.$ = yy.LINETYPE.DOTTED_CROSS;
                break;
            case 42:
                this.$ = $$[$0].substring(1).trim().replace(/\\n/gm, "\n");
                break;
        }
    },
    table: [{ 3: 1, 4: $V0, 5: $V1, 6: $V2 }, { 1: [3] }, { 3: 5, 4: $V0, 5: $V1, 6: $V2 }, { 3: 6, 4: $V0, 5: $V1, 6: $V2 }, o([1, 4, 5, 10, 15, 16, 18, 20, 22, 23, 25, 29, 40], $V3, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 22: $Vb, 23: $Vc, 25: $Vd, 29: $Ve, 40: $Vf }, o($Vg, [2, 5]), { 9: 25, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 22: $Vb, 23: $Vc, 25: $Vd, 29: $Ve, 40: $Vf }, o($Vg, [2, 7]), o($Vg, [2, 8]), { 11: 26, 40: $Vf }, { 5: [1, 27] }, { 11: 28, 40: $Vf }, { 11: 29, 40: $Vf }, { 5: [1, 30] }, { 19: 31, 47: $Vh }, { 13: [1, 33] }, { 13: [1, 34] }, { 13: [1, 35] }, { 13: [1, 36] }, { 37: 37, 41: [1, 38], 42: [1, 39], 43: [1, 40], 44: [1, 41], 45: [1, 42], 46: [1, 43] }, { 30: 44, 31: [1, 45], 35: [1, 46], 36: [1, 47] }, o([5, 12, 34, 41, 42, 43, 44, 45, 46, 47], [2, 35]), o($Vg, [2, 6]), { 5: [1, 49], 12: [1, 48] }, o($Vg, [2, 11]), { 5: [1, 50] }, { 5: [1, 51] }, o($Vg, [2, 14]), { 5: [1, 52] }, { 5: [2, 42] }, o($Vi, $V3, { 7: 53 }), o($Vi, $V3, { 7: 54 }), o($Vj, $V3, { 24: 55, 7: 56 }), o($Vk, $V3, { 26: 57, 7: 58 }), { 11: 61, 38: [1, 59], 39: [1, 60], 40: $Vf }, o($Vl, [2, 36]), o($Vl, [2, 37]), o($Vl, [2, 38]), o($Vl, [2, 39]), o($Vl, [2, 40]), o($Vl, [2, 41]), { 11: 62, 40: $Vf }, { 11: 64, 32: 63, 40: $Vf }, { 40: [2, 30] }, { 40: [2, 31] }, { 13: [1, 65] }, o($Vg, [2, 10]), o($Vg, [2, 12]), o($Vg, [2, 13]), o($Vg, [2, 15]), { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 21: [1, 66], 22: $Vb, 23: $Vc, 25: $Vd, 29: $Ve, 40: $Vf }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 21: [1, 67], 22: $Vb, 23: $Vc, 25: $Vd, 29: $Ve, 40: $Vf }, { 21: [1, 68] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 21: [2, 22], 22: $Vb, 23: $Vc, 25: $Vd, 28: [1, 69], 29: $Ve, 40: $Vf }, { 21: [1, 70] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: $V6, 11: 22, 14: 13, 15: $V7, 16: $V8, 17: 16, 18: $V9, 20: $Va, 21: [2, 20], 22: $Vb, 23: $Vc, 25: $Vd, 27: [1, 71], 29: $Ve, 40: $Vf }, { 11: 72, 40: $Vf }, { 11: 73, 40: $Vf }, { 19: 74, 47: $Vh }, { 19: 75, 47: $Vh }, { 19: 76, 47: $Vh }, { 34: [1, 77], 47: [2, 29] }, { 5: [1, 78] }, o($Vg, [2, 16]), o($Vg, [2, 17]), o($Vg, [2, 18]), { 13: [1, 79] }, o($Vg, [2, 19]), { 13: [1, 80] }, { 19: 81, 47: $Vh }, { 19: 82, 47: $Vh }, { 5: [2, 34] }, { 5: [2, 24] }, { 5: [2, 25] }, { 11: 83, 40: $Vf }, o($Vg, [2, 9]), o($Vj, $V3, { 7: 56, 24: 84 }), o($Vk, $V3, { 7: 58, 26: 85 }), { 5: [2, 32] }, { 5: [2, 33] }, { 47: [2, 28] }, { 21: [2, 23] }, { 21: [2, 21] }],
    defaultActions: { 5: [2, 1], 6: [2, 2], 32: [2, 42], 46: [2, 30], 47: [2, 31], 74: [2, 34], 75: [2, 24], 76: [2, 25], 81: [2, 32], 82: [2, 33], 83: [2, 28], 84: [2, 23], 85: [2, 21] },
    parseError: function parseError(str, hash) {
        if (hash.recoverable) {
            this.trace(str);
        } else {
            var error = new Error(str);
            error.hash = hash;
            throw error;
        }
    },
    parse: function parse(input) {
        var self = this,
            stack = [0],
            tstack = [],
            vstack = [null],
            lstack = [],
            table = this.table,
            yytext = '',
            yylineno = 0,
            yyleng = 0,
            recovering = 0,
            TERROR = 2,
            EOF = 1;
        var args = lstack.slice.call(arguments, 1);
        var lexer = Object.create(this.lexer);
        var sharedState = { yy: {} };
        for (var k in this.yy) {
            if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
                sharedState.yy[k] = this.yy[k];
            }
        }
        lexer.setInput(input, sharedState.yy);
        sharedState.yy.lexer = lexer;
        sharedState.yy.parser = this;
        if (typeof lexer.yylloc == 'undefined') {
            lexer.yylloc = {};
        }
        var yyloc = lexer.yylloc;
        lstack.push(yyloc);
        var ranges = lexer.options && lexer.options.ranges;
        if (typeof sharedState.yy.parseError === 'function') {
            this.parseError = sharedState.yy.parseError;
        } else {
            this.parseError = Object.getPrototypeOf(this).parseError;
        }
        function popStack(n) {
            stack.length = stack.length - 2 * n;
            vstack.length = vstack.length - n;
            lstack.length = lstack.length - n;
        }
        function lex() {
            var token;
            token = tstack.pop() || lexer.lex() || EOF;
            if (typeof token !== 'number') {
                if (token instanceof Array) {
                    tstack = token;
                    token = tstack.pop();
                }
                token = self.symbols_[token] || token;
            }
            return token;
        }
        var symbol,
            preErrorSymbol,
            state,
            action,
            a,
            r,
            yyval = {},
            p,
            len,
            newState,
            expected;
        while (true) {
            state = stack[stack.length - 1];
            if (this.defaultActions[state]) {
                action = this.defaultActions[state];
            } else {
                if (symbol === null || typeof symbol == 'undefined') {
                    symbol = lex();
                }
                action = table[state] && table[state][symbol];
            }
            if (typeof action === 'undefined' || !action.length || !action[0]) {
                var errStr = '';
                expected = [];
                for (p in table[state]) {
                    if (this.terminals_[p] && p > TERROR) {
                        expected.push('\'' + this.terminals_[p] + '\'');
                    }
                }
                if (lexer.showPosition) {
                    errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
                } else {
                    errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
                }
                this.parseError(errStr, {
                    text: lexer.match,
                    token: this.terminals_[symbol] || symbol,
                    line: lexer.yylineno,
                    loc: yyloc,
                    expected: expected
                });
            }
            if (action[0] instanceof Array && action.length > 1) {
                throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
            }
            switch (action[0]) {
                case 1:
                    stack.push(symbol);
                    vstack.push(lexer.yytext);
                    lstack.push(lexer.yylloc);
                    stack.push(action[1]);
                    symbol = null;
                    if (!preErrorSymbol) {
                        yyleng = lexer.yyleng;
                        yytext = lexer.yytext;
                        yylineno = lexer.yylineno;
                        yyloc = lexer.yylloc;
                        if (recovering > 0) {
                            recovering--;
                        }
                    } else {
                        symbol = preErrorSymbol;
                        preErrorSymbol = null;
                    }
                    break;
                case 2:
                    len = this.productions_[action[1]][1];
                    yyval.$ = vstack[vstack.length - len];
                    yyval._$ = {
                        first_line: lstack[lstack.length - (len || 1)].first_line,
                        last_line: lstack[lstack.length - 1].last_line,
                        first_column: lstack[lstack.length - (len || 1)].first_column,
                        last_column: lstack[lstack.length - 1].last_column
                    };
                    if (ranges) {
                        yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
                    }
                    r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
                    if (typeof r !== 'undefined') {
                        return r;
                    }
                    if (len) {
                        stack = stack.slice(0, -1 * len * 2);
                        vstack = vstack.slice(0, -1 * len);
                        lstack = lstack.slice(0, -1 * len);
                    }
                    stack.push(this.productions_[action[1]][0]);
                    vstack.push(yyval.$);
                    lstack.push(yyval._$);
                    newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
                    stack.push(newState);
                    break;
                case 3:
                    return true;
            }
        }
        return true;
    } };

/* generated by jison-lex 0.3.4 */
var lexer = function () {
    var lexer = {

        EOF: 1,

        parseError: function parseError(str, hash) {
            if (this.yy.parser) {
                this.yy.parser.parseError(str, hash);
            } else {
                throw new Error(str);
            }
        },

        // resets the lexer, sets new input
        setInput: function setInput(input, yy) {
            this.yy = yy || this.yy || {};
            this._input = input;
            this._more = this._backtrack = this.done = false;
            this.yylineno = this.yyleng = 0;
            this.yytext = this.matched = this.match = '';
            this.conditionStack = ['INITIAL'];
            this.yylloc = {
                first_line: 1,
                first_column: 0,
                last_line: 1,
                last_column: 0
            };
            if (this.options.ranges) {
                this.yylloc.range = [0, 0];
            }
            this.offset = 0;
            return this;
        },

        // consumes and returns one char from the input
        input: function input() {
            var ch = this._input[0];
            this.yytext += ch;
            this.yyleng++;
            this.offset++;
            this.match += ch;
            this.matched += ch;
            var lines = ch.match(/(?:\r\n?|\n).*/g);
            if (lines) {
                this.yylineno++;
                this.yylloc.last_line++;
            } else {
                this.yylloc.last_column++;
            }
            if (this.options.ranges) {
                this.yylloc.range[1]++;
            }

            this._input = this._input.slice(1);
            return ch;
        },

        // unshifts one char (or a string) into the input
        unput: function unput(ch) {
            var len = ch.length;
            var lines = ch.split(/(?:\r\n?|\n)/g);

            this._input = ch + this._input;
            this.yytext = this.yytext.substr(0, this.yytext.length - len);
            //this.yyleng -= len;
            this.offset -= len;
            var oldLines = this.match.split(/(?:\r\n?|\n)/g);
            this.match = this.match.substr(0, this.match.length - 1);
            this.matched = this.matched.substr(0, this.matched.length - 1);

            if (lines.length - 1) {
                this.yylineno -= lines.length - 1;
            }
            var r = this.yylloc.range;

            this.yylloc = {
                first_line: this.yylloc.first_line,
                last_line: this.yylineno + 1,
                first_column: this.yylloc.first_column,
                last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
            };

            if (this.options.ranges) {
                this.yylloc.range = [r[0], r[0] + this.yyleng - len];
            }
            this.yyleng = this.yytext.length;
            return this;
        },

        // When called from action, caches matched text and appends it on next action
        more: function more() {
            this._more = true;
            return this;
        },

        // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
        reject: function reject() {
            if (this.options.backtrack_lexer) {
                this._backtrack = true;
            } else {
                return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
                    text: "",
                    token: null,
                    line: this.yylineno
                });
            }
            return this;
        },

        // retain first n characters of the match
        less: function less(n) {
            this.unput(this.match.slice(n));
        },

        // displays already matched input, i.e. for error messages
        pastInput: function pastInput() {
            var past = this.matched.substr(0, this.matched.length - this.match.length);
            return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, "");
        },

        // displays upcoming input, i.e. for error messages
        upcomingInput: function upcomingInput() {
            var next = this.match;
            if (next.length < 20) {
                next += this._input.substr(0, 20 - next.length);
            }
            return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
        },

        // displays the character position where the lexing error occurred, i.e. for error messages
        showPosition: function showPosition() {
            var pre = this.pastInput();
            var c = new Array(pre.length + 1).join("-");
            return pre + this.upcomingInput() + "\n" + c + "^";
        },

        // test the lexed token: return FALSE when not a match, otherwise return token
        test_match: function test_match(match, indexed_rule) {
            var token, lines, backup;

            if (this.options.backtrack_lexer) {
                // save context
                backup = {
                    yylineno: this.yylineno,
                    yylloc: {
                        first_line: this.yylloc.first_line,
                        last_line: this.last_line,
                        first_column: this.yylloc.first_column,
                        last_column: this.yylloc.last_column
                    },
                    yytext: this.yytext,
                    match: this.match,
                    matches: this.matches,
                    matched: this.matched,
                    yyleng: this.yyleng,
                    offset: this.offset,
                    _more: this._more,
                    _input: this._input,
                    yy: this.yy,
                    conditionStack: this.conditionStack.slice(0),
                    done: this.done
                };
                if (this.options.ranges) {
                    backup.yylloc.range = this.yylloc.range.slice(0);
                }
            }

            lines = match[0].match(/(?:\r\n?|\n).*/g);
            if (lines) {
                this.yylineno += lines.length;
            }
            this.yylloc = {
                first_line: this.yylloc.last_line,
                last_line: this.yylineno + 1,
                first_column: this.yylloc.last_column,
                last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
            };
            this.yytext += match[0];
            this.match += match[0];
            this.matches = match;
            this.yyleng = this.yytext.length;
            if (this.options.ranges) {
                this.yylloc.range = [this.offset, this.offset += this.yyleng];
            }
            this._more = false;
            this._backtrack = false;
            this._input = this._input.slice(match[0].length);
            this.matched += match[0];
            token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
            if (this.done && this._input) {
                this.done = false;
            }
            if (token) {
                return token;
            } else if (this._backtrack) {
                // recover context
                for (var k in backup) {
                    this[k] = backup[k];
                }
                return false; // rule action called reject() implying the next rule should be tested instead.
            }
            return false;
        },

        // return next match in input
        next: function next() {
            if (this.done) {
                return this.EOF;
            }
            if (!this._input) {
                this.done = true;
            }

            var token, match, tempMatch, index;
            if (!this._more) {
                this.yytext = '';
                this.match = '';
            }
            var rules = this._currentRules();
            for (var i = 0; i < rules.length; i++) {
                tempMatch = this._input.match(this.rules[rules[i]]);
                if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
                    match = tempMatch;
                    index = i;
                    if (this.options.backtrack_lexer) {
                        token = this.test_match(tempMatch, rules[i]);
                        if (token !== false) {
                            return token;
                        } else if (this._backtrack) {
                            match = false;
                            continue; // rule action called reject() implying a rule MISmatch.
                        } else {
                            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                            return false;
                        }
                    } else if (!this.options.flex) {
                        break;
                    }
                }
            }
            if (match) {
                token = this.test_match(match, rules[index]);
                if (token !== false) {
                    return token;
                }
                // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                return false;
            }
            if (this._input === "") {
                return this.EOF;
            } else {
                return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
                    text: "",
                    token: null,
                    line: this.yylineno
                });
            }
        },

        // return next match that has a token
        lex: function lex() {
            var r = this.next();
            if (r) {
                return r;
            } else {
                return this.lex();
            }
        },

        // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
        begin: function begin(condition) {
            this.conditionStack.push(condition);
        },

        // pop the previously active lexer condition state off the condition stack
        popState: function popState() {
            var n = this.conditionStack.length - 1;
            if (n > 0) {
                return this.conditionStack.pop();
            } else {
                return this.conditionStack[0];
            }
        },

        // produce the lexer rule set which is active for the currently active lexer condition state
        _currentRules: function _currentRules() {
            if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
                return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
            } else {
                return this.conditions["INITIAL"].rules;
            }
        },

        // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
        topState: function topState(n) {
            n = this.conditionStack.length - 1 - Math.abs(n || 0);
            if (n >= 0) {
                return this.conditionStack[n];
            } else {
                return "INITIAL";
            }
        },

        // alias for begin(condition)
        pushState: function pushState(condition) {
            this.begin(condition);
        },

        // return the number of states currently on the stack
        stateStackSize: function stateStackSize() {
            return this.conditionStack.length;
        },
        options: { "case-insensitive": true },
        performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
            var YYSTATE = YY_START;
            switch ($avoiding_name_collisions) {
                case 0:
                    return 5;
                    break;
                case 1:
                    /* skip all whitespace */
                    break;
                case 2:
                    /* skip same-line whitespace */
                    break;
                case 3:
                    /* skip comments */
                    break;
                case 4:
                    /* skip comments */
                    break;
                case 5:
                    this.begin('ID');return 10;
                    break;
                case 6:
                    this.begin('ALIAS');return 40;
                    break;
                case 7:
                    this.popState();this.popState();this.begin('LINE');return 12;
                    break;
                case 8:
                    this.popState();this.popState();return 5;
                    break;
                case 9:
                    this.begin('LINE');return 20;
                    break;
                case 10:
                    this.begin('LINE');return 22;
                    break;
                case 11:
                    this.begin('LINE');return 23;
                    break;
                case 12:
                    this.begin('LINE');return 28;
                    break;
                case 13:
                    this.begin('LINE');return 25;
                    break;
                case 14:
                    this.begin('LINE');return 27;
                    break;
                case 15:
                    this.popState();return 13;
                    break;
                case 16:
                    return 21;
                    break;
                case 17:
                    return 35;
                    break;
                case 18:
                    return 36;
                    break;
                case 19:
                    return 31;
                    break;
                case 20:
                    return 29;
                    break;
                case 21:
                    this.begin('ID');return 15;
                    break;
                case 22:
                    this.begin('ID');return 16;
                    break;
                case 23:
                    return 18;
                    break;
                case 24:
                    return 6;
                    break;
                case 25:
                    return 34;
                    break;
                case 26:
                    return 5;
                    break;
                case 27:
                    yy_.yytext = yy_.yytext.trim();return 40;
                    break;
                case 28:
                    return 43;
                    break;
                case 29:
                    return 44;
                    break;
                case 30:
                    return 41;
                    break;
                case 31:
                    return 42;
                    break;
                case 32:
                    return 45;
                    break;
                case 33:
                    return 46;
                    break;
                case 34:
                    return 47;
                    break;
                case 35:
                    return 38;
                    break;
                case 36:
                    return 39;
                    break;
                case 37:
                    return 5;
                    break;
                case 38:
                    return 'INVALID';
                    break;
            }
        },
        rules: [/^(?:[\n]+)/i, /^(?:\s+)/i, /^(?:((?!\n)\s)+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:participant\b)/i, /^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i, /^(?:as\b)/i, /^(?:(?:))/i, /^(?:loop\b)/i, /^(?:opt\b)/i, /^(?:alt\b)/i, /^(?:else\b)/i, /^(?:par\b)/i, /^(?:and\b)/i, /^(?:[^#\n;]*)/i, /^(?:end\b)/i, /^(?:left of\b)/i, /^(?:right of\b)/i, /^(?:over\b)/i, /^(?:note\b)/i, /^(?:activate\b)/i, /^(?:deactivate\b)/i, /^(?:title\b)/i, /^(?:sequenceDiagram\b)/i, /^(?:,)/i, /^(?:;)/i, /^(?:[^\+\->:\n,;]+)/i, /^(?:->>)/i, /^(?:-->>)/i, /^(?:->)/i, /^(?:-->)/i, /^(?:-[x])/i, /^(?:--[x])/i, /^(?::[^#\n;]+)/i, /^(?:\+)/i, /^(?:-)/i, /^(?:$)/i, /^(?:.)/i],
        conditions: { "LINE": { "rules": [2, 3, 15], "inclusive": false }, "ALIAS": { "rules": [2, 3, 7, 8], "inclusive": false }, "ID": { "rules": [2, 3, 6], "inclusive": false }, "INITIAL": { "rules": [0, 1, 3, 4, 5, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], "inclusive": true } }
    };
    return lexer;
}();
parser.lexer = lexer;
function Parser() {
    this.yy = {};
}
Parser.prototype = parser;parser.Parser = Parser;
return new Parser();

}();

if (true) {

exports.parser = parser;
exports.Parser = parser.Parser;
exports.parse = function () {
    return parser.parse.apply(parser, arguments);
};
exports.main = function commonjsMain(args) {
    if (!args[1]) {
        console.log('Usage: ' + args[0] + ' FILE');
        process.exit(1);
    }
    var source = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js").readFileSync(__webpack_require__(/*! path */ "./node_modules/path-browserify/index.js").normalize(args[1]), "utf8");
    return exports.parser.parse(source);
};
if (typeof module !== 'undefined' && __webpack_require__.c[__webpack_require__.s] === module) {
    exports.main(process.argv.slice(1));
}

} /* WEBPACK VAR INJECTION */}.call(this, webpack_require(/*! ./../../../../node_modules/process/browser.js */ “./node_modules/process/browser.js”), webpack_require(/*! ./../../../../node_modules/webpack/buildin/module.js */ “./node_modules/webpack/buildin/module.js”)(module)))

/***/ }),

/***/ “./src/diagrams/sequence/sequenceDb.js”: /*!*********************************************!*\

!*** ./src/diagrams/sequence/sequenceDb.js ***!
\*********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.apply = exports.setTitle = exports.addNote = exports.PLACEMENT = exports.ARROWTYPE = exports.LINETYPE = exports.clear = exports.getTitle = exports.getActorKeys = exports.getActor = exports.getActors = exports.getMessages = exports.addSignal = exports.addMessage = exports.addActor = undefined;

var _logger = webpack_require(/*! ../../logger */ “./src/logger.js”);

var actors = {}; var messages = []; var notes = []; var title = '';

var addActor = exports.addActor = function addActor(id, name, description) {

// Don't allow description nulling
var old = actors[id];
if (old && name === old.name && description == null) return;

// Don't allow null descriptions, either
if (description == null) description = name;

actors[id] = { name: name, description: description };

};

var addMessage = exports.addMessage = function addMessage(idFrom, idTo, message, answer) {

messages.push({ from: idFrom, to: idTo, message: message, answer: answer });

};

var addSignal = exports.addSignal = function addSignal(idFrom, idTo, message, messageType) {

_logger.logger.debug('Adding message from=' + idFrom + ' to=' + idTo + ' message=' + message + ' type=' + messageType);
messages.push({ from: idFrom, to: idTo, message: message, type: messageType });

};

var getMessages = exports.getMessages = function getMessages() {

return messages;

};

var getActors = exports.getActors = function getActors() {

return actors;

}; var getActor = exports.getActor = function getActor(id) {

return actors[id];

}; var getActorKeys = exports.getActorKeys = function getActorKeys() {

return Object.keys(actors);

}; var getTitle = exports.getTitle = function getTitle() {

return title;

};

var clear = exports.clear = function clear() {

actors = {};
messages = [];

};

var LINETYPE = exports.LINETYPE = {

SOLID: 0,
DOTTED: 1,
NOTE: 2,
SOLID_CROSS: 3,
DOTTED_CROSS: 4,
SOLID_OPEN: 5,
DOTTED_OPEN: 6,
LOOP_START: 10,
LOOP_END: 11,
ALT_START: 12,
ALT_ELSE: 13,
ALT_END: 14,
OPT_START: 15,
OPT_END: 16,
ACTIVE_START: 17,
ACTIVE_END: 18,
PAR_START: 19,
PAR_AND: 20,
PAR_END: 21

};

var ARROWTYPE = exports.ARROWTYPE = {

FILLED: 0,
OPEN: 1

};

var PLACEMENT = exports.PLACEMENT = {

LEFTOF: 0,
RIGHTOF: 1,
OVER: 2

};

var addNote = exports.addNote = function addNote(actor, placement, message) {

var note = { actor: actor, placement: placement, message: message

  // Coerce actor into a [to, from, ...] array
};var actors = [].concat(actor, actor);

notes.push(note);
messages.push({ from: actors[0], to: actors[1], message: message, type: LINETYPE.NOTE, placement: placement });

};

var setTitle = exports.setTitle = function setTitle(titleText) {

title = titleText;

};

var apply = exports.apply = function apply(param) {

if (param instanceof Array) {
  param.forEach(function (item) {
    apply(item);
  });
} else {
  switch (param.type) {
    case 'addActor':
      addActor(param.actor, param.actor, param.description);
      break;
    case 'activeStart':
      addSignal(param.actor, undefined, undefined, param.signalType);
      break;
    case 'activeEnd':
      addSignal(param.actor, undefined, undefined, param.signalType);
      break;
    case 'addNote':
      addNote(param.actor, param.placement, param.text);
      break;
    case 'addMessage':
      addSignal(param.from, param.to, param.msg, param.signalType);
      break;
    case 'loopStart':
      addSignal(undefined, undefined, param.loopText, param.signalType);
      break;
    case 'loopEnd':
      addSignal(undefined, undefined, undefined, param.signalType);
      break;
    case 'optStart':
      addSignal(undefined, undefined, param.optText, param.signalType);
      break;
    case 'optEnd':
      addSignal(undefined, undefined, undefined, param.signalType);
      break;
    case 'altStart':
      addSignal(undefined, undefined, param.altText, param.signalType);
      break;
    case 'else':
      addSignal(undefined, undefined, param.altText, param.signalType);
      break;
    case 'altEnd':
      addSignal(undefined, undefined, undefined, param.signalType);
      break;
    case 'setTitle':
      setTitle(param.text);
      break;
    case 'parStart':
      addSignal(undefined, undefined, param.parText, param.signalType);
      break;
    case 'and':
      addSignal(undefined, undefined, param.parText, param.signalType);
      break;
    case 'parEnd':
      addSignal(undefined, undefined, undefined, param.signalType);
      break;
  }
}

};

exports.default = {

addActor: addActor,
addMessage: addMessage,
addSignal: addSignal,
getMessages: getMessages,
getActors: getActors,
getActor: getActor,
getActorKeys: getActorKeys,
getTitle: getTitle,
clear: clear,
LINETYPE: LINETYPE,
ARROWTYPE: ARROWTYPE,
PLACEMENT: PLACEMENT,
addNote: addNote,
setTitle: setTitle,
apply: apply

};

/***/ }),

/***/ “./src/diagrams/sequence/sequenceRenderer.js”: /*!***************************************************!*\

!*** ./src/diagrams/sequence/sequenceRenderer.js ***!
\***************************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.draw = exports.setConf = exports.drawActors = exports.bounds = undefined;

var _d = webpack_require(/*! d3 */ “./node_modules/d3/index.js”);

var d3 = _interopRequireWildcard(_d);

var _svgDraw = webpack_require(/*! ./svgDraw */ “./src/diagrams/sequence/svgDraw.js”);

var _svgDraw2 = _interopRequireDefault(_svgDraw);

var _logger = webpack_require(/*! ../../logger */ “./src/logger.js”);

var _sequenceDiagram = webpack_require(/*! ./parser/sequenceDiagram */ “./src/diagrams/sequence/parser/sequenceDiagram.js”);

var _sequenceDb = webpack_require(/*! ./sequenceDb */ “./src/diagrams/sequence/sequenceDb.js”);

var _sequenceDb2 = _interopRequireDefault(_sequenceDb);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj = obj; } } newObj.default = obj; return newObj; } }

_sequenceDiagram.parser.yy = _sequenceDb2.default;

var conf = {

diagramMarginX: 50,
diagramMarginY: 30,
// Margin between actors
actorMargin: 50,
// Width of actor boxes
width: 150,
// Height of actor boxes
height: 65,
// Margin around loop boxes
boxMargin: 10,
boxTextMargin: 5,
noteMargin: 10,
// Space between messages
messageMargin: 35,
// mirror actors under diagram
mirrorActors: false,
// Depending on css styling this might need adjustment
// Prolongs the edge of the diagram downwards
bottomMarginAdj: 1,

// width of activation box
activationWidth: 10,

// text placement as: tspan | fo | old only text as before
textPlacement: 'tspan'

};

var bounds = exports.bounds = {

data: {
  startx: undefined,
  stopx: undefined,
  starty: undefined,
  stopy: undefined
},
verticalPos: 0,

sequenceItems: [],
activations: [],
init: function init() {
  this.sequenceItems = [];
  this.activations = [];
  this.data = {
    startx: undefined,
    stopx: undefined,
    starty: undefined,
    stopy: undefined
  };
  this.verticalPos = 0;
},
updateVal: function updateVal(obj, key, val, fun) {
  if (typeof obj[key] === 'undefined') {
    obj[key] = val;
  } else {
    obj[key] = fun(val, obj[key]);
  }
},
updateBounds: function updateBounds(startx, starty, stopx, stopy) {
  var _self = this;
  var cnt = 0;
  function updateFn(type) {
    return function updateItemBounds(item) {
      cnt++;
      // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems
      var n = _self.sequenceItems.length - cnt + 1;

      _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);
      _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);

      _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);
      _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);

      if (!(type === 'activation')) {
        _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);
        _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);

        _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);
        _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);
      }
    };
  }

  this.sequenceItems.forEach(updateFn());
  this.activations.forEach(updateFn('activation'));
},
insert: function insert(startx, starty, stopx, stopy) {
  var _startx = Math.min(startx, stopx);
  var _stopx = Math.max(startx, stopx);
  var _starty = Math.min(starty, stopy);
  var _stopy = Math.max(starty, stopy);

  this.updateVal(bounds.data, 'startx', _startx, Math.min);
  this.updateVal(bounds.data, 'starty', _starty, Math.min);
  this.updateVal(bounds.data, 'stopx', _stopx, Math.max);
  this.updateVal(bounds.data, 'stopy', _stopy, Math.max);

  this.updateBounds(_startx, _starty, _stopx, _stopy);
},
newActivation: function newActivation(message, diagram) {
  var actorRect = _sequenceDiagram.parser.yy.getActors()[message.from.actor];
  var stackedSize = actorActivations(message.from.actor).length;
  var x = actorRect.x + conf.width / 2 + (stackedSize - 1) * conf.activationWidth / 2;
  this.activations.push({
    startx: x,
    starty: this.verticalPos + 2,
    stopx: x + conf.activationWidth,
    stopy: undefined,
    actor: message.from.actor,
    anchored: _svgDraw2.default.anchorElement(diagram)
  });
},
endActivation: function endActivation(message) {
  // find most recent activation for given actor
  var lastActorActivationIdx = this.activations.map(function (activation) {
    return activation.actor;
  }).lastIndexOf(message.from.actor);
  var activation = this.activations.splice(lastActorActivationIdx, 1)[0];
  return activation;
},
newLoop: function newLoop(title) {
  this.sequenceItems.push({ startx: undefined, starty: this.verticalPos, stopx: undefined, stopy: undefined, title: title });
},
endLoop: function endLoop() {
  var loop = this.sequenceItems.pop();
  return loop;
},
addSectionToLoop: function addSectionToLoop(message) {
  var loop = this.sequenceItems.pop();
  loop.sections = loop.sections || [];
  loop.sectionTitles = loop.sectionTitles || [];
  loop.sections.push(bounds.getVerticalPos());
  loop.sectionTitles.push(message);
  this.sequenceItems.push(loop);
},
bumpVerticalPos: function bumpVerticalPos(bump) {
  this.verticalPos = this.verticalPos + bump;
  this.data.stopy = this.verticalPos;
},
getVerticalPos: function getVerticalPos() {
  return this.verticalPos;
},
getBounds: function getBounds() {
  return this.data;
}

};

var _drawLongText = function _drawLongText(text, x, y, g, width) {

var textHeight = 0;
var lines = text.split(/<br\/?>/ig);
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;

try {
  for (var _iterator = lines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
    var line = _step.value;

    var textObj = _svgDraw2.default.getTextObj();
    textObj.x = x;
    textObj.y = y + textHeight;
    textObj.textMargin = conf.noteMargin;
    textObj.dy = '1em';
    textObj.text = line;
    textObj.class = 'noteText';
    var textElem = _svgDraw2.default.drawText(g, textObj, width);
    textHeight += (textElem._groups || textElem)[0][0].getBBox().height;
  }
} catch (err) {
  _didIteratorError = true;
  _iteratorError = err;
} finally {
  try {
    if (!_iteratorNormalCompletion && _iterator.return) {
      _iterator.return();
    }
  } finally {
    if (_didIteratorError) {
      throw _iteratorError;
    }
  }
}

return textHeight;

};

/**

* Draws an actor in the diagram with the attaced line
* @param center - The center of the the actor
* @param pos The position if the actor in the liost of actors
* @param description The text in the box
*/

var drawNote = function drawNote(elem, startx, verticalPos, msg, forceWidth) {

var rect = _svgDraw2.default.getNoteRect();
rect.x = startx;
rect.y = verticalPos;
rect.width = forceWidth || conf.width;
rect.class = 'note';

var g = elem.append('g');
var rectElem = _svgDraw2.default.drawRect(g, rect);

var textHeight = _drawLongText(msg.message, startx - 4, verticalPos + 24, g, rect.width - conf.noteMargin);

bounds.insert(startx, verticalPos, startx + rect.width, verticalPos + 2 * conf.noteMargin + textHeight);
rectElem.attr('height', textHeight + 2 * conf.noteMargin);
bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);

};

/**

* Draws a message
* @param elem
* @param startx
* @param stopx
* @param verticalPos
* @param txtCenter
* @param msg
*/

var drawMessage = function drawMessage(elem, startx, stopx, verticalPos, msg) {

var g = elem.append('g');
var txtCenter = startx + (stopx - startx) / 2;

var textElem = g.append('text') // text label for the x axis
.attr('x', txtCenter).attr('y', verticalPos - 7).style('text-anchor', 'middle').attr('class', 'messageText').text(msg.message);

var textWidth = (textElem._groups || textElem)[0][0].getBBox().width;

var line = void 0;
if (startx === stopx) {
  line = g.append('path').attr('d', 'M ' + startx + ',' + verticalPos + ' C ' + (startx + 60) + ',' + (verticalPos - 10) + ' ' + (startx + 60) + ',' + (verticalPos + 30) + ' ' + startx + ',' + (verticalPos + 20));

  bounds.bumpVerticalPos(30);
  var dx = Math.max(textWidth / 2, 100);
  bounds.insert(startx - dx, bounds.getVerticalPos() - 10, stopx + dx, bounds.getVerticalPos());
} else {
  line = g.append('line');
  line.attr('x1', startx);
  line.attr('y1', verticalPos);
  line.attr('x2', stopx);
  line.attr('y2', verticalPos);
  bounds.insert(startx, bounds.getVerticalPos() - 10, stopx, bounds.getVerticalPos());
}
// Make an SVG Container
// Draw the line
if (msg.type === _sequenceDiagram.parser.yy.LINETYPE.DOTTED || msg.type === _sequenceDiagram.parser.yy.LINETYPE.DOTTED_CROSS || msg.type === _sequenceDiagram.parser.yy.LINETYPE.DOTTED_OPEN) {
  line.style('stroke-dasharray', '3, 3');
  line.attr('class', 'messageLine1');
} else {
  line.attr('class', 'messageLine0');
}

var url = '';
if (conf.arrowMarkerAbsolute) {
  url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;
  url = url.replace(/\(/g, '\\(');
  url = url.replace(/\)/g, '\\)');
}

line.attr('stroke-width', 2);
line.attr('stroke', 'black');
line.style('fill', 'none'); // remove any fill colour
if (msg.type === _sequenceDiagram.parser.yy.LINETYPE.SOLID || msg.type === _sequenceDiagram.parser.yy.LINETYPE.DOTTED) {
  line.attr('marker-end', 'url(' + url + '#arrowhead)');
}

if (msg.type === _sequenceDiagram.parser.yy.LINETYPE.SOLID_CROSS || msg.type === _sequenceDiagram.parser.yy.LINETYPE.DOTTED_CROSS) {
  line.attr('marker-end', 'url(' + url + '#crosshead)');
}

};

var drawActors = exports.drawActors = function drawActors(diagram, actors, actorKeys, verticalPos) {

// Draw the actors
for (var i = 0; i < actorKeys.length; i++) {
  var key = actorKeys[i];

  // Add some rendering data to the object
  actors[key].x = i * conf.actorMargin + i * conf.width;
  actors[key].y = verticalPos;
  actors[key].width = conf.diagramMarginX;
  actors[key].height = conf.diagramMarginY;

  // Draw the box with the attached line
  _svgDraw2.default.drawActor(diagram, actors[key].x, verticalPos, actors[key].description, conf);
  bounds.insert(actors[key].x, verticalPos, actors[key].x + conf.width, conf.height);
}

// Add a margin between the actor boxes and the first arrow
bounds.bumpVerticalPos(conf.height);

};

var setConf = exports.setConf = function setConf(cnf) {

var keys = Object.keys(cnf);

keys.forEach(function (key) {
  conf[key] = cnf[key];
});

};

var actorActivations = function actorActivations(actor) {

return bounds.activations.filter(function (activation) {
  return activation.actor === actor;
});

};

var actorFlowVerticaBounds = function actorFlowVerticaBounds(actor) {

// handle multiple stacked activations for same actor
var actors = _sequenceDiagram.parser.yy.getActors();
var activations = actorActivations(actor);

var left = activations.reduce(function (acc, activation) {
  return Math.min(acc, activation.startx);
}, actors[actor].x + conf.width / 2);
var right = activations.reduce(function (acc, activation) {
  return Math.max(acc, activation.stopx);
}, actors[actor].x + conf.width / 2);
return [left, right];

};

/**

* Draws a flowchart in the tag with id: id based on the graph definition in text.
* @param text
* @param id
*/

var draw = exports.draw = function draw(text, id) {

_sequenceDiagram.parser.yy.clear();
_sequenceDiagram.parser.parse(text + '\n');

bounds.init();
var diagram = d3.select('[id="' + id + '"]');

var startx = void 0;
var stopx = void 0;
var forceWidth = void 0;

// Fetch data from the parsing
var actors = _sequenceDiagram.parser.yy.getActors();
var actorKeys = _sequenceDiagram.parser.yy.getActorKeys();
var messages = _sequenceDiagram.parser.yy.getMessages();
var title = _sequenceDiagram.parser.yy.getTitle();
drawActors(diagram, actors, actorKeys, 0);

// The arrow head definition is attached to the svg once
_svgDraw2.default.insertArrowHead(diagram);
_svgDraw2.default.insertArrowCrossHead(diagram);

function activeEnd(msg, verticalPos) {
  var activationData = bounds.endActivation(msg);
  if (activationData.starty + 18 > verticalPos) {
    activationData.starty = verticalPos - 6;
    verticalPos += 12;
  }
  _svgDraw2.default.drawActivation(diagram, activationData, verticalPos, conf);

  bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);
}

// const lastMsg

// Draw the messages/signals
messages.forEach(function (msg) {
  var loopData = void 0;
  switch (msg.type) {
    case _sequenceDiagram.parser.yy.LINETYPE.NOTE:
      bounds.bumpVerticalPos(conf.boxMargin);

      startx = actors[msg.from].x;
      stopx = actors[msg.to].x;

      if (msg.placement === _sequenceDiagram.parser.yy.PLACEMENT.RIGHTOF) {
        drawNote(diagram, startx + (conf.width + conf.actorMargin) / 2, bounds.getVerticalPos(), msg);
      } else if (msg.placement === _sequenceDiagram.parser.yy.PLACEMENT.LEFTOF) {
        drawNote(diagram, startx - (conf.width + conf.actorMargin) / 2, bounds.getVerticalPos(), msg);
      } else if (msg.to === msg.from) {
        // Single-actor over
        drawNote(diagram, startx, bounds.getVerticalPos(), msg);
      } else {
        // Multi-actor over
        forceWidth = Math.abs(startx - stopx) + conf.actorMargin;
        drawNote(diagram, (startx + stopx + conf.width - forceWidth) / 2, bounds.getVerticalPos(), msg, forceWidth);
      }
      break;
    case _sequenceDiagram.parser.yy.LINETYPE.ACTIVE_START:
      bounds.newActivation(msg, diagram);
      break;
    case _sequenceDiagram.parser.yy.LINETYPE.ACTIVE_END:
      activeEnd(msg, bounds.getVerticalPos());
      break;
    case _sequenceDiagram.parser.yy.LINETYPE.LOOP_START:
      bounds.bumpVerticalPos(conf.boxMargin);
      bounds.newLoop(msg.message);
      bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin);
      break;
    case _sequenceDiagram.parser.yy.LINETYPE.LOOP_END:
      loopData = bounds.endLoop();

      _svgDraw2.default.drawLoop(diagram, loopData, 'loop', conf);
      bounds.bumpVerticalPos(conf.boxMargin);
      break;
    case _sequenceDiagram.parser.yy.LINETYPE.OPT_START:
      bounds.bumpVerticalPos(conf.boxMargin);
      bounds.newLoop(msg.message);
      bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin);
      break;
    case _sequenceDiagram.parser.yy.LINETYPE.OPT_END:
      loopData = bounds.endLoop();

      _svgDraw2.default.drawLoop(diagram, loopData, 'opt', conf);
      bounds.bumpVerticalPos(conf.boxMargin);
      break;
    case _sequenceDiagram.parser.yy.LINETYPE.ALT_START:
      bounds.bumpVerticalPos(conf.boxMargin);
      bounds.newLoop(msg.message);
      bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin);
      break;
    case _sequenceDiagram.parser.yy.LINETYPE.ALT_ELSE:
      bounds.bumpVerticalPos(conf.boxMargin);
      loopData = bounds.addSectionToLoop(msg.message);
      bounds.bumpVerticalPos(conf.boxMargin);
      break;
    case _sequenceDiagram.parser.yy.LINETYPE.ALT_END:
      loopData = bounds.endLoop();

      _svgDraw2.default.drawLoop(diagram, loopData, 'alt', conf);
      bounds.bumpVerticalPos(conf.boxMargin);
      break;
    case _sequenceDiagram.parser.yy.LINETYPE.PAR_START:
      bounds.bumpVerticalPos(conf.boxMargin);
      bounds.newLoop(msg.message);
      bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin);
      break;
    case _sequenceDiagram.parser.yy.LINETYPE.PAR_AND:
      bounds.bumpVerticalPos(conf.boxMargin);
      loopData = bounds.addSectionToLoop(msg.message);
      bounds.bumpVerticalPos(conf.boxMargin);
      break;
    case _sequenceDiagram.parser.yy.LINETYPE.PAR_END:
      loopData = bounds.endLoop();
      _svgDraw2.default.drawLoop(diagram, loopData, 'par', conf);
      bounds.bumpVerticalPos(conf.boxMargin);
      break;
    default:
      try {
        // lastMsg = msg
        bounds.bumpVerticalPos(conf.messageMargin);
        var fromBounds = actorFlowVerticaBounds(msg.from);
        var toBounds = actorFlowVerticaBounds(msg.to);
        var fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0;
        var toIdx = fromBounds[0] < toBounds[0] ? 0 : 1;
        startx = fromBounds[fromIdx];
        stopx = toBounds[toIdx];

        var verticalPos = bounds.getVerticalPos();
        drawMessage(diagram, startx, stopx, verticalPos, msg);
        var allBounds = fromBounds.concat(toBounds);
        bounds.insert(Math.min.apply(null, allBounds), verticalPos, Math.max.apply(null, allBounds), verticalPos);
      } catch (e) {
        _logger.logger.error('error while drawing message', e);
      }
  }
});

if (conf.mirrorActors) {
  // Draw actors below diagram
  bounds.bumpVerticalPos(conf.boxMargin * 2);
  drawActors(diagram, actors, actorKeys, bounds.getVerticalPos());
}

var box = bounds.getBounds();

// Adjust line height of actor lines now that the height of the diagram is known
_logger.logger.debug('For line height fix Querying: #' + id + ' .actor-line');
var actorLines = d3.selectAll('#' + id + ' .actor-line');
actorLines.attr('y2', box.stopy);

var height = box.stopy - box.starty + 2 * conf.diagramMarginY;
if (conf.mirrorActors) {
  height = height - conf.boxMargin + conf.bottomMarginAdj;
}

var width = box.stopx - box.startx + 2 * conf.diagramMarginX;

if (title) {
  diagram.append('text').text(title).attr('x', (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX).attr('y', -25);
}

if (conf.useMaxWidth) {
  diagram.attr('height', '100%');
  diagram.attr('width', '100%');
  diagram.attr('style', 'max-width:' + width + 'px;');
} else {
  diagram.attr('height', height);
  diagram.attr('width', width);
}
var extraVertForTitle = title ? 40 : 0;
diagram.attr('viewBox', box.startx - conf.diagramMarginX + ' -' + (conf.diagramMarginY + extraVertForTitle) + ' ' + width + ' ' + (height + extraVertForTitle));

};

exports.default = {

bounds: bounds,
drawActors: drawActors,
setConf: setConf,
draw: draw

};

/***/ }),

/***/ “./src/diagrams/sequence/svgDraw.js”: /*!******************************************!*\

!*** ./src/diagrams/sequence/svgDraw.js ***!
\******************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); var drawRect = exports.drawRect = function drawRect(elem, rectData) {

var rectElem = elem.append('rect');
rectElem.attr('x', rectData.x);
rectElem.attr('y', rectData.y);
rectElem.attr('fill', rectData.fill);
rectElem.attr('stroke', rectData.stroke);
rectElem.attr('width', rectData.width);
rectElem.attr('height', rectData.height);
rectElem.attr('rx', rectData.rx);
rectElem.attr('ry', rectData.ry);

if (typeof rectData.class !== 'undefined') {
  rectElem.attr('class', rectData.class);
}

return rectElem;

};

var drawText = exports.drawText = function drawText(elem, textData, width) {

// Remove and ignore br:s
var nText = textData.text.replace(/<br\/?>/ig, ' ');

var textElem = elem.append('text');
textElem.attr('x', textData.x);
textElem.attr('y', textData.y);
textElem.style('text-anchor', textData.anchor);
textElem.attr('fill', textData.fill);
if (typeof textData.class !== 'undefined') {
  textElem.attr('class', textData.class);
}

var span = textElem.append('tspan');
span.attr('x', textData.x + textData.textMargin * 2);
span.attr('fill', textData.fill);
span.text(nText);

return textElem;

};

var drawLabel = exports.drawLabel = function drawLabel(elem, txtObject) {

function genPoints(x, y, width, height, cut) {
  return x + ',' + y + ' ' + (x + width) + ',' + y + ' ' + (x + width) + ',' + (y + height - cut) + ' ' + (x + width - cut * 1.2) + ',' + (y + height) + ' ' + x + ',' + (y + height);
}
var polygon = elem.append('polygon');
polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));
polygon.attr('class', 'labelBox');

txtObject.y = txtObject.y + txtObject.labelMargin;
txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;
drawText(elem, txtObject);

};

var actorCnt = -1; /**

* Draws an actor in the diagram with the attaced line
* @param center - The center of the the actor
* @param pos The position if the actor in the liost of actors
* @param description The text in the box
*/

var drawActor = exports.drawActor = function drawActor(elem, left, verticalPos, description, conf) {

var center = left + conf.width / 2;
var g = elem.append('g');
if (verticalPos === 0) {
  actorCnt++;
  g.append('line').attr('id', 'actor' + actorCnt).attr('x1', center).attr('y1', 5).attr('x2', center).attr('y2', 2000).attr('class', 'actor-line').attr('stroke-width', '0.5px').attr('stroke', '#999');
}

var rect = getNoteRect();
rect.x = left;
rect.y = verticalPos;
rect.fill = '#eaeaea';
rect.width = conf.width;
rect.height = conf.height;
rect.class = 'actor';
rect.rx = 3;
rect.ry = 3;
drawRect(g, rect);

_drawTextCandidateFunc(conf)(description, g, rect.x, rect.y, rect.width, rect.height, { 'class': 'actor' });

};

var anchorElement = exports.anchorElement = function anchorElement(elem) {

return elem.append('g');

}; /**

* Draws an actor in the diagram with the attaced line
* @param elem - element to append activation rect
* @param bounds - activation box bounds
* @param verticalPos - precise y cooridnate of bottom activation box edge
*/

var drawActivation = exports.drawActivation = function drawActivation(elem, bounds, verticalPos) {

var rect = getNoteRect();
var g = bounds.anchored;
rect.x = bounds.startx;
rect.y = bounds.starty;
rect.fill = '#f4f4f4';
rect.width = bounds.stopx - bounds.startx;
rect.height = verticalPos - bounds.starty;
drawRect(g, rect);

};

/**

* Draws an actor in the diagram with the attaced line
* @param center - The center of the the actor
* @param pos The position if the actor in the list of actors
* @param description The text in the box
*/

var drawLoop = exports.drawLoop = function drawLoop(elem, bounds, labelText, conf) {

var g = elem.append('g');
var drawLoopLine = function drawLoopLine(startx, starty, stopx, stopy) {
  return g.append('line').attr('x1', startx).attr('y1', starty).attr('x2', stopx).attr('y2', stopy).attr('class', 'loopLine');
};
drawLoopLine(bounds.startx, bounds.starty, bounds.stopx, bounds.starty);
drawLoopLine(bounds.stopx, bounds.starty, bounds.stopx, bounds.stopy);
drawLoopLine(bounds.startx, bounds.stopy, bounds.stopx, bounds.stopy);
drawLoopLine(bounds.startx, bounds.starty, bounds.startx, bounds.stopy);
if (typeof bounds.sections !== 'undefined') {
  bounds.sections.forEach(function (item) {
    drawLoopLine(bounds.startx, item, bounds.stopx, item).style('stroke-dasharray', '3, 3');
  });
}

var txt = getTextObj();
txt.text = labelText;
txt.x = bounds.startx;
txt.y = bounds.starty;
txt.labelMargin = 1.5 * 10; // This is the small box that says "loop"
txt.class = 'labelText'; // Its size & position are fixed.

drawLabel(g, txt);

txt = getTextObj();
txt.text = '[ ' + bounds.title + ' ]';
txt.x = bounds.startx + (bounds.stopx - bounds.startx) / 2;
txt.y = bounds.starty + 1.5 * conf.boxMargin;
txt.anchor = 'middle';
txt.class = 'loopText';

drawText(g, txt);

if (typeof bounds.sectionTitles !== 'undefined') {
  bounds.sectionTitles.forEach(function (item, idx) {
    if (item !== '') {
      txt.text = '[ ' + item + ' ]';
      txt.y = bounds.sections[idx] + 1.5 * conf.boxMargin;
      drawText(g, txt);
    }
  });
}

};

/**

* Setup arrow head and define the marker. The result is appended to the svg.
*/

var insertArrowHead = exports.insertArrowHead = function insertArrowHead(elem) {

elem.append('defs').append('marker').attr('id', 'arrowhead').attr('refX', 5).attr('refY', 2).attr('markerWidth', 6).attr('markerHeight', 4).attr('orient', 'auto').append('path').attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead

}; /**

* Setup arrow head and define the marker. The result is appended to the svg.
*/

var insertArrowCrossHead = exports.insertArrowCrossHead = function insertArrowCrossHead(elem) {

var defs = elem.append('defs');
var marker = defs.append('marker').attr('id', 'crosshead').attr('markerWidth', 15).attr('markerHeight', 8).attr('orient', 'auto').attr('refX', 16).attr('refY', 4);

// The arrow
marker.append('path').attr('fill', 'black').attr('stroke', '#000000').style('stroke-dasharray', '0, 0').attr('stroke-width', '1px').attr('d', 'M 9,2 V 6 L16,4 Z');

// The cross
marker.append('path').attr('fill', 'none').attr('stroke', '#000000').style('stroke-dasharray', '0, 0').attr('stroke-width', '1px').attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7');
// this is actual shape for arrowhead

};

var getTextObj = exports.getTextObj = function getTextObj() {

var txt = {
  x: 0,
  y: 0,
  'fill': 'black',
  'text-anchor': 'start',
  style: '#666',
  width: 100,
  height: 100,
  textMargin: 0,
  rx: 0,
  ry: 0
};
return txt;

};

var getNoteRect = exports.getNoteRect = function getNoteRect() {

var rect = {
  x: 0,
  y: 0,
  fill: '#EDF2AE',
  stroke: '#666',
  width: 100,
  anchor: 'start',
  height: 100,
  rx: 0,
  ry: 0
};
return rect;

};

var _drawTextCandidateFunc = function () {

function byText(content, g, x, y, width, height, textAttrs) {
  var text = g.append('text').attr('x', x + width / 2).attr('y', y + height / 2 + 5).style('text-anchor', 'middle').text(content);
  _setTextAttrs(text, textAttrs);
}

function byTspan(content, g, x, y, width, height, textAttrs) {
  var text = g.append('text').attr('x', x + width / 2).attr('y', y).style('text-anchor', 'middle');
  text.append('tspan').attr('x', x + width / 2).attr('dy', '0').text(content);

  text.attr('y', y + height / 2.0).attr('dominant-baseline', 'central').attr('alignment-baseline', 'central');

  _setTextAttrs(text, textAttrs);
}

function byFo(content, g, x, y, width, height, textAttrs) {
  var s = g.append('switch');
  var f = s.append('foreignObject').attr('x', x).attr('y', y).attr('width', width).attr('height', height);

  var text = f.append('div').style('display', 'table').style('height', '100%').style('width', '100%');

  text.append('div').style('display', 'table-cell').style('text-align', 'center').style('vertical-align', 'middle').text(content);

  byTspan(content, s, x, y, width, height, textAttrs);
  _setTextAttrs(text, textAttrs);
}

function _setTextAttrs(toText, fromTextAttrsDict) {
  for (var key in fromTextAttrsDict) {
    if (fromTextAttrsDict.hasOwnProperty(key)) {
      toText.attr(key, fromTextAttrsDict[key]);
    }
  }
}

return function (conf) {
  return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;
};

}();

exports.default = {

drawRect: drawRect,
drawText: drawText,
drawLabel: drawLabel,
drawActor: drawActor,
anchorElement: anchorElement,
drawActivation: drawActivation,
drawLoop: drawLoop,
insertArrowHead: insertArrowHead,
insertArrowCrossHead: insertArrowCrossHead,
getTextObj: getTextObj,
getNoteRect: getNoteRect

};

/***/ }),

/***/ “./src/logger.js”: /*!***********************!*\

!*** ./src/logger.js ***!
\***********************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.setLogLevel = exports.logger = exports.LEVELS = undefined;

var _moment = webpack_require(/*! moment */ “./node_modules/moment/moment.js”);

var _moment2 = _interopRequireDefault(_moment);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var LEVELS = exports.LEVELS = {

debug: 1,
info: 2,
warn: 3,
error: 4,
fatal: 5

};

var logger = exports.logger = {

debug: function debug() {},
info: function info() {},
warn: function warn() {},
error: function error() {},
fatal: function fatal() {}

};

var setLogLevel = exports.setLogLevel = function setLogLevel(level) {

logger.debug = function () {};
logger.info = function () {};
logger.warn = function () {};
logger.error = function () {};
logger.fatal = function () {};
if (level <= LEVELS.fatal) {
  logger.fatal = console.log.bind(console, '\x1b[35m', format('FATAL'));
}
if (level <= LEVELS.error) {
  logger.error = console.log.bind(console, '\x1b[31m', format('ERROR'));
}
if (level <= LEVELS.warn) {
  logger.warn = console.log.bind(console, '\x1B[33m', format('WARN'));
}
if (level <= LEVELS.info) {
  logger.info = console.log.bind(console, '\x1b[34m', format('INFO'));
}
if (level <= LEVELS.debug) {
  logger.debug = console.log.bind(console, '\x1b[32m', format('DEBUG'));
}

};

var format = function format(level) {

var time = (0, _moment2.default)().format('HH:mm:ss.SSS');
return time + ' : ' + level + ' : ';

};

/***/ }),

/***/ “./src/mermaid.js”: /*!************************!*\

!*** ./src/mermaid.js ***!
\************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

});

var _he = webpack_require(/*! he */ “./node_modules/he/he.js”);

var _he2 = _interopRequireDefault(_he);

var _mermaidAPI = webpack_require(/*! ./mermaidAPI */ “./src/mermaidAPI.js”);

var _mermaidAPI2 = _interopRequireDefault(_mermaidAPI);

var _logger = webpack_require(/*! ./logger */ “./src/logger.js”);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/**

* ## init
* Function that goes through the document to find the chart definitions in there and render them.
*
* The function tags the processed attributes with the attribute data-processed and ignores found elements with the
* attribute already set. This way the init function can be triggered several times.
*
* Optionally, `init` can accept in the second argument one of the following:
* - a DOM Node
* - an array of DOM nodes (as would come from a jQuery selector)
* - a W3C selector, a la `.mermaid`
*
* ```mermaid
* graph LR;
*  a(Find elements)-->b{Processed}
*  b-->|Yes|c(Leave element)
*  b-->|No |d(Transform)
* ```
* Renders the mermaid diagrams
* @param nodes a css selector or an array of nodes
*/

var init = function init() {

var conf = _mermaidAPI2.default.getConfig();
_logger.logger.debug('Starting rendering diagrams');
var nodes = void 0;
if (arguments.length >= 2) {
  /*! sequence config was passed as #1 */
  if (typeof arguments[0] !== 'undefined') {
    mermaid.sequenceConfig = arguments[0];
  }

  nodes = arguments[1];
} else {
  nodes = arguments[0];
}

// if last argument is a function this is the callback function
var callback = void 0;
if (typeof arguments[arguments.length - 1] === 'function') {
  callback = arguments[arguments.length - 1];
  _logger.logger.debug('Callback function found');
} else {
  if (typeof conf.mermaid !== 'undefined') {
    if (typeof conf.mermaid.callback === 'function') {
      callback = conf.mermaid.callback;
      _logger.logger.debug('Callback function found');
    } else {
      _logger.logger.debug('No Callback function found');
    }
  }
}
nodes = nodes === undefined ? document.querySelectorAll('.mermaid') : typeof nodes === 'string' ? document.querySelectorAll(nodes) : nodes instanceof window.Node ? [nodes] : nodes; // Last case  - sequence config was passed pick next

_logger.logger.debug('Start On Load before: ' + mermaid.startOnLoad);
if (typeof mermaid.startOnLoad !== 'undefined') {
  _logger.logger.debug('Start On Load inner: ' + mermaid.startOnLoad);
  _mermaidAPI2.default.initialize({ startOnLoad: mermaid.startOnLoad });
}

if (typeof mermaid.ganttConfig !== 'undefined') {
  _mermaidAPI2.default.initialize({ gantt: mermaid.ganttConfig });
}

var txt = void 0;

var _loop = function _loop(i) {
  var element = nodes[i];

  /*! Check if previously processed */
  if (!element.getAttribute('data-processed')) {
    element.setAttribute('data-processed', true);
  } else {
    return 'continue';
  }

  var id = 'mermaid-' + Date.now();

  // Fetch the graph definition including tags
  txt = element.innerHTML;

  // transforms the html to pure text
  txt = _he2.default.decode(txt).trim().replace(/<br>/ig, '<br/>');

  _mermaidAPI2.default.render(id, txt, function (svgCode, bindFunctions) {
    element.innerHTML = svgCode;
    if (typeof callback !== 'undefined') {
      callback(id);
    }
    bindFunctions(element);
  }, element);
};

for (var i = 0; i < nodes.length; i++) {
  var _ret = _loop(i);

  if (_ret === 'continue') continue;
}

}; /**

* Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render
* the diagrams to svg code.
*/

var initialize = function initialize(config) {

_logger.logger.debug('Initializing mermaid');
if (typeof config.mermaid !== 'undefined') {
  if (typeof config.mermaid.startOnLoad !== 'undefined') {
    mermaid.startOnLoad = config.mermaid.startOnLoad;
  }
  if (typeof config.mermaid.htmlLabels !== 'undefined') {
    mermaid.htmlLabels = config.mermaid.htmlLabels;
  }
}
_mermaidAPI2.default.initialize(config);

};

/**

* ##contentLoaded
* Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and
* calls init for rendering the mermaid diagrams on the page.
*/

var contentLoaded = function contentLoaded() {

var config = void 0;

if (mermaid.startOnLoad) {
  // No config found, do check API config
  config = _mermaidAPI2.default.getConfig();
  if (config.startOnLoad) {
    mermaid.init();
  }
} else {
  if (typeof mermaid.startOnLoad === 'undefined') {
    _logger.logger.debug('In start, no config');
    config = _mermaidAPI2.default.getConfig();
    if (config.startOnLoad) {
      mermaid.init();
    }
  }
}

};

if (typeof document !== 'undefined') {

/*!
 * Wait for document loaded before starting the execution
 */
window.addEventListener('load', function () {
  contentLoaded();
}, false);

}

var mermaid = {

startOnLoad: true,
htmlLabels: true,

mermaidAPI: _mermaidAPI2.default,
parse: _mermaidAPI2.default.parse,
render: _mermaidAPI2.default.render,

init: init,
initialize: initialize,

contentLoaded: contentLoaded

};

exports.default = mermaid;

/***/ }),

/***/ “./src/mermaidAPI.js”: /*!***************************!*\

!*** ./src/mermaidAPI.js ***!
\***************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.decodeEntities = exports.encodeEntities = undefined;

var _typeof = typeof Symbol === “function” && typeof Symbol.iterator === “symbol” ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === “function” && obj.constructor === Symbol && obj !== Symbol.prototype ? “symbol” : typeof obj; }; /**

 * ---
 * title: mermaidAPI
 * order: 5
 * ---
 * # mermaidAPI
 * This is the api to be used when handling the integration with the web page instead of using the default integration
 * (mermaid.js).
 *
 * The core of this api is the **render** function that given a graph definitionas text renders the graph/diagram and
 * returns a svg element for the graph. It is is then up to the user of the API to make use of the svg, either insert it
 * somewhere in the page or something completely different.
*/

var _d = webpack_require(/*! d3 */ “./node_modules/d3/index.js”);

var d3 = _interopRequireWildcard(_d);

var _scopeCss = webpack_require(/*! scope-css */ “./node_modules/scope-css/index.js”);

var _scopeCss2 = _interopRequireDefault(_scopeCss);

var _logger = webpack_require(/*! ./logger */ “./src/logger.js”);

var _utils = webpack_require(/*! ./utils */ “./src/utils.js”);

var _utils2 = _interopRequireDefault(_utils);

var _flowRenderer = webpack_require(/*! ./diagrams/flowchart/flowRenderer */ “./src/diagrams/flowchart/flowRenderer.js”);

var _flowRenderer2 = _interopRequireDefault(_flowRenderer);

var _flow = webpack_require(/*! ./diagrams/flowchart/parser/flow */ “./src/diagrams/flowchart/parser/flow.js”);

var _flow2 = _interopRequireDefault(_flow);

var _flowDb = webpack_require(/*! ./diagrams/flowchart/flowDb */ “./src/diagrams/flowchart/flowDb.js”);

var _flowDb2 = _interopRequireDefault(_flowDb);

var _sequenceRenderer = webpack_require(/*! ./diagrams/sequence/sequenceRenderer */ “./src/diagrams/sequence/sequenceRenderer.js”);

var _sequenceRenderer2 = _interopRequireDefault(_sequenceRenderer);

var _sequenceDiagram = webpack_require(/*! ./diagrams/sequence/parser/sequenceDiagram */ “./src/diagrams/sequence/parser/sequenceDiagram.js”);

var _sequenceDiagram2 = _interopRequireDefault(_sequenceDiagram);

var _sequenceDb = webpack_require(/*! ./diagrams/sequence/sequenceDb */ “./src/diagrams/sequence/sequenceDb.js”);

var _sequenceDb2 = _interopRequireDefault(_sequenceDb);

var _ganttRenderer = webpack_require(/*! ./diagrams/gantt/ganttRenderer */ “./src/diagrams/gantt/ganttRenderer.js”);

var _ganttRenderer2 = _interopRequireDefault(_ganttRenderer);

var _gantt = webpack_require(/*! ./diagrams/gantt/parser/gantt */ “./src/diagrams/gantt/parser/gantt.js”);

var _gantt2 = _interopRequireDefault(_gantt);

var _ganttDb = webpack_require(/*! ./diagrams/gantt/ganttDb */ “./src/diagrams/gantt/ganttDb.js”);

var _ganttDb2 = _interopRequireDefault(_ganttDb);

var _classRenderer = webpack_require(/*! ./diagrams/class/classRenderer */ “./src/diagrams/class/classRenderer.js”);

var _classRenderer2 = _interopRequireDefault(_classRenderer);

var _classDiagram = webpack_require(/*! ./diagrams/class/parser/classDiagram */ “./src/diagrams/class/parser/classDiagram.js”);

var _classDiagram2 = _interopRequireDefault(_classDiagram);

var _classDb = webpack_require(/*! ./diagrams/class/classDb */ “./src/diagrams/class/classDb.js”);

var _classDb2 = _interopRequireDefault(_classDb);

var _gitGraphRenderer = webpack_require(/*! ./diagrams/git/gitGraphRenderer */ “./src/diagrams/git/gitGraphRenderer.js”);

var _gitGraphRenderer2 = _interopRequireDefault(_gitGraphRenderer);

var _gitGraph = webpack_require(/*! ./diagrams/git/parser/gitGraph */ “./src/diagrams/git/parser/gitGraph.js”);

var _gitGraph2 = _interopRequireDefault(_gitGraph);

var _gitGraphAst = webpack_require(/*! ./diagrams/git/gitGraphAst */ “./src/diagrams/git/gitGraphAst.js”);

var _gitGraphAst2 = _interopRequireDefault(_gitGraphAst);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj = obj; } } newObj.default = obj; return newObj; } }

var themes = {}; var _arr = ['default', 'forest', 'dark', 'neutral']; for (var _i = 0; _i < _arr.length; _i++) {

var themeName = _arr[_i];
themes[themeName] = __webpack_require__("./src/themes sync recursive ^\\.\\/.*\\/index\\.scss$")("./" + themeName + '/index.scss');

}

/**

* ## Configuration
* These are the default options which can be overridden with the initialization call as in the example below:
* ```
* mermaid.initialize({
*   flowchart:{
*      htmlLabels: false
*   }
* });
* ```
*/

var config = {

theme: 'default',
themeCSS: undefined,

/**
 * logLevel , decides the amount of logging to be used.
 *    * debug: 1
 *    * info: 2
 *    * warn: 3
 *    * error: 4
 *    * fatal: 5
 */
logLevel: 5,

/**
 * **startOnLoad** - This options controls whether or mermaid starts when the page loads
 */
startOnLoad: true,

/**
 * **arrowMarkerAbsolute** - This options controls whether or arrow markers in html code will be absolute paths or
 * an anchor, #. This matters if you are using base tag settings.
 */
arrowMarkerAbsolute: false,

/**
 * ### flowchart
 * *The object containing configurations specific for flowcharts*
 */
flowchart: {
  /**
   * **htmlLabels** - Flag for setting whether or not a html tag should be used for rendering labels
   * on the edges
   */
  htmlLabels: true,

  curve: 'linear'
},

/**
 * ###  sequenceDiagram
 * The object containing configurations specific for sequence diagrams
 */
sequence: {

  /**
   * **diagramMarginX** - margin to the right and left of the sequence diagram
   */
  diagramMarginX: 50,

  /**
   * **diagramMarginY** - margin to the over and under the sequence diagram
   */
  diagramMarginY: 10,

  /**
   * **actorMargin** - Margin between actors
   */
  actorMargin: 50,

  /**
   * **width** - Width of actor boxes
   */
  width: 150,

  /**
   * **height** - Height of actor boxes
   */
  height: 65,

  /**
   * **boxMargin** - Margin around loop boxes
   */
  boxMargin: 10,

  /**
   * **boxTextMargin** - margin around the text in loop/alt/opt boxes
   */
  boxTextMargin: 5,

  /**
   * **noteMargin** - margin around notes
   */
  noteMargin: 10,

  /**
   * **messageMargin** - Space between messages
   */
  messageMargin: 35,

  /**
   * **mirrorActors** - mirror actors under diagram
   */
  mirrorActors: true,

  /**
   * **bottomMarginAdj** - Depending on css styling this might need adjustment.
   * Prolongs the edge of the diagram downwards
   */
  bottomMarginAdj: 1,

  /**
   * **useMaxWidth** - when this flag is set the height and width is set to 100% and is then scaling with the
   * available space if not the absolute space required is used
   */
  useMaxWidth: true
},

/** ### gantt
 * The object containing configurations specific for gantt diagrams*
 */
gantt: {
  /**
   * **titleTopMargin** - margin top for the text over the gantt diagram
   */
  titleTopMargin: 25,

  /**
   * **barHeight** - the height of the bars in the graph
   */
  barHeight: 20,

  /**
   * **barGap** - the margin between the different activities in the gantt diagram
   */
  barGap: 4,

  /**
   *  **topPadding** - margin between title and gantt diagram and between axis and gantt diagram.
   */
  topPadding: 50,

  /**
   *  **leftPadding** - the space allocated for the section name to the left of the activities.
   */
  leftPadding: 75,

  /**
   *  **gridLineStartPadding** - Vertical starting position of the grid lines
   */
  gridLineStartPadding: 35,

  /**
   *  **fontSize** - font size ...
   */
  fontSize: 11,

  /**
   * **fontFamily** - font family ...
   */
  fontFamily: '"Open-Sans", "sans-serif"',

  /**
   * **numberSectionStyles** - the number of alternating section styles
   */
  numberSectionStyles: 4,

  /**
   * **axisFormat** - datetime format of the axis, this might need adjustment to match your locale and preferences
   */
  axisFormat: '%Y-%m-%d'
},
class: {},
git: {}

};

(0, _logger.setLogLevel)(config.logLevel);

function parse(text) {

var graphType = _utils2.default.detectType(text);
var parser = void 0;

switch (graphType) {
  case 'git':
    parser = _gitGraph2.default;
    parser.parser.yy = _gitGraphAst2.default;
    break;
  case 'flowchart':
    parser = _flow2.default;
    parser.parser.yy = _flowDb2.default;
    break;
  case 'sequence':
    parser = _sequenceDiagram2.default;
    parser.parser.yy = _sequenceDb2.default;
    break;
  case 'gantt':
    parser = _gantt2.default;
    parser.parser.yy = _ganttDb2.default;
    break;
  case 'class':
    parser = _classDiagram2.default;
    parser.parser.yy = _classDb2.default;
    break;
}

parser.parser.yy.parseError = function (str, hash) {
  var error = { str: str, hash: hash };
  throw error;
};

parser.parse(text);

}

var encodeEntities = exports.encodeEntities = function encodeEntities(text) {

var txt = text;

txt = txt.replace(/style.*:\S*#.*;/g, function (s) {
  var innerTxt = s.substring(0, s.length - 1);
  return innerTxt;
});
txt = txt.replace(/classDef.*:\S*#.*;/g, function (s) {
  var innerTxt = s.substring(0, s.length - 1);
  return innerTxt;
});

txt = txt.replace(/#\w+;/g, function (s) {
  var innerTxt = s.substring(1, s.length - 1);

  var isInt = /^\+?\d+$/.test(innerTxt);
  if (isInt) {
    return 'fl°°' + innerTxt + '¶ß';
  } else {
    return 'fl°' + innerTxt + '¶ß';
  }
});

return txt;

};

var decodeEntities = exports.decodeEntities = function decodeEntities(text) {

var txt = text;

txt = txt.replace(/fl°°/g, function () {
  return '&#';
});
txt = txt.replace(/fl°/g, function () {
  return '&';
});
txt = txt.replace(/¶ß/g, function () {
  return ';';
});

return txt;

}; /**

* ##render
* Function that renders an svg with a graph from a chart definition. Usage example below.
*
* ```
* mermaidAPI.initialize({
*      startOnLoad:true
*  });
*  $(function(){
*      const graphDefinition = 'graph TB\na-->b';
*      const cb = function(svgGraph){
*          console.log(svgGraph);
*      };
*      mermaidAPI.render('id1',graphDefinition,cb);
*  });
*```
* @param id the id of the element to be rendered
* @param txt the graph definition
* @param cb callback which is called after rendering is finished with the svg code as inparam.
* @param container selector to element in which a div with the graph temporarily will be inserted. In one is
* provided a hidden div will be inserted in the body of the page instead. The element will be removed when rendering is
* completed.
*/

var render = function render(id, txt, cb, container) {

if (typeof container !== 'undefined') {
  container.innerHTML = '';

  d3.select(container).append('div').attr('id', 'd' + id).append('svg').attr('id', id).attr('width', '100%').attr('xmlns', 'http://www.w3.org/2000/svg').append('g');
} else {
  var _element = document.querySelector('#' + 'd' + id);
  if (_element) {
    _element.innerHTML = '';
  }

  d3.select('body').append('div').attr('id', 'd' + id).append('svg').attr('id', id).attr('width', '100%').attr('xmlns', 'http://www.w3.org/2000/svg').append('g');
}

window.txt = txt;
txt = encodeEntities(txt);

var element = d3.select('#d' + id).node();
var graphType = _utils2.default.detectType(txt);

// insert inline style into svg
var svg = element.firstChild;
var firstChild = svg.firstChild;

// pre-defined theme
var style = themes[config.theme];
if (style === undefined) {
  style = '';
}

// user provided theme CSS
if (config.themeCSS !== undefined) {
  style += '\n' + config.themeCSS;
}

// classDef
if (graphType === 'flowchart') {
  var classes = _flowRenderer2.default.getClasses(txt);
  for (var className in classes) {
    style += '\n.' + className + ' > * { ' + classes[className].styles.join(' !important; ') + ' !important; }';
  }
}

var style1 = document.createElement('style');
style1.innerHTML = (0, _scopeCss2.default)(style, '#' + id);
svg.insertBefore(style1, firstChild);

var style2 = document.createElement('style');
var cs = window.getComputedStyle(svg);
style2.innerHTML = '#' + id + ' {\n    color: ' + cs.color + ';\n    font: ' + cs.font + ';\n  }';
svg.insertBefore(style2, firstChild);

switch (graphType) {
  case 'git':
    config.flowchart.arrowMarkerAbsolute = config.arrowMarkerAbsolute;
    _gitGraphRenderer2.default.setConf(config.git);
    _gitGraphRenderer2.default.draw(txt, id, false);
    break;
  case 'flowchart':
    config.flowchart.arrowMarkerAbsolute = config.arrowMarkerAbsolute;
    _flowRenderer2.default.setConf(config.flowchart);
    _flowRenderer2.default.draw(txt, id, false);
    break;
  case 'sequence':
    config.sequence.arrowMarkerAbsolute = config.arrowMarkerAbsolute;
    if (config.sequenceDiagram) {
      // backwards compatibility
      _sequenceRenderer2.default.setConf(Object.assign(config.sequence, config.sequenceDiagram));
      console.error('`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.');
    } else {
      _sequenceRenderer2.default.setConf(config.sequence);
    }
    _sequenceRenderer2.default.draw(txt, id);
    break;
  case 'gantt':
    config.gantt.arrowMarkerAbsolute = config.arrowMarkerAbsolute;
    _ganttRenderer2.default.setConf(config.gantt);
    _ganttRenderer2.default.draw(txt, id);
    break;
  case 'class':
    config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;
    _classRenderer2.default.setConf(config.class);
    _classRenderer2.default.draw(txt, id);
    break;
}

d3.select('[id="' + id + '"]').selectAll('foreignobject > *').attr('xmlns', 'http://www.w3.org/1999/xhtml');

var url = '';
if (config.arrowMarkerAbsolute) {
  url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;
  url = url.replace(/\(/g, '\\(');
  url = url.replace(/\)/g, '\\)');
}

// Fix for when the base tag is used
var svgCode = d3.select('#d' + id).node().innerHTML.replace(/url\(#arrowhead/g, 'url(' + url + '#arrowhead', 'g');

svgCode = decodeEntities(svgCode);

if (typeof cb !== 'undefined') {
  cb(svgCode, _flowDb2.default.bindFunctions);
} else {
  _logger.logger.warn('CB = undefined!');
}

var node = d3.select('#d' + id).node();
if (node !== null && typeof node.remove === 'function') {
  d3.select('#d' + id).node().remove();
}

return svgCode;

};

var setConf = function setConf(cnf) {

// Top level initially mermaid, gflow, sequenceDiagram and gantt
var lvl1Keys = Object.keys(cnf);
for (var i = 0; i < lvl1Keys.length; i++) {
  if (_typeof(cnf[lvl1Keys[i]]) === 'object' && cnf[lvl1Keys[i]] != null) {
    var lvl2Keys = Object.keys(cnf[lvl1Keys[i]]);

    for (var j = 0; j < lvl2Keys.length; j++) {
      _logger.logger.debug('Setting conf ', lvl1Keys[i], '-', lvl2Keys[j]);
      if (typeof config[lvl1Keys[i]] === 'undefined') {
        config[lvl1Keys[i]] = {};
      }
      _logger.logger.debug('Setting config: ' + lvl1Keys[i] + ' ' + lvl2Keys[j] + ' to ' + cnf[lvl1Keys[i]][lvl2Keys[j]]);
      config[lvl1Keys[i]][lvl2Keys[j]] = cnf[lvl1Keys[i]][lvl2Keys[j]];
    }
  } else {
    config[lvl1Keys[i]] = cnf[lvl1Keys[i]];
  }
}

};

function initialize(options) {

_logger.logger.debug('Initializing mermaidAPI');
// Update default config with options supplied at initialization
if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {
  setConf(options);
}
(0, _logger.setLogLevel)(config.logLevel);

}

function getConfig() {

return config;

}

var mermaidAPI = {

render: render,
parse: parse,
initialize: initialize,
getConfig: getConfig

};

exports.default = mermaidAPI;

/***/ }),

/***/ “./src/themes sync recursive ^\.\/.*\/index\.scss$”: /*!***********************************************!*\

!*** ./src/themes sync ^\.\/.*\/index\.scss$ ***!
\***********************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

var map = {

"./dark/index.scss": "./src/themes/dark/index.scss",
"./default/index.scss": "./src/themes/default/index.scss",
"./forest/index.scss": "./src/themes/forest/index.scss",
"./neutral/index.scss": "./src/themes/neutral/index.scss"

};

function webpackContext(req) {

var id = webpackContextResolve(req);
var module = __webpack_require__(id);
return module;

} function webpackContextResolve(req) {

var id = map[req];
if(!(id + 1)) { // check for number or string
        var e = new Error('Cannot find module "' + req + '".');
        e.code = 'MODULE_NOT_FOUND';
        throw e;
}
return id;

} webpackContext.keys = function webpackContextKeys() {

return Object.keys(map);

}; webpackContext.resolve = webpackContextResolve; module.exports = webpackContext; webpackContext.id = “./src/themes sync recursive ^\.\/.*\/index\.scss$”;

/***/ }),

/***/ “./src/themes/dark/index.scss”: /*!************************************!*\

!*** ./src/themes/dark/index.scss ***!
\************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

// css-to-string-loader: transforms styles from css-loader to a string output

// Get the styles var styles = webpack_require(/*! !../../../node_modules/css-loader!../../../node_modules/sass-loader/lib/loader.js!./index.scss */ “./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./src/themes/dark/index.scss”);

if (typeof styles === 'string') {

// Return an existing string
module.exports = styles;

} else {

// Call the custom toString method from css-loader module
module.exports = styles.toString();

}

/***/ }),

/***/ “./src/themes/default/index.scss”: /*!***************************************!*\

!*** ./src/themes/default/index.scss ***!
\***************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

// css-to-string-loader: transforms styles from css-loader to a string output

// Get the styles var styles = webpack_require(/*! !../../../node_modules/css-loader!../../../node_modules/sass-loader/lib/loader.js!./index.scss */ “./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./src/themes/default/index.scss”);

if (typeof styles === 'string') {

// Return an existing string
module.exports = styles;

} else {

// Call the custom toString method from css-loader module
module.exports = styles.toString();

}

/***/ }),

/***/ “./src/themes/forest/index.scss”: /*!**************************************!*\

!*** ./src/themes/forest/index.scss ***!
\**************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

// css-to-string-loader: transforms styles from css-loader to a string output

// Get the styles var styles = webpack_require(/*! !../../../node_modules/css-loader!../../../node_modules/sass-loader/lib/loader.js!./index.scss */ “./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./src/themes/forest/index.scss”);

if (typeof styles === 'string') {

// Return an existing string
module.exports = styles;

} else {

// Call the custom toString method from css-loader module
module.exports = styles.toString();

}

/***/ }),

/***/ “./src/themes/neutral/index.scss”: /*!***************************************!*\

!*** ./src/themes/neutral/index.scss ***!
\***************************************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

// css-to-string-loader: transforms styles from css-loader to a string output

// Get the styles var styles = webpack_require(/*! !../../../node_modules/css-loader!../../../node_modules/sass-loader/lib/loader.js!./index.scss */ “./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./src/themes/neutral/index.scss”);

if (typeof styles === 'string') {

// Return an existing string
module.exports = styles;

} else {

// Call the custom toString method from css-loader module
module.exports = styles.toString();

}

/***/ }),

/***/ “./src/utils.js”: /*!**********************!*\

!*** ./src/utils.js ***!
\**********************/

/*! no static exports found */ /***/ (function(module, exports, webpack_require) {

“use strict”;

Object.defineProperty(exports, “__esModule”, {

value: true

}); exports.interpolateToCurve = exports.isSubstringInArray = exports.detectType = undefined;

var _d = webpack_require(/*! d3 */ “./node_modules/d3/index.js”);

var d3 = _interopRequireWildcard(_d);

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj = obj; } } newObj.default = obj; return newObj; } }

/**

* @function detectType
* Detects the type of the graph text.
* ```mermaid
* graph LR
*  a-->b
*  b-->c
*  c-->d
*  d-->e
*  e-->f
*  f-->g
*  g-->h
* ```
*
* @param {string} text The text defining the graph
* @returns {string} A graph definition key
*/

var detectType = exports.detectType = function detectType(text) {

text = text.replace(/^\s*%%.*\n/g, '\n');
if (text.match(/^\s*sequenceDiagram/)) {
  return 'sequence';
}

if (text.match(/^\s*gantt/)) {
  return 'gantt';
}

if (text.match(/^\s*classDiagram/)) {
  return 'class';
}

if (text.match(/^\s*gitGraph/)) {
  return 'git';
}
return 'flowchart';

};

/**

* @function isSubstringInArray
* Detects whether a substring in present in a given array
* @param {string} str The substring to detect
* @param {array} arr The array to search
* @returns {number} the array index containing the substring or -1 if not present
**/

var isSubstringInArray = exports.isSubstringInArray = function isSubstringInArray(str, arr) {

for (var i = 0; i < arr.length; i++) {
  if (arr[i].match(str)) return i;
}
return -1;

};

var interpolateToCurve = exports.interpolateToCurve = function interpolateToCurve(interpolate, defaultCurve) {

if (!interpolate) {
  return defaultCurve;
}
var curveName = 'curve' + (interpolate.charAt(0).toUpperCase() + interpolate.slice(1));
return d3[curveName] || defaultCurve;

};

exports.default = {

detectType: detectType,
isSubstringInArray: isSubstringInArray,
interpolateToCurve: interpolateToCurve

};

/***/ })

/******/ })[“default”]; }); //# sourceMappingURL=mermaid.js.map