Created
July 2, 2022 16:08
-
-
Save hasyimibhar/5865e5f4b0aa38f45497a1ef8db66d36 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/******/ (function(modules) { // webpackBootstrap | |
/******/ // The module cache | |
/******/ var installedModules = {}; | |
/******/ | |
/******/ // The require function | |
/******/ function __webpack_require__(moduleId) { | |
/******/ | |
/******/ // Check if module is in cache | |
/******/ if(installedModules[moduleId]) { | |
/******/ return installedModules[moduleId].exports; | |
/******/ } | |
/******/ // Create a new module (and put it into the cache) | |
/******/ var module = installedModules[moduleId] = { | |
/******/ i: moduleId, | |
/******/ l: false, | |
/******/ exports: {} | |
/******/ }; | |
/******/ | |
/******/ // Execute the module function | |
/******/ modules[moduleId].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, { enumerable: true, get: getter }); | |
/******/ } | |
/******/ }; | |
/******/ | |
/******/ // define __esModule on exports | |
/******/ __webpack_require__.r = function(exports) { | |
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { | |
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); | |
/******/ } | |
/******/ Object.defineProperty(exports, '__esModule', { value: true }); | |
/******/ }; | |
/******/ | |
/******/ // create a fake namespace object | |
/******/ // mode & 1: value is a module id, require it | |
/******/ // mode & 2: merge all properties of value into the ns | |
/******/ // mode & 4: return value when already ns object | |
/******/ // mode & 8|1: behave like require | |
/******/ __webpack_require__.t = function(value, mode) { | |
/******/ if(mode & 1) value = __webpack_require__(value); | |
/******/ if(mode & 8) return value; | |
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; | |
/******/ var ns = Object.create(null); | |
/******/ __webpack_require__.r(ns); | |
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); | |
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); | |
/******/ return ns; | |
/******/ }; | |
/******/ | |
/******/ // getDefaultExport function for compatibility with non-harmony modules | |
/******/ __webpack_require__.n = function(module) { | |
/******/ var getter = module && module.__esModule ? | |
/******/ function getDefault() { return module['default']; } : | |
/******/ 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 = "./index.js"); | |
/******/ }) | |
/************************************************************************/ | |
/******/ ({ | |
/***/ "./index.js": | |
/*!******************!*\ | |
!*** ./index.js ***! | |
\******************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _flowmap_gl_layers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @flowmap.gl/layers */ \"./node_modules/@flowmap.gl/layers/dist/index.js\");\n/* global window, global */\n\n\n_flowmap_gl_layers__WEBPACK_IMPORTED_MODULE_0__[\"FlowmapLayer\"].layerName = \"FlowmapLayer\";\nconst _global = typeof window === 'undefined' ? global : window;\n_global.FlowmapLayerLibrary = { FlowmapLayer: _flowmap_gl_layers__WEBPACK_IMPORTED_MODULE_0__[\"FlowmapLayer\"] };\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FlowmapLayerLibrary);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./index.js?"); | |
/***/ }), | |
/***/ "./node_modules/@babel/runtime/helpers/esm/defineProperty.js": | |
/*!*******************************************************************!*\ | |
!*** ./node_modules/@babel/runtime/helpers/esm/defineProperty.js ***! | |
\*******************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _defineProperty; });\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/data/dist/FlowmapAggregateAccessors.js": | |
/*!*************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/data/dist/FlowmapAggregateAccessors.js ***! | |
\*************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FlowmapAggregateAccessors; });\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types */ \"./node_modules/@flowmap.gl/data/dist/types.js\");\n\nclass FlowmapAggregateAccessors {\n constructor(accessors) {\n this.getLocationId = (location) => Object(_types__WEBPACK_IMPORTED_MODULE_0__[\"isLocationClusterNode\"])(location)\n ? location.id\n : this.accessors.getLocationId(location);\n this.getLocationName = (location) => {\n var _a;\n return (_a = (Object(_types__WEBPACK_IMPORTED_MODULE_0__[\"isLocationClusterNode\"])(location) && Object(_types__WEBPACK_IMPORTED_MODULE_0__[\"isCluster\"])(location)\n ? location.name\n : undefined)) !== null && _a !== void 0 ? _a : this.getLocationId(location);\n };\n // ? location.name // TODO getLocationName for locations and clusters\n // : this.accessors.getLocationName\n // ? this.accessors.getLocationName(location)\n // : this.getLocationId(location);\n this.getLocationLat = (location) => Object(_types__WEBPACK_IMPORTED_MODULE_0__[\"isLocationClusterNode\"])(location)\n ? location.lat\n : this.accessors.getLocationLat(location);\n this.getLocationLon = (location) => Object(_types__WEBPACK_IMPORTED_MODULE_0__[\"isLocationClusterNode\"])(location)\n ? location.lon\n : this.accessors.getLocationLon(location);\n this.getFlowOriginId = (f) => {\n return Object(_types__WEBPACK_IMPORTED_MODULE_0__[\"isAggregateFlow\"])(f) ? f.origin : this.accessors.getFlowOriginId(f);\n };\n this.getFlowDestId = (f) => {\n return Object(_types__WEBPACK_IMPORTED_MODULE_0__[\"isAggregateFlow\"])(f) ? f.dest : this.accessors.getFlowDestId(f);\n };\n this.getFlowMagnitude = (f) => {\n return Object(_types__WEBPACK_IMPORTED_MODULE_0__[\"isAggregateFlow\"])(f) ? f.count : this.accessors.getFlowMagnitude(f);\n };\n // Note: Aggregate flows have no time\n this.getFlowTime = (f) => {\n const { getFlowTime } = this.accessors;\n return getFlowTime ? getFlowTime(f) : undefined;\n };\n this.accessors = accessors;\n }\n setAccessors(accessors) {\n this.accessors = accessors;\n }\n getFlowmapDataAccessors() {\n return this.accessors;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd21hcEFnZ3JlZ2F0ZUFjY2Vzc29ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9GbG93bWFwQWdncmVnYXRlQWNjZXNzb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxlQUFlLEVBQ2YsU0FBUyxFQUNULHFCQUFxQixHQUN0QixNQUFNLFNBQVMsQ0FBQztBQUVqQixNQUFNLENBQUMsT0FBTyxPQUFPLHlCQUF5QjtJQUU1QyxZQUFZLFNBQXFDO1FBWWpELGtCQUFhLEdBQUcsQ0FBQyxRQUF5QixFQUFVLEVBQUUsQ0FDcEQscUJBQXFCLENBQUMsUUFBUSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3QyxvQkFBZSxHQUFHLENBQUMsUUFBeUIsRUFBVSxFQUFFOztZQUN0RCxPQUFBLE1BQUEsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDO2dCQUNyRCxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUk7Z0JBQ2YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxtQ0FBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQUEsQ0FBQztRQUNqRCxxRUFBcUU7UUFDckUsbUNBQW1DO1FBQ25DLDZDQUE2QztRQUM3QyxrQ0FBa0M7UUFFbEMsbUJBQWMsR0FBRyxDQUFDLFFBQXlCLEVBQVUsRUFBRSxDQUNyRCxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7WUFDN0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHO1lBQ2QsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTlDLG1CQUFjLEdBQUcsQ0FBQyxRQUF5QixFQUFVLEVBQUUsQ0FDckQscUJBQXFCLENBQUMsUUFBUSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRztZQUNkLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5QyxvQkFBZSxHQUFHLENBQUMsQ0FBb0IsRUFBRSxFQUFFO1lBQ3pDLE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUM7UUFFRixrQkFBYSxHQUFHLENBQUMsQ0FBb0IsRUFBRSxFQUFFO1lBQ3ZDLE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUM7UUFFRixxQkFBZ0IsR0FBRyxDQUFDLENBQW9CLEVBQUUsRUFBRTtZQUMxQyxPQUFPLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUM7UUFFRixxQ0FBcUM7UUFDckMsZ0JBQVcsR0FBRyxDQUFDLENBQUksRUFBRSxFQUFFO1lBQ3JCLE1BQU0sRUFBQyxXQUFXLEVBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3JDLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNsRCxDQUFDLENBQUM7UUFuREEsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFxQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0NBMkNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWdncmVnYXRlRmxvdyxcbiAgQ2x1c3Rlck5vZGUsXG4gIEZsb3dtYXBEYXRhQWNjZXNzb3JzLFxuICBpc0FnZ3JlZ2F0ZUZsb3csXG4gIGlzQ2x1c3RlcixcbiAgaXNMb2NhdGlvbkNsdXN0ZXJOb2RlLFxufSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmxvd21hcEFnZ3JlZ2F0ZUFjY2Vzc29yczxMLCBGPiB7XG4gIHByaXZhdGUgYWNjZXNzb3JzOiBGbG93bWFwRGF0YUFjY2Vzc29yczxMLCBGPjtcbiAgY29uc3RydWN0b3IoYWNjZXNzb3JzOiBGbG93bWFwRGF0YUFjY2Vzc29yczxMLCBGPikge1xuICAgIHRoaXMuYWNjZXNzb3JzID0gYWNjZXNzb3JzO1xuICB9XG5cbiAgc2V0QWNjZXNzb3JzKGFjY2Vzc29yczogRmxvd21hcERhdGFBY2Nlc3NvcnM8TCwgRj4pIHtcbiAgICB0aGlzLmFjY2Vzc29ycyA9IGFjY2Vzc29ycztcbiAgfVxuXG4gIGdldEZsb3dtYXBEYXRhQWNjZXNzb3JzKCkge1xuICAgIHJldHVybiB0aGlzLmFjY2Vzc29ycztcbiAgfVxuXG4gIGdldExvY2F0aW9uSWQgPSAobG9jYXRpb246IEwgfCBDbHVzdGVyTm9kZSk6IHN0cmluZyA9PlxuICAgIGlzTG9jYXRpb25DbHVzdGVyTm9kZShsb2NhdGlvbilcbiAgICAgID8gbG9jYXRpb24uaWRcbiAgICAgIDogdGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25JZChsb2NhdGlvbik7XG5cbiAgZ2V0TG9jYXRpb25OYW1lID0gKGxvY2F0aW9uOiBMIHwgQ2x1c3Rlck5vZGUpOiBzdHJpbmcgPT5cbiAgICAoaXNMb2NhdGlvbkNsdXN0ZXJOb2RlKGxvY2F0aW9uKSAmJiBpc0NsdXN0ZXIobG9jYXRpb24pXG4gICAgICA/IGxvY2F0aW9uLm5hbWVcbiAgICAgIDogdW5kZWZpbmVkKSA/PyB0aGlzLmdldExvY2F0aW9uSWQobG9jYXRpb24pO1xuICAvLyA/IGxvY2F0aW9uLm5hbWUgLy8gVE9ETyBnZXRMb2NhdGlvbk5hbWUgZm9yIGxvY2F0aW9ucyBhbmQgY2x1c3RlcnNcbiAgLy8gOiB0aGlzLmFjY2Vzc29ycy5nZXRMb2NhdGlvbk5hbWVcbiAgLy8gPyB0aGlzLmFjY2Vzc29ycy5nZXRMb2NhdGlvbk5hbWUobG9jYXRpb24pXG4gIC8vIDogdGhpcy5nZXRMb2NhdGlvbklkKGxvY2F0aW9uKTtcblxuICBnZXRMb2NhdGlvbkxhdCA9IChsb2NhdGlvbjogTCB8IENsdXN0ZXJOb2RlKTogbnVtYmVyID0+XG4gICAgaXNMb2NhdGlvbkNsdXN0ZXJOb2RlKGxvY2F0aW9uKVxuICAgICAgPyBsb2NhdGlvbi5sYXRcbiAgICAgIDogdGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25MYXQobG9jYXRpb24pO1xuXG4gIGdldExvY2F0aW9uTG9uID0gKGxvY2F0aW9uOiBMIHwgQ2x1c3Rlck5vZGUpOiBudW1iZXIgPT5cbiAgICBpc0xvY2F0aW9uQ2x1c3Rlck5vZGUobG9jYXRpb24pXG4gICAgICA/IGxvY2F0aW9uLmxvblxuICAgICAgOiB0aGlzLmFjY2Vzc29ycy5nZXRMb2NhdGlvbkxvbihsb2NhdGlvbik7XG5cbiAgZ2V0Rmxvd09yaWdpbklkID0gKGY6IEYgfCBBZ2dyZWdhdGVGbG93KSA9PiB7XG4gICAgcmV0dXJuIGlzQWdncmVnYXRlRmxvdyhmKSA/IGYub3JpZ2luIDogdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd09yaWdpbklkKGYpO1xuICB9O1xuXG4gIGdldEZsb3dEZXN0SWQgPSAoZjogRiB8IEFnZ3JlZ2F0ZUZsb3cpID0+IHtcbiAgICByZXR1cm4gaXNBZ2dyZWdhdGVGbG93KGYpID8gZi5kZXN0IDogdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd0Rlc3RJZChmKTtcbiAgfTtcblxuICBnZXRGbG93TWFnbml0dWRlID0gKGY6IEYgfCBBZ2dyZWdhdGVGbG93KSA9PiB7XG4gICAgcmV0dXJuIGlzQWdncmVnYXRlRmxvdyhmKSA/IGYuY291bnQgOiB0aGlzLmFjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGYpO1xuICB9O1xuXG4gIC8vIE5vdGU6IEFnZ3JlZ2F0ZSBmbG93cyBoYXZlIG5vIHRpbWVcbiAgZ2V0Rmxvd1RpbWUgPSAoZjogRikgPT4ge1xuICAgIGNvbnN0IHtnZXRGbG93VGltZX0gPSB0aGlzLmFjY2Vzc29ycztcbiAgICByZXR1cm4gZ2V0Rmxvd1RpbWUgPyBnZXRGbG93VGltZShmKSA6IHVuZGVmaW5lZDtcbiAgfTtcbn1cbiJdfQ==\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/data/dist/FlowmapAggregateAccessors.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/data/dist/FlowmapSelectors.js": | |
/*!****************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/data/dist/FlowmapSelectors.js ***! | |
\****************************************************************/ | |
/*! exports provided: default, getOuterCircleRadiusByIndex, getLocationCoordsByIndex, getFlowLineAttributesByIndex */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FlowmapSelectors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOuterCircleRadiusByIndex\", function() { return getOuterCircleRadiusByIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLocationCoordsByIndex\", function() { return getLocationCoordsByIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFlowLineAttributesByIndex\", function() { return getFlowLineAttributesByIndex; });\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_collection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-collection */ \"./node_modules/d3-collection/src/index.js\");\n/* harmony import */ var d3_scale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-scale */ \"./node_modules/d3-scale/src/index.js\");\n/* harmony import */ var kdbush__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! kdbush */ \"./node_modules/kdbush/src/index.js\");\n/* harmony import */ var reselect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! reselect */ \"./node_modules/reselect/es/index.js\");\n/* harmony import */ var seedrandom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! seedrandom */ \"./node_modules/seedrandom/index.js\");\n/* harmony import */ var seedrandom__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(seedrandom__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _cluster_cluster__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./cluster/cluster */ \"./node_modules/@flowmap.gl/data/dist/cluster/cluster.js\");\n/* harmony import */ var _cluster_ClusterIndex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./cluster/ClusterIndex */ \"./node_modules/@flowmap.gl/data/dist/cluster/ClusterIndex.js\");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./colors */ \"./node_modules/@flowmap.gl/data/dist/colors.js\");\n/* harmony import */ var _FlowmapAggregateAccessors__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./FlowmapAggregateAccessors */ \"./node_modules/@flowmap.gl/data/dist/FlowmapAggregateAccessors.js\");\n/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./time */ \"./node_modules/@flowmap.gl/data/dist/time.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./types */ \"./node_modules/@flowmap.gl/data/dist/types.js\");\n/*\n * Copyright 2022 FlowmapBlue\n * Copyright 2018-2020 Teralytics, modified by FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MAX_CLUSTER_ZOOM_LEVEL = 20;\nclass FlowmapSelectors {\n constructor(accessors) {\n this.getFetchedFlows = (state, props) => props.flows;\n this.getFetchedLocations = (state, props) => props.locations;\n this.getMaxTopFlowsDisplayNum = (state, props) => state.settingsState.maxTopFlowsDisplayNum;\n this.getSelectedLocations = (state, props) => state.filterState.selectedLocations;\n this.getLocationFilterMode = (state, props) => state.filterState.locationFilterMode;\n this.getClusteringEnabled = (state, props) => state.settingsState.clusteringEnabled;\n this.getLocationTotalsEnabled = (state, props) => state.settingsState.locationTotalsEnabled;\n this.getZoom = (state, props) => state.viewport.zoom;\n this.getViewport = (state, props) => state.viewport;\n this.getSelectedTimeRange = (state, props) => state.filterState.selectedTimeRange;\n this.getColorScheme = (state, props) => state.settingsState.colorScheme;\n this.getDarkMode = (state, props) => state.settingsState.darkMode;\n this.getFadeEnabled = (state, props) => state.settingsState.fadeEnabled;\n this.getFadeOpacityEnabled = (state, props) => state.settingsState.fadeOpacityEnabled;\n this.getFadeAmount = (state, props) => state.settingsState.fadeAmount;\n this.getAnimate = (state, props) => state.settingsState.animationEnabled;\n this.getInvalidLocationIds = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getFetchedLocations, (locations) => {\n if (!locations)\n return undefined;\n const invalid = [];\n for (const location of locations) {\n const id = this.accessors.getLocationId(location);\n const lon = this.accessors.getLocationLon(location);\n const lat = this.accessors.getLocationLat(location);\n if (!(-90 <= lat && lat <= 90) || !(-180 <= lon && lon <= 180)) {\n invalid.push(id);\n }\n }\n return invalid.length > 0 ? invalid : undefined;\n });\n this.getLocations = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getFetchedLocations, this.getInvalidLocationIds, (locations, invalidIds) => {\n if (!locations)\n return undefined;\n if (!invalidIds || invalidIds.length === 0)\n return locations;\n const invalid = new Set(invalidIds);\n const filtered = [];\n for (const location of locations) {\n const id = this.accessors.getLocationId(location);\n if (!invalid.has(id)) {\n filtered.push(location);\n }\n }\n return filtered;\n });\n this.getLocationIds = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocations, (locations) => {\n if (!locations)\n return undefined;\n const ids = new Set();\n for (const id of locations) {\n ids.add(this.accessors.getLocationId(id));\n }\n return ids;\n });\n this.getSelectedLocationsSet = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getSelectedLocations, (ids) => ids && ids.length > 0 ? new Set(ids) : undefined);\n this.getSortedFlowsForKnownLocations = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getFetchedFlows, this.getLocationIds, (flows, ids) => {\n if (!ids || !flows)\n return undefined;\n const filtered = [];\n for (const flow of flows) {\n const srcId = this.accessors.getFlowOriginId(flow);\n const dstId = this.accessors.getFlowDestId(flow);\n if (ids.has(srcId) && ids.has(dstId)) {\n filtered.push(flow);\n }\n }\n return filtered.sort((a, b) => Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"descending\"])(Math.abs(this.accessors.getFlowMagnitude(a)), Math.abs(this.accessors.getFlowMagnitude(b))));\n });\n this.getActualTimeExtent = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getSortedFlowsForKnownLocations, (flows) => {\n if (!flows)\n return undefined;\n let start = null;\n let end = null;\n for (const flow of flows) {\n const time = this.accessors.getFlowTime(flow);\n if (time) {\n if (start == null || start > time)\n start = time;\n if (end == null || end < time)\n end = time;\n }\n }\n if (!start || !end)\n return undefined;\n return [start, end];\n });\n this.getTimeGranularityKey = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getSortedFlowsForKnownLocations, this.getActualTimeExtent, (flows, timeExtent) => {\n if (!flows || !timeExtent)\n return undefined;\n const minOrder = Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(flows, (d) => {\n const t = this.accessors.getFlowTime(d);\n return t ? Object(_time__WEBPACK_IMPORTED_MODULE_11__[\"getTimeGranularityForDate\"])(t).order : null;\n });\n if (minOrder == null)\n return undefined;\n const timeGranularity = Object(_time__WEBPACK_IMPORTED_MODULE_11__[\"getTimeGranularityByOrder\"])(minOrder);\n return timeGranularity ? timeGranularity.key : undefined;\n });\n this.getTimeExtent = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getActualTimeExtent, this.getTimeGranularityKey, (timeExtent, timeGranularityKey) => {\n const timeGranularity = timeGranularityKey\n ? Object(_time__WEBPACK_IMPORTED_MODULE_11__[\"getTimeGranularityByKey\"])(timeGranularityKey)\n : undefined;\n if (!timeExtent || !(timeGranularity === null || timeGranularity === void 0 ? void 0 : timeGranularity.interval))\n return undefined;\n const { interval } = timeGranularity;\n return [timeExtent[0], interval.offset(interval.floor(timeExtent[1]), 1)];\n });\n this.getSortedFlowsForKnownLocationsFilteredByTime = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getSortedFlowsForKnownLocations, this.getTimeExtent, this.getSelectedTimeRange, (flows, timeExtent, timeRange) => {\n if (!flows)\n return undefined;\n if (!timeExtent ||\n !timeRange ||\n (timeExtent[0] === timeRange[0] && timeExtent[1] === timeRange[1])) {\n return flows;\n }\n return flows.filter((flow) => {\n const time = this.accessors.getFlowTime(flow);\n return time && timeRange[0] <= time && time < timeRange[1];\n });\n });\n this.getLocationsHavingFlows = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getSortedFlowsForKnownLocations, this.getLocations, (flows, locations) => {\n if (!locations || !flows)\n return locations;\n const withFlows = new Set();\n for (const flow of flows) {\n withFlows.add(this.accessors.getFlowOriginId(flow));\n withFlows.add(this.accessors.getFlowDestId(flow));\n }\n const filtered = [];\n for (const location of locations) {\n if (withFlows.has(this.accessors.getLocationId(location))) {\n filtered.push(location);\n }\n }\n return filtered;\n });\n this.getLocationsById = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationsHavingFlows, (locations) => {\n if (!locations)\n return undefined;\n const locationsById = new Map();\n for (const location of locations) {\n locationsById.set(this.accessors.getLocationId(location), location);\n }\n return locationsById;\n });\n this.getClusterIndex = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationsHavingFlows, this.getLocationsById, this.getSortedFlowsForKnownLocations, (locations, locationsById, flows) => {\n if (!locations || !locationsById || !flows)\n return undefined;\n const getLocationWeight = Object(_cluster_ClusterIndex__WEBPACK_IMPORTED_MODULE_8__[\"makeLocationWeightGetter\"])(flows, this.accessors.getFlowmapDataAccessors());\n const clusterLevels = Object(_cluster_cluster__WEBPACK_IMPORTED_MODULE_7__[\"clusterLocations\"])(locations, this.accessors.getFlowmapDataAccessors(), getLocationWeight, {\n maxZoom: MAX_CLUSTER_ZOOM_LEVEL,\n });\n const clusterIndex = Object(_cluster_ClusterIndex__WEBPACK_IMPORTED_MODULE_8__[\"buildIndex\"])(clusterLevels);\n const { getLocationName, getLocationClusterName } = this.accessors.getFlowmapDataAccessors();\n // Adding meaningful names\n const getName = (id) => {\n const loc = locationsById.get(id);\n if (loc) {\n return getLocationName\n ? getLocationName(loc)\n : this.accessors.getLocationId(loc) || id;\n }\n return `\"${id}\"`;\n };\n for (const level of clusterLevels) {\n for (const node of level.nodes) {\n // Here mutating the nodes (adding names)\n if (Object(_types__WEBPACK_IMPORTED_MODULE_12__[\"isCluster\"])(node)) {\n const leaves = clusterIndex.expandCluster(node);\n leaves.sort((a, b) => Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"descending\"])(getLocationWeight(a), getLocationWeight(b)));\n if (getLocationClusterName) {\n node.name = getLocationClusterName(leaves);\n }\n else {\n const topId = leaves[0];\n const otherId = leaves.length === 2 ? leaves[1] : undefined;\n node.name = `\"${getName(topId)}\" and ${otherId\n ? `\"${getName(otherId)}\"`\n : `${leaves.length - 1} others`}`;\n }\n }\n else {\n node.name = getName(node.id);\n }\n }\n }\n return clusterIndex;\n });\n this.getAvailableClusterZoomLevels = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getClusterIndex, this.getSelectedLocations, (clusterIndex, selectedLocations) => {\n if (!clusterIndex) {\n return undefined;\n }\n let maxZoom = Number.POSITIVE_INFINITY;\n let minZoom = Number.NEGATIVE_INFINITY;\n const adjust = (zoneId) => {\n const cluster = clusterIndex.getClusterById(zoneId);\n if (cluster) {\n minZoom = Math.max(minZoom, cluster.zoom);\n maxZoom = Math.min(maxZoom, cluster.zoom);\n }\n else {\n const zoom = clusterIndex.getMinZoomForLocation(zoneId);\n minZoom = Math.max(minZoom, zoom);\n }\n };\n if (selectedLocations) {\n for (const id of selectedLocations) {\n adjust(id);\n }\n }\n return clusterIndex.availableZoomLevels.filter((level) => minZoom <= level && level <= maxZoom);\n });\n this._getClusterZoom = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getClusterIndex, this.getZoom, this.getAvailableClusterZoomLevels, (clusterIndex, mapZoom, availableClusterZoomLevels) => {\n if (!clusterIndex)\n return undefined;\n if (!availableClusterZoomLevels) {\n return undefined;\n }\n const clusterZoom = Object(_cluster_ClusterIndex__WEBPACK_IMPORTED_MODULE_8__[\"findAppropriateZoomLevel\"])(availableClusterZoomLevels, mapZoom);\n return clusterZoom;\n });\n this.getClusterZoom = (state, props) => {\n const { settingsState } = state;\n if (!settingsState.clusteringEnabled)\n return undefined;\n if (settingsState.clusteringAuto || settingsState.clusteringLevel == null) {\n return this._getClusterZoom(state, props);\n }\n return settingsState.clusteringLevel;\n };\n this.getLocationsForSearchBox = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getClusteringEnabled, this.getLocationsHavingFlows, this.getSelectedLocations, this.getClusterZoom, this.getClusterIndex, (clusteringEnabled, locations, selectedLocations, clusterZoom, clusterIndex) => {\n if (!locations)\n return undefined;\n let result = Array.from(locations);\n // if (clusteringEnabled) {\n // if (clusterIndex) {\n // const zoomItems = clusterIndex.getClusterNodesFor(clusterZoom);\n // if (zoomItems) {\n // result = result.concat(zoomItems.filter(isCluster));\n // }\n // }\n // }\n if (clusterIndex && selectedLocations) {\n const toAppend = [];\n for (const id of selectedLocations) {\n const cluster = clusterIndex.getClusterById(id);\n if (cluster &&\n !result.find((d) => (Object(_types__WEBPACK_IMPORTED_MODULE_12__[\"isLocationClusterNode\"])(d)\n ? d.id\n : this.accessors.getLocationId(d)) === id)) {\n toAppend.push(cluster);\n }\n }\n if (toAppend.length > 0) {\n result = result.concat(toAppend);\n }\n }\n return result;\n });\n this.getDiffMode = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getFetchedFlows, (flows) => {\n if (flows) {\n for (const f of flows) {\n if (this.accessors.getFlowMagnitude(f) < 0) {\n return true;\n }\n }\n }\n return false;\n });\n this._getFlowmapColors = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getDiffMode, this.getColorScheme, this.getDarkMode, this.getFadeEnabled, this.getFadeOpacityEnabled, this.getFadeAmount, this.getAnimate, _colors__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n this.getFlowmapColorsRGBA = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this._getFlowmapColors, (flowmapColors) => {\n return Object(_colors__WEBPACK_IMPORTED_MODULE_9__[\"isDiffColors\"])(flowmapColors)\n ? Object(_colors__WEBPACK_IMPORTED_MODULE_9__[\"getDiffColorsRGBA\"])(flowmapColors)\n : Object(_colors__WEBPACK_IMPORTED_MODULE_9__[\"getColorsRGBA\"])(flowmapColors);\n });\n this.getUnknownLocations = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationIds, this.getFetchedFlows, this.getSortedFlowsForKnownLocations, (ids, flows, flowsForKnownLocations) => {\n if (!ids || !flows)\n return undefined;\n if (flowsForKnownLocations\n // && flows.length === flowsForKnownLocations.length\n )\n return undefined;\n const missing = new Set();\n for (const flow of flows) {\n if (!ids.has(this.accessors.getFlowOriginId(flow)))\n missing.add(this.accessors.getFlowOriginId(flow));\n if (!ids.has(this.accessors.getFlowDestId(flow)))\n missing.add(this.accessors.getFlowDestId(flow));\n }\n return missing;\n });\n this.getSortedAggregatedFilteredFlows = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getClusterIndex, this.getClusteringEnabled, this.getSortedFlowsForKnownLocationsFilteredByTime, this.getClusterZoom, this.getTimeExtent, (clusterTree, isClusteringEnabled, flows, clusterZoom, timeExtent) => {\n if (!flows)\n return undefined;\n let aggregated;\n if (isClusteringEnabled && clusterTree && clusterZoom != null) {\n aggregated = clusterTree.aggregateFlows(\n // TODO: aggregate across time\n // timeExtent != null\n // ? aggregateFlows(flows) // clusterTree.aggregateFlows won't aggregate unclustered across time\n // : flows,\n flows, clusterZoom, this.accessors.getFlowmapDataAccessors());\n }\n else {\n aggregated = aggregateFlows(flows, this.accessors.getFlowmapDataAccessors());\n }\n aggregated.sort((a, b) => Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"descending\"])(Math.abs(this.accessors.getFlowMagnitude(a)), Math.abs(this.accessors.getFlowMagnitude(b))));\n return aggregated;\n });\n this.getExpandedSelectedLocationsSet = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getClusteringEnabled, this.getSelectedLocationsSet, this.getClusterIndex, (clusteringEnabled, selectedLocations, clusterIndex) => {\n if (!selectedLocations || !clusterIndex) {\n return selectedLocations;\n }\n const result = new Set();\n for (const locationId of selectedLocations) {\n const cluster = clusterIndex.getClusterById(locationId);\n if (cluster) {\n const expanded = clusterIndex.expandCluster(cluster);\n for (const id of expanded) {\n result.add(id);\n }\n }\n else {\n result.add(locationId);\n }\n }\n return result;\n });\n this.getTotalCountsByTime = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getSortedFlowsForKnownLocations, this.getTimeGranularityKey, this.getTimeExtent, this.getExpandedSelectedLocationsSet, this.getLocationFilterMode, (flows, timeGranularityKey, timeExtent, selectedLocationSet, locationFilterMode) => {\n const timeGranularity = timeGranularityKey\n ? Object(_time__WEBPACK_IMPORTED_MODULE_11__[\"getTimeGranularityByKey\"])(timeGranularityKey)\n : undefined;\n if (!flows || !timeGranularity || !timeExtent)\n return undefined;\n const byTime = flows.reduce((m, flow) => {\n var _a;\n if (this.isFlowInSelection(flow, selectedLocationSet, locationFilterMode)) {\n const key = timeGranularity\n .interval(this.accessors.getFlowTime(flow))\n .getTime();\n m.set(key, ((_a = m.get(key)) !== null && _a !== void 0 ? _a : 0) + this.accessors.getFlowMagnitude(flow));\n }\n return m;\n }, new Map());\n return Array.from(byTime.entries()).map(([millis, count]) => ({\n time: new Date(millis),\n count,\n }));\n });\n this.getMaxLocationCircleSize = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationTotalsEnabled, (locationTotalsEnabled) => (locationTotalsEnabled ? 17 : 1));\n this.getViewportBoundingBox = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getViewport, this.getMaxLocationCircleSize, (viewport, maxLocationCircleSize) => {\n const pad = maxLocationCircleSize;\n const bounds = new _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_0__[\"WebMercatorViewport\"](Object.assign(Object.assign({}, viewport), { width: viewport.width + pad * 2, height: viewport.height + pad * 2 })).getBounds();\n return [bounds[0][0], bounds[0][1], bounds[1][0], bounds[1][1]];\n });\n this.getLocationsForZoom = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getClusteringEnabled, this.getLocationsHavingFlows, this.getClusterIndex, this.getClusterZoom, (clusteringEnabled, locationsHavingFlows, clusterIndex, clusterZoom) => {\n if (clusteringEnabled && clusterIndex) {\n return clusterIndex.getClusterNodesFor(clusterZoom);\n }\n else {\n return locationsHavingFlows;\n }\n });\n this.getLocationTotals = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationsForZoom, this.getSortedAggregatedFilteredFlows, this.getSelectedLocationsSet, this.getLocationFilterMode, (locations, flows, selectedLocationsSet, locationFilterMode) => {\n if (!flows)\n return undefined;\n const totals = new Map();\n const add = (id, d) => {\n var _a;\n const rv = (_a = totals.get(id)) !== null && _a !== void 0 ? _a : {\n incomingCount: 0,\n outgoingCount: 0,\n internalCount: 0,\n };\n if (d.incomingCount != null)\n rv.incomingCount += d.incomingCount;\n if (d.outgoingCount != null)\n rv.outgoingCount += d.outgoingCount;\n if (d.internalCount != null)\n rv.internalCount += d.internalCount;\n return rv;\n };\n for (const f of flows) {\n if (this.isFlowInSelection(f, selectedLocationsSet, locationFilterMode)) {\n const originId = this.accessors.getFlowOriginId(f);\n const destId = this.accessors.getFlowDestId(f);\n const count = this.accessors.getFlowMagnitude(f);\n if (originId === destId) {\n totals.set(originId, add(originId, { internalCount: count }));\n }\n else {\n totals.set(originId, add(originId, { outgoingCount: count }));\n totals.set(destId, add(destId, { incomingCount: count }));\n }\n }\n }\n return totals;\n });\n this.getLocationsTree = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationsForZoom, (locations) => {\n if (!locations) {\n return undefined;\n }\n return new kdbush__WEBPACK_IMPORTED_MODULE_4__[\"default\"](\n // @ts-ignore\n locations, (location) => lngX(this.accessors.getLocationLon(location)), (location) => latY(this.accessors.getLocationLat(location)));\n });\n this._getLocationIdsInViewport = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationsTree, this.getViewportBoundingBox, (tree, bbox) => {\n const ids = this._getLocationsInBboxIndices(tree, bbox);\n if (ids) {\n return new Set(ids.map((idx) => tree.points[idx].id));\n }\n return undefined;\n });\n this.getLocationIdsInViewport = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelectorCreator\"])(reselect__WEBPACK_IMPORTED_MODULE_5__[\"defaultMemoize\"], \n // @ts-ignore\n (s1, s2, index) => {\n if (s1 === s2)\n return true;\n if (s1 == null || s2 == null)\n return false;\n if (s1.size !== s2.size)\n return false;\n for (const item of s1)\n if (!s2.has(item))\n return false;\n return true;\n })(this._getLocationIdsInViewport, (locationIds) => {\n if (!locationIds)\n return undefined;\n return locationIds;\n });\n this.getTotalUnfilteredCount = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getSortedFlowsForKnownLocations, (flows) => {\n if (!flows)\n return undefined;\n return flows.reduce((m, flow) => m + this.accessors.getFlowMagnitude(flow), 0);\n });\n this.getTotalFilteredCount = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getSortedAggregatedFilteredFlows, this.getSelectedLocationsSet, this.getLocationFilterMode, (flows, selectedLocationSet, locationFilterMode) => {\n if (!flows)\n return undefined;\n const count = flows.reduce((m, flow) => {\n if (this.isFlowInSelection(flow, selectedLocationSet, locationFilterMode)) {\n return m + this.accessors.getFlowMagnitude(flow);\n }\n return m;\n }, 0);\n return count;\n });\n this._getLocationTotalsExtent = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationTotals, (locationTotals) => calcLocationTotalsExtent(locationTotals, undefined));\n this._getLocationTotalsForViewportExtent = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationTotals, this.getLocationIdsInViewport, (locationTotals, locationsInViewport) => calcLocationTotalsExtent(locationTotals, locationsInViewport));\n this.getLocationTotalsExtent = (state, props) => {\n if (state.settingsState.adaptiveScalesEnabled) {\n return this._getLocationTotalsForViewportExtent(state, props);\n }\n else {\n return this._getLocationTotalsExtent(state, props);\n }\n };\n this.getFlowsForFlowmapLayer = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getSortedAggregatedFilteredFlows, this.getLocationIdsInViewport, this.getSelectedLocationsSet, this.getLocationFilterMode, this.getMaxTopFlowsDisplayNum, (flows, locationIdsInViewport, selectedLocationsSet, locationFilterMode, maxTopFlowsDisplayNum) => {\n if (!flows || !locationIdsInViewport)\n return undefined;\n const picked = [];\n let pickedCount = 0;\n for (const flow of flows) {\n const origin = this.accessors.getFlowOriginId(flow);\n const dest = this.accessors.getFlowDestId(flow);\n if (locationIdsInViewport.has(origin) ||\n locationIdsInViewport.has(dest)) {\n if (this.isFlowInSelection(flow, selectedLocationsSet, locationFilterMode)) {\n if (origin !== dest) {\n // exclude self-loops\n picked.push(flow);\n pickedCount++;\n }\n }\n }\n // Only keep top\n if (pickedCount > maxTopFlowsDisplayNum)\n break;\n }\n // assuming they are sorted in descending order,\n // we need ascending for rendering\n return picked.reverse();\n });\n this._getFlowMagnitudeExtent = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getSortedAggregatedFilteredFlows, this.getSelectedLocationsSet, this.getLocationFilterMode, (flows, selectedLocationsSet, locationFilterMode) => {\n if (!flows)\n return undefined;\n let rv = undefined;\n for (const f of flows) {\n if (this.accessors.getFlowOriginId(f) !==\n this.accessors.getFlowDestId(f) &&\n this.isFlowInSelection(f, selectedLocationsSet, locationFilterMode)) {\n const count = this.accessors.getFlowMagnitude(f);\n if (rv == null) {\n rv = [count, count];\n }\n else {\n if (count < rv[0])\n rv[0] = count;\n if (count > rv[1])\n rv[1] = count;\n }\n }\n }\n return rv;\n });\n this._getAdaptiveFlowMagnitudeExtent = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getFlowsForFlowmapLayer, (flows) => {\n if (!flows)\n return undefined;\n const rv = Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"extent\"])(flows, this.accessors.getFlowMagnitude);\n return rv[0] !== undefined && rv[1] !== undefined ? rv : undefined;\n });\n this.getFlowMagnitudeExtent = (state, props) => {\n if (state.settingsState.adaptiveScalesEnabled) {\n return this._getAdaptiveFlowMagnitudeExtent(state, props);\n }\n else {\n return this._getFlowMagnitudeExtent(state, props);\n }\n };\n this.getLocationMaxAbsTotalGetter = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationTotals, (locationTotals) => {\n return (locationId) => {\n const total = locationTotals === null || locationTotals === void 0 ? void 0 : locationTotals.get(locationId);\n if (!total)\n return undefined;\n return Math.max(Math.abs(total.incomingCount + total.internalCount), Math.abs(total.outgoingCount + total.internalCount));\n };\n });\n this.getFlowThicknessScale = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getFlowMagnitudeExtent, (magnitudeExtent) => {\n if (!magnitudeExtent)\n return undefined;\n return Object(d3_scale__WEBPACK_IMPORTED_MODULE_3__[\"scaleLinear\"])()\n .range([0.025, 0.5])\n .domain([\n 0,\n // should support diff mode too\n Math.max.apply(null, magnitudeExtent.map((x) => Math.abs(x || 0))),\n ]);\n });\n this.getCircleSizeScale = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getMaxLocationCircleSize, this.getLocationTotalsEnabled, this.getLocationTotalsExtent, (maxLocationCircleSize, locationTotalsEnabled, locationTotalsExtent) => {\n if (!locationTotalsEnabled) {\n return () => maxLocationCircleSize;\n }\n if (!locationTotalsExtent)\n return undefined;\n return Object(d3_scale__WEBPACK_IMPORTED_MODULE_3__[\"scaleSqrt\"])()\n .range([0, maxLocationCircleSize])\n .domain([\n 0,\n // should support diff mode too\n Math.max.apply(null, locationTotalsExtent.map((x) => Math.abs(x || 0))),\n ]);\n });\n this.getInCircleSizeGetter = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getCircleSizeScale, this.getLocationTotals, (circleSizeScale, locationTotals) => {\n return (locationId) => {\n const total = locationTotals === null || locationTotals === void 0 ? void 0 : locationTotals.get(locationId);\n if (total && circleSizeScale) {\n return (circleSizeScale(Math.abs(total.incomingCount + total.internalCount)) || 0);\n }\n return 0;\n };\n });\n this.getOutCircleSizeGetter = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getCircleSizeScale, this.getLocationTotals, (circleSizeScale, locationTotals) => {\n return (locationId) => {\n const total = locationTotals === null || locationTotals === void 0 ? void 0 : locationTotals.get(locationId);\n if (total && circleSizeScale) {\n return (circleSizeScale(Math.abs(total.outgoingCount + total.internalCount)) || 0);\n }\n return 0;\n };\n });\n this.getSortedLocationsForZoom = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationsForZoom, this.getInCircleSizeGetter, this.getOutCircleSizeGetter, (locations, getInCircleSize, getOutCircleSize) => {\n if (!locations)\n return undefined;\n const nextLocations = [...locations];\n return nextLocations.sort((a, b) => {\n const idA = this.accessors.getLocationId(a);\n const idB = this.accessors.getLocationId(b);\n return Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"ascending\"])(Math.max(getInCircleSize(idA), getOutCircleSize(idA)), Math.max(getInCircleSize(idB), getOutCircleSize(idB)));\n });\n });\n this.getLocationsForFlowmapLayer = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getSortedLocationsForZoom, \n // this.getLocationIdsInViewport,\n (locations) => {\n // if (!locations) return undefined;\n // if (!locationIdsInViewport) return locations;\n // if (locationIdsInViewport.size === locations.length) return locations;\n // const filtered = [];\n // for (const loc of locations) {\n // if (locationIdsInViewport.has(loc.id)) {\n // filtered.push(loc);\n // }\n // }\n // return filtered;\n // @ts-ignore\n // return locations.filter(\n // (loc: L | ClusterNode) => locationIdsInViewport!.has(loc.id)\n // );\n // TODO: return location in viewport + \"connected\" ones\n return locations;\n });\n this.getLocationsForFlowmapLayerById = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationsForFlowmapLayer, (locations) => {\n if (!locations)\n return undefined;\n return locations.reduce((m, d) => (m.set(this.accessors.getLocationId(d), d), m), new Map());\n });\n this.getLayersData = Object(reselect__WEBPACK_IMPORTED_MODULE_5__[\"createSelector\"])(this.getLocationsForFlowmapLayer, this.getFlowsForFlowmapLayer, this.getFlowmapColorsRGBA, this.getLocationsForFlowmapLayerById, this.getLocationIdsInViewport, this.getInCircleSizeGetter, this.getOutCircleSizeGetter, this.getFlowThicknessScale, this.getAnimate, (locations, flows, flowmapColors, locationsById, locationIdsInViewport, getInCircleSize, getOutCircleSize, flowThicknessScale, animationEnabled) => {\n return this._prepareLayersData(locations, flows, flowmapColors, locationsById, locationIdsInViewport, getInCircleSize, getOutCircleSize, flowThicknessScale, animationEnabled);\n });\n this.accessors = new _FlowmapAggregateAccessors__WEBPACK_IMPORTED_MODULE_10__[\"default\"](accessors);\n this.setAccessors(accessors);\n }\n setAccessors(accessors) {\n this.accessors = new _FlowmapAggregateAccessors__WEBPACK_IMPORTED_MODULE_10__[\"default\"](accessors);\n }\n prepareLayersData(state, props) {\n const locations = this.getLocationsForFlowmapLayer(state, props) || [];\n const flows = this.getFlowsForFlowmapLayer(state, props) || [];\n const flowmapColors = this.getFlowmapColorsRGBA(state, props);\n const locationsById = this.getLocationsForFlowmapLayerById(state, props);\n const locationIdsInViewport = this.getLocationIdsInViewport(state, props);\n const getInCircleSize = this.getInCircleSizeGetter(state, props);\n const getOutCircleSize = this.getOutCircleSizeGetter(state, props);\n const flowThicknessScale = this.getFlowThicknessScale(state, props);\n return this._prepareLayersData(locations, flows, flowmapColors, locationsById, locationIdsInViewport, getInCircleSize, getOutCircleSize, flowThicknessScale, state.settingsState.animationEnabled);\n }\n _prepareLayersData(locations, flows, flowmapColors, locationsById, locationIdsInViewport, getInCircleSize, getOutCircleSize, flowThicknessScale, animationEnabled) {\n if (!locations)\n locations = [];\n if (!flows)\n flows = [];\n const { getFlowOriginId, getFlowDestId, getFlowMagnitude, getLocationId, getLocationLon, getLocationLat, } = this.accessors;\n const flowMagnitudeExtent = Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"extent\"])(flows, (f) => getFlowMagnitude(f));\n const flowColorScale = Object(_colors__WEBPACK_IMPORTED_MODULE_9__[\"getFlowColorScale\"])(flowmapColors, flowMagnitudeExtent, false);\n // Using a generator here helps to avoid creating intermediary arrays\n const circlePositions = Float32Array.from((function* () {\n for (const location of locations) {\n yield getLocationLon(location);\n yield getLocationLat(location);\n }\n })());\n // TODO: diff mode\n const circleColor = Object(_colors__WEBPACK_IMPORTED_MODULE_9__[\"isDiffColorsRGBA\"])(flowmapColors)\n ? flowmapColors.positive.locationCircles.inner\n : flowmapColors.locationCircles.inner;\n const circleColors = Uint8Array.from((function* () {\n for (const location of locations) {\n yield* circleColor;\n }\n })());\n const inCircleRadii = Float32Array.from((function* () {\n for (const location of locations) {\n const id = getLocationId(location);\n yield (locationIdsInViewport === null || locationIdsInViewport === void 0 ? void 0 : locationIdsInViewport.has(id)) ? getInCircleSize(id) : 1.0;\n }\n })());\n const outCircleRadii = Float32Array.from((function* () {\n for (const location of locations) {\n const id = getLocationId(location);\n yield (locationIdsInViewport === null || locationIdsInViewport === void 0 ? void 0 : locationIdsInViewport.has(id)) ? getOutCircleSize(id) : 1.0;\n }\n })());\n const sourcePositions = Float32Array.from((function* () {\n for (const flow of flows) {\n const loc = locationsById === null || locationsById === void 0 ? void 0 : locationsById.get(getFlowOriginId(flow));\n yield loc ? getLocationLon(loc) : 0;\n yield loc ? getLocationLat(loc) : 0;\n }\n })());\n const targetPositions = Float32Array.from((function* () {\n for (const flow of flows) {\n const loc = locationsById === null || locationsById === void 0 ? void 0 : locationsById.get(getFlowDestId(flow));\n yield loc ? getLocationLon(loc) : 0;\n yield loc ? getLocationLat(loc) : 0;\n }\n })());\n const thicknesses = Float32Array.from((function* () {\n for (const flow of flows) {\n yield flowThicknessScale\n ? flowThicknessScale(getFlowMagnitude(flow)) || 0\n : 0;\n }\n })());\n const endpointOffsets = Float32Array.from((function* () {\n for (const flow of flows) {\n const originId = getFlowOriginId(flow);\n const destId = getFlowDestId(flow);\n yield Math.max(getInCircleSize(originId), getOutCircleSize(originId));\n yield Math.max(getInCircleSize(destId), getOutCircleSize(destId));\n }\n })());\n const flowLineColors = Uint8Array.from((function* () {\n for (const flow of flows) {\n yield* flowColorScale(getFlowMagnitude(flow));\n }\n })());\n const staggeringValues = animationEnabled\n ? Float32Array.from((function* () {\n for (const f of flows) {\n // @ts-ignore\n yield new seedrandom__WEBPACK_IMPORTED_MODULE_6__[\"alea\"](`${getFlowOriginId(f)}-${getFlowDestId(f)}`)();\n }\n })())\n : undefined;\n return {\n circleAttributes: {\n length: locations.length,\n attributes: {\n getPosition: { value: circlePositions, size: 2 },\n getColor: { value: circleColors, size: 4 },\n getInRadius: { value: inCircleRadii, size: 1 },\n getOutRadius: { value: outCircleRadii, size: 1 },\n },\n },\n lineAttributes: {\n length: flows.length,\n attributes: Object.assign({ getSourcePosition: { value: sourcePositions, size: 2 }, getTargetPosition: { value: targetPositions, size: 2 }, getThickness: { value: thicknesses, size: 1 }, getColor: { value: flowLineColors, size: 4 }, getEndpointOffsets: { value: endpointOffsets, size: 2 } }, (staggeringValues\n ? { getStaggering: { value: staggeringValues, size: 1 } }\n : {})),\n },\n };\n }\n getLocationsInBbox(tree, bbox) {\n if (!tree)\n return undefined;\n return this._getLocationsInBboxIndices(tree, bbox).map((idx) => tree.points[idx]);\n }\n _getLocationsInBboxIndices(tree, bbox) {\n if (!tree)\n return undefined;\n const [lon1, lat1, lon2, lat2] = bbox;\n const [x1, y1, x2, y2] = [lngX(lon1), latY(lat1), lngX(lon2), latY(lat2)];\n return tree.range(Math.min(x1, x2), Math.min(y1, y2), Math.max(x1, x2), Math.max(y1, y2));\n }\n isFlowInSelection(flow, selectedLocationsSet, locationFilterMode) {\n const origin = this.accessors.getFlowOriginId(flow);\n const dest = this.accessors.getFlowDestId(flow);\n if (selectedLocationsSet) {\n switch (locationFilterMode) {\n case _types__WEBPACK_IMPORTED_MODULE_12__[\"LocationFilterMode\"].ALL:\n return (selectedLocationsSet.has(origin) || selectedLocationsSet.has(dest));\n case _types__WEBPACK_IMPORTED_MODULE_12__[\"LocationFilterMode\"].BETWEEN:\n return (selectedLocationsSet.has(origin) && selectedLocationsSet.has(dest));\n case _types__WEBPACK_IMPORTED_MODULE_12__[\"LocationFilterMode\"].INCOMING:\n return selectedLocationsSet.has(dest);\n case _types__WEBPACK_IMPORTED_MODULE_12__[\"LocationFilterMode\"].OUTGOING:\n return selectedLocationsSet.has(origin);\n }\n }\n return true;\n }\n}\nfunction calcLocationTotalsExtent(locationTotals, locationIdsInViewport) {\n if (!locationTotals)\n return undefined;\n let rv = undefined;\n for (const [id, { incomingCount, outgoingCount, internalCount },] of locationTotals.entries()) {\n if (locationIdsInViewport == null || locationIdsInViewport.has(id)) {\n const lo = Math.min(incomingCount + internalCount, outgoingCount + internalCount, internalCount);\n const hi = Math.max(incomingCount + internalCount, outgoingCount + internalCount, internalCount);\n if (!rv) {\n rv = [lo, hi];\n }\n else {\n if (lo < rv[0])\n rv[0] = lo;\n if (hi > rv[1])\n rv[1] = hi;\n }\n }\n }\n return rv;\n}\n// longitude/latitude to spherical mercator in [0..1] range\nfunction lngX(lng) {\n return lng / 360 + 0.5;\n}\nfunction latY(lat) {\n const sin = Math.sin((lat * Math.PI) / 180);\n const y = 0.5 - (0.25 * Math.log((1 + sin) / (1 - sin))) / Math.PI;\n return y < 0 ? 0 : y > 1 ? 1 : y;\n}\nfunction aggregateFlows(flows, flowAccessors) {\n // Sum up flows with same origin, dest\n const byOriginDest = Object(d3_collection__WEBPACK_IMPORTED_MODULE_2__[\"nest\"])()\n .key(flowAccessors.getFlowOriginId)\n .key(flowAccessors.getFlowDestId)\n .rollup((ff) => {\n const origin = flowAccessors.getFlowOriginId(ff[0]);\n const dest = flowAccessors.getFlowDestId(ff[0]);\n // const color = ff[0].color;\n const rv = {\n aggregate: true,\n origin,\n dest,\n count: ff.reduce((m, f) => {\n const count = flowAccessors.getFlowMagnitude(f);\n if (count) {\n if (!isNaN(count) && isFinite(count))\n return m + count;\n }\n return m;\n }, 0),\n // time: undefined,\n };\n // if (color) rv.color = color;\n return rv;\n })\n .entries(flows);\n const rv = [];\n for (const { values } of byOriginDest) {\n for (const { value } of values) {\n rv.push(value);\n }\n }\n return rv;\n}\n/**\n * This is used to augment hover picking info so that we can displace location tooltip\n * @param circleAttributes\n * @param index\n */\nfunction getOuterCircleRadiusByIndex(circleAttributes, index) {\n const { getInRadius, getOutRadius } = circleAttributes.attributes;\n return Math.max(getInRadius.value[index], getOutRadius.value[index]);\n}\nfunction getLocationCoordsByIndex(circleAttributes, index) {\n const { getPosition } = circleAttributes.attributes;\n return [getPosition.value[index * 2], getPosition.value[index * 2 + 1]];\n}\nfunction getFlowLineAttributesByIndex(lineAttributes, index) {\n const { getColor, getEndpointOffsets, getSourcePosition, getTargetPosition, getThickness, getStaggering, } = lineAttributes.attributes;\n return {\n length: 1,\n attributes: Object.assign({ getColor: {\n value: getColor.value.subarray(index * 4, (index + 1) * 4),\n size: 4,\n }, getEndpointOffsets: {\n value: getEndpointOffsets.value.subarray(index * 2, (index + 1) * 2),\n size: 2,\n }, getSourcePosition: {\n value: getSourcePosition.value.subarray(index * 2, (index + 1) * 2),\n size: 2,\n }, getTargetPosition: {\n value: getTargetPosition.value.subarray(index * 2, (index + 1) * 2),\n size: 2,\n }, getThickness: {\n value: getThickness.value.subarray(index, index + 1),\n size: 1,\n } }, (getStaggering\n ? {\n getStaggering: {\n value: getStaggering.value.subarray(index, index + 1),\n size: 1,\n },\n }\n : undefined)),\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd21hcFNlbGVjdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9GbG93bWFwU2VsZWN0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzdELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQ0wsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixjQUFjLEdBRWYsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsVUFBVSxFQUVWLHdCQUF3QixFQUN4Qix3QkFBd0IsR0FDekIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLFNBQVMsRUFBRSxFQUdoQixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8seUJBQXlCLE1BQU0sNkJBQTZCLENBQUM7QUFFcEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIseUJBQXlCLEdBRTFCLE1BQU0sUUFBUSxDQUFDO0FBQ2hCLE9BQU8sRUFVTCxTQUFTLEVBQ1QscUJBQXFCLEVBRXJCLGtCQUFrQixHQUVuQixNQUFNLFNBQVMsQ0FBQztBQUVqQixNQUFNLHNCQUFzQixHQUFH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Q0QsWUFBWSxFQUFFO2dCQUNaLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxFQUFFLENBQUM7YUFDUixJQUNFLENBQUMsYUFBYTtZQUNmLENBQUMsQ0FBQztnQkFDRSxhQUFhLEVBQUU7b0JBQ2IsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUNyRCxJQUFJLEVBQUUsQ0FBQztpQkFDUjthQUNGO1lBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUNmO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjIgRmxvd21hcEJsdWVcbiAqIENvcHlyaWdodCAyMDE4LTIwMjAgVGVyYWx5dGljcywgbW9kaWZpZWQgYnkgRmxvd21hcEJsdWVcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHtXZWJNZXJjYXRvclZpZXdwb3J0fSBmcm9tICdAbWF0aC5nbC93ZWItbWVyY2F0b3InO1xuaW1wb3J0IHthc2NlbmRpbmcsIGRlc2NlbmRpbmcsIGV4dGVudCwgbWlufSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQge25lc3R9IGZyb20gJ2QzLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHtTY2FsZUxpbmVhciwgc2NhbGVMaW5lYXIsIHNjYWxlU3FydH0gZnJvbSAnZDMtc2NhbGUnO1xuaW1wb3J0IEtEQnVzaCBmcm9tICdrZGJ1c2gnO1xuaW1wb3J0IHtcbiAgY3JlYXRlU2VsZWN0b3IsXG4gIGNyZWF0ZVNlbGVjdG9yQ3JlYXRvcixcbiAgZGVmYXVsdE1lbW9pemUsXG4gIFBhcmFtZXRyaWNTZWxlY3Rvcixcbn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IHthbGVhfSBmcm9tICdzZWVkcmFuZG9tJztcbmltcG9ydCB7Y2x1c3RlckxvY2F0aW9uc30gZnJvbSAnLi9jbHVzdGVyL2NsdXN0ZXInO1xuaW1wb3J0IHtcbiAgYnVpbGRJbmRleCxcbiAgQ2x1c3RlckluZGV4LFxuICBmaW5kQXBwcm9wcmlhdGVab29tTGV2ZWwsXG4gIG1ha2VMb2NhdGlvbldlaWdodEdldHRlcixcbn0gZnJvbSAnLi9jbHVzdGVyL0NsdXN0ZXJJbmRleCc7XG5pbXBvcnQgZ2V0Q29sb3JzLCB7XG4gIENvbG9yc1JHQkEsXG4gIERpZmZDb2xvcnNSR0JBLFxuICBnZXRDb2xvcnNSR0JBLFxuICBnZXREaWZmQ29sb3JzUkdCQSxcbiAgZ2V0Rmxvd0NvbG9yU2NhbGUsXG4gIGlzRGlmZkNvbG9ycyxcbiAgaXNEaWZmQ29sb3JzUkdCQSxcbn0gZnJvbSAnLi9jb2xvcnMnO1xuaW1wb3J0IEZsb3dtYXBBZ2dyZWdhdGVBY2Nlc3NvcnMgZnJvbSAnLi9GbG93bWFwQWdncmVnYXRlQWNjZXNzb3JzJztcbmltcG9ydCB7Rmxvd21hcFN0YXRlfSBmcm9tICcuL0Zsb3dtYXBTdGF0ZSc7XG5pbXBvcnQge1xuICBnZXRUaW1lR3JhbnVsYXJpdHlCeUtleSxcbiAgZ2V0VGltZUdyYW51bGFyaXR5QnlPcmRlcixcbiAgZ2V0VGltZUdyYW51bGFyaXR5Rm9yRGF0ZSxcbiAgVGltZUdyYW51bGFyaXR5S2V5LFxufSBmcm9tICcuL3RpbWUnO1xuaW1wb3J0IHtcbiAgQWdncmVnYXRlRmxvdyxcbiAgQ2x1c3RlcixcbiAgQ2x1c3Rlck5vZGUsXG4gIENvdW50QnlUaW1lLFxuICBGbG93QWNjZXNzb3JzLFxuICBGbG93Q2lyY2xlc0xheWVyQXR0cmlidXRlcyxcbiAgRmxvd0xpbmVzTGF5ZXJBdHRyaWJ1dGVzLFxuICBGbG93bWFwRGF0YSxcbiAgRmxvd21hcERhdGFBY2Nlc3NvcnMsXG4gIGlzQ2x1c3RlcixcbiAgaXNMb2NhdGlvbkNsdXN0ZXJOb2RlLFxuICBMYXllcnNEYXRhLFxuICBMb2NhdGlvbkZpbHRlck1vZGUsXG4gIExvY2F0aW9uVG90YWxzLFxufSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgTUFYX0NMVVNURVJfWk9PTV9MRVZFTCA9IDIwO1xudHlwZSBLREJ1c2hUcmVlID0gYW55O1xuXG5leHBvcnQgdHlwZSBTZWxlY3RvcjxMLCBGLCBUPiA9IFBhcmFtZXRyaWNTZWxlY3RvcjxcbiAgRmxvd21hcFN0YXRlLFxuICBGbG93bWFwRGF0YTxMLCBGPixcbiAgVFxuPjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmxvd21hcFNlbGVjdG9yczxMLCBGPiB7XG4gIGFjY2Vzc29yczogRmxvd21hcEFnZ3JlZ2F0ZUFjY2Vzc29yczxMLCBGPjtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcnM6IEZsb3dtYXBEYXRhQWNjZXNzb3JzPEwsIEY+KSB7XG4gICAgdGhpcy5hY2Nlc3NvcnMgPSBuZXcgRmxvd21hcEFnZ3JlZ2F0ZUFjY2Vzc29ycyhhY2Nlc3NvcnMpO1xuICAgIHRoaXMuc2V0QWNjZXNzb3JzKGFjY2Vzc29ycyk7XG4gIH1cblxuICBzZXRBY2Nlc3NvcnMoYWNjZXNzb3JzOiBGbG93bWFwRGF0YUFjY2Vzc29yczxMLCBGPikge1xuICAgIHRoaXMuYWNjZXNzb3JzID0gbmV3IEZsb3dtYXBBZ2dyZWdhdGVBY2Nlc3NvcnMoYWNjZXNzb3JzKTtcbiAgfVxuXG4gIGdldEZldGNoZWRGbG93cyA9IChzdGF0ZTogRmxvd21hcFN0YXRlLCBwcm9wczogRmxvd21hcERhdGE8TCwgRj4pID0+XG4gICAgcHJvcHMuZmxvd3M7XG4gIGdldEZldGNoZWRMb2NhdGlvbnMgPSAoc3RhdGU6IEZsb3dtYXBTdGF0ZSwgcHJvcHM6IEZsb3dtYXBEYXRhPEwsIEY+KSA9PlxuICAgIHByb3BzLmxvY2F0aW9ucztcbiAgZ2V0TWF4VG9wRmxvd3NEaXNwbGF5TnVtID0gKHN0YXRlOiBGbG93bWFwU3RhdGUsIHByb3BzOiBGbG93bWFwRGF0YTxMLCBGPikgPT5cbiAgICBzdGF0ZS5zZXR0aW5nc1N0YXRlLm1heFRvcEZsb3dzRGlzcGxheU51bTtcbiAgZ2V0U2VsZWN0ZWRMb2NhdGlvbnMgPSAoc3RhdGU6IEZsb3dtYXBTdGF0ZSwgcHJvcHM6IEZsb3dtYXBEYXRhPEwsIEY+KSA9PlxuICAgIHN0YXRlLmZpbHRlclN0YXRlLnNlbGVjdGVkTG9jYXRpb25zO1xuICBnZXRMb2NhdGlvbkZpbHRlck1vZGUgPSAoc3RhdGU6IEZsb3dtYXBTdGF0ZSwgcHJvcHM6IEZsb3dtYXBEYXRhPEwsIEY+KSA9PlxuICAgIHN0YXRlLmZpbHRlclN0YXRlLmxvY2F0aW9uRmlsdGVyTW9kZTtcbiAgZ2V0Q2x1c3RlcmluZ0VuYWJsZWQgPSAoc3RhdGU6IEZsb3dtYXBTdGF0ZSwgcHJvcHM6IEZsb3dtYXBEYXRhPEwsIEY+KSA9PlxuICAgIHN0YXRlLnNldHRpbmdzU3RhdGUuY2x1c3RlcmluZ0VuYWJsZWQ7XG4gIGdldExvY2F0aW9uVG90YWxzRW5hYmxlZCA9IChzdGF0ZTogRmxvd21hcFN0YXRlLCBwcm9wczogRmxvd21hcERhdGE8TCwgRj4pID0+XG4gICAgc3RhdGUuc2V0dGluZ3NTdGF0ZS5sb2NhdGlvblRvdGFsc0VuYWJsZWQ7XG4gIGdldFpvb20gPSAoc3RhdGU6IEZsb3dtYXBTdGF0ZSwgcHJvcHM6IEZsb3dtYXBEYXRhPEwsIEY+KSA9PlxuICAgIHN0YXRlLnZpZXdwb3J0Lnpvb207XG4gIGdldFZpZXdwb3J0ID0gKHN0YXRlOiBGbG93bWFwU3RhdGUsIHByb3BzOiBGbG93bWFwRGF0YTxMLCBGPikgPT5cbiAgICBzdGF0ZS52aWV3cG9ydDtcbiAgZ2V0U2VsZWN0ZWRUaW1lUmFuZ2UgPSAoc3RhdGU6IEZsb3dtYXBTdGF0ZSwgcHJvcHM6IEZsb3dtYXBEYXRhPEwsIEY+KSA9PlxuICAgIHN0YXRlLmZpbHRlclN0YXRlLnNlbGVjdGVkVGltZVJhbmdlO1xuXG4gIGdldENvbG9yU2NoZW1lOiBTZWxlY3RvcjxMLCBGLCBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD4gPSAoXG4gICAgc3RhdGU6IEZsb3dtYXBTdGF0ZSxcbiAgICBwcm9wczogRmxvd21hcERhdGE8TCwgRj4sXG4gICkgPT4gc3RhdGUuc2V0dGluZ3NTdGF0ZS5jb2xvclNjaGVtZTtcblxuICBnZXREYXJrTW9kZTogU2VsZWN0b3I8TCwgRiwgYm9vbGVhbj4gPSAoXG4gICAgc3RhdGU6IEZsb3dtYXBTdGF0ZSxcbiAgICBwcm9wczogRmxvd21hcERhdGE8TCwgRj4sXG4gICkgPT4gc3RhdGUuc2V0dGluZ3NTdGF0ZS5kYXJrTW9kZTtcblxuICBnZXRGYWRlRW5hYmxlZDogU2VsZWN0b3I8TCwgRiwgYm9vbGVhbj4gPSAoXG4gICAgc3RhdGU6IEZsb3dtYXBTdGF0ZSxcbiAgICBwcm9wczogRmxvd21hcERhdGE8TCwgRj4sXG4gICkgPT4gc3RhdGUuc2V0dGluZ3NTdGF0ZS5mYWRlRW5hYmxlZDtcblxuICBnZXRGYWRlT3BhY2l0eUVuYWJsZWQ6IFNlbGVjdG9yPEwsIEYsIGJvb2xlYW4+ID0gKFxuICAgIHN0YXRlOiBGbG93bWFwU3RhdGUsXG4gICAgcHJvcHM6IEZsb3dtYXBEYXRhPEwsIEY+LFxuICApID0+IHN0YXRlLnNldHRpbmdzU3RhdGUuZmFkZU9wYWNpdHlFbmFibGVkO1xuXG4gIGdldEZhZGVBbW91bnQ6IFNlbGVjdG9yPEwsIEYsIG51bWJlcj4gPSAoXG4gICAgc3RhdGU6IEZsb3dtYXBTdGF0ZSxcbiAgICBwcm9wczogRmxvd21hcERhdGE8TCwgRj4sXG4gICkgPT4gc3RhdGUuc2V0dGluZ3NTdGF0ZS5mYWRlQW1vdW50O1xuXG4gIGdldEFuaW1hdGU6IFNlbGVjdG9yPEwsIEYsIGJvb2xlYW4+ID0gKFxuICAgIHN0YXRlOiBGbG93bWFwU3RhdGUsXG4gICAgcHJvcHM6IEZsb3dtYXBEYXRhPEwsIEY+LFxuICApID0+IHN0YXRlLnNldHRpbmdzU3RhdGUuYW5pbWF0aW9uRW5hYmxlZDtcblxuICBnZXRJbnZhbGlkTG9jYXRpb25JZHM6IFNlbGVjdG9yPEwsIEYsIHN0cmluZ1tdIHwgdW5kZWZpbmVkPiA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHRoaXMuZ2V0RmV0Y2hlZExvY2F0aW9ucyxcbiAgICAobG9jYXRpb25zKSA9PiB7XG4gICAgICBpZiAoIWxvY2F0aW9ucykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGludmFsaWQgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2YgbG9jYXRpb25zKSB7XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25JZChsb2NhdGlvbik7XG4gICAgICAgIGNvbnN0IGxvbiA9IHRoaXMuYWNjZXNzb3JzLmdldExvY2F0aW9uTG9uKGxvY2F0aW9uKTtcbiAgICAgICAgY29uc3QgbGF0ID0gdGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25MYXQobG9jYXRpb24pO1xuICAgICAgICBpZiAoISgtOTAgPD0gbGF0ICYmIGxhdCA8PSA5MCkgfHwgISgtMTgwIDw9IGxvbiAmJiBsb24gPD0gMTgwKSkge1xuICAgICAgICAgIGludmFsaWQucHVzaChpZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBpbnZhbGlkLmxlbmd0aCA+IDAgPyBpbnZhbGlkIDogdW5kZWZpbmVkO1xuICAgIH0sXG4gICk7XG5cbiAgZ2V0TG9jYXRpb25zOiBTZWxlY3RvcjxMLCBGLCBJdGVyYWJsZTxMPiB8IHVuZGVmaW5lZD4gPSBjcmVhdGVTZWxlY3RvcihcbiAgICB0aGlzLmdldEZldGNoZWRMb2NhdGlvbnMsXG4gICAgdGhpcy5nZXRJbnZhbGlkTG9jYXRpb25JZHMsXG4gICAgKGxvY2F0aW9ucywgaW52YWxpZElkcykgPT4ge1xuICAgICAgaWYgKCFsb2NhdGlvbnMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBpZiAoIWludmFsaWRJZHMgfHwgaW52YWxpZElkcy5sZW5ndGggPT09IDApIHJldHVybiBsb2NhdGlvbnM7XG4gICAgICBjb25zdCBpbnZhbGlkID0gbmV3IFNldChpbnZhbGlkSWRzKTtcbiAgICAgIGNvbnN0IGZpbHRlcmVkOiBMW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2YgbG9jYXRpb25zKSB7XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25JZChsb2NhdGlvbik7XG4gICAgICAgIGlmICghaW52YWxpZC5oYXMoaWQpKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaChsb2NhdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICB9LFxuICApO1xuXG4gIGdldExvY2F0aW9uSWRzOiBTZWxlY3RvcjxMLCBGLCBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZD4gPSBjcmVhdGVTZWxlY3RvcihcbiAgICB0aGlzLmdldExvY2F0aW9ucyxcbiAgICAobG9jYXRpb25zKSA9PiB7XG4gICAgICBpZiAoIWxvY2F0aW9ucykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGlkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgZm9yIChjb25zdCBpZCBvZiBsb2NhdGlvbnMpIHtcbiAgICAgICAgaWRzLmFkZCh0aGlzLmFjY2Vzc29ycy5nZXRMb2NhdGlvbklkKGlkKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaWRzO1xuICAgIH0sXG4gICk7XG5cbiAgZ2V0U2VsZWN0ZWRMb2NhdGlvbnNTZXQ6IFNlbGVjdG9yPEwsIEYsIFNldDxzdHJpbmc+IHwgdW5kZWZpbmVkPiA9XG4gICAgY3JlYXRlU2VsZWN0b3IodGhpcy5nZXRTZWxlY3RlZExvY2F0aW9ucywgKGlkcykgPT5cbiAgICAgIGlkcyAmJiBpZHMubGVuZ3RoID4gMCA/IG5ldyBTZXQoaWRzKSA6IHVuZGVmaW5lZCxcbiAgICApO1xuXG4gIGdldFNvcnRlZEZsb3dzRm9yS25vd25Mb2NhdGlvbnM6IFNlbGVjdG9yPEwsIEYsIEZbXSB8IHVuZGVmaW5lZD4gPVxuICAgIGNyZWF0ZVNlbGVjdG9yKHRoaXMuZ2V0RmV0Y2hlZEZsb3dzLCB0aGlzLmdldExvY2F0aW9uSWRzLCAoZmxvd3MsIGlkcykgPT4ge1xuICAgICAgaWYgKCFpZHMgfHwgIWZsb3dzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgZmlsdGVyZWQgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZmxvdyBvZiBmbG93cykge1xuICAgICAgICBjb25zdCBzcmNJZCA9IHRoaXMuYWNjZXNzb3JzLmdldEZsb3dPcmlnaW5JZChmbG93KTtcbiAgICAgICAgY29uc3QgZHN0SWQgPSB0aGlzLmFjY2Vzc29ycy5nZXRGbG93RGVzdElkKGZsb3cpO1xuICAgICAgICBpZiAoaWRzLmhhcyhzcmNJZCkgJiYgaWRzLmhhcyhkc3RJZCkpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKGZsb3cpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmlsdGVyZWQuc29ydCgoYTogRiwgYjogRikgPT5cbiAgICAgICAgZGVzY2VuZGluZyhcbiAgICAgICAgICBNYXRoLmFicyh0aGlzLmFjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGEpKSxcbiAgICAgICAgICBNYXRoLmFicyh0aGlzLmFjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGIpKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgZ2V0QWN0dWFsVGltZUV4dGVudDogU2VsZWN0b3I8TCwgRiwgW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkPiA9XG4gICAgY3JlYXRlU2VsZWN0b3IodGhpcy5nZXRTb3J0ZWRGbG93c0Zvcktub3duTG9jYXRpb25zLCAoZmxvd3MpID0+IHtcbiAgICAgIGlmICghZmxvd3MpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBsZXQgc3RhcnQgPSBudWxsO1xuICAgICAgbGV0IGVuZCA9IG51bGw7XG4gICAgICBmb3IgKGNvbnN0IGZsb3cgb2YgZmxvd3MpIHtcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMuYWNjZXNzb3JzLmdldEZsb3dUaW1lKGZsb3cpO1xuICAgICAgICBpZiAodGltZSkge1xuICAgICAgICAgIGlmIChzdGFydCA9PSBudWxsIHx8IHN0YXJ0ID4gdGltZSkgc3RhcnQgPSB0aW1lO1xuICAgICAgICAgIGlmIChlbmQgPT0gbnVsbCB8fCBlbmQgPCB0aW1lKSBlbmQgPSB0aW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gW3N0YXJ0LCBlbmRdO1xuICAgIH0pO1xuXG4gIGdldFRpbWVHcmFudWxhcml0eUtleTogU2VsZWN0b3I8TCwgRiwgVGltZUdyYW51bGFyaXR5S2V5IHwgdW5kZWZpbmVkPiA9XG4gICAgY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmdldFNvcnRlZEZsb3dzRm9yS25vd25Mb2NhdGlvbnMsXG4gICAgICB0aGlzLmdldEFjdHVhbFRpbWVFeHRlbnQsXG4gICAgICAoZmxvd3MsIHRpbWVFeHRlbnQpID0+IHtcbiAgICAgICAgaWYgKCFmbG93cyB8fCAhdGltZUV4dGVudCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBtaW5PcmRlciA9IG1pbihmbG93cywgKGQpID0+IHtcbiAgICAgICAgICBjb25zdCB0ID0gdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd1RpbWUoZCk7XG4gICAgICAgICAgcmV0dXJuIHQgPyBnZXRUaW1lR3JhbnVsYXJpdHlGb3JEYXRlKHQpLm9yZGVyIDogbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChtaW5PcmRlciA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB0aW1lR3JhbnVsYXJpdHkgPSBnZXRUaW1lR3JhbnVsYXJpdHlCeU9yZGVyKG1pbk9yZGVyKTtcbiAgICAgICAgcmV0dXJuIHRpbWVHcmFudWxhcml0eSA/IHRpbWVHcmFudWxhcml0eS5rZXkgOiB1bmRlZmluZWQ7XG4gICAgICB9LFxuICAgICk7XG5cbiAgZ2V0VGltZUV4dGVudDogU2VsZWN0b3I8TCwgRiwgW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkPiA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHRoaXMuZ2V0QWN0dWFsVGltZUV4dGVudCxcbiAgICB0aGlzLmdldFRpbWVHcmFudWxhcml0eUtleSxcbiAgICAodGltZUV4dGVudCwgdGltZUdyYW51bGFyaXR5S2V5KSA9PiB7XG4gICAgICBjb25zdCB0aW1lR3JhbnVsYXJpdHkgPSB0aW1lR3JhbnVsYXJpdHlLZXlcbiAgICAgICAgPyBnZXRUaW1lR3JhbnVsYXJpdHlCeUtleSh0aW1lR3JhbnVsYXJpdHlLZXkpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKCF0aW1lRXh0ZW50IHx8ICF0aW1lR3JhbnVsYXJpdHk/LmludGVydmFsKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgY29uc3Qge2ludGVydmFsfSA9IHRpbWVHcmFudWxhcml0eTtcbiAgICAgIHJldHVybiBbdGltZUV4dGVudFswXSwgaW50ZXJ2YWwub2Zmc2V0KGludGVydmFsLmZsb29yKHRpbWVFeHRlbnRbMV0pLCAxKV07XG4gICAgfSxcbiAgKTtcblxuICBnZXRTb3J0ZWRGbG93c0Zvcktub3duTG9jYXRpb25zRmlsdGVyZWRCeVRpbWU6IFNlbGVjdG9yPFxuICAgIEwsXG4gICAgRixcbiAgICBGW10gfCB1bmRlZmluZWRcbiAgPiA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHRoaXMuZ2V0U29ydGVkRmxvd3NGb3JLbm93bkxvY2F0aW9ucyxcbiAgICB0aGlzLmdldFRpbWVFeHRlbnQsXG4gICAgdGhpcy5nZXRTZWxlY3RlZFRpbWVSYW5nZSxcbiAgICAoZmxvd3MsIHRpbWVFeHRlbnQsIHRpbWVSYW5nZSkgPT4ge1xuICAgICAgaWYgKCFmbG93cykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGlmIChcbiAgICAgICAgIXRpbWVFeHRlbnQgfHxcbiAgICAgICAgIXRpbWVSYW5nZSB8fFxuICAgICAgICAodGltZUV4dGVudFswXSA9PT0gdGltZVJhbmdlWzBdICYmIHRpbWVFeHRlbnRbMV0gPT09IHRpbWVSYW5nZVsxXSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmxvd3M7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmxvd3MuZmlsdGVyKChmbG93KSA9PiB7XG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLmFjY2Vzc29ycy5nZXRGbG93VGltZShmbG93KTtcbiAgICAgICAgcmV0dXJuIHRpbWUgJiYgdGltZVJhbmdlWzBdIDw9IHRpbWUgJiYgdGltZSA8IHRpbWVSYW5nZVsxXTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICk7XG5cbiAgZ2V0TG9jYXRpb25zSGF2aW5nRmxvd3M6IFNlbGVjdG9yPEwsIEYsIEl0ZXJhYmxlPEw+IHwgdW5kZWZpbmVkPiA9XG4gICAgY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmdldFNvcnRlZEZsb3dzRm9yS25vd25Mb2NhdGlvbnMsXG4gICAgICB0aGlzLmdldExvY2F0aW9ucyxcbiAgICAgIChmbG93cywgbG9jYXRpb25zKSA9PiB7XG4gICAgICAgIGlmICghbG9jYXRpb25zIHx8ICFmbG93cykgcmV0dXJuIGxvY2F0aW9ucztcbiAgICAgICAgY29uc3Qgd2l0aEZsb3dzID0gbmV3IFNldCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZsb3cgb2YgZmxvd3MpIHtcbiAgICAgICAgICB3aXRoRmxvd3MuYWRkKHRoaXMuYWNjZXNzb3JzLmdldEZsb3dPcmlnaW5JZChmbG93KSk7XG4gICAgICAgICAgd2l0aEZsb3dzLmFkZCh0aGlzLmFjY2Vzc29ycy5nZXRGbG93RGVzdElkKGZsb3cpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGxvY2F0aW9uIG9mIGxvY2F0aW9ucykge1xuICAgICAgICAgIGlmICh3aXRoRmxvd3MuaGFzKHRoaXMuYWNjZXNzb3JzLmdldExvY2F0aW9uSWQobG9jYXRpb24pKSkge1xuICAgICAgICAgICAgZmlsdGVyZWQucHVzaChsb2NhdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH0sXG4gICAgKTtcblxuICBnZXRMb2NhdGlvbnNCeUlkOiBTZWxlY3RvcjxMLCBGLCBNYXA8c3RyaW5nLCBMPiB8IHVuZGVmaW5lZD4gPSBjcmVhdGVTZWxlY3RvcihcbiAgICB0aGlzLmdldExvY2F0aW9uc0hhdmluZ0Zsb3dzLFxuICAgIChsb2NhdGlvbnMpID0+IHtcbiAgICAgIGlmICghbG9jYXRpb25zKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgbG9jYXRpb25zQnlJZCA9IG5ldyBNYXA8c3RyaW5nLCBMPigpO1xuICAgICAgZm9yIChjb25zdCBsb2NhdGlvbiBvZiBsb2NhdGlvbnMpIHtcbiAgICAgICAgbG9jYXRpb25zQnlJZC5zZXQodGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25JZChsb2NhdGlvbiksIGxvY2F0aW9uKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsb2NhdGlvbnNCeUlkO1xuICAgIH0sXG4gICk7XG5cbiAgZ2V0Q2x1c3RlckluZGV4OiBTZWxlY3RvcjxMLCBGLCBDbHVzdGVySW5kZXg8Rj4gfCB1bmRlZmluZWQ+ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgdGhpcy5nZXRMb2NhdGlvbnNIYXZpbmdGbG93cyxcbiAgICB0aGlzLmdldExvY2F0aW9uc0J5SWQsXG4gICAgdGhpcy5nZXRTb3J0ZWRGbG93c0Zvcktub3duTG9jYXRpb25zLFxuICAgIChsb2NhdGlvbnMsIGxvY2F0aW9uc0J5SWQsIGZsb3dzKSA9PiB7XG4gICAgICBpZiAoIWxvY2F0aW9ucyB8fCAhbG9jYXRpb25zQnlJZCB8fCAhZmxvd3MpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0IGdldExvY2F0aW9uV2VpZ2h0ID0gbWFrZUxvY2F0aW9uV2VpZ2h0R2V0dGVyKFxuICAgICAgICBmbG93cyxcbiAgICAgICAgdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd21hcERhdGFBY2Nlc3NvcnMoKSxcbiAgICAgICk7XG4gICAgICBjb25zdCBjbHVzdGVyTGV2ZWxzID0gY2x1c3RlckxvY2F0aW9ucyhcbiAgICAgICAgbG9jYXRpb25zLFxuICAgICAgICB0aGlzLmFjY2Vzc29ycy5nZXRGbG93bWFwRGF0YUFjY2Vzc29ycygpLFxuICAgICAgICBnZXRMb2NhdGlvbldlaWdodCxcbiAgICAgICAge1xuICAgICAgICAgIG1heFpvb206IE1BWF9DTFVTVEVSX1pPT01fTEVWRUwsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgY29uc3QgY2x1c3RlckluZGV4ID0gYnVpbGRJbmRleDxGPihjbHVzdGVyTGV2ZWxzKTtcbiAgICAgIGNvbnN0IHtnZXRMb2NhdGlvbk5hbWUsIGdldExvY2F0aW9uQ2x1c3Rlck5hbWV9ID1cbiAgICAgICAgdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd21hcERhdGFBY2Nlc3NvcnMoKTtcblxuICAgICAgLy8gQWRkaW5nIG1lYW5pbmdmdWwgbmFtZXNcbiAgICAgIGNvbnN0IGdldE5hbWUgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBsb2MgPSBsb2NhdGlvbnNCeUlkLmdldChpZCk7XG4gICAgICAgIGlmIChsb2MpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0TG9jYXRpb25OYW1lXG4gICAgICAgICAgICA/IGdldExvY2F0aW9uTmFtZShsb2MpXG4gICAgICAgICAgICA6IHRoaXMuYWNjZXNzb3JzLmdldExvY2F0aW9uSWQobG9jKSB8fCBpZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYFwiJHtpZH1cImA7XG4gICAgICB9O1xuICAgICAgZm9yIChjb25zdCBsZXZlbCBvZiBjbHVzdGVyTGV2ZWxzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBsZXZlbC5ub2Rlcykge1xuICAgICAgICAgIC8vIEhlcmUgbXV0YXRpbmcgdGhlIG5vZGVzIChhZGRpbmcgbmFtZXMpXG4gICAgICAgICAgaWYgKGlzQ2x1c3Rlcihub2RlKSkge1xuICAgICAgICAgICAgY29uc3QgbGVhdmVzID0gY2x1c3RlckluZGV4LmV4cGFuZENsdXN0ZXIobm9kZSk7XG5cbiAgICAgICAgICAgIGxlYXZlcy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICBkZXNjZW5kaW5nKGdldExvY2F0aW9uV2VpZ2h0KGEpLCBnZXRMb2NhdGlvbldlaWdodChiKSksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoZ2V0TG9jYXRpb25DbHVzdGVyTmFtZSkge1xuICAgICAgICAgICAgICBub2RlLm5hbWUgPSBnZXRMb2NhdGlvbkNsdXN0ZXJOYW1lKGxlYXZlcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCB0b3BJZCA9IGxlYXZlc1swXTtcbiAgICAgICAgICAgICAgY29uc3Qgb3RoZXJJZCA9IGxlYXZlcy5sZW5ndGggPT09IDIgPyBsZWF2ZXNbMV0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIG5vZGUubmFtZSA9IGBcIiR7Z2V0TmFtZSh0b3BJZCl9XCIgYW5kICR7XG4gICAgICAgICAgICAgICAgb3RoZXJJZFxuICAgICAgICAgICAgICAgICAgPyBgXCIke2dldE5hbWUob3RoZXJJZCl9XCJgXG4gICAgICAgICAgICAgICAgICA6IGAke2xlYXZlcy5sZW5ndGggLSAxfSBvdGhlcnNgXG4gICAgICAgICAgICAgIH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAobm9kZSBhcyBhbnkpLm5hbWUgPSBnZXROYW1lKG5vZGUuaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2x1c3RlckluZGV4O1xuICAgIH0sXG4gICk7XG5cbiAgZ2V0QXZhaWxhYmxlQ2x1c3Rlclpvb21MZXZlbHMgPSBjcmVhdGVTZWxlY3RvcihcbiAgICB0aGlzLmdldENsdXN0ZXJJbmRleCxcbiAgICB0aGlzLmdldFNlbGVjdGVkTG9jYXRpb25zLFxuICAgIChjbHVzdGVySW5kZXgsIHNlbGVjdGVkTG9jYXRpb25zKTogbnVtYmVyW10gfCB1bmRlZmluZWQgPT4ge1xuICAgICAgaWYgKCFjbHVzdGVySW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgbGV0IG1heFpvb20gPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgICBsZXQgbWluWm9vbSA9IE51bWJlci5ORUdBVElWRV9JTkZJTklUWTtcblxuICAgICAgY29uc3QgYWRqdXN0ID0gKHpvbmVJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsdXN0ZXIgPSBjbHVzdGVySW5kZXguZ2V0Q2x1c3RlckJ5SWQoem9uZUlkKTtcbiAgICAgICAgaWYgKGNsdXN0ZXIpIHtcbiAgICAgICAgICBtaW5ab29tID0gTWF0aC5tYXgobWluWm9vbSwgY2x1c3Rlci56b29tKTtcbiAgICAgICAgICBtYXhab29tID0gTWF0aC5taW4obWF4Wm9vbSwgY2x1c3Rlci56b29tKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB6b29tID0gY2x1c3RlckluZGV4LmdldE1pblpvb21Gb3JMb2NhdGlvbih6b25lSWQpO1xuICAgICAgICAgIG1pblpvb20gPSBNYXRoLm1heChtaW5ab29tLCB6b29tKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgaWYgKHNlbGVjdGVkTG9jYXRpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3QgaWQgb2Ygc2VsZWN0ZWRMb2NhdGlvbnMpIHtcbiAgICAgICAgICBhZGp1c3QoaWQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbHVzdGVySW5kZXguYXZhaWxhYmxlWm9vbUxldmVscy5maWx0ZXIoXG4gICAgICAgIChsZXZlbCkgPT4gbWluWm9vbSA8PSBsZXZlbCAmJiBsZXZlbCA8PSBtYXhab29tLFxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIF9nZXRDbHVzdGVyWm9vbTogU2VsZWN0b3I8TCwgRiwgbnVtYmVyIHwgdW5kZWZpbmVkPiA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHRoaXMuZ2V0Q2x1c3RlckluZGV4LFxuICAgIHRoaXMuZ2V0Wm9vbSxcbiAgICB0aGlzLmdldEF2YWlsYWJsZUNsdXN0ZXJab29tTGV2ZWxzLFxuICAgIChjbHVzdGVySW5kZXgsIG1hcFpvb20sIGF2YWlsYWJsZUNsdXN0ZXJab29tTGV2ZWxzKSA9PiB7XG4gICAgICBpZiAoIWNsdXN0ZXJJbmRleCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGlmICghYXZhaWxhYmxlQ2x1c3Rlclpvb21MZXZlbHMpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2x1c3Rlclpvb20gPSBmaW5kQXBwcm9wcmlhdGVab29tTGV2ZWwoXG4gICAgICAgIGF2YWlsYWJsZUNsdXN0ZXJab29tTGV2ZWxzLFxuICAgICAgICBtYXBab29tLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBjbHVzdGVyWm9vbTtcbiAgICB9LFxuICApO1xuXG4gIGdldENsdXN0ZXJab29tID0gKHN0YXRlOiBGbG93bWFwU3RhdGUsIHByb3BzOiBGbG93bWFwRGF0YTxMLCBGPikgPT4ge1xuICAgIGNvbnN0IHtzZXR0aW5nc1N0YXRlfSA9IHN0YXRlO1xuICAgIGlmICghc2V0dGluZ3NTdGF0ZS5jbHVzdGVyaW5nRW5hYmxlZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoc2V0dGluZ3NTdGF0ZS5jbHVzdGVyaW5nQXV0byB8fCBzZXR0aW5nc1N0YXRlLmNsdXN0ZXJpbmdMZXZlbCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0Q2x1c3Rlclpvb20oc3RhdGUsIHByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIHNldHRpbmdzU3RhdGUuY2x1c3RlcmluZ0xldmVsO1xuICB9O1xuXG4gIGdldExvY2F0aW9uc0ZvclNlYXJjaEJveDogU2VsZWN0b3I8TCwgRiwgKEwgfCBDbHVzdGVyKVtdIHwgdW5kZWZpbmVkPiA9XG4gICAgY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmdldENsdXN0ZXJpbmdFbmFibGVkLFxuICAgICAgdGhpcy5nZXRMb2NhdGlvbnNIYXZpbmdGbG93cyxcbiAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRMb2NhdGlvbnMsXG4gICAgICB0aGlzLmdldENsdXN0ZXJab29tLFxuICAgICAgdGhpcy5nZXRDbHVzdGVySW5kZXgsXG4gICAgICAoXG4gICAgICAgIGNsdXN0ZXJpbmdFbmFibGVkLFxuICAgICAgICBsb2NhdGlvbnMsXG4gICAgICAgIHNlbGVjdGVkTG9jYXRpb25zLFxuICAgICAgICBjbHVzdGVyWm9vbSxcbiAgICAgICAgY2x1c3RlckluZGV4LFxuICAgICAgKSA9PiB7XG4gICAgICAgIGlmICghbG9jYXRpb25zKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBsZXQgcmVzdWx0OiAoTCB8IENsdXN0ZXIpW10gPSBBcnJheS5mcm9tKGxvY2F0aW9ucyk7XG4gICAgICAgIC8vIGlmIChjbHVzdGVyaW5nRW5hYmxlZCkge1xuICAgICAgICAvLyAgIGlmIChjbHVzdGVySW5kZXgpIHtcbiAgICAgICAgLy8gICAgIGNvbnN0IHpvb21JdGVtcyA9IGNsdXN0ZXJJbmRleC5nZXRDbHVzdGVyTm9kZXNGb3IoY2x1c3Rlclpvb20pO1xuICAgICAgICAvLyAgICAgaWYgKHpvb21JdGVtcykge1xuICAgICAgICAvLyAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHpvb21JdGVtcy5maWx0ZXIoaXNDbHVzdGVyKSk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyB9XG5cbiAgICAgICAgaWYgKGNsdXN0ZXJJbmRleCAmJiBzZWxlY3RlZExvY2F0aW9ucykge1xuICAgICAgICAgIGNvbnN0IHRvQXBwZW5kID0gW107XG4gICAgICAgICAgZm9yIChjb25zdCBpZCBvZiBzZWxlY3RlZExvY2F0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgY2x1c3RlciA9IGNsdXN0ZXJJbmRleC5nZXRDbHVzdGVyQnlJZChpZCk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGNsdXN0ZXIgJiZcbiAgICAgICAgICAgICAgIXJlc3VsdC5maW5kKFxuICAgICAgICAgICAgICAgIChkKSA9PlxuICAgICAgICAgICAgICAgICAgKGlzTG9jYXRpb25DbHVzdGVyTm9kZShkKVxuICAgICAgICAgICAgICAgICAgICA/IGQuaWRcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmFjY2Vzc29ycy5nZXRMb2NhdGlvbklkKGQpKSA9PT0gaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0b0FwcGVuZC5wdXNoKGNsdXN0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodG9BcHBlbmQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh0b0FwcGVuZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LFxuICAgICk7XG5cbiAgZ2V0RGlmZk1vZGU6IFNlbGVjdG9yPEwsIEYsIGJvb2xlYW4+ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgdGhpcy5nZXRGZXRjaGVkRmxvd3MsXG4gICAgKGZsb3dzKSA9PiB7XG4gICAgICBpZiAoZmxvd3MpIHtcbiAgICAgICAgZm9yIChjb25zdCBmIG9mIGZsb3dzKSB7XG4gICAgICAgICAgaWYgKHRoaXMuYWNjZXNzb3JzLmdldEZsb3dNYWduaXR1ZGUoZikgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICApO1xuXG4gIF9nZXRGbG93bWFwQ29sb3JzID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgdGhpcy5nZXREaWZmTW9kZSxcbiAgICB0aGlzLmdldENvbG9yU2NoZW1lLFxuICAgIHRoaXMuZ2V0RGFya01vZGUsXG4gICAgdGhpcy5nZXRGYWRlRW5hYmxlZCxcbiAgICB0aGlzLmdldEZhZGVPcGFjaXR5RW5hYmxlZCxcbiAgICB0aGlzLmdldEZhZGVBbW91bnQsXG4gICAgdGhpcy5nZXRBbmltYXRlLFxuICAgIGdldENvbG9ycyxcbiAgKTtcblxuICBnZXRGbG93bWFwQ29sb3JzUkdCQSA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHRoaXMuX2dldEZsb3dtYXBDb2xvcnMsXG4gICAgKGZsb3dtYXBDb2xvcnMpID0+IHtcbiAgICAgIHJldHVybiBpc0RpZmZDb2xvcnMoZmxvd21hcENvbG9ycylcbiAgICAgICAgPyBnZXREaWZmQ29sb3JzUkdCQShmbG93bWFwQ29sb3JzKVxuICAgICAgICA6IGdldENvbG9yc1JHQkEoZmxvd21hcENvbG9ycyk7XG4gICAgfSxcbiAgKTtcblxuICBnZXRVbmtub3duTG9jYXRpb25zOiBTZWxlY3RvcjxMLCBGLCBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZD4gPSBjcmVhdGVTZWxlY3RvcihcbiAgICB0aGlzLmdldExvY2F0aW9uSWRzLFxuICAgIHRoaXMuZ2V0RmV0Y2hlZEZsb3dzLFxuICAgIHRoaXMuZ2V0U29ydGVkRmxvd3NGb3JLbm93bkxvY2F0aW9ucyxcbiAgICAoaWRzLCBmbG93cywgZmxvd3NGb3JLbm93bkxvY2F0aW9ucykgPT4ge1xuICAgICAgaWYgKCFpZHMgfHwgIWZsb3dzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgaWYgKFxuICAgICAgICBmbG93c0Zvcktub3duTG9jYXRpb25zXG4gICAgICAgIC8vICYmIGZsb3dzLmxlbmd0aCA9PT0gZmxvd3NGb3JLbm93bkxvY2F0aW9ucy5sZW5ndGhcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IG1pc3NpbmcgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgIGZvciAoY29uc3QgZmxvdyBvZiBmbG93cykge1xuICAgICAgICBpZiAoIWlkcy5oYXModGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd09yaWdpbklkKGZsb3cpKSlcbiAgICAgICAgICBtaXNzaW5nLmFkZCh0aGlzLmFjY2Vzc29ycy5nZXRGbG93T3JpZ2luSWQoZmxvdykpO1xuICAgICAgICBpZiAoIWlkcy5oYXModGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd0Rlc3RJZChmbG93KSkpXG4gICAgICAgICAgbWlzc2luZy5hZGQodGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd0Rlc3RJZChmbG93KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWlzc2luZztcbiAgICB9LFxuICApO1xuXG4gIGdldFNvcnRlZEFnZ3JlZ2F0ZWRGaWx0ZXJlZEZsb3dzOiBTZWxlY3RvcjxcbiAgICBMLFxuICAgIEYsXG4gICAgKEYgfCBBZ2dyZWdhdGVGbG93KVtdIHwgdW5kZWZpbmVkXG4gID4gPSBjcmVhdGVTZWxlY3RvcihcbiAgICB0aGlzLmdldENsdXN0ZXJJbmRleCxcbiAgICB0aGlzLmdldENsdXN0ZXJpbmdFbmFibGVkLFxuICAgIHRoaXMuZ2V0U29ydGVkRmxvd3NGb3JLbm93bkxvY2F0aW9uc0ZpbHRlcmVkQnlUaW1lLFxuICAgIHRoaXMuZ2V0Q2x1c3Rlclpvb20sXG4gICAgdGhpcy5nZXRUaW1lRXh0ZW50LFxuICAgIChjbHVzdGVyVHJlZSwgaXNDbHVzdGVyaW5nRW5hYmxlZCwgZmxvd3MsIGNsdXN0ZXJab29tLCB0aW1lRXh0ZW50KSA9PiB7XG4gICAgICBpZiAoIWZsb3dzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgbGV0IGFnZ3JlZ2F0ZWQ6IChGIHwgQWdncmVnYXRlRmxvdylbXTtcbiAgICAgIGlmIChpc0NsdXN0ZXJpbmdFbmFibGVkICYmIGNsdXN0ZXJUcmVlICYmIGNsdXN0ZXJab29tICE9IG51bGwpIHtcbiAgICAgICAgYWdncmVnYXRlZCA9IGNsdXN0ZXJUcmVlLmFnZ3JlZ2F0ZUZsb3dzKFxuICAgICAgICAgIC8vIFRPRE86IGFnZ3JlZ2F0ZSBhY3Jvc3MgdGltZVxuICAgICAgICAgIC8vIHRpbWVFeHRlbnQgIT0gbnVsbFxuICAgICAgICAgIC8vICAgPyBhZ2dyZWdhdGVGbG93cyhmbG93cykgLy8gY2x1c3RlclRyZWUuYWdncmVnYXRlRmxvd3Mgd29uJ3QgYWdncmVnYXRlIHVuY2x1c3RlcmVkIGFjcm9zcyB0aW1lXG4gICAgICAgICAgLy8gICA6IGZsb3dzLFxuICAgICAgICAgIGZsb3dzLFxuICAgICAgICAgIGNsdXN0ZXJab29tLFxuICAgICAgICAgIHRoaXMuYWNjZXNzb3JzLmdldEZsb3dtYXBEYXRhQWNjZXNzb3JzKCksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZ2dyZWdhdGVkID0gYWdncmVnYXRlRmxvd3MoXG4gICAgICAgICAgZmxvd3MsXG4gICAgICAgICAgdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd21hcERhdGFBY2Nlc3NvcnMoKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGFnZ3JlZ2F0ZWQuc29ydCgoYSwgYikgPT5cbiAgICAgICAgZGVzY2VuZGluZyhcbiAgICAgICAgICBNYXRoLmFicyh0aGlzLmFjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGEpKSxcbiAgICAgICAgICBNYXRoLmFicyh0aGlzLmFjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGIpKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICByZXR1cm4gYWdncmVnYXRlZDtcbiAgICB9LFxuICApO1xuXG4gIGdldEV4cGFuZGVkU2VsZWN0ZWRMb2NhdGlvbnNTZXQ6IFNlbGVjdG9yPEwsIEYsIFNldDxzdHJpbmc+IHwgdW5kZWZpbmVkPiA9XG4gICAgY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmdldENsdXN0ZXJpbmdFbmFibGVkLFxuICAgICAgdGhpcy5nZXRTZWxlY3RlZExvY2F0aW9uc1NldCxcbiAgICAgIHRoaXMuZ2V0Q2x1c3RlckluZGV4LFxuICAgICAgKGNsdXN0ZXJpbmdFbmFibGVkLCBzZWxlY3RlZExvY2F0aW9ucywgY2x1c3RlckluZGV4KSA9PiB7XG4gICAgICAgIGlmICghc2VsZWN0ZWRMb2NhdGlvbnMgfHwgIWNsdXN0ZXJJbmRleCkge1xuICAgICAgICAgIHJldHVybiBzZWxlY3RlZExvY2F0aW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGxvY2F0aW9uSWQgb2Ygc2VsZWN0ZWRMb2NhdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBjbHVzdGVyID0gY2x1c3RlckluZGV4LmdldENsdXN0ZXJCeUlkKGxvY2F0aW9uSWQpO1xuICAgICAgICAgIGlmIChjbHVzdGVyKSB7XG4gICAgICAgICAgICBjb25zdCBleHBhbmRlZCA9IGNsdXN0ZXJJbmRleC5leHBhbmRDbHVzdGVyKGNsdXN0ZXIpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBpZCBvZiBleHBhbmRlZCkge1xuICAgICAgICAgICAgICByZXN1bHQuYWRkKGlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0LmFkZChsb2NhdGlvbklkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sXG4gICAgKTtcblxuICBnZXRUb3RhbENvdW50c0J5VGltZTogU2VsZWN0b3I8TCwgRiwgQ291bnRCeVRpbWVbXSB8IHVuZGVmaW5lZD4gPVxuICAgIGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5nZXRTb3J0ZWRGbG93c0Zvcktub3duTG9jYXRpb25zLFxuICAgICAgdGhpcy5nZXRUaW1lR3JhbnVsYXJpdHlLZXksXG4gICAgICB0aGlzLmdldFRpbWVFeHRlbnQsXG4gICAgICB0aGlzLmdldEV4cGFuZGVkU2VsZWN0ZWRMb2NhdGlvbnNTZXQsXG4gICAgICB0aGlzLmdldExvY2F0aW9uRmlsdGVyTW9kZSxcbiAgICAgIChcbiAgICAgICAgZmxvd3MsXG4gICAgICAgIHRpbWVHcmFudWxhcml0eUtleSxcbiAgICAgICAgdGltZUV4dGVudCxcbiAgICAgICAgc2VsZWN0ZWRMb2NhdGlvblNldCxcbiAgICAgICAgbG9jYXRpb25GaWx0ZXJNb2RlLFxuICAgICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpbWVHcmFudWxhcml0eSA9IHRpbWVHcmFudWxhcml0eUtleVxuICAgICAgICAgID8gZ2V0VGltZUdyYW51bGFyaXR5QnlLZXkodGltZUdyYW51bGFyaXR5S2V5KVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIWZsb3dzIHx8ICF0aW1lR3JhbnVsYXJpdHkgfHwgIXRpbWVFeHRlbnQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGJ5VGltZSA9IGZsb3dzLnJlZHVjZSgobSwgZmxvdykgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaXNGbG93SW5TZWxlY3Rpb24oXG4gICAgICAgICAgICAgIGZsb3csXG4gICAgICAgICAgICAgIHNlbGVjdGVkTG9jYXRpb25TZXQsXG4gICAgICAgICAgICAgIGxvY2F0aW9uRmlsdGVyTW9kZSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHRpbWVHcmFudWxhcml0eVxuICAgICAgICAgICAgICAuaW50ZXJ2YWwodGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd1RpbWUoZmxvdykpXG4gICAgICAgICAgICAgIC5nZXRUaW1lKCk7XG4gICAgICAgICAgICBtLnNldChcbiAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAobS5nZXQoa2V5KSA/PyAwKSArIHRoaXMuYWNjZXNzb3JzLmdldEZsb3dNYWduaXR1ZGUoZmxvdyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbTtcbiAgICAgICAgfSwgbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKSk7XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oYnlUaW1lLmVudHJpZXMoKSkubWFwKChbbWlsbGlzLCBjb3VudF0pID0+ICh7XG4gICAgICAgICAgdGltZTogbmV3IERhdGUobWlsbGlzKSxcbiAgICAgICAgICBjb3VudCxcbiAgICAgICAgfSkpO1xuICAgICAgfSxcbiAgICApO1xuXG4gIGdldE1heExvY2F0aW9uQ2lyY2xlU2l6ZTogU2VsZWN0b3I8TCwgRiwgbnVtYmVyPiA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHRoaXMuZ2V0TG9jYXRpb25Ub3RhbHNFbmFibGVkLFxuICAgIChsb2NhdGlvblRvdGFsc0VuYWJsZWQpID0+IChsb2NhdGlvblRvdGFsc0VuYWJsZWQgPyAxNyA6IDEpLFxuICApO1xuXG4gIGdldFZpZXdwb3J0Qm91bmRpbmdCb3g6IFNlbGVjdG9yPEwsIEYsIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdPiA9XG4gICAgY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmdldFZpZXdwb3J0LFxuICAgICAgdGhpcy5nZXRNYXhMb2NhdGlvbkNpcmNsZVNpemUsXG4gICAgICAodmlld3BvcnQsIG1heExvY2F0aW9uQ2lyY2xlU2l6ZSkgPT4ge1xuICAgICAgICBjb25zdCBwYWQgPSBtYXhMb2NhdGlvbkNpcmNsZVNpemU7XG4gICAgICAgIGNvbnN0IGJvdW5kcyA9IG5ldyBXZWJNZXJjYXRvclZpZXdwb3J0KHtcbiAgICAgICAgICAuLi52aWV3cG9ydCxcbiAgICAgICAgICB3aWR0aDogdmlld3BvcnQud2lkdGggKyBwYWQgKiAyLFxuICAgICAgICAgIGhlaWdodDogdmlld3BvcnQuaGVpZ2h0ICsgcGFkICogMixcbiAgICAgICAgfSkuZ2V0Qm91bmRzKCk7XG4gICAgICAgIHJldHVybiBbYm91bmRzWzBdWzBdLCBib3VuZHNbMF1bMV0sIGJvdW5kc1sxXVswXSwgYm91bmRzWzFdWzFdXTtcbiAgICAgIH0sXG4gICAgKTtcblxuICBnZXRMb2NhdGlvbnNGb3Jab29tOiBTZWxlY3RvcjxMLCBGLCBJdGVyYWJsZTxMPiB8IENsdXN0ZXJOb2RlW10gfCB1bmRlZmluZWQ+ID1cbiAgICBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMuZ2V0Q2x1c3RlcmluZ0VuYWJsZWQsXG4gICAgICB0aGlzLmdldExvY2F0aW9uc0hhdmluZ0Zsb3dzLFxuICAgICAgdGhpcy5nZXRDbHVzdGVySW5kZXgsXG4gICAgICB0aGlzLmdldENsdXN0ZXJab29tLFxuICAgICAgKGNsdXN0ZXJpbmdFbmFibGVkLCBsb2NhdGlvbnNIYXZpbmdGbG93cywgY2x1c3RlckluZGV4LCBjbHVzdGVyWm9vbSkgPT4ge1xuICAgICAgICBpZiAoY2x1c3RlcmluZ0VuYWJsZWQgJiYgY2x1c3RlckluZGV4KSB7XG4gICAgICAgICAgcmV0dXJuIGNsdXN0ZXJJbmRleC5nZXRDbHVzdGVyTm9kZXNGb3IoY2x1c3Rlclpvb20pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBsb2NhdGlvbnNIYXZpbmdGbG93cztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuXG4gIGdldExvY2F0aW9uVG90YWxzOiBTZWxlY3RvcjxMLCBGLCBNYXA8c3RyaW5nLCBMb2NhdGlvblRvdGFscz4gfCB1bmRlZmluZWQ+ID1cbiAgICBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMuZ2V0TG9jYXRpb25zRm9yWm9vbSxcbiAgICAgIHRoaXMuZ2V0U29ydGVkQWdncmVnYXRlZEZpbHRlcmVkRmxvd3MsXG4gICAgICB0aGlzLmdldFNlbGVjdGVkTG9jYXRpb25zU2V0LFxuICAgICAgdGhpcy5nZXRMb2NhdGlvbkZpbHRlck1vZGUsXG4gICAgICAobG9jYXRpb25zLCBmbG93cywgc2VsZWN0ZWRMb2NhdGlvbnNTZXQsIGxvY2F0aW9uRmlsdGVyTW9kZSkgPT4ge1xuICAgICAgICBpZiAoIWZsb3dzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB0b3RhbHMgPSBuZXcgTWFwPHN0cmluZywgTG9jYXRpb25Ub3RhbHM+KCk7XG4gICAgICAgIGNvbnN0IGFkZCA9IChcbiAgICAgICAgICBpZDogc3RyaW5nLFxuICAgICAgICAgIGQ6IFBhcnRpYWw8TG9jYXRpb25Ub3RhbHM+LFxuICAgICAgICApOiBMb2NhdGlvblRvdGFscyA9PiB7XG4gICAgICAgICAgY29uc3QgcnYgPSB0b3RhbHMuZ2V0KGlkKSA/PyB7XG4gICAgICAgICAgICBpbmNvbWluZ0NvdW50OiAwLFxuICAgICAgICAgICAgb3V0Z29pbmdDb3VudDogMCxcbiAgICAgICAgICAgIGludGVybmFsQ291bnQ6IDAsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoZC5pbmNvbWluZ0NvdW50ICE9IG51bGwpIHJ2LmluY29taW5nQ291bnQgKz0gZC5pbmNvbWluZ0NvdW50O1xuICAgICAgICAgIGlmIChkLm91dGdvaW5nQ291bnQgIT0gbnVsbCkgcnYub3V0Z29pbmdDb3VudCArPSBkLm91dGdvaW5nQ291bnQ7XG4gICAgICAgICAgaWYgKGQuaW50ZXJuYWxDb3VudCAhPSBudWxsKSBydi5pbnRlcm5hbENvdW50ICs9IGQuaW50ZXJuYWxDb3VudDtcbiAgICAgICAgICByZXR1cm4gcnY7XG4gICAgICAgIH07XG4gICAgICAgIGZvciAoY29uc3QgZiBvZiBmbG93cykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaXNGbG93SW5TZWxlY3Rpb24oZiwgc2VsZWN0ZWRMb2NhdGlvbnNTZXQsIGxvY2F0aW9uRmlsdGVyTW9kZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbklkID0gdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd09yaWdpbklkKGYpO1xuICAgICAgICAgICAgY29uc3QgZGVzdElkID0gdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd0Rlc3RJZChmKTtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd01hZ25pdHVkZShmKTtcbiAgICAgICAgICAgIGlmIChvcmlnaW5JZCA9PT0gZGVzdElkKSB7XG4gICAgICAgICAgICAgIHRvdGFscy5zZXQob3JpZ2luSWQsIGFkZChvcmlnaW5JZCwge2ludGVybmFsQ291bnQ6IGNvdW50fSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdG90YWxzLnNldChvcmlnaW5JZCwgYWRkKG9yaWdpbklkLCB7b3V0Z29pbmdDb3VudDogY291bnR9KSk7XG4gICAgICAgICAgICAgIHRvdGFscy5zZXQoZGVzdElkLCBhZGQoZGVzdElkLCB7aW5jb21pbmdDb3VudDogY291bnR9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b3RhbHM7XG4gICAgICB9LFxuICAgICk7XG5cbiAgZ2V0TG9jYXRpb25zVHJlZTogU2VsZWN0b3I8TCwgRiwgS0RCdXNoVHJlZT4gPSBjcmVhdGVTZWxlY3RvcihcbiAgICB0aGlzLmdldExvY2F0aW9uc0Zvclpvb20sXG4gICAgKGxvY2F0aW9ucykgPT4ge1xuICAgICAgaWYgKCFsb2NhdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgS0RCdXNoKFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGxvY2F0aW9ucyxcbiAgICAgICAgKGxvY2F0aW9uOiBMIHwgQ2x1c3Rlck5vZGUpID0+XG4gICAgICAgICAgbG5nWCh0aGlzLmFjY2Vzc29ycy5nZXRMb2NhdGlvbkxvbihsb2NhdGlvbikpLFxuICAgICAgICAobG9jYXRpb246IEwgfCBDbHVzdGVyTm9kZSkgPT5cbiAgICAgICAgICBsYXRZKHRoaXMuYWNjZXNzb3JzLmdldExvY2F0aW9uTGF0KGxvY2F0aW9uKSksXG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgX2dldExvY2F0aW9uSWRzSW5WaWV3cG9ydDogU2VsZWN0b3I8TCwgRiwgU2V0PHN0cmluZz4gfCB1bmRlZmluZWQ+ID1cbiAgICBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMuZ2V0TG9jYXRpb25zVHJlZSxcbiAgICAgIHRoaXMuZ2V0Vmlld3BvcnRCb3VuZGluZ0JveCxcbiAgICAgICh0cmVlOiBLREJ1c2hUcmVlLCBiYm94OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSkgPT4ge1xuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLl9nZXRMb2NhdGlvbnNJbkJib3hJbmRpY2VzKHRyZWUsIGJib3gpO1xuICAgICAgICBpZiAoaWRzKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBTZXQoXG4gICAgICAgICAgICBpZHMubWFwKChpZHg6IG51bWJlcikgPT4gdHJlZS5wb2ludHNbaWR4XS5pZCkgYXMgQXJyYXk8c3RyaW5nPixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9LFxuICAgICk7XG5cbiAgZ2V0TG9jYXRpb25JZHNJblZpZXdwb3J0OiBTZWxlY3RvcjxMLCBGLCBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZD4gPVxuICAgIGNyZWF0ZVNlbGVjdG9yQ3JlYXRvcihcbiAgICAgIGRlZmF1bHRNZW1vaXplLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgKFxuICAgICAgICBzMTogU2V0PHN0cmluZz4gfCB1bmRlZmluZWQsXG4gICAgICAgIHMyOiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZCxcbiAgICAgICAgaW5kZXg6IG51bWJlcixcbiAgICAgICkgPT4ge1xuICAgICAgICBpZiAoczEgPT09IHMyKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHMxID09IG51bGwgfHwgczIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoczEuc2l6ZSAhPT0gczIuc2l6ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgczEpIGlmICghczIuaGFzKGl0ZW0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICApKFxuICAgICAgdGhpcy5fZ2V0TG9jYXRpb25JZHNJblZpZXdwb3J0LFxuICAgICAgKGxvY2F0aW9uSWRzOiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICBpZiAoIWxvY2F0aW9uSWRzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gbG9jYXRpb25JZHM7XG4gICAgICB9LFxuICAgICk7XG5cbiAgZ2V0VG90YWxVbmZpbHRlcmVkQ291bnQ6IFNlbGVjdG9yPEwsIEYsIG51bWJlciB8IHVuZGVmaW5lZD4gPSBjcmVhdGVTZWxlY3RvcihcbiAgICB0aGlzLmdldFNvcnRlZEZsb3dzRm9yS25vd25Mb2NhdGlvbnMsXG4gICAgKGZsb3dzKSA9PiB7XG4gICAgICBpZiAoIWZsb3dzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGZsb3dzLnJlZHVjZShcbiAgICAgICAgKG0sIGZsb3cpID0+IG0gKyB0aGlzLmFjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGZsb3cpLFxuICAgICAgICAwLFxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGdldFRvdGFsRmlsdGVyZWRDb3VudDogU2VsZWN0b3I8TCwgRiwgbnVtYmVyIHwgdW5kZWZpbmVkPiA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHRoaXMuZ2V0U29ydGVkQWdncmVnYXRlZEZpbHRlcmVkRmxvd3MsXG4gICAgdGhpcy5nZXRTZWxlY3RlZExvY2F0aW9uc1NldCxcbiAgICB0aGlzLmdldExvY2F0aW9uRmlsdGVyTW9kZSxcbiAgICAoZmxvd3MsIHNlbGVjdGVkTG9jYXRpb25TZXQsIGxvY2F0aW9uRmlsdGVyTW9kZSkgPT4ge1xuICAgICAgaWYgKCFmbG93cykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGNvdW50ID0gZmxvd3MucmVkdWNlKChtLCBmbG93KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmlzRmxvd0luU2VsZWN0aW9uKGZsb3csIHNlbGVjdGVkTG9jYXRpb25TZXQsIGxvY2F0aW9uRmlsdGVyTW9kZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG0gKyB0aGlzLmFjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGZsb3cpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtO1xuICAgICAgfSwgMCk7XG4gICAgICByZXR1cm4gY291bnQ7XG4gICAgfSxcbiAgKTtcblxuICBfZ2V0TG9jYXRpb25Ub3RhbHNFeHRlbnQ6IFNlbGVjdG9yPEwsIEYsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQ+ID1cbiAgICBjcmVhdGVTZWxlY3Rvcih0aGlzLmdldExvY2F0aW9uVG90YWxzLCAobG9jYXRpb25Ub3RhbHMpID0+XG4gICAgICBjYWxjTG9jYXRpb25Ub3RhbHNFeHRlbnQobG9jYXRpb25Ub3RhbHMsIHVuZGVmaW5lZCksXG4gICAgKTtcblxuICBfZ2V0TG9jYXRpb25Ub3RhbHNGb3JWaWV3cG9ydEV4dGVudDogU2VsZWN0b3I8XG4gICAgTCxcbiAgICBGLFxuICAgIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWRcbiAgPiA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHRoaXMuZ2V0TG9jYXRpb25Ub3RhbHMsXG4gICAgdGhpcy5nZXRMb2NhdGlvbklkc0luVmlld3BvcnQsXG4gICAgKGxvY2F0aW9uVG90YWxzLCBsb2NhdGlvbnNJblZpZXdwb3J0KSA9PlxuICAgICAgY2FsY0xvY2F0aW9uVG90YWxzRXh0ZW50KGxvY2F0aW9uVG90YWxzLCBsb2NhdGlvbnNJblZpZXdwb3J0KSxcbiAgKTtcblxuICBnZXRMb2NhdGlvblRvdGFsc0V4dGVudCA9IChcbiAgICBzdGF0ZTogRmxvd21hcFN0YXRlLFxuICAgIHByb3BzOiBGbG93bWFwRGF0YTxMLCBGPixcbiAgKTogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKHN0YXRlLnNldHRpbmdzU3RhdGUuYWRhcHRpdmVTY2FsZXNFbmFibGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0TG9jYXRpb25Ub3RhbHNGb3JWaWV3cG9ydEV4dGVudChzdGF0ZSwgcHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0TG9jYXRpb25Ub3RhbHNFeHRlbnQoc3RhdGUsIHByb3BzKTtcbiAgICB9XG4gIH07XG5cbiAgZ2V0Rmxvd3NGb3JGbG93bWFwTGF5ZXI6IFNlbGVjdG9yPEwsIEYsIChGIHwgQWdncmVnYXRlRmxvdylbXSB8IHVuZGVmaW5lZD4gPVxuICAgIGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5nZXRTb3J0ZWRBZ2dyZWdhdGVkRmlsdGVyZWRGbG93cyxcbiAgICAgIHRoaXMuZ2V0TG9jYXRpb25JZHNJblZpZXdwb3J0LFxuICAgICAgdGhpcy5nZXRTZWxlY3RlZExvY2F0aW9uc1NldCxcbiAgICAgIHRoaXMuZ2V0TG9jYXRpb25GaWx0ZXJNb2RlLFxuICAgICAgdGhpcy5nZXRNYXhUb3BGbG93c0Rpc3BsYXlOdW0sXG4gICAgICAoXG4gICAgICAgIGZsb3dzLFxuICAgICAgICBsb2NhdGlvbklkc0luVmlld3BvcnQsXG4gICAgICAgIHNlbGVjdGVkTG9jYXRpb25zU2V0LFxuICAgICAgICBsb2NhdGlvbkZpbHRlck1vZGUsXG4gICAgICAgIG1heFRvcEZsb3dzRGlzcGxheU51bSxcbiAgICAgICkgPT4ge1xuICAgICAgICBpZiAoIWZsb3dzIHx8ICFsb2NhdGlvbklkc0luVmlld3BvcnQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHBpY2tlZDogKEYgfCBBZ2dyZWdhdGVGbG93KVtdID0gW107XG4gICAgICAgIGxldCBwaWNrZWRDb3VudCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgZmxvdyBvZiBmbG93cykge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYWNjZXNzb3JzLmdldEZsb3dPcmlnaW5JZChmbG93KTtcbiAgICAgICAgICBjb25zdCBkZXN0ID0gdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd0Rlc3RJZChmbG93KTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBsb2NhdGlvbklkc0luVmlld3BvcnQuaGFzKG9yaWdpbikgfHxcbiAgICAgICAgICAgIGxvY2F0aW9uSWRzSW5WaWV3cG9ydC5oYXMoZGVzdClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGhpcy5pc0Zsb3dJblNlbGVjdGlvbihcbiAgICAgICAgICAgICAgICBmbG93LFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkTG9jYXRpb25zU2V0LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uRmlsdGVyTW9kZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGlmIChvcmlnaW4gIT09IGRlc3QpIHtcbiAgICAgICAgICAgICAgICAvLyBleGNsdWRlIHNlbGYtbG9vcHNcbiAgICAgICAgICAgICAgICBwaWNrZWQucHVzaChmbG93KTtcbiAgICAgICAgICAgICAgICBwaWNrZWRDb3VudCsrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIE9ubHkga2VlcCB0b3BcbiAgICAgICAgICBpZiAocGlja2VkQ291bnQgPiBtYXhUb3BGbG93c0Rpc3BsYXlOdW0pIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIGFzc3VtaW5nIHRoZXkgYXJlIHNvcnRlZCBpbiBkZXNjZW5kaW5nIG9yZGVyLFxuICAgICAgICAvLyB3ZSBuZWVkIGFzY2VuZGluZyBmb3IgcmVuZGVyaW5nXG4gICAgICAgIHJldHVybiBwaWNrZWQucmV2ZXJzZSgpO1xuICAgICAgfSxcbiAgICApO1xuXG4gIF9nZXRGbG93TWFnbml0dWRlRXh0ZW50OiBTZWxlY3RvcjxMLCBGLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkPiA9XG4gICAgY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmdldFNvcnRlZEFnZ3JlZ2F0ZWRGaWx0ZXJlZEZsb3dzLFxuICAgICAgdGhpcy5nZXRTZWxlY3RlZExvY2F0aW9uc1NldCxcbiAgICAgIHRoaXMuZ2V0TG9jYXRpb25GaWx0ZXJNb2RlLFxuICAgICAgKGZsb3dzLCBzZWxlY3RlZExvY2F0aW9uc1NldCwgbG9jYXRpb25GaWx0ZXJNb2RlKSA9PiB7XG4gICAgICAgIGlmICghZmxvd3MpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGxldCBydjogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChjb25zdCBmIG9mIGZsb3dzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd09yaWdpbklkKGYpICE9PVxuICAgICAgICAgICAgICB0aGlzLmFjY2Vzc29ycy5nZXRGbG93RGVzdElkKGYpICYmXG4gICAgICAgICAgICB0aGlzLmlzRmxvd0luU2VsZWN0aW9uKGYsIHNlbGVjdGVkTG9jYXRpb25zU2V0LCBsb2NhdGlvbkZpbHRlck1vZGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBjb3VudCA9IHRoaXMuYWNjZXNzb3JzLmdldEZsb3dNYWduaXR1ZGUoZik7XG4gICAgICAgICAgICBpZiAocnYgPT0gbnVsbCkge1xuICAgICAgICAgICAgICBydiA9IFtjb3VudCwgY291bnRdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGNvdW50IDwgcnZbMF0pIHJ2WzBdID0gY291bnQ7XG4gICAgICAgICAgICAgIGlmIChjb3VudCA+IHJ2WzFdKSBydlsxXSA9IGNvdW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcnY7XG4gICAgICB9LFxuICAgICk7XG5cbiAgX2dldEFkYXB0aXZlRmxvd01hZ25pdHVkZUV4dGVudDogU2VsZWN0b3I8XG4gICAgTCxcbiAgICBGLFxuICAgIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWRcbiAgPiA9IGNyZWF0ZVNlbGVjdG9yKHRoaXMuZ2V0Rmxvd3NGb3JGbG93bWFwTGF5ZXIsIChmbG93cykgPT4ge1xuICAgIGlmICghZmxvd3MpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcnYgPSBleHRlbnQoZmxvd3MsIHRoaXMuYWNjZXNzb3JzLmdldEZsb3dNYWduaXR1ZGUpO1xuICAgIHJldHVybiBydlswXSAhPT0gdW5kZWZpbmVkICYmIHJ2WzFdICE9PSB1bmRlZmluZWQgPyBydiA6IHVuZGVmaW5lZDtcbiAgfSk7XG5cbiAgZ2V0Rmxvd01hZ25pdHVkZUV4dGVudCA9IChcbiAgICBzdGF0ZTogRmxvd21hcFN0YXRlLFxuICAgIHByb3BzOiBGbG93bWFwRGF0YTxMLCBGPixcbiAgKTogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKHN0YXRlLnNldHRpbmdzU3RhdGUuYWRhcHRpdmVTY2FsZXNFbmFibGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0QWRhcHRpdmVGbG93TWFnbml0dWRlRXh0ZW50KHN0YXRlLCBwcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9nZXRGbG93TWFnbml0dWRlRXh0ZW50KHN0YXRlLCBwcm9wcyk7XG4gICAgfVxuICB9O1xuXG4gIGdldExvY2F0aW9uTWF4QWJzVG90YWxHZXR0ZXIgPSBjcmVhdGVTZWxlY3RvcihcbiAgICB0aGlzLmdldExvY2F0aW9uVG90YWxzLFxuICAgIChsb2NhdGlvblRvdGFscykgPT4ge1xuICAgICAgcmV0dXJuIChsb2NhdGlvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdG90YWwgPSBsb2NhdGlvblRvdGFscz8uZ2V0KGxvY2F0aW9uSWQpO1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoXG4gICAgICAgICAgTWF0aC5hYnModG90YWwuaW5jb21pbmdDb3VudCArIHRvdGFsLmludGVybmFsQ291bnQpLFxuICAgICAgICAgIE1hdGguYWJzKHRvdGFsLm91dGdvaW5nQ291bnQgKyB0b3RhbC5pbnRlcm5hbENvdW50KSxcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcblxuICBnZXRGbG93VGhpY2tuZXNzU2NhbGUgPSBjcmVhdGVTZWxlY3RvcihcbiAgICB0aGlzLmdldEZsb3dNYWduaXR1ZGVFeHRlbnQsXG4gICAgKG1hZ25pdHVkZUV4dGVudCkgPT4ge1xuICAgICAgaWYgKCFtYWduaXR1ZGVFeHRlbnQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gc2NhbGVMaW5lYXIoKVxuICAgICAgICAucmFuZ2UoWzAuMDI1LCAwLjVdKVxuICAgICAgICAuZG9tYWluKFtcbiAgICAgICAgICAwLFxuICAgICAgICAgIC8vIHNob3VsZCBzdXBwb3J0IGRpZmYgbW9kZSB0b29cbiAgICAgICAgICBNYXRoLm1heC5hcHBseShcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBtYWduaXR1ZGVFeHRlbnQubWFwKCh4OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IE1hdGguYWJzKHggfHwgMCkpLFxuICAgICAgICAgICksXG4gICAgICAgIF0pO1xuICAgIH0sXG4gICk7XG5cbiAgZ2V0Q2lyY2xlU2l6ZVNjYWxlID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgdGhpcy5nZXRNYXhMb2NhdGlvbkNpcmNsZVNpemUsXG4gICAgdGhpcy5nZXRMb2NhdGlvblRvdGFsc0VuYWJsZWQsXG4gICAgdGhpcy5nZXRMb2NhdGlvblRvdGFsc0V4dGVudCxcbiAgICAobWF4TG9jYXRpb25DaXJjbGVTaXplLCBsb2NhdGlvblRvdGFsc0VuYWJsZWQsIGxvY2F0aW9uVG90YWxzRXh0ZW50KSA9PiB7XG4gICAgICBpZiAoIWxvY2F0aW9uVG90YWxzRW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gKCkgPT4gbWF4TG9jYXRpb25DaXJjbGVTaXplO1xuICAgICAgfVxuICAgICAgaWYgKCFsb2NhdGlvblRvdGFsc0V4dGVudCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBzY2FsZVNxcnQoKVxuICAgICAgICAucmFuZ2UoWzAsIG1heExvY2F0aW9uQ2lyY2xlU2l6ZV0pXG4gICAgICAgIC5kb21haW4oW1xuICAgICAgICAgIDAsXG4gICAgICAgICAgLy8gc2hvdWxkIHN1cHBvcnQgZGlmZiBtb2RlIHRvb1xuICAgICAgICAgIE1hdGgubWF4LmFwcGx5KFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIGxvY2F0aW9uVG90YWxzRXh0ZW50Lm1hcCgoeDogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PlxuICAgICAgICAgICAgICBNYXRoLmFicyh4IHx8IDApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICBdKTtcbiAgICB9LFxuICApO1xuXG4gIGdldEluQ2lyY2xlU2l6ZUdldHRlciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHRoaXMuZ2V0Q2lyY2xlU2l6ZVNjYWxlLFxuICAgIHRoaXMuZ2V0TG9jYXRpb25Ub3RhbHMsXG4gICAgKGNpcmNsZVNpemVTY2FsZSwgbG9jYXRpb25Ub3RhbHMpID0+IHtcbiAgICAgIHJldHVybiAobG9jYXRpb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gbG9jYXRpb25Ub3RhbHM/LmdldChsb2NhdGlvbklkKTtcbiAgICAgICAgaWYgKHRvdGFsICYmIGNpcmNsZVNpemVTY2FsZSkge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBjaXJjbGVTaXplU2NhbGUoXG4gICAgICAgICAgICAgIE1hdGguYWJzKHRvdGFsLmluY29taW5nQ291bnQgKyB0b3RhbC5pbnRlcm5hbENvdW50KSxcbiAgICAgICAgICAgICkgfHwgMFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9O1xuICAgIH0sXG4gICk7XG5cbiAgZ2V0T3V0Q2lyY2xlU2l6ZUdldHRlciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHRoaXMuZ2V0Q2lyY2xlU2l6ZVNjYWxlLFxuICAgIHRoaXMuZ2V0TG9jYXRpb25Ub3RhbHMsXG4gICAgKGNpcmNsZVNpemVTY2FsZSwgbG9jYXRpb25Ub3RhbHMpID0+IHtcbiAgICAgIHJldHVybiAobG9jYXRpb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gbG9jYXRpb25Ub3RhbHM/LmdldChsb2NhdGlvbklkKTtcbiAgICAgICAgaWYgKHRvdGFsICYmIGNpcmNsZVNpemVTY2FsZSkge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBjaXJjbGVTaXplU2NhbGUoXG4gICAgICAgICAgICAgIE1hdGguYWJzKHRvdGFsLm91dGdvaW5nQ291bnQgKyB0b3RhbC5pbnRlcm5hbENvdW50KSxcbiAgICAgICAgICAgICkgfHwgMFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9O1xuICAgIH0sXG4gICk7XG5cbiAgZ2V0U29ydGVkTG9jYXRpb25zRm9yWm9vbTogU2VsZWN0b3I8TCwgRiwgTFtdIHwgQ2x1c3Rlck5vZGVbXSB8IHVuZGVmaW5lZD4gPVxuICAgIGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5nZXRMb2NhdGlvbnNGb3Jab29tLFxuICAgICAgdGhpcy5nZXRJbkNpcmNsZVNpemVHZXR0ZXIsXG4gICAgICB0aGlzLmdldE91dENpcmNsZVNpemVHZXR0ZXIsXG4gICAgICAobG9jYXRpb25zLCBnZXRJbkNpcmNsZVNpemUsIGdldE91dENpcmNsZVNpemUpID0+IHtcbiAgICAgICAgaWYgKCFsb2NhdGlvbnMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IG5leHRMb2NhdGlvbnMgPSBbLi4ubG9jYXRpb25zXSBhcyBMW10gfCBDbHVzdGVyTm9kZVtdO1xuICAgICAgICByZXR1cm4gbmV4dExvY2F0aW9ucy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWRBID0gdGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25JZChhKTtcbiAgICAgICAgICBjb25zdCBpZEIgPSB0aGlzLmFjY2Vzc29ycy5nZXRMb2NhdGlvbklkKGIpO1xuICAgICAgICAgIHJldHVybiBhc2NlbmRpbmcoXG4gICAgICAgICAgICBNYXRoLm1heChnZXRJbkNpcmNsZVNpemUoaWRBKSwgZ2V0T3V0Q2lyY2xlU2l6ZShpZEEpKSxcbiAgICAgICAgICAgIE1hdGgubWF4KGdldEluQ2lyY2xlU2l6ZShpZEIpLCBnZXRPdXRDaXJjbGVTaXplKGlkQikpLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApO1xuXG4gIGdldExvY2F0aW9uc0ZvckZsb3dtYXBMYXllcjogU2VsZWN0b3I8XG4gICAgTCxcbiAgICBGLFxuICAgIEFycmF5PEwgfCBDbHVzdGVyTm9kZT4gfCB1bmRlZmluZWRcbiAgPiA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIHRoaXMuZ2V0U29ydGVkTG9jYXRpb25zRm9yWm9vbSxcbiAgICAvLyB0aGlzLmdldExvY2F0aW9uSWRzSW5WaWV3cG9ydCxcbiAgICAoXG4gICAgICBsb2NhdGlvbnMsXG4gICAgICAvLyBsb2NhdGlvbklkc0luVmlld3BvcnRcbiAgICApID0+IHtcbiAgICAgIC8vIGlmICghbG9jYXRpb25zKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgLy8gaWYgKCFsb2NhdGlvbklkc0luVmlld3BvcnQpIHJldHVybiBsb2NhdGlvbnM7XG4gICAgICAvLyBpZiAobG9jYXRpb25JZHNJblZpZXdwb3J0LnNpemUgPT09IGxvY2F0aW9ucy5sZW5ndGgpIHJldHVybiBsb2NhdGlvbnM7XG4gICAgICAvLyBjb25zdCBmaWx0ZXJlZCA9IFtdO1xuICAgICAgLy8gZm9yIChjb25zdCBsb2Mgb2YgbG9jYXRpb25zKSB7XG4gICAgICAvLyAgIGlmIChsb2NhdGlvbklkc0luVmlld3BvcnQuaGFzKGxvYy5pZCkpIHtcbiAgICAgIC8vICAgICBmaWx0ZXJlZC5wdXNoKGxvYyk7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICAgIC8vIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIC8vIHJldHVybiBsb2NhdGlvbnMuZmlsdGVyKFxuICAgICAgLy8gICAobG9jOiBMIHwgQ2x1c3Rlck5vZGUpID0+IGxvY2F0aW9uSWRzSW5WaWV3cG9ydCEuaGFzKGxvYy5pZClcbiAgICAgIC8vICk7XG4gICAgICAvLyBUT0RPOiByZXR1cm4gbG9jYXRpb24gaW4gdmlld3BvcnQgKyBcImNvbm5lY3RlZFwiIG9uZXNcbiAgICAgIHJldHVybiBsb2NhdGlvbnM7XG4gICAgfSxcbiAgKTtcblxuICBnZXRMb2NhdGlvbnNGb3JGbG93bWFwTGF5ZXJCeUlkOiBTZWxlY3RvcjxcbiAgICBMLFxuICAgIEYsXG4gICAgTWFwPHN0cmluZywgTCB8IENsdXN0ZXJOb2RlPiB8IHVuZGVmaW5lZFxuICA+ID0gY3JlYXRlU2VsZWN0b3IodGhpcy5nZXRMb2NhdGlvbnNGb3JGbG93bWFwTGF5ZXIsIChsb2NhdGlvbnMpID0+IHtcbiAgICBpZiAoIWxvY2F0aW9ucykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gbG9jYXRpb25zLnJlZHVjZShcbiAgICAgIChtLCBkKSA9PiAobS5zZXQodGhpcy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25JZChkKSwgZCksIG0pLFxuICAgICAgbmV3IE1hcCgpLFxuICAgICk7XG4gIH0pO1xuXG4gIGdldExheWVyc0RhdGE6IFNlbGVjdG9yPEwsIEYsIExheWVyc0RhdGE+ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgdGhpcy5nZXRMb2NhdGlvbnNGb3JGbG93bWFwTGF5ZXIsXG4gICAgdGhpcy5nZXRGbG93c0ZvckZsb3dtYXBMYXllcixcbiAgICB0aGlzLmdldEZsb3dtYXBDb2xvcnNSR0JBLFxuICAgIHRoaXMuZ2V0TG9jYXRpb25zRm9yRmxvd21hcExheWVyQnlJZCxcbiAgICB0aGlzLmdldExvY2F0aW9uSWRzSW5WaWV3cG9ydCxcbiAgICB0aGlzLmdldEluQ2lyY2xlU2l6ZUdldHRlcixcbiAgICB0aGlzLmdldE91dENpcmNsZVNpemVHZXR0ZXIsXG4gICAgdGhpcy5nZXRGbG93VGhpY2tuZXNzU2NhbGUsXG4gICAgdGhpcy5nZXRBbmltYXRlLFxuICAgIChcbiAgICAgIGxvY2F0aW9ucyxcbiAgICAgIGZsb3dzLFxuICAgICAgZmxvd21hcENvbG9ycyxcbiAgICAgIGxvY2F0aW9uc0J5SWQsXG4gICAgICBsb2NhdGlvbklkc0luVmlld3BvcnQsXG4gICAgICBnZXRJbkNpcmNsZVNpemUsXG4gICAgICBnZXRPdXRDaXJjbGVTaXplLFxuICAgICAgZmxvd1RoaWNrbmVzc1NjYWxlLFxuICAgICAgYW5pbWF0aW9uRW5hYmxlZCxcbiAgICApID0+IHtcbiAgICAgIHJldHVybiB0aGlzLl9wcmVwYXJlTGF5ZXJzRGF0YShcbiAgICAgICAgbG9jYXRpb25zLFxuICAgICAgICBmbG93cyxcbiAgICAgICAgZmxvd21hcENvbG9ycyxcbiAgICAgICAgbG9jYXRpb25zQnlJZCxcbiAgICAgICAgbG9jYXRpb25JZHNJblZpZXdwb3J0LFxuICAgICAgICBnZXRJbkNpcmNsZVNpemUsXG4gICAgICAgIGdldE91dENpcmNsZVNpemUsXG4gICAgICAgIGZsb3dUaGlja25lc3NTY2FsZSxcbiAgICAgICAgYW5pbWF0aW9uRW5hYmxlZCxcbiAgICAgICk7XG4gICAgfSxcbiAgKTtcblxuICBwcmVwYXJlTGF5ZXJzRGF0YShzdGF0ZTogRmxvd21hcFN0YXRlLCBwcm9wczogRmxvd21hcERhdGE8TCwgRj4pOiBMYXllcnNEYXRhIHtcbiAgICBjb25zdCBsb2NhdGlvbnMgPSB0aGlzLmdldExvY2F0aW9uc0ZvckZsb3dtYXBMYXllcihzdGF0ZSwgcHJvcHMpIHx8IFtdO1xuICAgIGNvbnN0IGZsb3dzID0gdGhpcy5nZXRGbG93c0ZvckZsb3dtYXBMYXllcihzdGF0ZSwgcHJvcHMpIHx8IFtdO1xuICAgIGNvbnN0IGZsb3dtYXBDb2xvcnMgPSB0aGlzLmdldEZsb3dtYXBDb2xvcnNSR0JBKHN0YXRlLCBwcm9wcyk7XG4gICAgY29uc3QgbG9jYXRpb25zQnlJZCA9IHRoaXMuZ2V0TG9jYXRpb25zRm9yRmxvd21hcExheWVyQnlJZChzdGF0ZSwgcHJvcHMpO1xuICAgIGNvbnN0IGxvY2F0aW9uSWRzSW5WaWV3cG9ydCA9IHRoaXMuZ2V0TG9jYXRpb25JZHNJblZpZXdwb3J0KHN0YXRlLCBwcm9wcyk7XG4gICAgY29uc3QgZ2V0SW5DaXJjbGVTaXplID0gdGhpcy5nZXRJbkNpcmNsZVNpemVHZXR0ZXIoc3RhdGUsIHByb3BzKTtcbiAgICBjb25zdCBnZXRPdXRDaXJjbGVTaXplID0gdGhpcy5nZXRPdXRDaXJjbGVTaXplR2V0dGVyKHN0YXRlLCBwcm9wcyk7XG4gICAgY29uc3QgZmxvd1RoaWNrbmVzc1NjYWxlID0gdGhpcy5nZXRGbG93VGhpY2tuZXNzU2NhbGUoc3RhdGUsIHByb3BzKTtcbiAgICByZXR1cm4gdGhpcy5fcHJlcGFyZUxheWVyc0RhdGEoXG4gICAgICBsb2NhdGlvbnMsXG4gICAgICBmbG93cyxcbiAgICAgIGZsb3dtYXBDb2xvcnMsXG4gICAgICBsb2NhdGlvbnNCeUlkLFxuICAgICAgbG9jYXRpb25JZHNJblZpZXdwb3J0LFxuICAgICAgZ2V0SW5DaXJjbGVTaXplLFxuICAgICAgZ2V0T3V0Q2lyY2xlU2l6ZSxcbiAgICAgIGZsb3dUaGlja25lc3NTY2FsZSxcbiAgICAgIHN0YXRlLnNldHRpbmdzU3RhdGUuYW5pbWF0aW9uRW5hYmxlZCxcbiAgICApO1xuICB9XG5cbiAgX3ByZXBhcmVMYXllcnNEYXRhKFxuICAgIGxvY2F0aW9uczogKEwgfCBDbHVzdGVyTm9kZSlbXSB8IHVuZGVmaW5lZCxcbiAgICBmbG93czogKEYgfCBBZ2dyZWdhdGVGbG93KVtdIHwgdW5kZWZpbmVkLFxuICAgIGZsb3dtYXBDb2xvcnM6IERpZmZDb2xvcnNSR0JBIHwgQ29sb3JzUkdCQSxcbiAgICBsb2NhdGlvbnNCeUlkOiBNYXA8c3RyaW5nLCBMIHwgQ2x1c3Rlck5vZGU+IHwgdW5kZWZpbmVkLFxuICAgIGxvY2F0aW9uSWRzSW5WaWV3cG9ydDogU2V0PHN0cmluZz4gfCB1bmRlZmluZWQsXG4gICAgZ2V0SW5DaXJjbGVTaXplOiAobG9jYXRpb25JZDogc3RyaW5nKSA9PiBudW1iZXIsXG4gICAgZ2V0T3V0Q2lyY2xlU2l6ZTogKGxvY2F0aW9uSWQ6IHN0cmluZykgPT4gbnVtYmVyLFxuICAgIGZsb3dUaGlja25lc3NTY2FsZTogU2NhbGVMaW5lYXI8bnVtYmVyLCBudW1iZXIsIG5ldmVyPiB8IHVuZGVmaW5lZCxcbiAgICBhbmltYXRpb25FbmFibGVkOiBib29sZWFuLFxuICApOiBMYXllcnNEYXRhIHtcbiAgICBpZiAoIWxvY2F0aW9ucykgbG9jYXRpb25zID0gW107XG4gICAgaWYgKCFmbG93cykgZmxvd3MgPSBbXTtcbiAgICBjb25zdCB7XG4gICAgICBnZXRGbG93T3JpZ2luSWQsXG4gICAgICBnZXRGbG93RGVzdElkLFxuICAgICAgZ2V0Rmxvd01hZ25pdHVkZSxcbiAgICAgIGdldExvY2F0aW9uSWQsXG4gICAgICBnZXRMb2NhdGlvbkxvbixcbiAgICAgIGdldExvY2F0aW9uTGF0LFxuICAgIH0gPSB0aGlzLmFjY2Vzc29ycztcblxuICAgIGNvbnN0IGZsb3dNYWduaXR1ZGVFeHRlbnQgPSBleHRlbnQoZmxvd3MsIChmKSA9PiBnZXRGbG93TWFnbml0dWRlKGYpKSBhcyBbXG4gICAgICBudW1iZXIsXG4gICAgICBudW1iZXIsXG4gICAgXTtcbiAgICBjb25zdCBmbG93Q29sb3JTY2FsZSA9IGdldEZsb3dDb2xvclNjYWxlKFxuICAgICAgZmxvd21hcENvbG9ycyxcbiAgICAgIGZsb3dNYWduaXR1ZGVFeHRlbnQsXG4gICAgICBmYWxzZSxcbiAgICApO1xuXG4gICAgLy8gVXNpbmcgYSBnZW5lcmF0b3IgaGVyZSBoZWxwcyB0byBhdm9pZCBjcmVhdGluZyBpbnRlcm1lZGlhcnkgYXJyYXlzXG4gICAgY29uc3QgY2lyY2xlUG9zaXRpb25zID0gRmxvYXQzMkFycmF5LmZyb20oXG4gICAgICAoZnVuY3Rpb24qICgpIHtcbiAgICAgICAgZm9yIChjb25zdCBsb2NhdGlvbiBvZiBsb2NhdGlvbnMpIHtcbiAgICAgICAgICB5aWVsZCBnZXRMb2NhdGlvbkxvbihsb2NhdGlvbik7XG4gICAgICAgICAgeWllbGQgZ2V0TG9jYXRpb25MYXQobG9jYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9KSgpLFxuICAgICk7XG5cbiAgICAvLyBUT0RPOiBkaWZmIG1vZGVcbiAgICBjb25zdCBjaXJjbGVDb2xvciA9IGlzRGlmZkNvbG9yc1JHQkEoZmxvd21hcENvbG9ycylcbiAgICAgID8gZmxvd21hcENvbG9ycy5wb3NpdGl2ZS5sb2NhdGlvbkNpcmNsZXMuaW5uZXJcbiAgICAgIDogZmxvd21hcENvbG9ycy5sb2NhdGlvbkNpcmNsZXMuaW5uZXI7XG5cbiAgICBjb25zdCBjaXJjbGVDb2xvcnMgPSBVaW50OEFycmF5LmZyb20oXG4gICAgICAoZnVuY3Rpb24qICgpIHtcbiAgICAgICAgZm9yIChjb25zdCBsb2NhdGlvbiBvZiBsb2NhdGlvbnMpIHtcbiAgICAgICAgICB5aWVsZCogY2lyY2xlQ29sb3I7XG4gICAgICAgIH1cbiAgICAgIH0pKCksXG4gICAgKTtcblxuICAgIGNvbnN0IGluQ2lyY2xlUmFkaWkgPSBGbG9hdDMyQXJyYXkuZnJvbShcbiAgICAgIChmdW5jdGlvbiogKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGxvY2F0aW9uIG9mIGxvY2F0aW9ucykge1xuICAgICAgICAgIGNvbnN0IGlkID0gZ2V0TG9jYXRpb25JZChsb2NhdGlvbik7XG4gICAgICAgICAgeWllbGQgbG9jYXRpb25JZHNJblZpZXdwb3J0Py5oYXMoaWQpID8gZ2V0SW5DaXJjbGVTaXplKGlkKSA6IDEuMDtcbiAgICAgICAgfVxuICAgICAgfSkoKSxcbiAgICApO1xuICAgIGNvbnN0IG91dENpcmNsZVJhZGlpID0gRmxvYXQzMkFycmF5LmZyb20oXG4gICAgICAoZnVuY3Rpb24qICgpIHtcbiAgICAgICAgZm9yIChjb25zdCBsb2NhdGlvbiBvZiBsb2NhdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBpZCA9IGdldExvY2F0aW9uSWQobG9jYXRpb24pO1xuICAgICAgICAgIHlpZWxkIGxvY2F0aW9uSWRzSW5WaWV3cG9ydD8uaGFzKGlkKSA/IGdldE91dENpcmNsZVNpemUoaWQpIDogMS4wO1xuICAgICAgICB9XG4gICAgICB9KSgpLFxuICAgICk7XG5cbiAgICBjb25zdCBzb3VyY2VQb3NpdGlvbnMgPSBGbG9hdDMyQXJyYXkuZnJvbShcbiAgICAgIChmdW5jdGlvbiogKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGZsb3cgb2YgZmxvd3MpIHtcbiAgICAgICAgICBjb25zdCBsb2MgPSBsb2NhdGlvbnNCeUlkPy5nZXQoZ2V0Rmxvd09yaWdpbklkKGZsb3cpKTtcbiAgICAgICAgICB5aWVsZCBsb2MgPyBnZXRMb2NhdGlvbkxvbihsb2MpIDogMDtcbiAgICAgICAgICB5aWVsZCBsb2MgPyBnZXRMb2NhdGlvbkxhdChsb2MpIDogMDtcbiAgICAgICAgfVxuICAgICAgfSkoKSxcbiAgICApO1xuICAgIGNvbnN0IHRhcmdldFBvc2l0aW9ucyA9IEZsb2F0MzJBcnJheS5mcm9tKFxuICAgICAgKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGZvciAoY29uc3QgZmxvdyBvZiBmbG93cykge1xuICAgICAgICAgIGNvbnN0IGxvYyA9IGxvY2F0aW9uc0J5SWQ/LmdldChnZXRGbG93RGVzdElkKGZsb3cpKTtcbiAgICAgICAgICB5aWVsZCBsb2MgPyBnZXRMb2NhdGlvbkxvbihsb2MpIDogMDtcbiAgICAgICAgICB5aWVsZCBsb2MgPyBnZXRMb2NhdGlvbkxhdChsb2MpIDogMDtcbiAgICAgICAgfVxuICAgICAgfSkoKSxcbiAgICApO1xuICAgIGNvbnN0IHRoaWNrbmVzc2VzID0gRmxvYXQzMkFycmF5LmZyb20oXG4gICAgICAoZnVuY3Rpb24qICgpIHtcbiAgICAgICAgZm9yIChjb25zdCBmbG93IG9mIGZsb3dzKSB7XG4gICAgICAgICAgeWllbGQgZmxvd1RoaWNrbmVzc1NjYWxlXG4gICAgICAgICAgICA/IGZsb3dUaGlja25lc3NTY2FsZShnZXRGbG93TWFnbml0dWRlKGZsb3cpKSB8fCAwXG4gICAgICAgICAgICA6IDA7XG4gICAgICAgIH1cbiAgICAgIH0pKCksXG4gICAgKTtcbiAgICBjb25zdCBlbmRwb2ludE9mZnNldHMgPSBGbG9hdDMyQXJyYXkuZnJvbShcbiAgICAgIChmdW5jdGlvbiogKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGZsb3cgb2YgZmxvd3MpIHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5JZCA9IGdldEZsb3dPcmlnaW5JZChmbG93KTtcbiAgICAgICAgICBjb25zdCBkZXN0SWQgPSBnZXRGbG93RGVzdElkKGZsb3cpO1xuICAgICAgICAgIHlpZWxkIE1hdGgubWF4KGdldEluQ2lyY2xlU2l6ZShvcmlnaW5JZCksIGdldE91dENpcmNsZVNpemUob3JpZ2luSWQpKTtcbiAgICAgICAgICB5aWVsZCBNYXRoLm1heChnZXRJbkNpcmNsZVNpemUoZGVzdElkKSwgZ2V0T3V0Q2lyY2xlU2l6ZShkZXN0SWQpKTtcbiAgICAgICAgfVxuICAgICAgfSkoKSxcbiAgICApO1xuICAgIGNvbnN0IGZsb3dMaW5lQ29sb3JzID0gVWludDhBcnJheS5mcm9tKFxuICAgICAgKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGZvciAoY29uc3QgZmxvdyBvZiBmbG93cykge1xuICAgICAgICAgIHlpZWxkKiBmbG93Q29sb3JTY2FsZShnZXRGbG93TWFnbml0dWRlKGZsb3cpKTtcbiAgICAgICAgfVxuICAgICAgfSkoKSxcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhZ2dlcmluZ1ZhbHVlcyA9IGFuaW1hdGlvbkVuYWJsZWRcbiAgICAgID8gRmxvYXQzMkFycmF5LmZyb20oXG4gICAgICAgICAgKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGYgb2YgZmxvd3MpIHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICB5aWVsZCBuZXcgYWxlYShgJHtnZXRGbG93T3JpZ2luSWQoZil9LSR7Z2V0Rmxvd0Rlc3RJZChmKX1gKSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKCksXG4gICAgICAgIClcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNpcmNsZUF0dHJpYnV0ZXM6IHtcbiAgICAgICAgbGVuZ3RoOiBsb2NhdGlvbnMubGVuZ3RoLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgZ2V0UG9zaXRpb246IHt2YWx1ZTogY2lyY2xlUG9zaXRpb25zLCBzaXplOiAyfSxcbiAgICAgICAgICBnZXRDb2xvcjoge3ZhbHVlOiBjaXJjbGVDb2xvcnMsIHNpemU6IDR9LFxuICAgICAgICAgIGdldEluUmFkaXVzOiB7dmFsdWU6IGluQ2lyY2xlUmFkaWksIHNpemU6IDF9LFxuICAgICAgICAgIGdldE91dFJhZGl1czoge3ZhbHVlOiBvdXRDaXJjbGVSYWRpaSwgc2l6ZTogMX0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbGluZUF0dHJpYnV0ZXM6IHtcbiAgICAgICAgbGVuZ3RoOiBmbG93cy5sZW5ndGgsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICBnZXRTb3VyY2VQb3NpdGlvbjoge3ZhbHVlOiBzb3VyY2VQb3NpdGlvbnMsIHNpemU6IDJ9LFxuICAgICAgICAgIGdldFRhcmdldFBvc2l0aW9uOiB7dmFsdWU6IHRhcmdldFBvc2l0aW9ucywgc2l6ZTogMn0sXG4gICAgICAgICAgZ2V0VGhpY2tuZXNzOiB7dmFsdWU6IHRoaWNrbmVzc2VzLCBzaXplOiAxfSxcbiAgICAgICAgICBnZXRDb2xvcjoge3ZhbHVlOiBmbG93TGluZUNvbG9ycywgc2l6ZTogNH0sXG4gICAgICAgICAgZ2V0RW5kcG9pbnRPZmZzZXRzOiB7dmFsdWU6IGVuZHBvaW50T2Zmc2V0cywgc2l6ZTogMn0sXG4gICAgICAgICAgLi4uKHN0YWdnZXJpbmdWYWx1ZXNcbiAgICAgICAgICAgID8ge2dldFN0YWdnZXJpbmc6IHt2YWx1ZTogc3RhZ2dlcmluZ1ZhbHVlcywgc2l6ZTogMX19XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGdldExvY2F0aW9uc0luQmJveChcbiAgICB0cmVlOiBLREJ1c2hUcmVlLFxuICAgIGJib3g6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdLFxuICApOiBBcnJheTxMPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0cmVlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLl9nZXRMb2NhdGlvbnNJbkJib3hJbmRpY2VzKHRyZWUsIGJib3gpLm1hcChcbiAgICAgIChpZHg6IG51bWJlcikgPT4gdHJlZS5wb2ludHNbaWR4XSxcbiAgICApIGFzIEFycmF5PEw+O1xuICB9XG5cbiAgX2dldExvY2F0aW9uc0luQmJveEluZGljZXMoXG4gICAgdHJlZTogS0RCdXNoVHJlZSxcbiAgICBiYm94OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcbiAgKSB7XG4gICAgaWYgKCF0cmVlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IFtsb24xLCBsYXQxLCBsb24yLCBsYXQyXSA9IGJib3g7XG4gICAgY29uc3QgW3gxLCB5MSwgeDIsIHkyXSA9IFtsbmdYKGxvbjEpLCBsYXRZKGxhdDEpLCBsbmdYKGxvbjIpLCBsYXRZKGxhdDIpXTtcbiAgICByZXR1cm4gdHJlZS5yYW5nZShcbiAgICAgIE1hdGgubWluKHgxLCB4MiksXG4gICAgICBNYXRoLm1pbih5MSwgeTIpLFxuICAgICAgTWF0aC5tYXgoeDEsIHgyKSxcbiAgICAgIE1hdGgubWF4KHkxLCB5MiksXG4gICAgKTtcbiAgfVxuXG4gIGlzRmxvd0luU2VsZWN0aW9uKFxuICAgIGZsb3c6IEYgfCBBZ2dyZWdhdGVGbG93LFxuICAgIHNlbGVjdGVkTG9jYXRpb25zU2V0OiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZCxcbiAgICBsb2NhdGlvbkZpbHRlck1vZGU6IExvY2F0aW9uRmlsdGVyTW9kZSxcbiAgKSB7XG4gICAgY29uc3Qgb3JpZ2luID0gdGhpcy5hY2Nlc3NvcnMuZ2V0Rmxvd09yaWdpbklkKGZsb3cpO1xuICAgIGNvbnN0IGRlc3QgPSB0aGlzLmFjY2Vzc29ycy5nZXRGbG93RGVzdElkKGZsb3cpO1xuICAgIGlmIChzZWxlY3RlZExvY2F0aW9uc1NldCkge1xuICAgICAgc3dpdGNoIChsb2NhdGlvbkZpbHRlck1vZGUpIHtcbiAgICAgICAgY2FzZSBMb2NhdGlvbkZpbHRlck1vZGUuQUxMOlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBzZWxlY3RlZExvY2F0aW9uc1NldC5oYXMob3JpZ2luKSB8fCBzZWxlY3RlZExvY2F0aW9uc1NldC5oYXMoZGVzdClcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlIExvY2F0aW9uRmlsdGVyTW9kZS5CRVRXRUVOOlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBzZWxlY3RlZExvY2F0aW9uc1NldC5oYXMob3JpZ2luKSAmJiBzZWxlY3RlZExvY2F0aW9uc1NldC5oYXMoZGVzdClcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlIExvY2F0aW9uRmlsdGVyTW9kZS5JTkNPTUlORzpcbiAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRMb2NhdGlvbnNTZXQuaGFzKGRlc3QpO1xuICAgICAgICBjYXNlIExvY2F0aW9uRmlsdGVyTW9kZS5PVVRHT0lORzpcbiAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRMb2NhdGlvbnNTZXQuaGFzKG9yaWdpbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gY2FsY0xvY2F0aW9uVG90YWxzKFxuICAvLyAgIGxvY2F0aW9uczogKEwgfCBDbHVzdGVyTm9kZSlbXSxcbiAgLy8gICBmbG93czogRltdLFxuICAvLyApOiBMb2NhdGlvbnNUb3RhbHMge1xuICAvLyAgIHJldHVybiBmbG93cy5yZWR1Y2UoXG4gIC8vICAgICAoYWNjOiBMb2NhdGlvbnNUb3RhbHMsIGN1cnIpID0+IHtcbiAgLy8gICAgICAgY29uc3Qgb3JpZ2luSWQgPSB0aGlzLmFjY2Vzc29ycy5nZXRGbG93T3JpZ2luSWQoY3Vycik7XG4gIC8vICAgICAgIGNvbnN0IGRlc3RJZCA9IHRoaXMuYWNjZXNzb3JzLmdldEZsb3dEZXN0SWQoY3Vycik7XG4gIC8vICAgICAgIGNvbnN0IG1hZ25pdHVkZSA9IHRoaXMuYWNjZXNzb3JzLmdldEZsb3dNYWduaXR1ZGUoY3Vycik7XG4gIC8vICAgICAgIGlmIChvcmlnaW5JZCA9PT0gZGVzdElkKSB7XG4gIC8vICAgICAgICAgYWNjLmludGVybmFsW29yaWdpbklkXSA9IChhY2MuaW50ZXJuYWxbb3JpZ2luSWRdIHx8IDApICsgbWFnbml0dWRlO1xuICAvLyAgICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAgIGFjYy5vdXRnb2luZ1tvcmlnaW5JZF0gPSAoYWNjLm91dGdvaW5nW29yaWdpbklkXSB8fCAwKSArIG1hZ25pdHVkZTtcbiAgLy8gICAgICAgICBhY2MuaW5jb21pbmdbZGVzdElkXSA9IChhY2MuaW5jb21pbmdbZGVzdElkXSB8fCAwKSArIG1hZ25pdHVkZTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICByZXR1cm4gYWNjO1xuICAvLyAgICAgfSxcbiAgLy8gICAgIHtpbmNvbWluZzoge30sIG91dGdvaW5nOiB7fSwgaW50ZXJuYWw6IHt9fSxcbiAgLy8gICApO1xuICAvLyB9XG59XG5cbmZ1bmN0aW9uIGNhbGNMb2NhdGlvblRvdGFsc0V4dGVudChcbiAgbG9jYXRpb25Ub3RhbHM6IE1hcDxzdHJpbmcsIExvY2F0aW9uVG90YWxzPiB8IHVuZGVmaW5lZCxcbiAgbG9jYXRpb25JZHNJblZpZXdwb3J0OiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZCxcbikge1xuICBpZiAoIWxvY2F0aW9uVG90YWxzKSByZXR1cm4gdW5kZWZpbmVkO1xuICBsZXQgcnY6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3QgW1xuICAgIGlkLFxuICAgIHtpbmNvbWluZ0NvdW50LCBvdXRnb2luZ0NvdW50LCBpbnRlcm5hbENvdW50fSxcbiAgXSBvZiBsb2NhdGlvblRvdGFscy5lbnRyaWVzKCkpIHtcbiAgICBpZiAobG9jYXRpb25JZHNJblZpZXdwb3J0ID09IG51bGwgfHwgbG9jYXRpb25JZHNJblZpZXdwb3J0LmhhcyhpZCkpIHtcbiAgICAgIGNvbnN0IGxvID0gTWF0aC5taW4oXG4gICAgICAgIGluY29taW5nQ291bnQgKyBpbnRlcm5hbENvdW50LFxuICAgICAgICBvdXRnb2luZ0NvdW50ICsgaW50ZXJuYWxDb3VudCxcbiAgICAgICAgaW50ZXJuYWxDb3VudCxcbiAgICAgICk7XG4gICAgICBjb25zdCBoaSA9IE1hdGgubWF4KFxuICAgICAgICBpbmNvbWluZ0NvdW50ICsgaW50ZXJuYWxDb3VudCxcbiAgICAgICAgb3V0Z29pbmdDb3VudCArIGludGVybmFsQ291bnQsXG4gICAgICAgIGludGVybmFsQ291bnQsXG4gICAgICApO1xuICAgICAgaWYgKCFydikge1xuICAgICAgICBydiA9IFtsbywgaGldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGxvIDwgcnZbMF0pIHJ2WzBdID0gbG87XG4gICAgICAgIGlmIChoaSA+IHJ2WzFdKSBydlsxXSA9IGhpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcnY7XG59XG5cbi8vIGxvbmdpdHVkZS9sYXRpdHVkZSB0byBzcGhlcmljYWwgbWVyY2F0b3IgaW4gWzAuLjFdIHJhbmdlXG5mdW5jdGlvbiBsbmdYKGxuZzogbnVtYmVyKSB7XG4gIHJldHVybiBsbmcgLyAzNjAgKyAwLjU7XG59XG5cbmZ1bmN0aW9uIGxhdFkobGF0OiBudW1iZXIpIHtcbiAgY29uc3Qgc2luID0gTWF0aC5zaW4oKGxhdCAqIE1hdGguUEkpIC8gMTgwKTtcbiAgY29uc3QgeSA9IDAuNSAtICgwLjI1ICogTWF0aC5sb2coKDEgKyBzaW4pIC8gKDEgLSBzaW4pKSkgLyBNYXRoLlBJO1xuICByZXR1cm4geSA8IDAgPyAwIDogeSA+IDEgPyAxIDogeTtcbn1cblxuZnVuY3Rpb24gYWdncmVnYXRlRmxvd3M8Rj4oXG4gIGZsb3dzOiBGW10sXG4gIGZsb3dBY2Nlc3NvcnM6IEZsb3dBY2Nlc3NvcnM8Rj4sXG4pOiBBZ2dyZWdhdGVGbG93W10ge1xuICAvLyBTdW0gdXAgZmxvd3Mgd2l0aCBzYW1lIG9yaWdpbiwgZGVzdFxuICBjb25zdCBieU9yaWdpbkRlc3QgPSBuZXN0PEYsIEFnZ3JlZ2F0ZUZsb3c+KClcbiAgICAua2V5KGZsb3dBY2Nlc3NvcnMuZ2V0Rmxvd09yaWdpbklkKVxuICAgIC5rZXkoZmxvd0FjY2Vzc29ycy5nZXRGbG93RGVzdElkKVxuICAgIC5yb2xsdXAoKGZmOiBGW10pID0+IHtcbiAgICAgIGNvbnN0IG9yaWdpbiA9IGZsb3dBY2Nlc3NvcnMuZ2V0Rmxvd09yaWdpbklkKGZmWzBdKTtcbiAgICAgIGNvbnN0IGRlc3QgPSBmbG93QWNjZXNzb3JzLmdldEZsb3dEZXN0SWQoZmZbMF0pO1xuICAgICAgLy8gY29uc3QgY29sb3IgPSBmZlswXS5jb2xvcjtcbiAgICAgIGNvbnN0IHJ2OiBBZ2dyZWdhdGVGbG93ID0ge1xuICAgICAgICBhZ2dyZWdhdGU6IHRydWUsXG4gICAgICAgIG9yaWdpbixcbiAgICAgICAgZGVzdCxcbiAgICAgICAgY291bnQ6IGZmLnJlZHVjZSgobSwgZikgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvdW50ID0gZmxvd0FjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGYpO1xuICAgICAgICAgIGlmIChjb3VudCkge1xuICAgICAgICAgICAgaWYgKCFpc05hTihjb3VudCkgJiYgaXNGaW5pdGUoY291bnQpKSByZXR1cm4gbSArIGNvdW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbTtcbiAgICAgICAgfSwgMCksXG4gICAgICAgIC8vIHRpbWU6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgICAvLyBpZiAoY29sb3IpIHJ2LmNvbG9yID0gY29sb3I7XG4gICAgICByZXR1cm4gcnY7XG4gICAgfSlcbiAgICAuZW50cmllcyhmbG93cyk7XG4gIGNvbnN0IHJ2OiBBZ2dyZWdhdGVGbG93W10gPSBbXTtcbiAgZm9yIChjb25zdCB7dmFsdWVzfSBvZiBieU9yaWdpbkRlc3QpIHtcbiAgICBmb3IgKGNvbnN0IHt2YWx1ZX0gb2YgdmFsdWVzKSB7XG4gICAgICBydi5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJ2O1xufVxuXG4vKipcbiAqIFRoaXMgaXMgdXNlZCB0byBhdWdtZW50IGhvdmVyIHBpY2tpbmcgaW5mbyBzbyB0aGF0IHdlIGNhbiBkaXNwbGFjZSBsb2NhdGlvbiB0b29sdGlwXG4gKiBAcGFyYW0gY2lyY2xlQXR0cmlidXRlc1xuICogQHBhcmFtIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPdXRlckNpcmNsZVJhZGl1c0J5SW5kZXgoXG4gIGNpcmNsZUF0dHJpYnV0ZXM6IEZsb3dDaXJjbGVzTGF5ZXJBdHRyaWJ1dGVzLFxuICBpbmRleDogbnVtYmVyLFxuKTogbnVtYmVyIHtcbiAgY29uc3Qge2dldEluUmFkaXVzLCBnZXRPdXRSYWRpdXN9ID0gY2lyY2xlQXR0cmlidXRlcy5hdHRyaWJ1dGVzO1xuICByZXR1cm4gTWF0aC5tYXgoZ2V0SW5SYWRpdXMudmFsdWVbaW5kZXhdLCBnZXRPdXRSYWRpdXMudmFsdWVbaW5kZXhdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2F0aW9uQ29vcmRzQnlJbmRleChcbiAgY2lyY2xlQXR0cmlidXRlczogRmxvd0NpcmNsZXNMYXllckF0dHJpYnV0ZXMsXG4gIGluZGV4OiBudW1iZXIsXG4pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3Qge2dldFBvc2l0aW9ufSA9IGNpcmNsZUF0dHJpYnV0ZXMuYXR0cmlidXRlcztcbiAgcmV0dXJuIFtnZXRQb3NpdGlvbi52YWx1ZVtpbmRleCAqIDJdLCBnZXRQb3NpdGlvbi52YWx1ZVtpbmRleCAqIDIgKyAxXV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGbG93TGluZUF0dHJpYnV0ZXNCeUluZGV4KFxuICBsaW5lQXR0cmlidXRlczogRmxvd0xpbmVzTGF5ZXJBdHRyaWJ1dGVzLFxuICBpbmRleDogbnVtYmVyLFxuKTogRmxvd0xpbmVzTGF5ZXJBdHRyaWJ1dGVzIHtcbiAgY29uc3Qge1xuICAgIGdldENvbG9yLFxuICAgIGdldEVuZHBvaW50T2Zmc2V0cyxcbiAgICBnZXRTb3VyY2VQb3NpdGlvbixcbiAgICBnZXRUYXJnZXRQb3NpdGlvbixcbiAgICBnZXRUaGlja25lc3MsXG4gICAgZ2V0U3RhZ2dlcmluZyxcbiAgfSA9IGxpbmVBdHRyaWJ1dGVzLmF0dHJpYnV0ZXM7XG4gIHJldHVybiB7XG4gICAgbGVuZ3RoOiAxLFxuICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgIGdldENvbG9yOiB7XG4gICAgICAgIHZhbHVlOiBnZXRDb2xvci52YWx1ZS5zdWJhcnJheShpbmRleCAqIDQsIChpbmRleCArIDEpICogNCksXG4gICAgICAgIHNpemU6IDQsXG4gICAgICB9LFxuICAgICAgZ2V0RW5kcG9pbnRPZmZzZXRzOiB7XG4gICAgICAgIHZhbHVlOiBnZXRFbmRwb2ludE9mZnNldHMudmFsdWUuc3ViYXJyYXkoaW5kZXggKiAyLCAoaW5kZXggKyAxKSAqIDIpLFxuICAgICAgICBzaXplOiAyLFxuICAgICAgfSxcbiAgICAgIGdldFNvdXJjZVBvc2l0aW9uOiB7XG4gICAgICAgIHZhbHVlOiBnZXRTb3VyY2VQb3NpdGlvbi52YWx1ZS5zdWJhcnJheShpbmRleCAqIDIsIChpbmRleCArIDEpICogMiksXG4gICAgICAgIHNpemU6IDIsXG4gICAgICB9LFxuICAgICAgZ2V0VGFyZ2V0UG9zaXRpb246IHtcbiAgICAgICAgdmFsdWU6IGdldFRhcmdldFBvc2l0aW9uLnZhbHVlLnN1YmFycmF5KGluZGV4ICogMiwgKGluZGV4ICsgMSkgKiAyKSxcbiAgICAgICAgc2l6ZTogMixcbiAgICAgIH0sXG4gICAgICBnZXRUaGlja25lc3M6IHtcbiAgICAgICAgdmFsdWU6IGdldFRoaWNrbmVzcy52YWx1ZS5zdWJhcnJheShpbmRleCwgaW5kZXggKyAxKSxcbiAgICAgICAgc2l6ZTogMSxcbiAgICAgIH0sXG4gICAgICAuLi4oZ2V0U3RhZ2dlcmluZ1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIGdldFN0YWdnZXJpbmc6IHtcbiAgICAgICAgICAgICAgdmFsdWU6IGdldFN0YWdnZXJpbmcudmFsdWUuc3ViYXJyYXkoaW5kZXgsIGluZGV4ICsgMSksXG4gICAgICAgICAgICAgIHNpemU6IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgIH0sXG4gIH07XG59XG4iXX0=\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/data/dist/FlowmapSelectors.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/data/dist/FlowmapState.js": | |
/*!************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/data/dist/FlowmapState.js ***! | |
\************************************************************/ | |
/*! no exports provided */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd21hcFN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Zsb3dtYXBTdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMb2NhdGlvbkZpbHRlck1vZGUsIFZpZXdwb3J0UHJvcHN9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclN0YXRlIHtcbiAgc2VsZWN0ZWRMb2NhdGlvbnM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICBzZWxlY3RlZFRpbWVSYW5nZTogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkO1xuICBsb2NhdGlvbkZpbHRlck1vZGU6IExvY2F0aW9uRmlsdGVyTW9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXR0aW5nc1N0YXRlIHtcbiAgYW5pbWF0aW9uRW5hYmxlZDogYm9vbGVhbjtcbiAgZmFkZUVuYWJsZWQ6IGJvb2xlYW47XG4gIGZhZGVPcGFjaXR5RW5hYmxlZDogYm9vbGVhbjtcbiAgbG9jYXRpb25Ub3RhbHNFbmFibGVkOiBib29sZWFuO1xuICBhZGFwdGl2ZVNjYWxlc0VuYWJsZWQ6IGJvb2xlYW47XG4gIGNsdXN0ZXJpbmdFbmFibGVkOiBib29sZWFuO1xuICBjbHVzdGVyaW5nQXV0bzogYm9vbGVhbjtcbiAgY2x1c3RlcmluZ0xldmVsPzogbnVtYmVyO1xuICBkYXJrTW9kZTogYm9vbGVhbjtcbiAgZmFkZUFtb3VudDogbnVtYmVyO1xuICBjb2xvclNjaGVtZTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIGhpZ2hsaWdodENvbG9yOiBzdHJpbmc7XG4gIG1heFRvcEZsb3dzRGlzcGxheU51bTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dtYXBTdGF0ZSB7XG4gIGZpbHRlclN0YXRlOiBGaWx0ZXJTdGF0ZTtcbiAgc2V0dGluZ3NTdGF0ZTogU2V0dGluZ3NTdGF0ZTtcbiAgdmlld3BvcnQ6IFZpZXdwb3J0UHJvcHM7XG59XG4iXX0=\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/data/dist/FlowmapState.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/data/dist/cluster/ClusterIndex.js": | |
/*!********************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/data/dist/cluster/ClusterIndex.js ***! | |
\********************************************************************/ | |
/*! exports provided: buildIndex, makeLocationWeightGetter, findAppropriateZoomLevel */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"buildIndex\", function() { return buildIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeLocationWeightGetter\", function() { return makeLocationWeightGetter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findAppropriateZoomLevel\", function() { return findAppropriateZoomLevel; });\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../types */ \"./node_modules/@flowmap.gl/data/dist/types.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/*\n * Copyright 2022 FlowmapBlue\n * Copyright 2018-2020 Teralytics, modified by FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\n/**\n * Build ClusterIndex from the given cluster hierarchy\n */\nfunction buildIndex(clusterLevels) {\n const nodesByZoom = new Map();\n const clustersById = new Map();\n const minZoomByLocationId = new Map();\n for (const { zoom, nodes } of clusterLevels) {\n nodesByZoom.set(zoom, nodes);\n for (const node of nodes) {\n if (Object(_types__WEBPACK_IMPORTED_MODULE_0__[\"isCluster\"])(node)) {\n clustersById.set(node.id, node);\n }\n else {\n const { id } = node;\n const mz = minZoomByLocationId.get(id);\n if (mz == null || mz > zoom) {\n minZoomByLocationId.set(id, zoom);\n }\n }\n }\n }\n const [minZoom, maxZoom] = Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"extent\"])(clusterLevels, (cl) => cl.zoom);\n if (minZoom == null || maxZoom == null) {\n throw new Error('Could not determine minZoom or maxZoom');\n }\n const leavesToClustersByZoom = new Map();\n for (const cluster of clustersById.values()) {\n const { zoom } = cluster;\n let leavesToClusters = leavesToClustersByZoom.get(zoom);\n if (!leavesToClusters) {\n leavesToClusters = new Map();\n leavesToClustersByZoom.set(zoom, leavesToClusters);\n }\n visitClusterLeaves(cluster, (leafId) => {\n leavesToClusters === null || leavesToClusters === void 0 ? void 0 : leavesToClusters.set(leafId, cluster);\n });\n }\n function visitClusterLeaves(cluster, visit) {\n for (const childId of cluster.children) {\n const child = clustersById.get(childId);\n if (child) {\n visitClusterLeaves(child, visit);\n }\n else {\n visit(childId);\n }\n }\n }\n const expandCluster = (cluster, targetZoom = maxZoom) => {\n const ids = [];\n const visit = (c, expandedIds) => {\n if (targetZoom > c.zoom) {\n for (const childId of c.children) {\n const child = clustersById.get(childId);\n if (child) {\n visit(child, expandedIds);\n }\n else {\n expandedIds.push(childId);\n }\n }\n }\n else {\n expandedIds.push(c.id);\n }\n };\n visit(cluster, ids);\n return ids;\n };\n function findClusterFor(locationId, zoom) {\n const leavesToClusters = leavesToClustersByZoom.get(zoom);\n if (!leavesToClusters) {\n return undefined;\n }\n const cluster = leavesToClusters.get(locationId);\n return cluster ? cluster.id : undefined;\n }\n const availableZoomLevels = clusterLevels\n .map((cl) => +cl.zoom)\n .sort((a, b) => Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"ascending\"])(a, b));\n return {\n availableZoomLevels,\n getClusterNodesFor: (zoom) => {\n if (zoom === undefined) {\n return undefined;\n }\n return nodesByZoom.get(zoom);\n },\n getClusterById: (clusterId) => clustersById.get(clusterId),\n getMinZoomForLocation: (locationId) => minZoomByLocationId.get(locationId) || minZoom,\n expandCluster,\n findClusterFor,\n aggregateFlows: (flows, zoom, { getFlowOriginId, getFlowDestId, getFlowMagnitude }, options = {}) => {\n if (zoom > maxZoom) {\n return flows;\n }\n const result = [];\n const aggFlowsByKey = new Map();\n const makeKey = (origin, dest) => `${origin}:${dest}`;\n const { flowCountsMapReduce = {\n map: getFlowMagnitude,\n reduce: (acc, count) => (acc || 0) + count,\n }, } = options;\n for (const flow of flows) {\n const origin = getFlowOriginId(flow);\n const dest = getFlowDestId(flow);\n const originCluster = findClusterFor(origin, zoom) || origin;\n const destCluster = findClusterFor(dest, zoom) || dest;\n const key = makeKey(originCluster, destCluster);\n if (originCluster === origin && destCluster === dest) {\n result.push(flow);\n }\n else {\n let aggregateFlow = aggFlowsByKey.get(key);\n if (!aggregateFlow) {\n aggregateFlow = {\n origin: originCluster,\n dest: destCluster,\n count: flowCountsMapReduce.map(flow),\n aggregate: true,\n };\n result.push(aggregateFlow);\n aggFlowsByKey.set(key, aggregateFlow);\n }\n else {\n aggregateFlow.count = flowCountsMapReduce.reduce(aggregateFlow.count, flowCountsMapReduce.map(flow));\n }\n }\n }\n return result;\n },\n };\n}\nfunction makeLocationWeightGetter(flows, { getFlowOriginId, getFlowDestId, getFlowMagnitude }) {\n const locationTotals = {\n incoming: new Map(),\n outgoing: new Map(),\n };\n for (const flow of flows) {\n const origin = getFlowOriginId(flow);\n const dest = getFlowDestId(flow);\n const count = getFlowMagnitude(flow);\n locationTotals.incoming.set(dest, (locationTotals.incoming.get(dest) || 0) + count);\n locationTotals.outgoing.set(origin, (locationTotals.outgoing.get(origin) || 0) + count);\n }\n return (id) => Math.max(Math.abs(locationTotals.incoming.get(id) || 0), Math.abs(locationTotals.outgoing.get(id) || 0));\n}\n/**\n * @param availableZoomLevels Must be sorted in ascending order\n * @param targetZoom\n */\nfunction findAppropriateZoomLevel(availableZoomLevels, targetZoom) {\n if (!availableZoomLevels.length) {\n throw new Error('No available zoom levels');\n }\n return availableZoomLevels[Math.min(Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"bisectLeft\"])(availableZoomLevels, Math.floor(targetZoom)), availableZoomLevels.length - 1)];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlckluZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsdXN0ZXIvQ2x1c3RlckluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsT0FBTyxFQU9MLFNBQVMsR0FDVixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUF1Q3ZEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBSSxhQUE0QjtJQUN4RCxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztJQUNyRCxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztJQUNoRCxNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQ3RELEtBQUssTUFBTSxFQUFDLElBQUksRUFBRSxLQUFLLEVBQUMsSUFBSSxhQUFhLEVBQUU7UUFDekMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0IsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ25CLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNqQztpQkFBTTtnQkFDTCxNQUFNLEVBQUMsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixNQUFNLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFO29CQUMzQixtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUNuQzthQUNGO1NBQ0Y7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QUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzlDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQy9DLENBQUM7QUFDTixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxtQkFBNkIsRUFDN0IsVUFBa0I7SUFFbEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7S0FDN0M7SUFDRCxPQUFPLG1CQUFtQixDQUN4QixJQUFJLENBQUMsR0FBRyxDQUNOLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQ3ZELG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQy9CLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjIgRmxvd21hcEJsdWVcbiAqIENvcHlyaWdodCAyMDE4LTIwMjAgVGVyYWx5dGljcywgbW9kaWZpZWQgYnkgRmxvd21hcEJsdWVcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHtcbiAgQWdncmVnYXRlRmxvdyxcbiAgQ2x1c3RlcixcbiAgQ2x1c3RlckxldmVscyxcbiAgQ2x1c3Rlck5vZGUsXG4gIEZsb3dBY2Nlc3NvcnMsXG4gIEZsb3dDb3VudHNNYXBSZWR1Y2UsXG4gIGlzQ2x1c3Rlcixcbn0gZnJvbSAnLi8uLi90eXBlcyc7XG5pbXBvcnQge2FzY2VuZGluZywgYmlzZWN0TGVmdCwgZXh0ZW50fSBmcm9tICdkMy1hcnJheSc7XG5cbmV4cG9ydCB0eXBlIExvY2F0aW9uV2VpZ2h0R2V0dGVyID0gKGlkOiBzdHJpbmcpID0+IG51bWJlcjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHJlcHJlc2VudGluZyB0aGUgY2x1c3RlciBsZXZlbHMgZm9yIGVmZmljaWVudCBmbG93IGFnZ3JlZ2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJJbmRleDxGPiB7XG4gIGF2YWlsYWJsZVpvb21MZXZlbHM6IG51bWJlcltdO1xuICBnZXRDbHVzdGVyQnlJZDogKGNsdXN0ZXJJZDogc3RyaW5nKSA9PiBDbHVzdGVyIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogTGlzdCB0aGUgbm9kZXMgb24gdGhlIGdpdmVuIHpvb20gbGV2ZWwuXG4gICAqL1xuICBnZXRDbHVzdGVyTm9kZXNGb3I6ICh6b29tOiBudW1iZXIgfCB1bmRlZmluZWQpID0+IENsdXN0ZXJOb2RlW10gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBHZXQgdGhlIG1pbiB6b29tIGxldmVsIG9uIHdoaWNoIHRoZSBsb2NhdGlvbiBpcyBub3QgY2x1c3RlcmVkLlxuICAgKi9cbiAgZ2V0TWluWm9vbUZvckxvY2F0aW9uOiAobG9jYXRpb25JZDogc3RyaW5nKSA9PiBudW1iZXI7XG4gIC8qKlxuICAgKiBMaXN0IHRoZSBJRHMgb2YgYWxsIGxvY2F0aW9ucyBpbiB0aGUgY2x1c3RlciAobGVhdmVzIG9mIHRoZSBzdWJ0cmVlIHN0YXJ0aW5nIGluIHRoZSBjbHVzdGVyKS5cbiAgICovXG4gIGV4cGFuZENsdXN0ZXI6IChjbHVzdGVyOiBDbHVzdGVyLCB0YXJnZXRab29tPzogbnVtYmVyKSA9PiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEZpbmQgdGhlIGNsdXN0ZXIgdGhlIGdpdmVuIGxvY2F0aW9uIGlzIHJlc2lkaW5nIGluIG9uIHRoZSBzcGVjaWZpZWQgem9vbSBsZXZlbC5cbiAgICovXG4gIGZpbmRDbHVzdGVyRm9yOiAobG9jYXRpb25JZDogc3RyaW5nLCB6b29tOiBudW1iZXIpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEFnZ3JlZ2F0ZSBmbG93cyBmb3IgdGhlIHNwZWNpZmllZCB6b29tIGxldmVsLlxuICAgKi9cbiAgYWdncmVnYXRlRmxvd3M6IChcbiAgICBmbG93czogRltdLFxuICAgIHpvb206IG51bWJlcixcbiAgICB7Z2V0Rmxvd09yaWdpbklkLCBnZXRGbG93RGVzdElkLCBnZXRGbG93TWFnbml0dWRlfTogRmxvd0FjY2Vzc29yczxGPixcbiAgICBvcHRpb25zPzoge1xuICAgICAgZmxvd0NvdW50c01hcFJlZHVjZT86IEZsb3dDb3VudHNNYXBSZWR1Y2U8Rj47XG4gICAgfSxcbiAgKSA9PiAoRiB8IEFnZ3JlZ2F0ZUZsb3cpW107XG59XG5cbi8qKlxuICogQnVpbGQgQ2x1c3RlckluZGV4IGZyb20gdGhlIGdpdmVuIGNsdXN0ZXIgaGllcmFyY2h5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEluZGV4PEY+KGNsdXN0ZXJMZXZlbHM6IENsdXN0ZXJMZXZlbHMpOiBDbHVzdGVySW5kZXg8Rj4ge1xuICBjb25zdCBub2Rlc0J5Wm9vbSA9IG5ldyBNYXA8bnVtYmVyLCBDbHVzdGVyTm9kZVtdPigpO1xuICBjb25zdCBjbHVzdGVyc0J5SWQgPSBuZXcgTWFwPHN0cmluZywgQ2x1c3Rlcj4oKTtcbiAgY29uc3QgbWluWm9vbUJ5TG9jYXRpb25JZCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIGZvciAoY29uc3Qge3pvb20sIG5vZGVzfSBvZiBjbHVzdGVyTGV2ZWxzKSB7XG4gICAgbm9kZXNCeVpvb20uc2V0KHpvb20sIG5vZGVzKTtcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgIGlmIChpc0NsdXN0ZXIobm9kZSkpIHtcbiAgICAgICAgY2x1c3RlcnNCeUlkLnNldChub2RlLmlkLCBub2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHtpZH0gPSBub2RlO1xuICAgICAgICBjb25zdCBteiA9IG1pblpvb21CeUxvY2F0aW9uSWQuZ2V0KGlkKTtcbiAgICAgICAgaWYgKG16ID09IG51bGwgfHwgbXogPiB6b29tKSB7XG4gICAgICAgICAgbWluWm9vbUJ5TG9jYXRpb25JZC5zZXQoaWQsIHpvb20pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgW21pblpvb20sIG1heFpvb21dID0gZXh0ZW50KGNsdXN0ZXJMZXZlbHMsIChjbCkgPT4gY2wuem9vbSk7XG4gIGlmIChtaW5ab29tID09IG51bGwgfHwgbWF4Wm9vbSA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZGV0ZXJtaW5lIG1pblpvb20gb3IgbWF4Wm9vbScpO1xuICB9XG5cbiAgY29uc3QgbGVhdmVzVG9DbHVzdGVyc0J5Wm9vbSA9IG5ldyBNYXA8bnVtYmVyLCBNYXA8c3RyaW5nLCBDbHVzdGVyPj4oKTtcblxuICBmb3IgKGNvbnN0IGNsdXN0ZXIgb2YgY2x1c3RlcnNCeUlkLnZhbHVlcygpKSB7XG4gICAgY29uc3Qge3pvb219ID0gY2x1c3RlcjtcbiAgICBsZXQgbGVhdmVzVG9DbHVzdGVycyA9IGxlYXZlc1RvQ2x1c3RlcnNCeVpvb20uZ2V0KHpvb20pO1xuICAgIGlmICghbGVhdmVzVG9DbHVzdGVycykge1xuICAgICAgbGVhdmVzVG9DbHVzdGVycyA9IG5ldyBNYXA8c3RyaW5nLCBDbHVzdGVyPigpO1xuICAgICAgbGVhdmVzVG9DbHVzdGVyc0J5Wm9vbS5zZXQoem9vbSwgbGVhdmVzVG9DbHVzdGVycyk7XG4gICAgfVxuICAgIHZpc2l0Q2x1c3RlckxlYXZlcyhjbHVzdGVyLCAobGVhZklkKSA9PiB7XG4gICAgICBsZWF2ZXNUb0NsdXN0ZXJzPy5zZXQobGVhZklkLCBjbHVzdGVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZpc2l0Q2x1c3RlckxlYXZlcyhjbHVzdGVyOiBDbHVzdGVyLCB2aXNpdDogKGlkOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkSWQgb2YgY2x1c3Rlci5jaGlsZHJlbikge1xuICAgICAgY29uc3QgY2hpbGQgPSBjbHVzdGVyc0J5SWQuZ2V0KGNoaWxkSWQpO1xuICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgIHZpc2l0Q2x1c3RlckxlYXZlcyhjaGlsZCwgdmlzaXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmlzaXQoY2hpbGRJZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZXhwYW5kQ2x1c3RlciA9IChjbHVzdGVyOiBDbHVzdGVyLCB0YXJnZXRab29tOiBudW1iZXIgPSBtYXhab29tKSA9PiB7XG4gICAgY29uc3QgaWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHZpc2l0ID0gKGM6IENsdXN0ZXIsIGV4cGFuZGVkSWRzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgaWYgKHRhcmdldFpvb20gPiBjLnpvb20pIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZElkIG9mIGMuY2hpbGRyZW4pIHtcbiAgICAgICAgICBjb25zdCBjaGlsZCA9IGNsdXN0ZXJzQnlJZC5nZXQoY2hpbGRJZCk7XG4gICAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgICB2aXNpdChjaGlsZCwgZXhwYW5kZWRJZHMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBleHBhbmRlZElkcy5wdXNoKGNoaWxkSWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhwYW5kZWRJZHMucHVzaChjLmlkKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHZpc2l0KGNsdXN0ZXIsIGlkcyk7XG4gICAgcmV0dXJuIGlkcztcbiAgfTtcblxuICBmdW5jdGlvbiBmaW5kQ2x1c3RlckZvcihsb2NhdGlvbklkOiBzdHJpbmcsIHpvb206IG51bWJlcikge1xuICAgIGNvbnN0IGxlYXZlc1RvQ2x1c3RlcnMgPSBsZWF2ZXNUb0NsdXN0ZXJzQnlab29tLmdldCh6b29tKTtcbiAgICBpZiAoIWxlYXZlc1RvQ2x1c3RlcnMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGNsdXN0ZXIgPSBsZWF2ZXNUb0NsdXN0ZXJzLmdldChsb2NhdGlvbklkKTtcbiAgICByZXR1cm4gY2x1c3RlciA/IGNsdXN0ZXIuaWQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBhdmFpbGFibGVab29tTGV2ZWxzID0gY2x1c3RlckxldmVsc1xuICAgIC5tYXAoKGNsKSA9PiArY2wuem9vbSlcbiAgICAuc29ydCgoYSwgYikgPT4gYXNjZW5kaW5nKGEsIGIpKTtcblxuICByZXR1cm4ge1xuICAgIGF2YWlsYWJsZVpvb21MZXZlbHMsXG5cbiAgICBnZXRDbHVzdGVyTm9kZXNGb3I6ICh6b29tKSA9PiB7XG4gICAgICBpZiAoem9vbSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9kZXNCeVpvb20uZ2V0KHpvb20pO1xuICAgIH0sXG5cbiAgICBnZXRDbHVzdGVyQnlJZDogKGNsdXN0ZXJJZCkgPT4gY2x1c3RlcnNCeUlkLmdldChjbHVzdGVySWQpLFxuXG4gICAgZ2V0TWluWm9vbUZvckxvY2F0aW9uOiAobG9jYXRpb25JZCkgPT5cbiAgICAgIG1pblpvb21CeUxvY2F0aW9uSWQuZ2V0KGxvY2F0aW9uSWQpIHx8IG1pblpvb20sXG5cbiAgICBleHBhbmRDbHVzdGVyLFxuXG4gICAgZmluZENsdXN0ZXJGb3IsXG5cbiAgICBhZ2dyZWdhdGVGbG93czogKFxuICAgICAgZmxvd3MsXG4gICAgICB6b29tLFxuICAgICAge2dldEZsb3dPcmlnaW5JZCwgZ2V0Rmxvd0Rlc3RJZCwgZ2V0Rmxvd01hZ25pdHVkZX0sXG4gICAgICBvcHRpb25zID0ge30sXG4gICAgKSA9PiB7XG4gICAgICBpZiAoem9vbSA+IG1heFpvb20pIHtcbiAgICAgICAgcmV0dXJuIGZsb3dzO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0OiAoRiB8IEFnZ3JlZ2F0ZUZsb3cpW10gPSBbXTtcbiAgICAgIGNvbnN0IGFnZ0Zsb3dzQnlLZXkgPSBuZXcgTWFwPHN0cmluZywgQWdncmVnYXRlRmxvdz4oKTtcbiAgICAgIGNvbnN0IG1ha2VLZXkgPSAob3JpZ2luOiBzdHJpbmcsIGRlc3Q6IHN0cmluZykgPT4gYCR7b3JpZ2lufToke2Rlc3R9YDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZmxvd0NvdW50c01hcFJlZHVjZSA9IHtcbiAgICAgICAgICBtYXA6IGdldEZsb3dNYWduaXR1ZGUsXG4gICAgICAgICAgcmVkdWNlOiAoYWNjOiBhbnksIGNvdW50OiBudW1iZXIpID0+IChhY2MgfHwgMCkgKyBjb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH0gPSBvcHRpb25zO1xuICAgICAgZm9yIChjb25zdCBmbG93IG9mIGZsb3dzKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IGdldEZsb3dPcmlnaW5JZChmbG93KTtcbiAgICAgICAgY29uc3QgZGVzdCA9IGdldEZsb3dEZXN0SWQoZmxvdyk7XG4gICAgICAgIGNvbnN0IG9yaWdpbkNsdXN0ZXIgPSBmaW5kQ2x1c3RlckZvcihvcmlnaW4sIHpvb20pIHx8IG9yaWdpbjtcbiAgICAgICAgY29uc3QgZGVzdENsdXN0ZXIgPSBmaW5kQ2x1c3RlckZvcihkZXN0LCB6b29tKSB8fCBkZXN0O1xuICAgICAgICBjb25zdCBrZXkgPSBtYWtlS2V5KG9yaWdpbkNsdXN0ZXIsIGRlc3RDbHVzdGVyKTtcbiAgICAgICAgaWYgKG9yaWdpbkNsdXN0ZXIgPT09IG9yaWdpbiAmJiBkZXN0Q2x1c3RlciA9PT0gZGVzdCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGZsb3cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBhZ2dyZWdhdGVGbG93ID0gYWdnRmxvd3NCeUtleS5nZXQoa2V5KTtcbiAgICAgICAgICBpZiAoIWFnZ3JlZ2F0ZUZsb3cpIHtcbiAgICAgICAgICAgIGFnZ3JlZ2F0ZUZsb3cgPSB7XG4gICAgICAgICAgICAgIG9yaWdpbjogb3JpZ2luQ2x1c3RlcixcbiAgICAgICAgICAgICAgZGVzdDogZGVzdENsdXN0ZXIsXG4gICAgICAgICAgICAgIGNvdW50OiBmbG93Q291bnRzTWFwUmVkdWNlLm1hcChmbG93KSxcbiAgICAgICAgICAgICAgYWdncmVnYXRlOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFnZ3JlZ2F0ZUZsb3cpO1xuICAgICAgICAgICAgYWdnRmxvd3NCeUtleS5zZXQoa2V5LCBhZ2dyZWdhdGVGbG93KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWdncmVnYXRlRmxvdy5jb3VudCA9IGZsb3dDb3VudHNNYXBSZWR1Y2UucmVkdWNlKFxuICAgICAgICAgICAgICBhZ2dyZWdhdGVGbG93LmNvdW50LFxuICAgICAgICAgICAgICBmbG93Q291bnRzTWFwUmVkdWNlLm1hcChmbG93KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlTG9jYXRpb25XZWlnaHRHZXR0ZXI8Rj4oXG4gIGZsb3dzOiBGW10sXG4gIHtnZXRGbG93T3JpZ2luSWQsIGdldEZsb3dEZXN0SWQsIGdldEZsb3dNYWduaXR1ZGV9OiBGbG93QWNjZXNzb3JzPEY+LFxuKTogTG9jYXRpb25XZWlnaHRHZXR0ZXIge1xuICBjb25zdCBsb2NhdGlvblRvdGFscyA9IHtcbiAgICBpbmNvbWluZzogbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSxcbiAgICBvdXRnb2luZzogbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSxcbiAgfTtcbiAgZm9yIChjb25zdCBmbG93IG9mIGZsb3dzKSB7XG4gICAgY29uc3Qgb3JpZ2luID0gZ2V0Rmxvd09yaWdpbklkKGZsb3cpO1xuICAgIGNvbnN0IGRlc3QgPSBnZXRGbG93RGVzdElkKGZsb3cpO1xuICAgIGNvbnN0IGNvdW50ID0gZ2V0Rmxvd01hZ25pdHVkZShmbG93KTtcbiAgICBsb2NhdGlvblRvdGFscy5pbmNvbWluZy5zZXQoXG4gICAgICBkZXN0LFxuICAgICAgKGxvY2F0aW9uVG90YWxzLmluY29taW5nLmdldChkZXN0KSB8fCAwKSArIGNvdW50LFxuICAgICk7XG4gICAgbG9jYXRpb25Ub3RhbHMub3V0Z29pbmcuc2V0KFxuICAgICAgb3JpZ2luLFxuICAgICAgKGxvY2F0aW9uVG90YWxzLm91dGdvaW5nLmdldChvcmlnaW4pIHx8IDApICsgY291bnQsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gKGlkOiBzdHJpbmcpID0+XG4gICAgTWF0aC5tYXgoXG4gICAgICBNYXRoLmFicyhsb2NhdGlvblRvdGFscy5pbmNvbWluZy5nZXQoaWQpIHx8IDApLFxuICAgICAgTWF0aC5hYnMobG9jYXRpb25Ub3RhbHMub3V0Z29pbmcuZ2V0KGlkKSB8fCAwKSxcbiAgICApO1xufVxuXG4vKipcbiAqIEBwYXJhbSBhdmFpbGFibGVab29tTGV2ZWxzIE11c3QgYmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlclxuICogQHBhcmFtIHRhcmdldFpvb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBcHByb3ByaWF0ZVpvb21MZXZlbChcbiAgYXZhaWxhYmxlWm9vbUxldmVsczogbnVtYmVyW10sXG4gIHRhcmdldFpvb206IG51bWJlcixcbikge1xuICBpZiAoIWF2YWlsYWJsZVpvb21MZXZlbHMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBhdmFpbGFibGUgem9vbSBsZXZlbHMnKTtcbiAgfVxuICByZXR1cm4gYXZhaWxhYmxlWm9vbUxldmVsc1tcbiAgICBNYXRoLm1pbihcbiAgICAgIGJpc2VjdExlZnQoYXZhaWxhYmxlWm9vbUxldmVscywgTWF0aC5mbG9vcih0YXJnZXRab29tKSksXG4gICAgICBhdmFpbGFibGVab29tTGV2ZWxzLmxlbmd0aCAtIDEsXG4gICAgKVxuICBdO1xufVxuIl19\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/data/dist/cluster/ClusterIndex.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/data/dist/cluster/cluster.js": | |
/*!***************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/data/dist/cluster/cluster.js ***! | |
\***************************************************************/ | |
/*! exports provided: isLeafPoint, isClusterPoint, clusterLocations */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLeafPoint\", function() { return isLeafPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isClusterPoint\", function() { return isClusterPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterLocations\", function() { return clusterLocations; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var kdbush__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! kdbush */ \"./node_modules/kdbush/src/index.js\");\n/*\n * Copyright 2022 FlowmapBlue\n * Copyright 2018-2020 Teralytics, modified by FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/**\n * The code in this file is a based on https://github.com/mapbox/supercluster\n */\n// ISC License\n//\n// Copyright (c) 2016, Mapbox\n//\n// Permission to use, copy, modify, and/or distribute this software for any purpose\n// with or without fee is hereby granted, provided that the above copyright notice\n// and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n// FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n// OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n// THIS SOFTWARE.\n\n\nconst defaultOptions = {\n minZoom: 0,\n maxZoom: 16,\n radius: 40,\n extent: 512,\n nodeSize: 64,\n makeClusterName: (id, numPoints) => undefined,\n makeClusterId: (id) => `{[${id}]}`,\n};\nfunction isLeafPoint(p) {\n const { index } = p;\n return index != null;\n}\nfunction isClusterPoint(p) {\n const { id } = p;\n return id != null;\n}\nfunction clusterLocations(locations, locationAccessors, getLocationWeight, options) {\n const { getLocationLon, getLocationLat, getLocationId } = locationAccessors;\n const opts = Object.assign(Object.assign({}, defaultOptions), options);\n const { minZoom, maxZoom, nodeSize, makeClusterName, makeClusterId } = opts;\n const trees = new Array(maxZoom + 1);\n // generate a cluster object for each point and index input points into a KD-tree\n let clusters = new Array();\n let i = 0;\n for (const location of locations) {\n const x = getLocationLon(location);\n const y = getLocationLat(location);\n clusters.push({\n x: lngX(x),\n y: latY(y),\n weight: getLocationWeight(getLocationId(location)),\n zoom: Infinity,\n index: i,\n parentId: -1,\n location,\n });\n i++;\n }\n trees[maxZoom + 1] = new kdbush__WEBPACK_IMPORTED_MODULE_1__[\"default\"](clusters, getX, getY, nodeSize, Float32Array);\n // cluster points on max zoom, then cluster the results on previous zoom, etc.;\n // results in a cluster hierarchy across zoom levels\n for (let z = maxZoom; z >= minZoom; z--) {\n // create a new set of clusters for the zoom and index them with a KD-tree\n clusters = cluster(clusters, z, trees[z + 1], opts);\n trees[z] = new kdbush__WEBPACK_IMPORTED_MODULE_1__[\"default\"](clusters, getX, getY, nodeSize, Float32Array);\n }\n if (trees.length === 0) {\n return [];\n }\n const numbersOfClusters = trees.map((d) => d.points.length);\n const maxAvailZoom = numbersOfClusters.indexOf(numbersOfClusters[numbersOfClusters.length - 1]);\n const minAvailZoom = Math.min(maxAvailZoom, numbersOfClusters.lastIndexOf(numbersOfClusters[0]));\n const clusterLevels = new Array();\n for (let zoom = minAvailZoom; zoom <= maxAvailZoom; zoom++) {\n let childrenByParent;\n const tree = trees[zoom];\n if (zoom < maxAvailZoom) {\n childrenByParent = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"rollup\"])(trees[zoom + 1].points, (points) => points.map((p) => p.id ? makeClusterId(p.id) : getLocationId(p.location)), (point) => point.parentId);\n }\n const nodes = [];\n for (const point of tree.points) {\n const { x, y, numPoints, location } = point;\n if (isLeafPoint(point)) {\n nodes.push({\n id: getLocationId(location),\n zoom,\n lat: getLocationLat(location),\n lon: getLocationLon(location),\n });\n }\n else if (isClusterPoint(point)) {\n const { id } = point;\n const children = childrenByParent && childrenByParent.get(id);\n if (!children) {\n throw new Error(`Cluster ${id} doesn't have children`);\n }\n nodes.push({\n id: makeClusterId(id),\n name: makeClusterName(id, numPoints),\n zoom,\n lat: yLat(y),\n lon: xLng(x),\n children,\n });\n }\n }\n clusterLevels.push({\n zoom,\n nodes,\n });\n }\n return clusterLevels;\n}\nfunction createCluster(x, y, id, numPoints, weight) {\n return {\n x,\n y,\n zoom: Infinity,\n id,\n parentId: -1,\n numPoints,\n weight,\n };\n}\nfunction cluster(points, zoom, tree, options) {\n const clusters = [];\n const { radius, extent } = options;\n const r = radius / (extent * Math.pow(2, zoom));\n // loop through each point\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n // if we've already visited the point at this zoom level, skip it\n if (p.zoom <= zoom) {\n continue;\n }\n p.zoom = zoom;\n // find all nearby points\n const neighborIds = tree.within(p.x, p.y, r);\n let weight = p.weight || 1;\n let numPoints = isClusterPoint(p) ? p.numPoints : 1;\n let wx = p.x * weight;\n let wy = p.y * weight;\n // encode both zoom and point index on which the cluster originated\n const id = (i << 5) + (zoom + 1);\n for (const neighborId of neighborIds) {\n const b = tree.points[neighborId];\n // filter out neighbors that are already processed\n if (b.zoom <= zoom) {\n continue;\n }\n b.zoom = zoom; // save the zoom (so it doesn't get processed twice)\n const weight2 = b.weight || 1;\n const numPoints2 = b.numPoints || 1;\n wx += b.x * weight2; // accumulate coordinates for calculating weighted center\n wy += b.y * weight2;\n weight += weight2;\n numPoints += numPoints2;\n b.parentId = id;\n }\n if (numPoints === 1) {\n clusters.push(p);\n }\n else {\n p.parentId = id;\n clusters.push(createCluster(wx / weight, wy / weight, id, numPoints, weight));\n }\n }\n return clusters;\n}\n// spherical mercator to longitude/latitude\nfunction xLng(x) {\n return (x - 0.5) * 360;\n}\nfunction yLat(y) {\n const y2 = ((180 - y * 360) * Math.PI) / 180;\n return (360 * Math.atan(Math.exp(y2))) / Math.PI - 90;\n}\n// longitude/latitude to spherical mercator in [0..1] range\nfunction lngX(lng) {\n return lng / 360 + 0.5;\n}\nfunction latY(lat) {\n const sin = Math.sin((lat * Math.PI) / 180);\n const y = 0.5 - (0.25 * Math.log((1 + sin) / (1 - sin))) / Math.PI;\n return y < 0 ? 0 : y > 1 ? 1 : y;\n}\nfunction getX(p) {\n return p.x;\n}\nfunction getY(p) {\n return p.y;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbHVzdGVyL2NsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSDs7R0FFRztBQUVILGNBQWM7QUFDZCxFQUFFO0FBQ0YsNkJBQTZCO0FBQzdCLEVBQUU7QUFDRixtRkFBbUY7QUFDbkYsa0ZBQWtGO0FBQ2xGLG1EQUFtRDtBQUNuRCxFQUFFO0FBQ0YsZ0ZBQWdGO0FBQ2hGLGtGQUFrRjtBQUNsRiwyRUFBMkU7QUFDM0UsbUZBQW1GO0FBQ25GLGlGQUFpRjtBQUNqRixrRkFBa0Y7QUFDbEYsaUJBQWlCO0FBRWpCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBYzVCLE1BQU0sY0FBYyxHQUFZO0lBQzlCLE9BQU8sRUFBRSxDQUFDO0lBQ1YsT0FBTyxFQUFFLEVBQUU7SUFDWCxNQUFNLEVBQUUsRUFBRTtJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsUUFBUSxFQUFFLEVBQUU7SUFDWixlQUFlLEVBQUUsQ0FBQyxFQUFVLEVBQUUsU0FBaUIsRUFBRSxFQUFFLENBQUMsU0FBUztJQUM3RCxhQUFhLEVBQUUsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJO0NBQzNDLENBQUM7QUFzQkYsTUFBTSxVQUFVLFdBQVcsQ0FBSSxDQUFXO0lBQ3hDLE1BQU0sRUFBQyxLQUFLLEVBQUMsR0FBRyxDQUFpQixDQUFDO0lBQ2xDLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBSSxDQUFXO0lBQzNDLE1BQU0sRUFBQyxFQUFFLEVBQUMsR0FBRyxDQUFpQixDQUFDO0lBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQztBQUNwQixDQUFDO0FBSUQsTUFBTSxVQUFVLGdCQUFn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QUFJLENBQUMsR0FBVztJQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUM1QyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNuRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFJLENBQVc7SUFDMUIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFJLENBQVc7SUFDMUIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyMiBGbG93bWFwQmx1ZVxuICogQ29weXJpZ2h0IDIwMTgtMjAyMCBUZXJhbHl0aWNzLCBtb2RpZmllZCBieSBGbG93bWFwQmx1ZVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqL1xuXG4vKipcbiAqIFRoZSBjb2RlIGluIHRoaXMgZmlsZSBpcyBhIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvc3VwZXJjbHVzdGVyXG4gKi9cblxuLy8gSVNDIExpY2Vuc2Vcbi8vXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTYsIE1hcGJveFxuLy9cbi8vIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlXG4vLyB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlXG4vLyBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXG4vLyBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EXG4vLyBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcbi8vIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTXG4vLyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVJcbi8vIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0Zcbi8vIFRISVMgU09GVFdBUkUuXG5cbmltcG9ydCB7cm9sbHVwfSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQgS0RCdXNoIGZyb20gJ2tkYnVzaCc7XG5pbXBvcnQge0xvY2F0aW9uV2VpZ2h0R2V0dGVyfSBmcm9tICcuL0NsdXN0ZXJJbmRleCc7XG5pbXBvcnQge0NsdXN0ZXIsIENsdXN0ZXJMZXZlbCwgQ2x1c3Rlck5vZGUsIExvY2F0aW9uQWNjZXNzb3JzfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIG1pblpvb206IG51bWJlcjsgLy8gbWluIHpvb20gdG8gZ2VuZXJhdGUgY2x1c3RlcnMgb25cbiAgbWF4Wm9vbTogbnVtYmVyOyAvLyBtYXggem9vbSBsZXZlbCB0byBjbHVzdGVyIHRoZSBwb2ludHMgb25cbiAgcmFkaXVzOiBudW1iZXI7IC8vIGNsdXN0ZXIgcmFkaXVzIGluIHBpeGVsc1xuICBleHRlbnQ6IG51bWJlcjsgLy8gdGlsZSBleHRlbnQgKHJhZGl1cyBpcyBjYWxjdWxhdGVkIHJlbGF0aXZlIHRvIGl0KVxuICBub2RlU2l6ZTogbnVtYmVyOyAvLyBzaXplIG9mIHRoZSBLRC10cmVlIGxlYWYgbm9kZSwgYWZmZWN0cyBwZXJmb3JtYW5jZVxuICBtYWtlQ2x1c3Rlck5hbWU6IChpZDogbnVtYmVyLCBudW1Qb2ludHM6IG51bWJlcikgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBtYWtlQ2x1c3RlcklkOiAoaWQ6IG51bWJlcikgPT4gc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogT3B0aW9ucyA9IHtcbiAgbWluWm9vbTogMCxcbiAgbWF4Wm9vbTogMTYsXG4gIHJhZGl1czogNDAsXG4gIGV4dGVudDogNTEyLFxuICBub2RlU2l6ZTogNjQsXG4gIG1ha2VDbHVzdGVyTmFtZTogKGlkOiBudW1iZXIsIG51bVBvaW50czogbnVtYmVyKSA9PiB1bmRlZmluZWQsXG4gIG1ha2VDbHVzdGVySWQ6IChpZDogbnVtYmVyKSA9PiBge1ske2lkfV19YCxcbn07XG5cbmludGVyZmFjZSBCYXNlUG9pbnQge1xuICB4OiBudW1iZXI7IC8vIHByb2plY3RlZCBwb2ludCBjb29yZGluYXRlc1xuICB5OiBudW1iZXI7XG4gIHdlaWdodDogbnVtYmVyO1xuICB6b29tOiBudW1iZXI7IC8vIHRoZSBsYXN0IHpvb20gdGhlIHBvaW50IHdhcyBwcm9jZXNzZWQgYXRcbiAgcGFyZW50SWQ6IG51bWJlcjsgLy8gcGFyZW50IGNsdXN0ZXIgaWRcbn1cblxuaW50ZXJmYWNlIExlYWZQb2ludDxMPiBleHRlbmRzIEJhc2VQb2ludCB7XG4gIGluZGV4OiBudW1iZXI7IC8vIGluZGV4IG9mIHRoZSBzb3VyY2UgZmVhdHVyZSBpbiB0aGUgb3JpZ2luYWwgaW5wdXQgYXJyYXksXG4gIGxvY2F0aW9uOiBMO1xufVxuXG5pbnRlcmZhY2UgQ2x1c3RlclBvaW50IGV4dGVuZHMgQmFzZVBvaW50IHtcbiAgaWQ6IG51bWJlcjtcbiAgbnVtUG9pbnRzOiBudW1iZXI7XG59XG5cbnR5cGUgUG9pbnQ8TD4gPSBMZWFmUG9pbnQ8TD4gfCBDbHVzdGVyUG9pbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlYWZQb2ludDxMPihwOiBQb2ludDxMPik6IHAgaXMgTGVhZlBvaW50PEw+IHtcbiAgY29uc3Qge2luZGV4fSA9IHAgYXMgTGVhZlBvaW50PEw+O1xuICByZXR1cm4gaW5kZXggIT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2x1c3RlclBvaW50PEw+KHA6IFBvaW50PEw+KTogcCBpcyBDbHVzdGVyUG9pbnQge1xuICBjb25zdCB7aWR9ID0gcCBhcyBDbHVzdGVyUG9pbnQ7XG4gIHJldHVybiBpZCAhPSBudWxsO1xufVxuXG50eXBlIFpvb21MZXZlbEtEQnVzaCA9IGFueTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNsdXN0ZXJMb2NhdGlvbnM8TD4oXG4gIGxvY2F0aW9uczogSXRlcmFibGU8TD4sXG4gIGxvY2F0aW9uQWNjZXNzb3JzOiBMb2NhdGlvbkFjY2Vzc29yczxMPixcbiAgZ2V0TG9jYXRpb25XZWlnaHQ6IExvY2F0aW9uV2VpZ2h0R2V0dGVyLFxuICBvcHRpb25zPzogUGFydGlhbDxPcHRpb25zPixcbik6IENsdXN0ZXJMZXZlbFtdIHtcbiAgY29uc3Qge2dldExvY2F0aW9uTG9uLCBnZXRMb2NhdGlvbkxhdCwgZ2V0TG9jYXRpb25JZH0gPSBsb2NhdGlvbkFjY2Vzc29ycztcbiAgY29uc3Qgb3B0cyA9IHtcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xuICBjb25zdCB7bWluWm9vbSwgbWF4Wm9vbSwgbm9kZVNpemUsIG1ha2VDbHVzdGVyTmFtZSwgbWFrZUNsdXN0ZXJJZH0gPSBvcHRzO1xuXG4gIGNvbnN0IHRyZWVzID0gbmV3IEFycmF5PFpvb21MZXZlbEtEQnVzaD4obWF4Wm9vbSArIDEpO1xuXG4gIC8vIGdlbmVyYXRlIGEgY2x1c3RlciBvYmplY3QgZm9yIGVhY2ggcG9pbnQgYW5kIGluZGV4IGlucHV0IHBvaW50cyBpbnRvIGEgS0QtdHJlZVxuICBsZXQgY2x1c3RlcnMgPSBuZXcgQXJyYXk8UG9pbnQ8TD4+KCk7XG4gIGxldCBpID0gMDtcbiAgZm9yIChjb25zdCBsb2NhdGlvbiBvZiBsb2NhdGlvbnMpIHtcbiAgICBjb25zdCB4ID0gZ2V0TG9jYXRpb25Mb24obG9jYXRpb24pO1xuICAgIGNvbnN0IHkgPSBnZXRMb2NhdGlvbkxhdChsb2NhdGlvbik7XG4gICAgY2x1c3RlcnMucHVzaCh7XG4gICAgICB4OiBsbmdYKHgpLCAvLyBwcm9qZWN0ZWQgcG9pbnQgY29vcmRpbmF0ZXNcbiAgICAgIHk6IGxhdFkoeSksXG4gICAgICB3ZWlnaHQ6IGdldExvY2F0aW9uV2VpZ2h0KGdldExvY2F0aW9uSWQobG9jYXRpb24pKSxcbiAgICAgIHpvb206IEluZmluaXR5LCAvLyB0aGUgbGFzdCB6b29tIHRoZSBwb2ludCB3YXMgcHJvY2Vzc2VkIGF0XG4gICAgICBpbmRleDogaSwgLy8gaW5kZXggb2YgdGhlIHNvdXJjZSBmZWF0dXJlIGluIHRoZSBvcmlnaW5hbCBpbnB1dCBhcnJheSxcbiAgICAgIHBhcmVudElkOiAtMSwgLy8gcGFyZW50IGNsdXN0ZXIgaWRcbiAgICAgIGxvY2F0aW9uLFxuICAgIH0pO1xuICAgIGkrKztcbiAgfVxuICB0cmVlc1ttYXhab29tICsgMV0gPSBuZXcgS0RCdXNoKGNsdXN0ZXJzLCBnZXRYLCBnZXRZLCBub2RlU2l6ZSwgRmxvYXQzMkFycmF5KTtcblxuICAvLyBjbHVzdGVyIHBvaW50cyBvbiBtYXggem9vbSwgdGhlbiBjbHVzdGVyIHRoZSByZXN1bHRzIG9uIHByZXZpb3VzIHpvb20sIGV0Yy47XG4gIC8vIHJlc3VsdHMgaW4gYSBjbHVzdGVyIGhpZXJhcmNoeSBhY3Jvc3Mgem9vbSBsZXZlbHNcbiAgZm9yIChsZXQgeiA9IG1heFpvb207IHogPj0gbWluWm9vbTsgei0tKSB7XG4gICAgLy8gY3JlYXRlIGEgbmV3IHNldCBvZiBjbHVzdGVycyBmb3IgdGhlIHpvb20gYW5kIGluZGV4IHRoZW0gd2l0aCBhIEtELXRyZWVcbiAgICBjbHVzdGVycyA9IGNsdXN0ZXIoY2x1c3RlcnMsIHosIHRyZWVzW3ogKyAxXSwgb3B0cyk7XG4gICAgdHJlZXNbel0gPSBuZXcgS0RCdXNoKGNsdXN0ZXJzLCBnZXRYLCBnZXRZLCBub2RlU2l6ZSwgRmxvYXQzMkFycmF5KTtcbiAgfVxuXG4gIGlmICh0cmVlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgbnVtYmVyc09mQ2x1c3RlcnMgPSB0cmVlcy5tYXAoKGQpID0+IGQucG9pbnRzLmxlbmd0aCk7XG4gIGNvbnN0IG1heEF2YWlsWm9vbSA9IG51bWJlcnNPZkNsdXN0ZXJzLmluZGV4T2YoXG4gICAgbnVtYmVyc09mQ2x1c3RlcnNbbnVtYmVyc09mQ2x1c3RlcnMubGVuZ3RoIC0gMV0sXG4gICk7XG4gIGNvbnN0IG1pbkF2YWlsWm9vbSA9IE1hdGgubWluKFxuICAgIG1heEF2YWlsWm9vbSxcbiAgICBudW1iZXJzT2ZDbHVzdGVycy5sYXN0SW5kZXhPZihudW1iZXJzT2ZDbHVzdGVyc1swXSksXG4gICk7XG5cbiAgY29uc3QgY2x1c3RlckxldmVscyA9IG5ldyBBcnJheTxDbHVzdGVyTGV2ZWw+KCk7XG4gIGZvciAobGV0IHpvb20gPSBtaW5BdmFpbFpvb207IHpvb20gPD0gbWF4QXZhaWxab29tOyB6b29tKyspIHtcbiAgICBsZXQgY2hpbGRyZW5CeVBhcmVudDogTWFwPG51bWJlciwgc3RyaW5nW10+IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRyZWUgPSB0cmVlc1t6b29tXTtcbiAgICBpZiAoem9vbSA8IG1heEF2YWlsWm9vbSkge1xuICAgICAgY2hpbGRyZW5CeVBhcmVudCA9IHJvbGx1cDxQb2ludDxMPiwgc3RyaW5nW10sIG51bWJlcj4oXG4gICAgICAgIHRyZWVzW3pvb20gKyAxXS5wb2ludHMsXG4gICAgICAgIChwb2ludHM6IGFueVtdKSA9PlxuICAgICAgICAgIHBvaW50cy5tYXAoKHA6IGFueSkgPT5cbiAgICAgICAgICAgIHAuaWQgPyBtYWtlQ2x1c3RlcklkKHAuaWQpIDogZ2V0TG9jYXRpb25JZChwLmxvY2F0aW9uKSxcbiAgICAgICAgICApLFxuICAgICAgICAocG9pbnQ6IGFueSkgPT4gcG9pbnQucGFyZW50SWQsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGVzOiBDbHVzdGVyTm9kZVtdID0gW107XG4gICAgZm9yIChjb25zdCBwb2ludCBvZiB0cmVlLnBvaW50cykge1xuICAgICAgY29uc3Qge3gsIHksIG51bVBvaW50cywgbG9jYXRpb259ID0gcG9pbnQ7XG4gICAgICBpZiAoaXNMZWFmUG9pbnQocG9pbnQpKSB7XG4gICAgICAgIG5vZGVzLnB1c2goe1xuICAgICAgICAgIGlkOiBnZXRMb2NhdGlvbklkKGxvY2F0aW9uKSxcbiAgICAgICAgICB6b29tLFxuICAgICAgICAgIGxhdDogZ2V0TG9jYXRpb25MYXQobG9jYXRpb24pLFxuICAgICAgICAgIGxvbjogZ2V0TG9jYXRpb25Mb24obG9jYXRpb24pLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNDbHVzdGVyUG9pbnQocG9pbnQpKSB7XG4gICAgICAgIGNvbnN0IHtpZH0gPSBwb2ludDtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBjaGlsZHJlbkJ5UGFyZW50ICYmIGNoaWxkcmVuQnlQYXJlbnQuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2x1c3RlciAke2lkfSBkb2Vzbid0IGhhdmUgY2hpbGRyZW5gKTtcbiAgICAgICAgfVxuICAgICAgICBub2Rlcy5wdXNoKHtcbiAgICAgICAgICBpZDogbWFrZUNsdXN0ZXJJZChpZCksXG4gICAgICAgICAgbmFtZTogbWFrZUNsdXN0ZXJOYW1lKGlkLCBudW1Qb2ludHMpLFxuICAgICAgICAgIHpvb20sXG4gICAgICAgICAgbGF0OiB5TGF0KHkpLFxuICAgICAgICAgIGxvbjogeExuZyh4KSxcbiAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgfSBhcyBDbHVzdGVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY2x1c3RlckxldmVscy5wdXNoKHtcbiAgICAgIHpvb20sXG4gICAgICBub2RlcyxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gY2x1c3RlckxldmVscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2x1c3RlcihcbiAgeDogbnVtYmVyLFxuICB5OiBudW1iZXIsXG4gIGlkOiBudW1iZXIsXG4gIG51bVBvaW50czogbnVtYmVyLFxuICB3ZWlnaHQ6IG51bWJlcixcbik6IENsdXN0ZXJQb2ludCB7XG4gIHJldHVybiB7XG4gICAgeCwgLy8gd2VpZ2h0ZWQgY2x1c3RlciBjZW50ZXJcbiAgICB5LFxuICAgIHpvb206IEluZmluaXR5LCAvLyB0aGUgbGFzdCB6b29tIHRoZSBjbHVzdGVyIHdhcyBwcm9jZXNzZWQgYXRcbiAgICBpZCwgLy8gZW5jb2RlcyBpbmRleCBvZiB0aGUgZmlyc3QgY2hpbGQgb2YgdGhlIGNsdXN0ZXIgYW5kIGl0cyB6b29tIGxldmVsXG4gICAgcGFyZW50SWQ6IC0xLCAvLyBwYXJlbnQgY2x1c3RlciBpZFxuICAgIG51bVBvaW50cyxcbiAgICB3ZWlnaHQsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNsdXN0ZXI8TD4oXG4gIHBvaW50czogUG9pbnQ8TD5bXSxcbiAgem9vbTogbnVtYmVyLFxuICB0cmVlOiBab29tTGV2ZWxLREJ1c2gsXG4gIG9wdGlvbnM6IE9wdGlvbnMsXG4pIHtcbiAgY29uc3QgY2x1c3RlcnM6IFBvaW50PEw+W10gPSBbXTtcbiAgY29uc3Qge3JhZGl1cywgZXh0ZW50fSA9IG9wdGlvbnM7XG4gIGNvbnN0IHIgPSByYWRpdXMgLyAoZXh0ZW50ICogTWF0aC5wb3coMiwgem9vbSkpO1xuXG4gIC8vIGxvb3AgdGhyb3VnaCBlYWNoIHBvaW50XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcCA9IHBvaW50c1tpXTtcbiAgICAvLyBpZiB3ZSd2ZSBhbHJlYWR5IHZpc2l0ZWQgdGhlIHBvaW50IGF0IHRoaXMgem9vbSBsZXZlbCwgc2tpcCBpdFxuICAgIGlmIChwLnpvb20gPD0gem9vbSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHAuem9vbSA9IHpvb207XG5cbiAgICAvLyBmaW5kIGFsbCBuZWFyYnkgcG9pbnRzXG4gICAgY29uc3QgbmVpZ2hib3JJZHMgPSB0cmVlLndpdGhpbihwLngsIHAueSwgcik7XG5cbiAgICBsZXQgd2VpZ2h0ID0gcC53ZWlnaHQgfHwgMTtcbiAgICBsZXQgbnVtUG9pbnRzID0gaXNDbHVzdGVyUG9pbnQocCkgPyBwLm51bVBvaW50cyA6IDE7XG4gICAgbGV0IHd4ID0gcC54ICogd2VpZ2h0O1xuICAgIGxldCB3eSA9IHAueSAqIHdlaWdodDtcblxuICAgIC8vIGVuY29kZSBib3RoIHpvb20gYW5kIHBvaW50IGluZGV4IG9uIHdoaWNoIHRoZSBjbHVzdGVyIG9yaWdpbmF0ZWRcbiAgICBjb25zdCBpZCA9IChpIDw8IDUpICsgKHpvb20gKyAxKTtcblxuICAgIGZvciAoY29uc3QgbmVpZ2hib3JJZCBvZiBuZWlnaGJvcklkcykge1xuICAgICAgY29uc3QgYiA9IHRyZWUucG9pbnRzW25laWdoYm9ySWRdO1xuICAgICAgLy8gZmlsdGVyIG91dCBuZWlnaGJvcnMgdGhhdCBhcmUgYWxyZWFkeSBwcm9jZXNzZWRcbiAgICAgIGlmIChiLnpvb20gPD0gem9vbSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGIuem9vbSA9IHpvb207IC8vIHNhdmUgdGhlIHpvb20gKHNvIGl0IGRvZXNuJ3QgZ2V0IHByb2Nlc3NlZCB0d2ljZSlcblxuICAgICAgY29uc3Qgd2VpZ2h0MiA9IGIud2VpZ2h0IHx8IDE7XG4gICAgICBjb25zdCBudW1Qb2ludHMyID0gYi5udW1Qb2ludHMgfHwgMTtcbiAgICAgIHd4ICs9IGIueCAqIHdlaWdodDI7IC8vIGFjY3VtdWxhdGUgY29vcmRpbmF0ZXMgZm9yIGNhbGN1bGF0aW5nIHdlaWdodGVkIGNlbnRlclxuICAgICAgd3kgKz0gYi55ICogd2VpZ2h0MjtcblxuICAgICAgd2VpZ2h0ICs9IHdlaWdodDI7XG4gICAgICBudW1Qb2ludHMgKz0gbnVtUG9pbnRzMjtcbiAgICAgIGIucGFyZW50SWQgPSBpZDtcbiAgICB9XG5cbiAgICBpZiAobnVtUG9pbnRzID09PSAxKSB7XG4gICAgICBjbHVzdGVycy5wdXNoKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwLnBhcmVudElkID0gaWQ7XG4gICAgICBjbHVzdGVycy5wdXNoKFxuICAgICAgICBjcmVhdGVDbHVzdGVyKHd4IC8gd2VpZ2h0LCB3eSAvIHdlaWdodCwgaWQsIG51bVBvaW50cywgd2VpZ2h0KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNsdXN0ZXJzO1xufVxuXG4vLyBzcGhlcmljYWwgbWVyY2F0b3IgdG8gbG9uZ2l0dWRlL2xhdGl0dWRlXG5mdW5jdGlvbiB4TG5nKHg6IG51bWJlcikge1xuICByZXR1cm4gKHggLSAwLjUpICogMzYwO1xufVxuXG5mdW5jdGlvbiB5TGF0KHk6IG51bWJlcikge1xuICBjb25zdCB5MiA9ICgoMTgwIC0geSAqIDM2MCkgKiBNYXRoLlBJKSAvIDE4MDtcbiAgcmV0dXJuICgzNjAgKiBNYXRoLmF0YW4oTWF0aC5leHAoeTIpKSkgLyBNYXRoLlBJIC0gOTA7XG59XG5cbi8vIGxvbmdpdHVkZS9sYXRpdHVkZSB0byBzcGhlcmljYWwgbWVyY2F0b3IgaW4gWzAuLjFdIHJhbmdlXG5mdW5jdGlvbiBsbmdYKGxuZzogbnVtYmVyKSB7XG4gIHJldHVybiBsbmcgLyAzNjAgKyAwLjU7XG59XG5cbmZ1bmN0aW9uIGxhdFkobGF0OiBudW1iZXIpIHtcbiAgY29uc3Qgc2luID0gTWF0aC5zaW4oKGxhdCAqIE1hdGguUEkpIC8gMTgwKTtcbiAgY29uc3QgeSA9IDAuNSAtICgwLjI1ICogTWF0aC5sb2coKDEgKyBzaW4pIC8gKDEgLSBzaW4pKSkgLyBNYXRoLlBJO1xuICByZXR1cm4geSA8IDAgPyAwIDogeSA+IDEgPyAxIDogeTtcbn1cblxuZnVuY3Rpb24gZ2V0WDxMPihwOiBQb2ludDxMPikge1xuICByZXR1cm4gcC54O1xufVxuXG5mdW5jdGlvbiBnZXRZPEw+KHA6IFBvaW50PEw+KSB7XG4gIHJldHVybiBwLnk7XG59XG4iXX0=\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/data/dist/cluster/cluster.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/data/dist/colors.js": | |
/*!******************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/data/dist/colors.js ***! | |
\******************************************************/ | |
/*! exports provided: opacityFloatToInteger, opacifyHex, colorAsRgba, ColorScheme, GRAYISH, schemeTeal, DEFAULT_COLOR_SCHEME, COLOR_SCHEMES, COLOR_SCHEME_KEYS, getFlowmapColors, getColors, createFlowColorScale, getFlowColorScale, isDiffColors, isDiffColorsRGBA, getColorsRGBA, getDiffColorsRGBA, rgbaAsString, midpoint, mixColorsRGBA, default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"opacityFloatToInteger\", function() { return opacityFloatToInteger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"opacifyHex\", function() { return opacifyHex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"colorAsRgba\", function() { return colorAsRgba; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ColorScheme\", function() { return ColorScheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GRAYISH\", function() { return GRAYISH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"schemeTeal\", function() { return schemeTeal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_COLOR_SCHEME\", function() { return DEFAULT_COLOR_SCHEME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"COLOR_SCHEMES\", function() { return COLOR_SCHEMES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"COLOR_SCHEME_KEYS\", function() { return COLOR_SCHEME_KEYS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFlowmapColors\", function() { return getFlowmapColors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColors\", function() { return getColors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createFlowColorScale\", function() { return createFlowColorScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFlowColorScale\", function() { return getFlowColorScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDiffColors\", function() { return isDiffColors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDiffColorsRGBA\", function() { return isDiffColorsRGBA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColorsRGBA\", function() { return getColorsRGBA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDiffColorsRGBA\", function() { return getDiffColorsRGBA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbaAsString\", function() { return rgbaAsString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"midpoint\", function() { return midpoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mixColorsRGBA\", function() { return mixColorsRGBA; });\n/* harmony import */ var d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-scale-chromatic */ \"./node_modules/d3-scale-chromatic/src/index.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_scale__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-scale */ \"./node_modules/d3-scale/src/index.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-color */ \"./node_modules/d3-color/src/index.js\");\n\n\n\n\n\nconst DEFAULT_OUTLINE_COLOR = '#fff';\nconst DEFAULT_DIMMED_OPACITY = 0.4;\nconst DEFAULT_FLOW_MIN_COLOR = 'rgba(240,240,240,0.5)';\nconst DEFAULT_FLOW_COLOR_SCHEME = [DEFAULT_FLOW_MIN_COLOR, '#137CBD'];\nconst DEFAULT_LOCATION_AREA_COLOR = 'rgba(220,220,220,0.5)';\nconst DEFAULT_FLOW_COLOR_SCHEME_POSITIVE = [DEFAULT_FLOW_MIN_COLOR, '#f6654e'];\nconst DEFAULT_FLOW_COLOR_SCHEME_NEGATIVE = [DEFAULT_FLOW_MIN_COLOR, '#00a9cc'];\nconst FALLBACK_COLOR_RGBA = [255, 255, 255, 255];\nfunction opacityFloatToInteger(opacity) {\n return Math.round(opacity * 255);\n}\nfunction opacifyHex(hexCode, opacity) {\n const c = Object(d3_color__WEBPACK_IMPORTED_MODULE_4__[\"color\"])(hexCode);\n if (!c) {\n console.warn('Invalid color: ', hexCode);\n return `rgba(255, 255, 255, ${opacity})`;\n }\n const col = c.rgb();\n return `rgba(${col.r}, ${col.g}, ${col.b}, ${opacity})`;\n}\nfunction colorAsRgba(color) {\n if (Array.isArray(color)) {\n return color;\n }\n const col = Object(d3_color__WEBPACK_IMPORTED_MODULE_4__[\"color\"])(color);\n if (!col) {\n console.warn('Invalid color: ', color);\n return FALLBACK_COLOR_RGBA;\n }\n const rgbColor = col.rgb();\n return [\n Math.floor(rgbColor.r),\n Math.floor(rgbColor.g),\n Math.floor(rgbColor.b),\n opacityFloatToInteger(col.opacity),\n ];\n}\nfunction colorAsRgbaOr(color, defaultColor) {\n if (color) {\n return colorAsRgba(color);\n }\n if (typeof defaultColor === 'string') {\n return colorAsRgba(defaultColor);\n }\n return defaultColor;\n}\nconst asScheme = (scheme) => scheme[scheme.length - 1];\nvar ColorScheme;\n(function (ColorScheme) {\n ColorScheme[\"primary\"] = \"#162d3c\";\n})(ColorScheme || (ColorScheme = {}));\nconst SCALE_NUM_STEPS = 20;\nconst getColorSteps = (interpolate) => Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"range\"])(0, SCALE_NUM_STEPS + 1)\n .map((i) => interpolate(i / SCALE_NUM_STEPS))\n .reverse();\nconst FLOW_MIN_COLOR = 'rgba(240,240,240,0.5)';\nconst GRAYISH = [FLOW_MIN_COLOR, ColorScheme.primary];\nconst schemeBluYl = [\n '#f7feae',\n '#b7e6a5',\n '#7ccba2',\n '#46aea0',\n '#089099',\n '#00718b',\n '#045275',\n];\nconst schemeEmrld = [\n '#d3f2a3',\n '#97e196',\n '#6cc08b',\n '#4c9b82',\n '#217a79',\n '#105965',\n '#074050',\n];\nconst schemeTeal = [\n '#d1eeea',\n '#a8dbd9',\n '#85c4c9',\n '#68abb8',\n '#4f90a6',\n '#3b738f',\n '#2a5674',\n];\nconst DEFAULT_COLOR_SCHEME = schemeTeal;\nconst COLOR_SCHEMES = {\n Blues: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeBlues\"]),\n BluGrn: [\n '#c4e6c3',\n '#96d2a4',\n '#6dbc90',\n '#4da284',\n '#36877a',\n '#266b6e',\n '#1d4f60',\n ],\n BluYl: schemeBluYl,\n BrwnYl: [\n '#ede5cf',\n '#e0c2a2',\n '#d39c83',\n '#c1766f',\n '#a65461',\n '#813753',\n '#541f3f',\n ],\n BuGn: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeBuGn\"]),\n BuPu: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeBuPu\"]),\n Burg: [\n '#ffc6c4',\n '#f4a3a8',\n '#e38191',\n '#cc607d',\n '#ad466c',\n '#8b3058',\n '#672044',\n ],\n BurgYl: [\n '#fbe6c5',\n '#f5ba98',\n '#ee8a82',\n '#dc7176',\n '#c8586c',\n '#9c3f5d',\n '#70284a',\n ],\n Cool: getColorSteps(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"interpolateCool\"]),\n DarkMint: [\n '#d2fbd4',\n '#a5dbc2',\n '#7bbcb0',\n '#559c9e',\n '#3a7c89',\n '#235d72',\n '#123f5a',\n ],\n Emrld: schemeEmrld,\n GnBu: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeGnBu\"]),\n Grayish: GRAYISH,\n Greens: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeGreens\"]),\n Greys: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeGreys\"]),\n Inferno: getColorSteps(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"interpolateInferno\"]),\n Magenta: [\n '#f3cbd3',\n '#eaa9bd',\n '#dd88ac',\n '#ca699d',\n '#b14d8e',\n '#91357d',\n '#6c2167',\n ],\n Magma: getColorSteps(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"interpolateMagma\"]),\n Mint: [\n '#e4f1e1',\n '#b4d9cc',\n '#89c0b6',\n '#63a6a0',\n '#448c8a',\n '#287274',\n '#0d585f',\n ],\n Oranges: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeOranges\"]),\n OrRd: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeOrRd\"]),\n OrYel: [\n '#ecda9a',\n '#efc47e',\n '#f3ad6a',\n '#f7945d',\n '#f97b57',\n '#f66356',\n '#ee4d5a',\n ],\n Peach: [\n '#fde0c5',\n '#facba6',\n '#f8b58b',\n '#f59e72',\n '#f2855d',\n '#ef6a4c',\n '#eb4a40',\n ],\n Plasma: getColorSteps(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"interpolatePlasma\"]),\n PinkYl: [\n '#fef6b5',\n '#ffdd9a',\n '#ffc285',\n '#ffa679',\n '#fa8a76',\n '#f16d7a',\n '#e15383',\n ],\n PuBu: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemePuBu\"]),\n PuBuGn: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemePuBuGn\"]),\n PuRd: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemePuRd\"]),\n Purp: [\n '#f3e0f7',\n '#e4c7f1',\n '#d1afe8',\n '#b998dd',\n '#9f82ce',\n '#826dba',\n '#63589f',\n ],\n Purples: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemePurples\"]),\n PurpOr: [\n '#f9ddda',\n '#f2b9c4',\n '#e597b9',\n '#ce78b3',\n '#ad5fad',\n '#834ba0',\n '#573b88',\n ],\n RdPu: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeRdPu\"]),\n RedOr: [\n '#f6d2a9',\n '#f5b78e',\n '#f19c7c',\n '#ea8171',\n '#dd686c',\n '#ca5268',\n '#b13f64',\n ],\n Reds: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeReds\"]),\n Sunset: [\n '#f3e79b',\n '#fac484',\n '#f8a07e',\n '#eb7f86',\n '#ce6693',\n '#a059a0',\n '#5c53a5',\n ],\n SunsetDark: [\n '#fcde9c',\n '#faa476',\n '#f0746e',\n '#e34f6f',\n '#dc3977',\n '#b9257a',\n '#7c1d6f',\n ],\n Teal: schemeTeal,\n TealGrn: [\n '#b0f2bc',\n '#89e8ac',\n '#67dba5',\n '#4cc8a3',\n '#38b2a3',\n '#2c98a0',\n '#257d98',\n ],\n Viridis: getColorSteps(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"interpolateViridis\"]),\n Warm: getColorSteps(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"interpolateWarm\"]),\n YlGn: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeYlGn\"]),\n YlGnBu: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeYlGnBu\"]),\n YlOrBr: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeYlOrBr\"]),\n YlOrRd: asScheme(d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_0__[\"schemeYlOrRd\"]),\n};\nconst COLOR_SCHEME_KEYS = Object.keys(COLOR_SCHEMES);\nconst complementary = '#f52020';\nconst baseDiffColor = '#17a5be';\nconst diffColors = {\n negative: {\n flows: {\n scheme: [FLOW_MIN_COLOR, baseDiffColor],\n },\n },\n positive: {\n flows: {\n scheme: [FLOW_MIN_COLOR, complementary],\n },\n },\n locationAreas: {\n outline: 'rgba(92,112,128,0.5)',\n normal: 'rgba(220,220,220,0.5)',\n },\n outlineColor: 'rgb(230,233,237)',\n};\nfunction getFlowmapColors(settingsState) {\n return getColors(false, // TODO: diffMode\n settingsState.colorScheme, settingsState.darkMode, settingsState.fadeEnabled, settingsState.fadeOpacityEnabled, settingsState.fadeAmount, settingsState.animationEnabled);\n}\nfunction getColors(diffMode, colorScheme, darkMode, fadeEnabled, fadeOpacityEnabled, fadeAmount, animate) {\n if (diffMode) {\n return diffColors;\n }\n let scheme;\n if (Array.isArray(colorScheme)) {\n scheme = colorScheme;\n }\n else {\n scheme =\n (colorScheme && COLOR_SCHEMES[colorScheme]) || DEFAULT_COLOR_SCHEME;\n if (darkMode) {\n scheme = scheme.slice().reverse();\n }\n }\n // if (animate)\n // if (fadeAmount > 0)\n {\n const indices = Object(d3_array__WEBPACK_IMPORTED_MODULE_1__[\"range\"])(0, Math.max(10, scheme.length));\n const N = indices.length - 1;\n const colorScale = Object(d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequential\"])(Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolateRgbBasis\"])(scheme)).domain([\n 0,\n N,\n ]);\n if (!fadeEnabled || fadeAmount === 0) {\n scheme = indices.map((c, i) => colorScale(i));\n }\n else {\n const amount = Object(d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scalePow\"])()\n // .exponent(animate ? 1 : 1/2.5)\n // .exponent(animate ? 100 : 50)\n // .exponent(animate ? 20 : 5)\n // .exponent(1/2.5)\n .exponent(1.5)\n .domain([N, 0])\n // .range([fadeAmount/100*(animate?2:1), 0])\n // .range([0, fadeAmount/100*(animate?2:1)])\n // .range(darkMode ? [1-fadeAmount/100, 1] : [1, 1 - fadeAmount/100])\n // .range(darkMode ? [1 - fadeAmount/100, 1] : [fadeAmount/100, 0])\n // .range([1 - fadeAmount/100, 1])\n .range([0, (2 * fadeAmount) / 100]);\n scheme = indices.map((c, i) => {\n const color = colorScale(i);\n const a = amount(i);\n if (color == null || a == null)\n return '#000';\n const col = Object(d3_color__WEBPACK_IMPORTED_MODULE_4__[\"hcl\"])(color);\n col.l = darkMode ? col.l - col.l * a : col.l + (100 - col.l) * a;\n col.c = col.c - col.c * (a / 4);\n if (fadeOpacityEnabled) {\n col.opacity = col.opacity * (1.0 - a);\n }\n return col.toString();\n });\n }\n }\n return {\n darkMode,\n flows: {\n scheme,\n },\n locationCircles: {\n outgoing: darkMode ? '#000' : '#fff',\n },\n outlineColor: darkMode ? '#000' : 'rgba(255, 255, 255, 0.5)',\n };\n}\nfunction interpolateRgbaBasis(colors) {\n const spline = d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolateBasis\"];\n const n = colors.length;\n let r = new Array(n), g = new Array(n), b = new Array(n), opacity = new Array(n), i, color;\n for (i = 0; i < n; ++i) {\n color = Object(d3_color__WEBPACK_IMPORTED_MODULE_4__[\"rgb\"])(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n opacity[i] = color.opacity || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n opacity = spline(opacity);\n // color.opacity = 1;\n return function (t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n color.opacity = opacity(t);\n return color + '';\n };\n}\nfunction createFlowColorScale(domain, scheme, animate) {\n const scale = Object(d3_scale__WEBPACK_IMPORTED_MODULE_2__[\"scaleSequentialPow\"])(interpolateRgbaBasis(scheme))\n // @ts-ignore\n .exponent(animate ? 1 / 2 : 1 / 3)\n .domain(domain);\n return (value) => colorAsRgba(scale(value));\n}\nfunction getFlowColorScale(colors, magnitudeExtent, animate) {\n const minMagnitude = magnitudeExtent ? magnitudeExtent[0] : 0;\n const maxMagnitude = magnitudeExtent ? magnitudeExtent[1] : 0;\n if (isDiffColorsRGBA(colors)) {\n const posScale = createFlowColorScale([0, maxMagnitude], colors.positive.flows.scheme, animate);\n const negScale = createFlowColorScale([0, minMagnitude], colors.negative.flows.scheme, animate);\n return (magnitude) => magnitude >= 0 ? posScale(magnitude) : negScale(magnitude);\n }\n const scale = createFlowColorScale([0, maxMagnitude || 0], colors.flows.scheme, animate);\n return (magnitude) => scale(magnitude);\n}\nfunction isDiffColors(colors) {\n return colors.positive !== undefined;\n}\nfunction isDiffColorsRGBA(colors) {\n return colors.positive !== undefined;\n}\nfunction getLocationAreaColorsRGBA(colors, darkMode) {\n const normalColor = (colors && colors.normal) || DEFAULT_LOCATION_AREA_COLOR;\n const normalColorHcl = Object(d3_color__WEBPACK_IMPORTED_MODULE_4__[\"hcl\"])(normalColor);\n const locationAreasNormal = colorAsRgba(normalColor);\n return {\n normal: locationAreasNormal,\n connected: colorAsRgbaOr(colors && colors.connected, locationAreasNormal),\n highlighted: colorAsRgbaOr(colors && colors.highlighted, opacifyHex(normalColorHcl[darkMode ? 'brighter' : 'darker'](1).toString(), 0.5)),\n selected: colorAsRgbaOr(colors && colors.selected, opacifyHex(normalColorHcl[darkMode ? 'brighter' : 'darker'](2).toString(), 0.8)),\n outline: colorAsRgbaOr(colors && colors.outline, colorAsRgba(normalColorHcl[darkMode ? 'brighter' : 'darker'](4).toString())),\n };\n}\nfunction getFlowAndCircleColors(inputColors, defaultFlowColorScheme, darkMode) {\n var _a, _b, _c;\n const flowColorScheme = (inputColors && inputColors.flows && inputColors.flows.scheme) ||\n defaultFlowColorScheme;\n const maxFlowColorHcl = Object(d3_color__WEBPACK_IMPORTED_MODULE_4__[\"hcl\"])(flowColorScheme[flowColorScheme.length - 1]);\n const flowColorHighlighted = colorAsRgbaOr(inputColors && inputColors.flows && inputColors.flows.highlighted, colorAsRgba(maxFlowColorHcl[darkMode ? 'brighter' : 'darker'](0.7).toString()));\n const emptyColor = colorAsRgbaOr((_a = inputColors === null || inputColors === void 0 ? void 0 : inputColors.locationCircles) === null || _a === void 0 ? void 0 : _a.empty, darkMode ? '#000' : '#fff');\n const innerColor = colorAsRgbaOr(inputColors &&\n inputColors.locationCircles &&\n inputColors.locationCircles.inner, maxFlowColorHcl.toString());\n return {\n flows: {\n scheme: flowColorScheme,\n highlighted: flowColorHighlighted,\n },\n locationCircles: {\n inner: innerColor,\n outgoing: colorAsRgbaOr(inputColors &&\n inputColors.locationCircles &&\n inputColors.locationCircles.outgoing, darkMode ? '#000' : '#fff'),\n incoming: colorAsRgbaOr(inputColors &&\n inputColors.locationCircles &&\n inputColors.locationCircles.incoming, maxFlowColorHcl[darkMode ? 'brighter' : 'darker'](1.25).toString()),\n highlighted: colorAsRgbaOr(inputColors &&\n inputColors.locationCircles &&\n inputColors.locationCircles.highlighted, flowColorHighlighted),\n empty: emptyColor,\n outlineEmptyMix: (_c = (_b = inputColors === null || inputColors === void 0 ? void 0 : inputColors.locationCircles) === null || _b === void 0 ? void 0 : _b.outlineEmptyMix) !== null && _c !== void 0 ? _c : 0.4,\n },\n };\n}\nfunction getBaseColorsRGBA(colors) {\n const darkMode = colors && colors.darkMode ? true : false;\n return {\n darkMode,\n locationAreas: getLocationAreaColorsRGBA(colors && colors.locationAreas, darkMode),\n outlineColor: colorAsRgba((colors && colors.outlineColor) || DEFAULT_OUTLINE_COLOR),\n dimmedOpacity: colors && colors.dimmedOpacity != null\n ? colors.dimmedOpacity\n : DEFAULT_DIMMED_OPACITY,\n };\n}\nfunction getColorsRGBA(colors) {\n const baseColorsRGBA = getBaseColorsRGBA(colors);\n return Object.assign(Object.assign({}, baseColorsRGBA), getFlowAndCircleColors(colors, DEFAULT_FLOW_COLOR_SCHEME, baseColorsRGBA.darkMode));\n}\nfunction getDiffColorsRGBA(colors) {\n const baseColorsRGBA = getBaseColorsRGBA(colors);\n return Object.assign(Object.assign({}, baseColorsRGBA), { positive: getFlowAndCircleColors(colors && colors.positive, DEFAULT_FLOW_COLOR_SCHEME_POSITIVE, baseColorsRGBA.darkMode), negative: getFlowAndCircleColors(colors && colors.negative, DEFAULT_FLOW_COLOR_SCHEME_NEGATIVE, baseColorsRGBA.darkMode) });\n}\nfunction rgbaAsString(color) {\n return `rgba(${color.join(',')})`;\n}\nfunction midpoint(a, b, zeroToOne) {\n return a + (b - a) * zeroToOne;\n}\nfunction mixColorsRGBA(color1, color2, zeroToOne) {\n return color1.map((v, i) => midpoint(v, color2[i], zeroToOne));\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (getColors);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsV0FBVyxFQUNYLFVBQVUsRUFDVixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixZQUFZLEdBQ2IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQy9CLE9BQU8sRUFBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxLQUFLLElBQUksT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksUUFBUSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBR2hFLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDO0FBQ3JDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQ25DLE1BQU0sc0JBQXNCLEdBQUcsdUJBQXVCLENBQUM7QUFDdkQsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLHNCQUFzQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sMkJBQTJCLEdBQUcsdUJBQXVCLENBQUM7QUFFNUQsTUFBTSxrQ0FBa0MsR0FBRyxDQUFDLHNCQUFzQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQy9FLE1BQU0sa0NBQWtDLEdBQUcsQ0FB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QztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsTUFBOEI7SUFFOUIsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsdUNBQ0ssY0FBYyxLQUNqQixRQUFRLEVBQUUsc0JBQXNCLENBQzlCLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxFQUN6QixrQ0FBa0MsRUFDbEMsY0FBYyxDQUFDLFFBQVEsQ0FDeEIsRUFDRCxRQUFRLEVBQUUsc0JBQXNCLENBQzlCLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxFQUN6QixrQ0FBa0MsRUFDbEMsY0FBYyxDQUFDLFFBQVEsQ0FDeEIsSUFDRDtBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQVc7SUFDdEMsT0FBTyxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLFNBQWlCO0lBQzlELE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsTUFBWSxFQUNaLE1BQVksRUFDWixTQUFpQjtJQUVqQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBUyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxlQUFlLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGludGVycG9sYXRlQ29vbCxcbiAgaW50ZXJwb2xhdGVJbmZlcm5vLFxuICBpbnRlcnBvbGF0ZU1hZ21hLFxuICBpbnRlcnBvbGF0ZVBsYXNtYSxcbiAgaW50ZXJwb2xhdGVWaXJpZGlzLFxuICBpbnRlcnBvbGF0ZVdhcm0sXG4gIHNjaGVtZUJsdWVzLFxuICBzY2hlbWVCdUduLFxuICBzY2hlbWVCdVB1LFxuICBzY2hlbWVHbkJ1LFxuICBzY2hlbWVHcmVlbnMsXG4gIHNjaGVtZUdyZXlzLFxuICBzY2hlbWVPcmFuZ2VzLFxuICBzY2hlbWVPclJkLFxuICBzY2hlbWVQdUJ1LFxuICBzY2hlbWVQdUJ1R24sXG4gIHNjaGVtZVB1UmQsXG4gIHNjaGVtZVB1cnBsZXMsXG4gIHNjaGVtZVJkUHUsXG4gIHNjaGVtZVJlZHMsXG4gIHNjaGVtZVlsR24sXG4gIHNjaGVtZVlsR25CdSxcbiAgc2NoZW1lWWxPckJyLFxuICBzY2hlbWVZbE9yUmQsXG59IGZyb20gJ2QzLXNjYWxlLWNocm9tYXRpYyc7XG5pbXBvcnQge3JhbmdlfSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQge3NjYWxlUG93LCBzY2FsZVNlcXVlbnRpYWwsIHNjYWxlU2VxdWVudGlhbFBvd30gZnJvbSAnZDMtc2NhbGUnO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZUJhc2lzLCBpbnRlcnBvbGF0ZVJnYkJhc2lzfSBmcm9tICdkMy1pbnRlcnBvbGF0ZSc7XG5pbXBvcnQge2NvbG9yIGFzIGQzY29sb3IsIGhjbCwgcmdiIGFzIGNvbG9yUmdifSBmcm9tICdkMy1jb2xvcic7XG5pbXBvcnQge1NldHRpbmdzU3RhdGV9IGZyb20gJy4vRmxvd21hcFN0YXRlJztcblxuY29uc3QgREVGQVVMVF9PVVRMSU5FX0NPTE9SID0gJyNmZmYnO1xuY29uc3QgREVGQVVMVF9ESU1NRURfT1BBQ0lUWSA9IDAuNDtcbmNvbnN0IERFRkFVTFRfRkxPV19NSU5fQ09MT1IgPSAncmdiYSgyNDAsMjQwLDI0MCwwLjUpJztcbmNvbnN0IERFRkFVTFRfRkxPV19DT0xPUl9TQ0hFTUUgPSBbREVGQVVMVF9GTE9XX01JTl9DT0xPUiwgJyMxMzdDQkQnXTtcbmNvbnN0IERFRkFVTFRfTE9DQVRJT05fQVJFQV9DT0xPUiA9ICdyZ2JhKDIyMCwyMjAsMjIwLDAuNSknO1xuXG5jb25zdCBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FX1BPU0lUSVZFID0gW0RFRkFVTFRfRkxPV19NSU5fQ09MT1IsICcjZjY2NTRlJ107XG5jb25zdCBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FX05FR0FUSVZFID0gW0RFRkFVTFRfRkxPV19NSU5fQ09MT1IsICcjMDBhOWNjJ107XG5cbmV4cG9ydCB0eXBlIENvbG9yU2NhbGUgPSAodmFsdWU6IG51bWJlcikgPT4gUkdCQTtcbmV4cG9ydCB0eXBlIFJHQkEgPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblxuY29uc3QgRkFMTEJBQ0tfQ09MT1JfUkdCQTogUkdCQSA9IFsyNTUsIDI1NSwgMjU1LCAyNTVdO1xuXG5leHBvcnQgZnVuY3Rpb24gb3BhY2l0eUZsb2F0VG9JbnRlZ2VyKG9wYWNpdHk6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLnJvdW5kKG9wYWNpdHkgKiAyNTUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BhY2lmeUhleChoZXhDb2RlOiBzdHJpbmcsIG9wYWNpdHk6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGMgPSBkM2NvbG9yKGhleENvZGUpO1xuICBpZiAoIWMpIHtcbiAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgY29sb3I6ICcsIGhleENvZGUpO1xuICAgIHJldHVybiBgcmdiYSgyNTUsIDI1NSwgMjU1LCAke29wYWNpdHl9KWA7XG4gIH1cbiAgY29uc3QgY29sID0gYy5yZ2IoKTtcbiAgcmV0dXJuIGByZ2JhKCR7Y29sLnJ9LCAke2NvbC5nfSwgJHtjb2wuYn0sICR7b3BhY2l0eX0pYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yQXNSZ2JhKGNvbG9yOiBzdHJpbmcgfCBudW1iZXJbXSk6IFJHQkEge1xuICBpZiAoQXJyYXkuaXNBcnJheShjb2xvcikpIHtcbiAgICByZXR1cm4gY29sb3IgYXMgUkdCQTtcbiAgfVxuICBjb25zdCBjb2wgPSBkM2NvbG9yKGNvbG9yKTtcbiAgaWYgKCFjb2wpIHtcbiAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgY29sb3I6ICcsIGNvbG9yKTtcbiAgICByZXR1cm4gRkFMTEJBQ0tfQ09MT1JfUkdCQTtcbiAgfVxuICBjb25zdCByZ2JDb2xvciA9IGNvbC5yZ2IoKTtcbiAgcmV0dXJuIFtcbiAgICBNYXRoLmZsb29yKHJnYkNvbG9yLnIpLFxuICAgIE1hdGguZmxvb3IocmdiQ29sb3IuZyksXG4gICAgTWF0aC5mbG9vcihyZ2JDb2xvci5iKSxcbiAgICBvcGFjaXR5RmxvYXRUb0ludGVnZXIoY29sLm9wYWNpdHkpLFxuICBdO1xufVxuXG5mdW5jdGlvbiBjb2xvckFzUmdiYU9yKFxuICBjb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBkZWZhdWx0Q29sb3I6IFJHQkEgfCBzdHJpbmcsXG4pOiBSR0JBIHtcbiAgaWYgKGNvbG9yKSB7XG4gICAgcmV0dXJuIGNvbG9yQXNSZ2JhKGNvbG9yKTtcbiAgfVxuICBpZiAodHlwZW9mIGRlZmF1bHRDb2xvciA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gY29sb3JBc1JnYmEoZGVmYXVsdENvbG9yKTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdENvbG9yO1xufVxuXG5jb25zdCBhc1NjaGVtZSA9IChzY2hlbWU6IFJlYWRvbmx5QXJyYXk8UmVhZG9ubHlBcnJheTxzdHJpbmc+PikgPT5cbiAgc2NoZW1lW3NjaGVtZS5sZW5ndGggLSAxXSBhcyBzdHJpbmdbXTtcblxuZXhwb3J0IGVudW0gQ29sb3JTY2hlbWUge1xuICBwcmltYXJ5ID0gJyMxNjJkM2MnLFxufVxuXG5jb25zdCBTQ0FMRV9OVU1fU1RFUFMgPSAyMDtcbmNvbnN0IGdldENvbG9yU3RlcHMgPSAoaW50ZXJwb2xhdGU6ICh4OiBudW1iZXIpID0+IHN0cmluZykgPT5cbiAgcmFuZ2UoMCwgU0NBTEVfTlVNX1NURVBTICsgMSlcbiAgICAubWFwKChpKSA9PiBpbnRlcnBvbGF0ZShpIC8gU0NBTEVfTlVNX1NURVBTKSlcbiAgICAucmV2ZXJzZSgpO1xuXG5jb25zdCBGTE9XX01JTl9DT0xPUiA9ICdyZ2JhKDI0MCwyNDAsMjQwLDAuNSknO1xuZXhwb3J0IGNvbnN0IEdSQVlJU0ggPSBbRkxPV19NSU5fQ09MT1IsIENvbG9yU2NoZW1lLnByaW1hcnldO1xuY29uc3Qgc2NoZW1lQmx1WWwgPSBbXG4gICcjZjdmZWFlJyxcbiAgJyNiN2U2YTUnLFxuICAnIzdjY2JhMicsXG4gICcjNDZhZWEwJyxcbiAgJyMwODkwOTknLFxuICAnIzAwNzE4YicsXG4gICcjMDQ1Mjc1Jyxcbl07XG5cbmNvbnN0IHNjaGVtZUVtcmxkID0gW1xuICAnI2QzZjJhMycsXG4gICcjOTdlMTk2JyxcbiAgJyM2Y2MwOGInLFxuICAnIzRjOWI4MicsXG4gICcjMjE3YTc5JyxcbiAgJyMxMDU5NjUnLFxuICAnIzA3NDA1MCcsXG5dO1xuXG5leHBvcnQgY29uc3Qgc2NoZW1lVGVhbCA9IFtcbiAgJyNkMWVlZWEnLFxuICAnI2E4ZGJkOScsXG4gICcjODVjNGM5JyxcbiAgJyM2OGFiYjgnLFxuICAnIzRmOTBhNicsXG4gICcjM2I3MzhmJyxcbiAgJyMyYTU2NzQnLFxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09MT1JfU0NIRU1FID0gc2NoZW1lVGVhbDtcbmV4cG9ydCBjb25zdCBDT0xPUl9TQ0hFTUVTOiB7W2tleTogc3RyaW5nXTogc3RyaW5nW119ID0ge1xuICBCbHVlczogYXNTY2hlbWUoc2NoZW1lQmx1ZXMpLFxuICBCbHVHcm46IFtcbiAgICAnI2M0ZTZjMycsXG4gICAgJyM5NmQyYTQnLFxuICAgICcjNmRiYzkwJyxcbiAgICAnIzRkYTI4NCcsXG4gICAgJyMzNjg3N2EnLFxuICAgICcjMjY2YjZlJyxcbiAgICAnIzFkNGY2MCcsXG4gIF0sXG4gIEJsdVlsOiBzY2hlbWVCbHVZbCxcbiAgQnJ3bllsOiBbXG4gICAgJyNlZGU1Y2YnLFxuICAgICcjZTBjMmEyJyxcbiAgICAnI2QzOWM4MycsXG4gICAgJyNjMTc2NmYnLFxuICAgICcjYTY1NDYxJyxcbiAgICAnIzgxMzc1MycsXG4gICAgJyM1NDFmM2YnLFxuICBdLFxuICBCdUduOiBhc1NjaGVtZShzY2hlbWVCdUduKSxcbiAgQnVQdTogYXNTY2hlbWUoc2NoZW1lQnVQdSksXG4gIEJ1cmc6IFtcbiAgICAnI2ZmYzZjNCcsXG4gICAgJyNmNGEzYTgnLFxuICAgICcjZTM4MTkxJyxcbiAgICAnI2NjNjA3ZCcsXG4gICAgJyNhZDQ2NmMnLFxuICAgICcjOGIzMDU4JyxcbiAgICAnIzY3MjA0NCcsXG4gIF0sXG4gIEJ1cmdZbDogW1xuICAgICcjZmJlNmM1JyxcbiAgICAnI2Y1YmE5OCcsXG4gICAgJyNlZThhODInLFxuICAgICcjZGM3MTc2JyxcbiAgICAnI2M4NTg2YycsXG4gICAgJyM5YzNmNWQnLFxuICAgICcjNzAyODRhJyxcbiAgXSxcbiAgQ29vbDogZ2V0Q29sb3JTdGVwcyhpbnRlcnBvbGF0ZUNvb2wpLFxuICBEYXJrTWludDogW1xuICAgICcjZDJmYmQ0JyxcbiAgICAnI2E1ZGJjMicsXG4gICAgJyM3YmJjYjAnLFxuICAgICcjNTU5YzllJyxcbiAgICAnIzNhN2M4OScsXG4gICAgJyMyMzVkNzInLFxuICAgICcjMTIzZjVhJyxcbiAgXSxcbiAgRW1ybGQ6IHNjaGVtZUVtcmxkLFxuICBHbkJ1OiBhc1NjaGVtZShzY2hlbWVHbkJ1KSxcbiAgR3JheWlzaDogR1JBWUlTSCxcbiAgR3JlZW5zOiBhc1NjaGVtZShzY2hlbWVHcmVlbnMpLFxuICBHcmV5czogYXNTY2hlbWUoc2NoZW1lR3JleXMpLFxuICBJbmZlcm5vOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlSW5mZXJubyksXG4gIE1hZ2VudGE6IFtcbiAgICAnI2YzY2JkMycsXG4gICAgJyNlYWE5YmQnLFxuICAgICcjZGQ4OGFjJyxcbiAgICAnI2NhNjk5ZCcsXG4gICAgJyNiMTRkOGUnLFxuICAgICcjOTEzNTdkJyxcbiAgICAnIzZjMjE2NycsXG4gIF0sXG4gIE1hZ21hOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlTWFnbWEpLFxuICBNaW50OiBbXG4gICAgJyNlNGYxZTEnLFxuICAgICcjYjRkOWNjJyxcbiAgICAnIzg5YzBiNicsXG4gICAgJyM2M2E2YTAnLFxuICAgICcjNDQ4YzhhJyxcbiAgICAnIzI4NzI3NCcsXG4gICAgJyMwZDU4NWYnLFxuICBdLFxuICBPcmFuZ2VzOiBhc1NjaGVtZShzY2hlbWVPcmFuZ2VzKSxcbiAgT3JSZDogYXNTY2hlbWUoc2NoZW1lT3JSZCksXG4gIE9yWWVsOiBbXG4gICAgJyNlY2RhOWEnLFxuICAgICcjZWZjNDdlJyxcbiAgICAnI2YzYWQ2YScsXG4gICAgJyNmNzk0NWQnLFxuICAgICcjZjk3YjU3JyxcbiAgICAnI2Y2NjM1NicsXG4gICAgJyNlZTRkNWEnLFxuICBdLFxuICBQZWFjaDogW1xuICAgICcjZmRlMGM1JyxcbiAgICAnI2ZhY2JhNicsXG4gICAgJyNmOGI1OGInLFxuICAgICcjZjU5ZTcyJyxcbiAgICAnI2YyODU1ZCcsXG4gICAgJyNlZjZhNGMnLFxuICAgICcjZWI0YTQwJyxcbiAgXSxcbiAgUGxhc21hOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlUGxhc21hKSxcbiAgUGlua1lsOiBbXG4gICAgJyNmZWY2YjUnLFxuICAgICcjZmZkZDlhJyxcbiAgICAnI2ZmYzI4NScsXG4gICAgJyNmZmE2NzknLFxuICAgICcjZmE4YTc2JyxcbiAgICAnI2YxNmQ3YScsXG4gICAgJyNlMTUzODMnLFxuICBdLFxuICBQdUJ1OiBhc1NjaGVtZShzY2hlbWVQdUJ1KSxcbiAgUHVCdUduOiBhc1NjaGVtZShzY2hlbWVQdUJ1R24pLFxuICBQdVJkOiBhc1NjaGVtZShzY2hlbWVQdVJkKSxcbiAgUHVycDogW1xuICAgICcjZjNlMGY3JyxcbiAgICAnI2U0YzdmMScsXG4gICAgJyNkMWFmZTgnLFxuICAgICcjYjk5OGRkJyxcbiAgICAnIzlmODJjZScsXG4gICAgJyM4MjZkYmEnLFxuICAgICcjNjM1ODlmJyxcbiAgXSxcbiAgUHVycGxlczogYXNTY2hlbWUoc2NoZW1lUHVycGxlcyksXG4gIFB1cnBPcjogW1xuICAgICcjZjlkZGRhJyxcbiAgICAnI2YyYjljNCcsXG4gICAgJyNlNTk3YjknLFxuICAgICcjY2U3OGIzJyxcbiAgICAnI2FkNWZhZCcsXG4gICAgJyM4MzRiYTAnLFxuICAgICcjNTczYjg4JyxcbiAgXSxcbiAgUmRQdTogYXNTY2hlbWUoc2NoZW1lUmRQdSksXG4gIFJlZE9yOiBbXG4gICAgJyNmNmQyYTknLFxuICAgICcjZjViNzhlJyxcbiAgICAnI2YxOWM3YycsXG4gICAgJyNlYTgxNzEnLFxuICAgICcjZGQ2ODZjJyxcbiAgICAnI2NhNTI2OCcsXG4gICAgJyNiMTNmNjQnLFxuICBdLFxuICBSZWRzOiBhc1NjaGVtZShzY2hlbWVSZWRzKSxcbiAgU3Vuc2V0OiBbXG4gICAgJyNmM2U3OWInLFxuICAgICcjZmFjNDg0JyxcbiAgICAnI2Y4YTA3ZScsXG4gICAgJyNlYjdmODYnLFxuICAgICcjY2U2NjkzJyxcbiAgICAnI2EwNTlhMCcsXG4gICAgJyM1YzUzYTUnLFxuICBdLFxuICBTdW5zZXREYXJrOiBbXG4gICAgJyNmY2RlOWMnLFxuICAgICcjZmFhNDc2JyxcbiAgICAnI2YwNzQ2ZScsXG4gICAgJyNlMzRmNmYnLFxuICAgICcjZGMzOTc3JyxcbiAgICAnI2I5MjU3YScsXG4gICAgJyM3YzFkNmYnLFxuICBdLFxuICBUZWFsOiBzY2hlbWVUZWFsLFxuICBUZWFsR3JuOiBbXG4gICAgJyNiMGYyYmMnLFxuICAgICcjODllOGFjJyxcbiAgICAnIzY3ZGJhNScsXG4gICAgJyM0Y2M4YTMnLFxuICAgICcjMzhiMmEzJyxcbiAgICAnIzJjOThhMCcsXG4gICAgJyMyNTdkOTgnLFxuICBdLFxuICBWaXJpZGlzOiBnZXRDb2xvclN0ZXBzKGludGVycG9sYXRlVmlyaWRpcyksXG4gIFdhcm06IGdldENvbG9yU3RlcHMoaW50ZXJwb2xhdGVXYXJtKSxcbiAgWWxHbjogYXNTY2hlbWUoc2NoZW1lWWxHbiksXG4gIFlsR25CdTogYXNTY2hlbWUoc2NoZW1lWWxHbkJ1KSxcbiAgWWxPckJyOiBhc1NjaGVtZShzY2hlbWVZbE9yQnIpLFxuICBZbE9yUmQ6IGFzU2NoZW1lKHNjaGVtZVlsT3JSZCksXG59O1xuXG5leHBvcnQgY29uc3QgQ09MT1JfU0NIRU1FX0tFWVMgPSBPYmplY3Qua2V5cyhDT0xPUl9TQ0hFTUVTKTtcblxuY29uc3QgY29tcGxlbWVudGFyeSA9ICcjZjUyMDIwJztcbmNvbnN0IGJhc2VEaWZmQ29sb3IgPSAnIzE3YTViZSc7XG5cbmNvbnN0IGRpZmZDb2xvcnM6IERpZmZDb2xvcnMgPSB7XG4gIG5lZ2F0aXZlOiB7XG4gICAgZmxvd3M6IHtcbiAgICAgIHNjaGVtZTogW0ZMT1dfTUlOX0NPTE9SLCBiYXNlRGlmZkNvbG9yXSxcbiAgICB9LFxuICB9LFxuICBwb3NpdGl2ZToge1xuICAgIGZsb3dzOiB7XG4gICAgICBzY2hlbWU6IFtGTE9XX01JTl9DT0xPUiwgY29tcGxlbWVudGFyeV0sXG4gICAgfSxcbiAgfSxcbiAgbG9jYXRpb25BcmVhczoge1xuICAgIG91dGxpbmU6ICdyZ2JhKDkyLDExMiwxMjgsMC41KScsXG4gICAgbm9ybWFsOiAncmdiYSgyMjAsMjIwLDIyMCwwLjUpJyxcbiAgfSxcbiAgb3V0bGluZUNvbG9yOiAncmdiKDIzMCwyMzMsMjM3KScsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rmxvd21hcENvbG9ycyhcbiAgc2V0dGluZ3NTdGF0ZTogU2V0dGluZ3NTdGF0ZSxcbik6IENvbG9ycyB8IERpZmZDb2xvcnMge1xuICByZXR1cm4gZ2V0Q29sb3JzKFxuICAgIGZhbHNlLCAvLyBUT0RPOiBkaWZmTW9kZVxuICAgIHNldHRpbmdzU3RhdGUuY29sb3JTY2hlbWUsXG4gICAgc2V0dGluZ3NTdGF0ZS5kYXJrTW9kZSxcbiAgICBzZXR0aW5nc1N0YXRlLmZhZGVFbmFibGVkLFxuICAgIHNldHRpbmdzU3RhdGUuZmFkZU9wYWNpdHlFbmFibGVkLFxuICAgIHNldHRpbmdzU3RhdGUuZmFkZUFtb3VudCxcbiAgICBzZXR0aW5nc1N0YXRlLmFuaW1hdGlvbkVuYWJsZWQsXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvcnMoXG4gIGRpZmZNb2RlOiBib29sZWFuLFxuICBjb2xvclNjaGVtZTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gIGRhcmtNb2RlOiBib29sZWFuLFxuICBmYWRlRW5hYmxlZDogYm9vbGVhbixcbiAgZmFkZU9wYWNpdHlFbmFibGVkOiBib29sZWFuLFxuICBmYWRlQW1vdW50OiBudW1iZXIsXG4gIGFuaW1hdGU6IGJvb2xlYW4sXG4pOiBDb2xvcnMgfCBEaWZmQ29sb3JzIHtcbiAgaWYgKGRpZmZNb2RlKSB7XG4gICAgcmV0dXJuIGRpZmZDb2xvcnM7XG4gIH1cblxuICBsZXQgc2NoZW1lO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yU2NoZW1lKSkge1xuICAgIHNjaGVtZSA9IGNvbG9yU2NoZW1lO1xuICB9IGVsc2Uge1xuICAgIHNjaGVtZSA9XG4gICAgICAoY29sb3JTY2hlbWUgJiYgQ09MT1JfU0NIRU1FU1tjb2xvclNjaGVtZV0pIHx8IERFRkFVTFRfQ09MT1JfU0NIRU1FO1xuICAgIGlmIChkYXJrTW9kZSkge1xuICAgICAgc2NoZW1lID0gc2NoZW1lLnNsaWNlKCkucmV2ZXJzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIChhbmltYXRlKVxuICAvLyBpZiAoZmFkZUFtb3VudCA+IDApXG4gIHtcbiAgICBjb25zdCBpbmRpY2VzID0gcmFuZ2UoMCwgTWF0aC5tYXgoMTAsIHNjaGVtZS5sZW5ndGgpKTtcbiAgICBjb25zdCBOID0gaW5kaWNlcy5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGNvbG9yU2NhbGUgPSBzY2FsZVNlcXVlbnRpYWwoaW50ZXJwb2xhdGVSZ2JCYXNpcyhzY2hlbWUpKS5kb21haW4oW1xuICAgICAgMCxcbiAgICAgIE4sXG4gICAgXSk7XG5cbiAgICBpZiAoIWZhZGVFbmFibGVkIHx8IGZhZGVBbW91bnQgPT09IDApIHtcbiAgICAgIHNjaGVtZSA9IGluZGljZXMubWFwKChjLCBpKSA9PiBjb2xvclNjYWxlKGkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYW1vdW50ID0gc2NhbGVQb3coKVxuICAgICAgICAvLyAuZXhwb25lbnQoYW5pbWF0ZSA/IDEgOiAxLzIuNSlcbiAgICAgICAgLy8gLmV4cG9uZW50KGFuaW1hdGUgPyAxMDAgOiA1MClcbiAgICAgICAgLy8gLmV4cG9uZW50KGFuaW1hdGUgPyAyMCA6IDUpXG4gICAgICAgIC8vIC5leHBvbmVudCgxLzIuNSlcbiAgICAgICAgLmV4cG9uZW50KDEuNSlcbiAgICAgICAgLmRvbWFpbihbTiwgMF0pXG4gICAgICAgIC8vIC5yYW5nZShbZmFkZUFtb3VudC8xMDAqKGFuaW1hdGU/MjoxKSwgMF0pXG4gICAgICAgIC8vIC5yYW5nZShbMCwgZmFkZUFtb3VudC8xMDAqKGFuaW1hdGU/MjoxKV0pXG4gICAgICAgIC8vIC5yYW5nZShkYXJrTW9kZSA/IFsxLWZhZGVBbW91bnQvMTAwLCAxXSA6IFsxLCAxIC0gZmFkZUFtb3VudC8xMDBdKVxuICAgICAgICAvLyAucmFuZ2UoZGFya01vZGUgPyBbMSAtIGZhZGVBbW91bnQvMTAwLCAxXSA6IFtmYWRlQW1vdW50LzEwMCwgMF0pXG4gICAgICAgIC8vIC5yYW5nZShbMSAtIGZhZGVBbW91bnQvMTAwLCAxXSlcbiAgICAgICAgLnJhbmdlKFswLCAoMiAqIGZhZGVBbW91bnQpIC8gMTAwXSk7XG5cbiAgICAgIHNjaGVtZSA9IGluZGljZXMubWFwKFxuICAgICAgICAoYywgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JTY2FsZShpKTtcbiAgICAgICAgICBjb25zdCBhID0gYW1vdW50KGkpO1xuICAgICAgICAgIGlmIChjb2xvciA9PSBudWxsIHx8IGEgPT0gbnVsbCkgcmV0dXJuICcjMDAwJztcbiAgICAgICAgICBjb25zdCBjb2wgPSBoY2woY29sb3IpO1xuICAgICAgICAgIGNvbC5sID0gZGFya01vZGUgPyBjb2wubCAtIGNvbC5sICogYSA6IGNvbC5sICsgKDEwMCAtIGNvbC5sKSAqIGE7XG4gICAgICAgICAgY29sLmMgPSBjb2wuYyAtIGNvbC5jICogKGEgLyA0KTtcbiAgICAgICAgICBpZiAoZmFkZU9wYWNpdHlFbmFibGVkKSB7XG4gICAgICAgICAgICBjb2wub3BhY2l0eSA9IGNvbC5vcGFjaXR5ICogKDEuMCAtIGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29sLnRvU3RyaW5nKCk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIGludGVycG9sYXRlUmdiQmFzaXMoW2NvbG9yU2NhbGUoaSksIGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnXSkoYW1vdW50KGkpKVxuICAgICAgICAvLyBpbnRlcnBvbGF0ZUhzbChjb2xvclNjYWxlKGkpLCBkYXJrTW9kZSA/ICcjMDAwJyA6ICcjZmZmJykoYW1vdW50KGkpKS50b1N0cmluZygpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGFya01vZGUsXG4gICAgZmxvd3M6IHtcbiAgICAgIHNjaGVtZSxcbiAgICB9LFxuICAgIGxvY2F0aW9uQ2lyY2xlczoge1xuICAgICAgb3V0Z29pbmc6IGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnLFxuICAgIH0sXG4gICAgb3V0bGluZUNvbG9yOiBkYXJrTW9kZSA/ICcjMDAwJyA6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknLFxuICB9O1xufVxuXG5mdW5jdGlvbiBpbnRlcnBvbGF0ZVJnYmFCYXNpcyhjb2xvcnM6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IHNwbGluZSA9IGludGVycG9sYXRlQmFzaXM7XG4gIGNvbnN0IG4gPSBjb2xvcnMubGVuZ3RoO1xuICBsZXQgcjogYW55ID0gbmV3IEFycmF5KG4pLFxuICAgIGc6IGFueSA9IG5ldyBBcnJheShuKSxcbiAgICBiOiBhbnkgPSBuZXcgQXJyYXkobiksXG4gICAgb3BhY2l0eTogYW55ID0gbmV3IEFycmF5KG4pLFxuICAgIGksXG4gICAgY29sb3I6IGFueTtcbiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgIGNvbG9yID0gY29sb3JSZ2IoY29sb3JzW2ldKTtcbiAgICByW2ldID0gY29sb3IuciB8fCAwO1xuICAgIGdbaV0gPSBjb2xvci5nIHx8IDA7XG4gICAgYltpXSA9IGNvbG9yLmIgfHwgMDtcbiAgICBvcGFjaXR5W2ldID0gY29sb3Iub3BhY2l0eSB8fCAwO1xuICB9XG4gIHIgPSBzcGxpbmUocik7XG4gIGcgPSBzcGxpbmUoZyk7XG4gIGIgPSBzcGxpbmUoYik7XG4gIG9wYWNpdHkgPSBzcGxpbmUob3BhY2l0eSk7XG4gIC8vIGNvbG9yLm9wYWNpdHkgPSAxO1xuICByZXR1cm4gZnVuY3Rpb24gKHQ6IG51bWJlcikge1xuICAgIGNvbG9yLnIgPSByKHQpO1xuICAgIGNvbG9yLmcgPSBnKHQpO1xuICAgIGNvbG9yLmIgPSBiKHQpO1xuICAgIGNvbG9yLm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgIHJldHVybiBjb2xvciArICcnO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmxvd0NvbG9yU2NhbGUoXG4gIGRvbWFpbjogW251bWJlciwgbnVtYmVyXSxcbiAgc2NoZW1lOiBzdHJpbmdbXSxcbiAgYW5pbWF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbik6IENvbG9yU2NhbGUge1xuICBjb25zdCBzY2FsZSA9IHNjYWxlU2VxdWVudGlhbFBvdyhpbnRlcnBvbGF0ZVJnYmFCYXNpcyhzY2hlbWUpKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICAuZXhwb25lbnQoYW5pbWF0ZSA/IDEgLyAyIDogMSAvIDMpXG4gICAgLmRvbWFpbihkb21haW4pO1xuXG4gIHJldHVybiAodmFsdWU6IG51bWJlcikgPT4gY29sb3JBc1JnYmEoc2NhbGUodmFsdWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsb3dDb2xvclNjYWxlKFxuICBjb2xvcnM6IENvbG9yc1JHQkEgfCBEaWZmQ29sb3JzUkdCQSxcbiAgbWFnbml0dWRlRXh0ZW50OiBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLFxuICBhbmltYXRlOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogKG1hZ25pdHVkZTogbnVtYmVyKSA9PiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gIGNvbnN0IG1pbk1hZ25pdHVkZSA9IG1hZ25pdHVkZUV4dGVudCA/IG1hZ25pdHVkZUV4dGVudFswXSA6IDA7XG4gIGNvbnN0IG1heE1hZ25pdHVkZSA9IG1hZ25pdHVkZUV4dGVudCA/IG1hZ25pdHVkZUV4dGVudFsxXSA6IDA7XG4gIGlmIChpc0RpZmZDb2xvcnNSR0JBKGNvbG9ycykpIHtcbiAgICBjb25zdCBwb3NTY2FsZSA9IGNyZWF0ZUZsb3dDb2xvclNjYWxlKFxuICAgICAgWzAsIG1heE1hZ25pdHVkZV0sXG4gICAgICBjb2xvcnMucG9zaXRpdmUuZmxvd3Muc2NoZW1lLFxuICAgICAgYW5pbWF0ZSxcbiAgICApO1xuICAgIGNvbnN0IG5lZ1NjYWxlID0gY3JlYXRlRmxvd0NvbG9yU2NhbGUoXG4gICAgICBbMCwgbWluTWFnbml0dWRlXSxcbiAgICAgIGNvbG9ycy5uZWdhdGl2ZS5mbG93cy5zY2hlbWUsXG4gICAgICBhbmltYXRlLFxuICAgICk7XG5cbiAgICByZXR1cm4gKG1hZ25pdHVkZTogbnVtYmVyKSA9PlxuICAgICAgbWFnbml0dWRlID49IDAgPyBwb3NTY2FsZShtYWduaXR1ZGUpIDogbmVnU2NhbGUobWFnbml0dWRlKTtcbiAgfVxuXG4gIGNvbnN0IHNjYWxlID0gY3JlYXRlRmxvd0NvbG9yU2NhbGUoXG4gICAgWzAsIG1heE1hZ25pdHVkZSB8fCAwXSxcbiAgICBjb2xvcnMuZmxvd3Muc2NoZW1lLFxuICAgIGFuaW1hdGUsXG4gICk7XG4gIHJldHVybiAobWFnbml0dWRlOiBudW1iZXIpID0+IHNjYWxlKG1hZ25pdHVkZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpZmZDb2xvcnMoXG4gIGNvbG9yczogRGlmZkNvbG9ycyB8IENvbG9ycyxcbik6IGNvbG9ycyBpcyBEaWZmQ29sb3JzIHtcbiAgcmV0dXJuIChjb2xvcnMgYXMgRGlmZkNvbG9ycykucG9zaXRpdmUgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlmZkNvbG9yc1JHQkEoXG4gIGNvbG9yczogRGlmZkNvbG9yc1JHQkEgfCBDb2xvcnNSR0JBLFxuKTogY29sb3JzIGlzIERpZmZDb2xvcnNSR0JBIHtcbiAgcmV0dXJuIChjb2xvcnMgYXMgRGlmZkNvbG9yc1JHQkEpLnBvc2l0aXZlICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldExvY2F0aW9uQXJlYUNvbG9yc1JHQkEoXG4gIGNvbG9yczogTG9jYXRpb25BcmVhQ29sb3JzIHwgdW5kZWZpbmVkLFxuICBkYXJrTW9kZTogYm9vbGVhbixcbik6IExvY2F0aW9uQXJlYUNvbG9yc1JHQkEge1xuICBjb25zdCBub3JtYWxDb2xvciA9IChjb2xvcnMgJiYgY29sb3JzLm5vcm1hbCkgfHwgREVGQVVMVF9MT0NBVElPTl9BUkVBX0NPTE9SO1xuICBjb25zdCBub3JtYWxDb2xvckhjbCA9IGhjbChub3JtYWxDb2xvcik7XG4gIGNvbnN0IGxvY2F0aW9uQXJlYXNOb3JtYWwgPSBjb2xvckFzUmdiYShub3JtYWxDb2xvcik7XG4gIHJldHVybiB7XG4gICAgbm9ybWFsOiBsb2NhdGlvbkFyZWFzTm9ybWFsLFxuICAgIGNvbm5lY3RlZDogY29sb3JBc1JnYmFPcihjb2xvcnMgJiYgY29sb3JzLmNvbm5lY3RlZCwgbG9jYXRpb25BcmVhc05vcm1hbCksXG4gICAgaGlnaGxpZ2h0ZWQ6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLmhpZ2hsaWdodGVkLFxuICAgICAgb3BhY2lmeUhleChcbiAgICAgICAgbm9ybWFsQ29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDEpLnRvU3RyaW5nKCksXG4gICAgICAgIDAuNSxcbiAgICAgICksXG4gICAgKSxcbiAgICBzZWxlY3RlZDogY29sb3JBc1JnYmFPcihcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMuc2VsZWN0ZWQsXG4gICAgICBvcGFjaWZ5SGV4KFxuICAgICAgICBub3JtYWxDb2xvckhjbFtkYXJrTW9kZSA/ICdicmlnaHRlcicgOiAnZGFya2VyJ10oMikudG9TdHJpbmcoKSxcbiAgICAgICAgMC44LFxuICAgICAgKSxcbiAgICApLFxuICAgIG91dGxpbmU6IGNvbG9yQXNSZ2JhT3IoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLm91dGxpbmUsXG4gICAgICBjb2xvckFzUmdiYShcbiAgICAgICAgbm9ybWFsQ29sb3JIY2xbZGFya01vZGUgPyAnYnJpZ2h0ZXInIDogJ2RhcmtlciddKDQpLnRvU3RyaW5nKCksXG4gICAgICApLFxuICAgICksXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0NvbG9ycyB7XG4gIHNjaGVtZT86IHN0cmluZ1tdO1xuICBoaWdobGlnaHRlZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbkNpcmNsZUNvbG9ycyB7XG4gIGlubmVyPzogc3RyaW5nO1xuICBvdXRnb2luZz86IHN0cmluZztcbiAgaW5jb21pbmc/OiBzdHJpbmc7XG4gIGhpZ2hsaWdodGVkPzogc3RyaW5nO1xuICBlbXB0eT86IHN0cmluZztcbiAgb3V0bGluZUVtcHR5TWl4PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQXJlYUNvbG9ycyB7XG4gIG91dGxpbmU/OiBzdHJpbmc7XG4gIG5vcm1hbD86IHN0cmluZztcbiAgc2VsZWN0ZWQ/OiBzdHJpbmc7XG4gIGhpZ2hsaWdodGVkPzogc3RyaW5nO1xuICBjb25uZWN0ZWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNvbG9ycyB7XG4gIGRhcmtNb2RlPzogYm9vbGVhbjtcbiAgbG9jYXRpb25BcmVhcz86IExvY2F0aW9uQXJlYUNvbG9ycztcbiAgZGltbWVkT3BhY2l0eT86IG51bWJlcjtcbiAgb3V0bGluZUNvbG9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9ycyBleHRlbmRzIEJhc2VDb2xvcnMge1xuICBmbG93cz86IEZsb3dDb2xvcnM7XG4gIGxvY2F0aW9uQ2lyY2xlcz86IExvY2F0aW9uQ2lyY2xlQ29sb3JzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dBbmRDaXJjbGVDb2xvcnMge1xuICBmbG93cz86IEZsb3dDb2xvcnM7XG4gIGxvY2F0aW9uQ2lyY2xlcz86IExvY2F0aW9uQ2lyY2xlQ29sb3JzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZDb2xvcnMgZXh0ZW5kcyBCYXNlQ29sb3JzIHtcbiAgcG9zaXRpdmU/OiBGbG93QW5kQ2lyY2xlQ29sb3JzO1xuICBuZWdhdGl2ZT86IEZsb3dBbmRDaXJjbGVDb2xvcnM7XG59XG5cbi8vIFRoZSB4eHhDb2xvcnNSR0JBIG9iamVjdHMgYXJlIG1pcnJvcmluZyB0aGUgaW5wdXQgY29sb3JzJyBvYmplY3RzLFxuLy8gYnV0IGNvbnZlcnRlZCB0byBSR0JBIGFuZCB3aXRoIGFsbCB0aGUgb21pdHRlZCBvbmVzIHNldCB0byBkZWZhdWx0c1xuLy8gb3IgZGVyaXZlZC5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0NvbG9yc1JHQkEge1xuICBzY2hlbWU6IHN0cmluZ1tdO1xuICBoaWdobGlnaHRlZDogUkdCQTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbkNpcmNsZUNvbG9yc1JHQkEge1xuICBpbm5lcjogUkdCQTtcbiAgb3V0Z29pbmc6IFJHQkE7XG4gIGluY29taW5nOiBSR0JBO1xuICBoaWdobGlnaHRlZDogUkdCQTtcbiAgZW1wdHk6IFJHQkE7XG4gIG91dGxpbmVFbXB0eU1peDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQXJlYUNvbG9yc1JHQkEge1xuICBvdXRsaW5lOiBSR0JBO1xuICBub3JtYWw6IFJHQkE7XG4gIHNlbGVjdGVkOiBSR0JBO1xuICBoaWdobGlnaHRlZDogUkdCQTtcbiAgY29ubmVjdGVkOiBSR0JBO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VDb2xvcnNSR0JBIHtcbiAgZGFya01vZGU6IGJvb2xlYW47XG4gIGxvY2F0aW9uQXJlYXM6IExvY2F0aW9uQXJlYUNvbG9yc1JHQkE7XG4gIGRpbW1lZE9wYWNpdHk6IG51bWJlcjtcbiAgb3V0bGluZUNvbG9yOiBSR0JBO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9yc1JHQkEgZXh0ZW5kcyBCYXNlQ29sb3JzUkdCQSB7XG4gIGZsb3dzOiBGbG93Q29sb3JzUkdCQTtcbiAgbG9jYXRpb25DaXJjbGVzOiBMb2NhdGlvbkNpcmNsZUNvbG9yc1JHQkE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0FuZENpcmNsZUNvbG9yc1JHQkEge1xuICBmbG93czogRmxvd0NvbG9yc1JHQkE7XG4gIGxvY2F0aW9uQ2lyY2xlczogTG9jYXRpb25DaXJjbGVDb2xvcnNSR0JBO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZDb2xvcnNSR0JBIGV4dGVuZHMgQmFzZUNvbG9yc1JHQkEge1xuICBwb3NpdGl2ZTogRmxvd0FuZENpcmNsZUNvbG9yc1JHQkE7XG4gIG5lZ2F0aXZlOiBGbG93QW5kQ2lyY2xlQ29sb3JzUkdCQTtcbn1cblxuZnVuY3Rpb24gZ2V0Rmxvd0FuZENpcmNsZUNvbG9ycyhcbiAgaW5wdXRDb2xvcnM6IEZsb3dBbmRDaXJjbGVDb2xvcnMgfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRGbG93Q29sb3JTY2hlbWU6IHN0cmluZ1tdLFxuICBkYXJrTW9kZTogYm9vbGVhbixcbik6IEZsb3dBbmRDaXJjbGVDb2xvcnNSR0JBIHtcbiAgY29uc3QgZmxvd0NvbG9yU2NoZW1lID1cbiAgICAoaW5wdXRDb2xvcnMgJiYgaW5wdXRDb2xvcnMuZmxvd3MgJiYgaW5wdXRDb2xvcnMuZmxvd3Muc2NoZW1lKSB8fFxuICAgIGRlZmF1bHRGbG93Q29sb3JTY2hlbWU7XG4gIGNvbnN0IG1heEZsb3dDb2xvckhjbCA9IGhjbChmbG93Q29sb3JTY2hlbWVbZmxvd0NvbG9yU2NoZW1lLmxlbmd0aCAtIDFdKTtcbiAgY29uc3QgZmxvd0NvbG9ySGlnaGxpZ2h0ZWQgPSBjb2xvckFzUmdiYU9yKFxuICAgIGlucHV0Q29sb3JzICYmIGlucHV0Q29sb3JzLmZsb3dzICYmIGlucHV0Q29sb3JzLmZsb3dzLmhpZ2hsaWdodGVkLFxuICAgIGNvbG9yQXNSZ2JhKFxuICAgICAgbWF4Rmxvd0NvbG9ySGNsW2RhcmtNb2RlID8gJ2JyaWdodGVyJyA6ICdkYXJrZXInXSgwLjcpLnRvU3RyaW5nKCksXG4gICAgKSxcbiAgKTtcblxuICBjb25zdCBlbXB0eUNvbG9yID0gY29sb3JBc1JnYmFPcihcbiAgICBpbnB1dENvbG9ycz8ubG9jYXRpb25DaXJjbGVzPy5lbXB0eSxcbiAgICBkYXJrTW9kZSA/ICcjMDAwJyA6ICcjZmZmJyxcbiAgKTtcbiAgY29uc3QgaW5uZXJDb2xvciA9IGNvbG9yQXNSZ2JhT3IoXG4gICAgaW5wdXRDb2xvcnMgJiZcbiAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcyAmJlxuICAgICAgaW5wdXRDb2xvcnMubG9jYXRpb25DaXJjbGVzLmlubmVyLFxuICAgIG1heEZsb3dDb2xvckhjbC50b1N0cmluZygpLFxuICApO1xuICByZXR1cm4ge1xuICAgIGZsb3dzOiB7XG4gICAgICBzY2hlbWU6IGZsb3dDb2xvclNjaGVtZSxcbiAgICAgIGhpZ2hsaWdodGVkOiBmbG93Q29sb3JIaWdobGlnaHRlZCxcbiAgICB9LFxuICAgIGxvY2F0aW9uQ2lyY2xlczoge1xuICAgICAgaW5uZXI6IGlubmVyQ29sb3IsXG4gICAgICBvdXRnb2luZzogY29sb3JBc1JnYmFPcihcbiAgICAgICAgaW5wdXRDb2xvcnMgJiZcbiAgICAgICAgICBpbnB1dENvbG9ycy5sb2NhdGlvbkNpcmNsZXMgJiZcbiAgICAgICAgICBpbnB1dENvbG9ycy5sb2NhdGlvbkNpcmNsZXMub3V0Z29pbmcsXG4gICAgICAgIGRhcmtNb2RlID8gJyMwMDAnIDogJyNmZmYnLFxuICAgICAgKSxcbiAgICAgIGluY29taW5nOiBjb2xvckFzUmdiYU9yKFxuICAgICAgICBpbnB1dENvbG9ycyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcy5pbmNvbWluZyxcbiAgICAgICAgbWF4Rmxvd0NvbG9ySGNsW2RhcmtNb2RlID8gJ2JyaWdodGVyJyA6ICdkYXJrZXInXSgxLjI1KS50b1N0cmluZygpLFxuICAgICAgKSxcbiAgICAgIGhpZ2hsaWdodGVkOiBjb2xvckFzUmdiYU9yKFxuICAgICAgICBpbnB1dENvbG9ycyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcyAmJlxuICAgICAgICAgIGlucHV0Q29sb3JzLmxvY2F0aW9uQ2lyY2xlcy5oaWdobGlnaHRlZCxcbiAgICAgICAgZmxvd0NvbG9ySGlnaGxpZ2h0ZWQsXG4gICAgICApLFxuICAgICAgZW1wdHk6IGVtcHR5Q29sb3IsXG4gICAgICBvdXRsaW5lRW1wdHlNaXg6IGlucHV0Q29sb3JzPy5sb2NhdGlvbkNpcmNsZXM/Lm91dGxpbmVFbXB0eU1peCA/PyAwLjQsXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0QmFzZUNvbG9yc1JHQkEoXG4gIGNvbG9yczogQ29sb3JzIHwgRGlmZkNvbG9ycyB8IHVuZGVmaW5lZCxcbik6IEJhc2VDb2xvcnNSR0JBIHtcbiAgY29uc3QgZGFya01vZGUgPSBjb2xvcnMgJiYgY29sb3JzLmRhcmtNb2RlID8gdHJ1ZSA6IGZhbHNlO1xuICByZXR1cm4ge1xuICAgIGRhcmtNb2RlLFxuICAgIGxvY2F0aW9uQXJlYXM6IGdldExvY2F0aW9uQXJlYUNvbG9yc1JHQkEoXG4gICAgICBjb2xvcnMgJiYgY29sb3JzLmxvY2F0aW9uQXJlYXMsXG4gICAgICBkYXJrTW9kZSxcbiAgICApLFxuICAgIG91dGxpbmVDb2xvcjogY29sb3JBc1JnYmEoXG4gICAgICAoY29sb3JzICYmIGNvbG9ycy5vdXRsaW5lQ29sb3IpIHx8IERFRkFVTFRfT1VUTElORV9DT0xPUixcbiAgICApLFxuICAgIGRpbW1lZE9wYWNpdHk6XG4gICAgICBjb2xvcnMgJiYgY29sb3JzLmRpbW1lZE9wYWNpdHkgIT0gbnVsbFxuICAgICAgICA/IGNvbG9ycy5kaW1tZWRPcGFjaXR5XG4gICAgICAgIDogREVGQVVMVF9ESU1NRURfT1BBQ0lUWSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yc1JHQkEoY29sb3JzOiBDb2xvcnMgfCB1bmRlZmluZWQpOiBDb2xvcnNSR0JBIHtcbiAgY29uc3QgYmFzZUNvbG9yc1JHQkEgPSBnZXRCYXNlQ29sb3JzUkdCQShjb2xvcnMpO1xuICByZXR1cm4ge1xuICAgIC4uLmJhc2VDb2xvcnNSR0JBLFxuICAgIC4uLmdldEZsb3dBbmRDaXJjbGVDb2xvcnMoXG4gICAgICBjb2xvcnMsXG4gICAgICBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FLFxuICAgICAgYmFzZUNvbG9yc1JHQkEuZGFya01vZGUsXG4gICAgKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpZmZDb2xvcnNSR0JBKFxuICBjb2xvcnM6IERpZmZDb2xvcnMgfCB1bmRlZmluZWQsXG4pOiBEaWZmQ29sb3JzUkdCQSB7XG4gIGNvbnN0IGJhc2VDb2xvcnNSR0JBID0gZ2V0QmFzZUNvbG9yc1JHQkEoY29sb3JzKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlQ29sb3JzUkdCQSxcbiAgICBwb3NpdGl2ZTogZ2V0Rmxvd0FuZENpcmNsZUNvbG9ycyhcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMucG9zaXRpdmUsXG4gICAgICBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FX1BPU0lUSVZFLFxuICAgICAgYmFzZUNvbG9yc1JHQkEuZGFya01vZGUsXG4gICAgKSxcbiAgICBuZWdhdGl2ZTogZ2V0Rmxvd0FuZENpcmNsZUNvbG9ycyhcbiAgICAgIGNvbG9ycyAmJiBjb2xvcnMubmVnYXRpdmUsXG4gICAgICBERUZBVUxUX0ZMT1dfQ09MT1JfU0NIRU1FX05FR0FUSVZFLFxuICAgICAgYmFzZUNvbG9yc1JHQkEuZGFya01vZGUsXG4gICAgKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJnYmFBc1N0cmluZyhjb2xvcjogUkdCQSk6IHN0cmluZyB7XG4gIHJldHVybiBgcmdiYSgke2NvbG9yLmpvaW4oJywnKX0pYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pZHBvaW50KGE6IG51bWJlciwgYjogbnVtYmVyLCB6ZXJvVG9PbmU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBhICsgKGIgLSBhKSAqIHplcm9Ub09uZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1peENvbG9yc1JHQkEoXG4gIGNvbG9yMTogUkdCQSxcbiAgY29sb3IyOiBSR0JBLFxuICB6ZXJvVG9PbmU6IG51bWJlcixcbik6IFJHQkEge1xuICByZXR1cm4gY29sb3IxLm1hcCgodiwgaSkgPT4gbWlkcG9pbnQodiwgY29sb3IyW2ldLCB6ZXJvVG9PbmUpKSBhcyBSR0JBO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRDb2xvcnM7XG4iXX0=\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/data/dist/colors.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/data/dist/getViewStateForLocations.js": | |
/*!************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/data/dist/getViewStateForLocations.js ***! | |
\************************************************************************/ | |
/*! exports provided: getViewStateForFeatures, getViewStateForLocations */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getViewStateForFeatures\", function() { return getViewStateForFeatures; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getViewStateForLocations\", function() { return getViewStateForLocations; });\n/* harmony import */ var d3_geo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-geo */ \"./node_modules/d3-geo/src/index.js\");\n/* harmony import */ var _math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @math.gl/web-mercator */ \"./node_modules/@math.gl/web-mercator/dist/esm/index.js\");\n\n\nfunction getViewStateForFeatures(featureCollection, size, opts) {\n const { pad = 0.05, maxZoom = 100 } = opts || {};\n const bounds = Object(d3_geo__WEBPACK_IMPORTED_MODULE_0__[\"geoBounds\"])(featureCollection);\n const [[x1, y1], [x2, y2]] = bounds;\n const paddedBounds = pad\n ? [\n [x1 - pad * (x2 - x1), y1 - pad * (y2 - y1)],\n [x2 + pad * (x2 - x1), y2 + pad * (y2 - y1)],\n ]\n : bounds;\n const [width, height] = size;\n return Object.assign(Object.assign({}, Object(_math_gl_web_mercator__WEBPACK_IMPORTED_MODULE_1__[\"fitBounds\"])({\n width,\n height,\n bounds: paddedBounds,\n padding: opts === null || opts === void 0 ? void 0 : opts.padding,\n // minZoom,\n maxZoom,\n })), { width,\n height, bearing: 0, pitch: 0 });\n}\nfunction getViewStateForLocations(locations, getLocationCoords, size, opts) {\n const asGeometry = (location) => ({\n type: 'Point',\n coordinates: getLocationCoords(location),\n });\n let geometries;\n if (Array.isArray(locations)) {\n geometries = locations.map(asGeometry);\n }\n else {\n geometries = [];\n for (const location of locations) {\n geometries.push(asGeometry(location));\n }\n }\n return getViewStateForFeatures({\n type: 'GeometryCollection',\n geometries,\n }, size, opts);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dldFZpZXdTdGF0ZUZvckxvY2F0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQWtCaEQsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxpQkFFc0IsRUFDdEIsSUFBc0IsRUFDdEIsSUFBMEI7SUFFMUIsTUFBTSxFQUFDLEdBQUcsR0FBRyxJQUFJLEVBQUUsT0FBTyxHQUFHLEdBQUcsRUFBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDL0MsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLGlCQUF3QixDQUFDLENBQUM7SUFDbkQsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3BDLE1BQU0sWUFBWSxHQUF5QyxHQUFHO1FBQzVELENBQUMsQ0FBQztZQUNFLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQzdDO1FBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNYLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzdCLHVDQUNLLFNBQVMsQ0FBQztRQUNYLEtBQUs7UUFDTCxNQUFNO1FBQ04sTUFBTSxFQUFFLFlBQVk7UUFDcEIsT0FBTyxFQUFFLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxPQUFPO1FBQ3RCLFdBQVc7UUFDWCxPQUFPO0tBQ1IsQ0FBQyxLQUNGLEtBQUs7UUFDTCxNQUFNLEVBQ04sT0FBTyxFQUFFLENBQUMsRUFDVixLQUFLLEVBQUUsQ0FBQyxJQUNSO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsU0FBc0IsRUFDdEIsaUJBQW9ELEVBQ3BELElBQXNCLEVBQ3RCLElBQTBCO0lBRTFCLE1BQU0sVUFBVSxHQUFHLENBQUMsUUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztLQUN6QyxDQUFDLENBQUM7SUFDSCxJQUFJLFVBQVUsQ0FBQztJQUNmLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUM1QixVQUFVLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUN4QztTQUFNO1FBQ0wsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRTtZQUNoQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ3ZDO0tBQ0Y7SUFDRCxPQUFPLHVCQUF1QixDQUM1QjtRQUNFLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsVUFBVTtLQUNKLEVBQ1IsSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Z2VvQm91bmRzfSBmcm9tICdkMy1nZW8nO1xuaW1wb3J0IHtmaXRCb3VuZHN9IGZyb20gJ0BtYXRoLmdsL3dlYi1tZXJjYXRvcic7XG5pbXBvcnQgdHlwZSB7XG4gIEZlYXR1cmVDb2xsZWN0aW9uLFxuICBHZW9tZXRyeUNvbGxlY3Rpb24sXG4gIEdlb21ldHJ5T2JqZWN0LFxufSBmcm9tICdnZW9qc29uJztcbmltcG9ydCB0eXBlIHtWaWV3U3RhdGV9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBMb2NhdGlvblByb3BlcnRpZXMgPSBhbnk7XG5cbmV4cG9ydCB0eXBlIEdldFZpZXdTdGF0ZU9wdGlvbnMgPSB7XG4gIHBhZD86IG51bWJlcjsgLy8gc2l6ZSByYXRpb1xuICBwYWRkaW5nPzoge3RvcDogbnVtYmVyOyBib3R0b206IG51bWJlcjsgbGVmdDogbnVtYmVyOyByaWdodDogbnVtYmVyfTtcbiAgdGlsZVNpemU/OiBudW1iZXI7XG4gIC8vIG1pblpvb20/OiBudW1iZXI7ICAvLyBub3Qgc3VwcG9ydGVkIGJ5IGZpdEJvdW5kc1xuICBtYXhab29tPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdTdGF0ZUZvckZlYXR1cmVzKFxuICBmZWF0dXJlQ29sbGVjdGlvbjpcbiAgICB8IEZlYXR1cmVDb2xsZWN0aW9uPEdlb21ldHJ5T2JqZWN0LCBMb2NhdGlvblByb3BlcnRpZXM+XG4gICAgfCBHZW9tZXRyeUNvbGxlY3Rpb24sXG4gIHNpemU6IFtudW1iZXIsIG51bWJlcl0sXG4gIG9wdHM/OiBHZXRWaWV3U3RhdGVPcHRpb25zLFxuKTogVmlld1N0YXRlICYge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfSB7XG4gIGNvbnN0IHtwYWQgPSAwLjA1LCBtYXhab29tID0gMTAwfSA9IG9wdHMgfHwge307XG4gIGNvbnN0IGJvdW5kcyA9IGdlb0JvdW5kcyhmZWF0dXJlQ29sbGVjdGlvbiBhcyBhbnkpO1xuICBjb25zdCBbW3gxLCB5MV0sIFt4MiwgeTJdXSA9IGJvdW5kcztcbiAgY29uc3QgcGFkZGVkQm91bmRzOiBbW251bWJlciwgbnVtYmVyXSwgW251bWJlciwgbnVtYmVyXV0gPSBwYWRcbiAgICA/IFtcbiAgICAgICAgW3gxIC0gcGFkICogKHgyIC0geDEpLCB5MSAtIHBhZCAqICh5MiAtIHkxKV0sXG4gICAgICAgIFt4MiArIHBhZCAqICh4MiAtIHgxKSwgeTIgKyBwYWQgKiAoeTIgLSB5MSldLFxuICAgICAgXVxuICAgIDogYm91bmRzO1xuICBjb25zdCBbd2lkdGgsIGhlaWdodF0gPSBzaXplO1xuICByZXR1cm4ge1xuICAgIC4uLmZpdEJvdW5kcyh7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIGJvdW5kczogcGFkZGVkQm91bmRzLFxuICAgICAgcGFkZGluZzogb3B0cz8ucGFkZGluZyxcbiAgICAgIC8vIG1pblpvb20sXG4gICAgICBtYXhab29tLFxuICAgIH0pLFxuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBiZWFyaW5nOiAwLFxuICAgIHBpdGNoOiAwLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zPEw+KFxuICBsb2NhdGlvbnM6IEl0ZXJhYmxlPEw+LFxuICBnZXRMb2NhdGlvbkNvb3JkczogKGxvY2F0aW9uOiBMKSA9PiBbbnVtYmVyLCBudW1iZXJdLFxuICBzaXplOiBbbnVtYmVyLCBudW1iZXJdLFxuICBvcHRzPzogR2V0Vmlld1N0YXRlT3B0aW9ucyxcbik6IFZpZXdTdGF0ZSAmIHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn0ge1xuICBjb25zdCBhc0dlb21ldHJ5ID0gKGxvY2F0aW9uOiBMKSA9PiAoe1xuICAgIHR5cGU6ICdQb2ludCcsXG4gICAgY29vcmRpbmF0ZXM6IGdldExvY2F0aW9uQ29vcmRzKGxvY2F0aW9uKSxcbiAgfSk7XG4gIGxldCBnZW9tZXRyaWVzO1xuICBpZiAoQXJyYXkuaXNBcnJheShsb2NhdGlvbnMpKSB7XG4gICAgZ2VvbWV0cmllcyA9IGxvY2F0aW9ucy5tYXAoYXNHZW9tZXRyeSk7XG4gIH0gZWxzZSB7XG4gICAgZ2VvbWV0cmllcyA9IFtdO1xuICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2YgbG9jYXRpb25zKSB7XG4gICAgICBnZW9tZXRyaWVzLnB1c2goYXNHZW9tZXRyeShsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZ2V0Vmlld1N0YXRlRm9yRmVhdHVyZXMoXG4gICAge1xuICAgICAgdHlwZTogJ0dlb21ldHJ5Q29sbGVjdGlvbicsXG4gICAgICBnZW9tZXRyaWVzLFxuICAgIH0gYXMgYW55LFxuICAgIHNpemUsXG4gICAgb3B0cyxcbiAgKTtcbn1cbiJdfQ==\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/data/dist/getViewStateForLocations.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/data/dist/index.js": | |
/*!*****************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/data/dist/index.js ***! | |
\*****************************************************/ | |
/*! exports provided: isCluster, isLocationClusterNode, isAggregateFlow, LocationFilterMode, opacityFloatToInteger, opacifyHex, colorAsRgba, ColorScheme, GRAYISH, schemeTeal, DEFAULT_COLOR_SCHEME, COLOR_SCHEMES, COLOR_SCHEME_KEYS, getFlowmapColors, getColors, createFlowColorScale, getFlowColorScale, isDiffColors, isDiffColorsRGBA, getColorsRGBA, getDiffColorsRGBA, rgbaAsString, midpoint, mixColorsRGBA, getOuterCircleRadiusByIndex, getLocationCoordsByIndex, getFlowLineAttributesByIndex, parseTime, TimeGranularityKey, tickMultiFormat, TIME_GRANULARITIES, getTimeGranularityByKey, getTimeGranularityByOrder, getTimeGranularityForDate, areRangesEqual, getViewStateForFeatures, getViewStateForLocations, isFlowmapData, isFlowmapDataProvider, FlowmapAggregateAccessors, LocalFlowmapDataProvider */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types */ \"./node_modules/@flowmap.gl/data/dist/types.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isCluster\", function() { return _types__WEBPACK_IMPORTED_MODULE_0__[\"isCluster\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isLocationClusterNode\", function() { return _types__WEBPACK_IMPORTED_MODULE_0__[\"isLocationClusterNode\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isAggregateFlow\", function() { return _types__WEBPACK_IMPORTED_MODULE_0__[\"isAggregateFlow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LocationFilterMode\", function() { return _types__WEBPACK_IMPORTED_MODULE_0__[\"LocationFilterMode\"]; });\n\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./colors */ \"./node_modules/@flowmap.gl/data/dist/colors.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"opacityFloatToInteger\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"opacityFloatToInteger\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"opacifyHex\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"opacifyHex\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"colorAsRgba\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"colorAsRgba\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ColorScheme\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"ColorScheme\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GRAYISH\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"GRAYISH\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"schemeTeal\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"schemeTeal\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_COLOR_SCHEME\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"DEFAULT_COLOR_SCHEME\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"COLOR_SCHEMES\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"COLOR_SCHEMES\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"COLOR_SCHEME_KEYS\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"COLOR_SCHEME_KEYS\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getFlowmapColors\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"getFlowmapColors\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getColors\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"getColors\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createFlowColorScale\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"createFlowColorScale\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getFlowColorScale\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"getFlowColorScale\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDiffColors\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"isDiffColors\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isDiffColorsRGBA\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"isDiffColorsRGBA\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getColorsRGBA\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"getColorsRGBA\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDiffColorsRGBA\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"getDiffColorsRGBA\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rgbaAsString\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"rgbaAsString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"midpoint\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"midpoint\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mixColorsRGBA\", function() { return _colors__WEBPACK_IMPORTED_MODULE_1__[\"mixColorsRGBA\"]; });\n\n/* harmony import */ var _FlowmapState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FlowmapState */ \"./node_modules/@flowmap.gl/data/dist/FlowmapState.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _FlowmapSelectors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./FlowmapSelectors */ \"./node_modules/@flowmap.gl/data/dist/FlowmapSelectors.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOuterCircleRadiusByIndex\", function() { return _FlowmapSelectors__WEBPACK_IMPORTED_MODULE_3__[\"getOuterCircleRadiusByIndex\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLocationCoordsByIndex\", function() { return _FlowmapSelectors__WEBPACK_IMPORTED_MODULE_3__[\"getLocationCoordsByIndex\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getFlowLineAttributesByIndex\", function() { return _FlowmapSelectors__WEBPACK_IMPORTED_MODULE_3__[\"getFlowLineAttributesByIndex\"]; });\n\n/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./time */ \"./node_modules/@flowmap.gl/data/dist/time.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"parseTime\", function() { return _time__WEBPACK_IMPORTED_MODULE_4__[\"parseTime\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TimeGranularityKey\", function() { return _time__WEBPACK_IMPORTED_MODULE_4__[\"TimeGranularityKey\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tickMultiFormat\", function() { return _time__WEBPACK_IMPORTED_MODULE_4__[\"tickMultiFormat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TIME_GRANULARITIES\", function() { return _time__WEBPACK_IMPORTED_MODULE_4__[\"TIME_GRANULARITIES\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTimeGranularityByKey\", function() { return _time__WEBPACK_IMPORTED_MODULE_4__[\"getTimeGranularityByKey\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTimeGranularityByOrder\", function() { return _time__WEBPACK_IMPORTED_MODULE_4__[\"getTimeGranularityByOrder\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTimeGranularityForDate\", function() { return _time__WEBPACK_IMPORTED_MODULE_4__[\"getTimeGranularityForDate\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"areRangesEqual\", function() { return _time__WEBPACK_IMPORTED_MODULE_4__[\"areRangesEqual\"]; });\n\n/* harmony import */ var _getViewStateForLocations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getViewStateForLocations */ \"./node_modules/@flowmap.gl/data/dist/getViewStateForLocations.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getViewStateForFeatures\", function() { return _getViewStateForLocations__WEBPACK_IMPORTED_MODULE_5__[\"getViewStateForFeatures\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getViewStateForLocations\", function() { return _getViewStateForLocations__WEBPACK_IMPORTED_MODULE_5__[\"getViewStateForLocations\"]; });\n\n/* harmony import */ var _provider_FlowmapDataProvider__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./provider/FlowmapDataProvider */ \"./node_modules/@flowmap.gl/data/dist/provider/FlowmapDataProvider.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFlowmapData\", function() { return _provider_FlowmapDataProvider__WEBPACK_IMPORTED_MODULE_6__[\"isFlowmapData\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFlowmapDataProvider\", function() { return _provider_FlowmapDataProvider__WEBPACK_IMPORTED_MODULE_6__[\"isFlowmapDataProvider\"]; });\n\n/* harmony import */ var _FlowmapAggregateAccessors__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./FlowmapAggregateAccessors */ \"./node_modules/@flowmap.gl/data/dist/FlowmapAggregateAccessors.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FlowmapAggregateAccessors\", function() { return _FlowmapAggregateAccessors__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _provider_LocalFlowmapDataProvider__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./provider/LocalFlowmapDataProvider */ \"./node_modules/@flowmap.gl/data/dist/provider/LocalFlowmapDataProvider.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LocalFlowmapDataProvider\", function() { return _provider_LocalFlowmapDataProvider__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxPQUFPLEVBQUMsT0FBTyxJQUFJLHlCQUF5QixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFakYsT0FBTyxFQUFDLE9BQU8sSUFBSSx3QkFBd0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL0Zsb3dtYXBTdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL0Zsb3dtYXBTZWxlY3RvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi90aW1lJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZXIvRmxvd21hcERhdGFQcm92aWRlcic7XG5leHBvcnQge2RlZmF1bHQgYXMgRmxvd21hcEFnZ3JlZ2F0ZUFjY2Vzc29yc30gZnJvbSAnLi9GbG93bWFwQWdncmVnYXRlQWNjZXNzb3JzJztcbmV4cG9ydCB0eXBlIHtkZWZhdWx0IGFzIEZsb3dtYXBEYXRhUHJvdmlkZXJ9IGZyb20gJy4vcHJvdmlkZXIvRmxvd21hcERhdGFQcm92aWRlcic7XG5leHBvcnQge2RlZmF1bHQgYXMgTG9jYWxGbG93bWFwRGF0YVByb3ZpZGVyfSBmcm9tICcuL3Byb3ZpZGVyL0xvY2FsRmxvd21hcERhdGFQcm92aWRlcic7XG4iXX0=\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/data/dist/index.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/data/dist/provider/FlowmapDataProvider.js": | |
/*!****************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/data/dist/provider/FlowmapDataProvider.js ***! | |
\****************************************************************************/ | |
/*! exports provided: isFlowmapData, isFlowmapDataProvider */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFlowmapData\", function() { return isFlowmapData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFlowmapDataProvider\", function() { return isFlowmapDataProvider; });\nfunction isFlowmapData(data) {\n return (data &&\n data.locations &&\n data.flows &&\n Array.isArray(data.locations) &&\n Array.isArray(data.flows));\n}\nfunction isFlowmapDataProvider(dataProvider) {\n return (dataProvider &&\n typeof dataProvider.setFlowmapState === 'function' &&\n typeof dataProvider.getViewportForLocations === 'function' &&\n typeof dataProvider.getFlowByIndex === 'function' &&\n typeof dataProvider.getLocationById === 'function' &&\n typeof dataProvider.getLocationByIndex === 'function' &&\n typeof dataProvider.getLayersData === 'function');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd21hcERhdGFQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlci9GbG93bWFwRGF0YVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdDQSxNQUFNLFVBQVUsYUFBYSxDQUMzQixJQUF5QjtJQUV6QixPQUFPLENBQ0wsSUFBSTtRQUNKLElBQUksQ0FBQyxTQUFTO1FBQ2QsSUFBSSxDQUFDLEtBQUs7UUFDVixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDN0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQzFCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxZQUFpQztJQUVqQyxPQUFPLENBQ0wsWUFBWTtRQUNaLE9BQU8sWUFBWSxDQUFDLGVBQWUsS0FBSyxVQUFVO1FBQ2xELE9BQU8sWUFBWSxDQUFDLHVCQUF1QixLQUFLLFVBQVU7UUFDMUQsT0FBTyxZQUFZLENBQUMsY0FBYyxLQUFLLFVBQVU7UUFDakQsT0FBTyxZQUFZLENBQUMsZUFBZSxLQUFLLFVBQVU7UUFDbEQsT0FBTyxZQUFZLENBQUMsa0JBQWtCLEtBQUssVUFBVTtRQUNyRCxPQUFPLFlBQVksQ0FBQyxhQUFhLEtBQUssVUFBVSxDQUNqRCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWdncmVnYXRlRmxvdywgQ2x1c3RlciwgTG9jYXRpb25BY2Nlc3NvcnMsIExvY2F0aW9uVG90YWxzfSBmcm9tICcuLic7XG5pbXBvcnQge0Zsb3dtYXBTdGF0ZX0gZnJvbSAnLi4vRmxvd21hcFN0YXRlJztcbmltcG9ydCB7XG4gIENsdXN0ZXJOb2RlLFxuICBGbG93bWFwRGF0YSxcbiAgRmxvd21hcERhdGFBY2Nlc3NvcnMsXG4gIExheWVyc0RhdGEsXG4gIFZpZXdwb3J0UHJvcHMsXG59IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgaW50ZXJmYWNlIEZsb3dtYXBEYXRhUHJvdmlkZXI8TCwgRj4ge1xuICBzZXRBY2Nlc3NvcnMoYWNjZXNzb3JzOiBGbG93bWFwRGF0YUFjY2Vzc29yczxMLCBGPik6IHZvaWQ7XG5cbiAgc2V0Rmxvd21hcFN0YXRlKGZsb3dtYXBTdGF0ZTogRmxvd21hcFN0YXRlKTogUHJvbWlzZTx2b2lkPjtcblxuICAvLyBjbGVhckRhdGEoKTogdm9pZDtcblxuICBnZXRWaWV3cG9ydEZvckxvY2F0aW9ucyhcbiAgICBkaW1zOiBbbnVtYmVyLCBudW1iZXJdLFxuICApOiBQcm9taXNlPFZpZXdwb3J0UHJvcHMgfCB1bmRlZmluZWQ+O1xuXG4gIC8vIGdldEZsb3dUb3RhbHMoKTogUHJvbWlzZTxGbG93VG90YWxzPjtcblxuICBnZXRGbG93QnlJbmRleChpbmRleDogbnVtYmVyKTogUHJvbWlzZTxGIHwgQWdncmVnYXRlRmxvdyB8IHVuZGVmaW5lZD47XG5cbiAgZ2V0TG9jYXRpb25CeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPEwgfCBDbHVzdGVyIHwgdW5kZWZpbmVkPjtcblxuICBnZXRMb2NhdGlvbkJ5SW5kZXgoaWR4OiBudW1iZXIpOiBQcm9taXNlPEwgfCBDbHVzdGVyTm9kZSB8IHVuZGVmaW5lZD47XG5cbiAgZ2V0VG90YWxzRm9yTG9jYXRpb24oaWQ6IHN0cmluZyk6IFByb21pc2U8TG9jYXRpb25Ub3RhbHMgfCB1bmRlZmluZWQ+O1xuXG4gIC8vIGdldExvY2F0aW9uc0luQmJveChcbiAgLy8gICBiYm94OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcbiAgLy8gKTogUHJvbWlzZTxBcnJheTxGbG93TG9jYXRpb24gfCBDbHVzdGVyTm9kZT4gfCB1bmRlZmluZWQ+O1xuXG4gIC8vIGdldExvY2F0aW9uc0ZvclNlYXJjaEJveCgpOiBQcm9taXNlPChGbG93TG9jYXRpb24gfCBDbHVzdGVyTm9kZSlbXSB8IHVuZGVmaW5lZD47XG5cbiAgZ2V0TGF5ZXJzRGF0YSgpOiBQcm9taXNlPExheWVyc0RhdGEgfCB1bmRlZmluZWQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGbG93bWFwRGF0YTxMLCBGPihcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgYW55Pixcbik6IGRhdGEgaXMgRmxvd21hcERhdGE8TCwgRj4ge1xuICByZXR1cm4gKFxuICAgIGRhdGEgJiZcbiAgICBkYXRhLmxvY2F0aW9ucyAmJlxuICAgIGRhdGEuZmxvd3MgJiZcbiAgICBBcnJheS5pc0FycmF5KGRhdGEubG9jYXRpb25zKSAmJlxuICAgIEFycmF5LmlzQXJyYXkoZGF0YS5mbG93cylcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPihcbiAgZGF0YVByb3ZpZGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKTogZGF0YVByb3ZpZGVyIGlzIEZsb3dtYXBEYXRhUHJvdmlkZXI8TCwgRj4ge1xuICByZXR1cm4gKFxuICAgIGRhdGFQcm92aWRlciAmJlxuICAgIHR5cGVvZiBkYXRhUHJvdmlkZXIuc2V0Rmxvd21hcFN0YXRlID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIGRhdGFQcm92aWRlci5nZXRWaWV3cG9ydEZvckxvY2F0aW9ucyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhUHJvdmlkZXIuZ2V0Rmxvd0J5SW5kZXggPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YVByb3ZpZGVyLmdldExvY2F0aW9uQnlJZCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhUHJvdmlkZXIuZ2V0TG9jYXRpb25CeUluZGV4ID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIGRhdGFQcm92aWRlci5nZXRMYXllcnNEYXRhID09PSAnZnVuY3Rpb24nXG4gICk7XG59XG4iXX0=\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/data/dist/provider/FlowmapDataProvider.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/data/dist/provider/LocalFlowmapDataProvider.js": | |
/*!*********************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/data/dist/provider/LocalFlowmapDataProvider.js ***! | |
\*********************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return LocalFlowmapDataProvider; });\n/* harmony import */ var _FlowmapSelectors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../FlowmapSelectors */ \"./node_modules/@flowmap.gl/data/dist/FlowmapSelectors.js\");\n/* harmony import */ var _getViewStateForLocations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../getViewStateForLocations */ \"./node_modules/@flowmap.gl/data/dist/getViewStateForLocations.js\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\nclass LocalFlowmapDataProvider {\n constructor(accessors) {\n // scope selectors to the concrete instance of FlowmapDataProvider\n this.selectors = new _FlowmapSelectors__WEBPACK_IMPORTED_MODULE_0__[\"default\"](accessors);\n this.flowmapData = undefined;\n this.flowmapState = undefined;\n }\n setAccessors(accessors) {\n this.selectors.setAccessors(accessors);\n }\n setFlowmapData(flowmapData) {\n return __awaiter(this, void 0, void 0, function* () {\n this.flowmapData = flowmapData;\n });\n }\n setFlowmapState(flowmapState) {\n return __awaiter(this, void 0, void 0, function* () {\n this.flowmapState = flowmapState;\n });\n }\n getFlowByIndex(idx) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.flowmapState || !this.flowmapData) {\n return undefined;\n }\n const flows = this.selectors.getFlowsForFlowmapLayer(this.flowmapState, this.flowmapData);\n return flows === null || flows === void 0 ? void 0 : flows[idx];\n });\n }\n getLocationByIndex(idx) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.flowmapState || !this.flowmapData) {\n return undefined;\n }\n const locations = this.selectors.getLocationsForFlowmapLayer(this.flowmapState, this.flowmapData);\n return locations === null || locations === void 0 ? void 0 : locations[idx];\n });\n }\n getLayersData() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.flowmapState || !this.flowmapData) {\n return undefined;\n }\n return this.selectors.getLayersData(this.flowmapState, this.flowmapData);\n });\n }\n getLocationById(id) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.flowmapState || !this.flowmapData) {\n return undefined;\n }\n const clusterIndex = this.selectors.getClusterIndex(this.flowmapState, this.flowmapData);\n if (clusterIndex) {\n const cluster = clusterIndex.getClusterById(id);\n if (cluster) {\n return cluster;\n }\n }\n const locationsById = this.selectors.getLocationsById(this.flowmapState, this.flowmapData);\n return locationsById === null || locationsById === void 0 ? void 0 : locationsById.get(id);\n });\n }\n getTotalsForLocation(id) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.flowmapState || !this.flowmapData) {\n return undefined;\n }\n return (_a = this.selectors\n .getLocationTotals(this.flowmapState, this.flowmapData)) === null || _a === void 0 ? void 0 : _a.get(id);\n });\n }\n getViewportForLocations(dims, opts) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (!((_a = this.flowmapData) === null || _a === void 0 ? void 0 : _a.locations)) {\n return undefined;\n }\n // @ts-ignore\n return Object(_getViewStateForLocations__WEBPACK_IMPORTED_MODULE_1__[\"getViewStateForLocations\"])(this.flowmapData.locations, (loc) => [\n this.selectors.accessors.getLocationLon(loc),\n this.selectors.accessors.getLocationLat(loc),\n ], dims, opts);\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxGbG93bWFwRGF0YVByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVyL0xvY2FsRmxvd21hcERhdGFQcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFZQSxPQUFPLGdCQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFFTCx3QkFBd0IsR0FDekIsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxNQUFNLENBQUMsT0FBTyxPQUFPLHdCQUF3QjtJQU8zQyxZQUFZLFNBQXFDO1FBQy9DLGtFQUFrRTtRQUNsRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQU8sU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFxQztRQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUssY0FBYyxDQUFDLFdBQThCOztZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUNqQyxDQUFDO0tBQUE7SUFFSyxlQUFlLENBQUMsWUFBMEI7O1lBQzlDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ25DLENBQUM7S0FBQTtJQUVLLGNBQWMsQ0FBQyxHQUFXOztZQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQzNDLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FDbEQsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztZQUNGLE9BQU8sS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7S0FBQTtJQUVLLGtCQUFrQixDQUFDLEdBQVc7O1lBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDM0MsT0FBTyxTQUFTLENBQUM7YUFDbEI7WUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLDJCQUEyQixDQUMxRCxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1lBQ0YsT0FBTyxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUcsR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQztLQUFBO0lBRUssYUFBYTs7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUMzQyxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0UsQ0FBQztLQUFBO0lBRUssZUFBZSxDQUFDLEVBQVU7O1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDM0MsT0FBTyxTQUFTLENBQUM7YUFDbEI7WUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDakQsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztZQUNGLElBQUksWUFBWSxFQUFFO2dCQUNoQixNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLE9BQU8sRUFBRTtvQkFDWCxPQUFPLE9BQU8sQ0FBQztpQkFDaEI7YUFDRjtZQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQ25ELElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7WUFDRixPQUFPLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQztLQUFBO0lBRUssb0JBQW9CLENBQUMsRUFBVTs7O1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDM0MsT0FBTyxTQUFTLENBQUM7YUFDbEI7WUFDRCxPQUFPLE1BQUEsSUFBSSxDQUFDLFNBQVM7aUJBQ2xCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQywwQ0FDckQsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDOztLQUNiO0lBRUssdUJBQXVCLENBQzNCLElBQXNCLEVBQ3RCLElBQTBCOzs7WUFFMUIsSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxTQUFTLENBQUEsRUFBRTtnQkFDaEMsT0FBTyxTQUFTLENBQUM7YUFDbEI7WUFDRCxhQUFhO1lBQ2IsT0FBTyx3QkFBd0IsQ0FDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQzFCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO2FBQzdDLEVBQ0QsSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDOztLQUNIO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBGbG93bWFwRGF0YVByb3ZpZGVyIGZyb20gJy4vRmxvd21hcERhdGFQcm92aWRlcic7XG5pbXBvcnQgdHlwZSB7XG4gIENsdXN0ZXIsXG4gIENsdXN0ZXJOb2RlLFxuICBGbG93bWFwRGF0YSxcbiAgRmxvd21hcERhdGFBY2Nlc3NvcnMsXG4gIExheWVyc0RhdGEsXG4gIExvY2F0aW9uVG90YWxzLFxuICBWaWV3cG9ydFByb3BzLFxuICBBZ2dyZWdhdGVGbG93LFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0Zsb3dtYXBTdGF0ZX0gZnJvbSAnLi4vRmxvd21hcFN0YXRlJztcbmltcG9ydCBGbG93bWFwU2VsZWN0b3JzIGZyb20gJy4uL0Zsb3dtYXBTZWxlY3RvcnMnO1xuaW1wb3J0IHtcbiAgR2V0Vmlld1N0YXRlT3B0aW9ucyxcbiAgZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zLFxufSBmcm9tICcuLi9nZXRWaWV3U3RhdGVGb3JMb2NhdGlvbnMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2NhbEZsb3dtYXBEYXRhUHJvdmlkZXI8TCwgRj5cbiAgaW1wbGVtZW50cyBGbG93bWFwRGF0YVByb3ZpZGVyPEwsIEY+XG57XG4gIHByaXZhdGUgc2VsZWN0b3JzOiBGbG93bWFwU2VsZWN0b3JzPEwsIEY+O1xuICBwcml2YXRlIGZsb3dtYXBEYXRhOiBGbG93bWFwRGF0YTxMLCBGPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBmbG93bWFwU3RhdGU6IEZsb3dtYXBTdGF0ZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcnM6IEZsb3dtYXBEYXRhQWNjZXNzb3JzPEwsIEY+KSB7XG4gICAgLy8gc2NvcGUgc2VsZWN0b3JzIHRvIHRoZSBjb25jcmV0ZSBpbnN0YW5jZSBvZiBGbG93bWFwRGF0YVByb3ZpZGVyXG4gICAgdGhpcy5zZWxlY3RvcnMgPSBuZXcgRmxvd21hcFNlbGVjdG9yczxMLCBGPihhY2Nlc3NvcnMpO1xuICAgIHRoaXMuZmxvd21hcERhdGEgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5mbG93bWFwU3RhdGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBzZXRBY2Nlc3NvcnMoYWNjZXNzb3JzOiBGbG93bWFwRGF0YUFjY2Vzc29yczxMLCBGPikge1xuICAgIHRoaXMuc2VsZWN0b3JzLnNldEFjY2Vzc29ycyhhY2Nlc3NvcnMpO1xuICB9XG5cbiAgYXN5bmMgc2V0Rmxvd21hcERhdGEoZmxvd21hcERhdGE6IEZsb3dtYXBEYXRhPEwsIEY+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5mbG93bWFwRGF0YSA9IGZsb3dtYXBEYXRhO1xuICB9XG5cbiAgYXN5bmMgc2V0Rmxvd21hcFN0YXRlKGZsb3dtYXBTdGF0ZTogRmxvd21hcFN0YXRlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5mbG93bWFwU3RhdGUgPSBmbG93bWFwU3RhdGU7XG4gIH1cblxuICBhc3luYyBnZXRGbG93QnlJbmRleChpZHg6IG51bWJlcik6IFByb21pc2U8RiB8IEFnZ3JlZ2F0ZUZsb3cgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuZmxvd21hcFN0YXRlIHx8ICF0aGlzLmZsb3dtYXBEYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBmbG93cyA9IHRoaXMuc2VsZWN0b3JzLmdldEZsb3dzRm9yRmxvd21hcExheWVyKFxuICAgICAgdGhpcy5mbG93bWFwU3RhdGUsXG4gICAgICB0aGlzLmZsb3dtYXBEYXRhLFxuICAgICk7XG4gICAgcmV0dXJuIGZsb3dzPy5baWR4XTtcbiAgfVxuXG4gIGFzeW5jIGdldExvY2F0aW9uQnlJbmRleChpZHg6IG51bWJlcik6IFByb21pc2U8TCB8IENsdXN0ZXJOb2RlIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLmZsb3dtYXBTdGF0ZSB8fCAhdGhpcy5mbG93bWFwRGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgbG9jYXRpb25zID0gdGhpcy5zZWxlY3RvcnMuZ2V0TG9jYXRpb25zRm9yRmxvd21hcExheWVyKFxuICAgICAgdGhpcy5mbG93bWFwU3RhdGUsXG4gICAgICB0aGlzLmZsb3dtYXBEYXRhLFxuICAgICk7XG4gICAgcmV0dXJuIGxvY2F0aW9ucz8uW2lkeF07XG4gIH1cblxuICBhc3luYyBnZXRMYXllcnNEYXRhKCk6IFByb21pc2U8TGF5ZXJzRGF0YSB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5mbG93bWFwU3RhdGUgfHwgIXRoaXMuZmxvd21hcERhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlbGVjdG9ycy5nZXRMYXllcnNEYXRhKHRoaXMuZmxvd21hcFN0YXRlLCB0aGlzLmZsb3dtYXBEYXRhKTtcbiAgfVxuXG4gIGFzeW5jIGdldExvY2F0aW9uQnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxMIHwgQ2x1c3RlciB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5mbG93bWFwU3RhdGUgfHwgIXRoaXMuZmxvd21hcERhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGNsdXN0ZXJJbmRleCA9IHRoaXMuc2VsZWN0b3JzLmdldENsdXN0ZXJJbmRleChcbiAgICAgIHRoaXMuZmxvd21hcFN0YXRlLFxuICAgICAgdGhpcy5mbG93bWFwRGF0YSxcbiAgICApO1xuICAgIGlmIChjbHVzdGVySW5kZXgpIHtcbiAgICAgIGNvbnN0IGNsdXN0ZXIgPSBjbHVzdGVySW5kZXguZ2V0Q2x1c3RlckJ5SWQoaWQpO1xuICAgICAgaWYgKGNsdXN0ZXIpIHtcbiAgICAgICAgcmV0dXJuIGNsdXN0ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGxvY2F0aW9uc0J5SWQgPSB0aGlzLnNlbGVjdG9ycy5nZXRMb2NhdGlvbnNCeUlkKFxuICAgICAgdGhpcy5mbG93bWFwU3RhdGUsXG4gICAgICB0aGlzLmZsb3dtYXBEYXRhLFxuICAgICk7XG4gICAgcmV0dXJuIGxvY2F0aW9uc0J5SWQ/LmdldChpZCk7XG4gIH1cblxuICBhc3luYyBnZXRUb3RhbHNGb3JMb2NhdGlvbihpZDogc3RyaW5nKTogUHJvbWlzZTxMb2NhdGlvblRvdGFscyB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5mbG93bWFwU3RhdGUgfHwgIXRoaXMuZmxvd21hcERhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlbGVjdG9yc1xuICAgICAgLmdldExvY2F0aW9uVG90YWxzKHRoaXMuZmxvd21hcFN0YXRlLCB0aGlzLmZsb3dtYXBEYXRhKVxuICAgICAgPy5nZXQoaWQpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Vmlld3BvcnRGb3JMb2NhdGlvbnMoXG4gICAgZGltczogW251bWJlciwgbnVtYmVyXSxcbiAgICBvcHRzPzogR2V0Vmlld1N0YXRlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxWaWV3cG9ydFByb3BzIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLmZsb3dtYXBEYXRhPy5sb2NhdGlvbnMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZ2V0Vmlld1N0YXRlRm9yTG9jYXRpb25zKFxuICAgICAgdGhpcy5mbG93bWFwRGF0YS5sb2NhdGlvbnMsXG4gICAgICAobG9jKSA9PiBbXG4gICAgICAgIHRoaXMuc2VsZWN0b3JzLmFjY2Vzc29ycy5nZXRMb2NhdGlvbkxvbihsb2MpLFxuICAgICAgICB0aGlzLnNlbGVjdG9ycy5hY2Nlc3NvcnMuZ2V0TG9jYXRpb25MYXQobG9jKSxcbiAgICAgIF0sXG4gICAgICBkaW1zLFxuICAgICAgb3B0cyxcbiAgICApO1xuICB9XG59XG4iXX0=\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/data/dist/provider/LocalFlowmapDataProvider.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/data/dist/time.js": | |
/*!****************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/data/dist/time.js ***! | |
\****************************************************/ | |
/*! exports provided: parseTime, TimeGranularityKey, tickMultiFormat, TIME_GRANULARITIES, getTimeGranularityByKey, getTimeGranularityByOrder, getTimeGranularityForDate, areRangesEqual */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseTime\", function() { return parseTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TimeGranularityKey\", function() { return TimeGranularityKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickMultiFormat\", function() { return tickMultiFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TIME_GRANULARITIES\", function() { return TIME_GRANULARITIES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTimeGranularityByKey\", function() { return getTimeGranularityByKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTimeGranularityByOrder\", function() { return getTimeGranularityByOrder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTimeGranularityForDate\", function() { return getTimeGranularityForDate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"areRangesEqual\", function() { return areRangesEqual; });\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time-format */ \"./node_modules/d3-time-format/src/index.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time */ \"./node_modules/d3-time/src/index.js\");\n\n\nconst dateParsers = [\n Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeParse\"])('%Y-%m-%d'),\n Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeParse\"])('%Y-%m-%d %H:%M'),\n Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeParse\"])('%Y-%m-%d %H:%M:%S'),\n Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeParse\"])('%Y'),\n Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeParse\"])('%Y-%m'),\n];\nfunction parseTime(input) {\n if (input != null) {\n if (input instanceof Date) {\n return input;\n }\n for (const parse of dateParsers) {\n const date = parse(input);\n if (date) {\n return date;\n }\n }\n }\n return undefined;\n}\nvar TimeGranularityKey;\n(function (TimeGranularityKey) {\n TimeGranularityKey[\"SECOND\"] = \"SECOND\";\n TimeGranularityKey[\"MINUTE\"] = \"MINUTE\";\n TimeGranularityKey[\"HOUR\"] = \"HOUR\";\n TimeGranularityKey[\"DAY\"] = \"DAY\";\n TimeGranularityKey[\"MONTH\"] = \"MONTH\";\n TimeGranularityKey[\"YEAR\"] = \"YEAR\";\n})(TimeGranularityKey || (TimeGranularityKey = {}));\n// const preferredLocale = navigator.languages ? navigator.languages[0] : 'en';\nconst formatMillisecond = Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('.%L'), formatSecond = Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])(':%S'), formatMinute = Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('%I:%M'), \n// formatHour = (d: Date) => d.toLocaleString(preferredLocale, { hour: 'numeric' }),\nformatHour = Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('%I %p'), formatDay = Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('%a %d'), formatWeek = Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('%b %d'), formatMonth = Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('%b'), formatYear = Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('%Y');\nfunction tickMultiFormat(date) {\n return (Object(d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeSecond\"])(date) < date\n ? formatMillisecond\n : Object(d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeMinute\"])(date) < date\n ? formatSecond\n : Object(d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeHour\"])(date) < date\n ? formatMinute\n : Object(d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeDay\"])(date) < date\n ? formatHour\n : Object(d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeMonth\"])(date) < date\n ? Object(d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeWeek\"])(date) < date\n ? formatDay\n : formatWeek\n : Object(d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeYear\"])(date) < date\n ? formatMonth\n : formatYear)(date);\n}\nconst TIME_GRANULARITIES = [\n {\n order: 0,\n key: TimeGranularityKey.SECOND,\n interval: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeSecond\"],\n format: formatSecond,\n formatFull: Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('%Y-%m-%d %H:%M:%S'),\n },\n {\n order: 1,\n key: TimeGranularityKey.MINUTE,\n interval: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeMinute\"],\n format: formatMinute,\n formatFull: Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('%Y-%m-%d %H:%M'),\n },\n {\n order: 2,\n key: TimeGranularityKey.HOUR,\n interval: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeHour\"],\n // format: (d: Date) => d.toLocaleString(preferredLocale, { hour: 'numeric', minute: '2-digit' }),\n format: formatHour,\n formatFull: Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('%a %d %b %Y, %I %p'),\n },\n {\n order: 3,\n key: TimeGranularityKey.DAY,\n interval: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeDay\"],\n format: formatDay,\n formatFull: Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('%a %d %b %Y'),\n },\n {\n order: 4,\n key: TimeGranularityKey.MONTH,\n interval: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeMonth\"],\n format: formatMonth,\n formatFull: Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('%b %Y'),\n },\n {\n order: 5,\n key: TimeGranularityKey.YEAR,\n interval: d3_time__WEBPACK_IMPORTED_MODULE_1__[\"timeYear\"],\n format: formatYear,\n formatFull: Object(d3_time_format__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])('%Y'),\n },\n];\nfunction getTimeGranularityByKey(key) {\n return TIME_GRANULARITIES.find((s) => s.key === key);\n}\nfunction getTimeGranularityByOrder(order) {\n return TIME_GRANULARITIES.find((s) => s.order === order);\n}\nfunction getTimeGranularityForDate(date) {\n let prev = undefined;\n for (const current of TIME_GRANULARITIES) {\n const { interval } = current;\n const floored = interval(date);\n if (floored < date) {\n if (!prev)\n return current;\n return prev;\n }\n prev = current;\n }\n return TIME_GRANULARITIES[TIME_GRANULARITIES.length - 1];\n}\nfunction areRangesEqual(a, b) {\n if (!a && !b)\n return true;\n if (!a || !b)\n return false;\n return a[0] === b[0] && a[1] === b[1];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBRVIsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLFFBQVEsR0FDVCxNQUFNLFNBQVMsQ0FBQztBQUVqQixNQUFNLFdBQVcsR0FBRztJQUNsQixTQUFTLENBQUMsVUFBVSxDQUFDO0lBQ3JCLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMzQixTQUFTLENBQUMsbUJBQW1CLENBQUM7SUFDOUIsU0FBUyxDQUFDLElBQUksQ0FBQztJQUNmLFNBQVMsQ0FBQyxPQUFPLENBQUM7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBZ0M7SUFDeEQsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1FBQ2pCLElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtZQUN6QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxXQUFXLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLElBQUksSUFBSSxFQUFFO2dCQUNSLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtLQUNGO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sQ0FBTixJQUFZLGtCQU9YO0FBUEQsV0FBWSxrQkFBa0I7SUFDNUIsdUNBQWlCLENBQUE7SUFDakIsdUNBQWlCLENBQUE7SUFDakIsbUNBQWEsQ0FBQTtJQUNiLGlDQUFXLENBQUE7SUFDWCxxQ0FBZSxDQUFBO0lBQ2YsbUNBQWEsQ0FBQTtBQUNmLENBQUMsRUFQVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBTzdCO0FBVUQsK0VBQStF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QUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RpbWVGb3JtYXQsIHRpbWVQYXJzZX0gZnJvbSAnZDMtdGltZS1mb3JtYXQnO1xuaW1wb3J0IHtcbiAgdGltZURheSxcbiAgdGltZUhvdXIsXG4gIFRpbWVJbnRlcnZhbCxcbiAgdGltZU1pbnV0ZSxcbiAgdGltZU1vbnRoLFxuICB0aW1lU2Vjb25kLFxuICB0aW1lV2VlayxcbiAgdGltZVllYXIsXG59IGZyb20gJ2QzLXRpbWUnO1xuXG5jb25zdCBkYXRlUGFyc2VycyA9IFtcbiAgdGltZVBhcnNlKCclWS0lbS0lZCcpLFxuICB0aW1lUGFyc2UoJyVZLSVtLSVkICVIOiVNJyksXG4gIHRpbWVQYXJzZSgnJVktJW0tJWQgJUg6JU06JVMnKSxcbiAgdGltZVBhcnNlKCclWScpLFxuICB0aW1lUGFyc2UoJyVZLSVtJyksXG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUaW1lKGlucHV0OiBzdHJpbmcgfCBEYXRlIHwgdW5kZWZpbmVkKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHBhcnNlIG9mIGRhdGVQYXJzZXJzKSB7XG4gICAgICBjb25zdCBkYXRlID0gcGFyc2UoaW5wdXQpO1xuICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBlbnVtIFRpbWVHcmFudWxhcml0eUtleSB7XG4gIFNFQ09ORCA9ICdTRUNPTkQnLFxuICBNSU5VVEUgPSAnTUlOVVRFJyxcbiAgSE9VUiA9ICdIT1VSJyxcbiAgREFZID0gJ0RBWScsXG4gIE1PTlRIID0gJ01PTlRIJyxcbiAgWUVBUiA9ICdZRUFSJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaW1lR3JhbnVsYXJpdHkge1xuICBrZXk6IFRpbWVHcmFudWxhcml0eUtleTtcbiAgb3JkZXI6IG51bWJlcjtcbiAgaW50ZXJ2YWw6IFRpbWVJbnRlcnZhbDtcbiAgZm9ybWF0OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuICBmb3JtYXRGdWxsOiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xufVxuXG4vLyBjb25zdCBwcmVmZXJyZWRMb2NhbGUgPSBuYXZpZ2F0b3IubGFuZ3VhZ2VzID8gbmF2aWdhdG9yLmxhbmd1YWdlc1swXSA6ICdlbic7XG5cbmNvbnN0IGZvcm1hdE1pbGxpc2Vjb25kID0gdGltZUZvcm1hdCgnLiVMJyksXG4gIGZvcm1hdFNlY29uZCA9IHRpbWVGb3JtYXQoJzolUycpLFxuICBmb3JtYXRNaW51dGUgPSB0aW1lRm9ybWF0KCclSTolTScpLFxuICAvLyBmb3JtYXRIb3VyID0gKGQ6IERhdGUpID0+IGQudG9Mb2NhbGVTdHJpbmcocHJlZmVycmVkTG9jYWxlLCB7IGhvdXI6ICdudW1lcmljJyB9KSxcbiAgZm9ybWF0SG91ciA9IHRpbWVGb3JtYXQoJyVJICVwJyksXG4gIGZvcm1hdERheSA9IHRpbWVGb3JtYXQoJyVhICVkJyksXG4gIGZvcm1hdFdlZWsgPSB0aW1lRm9ybWF0KCclYiAlZCcpLFxuICBmb3JtYXRNb250aCA9IHRpbWVGb3JtYXQoJyViJyksXG4gIGZvcm1hdFllYXIgPSB0aW1lRm9ybWF0KCclWScpO1xuXG5leHBvcnQgZnVuY3Rpb24gdGlja011bHRpRm9ybWF0KGRhdGU6IERhdGUpIHtcbiAgcmV0dXJuIChcbiAgICB0aW1lU2Vjb25kKGRhdGUpIDwgZGF0ZVxuICAgICAgPyBmb3JtYXRNaWxsaXNlY29uZFxuICAgICAgOiB0aW1lTWludXRlKGRhdGUpIDwgZGF0ZVxuICAgICAgPyBmb3JtYXRTZWNvbmRcbiAgICAgIDogdGltZUhvdXIoZGF0ZSkgPCBkYXRlXG4gICAgICA/IGZvcm1hdE1pbnV0ZVxuICAgICAgOiB0aW1lRGF5KGRhdGUpIDwgZGF0ZVxuICAgICAgPyBmb3JtYXRIb3VyXG4gICAgICA6IHRpbWVNb250aChkYXRlKSA8IGRhdGVcbiAgICAgID8gdGltZVdlZWsoZGF0ZSkgPCBkYXRlXG4gICAgICAgID8gZm9ybWF0RGF5XG4gICAgICAgIDogZm9ybWF0V2Vla1xuICAgICAgOiB0aW1lWWVhcihkYXRlKSA8IGRhdGVcbiAgICAgID8gZm9ybWF0TW9udGhcbiAgICAgIDogZm9ybWF0WWVhclxuICApKGRhdGUpO1xufVxuXG5leHBvcnQgY29uc3QgVElNRV9HUkFOVUxBUklUSUVTOiBUaW1lR3JhbnVsYXJpdHlbXSA9IFtcbiAge1xuICAgIG9yZGVyOiAwLFxuICAgIGtleTogVGltZUdyYW51bGFyaXR5S2V5LlNFQ09ORCxcbiAgICBpbnRlcnZhbDogdGltZVNlY29uZCxcbiAgICBmb3JtYXQ6IGZvcm1hdFNlY29uZCxcbiAgICBmb3JtYXRGdWxsOiB0aW1lRm9ybWF0KCclWS0lbS0lZCAlSDolTTolUycpLFxuICB9LFxuICB7XG4gICAgb3JkZXI6IDEsXG4gICAga2V5OiBUaW1lR3JhbnVsYXJpdHlLZXkuTUlOVVRFLFxuICAgIGludGVydmFsOiB0aW1lTWludXRlLFxuICAgIGZvcm1hdDogZm9ybWF0TWludXRlLFxuICAgIGZvcm1hdEZ1bGw6IHRpbWVGb3JtYXQoJyVZLSVtLSVkICVIOiVNJyksXG4gIH0sXG4gIHtcbiAgICBvcmRlcjogMixcbiAgICBrZXk6IFRpbWVHcmFudWxhcml0eUtleS5IT1VSLFxuICAgIGludGVydmFsOiB0aW1lSG91cixcbiAgICAvLyBmb3JtYXQ6IChkOiBEYXRlKSA9PiBkLnRvTG9jYWxlU3RyaW5nKHByZWZlcnJlZExvY2FsZSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pLFxuICAgIGZvcm1hdDogZm9ybWF0SG91cixcbiAgICBmb3JtYXRGdWxsOiB0aW1lRm9ybWF0KCclYSAlZCAlYiAlWSwgJUkgJXAnKSxcbiAgfSxcbiAge1xuICAgIG9yZGVyOiAzLFxuICAgIGtleTogVGltZUdyYW51bGFyaXR5S2V5LkRBWSxcbiAgICBpbnRlcnZhbDogdGltZURheSxcbiAgICBmb3JtYXQ6IGZvcm1hdERheSxcbiAgICBmb3JtYXRGdWxsOiB0aW1lRm9ybWF0KCclYSAlZCAlYiAlWScpLFxuICB9LFxuICB7XG4gICAgb3JkZXI6IDQsXG4gICAga2V5OiBUaW1lR3JhbnVsYXJpdHlLZXkuTU9OVEgsXG4gICAgaW50ZXJ2YWw6IHRpbWVNb250aCxcbiAgICBmb3JtYXQ6IGZvcm1hdE1vbnRoLFxuICAgIGZvcm1hdEZ1bGw6IHRpbWVGb3JtYXQoJyViICVZJyksXG4gIH0sXG4gIHtcbiAgICBvcmRlcjogNSxcbiAgICBrZXk6IFRpbWVHcmFudWxhcml0eUtleS5ZRUFSLFxuICAgIGludGVydmFsOiB0aW1lWWVhcixcbiAgICBmb3JtYXQ6IGZvcm1hdFllYXIsXG4gICAgZm9ybWF0RnVsbDogdGltZUZvcm1hdCgnJVknKSxcbiAgfSxcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lR3JhbnVsYXJpdHlCeUtleShrZXk6IFRpbWVHcmFudWxhcml0eUtleSkge1xuICByZXR1cm4gVElNRV9HUkFOVUxBUklUSUVTLmZpbmQoKHMpID0+IHMua2V5ID09PSBrZXkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZUdyYW51bGFyaXR5QnlPcmRlcihvcmRlcjogbnVtYmVyKSB7XG4gIHJldHVybiBUSU1FX0dSQU5VTEFSSVRJRVMuZmluZCgocykgPT4gcy5vcmRlciA9PT0gb3JkZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZUdyYW51bGFyaXR5Rm9yRGF0ZShkYXRlOiBEYXRlKTogVGltZUdyYW51bGFyaXR5IHtcbiAgbGV0IHByZXYgPSB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3QgY3VycmVudCBvZiBUSU1FX0dSQU5VTEFSSVRJRVMpIHtcbiAgICBjb25zdCB7aW50ZXJ2YWx9ID0gY3VycmVudDtcbiAgICBjb25zdCBmbG9vcmVkID0gaW50ZXJ2YWwoZGF0ZSk7XG4gICAgaWYgKGZsb29yZWQgPCBkYXRlKSB7XG4gICAgICBpZiAoIXByZXYpIHJldHVybiBjdXJyZW50O1xuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfVxuICAgIHByZXYgPSBjdXJyZW50O1xuICB9XG4gIHJldHVybiBUSU1FX0dSQU5VTEFSSVRJRVNbVElNRV9HUkFOVUxBUklUSUVTLmxlbmd0aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJlUmFuZ2VzRXF1YWwoXG4gIGE6IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCxcbiAgYjogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkLFxuKTogYm9vbGVhbiB7XG4gIGlmICghYSAmJiAhYikgcmV0dXJuIHRydWU7XG4gIGlmICghYSB8fCAhYikgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gYVswXSA9PT0gYlswXSAmJiBhWzFdID09PSBiWzFdO1xufVxuIl19\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/data/dist/time.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/data/dist/types.js": | |
/*!*****************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/data/dist/types.js ***! | |
\*****************************************************/ | |
/*! exports provided: isCluster, isLocationClusterNode, isAggregateFlow, LocationFilterMode */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isCluster\", function() { return isCluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLocationClusterNode\", function() { return isLocationClusterNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAggregateFlow\", function() { return isAggregateFlow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LocationFilterMode\", function() { return LocationFilterMode; });\nfunction isCluster(c) {\n const { children } = c;\n return children && children.length > 0;\n}\nfunction isLocationClusterNode(l) {\n const { zoom } = l;\n return zoom !== undefined;\n}\nfunction isAggregateFlow(flow) {\n return (flow &&\n flow.origin !== undefined &&\n flow.dest !== undefined &&\n flow.count !== undefined &&\n (flow.aggregate ? true : false));\n}\nvar LocationFilterMode;\n(function (LocationFilterMode) {\n LocationFilterMode[\"ALL\"] = \"ALL\";\n LocationFilterMode[\"INCOMING\"] = \"INCOMING\";\n LocationFilterMode[\"OUTGOING\"] = \"OUTGOING\";\n LocationFilterMode[\"BETWEEN\"] = \"BETWEEN\";\n})(LocationFilterMode || (LocationFilterMode = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0ZBLE1BQU0sVUFBVSxTQUFTLENBQUMsQ0FBYztJQUN0QyxNQUFNLEVBQUMsUUFBUSxFQUFDLEdBQUcsQ0FBWSxDQUFDO0lBQ2hDLE9BQU8sUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUksQ0FBa0I7SUFDekQsTUFBTSxFQUFDLElBQUksRUFBQyxHQUFHLENBQWdCLENBQUM7SUFDaEMsT0FBTyxJQUFJLEtBQUssU0FBUyxDQUFDO0FBQzVCLENBQUM7QUFTRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixJQUF5QjtJQUV6QixPQUFPLENBQ0wsSUFBSTtRQUNKLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUztRQUN6QixJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVM7UUFDdkIsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTO1FBQ3hCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDaEMsQ0FBQztBQUNKLENBQUM7QUFPRCxNQUFNLENBQU4sSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzVCLGlDQUFXLENBQUE7SUFDWCwyQ0FBcUIsQ0FBQTtJQUNyQiwyQ0FBcUIsQ0FBQTtJQUNyQix5Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUs3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZsb3dtYXBEYXRhPEwsIEY+ID0ge1xuICBsb2NhdGlvbnM6IEl0ZXJhYmxlPEw+IHwgdW5kZWZpbmVkO1xuICBmbG93czogSXRlcmFibGU8Rj4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdTdGF0ZSB7XG4gIGxhdGl0dWRlOiBudW1iZXI7XG4gIGxvbmdpdHVkZTogbnVtYmVyO1xuICB6b29tOiBudW1iZXI7XG4gIGJlYXJpbmc/OiBudW1iZXI7XG4gIHBpdGNoPzogbnVtYmVyO1xuICBhbHRpdHVkZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgRmxvd0FjY2Vzc29yPEYsIFQ+ID0gKGZsb3c6IEYpID0+IFQ7IC8vIG9iamVjdEluZm8/OiBBY2Nlc3Nvck9iamVjdEluZm8sXG5leHBvcnQgdHlwZSBMb2NhdGlvbkFjY2Vzc29yPEwsIFQ+ID0gKGxvY2F0aW9uOiBMKSA9PiBUO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dBY2Nlc3NvcnM8Rj4ge1xuICBnZXRGbG93T3JpZ2luSWQ6IEZsb3dBY2Nlc3NvcjxGLCBzdHJpbmc+O1xuICBnZXRGbG93RGVzdElkOiBGbG93QWNjZXNzb3I8Riwgc3RyaW5nPjtcbiAgZ2V0Rmxvd01hZ25pdHVkZTogRmxvd0FjY2Vzc29yPEYsIG51bWJlcj47XG4gIGdldEZsb3dUaW1lPzogRmxvd0FjY2Vzc29yPEYsIERhdGU+OyAvLyBUT0RPOiB1c2UgbnVtYmVyIGluc3RlYWQgb2YgRGF0ZVxuICAvLyBnZXRGbG93Q29sb3I/OiBGbG93QWNjZXNzb3I8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvbkFjY2Vzc29yczxMPiB7XG4gIGdldExvY2F0aW9uSWQ6IExvY2F0aW9uQWNjZXNzb3I8TCwgc3RyaW5nPjtcbiAgZ2V0TG9jYXRpb25OYW1lPzogTG9jYXRpb25BY2Nlc3NvcjxMLCBzdHJpbmc+O1xuICBnZXRMb2NhdGlvbkxhdDogTG9jYXRpb25BY2Nlc3NvcjxMLCBudW1iZXI+O1xuICBnZXRMb2NhdGlvbkxvbjogTG9jYXRpb25BY2Nlc3NvcjxMLCBudW1iZXI+O1xuICBnZXRMb2NhdGlvbkNsdXN0ZXJOYW1lPzogKGxvY2F0aW9uSWRzOiBzdHJpbmdbXSkgPT4gc3RyaW5nO1xuICAvLyBnZXRMb2NhdGlvblRvdGFsSW4/OiBMb2NhdGlvbkFjY2Vzc29yPG51bWJlcj47XG4gIC8vIGdldExvY2F0aW9uVG90YWxPdXQ/OiBMb2NhdGlvbkFjY2Vzc29yPG51bWJlcj47XG4gIC8vIGdldExvY2F0aW9uVG90YWxJbnRlcm5hbD86IExvY2F0aW9uQWNjZXNzb3I8bnVtYmVyPjtcbn1cblxuZXhwb3J0IHR5cGUgRmxvd21hcERhdGFBY2Nlc3NvcnM8TCwgRj4gPSBMb2NhdGlvbkFjY2Vzc29yczxMPiAmXG4gIEZsb3dBY2Nlc3NvcnM8Rj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25Ub3RhbHMge1xuICBpbmNvbWluZ0NvdW50OiBudW1iZXI7XG4gIG91dGdvaW5nQ291bnQ6IG51bWJlcjtcbiAgaW50ZXJuYWxDb3VudDogbnVtYmVyO1xufVxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uc1RvdGFscyB7XG4vLyAgIGluY29taW5nOiB7W2lkOiBzdHJpbmddOiBudW1iZXJ9O1xuLy8gICBvdXRnb2luZzoge1tpZDogc3RyaW5nXTogbnVtYmVyfTtcbi8vICAgaW50ZXJuYWw6IHtbaWQ6IHN0cmluZ106IG51bWJlcn07XG4vLyB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRCeVRpbWUge1xuICB0aW1lOiBEYXRlO1xuICBjb3VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdwb3J0UHJvcHMge1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgbGF0aXR1ZGU6IG51bWJlcjtcbiAgbG9uZ2l0dWRlOiBudW1iZXI7XG4gIHpvb206IG51bWJlcjtcbiAgYmVhcmluZzogbnVtYmVyO1xuICBwaXRjaDogbnVtYmVyO1xuICBhbHRpdHVkZT86IG51bWJlcjtcbiAgbWF4Wm9vbT86IG51bWJlcjtcbiAgbWluWm9vbT86IG51bWJlcjtcbiAgbWF4UGl0Y2g/OiBudW1iZXI7XG4gIG1pblBpdGNoPzogbnVtYmVyO1xuICB0cmFuc2l0aW9uRHVyYXRpb24/OiBudW1iZXIgfCAnYXV0byc7XG4gIHRyYW5zaXRpb25JbnRlcnBvbGF0b3I/OiBhbnk7XG4gIHRyYW5zaXRpb25JbnRlcnJ1cHRpb24/OiBhbnk7XG4gIHRyYW5zaXRpb25FYXNpbmc/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3Rlck5vZGUge1xuICBpZDogc3RyaW5nO1xuICB6b29tOiBudW1iZXI7XG4gIGxhdDogbnVtYmVyO1xuICBsb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyTGV2ZWwge1xuICB6b29tOiBudW1iZXI7XG4gIG5vZGVzOiBDbHVzdGVyTm9kZVtdO1xufVxuXG5leHBvcnQgdHlwZSBDbHVzdGVyTGV2ZWxzID0gQ2x1c3RlckxldmVsW107XG5cbi8vIG5vbi1sZWFmIGNsdXN0ZXIgbm9kZVxuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyIGV4dGVuZHMgQ2x1c3Rlck5vZGUge1xuICBuYW1lPzogc3RyaW5nO1xuICBjaGlsZHJlbjogc3RyaW5nW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NsdXN0ZXIoYzogQ2x1c3Rlck5vZGUpOiBjIGlzIENsdXN0ZXIge1xuICBjb25zdCB7Y2hpbGRyZW59ID0gYyBhcyBDbHVzdGVyO1xuICByZXR1cm4gY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoID4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTG9jYXRpb25DbHVzdGVyTm9kZTxMPihsOiBMIHwgQ2x1c3Rlck5vZGUpOiBsIGlzIENsdXN0ZXJOb2RlIHtcbiAgY29uc3Qge3pvb219ID0gbCBhcyBDbHVzdGVyTm9kZTtcbiAgcmV0dXJuIHpvb20gIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZ2dyZWdhdGVGbG93IHtcbiAgb3JpZ2luOiBzdHJpbmc7XG4gIGRlc3Q6IHN0cmluZztcbiAgY291bnQ6IG51bWJlcjtcbiAgYWdncmVnYXRlOiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBZ2dyZWdhdGVGbG93KFxuICBmbG93OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKTogZmxvdyBpcyBBZ2dyZWdhdGVGbG93IHtcbiAgcmV0dXJuIChcbiAgICBmbG93ICYmXG4gICAgZmxvdy5vcmlnaW4gIT09IHVuZGVmaW5lZCAmJlxuICAgIGZsb3cuZGVzdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgZmxvdy5jb3VudCAhPT0gdW5kZWZpbmVkICYmXG4gICAgKGZsb3cuYWdncmVnYXRlID8gdHJ1ZSA6IGZhbHNlKVxuICApO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dDb3VudHNNYXBSZWR1Y2U8RiwgVCA9IGFueT4ge1xuICBtYXA6IChmbG93OiBGKSA9PiBUO1xuICByZWR1Y2U6IChhY2N1bXVsYXRlZDogVCwgdmFsOiBUKSA9PiBUO1xufVxuXG5leHBvcnQgZW51bSBMb2NhdGlvbkZpbHRlck1vZGUge1xuICBBTEwgPSAnQUxMJyxcbiAgSU5DT01JTkcgPSAnSU5DT01JTkcnLFxuICBPVVRHT0lORyA9ICdPVVRHT0lORycsXG4gIEJFVFdFRU4gPSAnQkVUV0VFTicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0NpcmNsZXNMYXllckF0dHJpYnV0ZXMge1xuICBsZW5ndGg6IG51bWJlcjtcbiAgYXR0cmlidXRlczoge1xuICAgIGdldFBvc2l0aW9uOiBMYXllcnNEYXRhQXR0clZhbHVlczxGbG9hdDMyQXJyYXk+O1xuICAgIGdldENvbG9yOiBMYXllcnNEYXRhQXR0clZhbHVlczxVaW50OEFycmF5PjtcbiAgICBnZXRJblJhZGl1czogTGF5ZXJzRGF0YUF0dHJWYWx1ZXM8RmxvYXQzMkFycmF5PjtcbiAgICBnZXRPdXRSYWRpdXM6IExheWVyc0RhdGFBdHRyVmFsdWVzPEZsb2F0MzJBcnJheT47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0xpbmVzTGF5ZXJBdHRyaWJ1dGVzIHtcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIGF0dHJpYnV0ZXM6IHtcbiAgICBnZXRTb3VyY2VQb3NpdGlvbjogTGF5ZXJzRGF0YUF0dHJWYWx1ZXM8RmxvYXQzMkFycmF5PjtcbiAgICBnZXRUYXJnZXRQb3NpdGlvbjogTGF5ZXJzRGF0YUF0dHJWYWx1ZXM8RmxvYXQzMkFycmF5PjtcbiAgICBnZXRUaGlja25lc3M6IExheWVyc0RhdGFBdHRyVmFsdWVzPEZsb2F0MzJBcnJheT47XG4gICAgZ2V0Q29sb3I6IExheWVyc0RhdGFBdHRyVmFsdWVzPFVpbnQ4QXJyYXk+O1xuICAgIGdldEVuZHBvaW50T2Zmc2V0czogTGF5ZXJzRGF0YUF0dHJWYWx1ZXM8RmxvYXQzMkFycmF5PjtcbiAgICBnZXRTdGFnZ2VyaW5nPzogTGF5ZXJzRGF0YUF0dHJWYWx1ZXM8RmxvYXQzMkFycmF5PjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXllcnNEYXRhIHtcbiAgY2lyY2xlQXR0cmlidXRlczogRmxvd0NpcmNsZXNMYXllckF0dHJpYnV0ZXM7XG4gIGxpbmVBdHRyaWJ1dGVzOiBGbG93TGluZXNMYXllckF0dHJpYnV0ZXM7XG59XG5cbmV4cG9ydCB0eXBlIExheWVyc0RhdGFBdHRyVmFsdWVzPFQ+ID0ge3ZhbHVlOiBUOyBzaXplOiBudW1iZXJ9O1xuIl19\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/data/dist/types.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.js": | |
/*!***********************************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.js ***! | |
\***********************************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AnimatedFlowLinesLayer; });\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ \"@deck.gl/core\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/constants */ \"./node_modules/@luma.gl/constants/dist/esm/index.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"@luma.gl/core\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _AnimatedFlowLinesLayerFragment_glsl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AnimatedFlowLinesLayerFragment.glsl */ \"./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.js\");\n/* harmony import */ var _AnimatedFlowLinesLayerVertex_glsl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./AnimatedFlowLinesLayerVertex.glsl */ \"./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.js\");\n/*\n * Copyright 2022 FlowmapBlue\n * Copyright 2018-2020 Teralytics, modified by FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\n\n\n\nconst DEFAULT_COLOR = [0, 132, 193, 255];\nconst loopLength = 1800;\nconst animationSpeed = 20;\nconst loopTime = loopLength / animationSpeed;\nclass AnimatedFlowLinesLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"Layer\"] {\n constructor(props) {\n super(props);\n }\n getShaders() {\n return super.getShaders({\n vs: _AnimatedFlowLinesLayerVertex_glsl__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n fs: _AnimatedFlowLinesLayerFragment_glsl__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"project32\"], _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"picking\"]],\n shaderCache: this.context.shaderCache,\n });\n }\n initializeState() {\n const attributeManager = this.getAttributeManager();\n /* eslint-disable max-len */\n attributeManager.addInstanced({\n instanceSourcePositions: {\n size: 3,\n type: _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__[\"default\"].DOUBLE,\n transition: true,\n accessor: 'getSourcePosition',\n },\n instanceTargetPositions: {\n size: 3,\n type: _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__[\"default\"].DOUBLE,\n transition: true,\n accessor: 'getTargetPosition',\n },\n instanceColors: {\n size: 4,\n type: _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__[\"default\"].UNSIGNED_BYTE,\n transition: true,\n accessor: 'getColor',\n defaultValue: [0, 0, 0, 255],\n },\n instanceWidths: {\n size: 1,\n transition: true,\n accessor: 'getThickness',\n defaultValue: 1,\n },\n instanceStaggering: {\n accessor: 'getStaggering',\n size: 1,\n transition: false,\n },\n instancePickable: {\n accessor: 'getPickable',\n size: 1,\n transition: false,\n },\n });\n /* eslint-enable max-len */\n }\n getNeedsRedraw() {\n return true;\n }\n updateState({ props, oldProps, changeFlags }) {\n var _a;\n super.updateState({ props, oldProps, changeFlags });\n if (changeFlags.extensionsChanged) {\n const { gl } = this.context;\n (_a = this.state.model) === null || _a === void 0 ? void 0 : _a.delete();\n this.state.model = this._getModel(gl);\n this.getAttributeManager().invalidateAll();\n }\n }\n draw({ uniforms }) {\n const { thicknessUnit, animationTailLength } = this.props;\n const timestamp = Date.now() / 1000;\n const animationTime = ((timestamp % loopTime) / loopTime) * loopLength;\n this.state.model\n .setUniforms(Object.assign(Object.assign({}, uniforms), { thicknessUnit: thicknessUnit * 4, animationTailLength, currentTime: animationTime }))\n .draw();\n }\n _getModel(gl) {\n /*\n * (0, -1)-------------_(1, -1)\n * | _,-\" |\n * o _,-\" o\n * | _,-\" |\n * (0, 1)\"-------------(1, 1)\n */\n const positions = [0, -1, 0, 0, 1, 0, 1, -1, 0, 1, 1, 0];\n return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"Model\"](gl, Object.assign({}, this.getShaders(), {\n id: this.props.id,\n geometry: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"Geometry\"]({\n drawMode: _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__[\"default\"].TRIANGLE_STRIP,\n attributes: {\n positions: new Float32Array(positions),\n },\n }),\n isInstanced: true,\n }));\n }\n}\nAnimatedFlowLinesLayer.defaultProps = {\n currentTime: 0,\n animationTailLength: 0.7,\n getSourcePosition: { type: 'accessor', value: (d) => [0, 0] },\n getTargetPosition: { type: 'accessor', value: (d) => [0, 0] },\n getPickable: { type: 'accessor', value: (d) => 1.0 },\n getStaggering: {\n type: 'accessor',\n value: (d, { index }) => Math.random(),\n },\n getColor: { type: 'accessor', value: DEFAULT_COLOR },\n getThickness: { type: 'accessor', value: 1 },\n thicknessUnit: 15 * 2,\n parameters: {\n depthTest: false,\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5pbWF0ZWRGbG93TGluZXNMYXllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BbmltYXRlZEZsb3dMaW5lc0xheWVyL0FuaW1hdGVkRmxvd0xpbmVzTGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEMsT0FBTyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxjQUFjLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxZQUFZLE1BQU0scUNBQXFDLENBQUM7QUErQi9ELE1BQU0sYUFBYSxHQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDL0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLFFBQVEsR0FBRyxVQUFVLEdBQUcsY0FBYyxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sc0JBQTBCLFNBQVEsS0FBSztJQW1CMUQsWUFBWSxLQUFlO1FBQ3pCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNmLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQ3RCLEVBQUUsRUFBRSxZQUFZO1lBQ2hCLEVBQUUsRUFBRSxjQUFjO1lBQ2xCLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUM7WUFDN0IsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxD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QVksRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBQztJQUMxQyxhQUFhLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDckIsVUFBVSxFQUFFO1FBQ1YsU0FBUyxFQUFFLEtBQUs7S0FDakI7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIyIEZsb3dtYXBCbHVlXG4gKiBDb3B5cmlnaHQgMjAxOC0yMDIwIFRlcmFseXRpY3MsIG1vZGlmaWVkIGJ5IEZsb3dtYXBCbHVlXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5cbmltcG9ydCB7TGF5ZXIsIHBpY2tpbmcsIHByb2plY3QzMn0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgR0wgZnJvbSAnQGx1bWEuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7R2VvbWV0cnksIE1vZGVsfSBmcm9tICdAbHVtYS5nbC9jb3JlJztcbmltcG9ydCBGcmFnbWVudFNoYWRlciBmcm9tICcuL0FuaW1hdGVkRmxvd0xpbmVzTGF5ZXJGcmFnbWVudC5nbHNsJztcbmltcG9ydCBWZXJ0ZXhTaGFkZXIgZnJvbSAnLi9BbmltYXRlZEZsb3dMaW5lc0xheWVyVmVydGV4Lmdsc2wnO1xuaW1wb3J0IHtGbG93TGluZXNMYXllckF0dHJpYnV0ZXMsIFJHQkF9IGZyb20gJ0BmbG93bWFwLmdsL2RhdGEnO1xuaW1wb3J0IHtMYXllclByb3BzfSBmcm9tICcuLi90eXBlcyc7XG5leHBvcnQgaW50ZXJmYWNlIFByb3BzPEY+IGV4dGVuZHMgTGF5ZXJQcm9wcyB7XG4gIGlkOiBzdHJpbmc7XG4gIG9wYWNpdHk/OiBudW1iZXI7XG4gIHBpY2thYmxlPzogYm9vbGVhbjtcbiAgdXBkYXRlVHJpZ2dlcnM/OiB7W2tleTogc3RyaW5nXTogUmVjb3JkPHN0cmluZywgdW5rbm93bj59O1xuICBkYXRhOiBGW10gfCBGbG93TGluZXNMYXllckF0dHJpYnV0ZXM7XG4gIGRyYXdPdXRsaW5lOiBib29sZWFuO1xuICBvdXRsaW5lQ29sb3I/OiBSR0JBO1xuICBvdXRsaW5lVGhpY2tuZXNzPzogbnVtYmVyO1xuICBjdXJyZW50VGltZT86IG51bWJlcjtcbiAgdGhpY2tuZXNzVW5pdD86IG51bWJlcjtcbiAgYW5pbWF0aW9uVGFpbExlbmd0aD86IG51bWJlcjtcbiAgZ2V0U291cmNlUG9zaXRpb24/OiAoZDogRikgPT4gW251bWJlciwgbnVtYmVyXTtcbiAgZ2V0VGFyZ2V0UG9zaXRpb24/OiAoZDogRikgPT4gW251bWJlciwgbnVtYmVyXTtcbiAgZ2V0U3RhZ2dlcmluZz86IChkOiBGLCBpbmZvOiBBY2Nlc3Nvck9iamVjdEluZm8pID0+IG51bWJlcjtcbiAgZ2V0UGlja2FibGU/OiAoZDogRiwge2luZGV4fToge2luZGV4OiBudW1iZXJ9KSA9PiBudW1iZXI7IC8vID49IDEuMCAtPiB0cnVlXG4gIGdldENvbG9yPzogKGQ6IEYpID0+IFJHQkE7XG4gIGdldFRoaWNrbmVzcz86IChkOiBGKSA9PiBudW1iZXI7XG4gIGdldEVuZHBvaW50T2Zmc2V0cz86IChkOiBGKSA9PiBbbnVtYmVyLCBudW1iZXJdO1xufVxuXG4vLyBodHRwczovL2RlY2suZ2wvIy9kb2N1bWVudGF0aW9uL2RldmVsb3Blci1ndWlkZS91c2luZy1sYXllcnM/c2VjdGlvbj1hY2Nlc3NvcnNcbmV4cG9ydCBpbnRlcmZhY2UgQWNjZXNzb3JPYmplY3RJbmZvIHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgZGF0YTogYW55O1xuICB0YXJnZXQ6IGFueTtcbn1cblxuY29uc3QgREVGQVVMVF9DT0xPUjogUkdCQSA9IFswLCAxMzIsIDE5MywgMjU1XTtcbmNvbnN0IGxvb3BMZW5ndGggPSAxODAwO1xuY29uc3QgYW5pbWF0aW9uU3BlZWQgPSAyMDtcbmNvbnN0IGxvb3BUaW1lID0gbG9vcExlbmd0aCAvIGFuaW1hdGlvblNwZWVkO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBbmltYXRlZEZsb3dMaW5lc0xheWVyPEY+IGV4dGVuZHMgTGF5ZXIge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGN1cnJlbnRUaW1lOiAwLFxuICAgIGFuaW1hdGlvblRhaWxMZW5ndGg6IDAuNyxcbiAgICBnZXRTb3VyY2VQb3NpdGlvbjoge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiAoZDogYW55KSA9PiBbMCwgMF19LFxuICAgIGdldFRhcmdldFBvc2l0aW9uOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IChkOiBhbnkpID0+IFswLCAwXX0sXG4gICAgZ2V0UGlja2FibGU6IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogKGQ6IGFueSkgPT4gMS4wfSxcbiAgICBnZXRTdGFnZ2VyaW5nOiB7XG4gICAgICB0eXBlOiAnYWNjZXNzb3InLFxuICAgICAgdmFsdWU6IChkOiBhbnksIHtpbmRleH06IHtpbmRleDogbnVtYmVyfSkgPT4gTWF0aC5yYW5kb20oKSxcbiAgICB9LFxuICAgIGdldENvbG9yOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IERFRkFVTFRfQ09MT1J9LFxuICAgIGdldFRoaWNrbmVzczoge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiAxfSxcbiAgICB0aGlja25lc3NVbml0OiAxNSAqIDIsXG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wczxGPikge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxuXG4gIGdldFNoYWRlcnMoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiBzdXBlci5nZXRTaGFkZXJzKHtcbiAgICAgIHZzOiBWZXJ0ZXhTaGFkZXIsXG4gICAgICBmczogRnJhZ21lbnRTaGFkZXIsXG4gICAgICBtb2R1bGVzOiBbcHJvamVjdDMyLCBwaWNraW5nXSxcbiAgICAgIHNoYWRlckNhY2hlOiB0aGlzLmNvbnRleHQuc2hhZGVyQ2FjaGUsXG4gICAgfSk7XG4gIH1cblxuICBpbml0aWFsaXplU3RhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgYXR0cmlidXRlTWFuYWdlciA9IHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuICAgIGF0dHJpYnV0ZU1hbmFnZXIuYWRkSW5zdGFuY2VkKHtcbiAgICAgIGluc3RhbmNlU291cmNlUG9zaXRpb25zOiB7XG4gICAgICAgIHNpemU6IDMsXG4gICAgICAgIHR5cGU6IEdMLkRPVUJMRSxcbiAgICAgICAgdHJhbnNpdGlvbjogdHJ1ZSxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRTb3VyY2VQb3NpdGlvbicsXG4gICAgICB9LFxuICAgICAgaW5zdGFuY2VUYXJnZXRQb3NpdGlvbnM6IHtcbiAgICAgICAgc2l6ZTogMyxcbiAgICAgICAgdHlwZTogR0wuRE9VQkxFLFxuICAgICAgICB0cmFuc2l0aW9uOiB0cnVlLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFRhcmdldFBvc2l0aW9uJyxcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZUNvbG9yczoge1xuICAgICAgICBzaXplOiA0LFxuICAgICAgICB0eXBlOiBHTC5VTlNJR05FRF9CWVRFLFxuICAgICAgICB0cmFuc2l0aW9uOiB0cnVlLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldENvbG9yJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBbMCwgMCwgMCwgMjU1XSxcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZVdpZHRoczoge1xuICAgICAgICBzaXplOiAxLFxuICAgICAgICB0cmFuc2l0aW9uOiB0cnVlLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFRoaWNrbmVzcycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMSxcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZVN0YWdnZXJpbmc6IHtcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRTdGFnZ2VyaW5nJyxcbiAgICAgICAgc2l6ZTogMSxcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAgaW5zdGFuY2VQaWNrYWJsZToge1xuICAgICAgICBhY2Nlc3NvcjogJ2dldFBpY2thYmxlJyxcbiAgICAgICAgc2l6ZTogMSxcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIC8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqL1xuICB9XG5cbiAgZ2V0TmVlZHNSZWRyYXcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB1cGRhdGVTdGF0ZSh7cHJvcHMsIG9sZFByb3BzLCBjaGFuZ2VGbGFnc306IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkIHtcbiAgICBzdXBlci51cGRhdGVTdGF0ZSh7cHJvcHMsIG9sZFByb3BzLCBjaGFuZ2VGbGFnc30pO1xuXG4gICAgaWYgKGNoYW5nZUZsYWdzLmV4dGVuc2lvbnNDaGFuZ2VkKSB7XG4gICAgICBjb25zdCB7Z2x9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdGhpcy5zdGF0ZS5tb2RlbD8uZGVsZXRlKCk7XG4gICAgICB0aGlzLnN0YXRlLm1vZGVsID0gdGhpcy5fZ2V0TW9kZWwoZ2wpO1xuICAgICAgdGhpcy5nZXRBdHRyaWJ1dGVNYW5hZ2VyKCkuaW52YWxpZGF0ZUFsbCgpO1xuICAgIH1cbiAgfVxuXG4gIGRyYXcoe3VuaWZvcm1zfTogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIGNvbnN0IHt0aGlja25lc3NVbml0LCBhbmltYXRpb25UYWlsTGVuZ3RofSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKSAvIDEwMDA7XG4gICAgY29uc3QgYW5pbWF0aW9uVGltZSA9ICgodGltZXN0YW1wICUgbG9vcFRpbWUpIC8gbG9vcFRpbWUpICogbG9vcExlbmd0aDtcblxuICAgIHRoaXMuc3RhdGUubW9kZWxcbiAgICAgIC5zZXRVbmlmb3Jtcyh7XG4gICAgICAgIC4uLnVuaWZvcm1zLFxuICAgICAgICB0aGlja25lc3NVbml0OiB0aGlja25lc3NVbml0ICogNCxcbiAgICAgICAgYW5pbWF0aW9uVGFpbExlbmd0aCxcbiAgICAgICAgY3VycmVudFRpbWU6IGFuaW1hdGlvblRpbWUsXG4gICAgICB9KVxuICAgICAgLmRyYXcoKTtcbiAgfVxuXG4gIF9nZXRNb2RlbChnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIC8qXG4gICAgICogICgwLCAtMSktLS0tLS0tLS0tLS0tXygxLCAtMSlcbiAgICAgKiAgICAgICB8ICAgICAgICAgIF8sLVwiICB8XG4gICAgICogICAgICAgbyAgICAgIF8sLVwiICAgICAgb1xuICAgICAqICAgICAgIHwgIF8sLVwiICAgICAgICAgIHxcbiAgICAgKiAgICgwLCAxKVwiLS0tLS0tLS0tLS0tLSgxLCAxKVxuICAgICAqL1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFswLCAtMSwgMCwgMCwgMSwgMCwgMSwgLTEsIDAsIDEsIDEsIDBdO1xuXG4gICAgcmV0dXJuIG5ldyBNb2RlbChcbiAgICAgIGdsLFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5nZXRTaGFkZXJzKCksIHtcbiAgICAgICAgaWQ6IHRoaXMucHJvcHMuaWQsXG4gICAgICAgIGdlb21ldHJ5OiBuZXcgR2VvbWV0cnkoe1xuICAgICAgICAgIGRyYXdNb2RlOiBHTC5UUklBTkdMRV9TVFJJUCxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBwb3NpdGlvbnM6IG5ldyBGbG9hdDMyQXJyYXkocG9zaXRpb25zKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgaXNJbnN0YW5jZWQ6IHRydWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.js": | |
/*!************************************************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.js ***! | |
\************************************************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright 2022 FlowmapBlue\n * Copyright 2018-2020 Teralytics, modified by FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (`\\\n#define SHADER_NAME animated-flow-lines-layer-fragment-shader\n\nprecision highp float;\n\nuniform float animationTailLength;\n\nvarying vec4 vColor;\nvarying float sourceToTarget;\nvarying vec2 uv;\n \nvoid main(void) {\n geometry.uv = uv;\n\n gl_FragColor = vec4(vColor.xyz, vColor.w * smoothstep(1.0 - animationTailLength, 1.0, fract(sourceToTarget)));\n\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5pbWF0ZWRGbG93TGluZXNMYXllckZyYWdtZW50Lmdsc2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQW5pbWF0ZWRGbG93TGluZXNMYXllci9BbmltYXRlZEZsb3dMaW5lc0xheWVyRnJhZ21lbnQuZ2xzbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtCZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIyIEZsb3dtYXBCbHVlXG4gKiBDb3B5cmlnaHQgMjAxOC0yMDIwIFRlcmFseXRpY3MsIG1vZGlmaWVkIGJ5IEZsb3dtYXBCbHVlXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGBcXFxuI2RlZmluZSBTSEFERVJfTkFNRSBhbmltYXRlZC1mbG93LWxpbmVzLWxheWVyLWZyYWdtZW50LXNoYWRlclxuXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cbnVuaWZvcm0gZmxvYXQgYW5pbWF0aW9uVGFpbExlbmd0aDtcblxudmFyeWluZyB2ZWM0IHZDb2xvcjtcbnZhcnlpbmcgZmxvYXQgc291cmNlVG9UYXJnZXQ7XG52YXJ5aW5nIHZlYzIgdXY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkudXYgPSB1djtcblxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZDb2xvci54eXosIHZDb2xvci53ICogc21vb3Roc3RlcCgxLjAgLSBhbmltYXRpb25UYWlsTGVuZ3RoLCAxLjAsIGZyYWN0KHNvdXJjZVRvVGFyZ2V0KSkpO1xuXG4gIERFQ0tHTF9GSUxURVJfQ09MT1IoZ2xfRnJhZ0NvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xuIl19\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.js": | |
/*!**********************************************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.js ***! | |
\**********************************************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright 2022 FlowmapBlue\n * Copyright 2018-2020 Teralytics, modified by FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (`\\\n#define SHADER_NAME animated-flow-lines-layer-vertex-shader\n#define SPEED 0.015\n#define NUM_PARTS 5.0\n\nattribute vec3 positions;\nattribute vec3 instanceSourcePositions;\nattribute vec3 instanceTargetPositions;\nattribute vec3 instanceSourcePositions64Low;\nattribute vec3 instanceTargetPositions64Low;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\nattribute float instanceWidths;\nattribute float instancePickable;\nattribute float instanceStaggering;\n\nuniform float opacity;\nuniform float currentTime;\nuniform float thicknessUnit;\n \nvarying vec4 vColor;\nvarying float sourceToTarget;\nvarying vec2 uv;\n\n// offset vector by strokeWidth pixels\n// offset_direction is -1 (left) or 1 (right)\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\n // normalized direction of the line\n vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize);\n // rotate by 90 degrees\n dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\n\n return dir_screenspace * offset_direction * width / 2.0;\n}\n\nvoid main(void) {\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n\n // Position\n vec4 source_commonspace;\n vec4 target_commonspace;\n vec4 source = project_position_to_clipspace(instanceSourcePositions, instanceSourcePositions64Low, vec3(0.), source_commonspace);\n vec4 target = project_position_to_clipspace(instanceTargetPositions, instanceTargetPositions64Low, vec3(0.), target_commonspace);\n\n float widthPixels = instanceWidths * thicknessUnit;\n \n \n // linear interpolation of source & target to pick right coord\n float segmentIndex = positions.x;\n vec4 p = mix(source, target, segmentIndex);\n geometry.position = mix(source_commonspace, target_commonspace, segmentIndex);\n uv = positions.xy;\n geometry.uv = uv;\n if (instancePickable > 0.5) {\n geometry.pickingColor = instancePickingColors;\n }\n \n // extrude\n vec3 offset = vec3(\n getExtrusionOffset(target.xy - source.xy, positions.y, widthPixels),\n 0.0);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position = p + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n // Color\n vColor = vec4(instanceColors.rgb, instanceColors.a * opacity) / 255.;\n DECKGL_FILTER_COLOR(vColor, geometry);\n\n sourceToTarget = positions.x * length(source - target) * NUM_PARTS - currentTime * SPEED + instanceStaggering; \n}\n`);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5pbWF0ZWRGbG93TGluZXNMYXllclZlcnRleC5nbHNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0FuaW1hdGVkRmxvd0xpbmVzTGF5ZXIvQW5pbWF0ZWRGbG93TGluZXNMYXllclZlcnRleC5nbHNsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsZUFBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBd0VkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjIgRmxvd21hcEJsdWVcbiAqIENvcHlyaWdodCAyMDE4LTIwMjAgVGVyYWx5dGljcywgbW9kaWZpZWQgYnkgRmxvd21hcEJsdWVcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGBcXFxuI2RlZmluZSBTSEFERVJfTkFNRSBhbmltYXRlZC1mbG93LWxpbmVzLWxheWVyLXZlcnRleC1zaGFkZXJcbiNkZWZpbmUgU1BFRUQgMC4wMTVcbiNkZWZpbmUgTlVNX1BBUlRTIDUuMFxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbnM7XG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVNvdXJjZVBvc2l0aW9ucztcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlVGFyZ2V0UG9zaXRpb25zO1xuYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VTb3VyY2VQb3NpdGlvbnM2NExvdztcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlVGFyZ2V0UG9zaXRpb25zNjRMb3c7XG5hdHRyaWJ1dGUgdmVjNCBpbnN0YW5jZUNvbG9ycztcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlUGlja2luZ0NvbG9ycztcbmF0dHJpYnV0ZSBmbG9hdCBpbnN0YW5jZVdpZHRocztcbmF0dHJpYnV0ZSBmbG9hdCBpbnN0YW5jZVBpY2thYmxlO1xuYXR0cmlidXRlIGZsb2F0IGluc3RhbmNlU3RhZ2dlcmluZztcblxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudW5pZm9ybSBmbG9hdCBjdXJyZW50VGltZTtcbnVuaWZvcm0gZmxvYXQgdGhpY2tuZXNzVW5pdDtcbiAgICBcbnZhcnlpbmcgdmVjNCB2Q29sb3I7XG52YXJ5aW5nIGZsb2F0IHNvdXJjZVRvVGFyZ2V0O1xudmFyeWluZyB2ZWMyIHV2O1xuXG4vLyBvZmZzZXQgdmVjdG9yIGJ5IHN0cm9rZVdpZHRoIHBpeGVsc1xuLy8gb2Zmc2V0X2RpcmVjdGlvbiBpcyAtMSAobGVmdCkgb3IgMSAocmlnaHQpXG52ZWMyIGdldEV4dHJ1c2lvbk9mZnNldCh2ZWMyIGxpbmVfY2xpcHNwYWNlLCBmbG9hdCBvZmZzZXRfZGlyZWN0aW9uLCBmbG9hdCB3aWR0aCkge1xuICAvLyBub3JtYWxpemVkIGRpcmVjdGlvbiBvZiB0aGUgbGluZVxuICB2ZWMyIGRpcl9zY3JlZW5zcGFjZSA9IG5vcm1hbGl6ZShsaW5lX2NsaXBzcGFjZSAqIHByb2plY3RfdVZpZXdwb3J0U2l6ZSk7XG4gIC8vIHJvdGF0ZSBieSA5MCBkZWdyZWVzXG4gIGRpcl9zY3JlZW5zcGFjZSA9IHZlYzIoLWRpcl9zY3JlZW5zcGFjZS55LCBkaXJfc2NyZWVuc3BhY2UueCk7XG5cbiAgcmV0dXJuIGRpcl9zY3JlZW5zcGFjZSAqIG9mZnNldF9kaXJlY3Rpb24gKiB3aWR0aCAvIDIuMDtcbn1cblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkud29ybGRQb3NpdGlvbiA9IGluc3RhbmNlU291cmNlUG9zaXRpb25zO1xuICBnZW9tZXRyeS53b3JsZFBvc2l0aW9uQWx0ID0gaW5zdGFuY2VUYXJnZXRQb3NpdGlvbnM7XG5cbiAgLy8gUG9zaXRpb25cbiAgdmVjNCBzb3VyY2VfY29tbW9uc3BhY2U7XG4gIHZlYzQgdGFyZ2V0X2NvbW1vbnNwYWNlO1xuICB2ZWM0IHNvdXJjZSA9IHByb2plY3RfcG9zaXRpb25fdG9fY2xpcHNwYWNlKGluc3RhbmNlU291cmNlUG9zaXRpb25zLCBpbnN0YW5jZVNvdXJjZVBvc2l0aW9uczY0TG93LCB2ZWMzKDAuKSwgc291cmNlX2NvbW1vbnNwYWNlKTtcbiAgdmVjNCB0YXJnZXQgPSBwcm9qZWN0X3Bvc2l0aW9uX3RvX2NsaXBzcGFjZShpbnN0YW5jZVRhcmdldFBvc2l0aW9ucywgaW5zdGFuY2VUYXJnZXRQb3NpdGlvbnM2NExvdywgdmVjMygwLiksIHRhcmdldF9jb21tb25zcGFjZSk7XG5cbiAgZmxvYXQgd2lkdGhQaXhlbHMgPSBpbnN0YW5jZVdpZHRocyAqIHRoaWNrbmVzc1VuaXQ7XG4gIFxuICBcbiAgLy8gbGluZWFyIGludGVycG9sYXRpb24gb2Ygc291cmNlICYgdGFyZ2V0IHRvIHBpY2sgcmlnaHQgY29vcmRcbiAgZmxvYXQgc2VnbWVudEluZGV4ID0gcG9zaXRpb25zLng7XG4gIHZlYzQgcCA9IG1peChzb3VyY2UsIHRhcmdldCwgc2VnbWVudEluZGV4KTtcbiAgZ2VvbWV0cnkucG9zaXRpb24gPSBtaXgoc291cmNlX2NvbW1vbnNwYWNlLCB0YXJnZXRfY29tbW9uc3BhY2UsIHNlZ21lbnRJbmRleCk7XG4gIHV2ID0gcG9zaXRpb25zLnh5O1xuICBnZW9tZXRyeS51diA9IHV2O1xuICBpZiAoaW5zdGFuY2VQaWNrYWJsZSA+IDAuNSkge1xuICAgIGdlb21ldHJ5LnBpY2tpbmdDb2xvciA9IGluc3RhbmNlUGlja2luZ0NvbG9ycztcbiAgfVxuICBcbiAgLy8gZXh0cnVkZVxuICB2ZWMzIG9mZnNldCA9IHZlYzMoXG4gICAgZ2V0RXh0cnVzaW9uT2Zmc2V0KHRhcmdldC54eSAtIHNvdXJjZS54eSwgcG9zaXRpb25zLnksIHdpZHRoUGl4ZWxzKSxcbiAgICAwLjApO1xuICBERUNLR0xfRklMVEVSX1NJWkUob2Zmc2V0LCBnZW9tZXRyeSk7XG4gIGdsX1Bvc2l0aW9uID0gcCArIHZlYzQocHJvamVjdF9waXhlbF9zaXplX3RvX2NsaXBzcGFjZShvZmZzZXQueHkpLCAwLjAsIDAuMCk7XG4gIERFQ0tHTF9GSUxURVJfR0xfUE9TSVRJT04oZ2xfUG9zaXRpb24sIGdlb21ldHJ5KTtcblxuICAvLyBDb2xvclxuICB2Q29sb3IgPSB2ZWM0KGluc3RhbmNlQ29sb3JzLnJnYiwgaW5zdGFuY2VDb2xvcnMuYSAqIG9wYWNpdHkpIC8gMjU1LjtcbiAgREVDS0dMX0ZJTFRFUl9DT0xPUih2Q29sb3IsIGdlb21ldHJ5KTtcblxuICBzb3VyY2VUb1RhcmdldCA9IHBvc2l0aW9ucy54ICogbGVuZ3RoKHNvdXJjZSAtIHRhcmdldCkgKiBOVU1fUEFSVFMgLSBjdXJyZW50VGltZSAqIFNQRUVEICsgaW5zdGFuY2VTdGFnZ2VyaW5nOyBcbn1cbmA7XG4iXX0=\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/index.js": | |
/*!******************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/index.js ***! | |
\******************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AnimatedFlowLinesLayer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AnimatedFlowLinesLayer */ \"./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_AnimatedFlowLinesLayer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQW5pbWF0ZWRGbG93TGluZXNMYXllci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLHNCQUFzQixNQUFNLDBCQUEwQixDQUFDO0FBRTlELGVBQWUsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQW5pbWF0ZWRGbG93TGluZXNMYXllciBmcm9tICcuL0FuaW1hdGVkRmxvd0xpbmVzTGF5ZXInO1xuXG5leHBvcnQgZGVmYXVsdCBBbmltYXRlZEZsb3dMaW5lc0xheWVyO1xuIl19\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/index.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/FlowCirclesLayer.js": | |
/*!***********************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/FlowCirclesLayer.js ***! | |
\***********************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ \"@deck.gl/core\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/constants */ \"./node_modules/@luma.gl/constants/dist/esm/index.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"@luma.gl/core\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _FlowCirclesLayerFragment_glsl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./FlowCirclesLayerFragment.glsl */ \"./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.js\");\n/* harmony import */ var _FlowCirclesLayerVertex_glsl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./FlowCirclesLayerVertex.glsl */ \"./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.js\");\n/*\n * Copyright 2022 FlowmapBlue\n * Copyright 2018-2020 Teralytics, modified by FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\n\n\n\nconst DEFAULT_COLOR = [0, 0, 0, 255];\nconst DEFAULT_EMPTY_COLOR = [255, 255, 255, 255];\nconst DEFAULT_OUTLINE_EMPTY_MIX = 0.4;\nclass FlowCirclesLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"Layer\"] {\n // props!: Props;\n constructor(props) {\n super(props);\n }\n getShaders() {\n return super.getShaders({\n vs: _FlowCirclesLayerVertex_glsl__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n fs: _FlowCirclesLayerFragment_glsl__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"project32\"], _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"picking\"]],\n });\n }\n initializeState() {\n this.getAttributeManager().addInstanced({\n instancePositions: {\n size: 3,\n type: _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__[\"default\"].DOUBLE,\n fp64: this.use64bitPositions(),\n transition: true,\n accessor: 'getPosition',\n },\n instanceInRadius: {\n size: 1,\n transition: true,\n accessor: 'getInRadius',\n defaultValue: 1,\n },\n instanceOutRadius: {\n size: 1,\n transition: true,\n accessor: 'getOutRadius',\n defaultValue: 1,\n },\n instanceColors: {\n size: 4,\n transition: true,\n type: _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__[\"default\"].UNSIGNED_BYTE,\n accessor: 'getColor',\n defaultValue: DEFAULT_COLOR,\n },\n });\n }\n updateState({ props, oldProps, changeFlags }) {\n super.updateState({ props, oldProps, changeFlags });\n if (changeFlags.extensionsChanged) {\n const { gl } = this.context;\n if (this.state.model) {\n this.state.model.delete();\n }\n this.setState({ model: this._getModel(gl) });\n this.getAttributeManager().invalidateAll();\n }\n }\n draw({ uniforms }) {\n const { emptyColor, outlineEmptyMix } = this.props;\n this.state.model\n .setUniforms(Object.assign(Object.assign({}, uniforms), { emptyColor,\n outlineEmptyMix }))\n .draw();\n }\n _getModel(gl) {\n // a square that minimally cover the unit circle\n const positions = [-1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0];\n return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"Model\"](gl, Object.assign(this.getShaders(), {\n id: this.props.id,\n geometry: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"Geometry\"]({\n drawMode: _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__[\"default\"].TRIANGLE_FAN,\n vertexCount: 4,\n attributes: {\n positions: { size: 3, value: new Float32Array(positions) },\n },\n }),\n isInstanced: true,\n }));\n }\n}\nFlowCirclesLayer.layerName = 'FlowCirclesLayer';\nFlowCirclesLayer.defaultProps = {\n getColor: { type: 'accessor', value: DEFAULT_COLOR },\n emptyColor: { type: 'accessor', value: DEFAULT_EMPTY_COLOR },\n outlineEmptyMix: { type: 'accessor', value: DEFAULT_OUTLINE_EMPTY_MIX },\n getPosition: { type: 'accessor', value: (d) => d.position },\n getInRadius: { type: 'accessor', value: 1 },\n getOutRadius: { type: 'accessor', value: 1 },\n parameters: {\n depthTest: false,\n },\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (FlowCirclesLayer);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0NpcmNsZXNMYXllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9GbG93Q2lyY2xlc0xheWVyL0Zsb3dDaXJjbGVzTGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEMsT0FBTyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxjQUFjLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxZQUFZLE1BQU0sK0JBQStCLENBQUM7QUFvQnpELE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDckMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFDO0FBRXRDLE1BQU0sZ0JBQWlCLFNBQVEsS0FBSztJQWNsQyxpQkFBaUI7SUFFakIsWUFBWSxLQUFZO1FBQ3RCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNmLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQ3RCLEVBQUUsRUFBRSxZQUFZO1lBQ2hCLEVBQUUsRUFBRSxjQUFjO1lBQ2xCLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUM7U0FDOUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxZQUFZLENBQUM7WUFDdEMsaUJBQWlCLEVBQUU7Z0JBQ2pCLElBQUksRUFBRSxDQUFDO2dCQUNQ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QUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFDO0lBQ2xELFVBQVUsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFDO0lBQzFELGVBQWUsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixFQUFDO0lBQ3JFLFdBQVcsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBQztJQUMzRSxXQUFXLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUM7SUFDekMsWUFBWSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFDO0lBQzFDLFVBQVUsRUFBRTtRQUNWLFNBQVMsRUFBRSxLQUFLO0tBQ2pCO0NBQ0YsQ0FBQztBQTBGSixlQUFlLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIyIEZsb3dtYXBCbHVlXG4gKiBDb3B5cmlnaHQgMjAxOC0yMDIwIFRlcmFseXRpY3MsIG1vZGlmaWVkIGJ5IEZsb3dtYXBCbHVlXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5cbmltcG9ydCB7TGF5ZXIsIHBpY2tpbmcsIHByb2plY3QzMn0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgR0wgZnJvbSAnQGx1bWEuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7R2VvbWV0cnksIE1vZGVsfSBmcm9tICdAbHVtYS5nbC9jb3JlJztcbmltcG9ydCBGcmFnbWVudFNoYWRlciBmcm9tICcuL0Zsb3dDaXJjbGVzTGF5ZXJGcmFnbWVudC5nbHNsJztcbmltcG9ydCBWZXJ0ZXhTaGFkZXIgZnJvbSAnLi9GbG93Q2lyY2xlc0xheWVyVmVydGV4Lmdsc2wnO1xuaW1wb3J0IHtGbG93Q2lyY2xlc0xheWVyQXR0cmlidXRlcywgUkdCQX0gZnJvbSAnQGZsb3dtYXAuZ2wvZGF0YSc7XG5pbXBvcnQge0xheWVyUHJvcHN9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRmxvd0NpcmNsZXNEYXR1bSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgTGF5ZXJQcm9wcyB7XG4gIGlkOiBzdHJpbmc7XG4gIG9wYWNpdHk/OiBudW1iZXI7XG4gIHBpY2thYmxlPzogYm9vbGVhbjtcbiAgZW1wdHlDb2xvcj86IFJHQkE7XG4gIG91dGxpbmVFbXB0eU1peD86IG51bWJlcjtcbiAgZ2V0Q29sb3I/OiAoZDogRmxvd0NpcmNsZXNEYXR1bSkgPT4gUkdCQTtcbiAgZ2V0UG9zaXRpb24/OiAoZDogRmxvd0NpcmNsZXNEYXR1bSkgPT4gW251bWJlciwgbnVtYmVyXTtcbiAgZ2V0SW5SYWRpdXM/OiAoZDogRmxvd0NpcmNsZXNEYXR1bSkgPT4gbnVtYmVyO1xuICBnZXRPdXRSYWRpdXM/OiAoZDogRmxvd0NpcmNsZXNEYXR1bSkgPT4gbnVtYmVyO1xuICBkYXRhOiBGbG93Q2lyY2xlc0RhdHVtW10gfCBGbG93Q2lyY2xlc0xheWVyQXR0cmlidXRlcztcbiAgdXBkYXRlVHJpZ2dlcnM/OiB7W2tleTogc3RyaW5nXTogUmVjb3JkPHN0cmluZywgdW5rbm93bj59O1xufVxuXG5jb25zdCBERUZBVUxUX0NPTE9SID0gWzAsIDAsIDAsIDI1NV07XG5jb25zdCBERUZBVUxUX0VNUFRZX0NPTE9SID0gWzI1NSwgMjU1LCAyNTUsIDI1NV07XG5jb25zdCBERUZBVUxUX09VVExJTkVfRU1QVFlfTUlYID0gMC40O1xuXG5jbGFzcyBGbG93Q2lyY2xlc0xheWVyIGV4dGVuZHMgTGF5ZXIge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0Zsb3dDaXJjbGVzTGF5ZXInO1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgZ2V0Q29sb3I6IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogREVGQVVMVF9DT0xPUn0sXG4gICAgZW1wdHlDb2xvcjoge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiBERUZBVUxUX0VNUFRZX0NPTE9SfSxcbiAgICBvdXRsaW5lRW1wdHlNaXg6IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogREVGQVVMVF9PVVRMSU5FX0VNUFRZX01JWH0sXG4gICAgZ2V0UG9zaXRpb246IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogKGQ6IEZsb3dDaXJjbGVzRGF0dW0pID0+IGQucG9zaXRpb259LFxuICAgIGdldEluUmFkaXVzOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IDF9LFxuICAgIGdldE91dFJhZGl1czoge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiAxfSxcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgIH0sXG4gIH07XG4gIC8vIHByb3BzITogUHJvcHM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG5cbiAgZ2V0U2hhZGVycygpIHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0U2hhZGVycyh7XG4gICAgICB2czogVmVydGV4U2hhZGVyLFxuICAgICAgZnM6IEZyYWdtZW50U2hhZGVyLFxuICAgICAgbW9kdWxlczogW3Byb2plY3QzMiwgcGlja2luZ10sXG4gICAgfSk7XG4gIH1cblxuICBpbml0aWFsaXplU3RhdGUoKSB7XG4gICAgdGhpcy5nZXRBdHRyaWJ1dGVNYW5hZ2VyKCkuYWRkSW5zdGFuY2VkKHtcbiAgICAgIGluc3RhbmNlUG9zaXRpb25zOiB7XG4gICAgICAgIHNpemU6IDMsXG4gICAgICAgIHR5cGU6IEdMLkRPVUJMRSxcbiAgICAgICAgZnA2NDogdGhpcy51c2U2NGJpdFBvc2l0aW9ucygpLFxuICAgICAgICB0cmFuc2l0aW9uOiB0cnVlLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFBvc2l0aW9uJyxcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZUluUmFkaXVzOiB7XG4gICAgICAgIHNpemU6IDEsXG4gICAgICAgIHRyYW5zaXRpb246IHRydWUsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0SW5SYWRpdXMnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IDEsXG4gICAgICB9LFxuICAgICAgaW5zdGFuY2VPdXRSYWRpdXM6IHtcbiAgICAgICAgc2l6ZTogMSxcbiAgICAgICAgdHJhbnNpdGlvbjogdHJ1ZSxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRPdXRSYWRpdXMnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IDEsXG4gICAgICB9LFxuICAgICAgaW5zdGFuY2VDb2xvcnM6IHtcbiAgICAgICAgc2l6ZTogNCxcbiAgICAgICAgdHJhbnNpdGlvbjogdHJ1ZSxcbiAgICAgICAgdHlwZTogR0wuVU5TSUdORURfQllURSxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRDb2xvcicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9DT0xPUixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVTdGF0ZSh7cHJvcHMsIG9sZFByb3BzLCBjaGFuZ2VGbGFnc306IGFueSkge1xuICAgIHN1cGVyLnVwZGF0ZVN0YXRlKHtwcm9wcywgb2xkUHJvcHMsIGNoYW5nZUZsYWdzfSk7XG4gICAgaWYgKGNoYW5nZUZsYWdzLmV4dGVuc2lvbnNDaGFuZ2VkKSB7XG4gICAgICBjb25zdCB7Z2x9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgaWYgKHRoaXMuc3RhdGUubW9kZWwpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5tb2RlbC5kZWxldGUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGVsOiB0aGlzLl9nZXRNb2RlbChnbCl9KTtcbiAgICAgIHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpLmludmFsaWRhdGVBbGwoKTtcbiAgICB9XG4gIH1cblxuICBkcmF3KHt1bmlmb3Jtc306IGFueSkge1xuICAgIGNvbnN0IHtlbXB0eUNvbG9yLCBvdXRsaW5lRW1wdHlNaXh9ID0gdGhpcy5wcm9wcztcbiAgICB0aGlzLnN0YXRlLm1vZGVsXG4gICAgICAuc2V0VW5pZm9ybXMoe1xuICAgICAgICAuLi51bmlmb3JtcyxcbiAgICAgICAgZW1wdHlDb2xvcixcbiAgICAgICAgb3V0bGluZUVtcHR5TWl4LFxuICAgICAgfSlcbiAgICAgIC5kcmF3KCk7XG4gIH1cblxuICBfZ2V0TW9kZWwoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCkge1xuICAgIC8vIGEgc3F1YXJlIHRoYXQgbWluaW1hbGx5IGNvdmVyIHRoZSB1bml0IGNpcmNsZVxuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFstMSwgLTEsIDAsIDEsIC0xLCAwLCAxLCAxLCAwLCAtMSwgMSwgMF07XG5cbiAgICByZXR1cm4gbmV3IE1vZGVsKFxuICAgICAgZ2wsXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuZ2V0U2hhZGVycygpLCB7XG4gICAgICAgIGlkOiB0aGlzLnByb3BzLmlkLFxuICAgICAgICBnZW9tZXRyeTogbmV3IEdlb21ldHJ5KHtcbiAgICAgICAgICBkcmF3TW9kZTogR0wuVFJJQU5HTEVfRkFOLFxuICAgICAgICAgIHZlcnRleENvdW50OiA0LFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIHBvc2l0aW9uczoge3NpemU6IDMsIHZhbHVlOiBuZXcgRmxvYXQzMkFycmF5KHBvc2l0aW9ucyl9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBpc0luc3RhbmNlZDogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRmxvd0NpcmNsZXNMYXllcjtcbiJdfQ==\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/FlowCirclesLayer.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.js": | |
/*!************************************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.js ***! | |
\************************************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright 2022 FlowmapBlue\n * Copyright 2018-2020 Teralytics, modified by FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (`\\\n#define SHADER_NAME flow-circles-layer-fragment-shader\n#define SOFT_OUTLINE 0.05\n#define EPS 0.05\nprecision highp float;\n\nuniform vec4 emptyColor;\nuniform float outlineEmptyMix;\n\nvarying vec4 vColor;\nvarying vec2 unitPosition;\nvarying float unitInRadius;\nvarying float unitOutRadius;\n\nfloat when_gt(float x, float y) {\n return max(sign(x - y), 0.0);\n}\n\nvoid main(void) {\n geometry.uv = unitPosition;\n float distToCenter = length(unitPosition);\n if (distToCenter > 1.0) {\n discard;\n }\n\n // See https://stackoverflow.com/questions/47285778\n vec4 ringColor = mix(\n emptyColor / 255., vColor,\n when_gt(unitInRadius, unitOutRadius)\n );\n vec4 outlineColor = mix(\n mix(vColor, emptyColor / 255., outlineEmptyMix),\n vColor,\n when_gt(unitInRadius, unitOutRadius)\n );\n \n float innerR = min(unitInRadius, unitOutRadius) * (1.0 - SOFT_OUTLINE);\n \n // Inner circle\n float step2 = innerR - 2.0 * EPS; \n float step3 = innerR - EPS;\n \n // Ring\n float step4 = innerR;\n // float step5 = 1.0 - SOFT_OUTLINE - EPS;\n // float step6 = 1.0 - SOFT_OUTLINE;\n float step5 = 1.0 - 5.0 * EPS;\n float step6 = 1.0;\n \n gl_FragColor = vColor;\n gl_FragColor = mix(gl_FragColor, emptyColor / 255., smoothstep(step2, step3, distToCenter));\n gl_FragColor = mix(gl_FragColor, ringColor, smoothstep(step3, step4, distToCenter));\n gl_FragColor = mix(gl_FragColor, outlineColor, smoothstep(step5, step6, distToCenter));\n // gl_FragColor = mix(gl_FragColor, emptyColor / 255., smoothstep(step6, 1.0, distToCenter));\n gl_FragColor.a = vColor.a;\n gl_FragColor.a *= smoothstep(0.0, SOFT_OUTLINE, 1.0 - distToCenter);\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0NpcmNsZXNMYXllckZyYWdtZW50Lmdsc2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0NpcmNsZXNMYXllci9GbG93Q2lyY2xlc0xheWVyRnJhZ21lbnQuZ2xzbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EwRGQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyMiBGbG93bWFwQmx1ZVxuICogQ29weXJpZ2h0IDIwMTgtMjAyMCBUZXJhbHl0aWNzLCBtb2RpZmllZCBieSBGbG93bWFwQmx1ZVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYFxcXG4jZGVmaW5lIFNIQURFUl9OQU1FIGZsb3ctY2lyY2xlcy1sYXllci1mcmFnbWVudC1zaGFkZXJcbiNkZWZpbmUgU09GVF9PVVRMSU5FIDAuMDVcbiNkZWZpbmUgRVBTIDAuMDVcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxudW5pZm9ybSB2ZWM0IGVtcHR5Q29sb3I7XG51bmlmb3JtIGZsb2F0IG91dGxpbmVFbXB0eU1peDtcblxudmFyeWluZyB2ZWM0IHZDb2xvcjtcbnZhcnlpbmcgdmVjMiB1bml0UG9zaXRpb247XG52YXJ5aW5nIGZsb2F0IHVuaXRJblJhZGl1cztcbnZhcnlpbmcgZmxvYXQgdW5pdE91dFJhZGl1cztcblxuZmxvYXQgd2hlbl9ndChmbG9hdCB4LCBmbG9hdCB5KSB7XG4gIHJldHVybiBtYXgoc2lnbih4IC0geSksIDAuMCk7XG59XG5cbnZvaWQgbWFpbih2b2lkKSB7XG4gIGdlb21ldHJ5LnV2ID0gdW5pdFBvc2l0aW9uO1xuICBmbG9hdCBkaXN0VG9DZW50ZXIgPSBsZW5ndGgodW5pdFBvc2l0aW9uKTtcbiAgaWYgKGRpc3RUb0NlbnRlciA+IDEuMCkge1xuICAgIGRpc2NhcmQ7XG4gIH1cblxuICAvLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDcyODU3NzhcbiAgdmVjNCByaW5nQ29sb3IgPSBtaXgoXG4gICAgZW1wdHlDb2xvciAvIDI1NS4sIHZDb2xvcixcbiAgICB3aGVuX2d0KHVuaXRJblJhZGl1cywgdW5pdE91dFJhZGl1cylcbiAgKTtcbiAgdmVjNCBvdXRsaW5lQ29sb3IgPSBtaXgoXG4gICAgbWl4KHZDb2xvciwgZW1wdHlDb2xvciAvIDI1NS4sIG91dGxpbmVFbXB0eU1peCksXG4gICAgdkNvbG9yLFxuICAgIHdoZW5fZ3QodW5pdEluUmFkaXVzLCB1bml0T3V0UmFkaXVzKVxuICApO1xuICBcbiAgZmxvYXQgaW5uZXJSID0gbWluKHVuaXRJblJhZGl1cywgdW5pdE91dFJhZGl1cykgKiAoMS4wIC0gU09GVF9PVVRMSU5FKTtcbiAgXG4gIC8vIElubmVyIGNpcmNsZVxuICBmbG9hdCBzdGVwMiA9IGlubmVyUiAtIDIuMCAqIEVQUzsgXG4gIGZsb2F0IHN0ZXAzID0gaW5uZXJSIC0gRVBTO1xuICBcbiAgLy8gUmluZ1xuICBmbG9hdCBzdGVwNCA9IGlubmVyUjtcbiAgLy8gZmxvYXQgc3RlcDUgPSAxLjAgLSBTT0ZUX09VVExJTkUgLSBFUFM7XG4gIC8vIGZsb2F0IHN0ZXA2ID0gMS4wIC0gU09GVF9PVVRMSU5FO1xuICBmbG9hdCBzdGVwNSA9IDEuMCAtIDUuMCAqIEVQUztcbiAgZmxvYXQgc3RlcDYgPSAxLjA7XG4gIFxuICBnbF9GcmFnQ29sb3IgPSB2Q29sb3I7XG4gIGdsX0ZyYWdDb2xvciA9IG1peChnbF9GcmFnQ29sb3IsIGVtcHR5Q29sb3IgLyAyNTUuLCBzbW9vdGhzdGVwKHN0ZXAyLCBzdGVwMywgZGlzdFRvQ2VudGVyKSk7XG4gIGdsX0ZyYWdDb2xvciA9IG1peChnbF9GcmFnQ29sb3IsIHJpbmdDb2xvciwgc21vb3Roc3RlcChzdGVwMywgc3RlcDQsIGRpc3RUb0NlbnRlcikpO1xuICBnbF9GcmFnQ29sb3IgPSBtaXgoZ2xfRnJhZ0NvbG9yLCBvdXRsaW5lQ29sb3IsIHNtb290aHN0ZXAoc3RlcDUsIHN0ZXA2LCBkaXN0VG9DZW50ZXIpKTtcbiAgLy8gZ2xfRnJhZ0NvbG9yID0gbWl4KGdsX0ZyYWdDb2xvciwgZW1wdHlDb2xvciAvIDI1NS4sIHNtb290aHN0ZXAoc3RlcDYsIDEuMCwgZGlzdFRvQ2VudGVyKSk7XG4gIGdsX0ZyYWdDb2xvci5hID0gdkNvbG9yLmE7XG4gIGdsX0ZyYWdDb2xvci5hICo9IHNtb290aHN0ZXAoMC4wLCBTT0ZUX09VVExJTkUsIDEuMCAtIGRpc3RUb0NlbnRlcik7XG4gIERFQ0tHTF9GSUxURVJfQ09MT1IoZ2xfRnJhZ0NvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xuIl19\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.js": | |
/*!**********************************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.js ***! | |
\**********************************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright 2022 FlowmapBlue\n * Copyright 2018-2020 Teralytics, modified by FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (`\\\n#define SHADER_NAME flow-circles-layer-vertex-shader\n#define radiusScale 100\n\nattribute vec3 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceInRadius;\nattribute float instanceOutRadius;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\n\nuniform float opacity;\nuniform vec4 emptyColor;\nuniform float outlineEmptyMix;\n\nvarying vec4 vColor;\nvarying vec2 unitPosition;\nvarying float unitInRadius;\nvarying float unitOutRadius;\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n\n float outerRadiusPixels = max(instanceInRadius, instanceOutRadius);\n unitInRadius = instanceInRadius / outerRadiusPixels; \n unitOutRadius = instanceOutRadius / outerRadiusPixels; \n\n // position on the containing square in [-1, 1] space\n unitPosition = positions.xy;\n geometry.uv = unitPosition;\n geometry.pickingColor = instancePickingColors;\n \n // Find the center of the point and add the current vertex\n vec3 offset = positions * project_pixel_size(outerRadiusPixels);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n \n // Apply opacity to instance color, or return instance picking color\n vColor = vec4(instanceColors.rgb / 255., instanceColors.a / 255. * opacity);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0NpcmNsZXNMYXllclZlcnRleC5nbHNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0Zsb3dDaXJjbGVzTGF5ZXIvRmxvd0NpcmNsZXNMYXllclZlcnRleC5nbHNsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsZUFBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E0Q2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyMiBGbG93bWFwQmx1ZVxuICogQ29weXJpZ2h0IDIwMTgtMjAyMCBUZXJhbHl0aWNzLCBtb2RpZmllZCBieSBGbG93bWFwQmx1ZVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYFxcXG4jZGVmaW5lIFNIQURFUl9OQU1FIGZsb3ctY2lyY2xlcy1sYXllci12ZXJ0ZXgtc2hhZGVyXG4jZGVmaW5lIHJhZGl1c1NjYWxlIDEwMFxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbnM7XG5cbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlUG9zaXRpb25zO1xuYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VQb3NpdGlvbnM2NExvdztcbmF0dHJpYnV0ZSBmbG9hdCBpbnN0YW5jZUluUmFkaXVzO1xuYXR0cmlidXRlIGZsb2F0IGluc3RhbmNlT3V0UmFkaXVzO1xuYXR0cmlidXRlIHZlYzQgaW5zdGFuY2VDb2xvcnM7XG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVBpY2tpbmdDb2xvcnM7XG5cbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnVuaWZvcm0gdmVjNCBlbXB0eUNvbG9yO1xudW5pZm9ybSBmbG9hdCBvdXRsaW5lRW1wdHlNaXg7XG5cbnZhcnlpbmcgdmVjNCB2Q29sb3I7XG52YXJ5aW5nIHZlYzIgdW5pdFBvc2l0aW9uO1xudmFyeWluZyBmbG9hdCB1bml0SW5SYWRpdXM7XG52YXJ5aW5nIGZsb2F0IHVuaXRPdXRSYWRpdXM7XG5cbnZvaWQgbWFpbih2b2lkKSB7XG4gIGdlb21ldHJ5LndvcmxkUG9zaXRpb24gPSBpbnN0YW5jZVBvc2l0aW9ucztcblxuICBmbG9hdCBvdXRlclJhZGl1c1BpeGVscyA9IG1heChpbnN0YW5jZUluUmFkaXVzLCBpbnN0YW5jZU91dFJhZGl1cyk7XG4gIHVuaXRJblJhZGl1cyA9IGluc3RhbmNlSW5SYWRpdXMgLyBvdXRlclJhZGl1c1BpeGVsczsgXG4gIHVuaXRPdXRSYWRpdXMgPSBpbnN0YW5jZU91dFJhZGl1cyAvIG91dGVyUmFkaXVzUGl4ZWxzOyBcblxuICAvLyBwb3NpdGlvbiBvbiB0aGUgY29udGFpbmluZyBzcXVhcmUgaW4gWy0xLCAxXSBzcGFjZVxuICB1bml0UG9zaXRpb24gPSBwb3NpdGlvbnMueHk7XG4gIGdlb21ldHJ5LnV2ID0gdW5pdFBvc2l0aW9uO1xuICBnZW9tZXRyeS5waWNraW5nQ29sb3IgPSBpbnN0YW5jZVBpY2tpbmdDb2xvcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIC8vIEZpbmQgdGhlIGNlbnRlciBvZiB0aGUgcG9pbnQgYW5kIGFkZCB0aGUgY3VycmVudCB2ZXJ0ZXhcbiAgdmVjMyBvZmZzZXQgPSBwb3NpdGlvbnMgKiBwcm9qZWN0X3BpeGVsX3NpemUob3V0ZXJSYWRpdXNQaXhlbHMpO1xuICBERUNLR0xfRklMVEVSX1NJWkUob2Zmc2V0LCBnZW9tZXRyeSk7XG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdF9wb3NpdGlvbl90b19jbGlwc3BhY2UoaW5zdGFuY2VQb3NpdGlvbnMsIGluc3RhbmNlUG9zaXRpb25zNjRMb3csIG9mZnNldCwgZ2VvbWV0cnkucG9zaXRpb24pO1xuICBERUNLR0xfRklMVEVSX0dMX1BPU0lUSU9OKGdsX1Bvc2l0aW9uLCBnZW9tZXRyeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIC8vIEFwcGx5IG9wYWNpdHkgdG8gaW5zdGFuY2UgY29sb3IsIG9yIHJldHVybiBpbnN0YW5jZSBwaWNraW5nIGNvbG9yXG4gIHZDb2xvciA9IHZlYzQoaW5zdGFuY2VDb2xvcnMucmdiIC8gMjU1LiwgaW5zdGFuY2VDb2xvcnMuYSAvIDI1NS4gKiBvcGFjaXR5KTtcbiAgREVDS0dMX0ZJTFRFUl9DT0xPUih2Q29sb3IsIGdlb21ldHJ5KTtcbn1cbmA7XG4iXX0=\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/index.js": | |
/*!************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/index.js ***! | |
\************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _FlowCirclesLayer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FlowCirclesLayer */ \"./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/FlowCirclesLayer.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_FlowCirclesLayer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0NpcmNsZXNMYXllci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLGdCQUFnQixNQUFNLG9CQUFvQixDQUFDO0FBRWxELGVBQWUsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRmxvd0NpcmNsZXNMYXllciBmcm9tICcuL0Zsb3dDaXJjbGVzTGF5ZXInO1xuXG5leHBvcnQgZGVmYXVsdCBGbG93Q2lyY2xlc0xheWVyO1xuIl19\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/index.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/FlowLinesLayer.js": | |
/*!*******************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/FlowLinesLayer.js ***! | |
\*******************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ \"@deck.gl/core\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @luma.gl/constants */ \"./node_modules/@luma.gl/constants/dist/esm/index.js\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @luma.gl/core */ \"@luma.gl/core\");\n/* harmony import */ var _luma_gl_core__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_luma_gl_core__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _FlowLinesLayerFragment_glsl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./FlowLinesLayerFragment.glsl */ \"./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/FlowLinesLayerFragment.glsl.js\");\n/* harmony import */ var _FlowLinesLayerVertex_glsl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./FlowLinesLayerVertex.glsl */ \"./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/FlowLinesLayerVertex.glsl.js\");\n/*\n * Copyright 2022 FlowmapBlue\n * Copyright 2018-2020 Teralytics, modified by FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\n\n\n\nconst DEFAULT_COLOR = [0, 132, 193, 255];\nconst INNER_SIDE_OUTLINE_THICKNESS = 1;\n// source_target_mix, perpendicular_offset_in_thickness_units, direction_of_travel_offset_in_thickness_units\n// prettier-ignore\nconst POSITIONS = [\n 1, 0, 0,\n 1, 2, -3,\n 1, 1, -3,\n 1, 0, 0,\n 1, 1, -3,\n 0, 1, 0,\n 1, 0, 0,\n 0, 1, 0,\n 0, 0, 0, // 4\n];\n/**\n 1\n ··\n · ··\n · ··\n 3 2 · ··\n ······························· ··\n · ······· ···· ··\n · ········ ····· ··\n · ··············· ····· ··\n · ········ ········\n · ················\n 4 ························································ 0\n\n */\nfunction getOutlinePixelOffsets(tout, tin) {\n // perpendicular_offset_in_pixels, direction_of_travel_offset_in_pixels, fill_outline_color_mix\n // prettier-ignore\n return ([\n -tin, 2 * tout, 1,\n 2 * tout, -tout, 1,\n tout, -tout, 1,\n -tin, 2 * tout, 1,\n tout, -tout, 1,\n tout, -tout, 1,\n -tin, 2 * tout, 1,\n tout, -tout, 1,\n -tin, -tout, 1, // 4\n ]);\n}\n// prettier-ignore\nconst ZEROES = [\n 0, 0, 0,\n 0, 0, 0,\n 0, 0, 0,\n 0, 0, 0,\n 0, 0, 0,\n 0, 0, 0,\n 0, 0, 0,\n 0, 0, 0,\n 0, 0, 0,\n];\nclass FlowLinesLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"Layer\"] {\n // props!: Props;\n constructor(props) {\n super(props);\n }\n getShaders() {\n return super.getShaders({\n vs: _FlowLinesLayerVertex_glsl__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n fs: _FlowLinesLayerFragment_glsl__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n modules: [_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"project32\"], _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"picking\"]],\n shaderCache: this.context.shaderCache,\n });\n }\n initializeState() {\n const { attributeManager } = this.state;\n attributeManager.addInstanced({\n instanceSourcePositions: {\n accessor: 'getSourcePosition',\n size: 3,\n transition: false,\n type: _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__[\"default\"].DOUBLE,\n },\n instanceTargetPositions: {\n accessor: 'getTargetPosition',\n size: 3,\n transition: false,\n type: _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__[\"default\"].DOUBLE,\n },\n instanceThickness: {\n accessor: 'getThickness',\n size: 1,\n transition: false,\n },\n instanceEndpointOffsets: {\n accessor: 'getEndpointOffsets',\n size: 2,\n transition: false,\n },\n instanceColors: {\n accessor: 'getColor',\n size: 4,\n type: _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__[\"default\"].UNSIGNED_BYTE,\n transition: false,\n },\n instancePickable: {\n accessor: 'getPickable',\n size: 1,\n transition: false,\n },\n });\n }\n updateState({ props, oldProps, changeFlags }) {\n super.updateState({ props, oldProps, changeFlags });\n if (changeFlags.extensionsChanged) {\n const { gl } = this.context;\n if (this.state.model) {\n this.state.model.delete();\n }\n this.setState({ model: this._getModel(gl) });\n this.getAttributeManager().invalidateAll();\n }\n }\n draw({ uniforms }) {\n const { gl } = this.context;\n const { outlineColor, thicknessUnit } = this.props;\n gl.lineWidth(1);\n this.state.model\n .setUniforms(Object.assign(Object.assign({}, uniforms), { outlineColor: outlineColor.map((x) => x / 255), \n // outlineColor: [1, 0, 0, 1],\n thicknessUnit: thicknessUnit * 2.0, gap: 0.5 }))\n .draw();\n }\n _getModel(gl) {\n let positions = [];\n let pixelOffsets = [];\n const { drawOutline, outlineThickness } = this.props;\n if (drawOutline) {\n // source_target_mix, perpendicular_offset_in_thickness_units, direction_of_travel_offset_in_thickness_units\n positions = positions.concat(POSITIONS);\n const tout = outlineThickness;\n const tin = INNER_SIDE_OUTLINE_THICKNESS; // the outline shouldn't cover the opposite arrow\n pixelOffsets = pixelOffsets.concat(getOutlinePixelOffsets(tout, tin));\n }\n positions = positions.concat(POSITIONS);\n pixelOffsets = pixelOffsets.concat(ZEROES);\n return new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"Model\"](gl, Object.assign(Object.assign({ id: this.props.id }, this.getShaders()), { geometry: new _luma_gl_core__WEBPACK_IMPORTED_MODULE_2__[\"Geometry\"]({\n drawMode: _luma_gl_constants__WEBPACK_IMPORTED_MODULE_1__[\"default\"].TRIANGLES,\n attributes: {\n positions: new Float32Array(positions),\n normals: new Float32Array(pixelOffsets),\n },\n }), isInstanced: true, shaderCache: this.context.shaderCache }));\n }\n}\nFlowLinesLayer.layerName = 'FlowLinesLayer';\nFlowLinesLayer.defaultProps = {\n getSourcePosition: { type: 'accessor', value: (d) => [0, 0] },\n getTargetPosition: { type: 'accessor', value: (d) => [0, 0] },\n getColor: { type: 'accessor', value: DEFAULT_COLOR },\n getThickness: { type: 'accessor', value: (d) => d.count },\n getPickable: { type: 'accessor', value: (d) => 1.0 },\n drawOutline: true,\n thicknessUnit: 12,\n outlineThickness: 1,\n outlineColor: [255, 255, 255, 255],\n parameters: {\n depthTest: false,\n },\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (FlowLinesLayer);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0xpbmVzTGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0xpbmVzTGF5ZXIvRmxvd0xpbmVzTGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEMsT0FBTyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxjQUFjLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxZQUFZLE1BQU0sNkJBQTZCLENBQUM7QUFzQnZELE1BQU0sYUFBYSxHQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDL0MsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLENBQUM7QUFFdkMsNEdBQTRHO0FBQzVHLGtCQUFrQjtBQUNsQixNQUFNLFNBQVMsR0FBRztJQUNoQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNSLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBR1IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ1AsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDUixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFHUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRyxJQUFJO0NBQ2YsQ0FBQztBQUNGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsU0FBUyxzQkFBc0IsQ0FBQyxJQUFZLEVBQUUsR0FBVztJQUN2RCwrRkFB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Q0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQztJQUNoRSxpQkFBaUIsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQztJQUNoRSxRQUFRLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUM7SUFDbEQsWUFBWSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUM7SUFDNUQsV0FBVyxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBQztJQUN2RCxXQUFXLEVBQUUsSUFBSTtJQUNqQixhQUFhLEVBQUUsRUFBRTtJQUNqQixnQkFBZ0IsRUFBRSxDQUFDO0lBQ25CLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNsQyxVQUFVLEVBQUU7UUFDVixTQUFTLEVBQUUsS0FBSztLQUNqQjtDQUNGLENBQUM7QUFvSEosZUFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjIgRmxvd21hcEJsdWVcbiAqIENvcHlyaWdodCAyMDE4LTIwMjAgVGVyYWx5dGljcywgbW9kaWZpZWQgYnkgRmxvd21hcEJsdWVcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHtMYXllciwgcGlja2luZywgcHJvamVjdDMyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCBHTCBmcm9tICdAbHVtYS5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtHZW9tZXRyeSwgTW9kZWx9IGZyb20gJ0BsdW1hLmdsL2NvcmUnO1xuaW1wb3J0IEZyYWdtZW50U2hhZGVyIGZyb20gJy4vRmxvd0xpbmVzTGF5ZXJGcmFnbWVudC5nbHNsJztcbmltcG9ydCBWZXJ0ZXhTaGFkZXIgZnJvbSAnLi9GbG93TGluZXNMYXllclZlcnRleC5nbHNsJztcbmltcG9ydCB7Rmxvd0xpbmVzTGF5ZXJBdHRyaWJ1dGVzLCBSR0JBfSBmcm9tICdAZmxvd21hcC5nbC9kYXRhJztcbmltcG9ydCB7TGF5ZXJQcm9wc30gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzPEY+IGV4dGVuZHMgTGF5ZXJQcm9wcyB7XG4gIGlkOiBzdHJpbmc7XG4gIG9wYWNpdHk/OiBudW1iZXI7XG4gIHBpY2thYmxlPzogYm9vbGVhbjtcbiAgdXBkYXRlVHJpZ2dlcnM/OiB7W2tleTogc3RyaW5nXTogUmVjb3JkPHN0cmluZywgdW5rbm93bj59O1xuICBkYXRhOiBGW10gfCBGbG93TGluZXNMYXllckF0dHJpYnV0ZXM7XG4gIGRyYXdPdXRsaW5lOiBib29sZWFuO1xuICBvdXRsaW5lQ29sb3I/OiBSR0JBO1xuICBvdXRsaW5lVGhpY2tuZXNzPzogbnVtYmVyO1xuICB0aGlja25lc3NVbml0PzogbnVtYmVyO1xuICBnZXRTb3VyY2VQb3NpdGlvbj86IChkOiBGKSA9PiBbbnVtYmVyLCBudW1iZXJdO1xuICBnZXRUYXJnZXRQb3NpdGlvbj86IChkOiBGKSA9PiBbbnVtYmVyLCBudW1iZXJdO1xuICBnZXRDb2xvcj86IChkOiBGKSA9PiBSR0JBO1xuICBnZXRUaGlja25lc3M/OiAoZDogRikgPT4gbnVtYmVyO1xuICBnZXRQaWNrYWJsZT86IChkOiBGLCB7aW5kZXh9OiB7aW5kZXg6IG51bWJlcn0pID0+IG51bWJlcjsgLy8gPj0gMS4wIC0+IHRydWVcbiAgZ2V0RW5kcG9pbnRPZmZzZXRzPzogKGQ6IEYpID0+IFtudW1iZXIsIG51bWJlcl07XG59XG5cbmNvbnN0IERFRkFVTFRfQ09MT1I6IFJHQkEgPSBbMCwgMTMyLCAxOTMsIDI1NV07XG5jb25zdCBJTk5FUl9TSURFX09VVExJTkVfVEhJQ0tORVNTID0gMTtcblxuLy8gc291cmNlX3RhcmdldF9taXgsIHBlcnBlbmRpY3VsYXJfb2Zmc2V0X2luX3RoaWNrbmVzc191bml0cywgZGlyZWN0aW9uX29mX3RyYXZlbF9vZmZzZXRfaW5fdGhpY2tuZXNzX3VuaXRzXG4vLyBwcmV0dGllci1pZ25vcmVcbmNvbnN0IFBPU0lUSU9OUyA9IFtcbiAgMSwgMCwgMCwgIC8vIDBcbiAgMSwgMiwgLTMsIC8vIDFcbiAgMSwgMSwgLTMsIC8vIDJcblxuXG4gIDEsIDAsIDAsICAvLyAwXG4gIDEsIDEsIC0zLCAvLyAyXG4gIDAsIDEsIDAsICAvLyAzXG5cblxuICAxLCAwLCAwLCAgLy8gMFxuICAwLCAxLCAwLCAgLy8gM1xuICAwLCAwLCAwLCAgLy8gNFxuXTtcbi8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgwrfCt1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgwrcgwrfCt1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgwrcgICAgwrfCt1xuICAgICAzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgwrcgICAgICDCt8K3XG4gICAgICDCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCtyAgICAgICAgwrfCt1xuICAgICAgwrcgwrfCt8K3wrfCt8K3wrcgICAgICAgICAgICAgICAgICAgICAgIMK3wrfCt8K3ICAgICAgwrfCt1xuICAgICAgwrcgICAgICAgwrfCt8K3wrfCt8K3wrfCtyAgICAgICAgICAgICAgICAgICDCt8K3wrfCt8K3ICAgICDCt8K3XG4gICAgICDCtyAgICAgICAgICAgICAgIMK3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCtyAgICAgICAgwrfCt8K3wrfCtyAgIMK3wrdcbiAgICAgIMK3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICDCt8K3wrfCt8K3wrfCt8K3ICAgICAgwrfCt8K3wrfCt8K3wrfCt1xuICAgICAgwrcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgwrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrdcbiAgICA0IMK3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrcgIDBcblxuICovXG5cbmZ1bmN0aW9uIGdldE91dGxpbmVQaXhlbE9mZnNldHModG91dDogbnVtYmVyLCB0aW46IG51bWJlcikge1xuICAvLyBwZXJwZW5kaWN1bGFyX29mZnNldF9pbl9waXhlbHMsIGRpcmVjdGlvbl9vZl90cmF2ZWxfb2Zmc2V0X2luX3BpeGVscywgZmlsbF9vdXRsaW5lX2NvbG9yX21peFxuICAvLyBwcmV0dGllci1pZ25vcmVcbiAgcmV0dXJuIChbXG5cbiAgICAtdGluLCAyKnRvdXQsIDEsICAgLy8gMFxuICAgIDIqdG91dCwgLXRvdXQsIDEsICAvLyAxXG4gICAgdG91dCwgLXRvdXQsIDEsICAgLy8gMlxuXG4gICAgLXRpbiwgMip0b3V0LCAxLCAvLyAwXG4gICAgdG91dCwgLXRvdXQsIDEsICAvLyAyXG4gICAgdG91dCwgLXRvdXQsIDEsICAvLyAzXG5cbiAgICAtdGluLCAyKnRvdXQsIDEsIC8vIDBcbiAgICB0b3V0LCAtdG91dCwgMSwgIC8vIDNcbiAgICAtdGluLCAtdG91dCwgMSwgIC8vIDRcbiAgXSk7XG59XG5cbi8vIHByZXR0aWVyLWlnbm9yZVxuY29uc3QgWkVST0VTID0gW1xuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuXTtcblxuY2xhc3MgRmxvd0xpbmVzTGF5ZXI8Rj4gZXh0ZW5kcyBMYXllciB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnRmxvd0xpbmVzTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGdldFNvdXJjZVBvc2l0aW9uOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IChkOiBhbnkpID0+IFswLCAwXX0sXG4gICAgZ2V0VGFyZ2V0UG9zaXRpb246IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogKGQ6IGFueSkgPT4gWzAsIDBdfSxcbiAgICBnZXRDb2xvcjoge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiBERUZBVUxUX0NPTE9SfSxcbiAgICBnZXRUaGlja25lc3M6IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogKGQ6IGFueSkgPT4gZC5jb3VudH0sIC8vIDAuLjAuNVxuICAgIGdldFBpY2thYmxlOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IChkOiBhbnkpID0+IDEuMH0sXG4gICAgZHJhd091dGxpbmU6IHRydWUsXG4gICAgdGhpY2tuZXNzVW5pdDogMTIsXG4gICAgb3V0bGluZVRoaWNrbmVzczogMSxcbiAgICBvdXRsaW5lQ29sb3I6IFsyNTUsIDI1NSwgMjU1LCAyNTVdLFxuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgfSxcbiAgfTtcbiAgLy8gcHJvcHMhOiBQcm9wcztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogUHJvcHM8Rj4pIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cblxuICBnZXRTaGFkZXJzKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0U2hhZGVycyh7XG4gICAgICB2czogVmVydGV4U2hhZGVyLFxuICAgICAgZnM6IEZyYWdtZW50U2hhZGVyLFxuICAgICAgbW9kdWxlczogW3Byb2plY3QzMiwgcGlja2luZ10sXG4gICAgICBzaGFkZXJDYWNoZTogdGhpcy5jb250ZXh0LnNoYWRlckNhY2hlLFxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHthdHRyaWJ1dGVNYW5hZ2VyfSA9IHRoaXMuc3RhdGU7XG5cbiAgICBhdHRyaWJ1dGVNYW5hZ2VyLmFkZEluc3RhbmNlZCh7XG4gICAgICBpbnN0YW5jZVNvdXJjZVBvc2l0aW9uczoge1xuICAgICAgICBhY2Nlc3NvcjogJ2dldFNvdXJjZVBvc2l0aW9uJyxcbiAgICAgICAgc2l6ZTogMyxcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICAgIHR5cGU6IEdMLkRPVUJMRSxcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZVRhcmdldFBvc2l0aW9uczoge1xuICAgICAgICBhY2Nlc3NvcjogJ2dldFRhcmdldFBvc2l0aW9uJyxcbiAgICAgICAgc2l6ZTogMyxcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICAgIHR5cGU6IEdMLkRPVUJMRSxcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZVRoaWNrbmVzczoge1xuICAgICAgICBhY2Nlc3NvcjogJ2dldFRoaWNrbmVzcycsXG4gICAgICAgIHNpemU6IDEsXG4gICAgICAgIHRyYW5zaXRpb246IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGluc3RhbmNlRW5kcG9pbnRPZmZzZXRzOiB7XG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RW5kcG9pbnRPZmZzZXRzJyxcbiAgICAgICAgc2l6ZTogMixcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAgaW5zdGFuY2VDb2xvcnM6IHtcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRDb2xvcicsXG4gICAgICAgIHNpemU6IDQsXG4gICAgICAgIHR5cGU6IEdMLlVOU0lHTkVEX0JZVEUsXG4gICAgICAgIHRyYW5zaXRpb246IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGluc3RhbmNlUGlja2FibGU6IHtcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRQaWNrYWJsZScsXG4gICAgICAgIHNpemU6IDEsXG4gICAgICAgIHRyYW5zaXRpb246IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHtwcm9wcywgb2xkUHJvcHMsIGNoYW5nZUZsYWdzfTogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZVN0YXRlKHtwcm9wcywgb2xkUHJvcHMsIGNoYW5nZUZsYWdzfSk7XG5cbiAgICBpZiAoY2hhbmdlRmxhZ3MuZXh0ZW5zaW9uc0NoYW5nZWQpIHtcbiAgICAgIGNvbnN0IHtnbH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5tb2RlbCkge1xuICAgICAgICB0aGlzLnN0YXRlLm1vZGVsLmRlbGV0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWw6IHRoaXMuX2dldE1vZGVsKGdsKX0pO1xuICAgICAgdGhpcy5nZXRBdHRyaWJ1dGVNYW5hZ2VyKCkuaW52YWxpZGF0ZUFsbCgpO1xuICAgIH1cbiAgfVxuXG4gIGRyYXcoe3VuaWZvcm1zfTogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIGNvbnN0IHtnbH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgY29uc3Qge291dGxpbmVDb2xvciwgdGhpY2tuZXNzVW5pdH0gPSB0aGlzLnByb3BzO1xuICAgIGdsLmxpbmVXaWR0aCgxKTtcbiAgICB0aGlzLnN0YXRlLm1vZGVsXG4gICAgICAuc2V0VW5pZm9ybXMoe1xuICAgICAgICAuLi51bmlmb3JtcyxcbiAgICAgICAgb3V0bGluZUNvbG9yOiBvdXRsaW5lQ29sb3IubWFwKCh4OiBudW1iZXIpID0+IHggLyAyNTUpLFxuICAgICAgICAvLyBvdXRsaW5lQ29sb3I6IFsxLCAwLCAwLCAxXSxcbiAgICAgICAgdGhpY2tuZXNzVW5pdDogdGhpY2tuZXNzVW5pdCAqIDIuMCxcbiAgICAgICAgZ2FwOiAwLjUsXG4gICAgICB9KVxuICAgICAgLmRyYXcoKTtcbiAgfVxuXG4gIF9nZXRNb2RlbChnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0KTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgbGV0IHBvc2l0aW9uczogbnVtYmVyW10gPSBbXTtcbiAgICBsZXQgcGl4ZWxPZmZzZXRzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgY29uc3Qge2RyYXdPdXRsaW5lLCBvdXRsaW5lVGhpY2tuZXNzfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKGRyYXdPdXRsaW5lKSB7XG4gICAgICAvLyBzb3VyY2VfdGFyZ2V0X21peCwgcGVycGVuZGljdWxhcl9vZmZzZXRfaW5fdGhpY2tuZXNzX3VuaXRzLCBkaXJlY3Rpb25fb2ZfdHJhdmVsX29mZnNldF9pbl90aGlja25lc3NfdW5pdHNcbiAgICAgIHBvc2l0aW9ucyA9IHBvc2l0aW9ucy5jb25jYXQoUE9TSVRJT05TKTtcbiAgICAgIGNvbnN0IHRvdXQgPSBvdXRsaW5lVGhpY2tuZXNzO1xuICAgICAgY29uc3QgdGluID0gSU5ORVJfU0lERV9PVVRMSU5FX1RISUNLTkVTUzsgLy8gdGhlIG91dGxpbmUgc2hvdWxkbid0IGNvdmVyIHRoZSBvcHBvc2l0ZSBhcnJvd1xuICAgICAgcGl4ZWxPZmZzZXRzID0gcGl4ZWxPZmZzZXRzLmNvbmNhdChnZXRPdXRsaW5lUGl4ZWxPZmZzZXRzKHRvdXQsIHRpbikpO1xuICAgIH1cblxuICAgIHBvc2l0aW9ucyA9IHBvc2l0aW9ucy5jb25jYXQoUE9TSVRJT05TKTtcbiAgICBwaXhlbE9mZnNldHMgPSBwaXhlbE9mZnNldHMuY29uY2F0KFpFUk9FUyk7XG5cbiAgICByZXR1cm4gbmV3IE1vZGVsKGdsLCB7XG4gICAgICBpZDogdGhpcy5wcm9wcy5pZCxcbiAgICAgIC4uLnRoaXMuZ2V0U2hhZGVycygpLFxuICAgICAgZ2VvbWV0cnk6IG5ldyBHZW9tZXRyeSh7XG4gICAgICAgIGRyYXdNb2RlOiBHTC5UUklBTkdMRVMsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICBwb3NpdGlvbnM6IG5ldyBGbG9hdDMyQXJyYXkocG9zaXRpb25zKSxcbiAgICAgICAgICBub3JtYWxzOiBuZXcgRmxvYXQzMkFycmF5KHBpeGVsT2Zmc2V0cyksXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIGlzSW5zdGFuY2VkOiB0cnVlLFxuICAgICAgc2hhZGVyQ2FjaGU6IHRoaXMuY29udGV4dC5zaGFkZXJDYWNoZSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBGbG93TGluZXNMYXllcjtcbiJdfQ==\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/FlowLinesLayer.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/FlowLinesLayerFragment.glsl.js": | |
/*!********************************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/FlowLinesLayerFragment.glsl.js ***! | |
\********************************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright 2022 FlowmapBlue\n * Copyright 2018-2020 Teralytics, modified by FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (`\\\n#define SHADER_NAME flow-line-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\nvarying vec2 uv;\n\nvoid main(void) {\n if (vColor.a == 0.0) {\n discard;\n }\n\n geometry.uv = uv;\n gl_FragColor = vColor;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n`);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0xpbmVzTGF5ZXJGcmFnbWVudC5nbHNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0Zsb3dMaW5lc0xheWVyL0Zsb3dMaW5lc0xheWVyRnJhZ21lbnQuZ2xzbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjIgRmxvd21hcEJsdWVcbiAqIENvcHlyaWdodCAyMDE4LTIwMjAgVGVyYWx5dGljcywgbW9kaWZpZWQgYnkgRmxvd21hcEJsdWVcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGBcXFxuI2RlZmluZSBTSEFERVJfTkFNRSBmbG93LWxpbmUtbGF5ZXItZnJhZ21lbnQtc2hhZGVyXG5cbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxudmFyeWluZyB2ZWM0IHZDb2xvcjtcbnZhcnlpbmcgdmVjMiB1djtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgaWYgKHZDb2xvci5hID09IDAuMCkge1xuICAgIGRpc2NhcmQ7XG4gIH1cblxuICBnZW9tZXRyeS51diA9IHV2O1xuICBnbF9GcmFnQ29sb3IgPSB2Q29sb3I7XG4gIERFQ0tHTF9GSUxURVJfQ09MT1IoZ2xfRnJhZ0NvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xuIl19\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/FlowLinesLayerFragment.glsl.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/FlowLinesLayerVertex.glsl.js": | |
/*!******************************************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/FlowLinesLayerVertex.glsl.js ***! | |
\******************************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright 2022 FlowmapBlue\n * Copyright 2018-2020 Teralytics, modified by FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (`\\\n#define SHADER_NAME flow-line-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec3 normals;\nattribute vec4 instanceColors;\nattribute float instanceThickness; // 0..0.5\nattribute vec3 instanceSourcePositions;\nattribute vec3 instanceTargetPositions;\nattribute vec3 instanceSourcePositions64Low;\nattribute vec3 instanceTargetPositions64Low;\nattribute vec3 instancePickingColors;\nattribute vec2 instanceEndpointOffsets;\nattribute float instancePickable;\n\nuniform vec4 outlineColor;\nuniform float thicknessUnit;\nuniform float gap;\nuniform float opacity;\n\nvarying vec4 vColor;\nvarying vec2 uv;\n\nvoid main(void) {\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n \n // Position\n vec4 source_commonspace; \n vec4 target_commonspace;\n vec4 source = project_position_to_clipspace(instanceSourcePositions, instanceSourcePositions64Low, vec3(0.), source_commonspace);\n vec4 target = project_position_to_clipspace(instanceTargetPositions, instanceTargetPositions64Low, vec3(0.), target_commonspace);\n\n // linear interpolation of source & target to pick right coord\n float sourceOrTarget = positions.x;\n geometry.position = mix(source_commonspace, target_commonspace, sourceOrTarget);\n uv = positions.xy;\n geometry.uv = uv;\n if (instancePickable > 0.5) {\n geometry.pickingColor = instancePickingColors;\n }\n \n // set the clamp limits in pixel size \n float lengthCommon = length(target_commonspace - source_commonspace); \n vec2 offsetDistances = project_pixel_size(positions.yz) * thicknessUnit;\n \n vec2 limitedOffsetDistances = clamp( \n project_pixel_size(positions.yz) * thicknessUnit,\n -lengthCommon*.8, lengthCommon*.8\n );\n float startOffsetCommon = project_pixel_size(instanceEndpointOffsets[0]);\n float endOffsetCommon = project_pixel_size(instanceEndpointOffsets[1]);\n float endpointOffset = mix(\n clamp(startOffsetCommon, 0.0, lengthCommon*.2),\n -clamp(endOffsetCommon, 0.0, lengthCommon*.2),\n positions.x\n );\n\n vec2 flowlineDir = normalize(target_commonspace.xy - source_commonspace.xy);\n vec2 perpendicularDir = vec2(-flowlineDir.y, flowlineDir.x);\n vec2 normalsCommon = project_pixel_size(normals.xy);\n float gapCommon = project_pixel_size(gap);\n vec3 offsetCommon = vec3(\n flowlineDir * (instanceThickness * limitedOffsetDistances[1] + normalsCommon.y + endpointOffset * 1.05) -\n perpendicularDir * (instanceThickness * limitedOffsetDistances[0] + gapCommon + normalsCommon.x),\n 0.0\n );\n \n DECKGL_FILTER_SIZE(offsetCommon, geometry);\n vec4 position_commonspace = mix(source_commonspace, target_commonspace, sourceOrTarget);\n vec4 offset_commonspace = vec4(offsetCommon, 0.0);\n gl_Position = project_common_position_to_clipspace(position_commonspace + offset_commonspace);\n \n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n \n vec4 fillColor = vec4(instanceColors.rgb, instanceColors.a * opacity) / 255.;\n vColor = mix(fillColor, vec4(outlineColor.xyz, outlineColor.w * fillColor.w), normals.z);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0xpbmVzTGF5ZXJWZXJ0ZXguZ2xzbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9GbG93TGluZXNMYXllci9GbG93TGluZXNMYXllclZlcnRleC5nbHNsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsZUFBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQStFZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIyIEZsb3dtYXBCbHVlXG4gKiBDb3B5cmlnaHQgMjAxOC0yMDIwIFRlcmFseXRpY3MsIG1vZGlmaWVkIGJ5IEZsb3dtYXBCbHVlXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBgXFxcbiNkZWZpbmUgU0hBREVSX05BTUUgZmxvdy1saW5lLWxheWVyLXZlcnRleC1zaGFkZXJcblxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb25zO1xuYXR0cmlidXRlIHZlYzMgbm9ybWFscztcbmF0dHJpYnV0ZSB2ZWM0IGluc3RhbmNlQ29sb3JzO1xuYXR0cmlidXRlIGZsb2F0IGluc3RhbmNlVGhpY2tuZXNzOyAgICAvLyAwLi4wLjVcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlU291cmNlUG9zaXRpb25zO1xuYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VUYXJnZXRQb3NpdGlvbnM7XG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVNvdXJjZVBvc2l0aW9uczY0TG93O1xuYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VUYXJnZXRQb3NpdGlvbnM2NExvdztcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlUGlja2luZ0NvbG9ycztcbmF0dHJpYnV0ZSB2ZWMyIGluc3RhbmNlRW5kcG9pbnRPZmZzZXRzO1xuYXR0cmlidXRlIGZsb2F0IGluc3RhbmNlUGlja2FibGU7XG5cbnVuaWZvcm0gdmVjNCBvdXRsaW5lQ29sb3I7XG51bmlmb3JtIGZsb2F0IHRoaWNrbmVzc1VuaXQ7XG51bmlmb3JtIGZsb2F0IGdhcDtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcblxudmFyeWluZyB2ZWM0IHZDb2xvcjtcbnZhcnlpbmcgdmVjMiB1djtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkud29ybGRQb3NpdGlvbiA9IGluc3RhbmNlU291cmNlUG9zaXRpb25zO1xuICBnZW9tZXRyeS53b3JsZFBvc2l0aW9uQWx0ID0gaW5zdGFuY2VUYXJnZXRQb3NpdGlvbnM7XG4gIFxuICAvLyBQb3NpdGlvblxuICB2ZWM0IHNvdXJjZV9jb21tb25zcGFjZTsgICAgXG4gIHZlYzQgdGFyZ2V0X2NvbW1vbnNwYWNlO1xuICB2ZWM0IHNvdXJjZSA9IHByb2plY3RfcG9zaXRpb25fdG9fY2xpcHNwYWNlKGluc3RhbmNlU291cmNlUG9zaXRpb25zLCBpbnN0YW5jZVNvdXJjZVBvc2l0aW9uczY0TG93LCB2ZWMzKDAuKSwgc291cmNlX2NvbW1vbnNwYWNlKTtcbiAgdmVjNCB0YXJnZXQgPSBwcm9qZWN0X3Bvc2l0aW9uX3RvX2NsaXBzcGFjZShpbnN0YW5jZVRhcmdldFBvc2l0aW9ucywgaW5zdGFuY2VUYXJnZXRQb3NpdGlvbnM2NExvdywgdmVjMygwLiksIHRhcmdldF9jb21tb25zcGFjZSk7XG5cbiAgLy8gbGluZWFyIGludGVycG9sYXRpb24gb2Ygc291cmNlICYgdGFyZ2V0IHRvIHBpY2sgcmlnaHQgY29vcmRcbiAgZmxvYXQgc291cmNlT3JUYXJnZXQgPSBwb3NpdGlvbnMueDtcbiAgZ2VvbWV0cnkucG9zaXRpb24gPSBtaXgoc291cmNlX2NvbW1vbnNwYWNlLCB0YXJnZXRfY29tbW9uc3BhY2UsIHNvdXJjZU9yVGFyZ2V0KTtcbiAgdXYgPSBwb3NpdGlvbnMueHk7XG4gIGdlb21ldHJ5LnV2ID0gdXY7XG4gIGlmIChpbnN0YW5jZVBpY2thYmxlID4gMC41KSB7XG4gICAgZ2VvbWV0cnkucGlja2luZ0NvbG9yID0gaW5zdGFuY2VQaWNraW5nQ29sb3JzO1xuICB9XG4gIFxuICAvLyBzZXQgdGhlIGNsYW1wIGxpbWl0cyBpbiBwaXhlbCBzaXplIFxuICBmbG9hdCBsZW5ndGhDb21tb24gPSBsZW5ndGgodGFyZ2V0X2NvbW1vbnNwYWNlIC0gc291cmNlX2NvbW1vbnNwYWNlKTsgICAgXG4gIHZlYzIgb2Zmc2V0RGlzdGFuY2VzID0gcHJvamVjdF9waXhlbF9zaXplKHBvc2l0aW9ucy55eikgKiB0aGlja25lc3NVbml0O1xuICBcbiAgdmVjMiBsaW1pdGVkT2Zmc2V0RGlzdGFuY2VzID0gY2xhbXAoICAgXG4gICAgcHJvamVjdF9waXhlbF9zaXplKHBvc2l0aW9ucy55eikgKiB0aGlja25lc3NVbml0LFxuICAgIC1sZW5ndGhDb21tb24qLjgsIGxlbmd0aENvbW1vbiouOFxuICApO1xuICBmbG9hdCBzdGFydE9mZnNldENvbW1vbiA9IHByb2plY3RfcGl4ZWxfc2l6ZShpbnN0YW5jZUVuZHBvaW50T2Zmc2V0c1swXSk7XG4gIGZsb2F0IGVuZE9mZnNldENvbW1vbiA9IHByb2plY3RfcGl4ZWxfc2l6ZShpbnN0YW5jZUVuZHBvaW50T2Zmc2V0c1sxXSk7XG4gIGZsb2F0IGVuZHBvaW50T2Zmc2V0ID0gbWl4KFxuICAgIGNsYW1wKHN0YXJ0T2Zmc2V0Q29tbW9uLCAwLjAsIGxlbmd0aENvbW1vbiouMiksXG4gICAgLWNsYW1wKGVuZE9mZnNldENvbW1vbiwgMC4wLCBsZW5ndGhDb21tb24qLjIpLFxuICAgIHBvc2l0aW9ucy54XG4gICk7XG5cbiAgdmVjMiBmbG93bGluZURpciA9IG5vcm1hbGl6ZSh0YXJnZXRfY29tbW9uc3BhY2UueHkgLSBzb3VyY2VfY29tbW9uc3BhY2UueHkpO1xuICB2ZWMyIHBlcnBlbmRpY3VsYXJEaXIgPSB2ZWMyKC1mbG93bGluZURpci55LCBmbG93bGluZURpci54KTtcbiAgdmVjMiBub3JtYWxzQ29tbW9uID0gcHJvamVjdF9waXhlbF9zaXplKG5vcm1hbHMueHkpO1xuICBmbG9hdCBnYXBDb21tb24gPSBwcm9qZWN0X3BpeGVsX3NpemUoZ2FwKTtcbiAgdmVjMyBvZmZzZXRDb21tb24gPSB2ZWMzKFxuICAgIGZsb3dsaW5lRGlyICogKGluc3RhbmNlVGhpY2tuZXNzICogbGltaXRlZE9mZnNldERpc3RhbmNlc1sxXSArIG5vcm1hbHNDb21tb24ueSArIGVuZHBvaW50T2Zmc2V0ICogMS4wNSkgLVxuICAgIHBlcnBlbmRpY3VsYXJEaXIgKiAoaW5zdGFuY2VUaGlja25lc3MgKiBsaW1pdGVkT2Zmc2V0RGlzdGFuY2VzWzBdICsgZ2FwQ29tbW9uICsgbm9ybWFsc0NvbW1vbi54KSxcbiAgICAwLjBcbiAgKTtcbiAgXG4gIERFQ0tHTF9GSUxURVJfU0laRShvZmZzZXRDb21tb24sIGdlb21ldHJ5KTtcbiAgdmVjNCBwb3NpdGlvbl9jb21tb25zcGFjZSA9IG1peChzb3VyY2VfY29tbW9uc3BhY2UsIHRhcmdldF9jb21tb25zcGFjZSwgc291cmNlT3JUYXJnZXQpO1xuICB2ZWM0IG9mZnNldF9jb21tb25zcGFjZSA9IHZlYzQob2Zmc2V0Q29tbW9uLCAwLjApO1xuICBnbF9Qb3NpdGlvbiA9IHByb2plY3RfY29tbW9uX3Bvc2l0aW9uX3RvX2NsaXBzcGFjZShwb3NpdGlvbl9jb21tb25zcGFjZSArIG9mZnNldF9jb21tb25zcGFjZSk7XG4gICAgICBcbiAgREVDS0dMX0ZJTFRFUl9HTF9QT1NJVElPTihnbF9Qb3NpdGlvbiwgZ2VvbWV0cnkpO1xuICBcbiAgdmVjNCBmaWxsQ29sb3IgPSB2ZWM0KGluc3RhbmNlQ29sb3JzLnJnYiwgaW5zdGFuY2VDb2xvcnMuYSAqIG9wYWNpdHkpIC8gMjU1LjtcbiAgdkNvbG9yID0gbWl4KGZpbGxDb2xvciwgdmVjNChvdXRsaW5lQ29sb3IueHl6LCBvdXRsaW5lQ29sb3IudyAqIGZpbGxDb2xvci53KSwgbm9ybWFscy56KTtcbiAgREVDS0dMX0ZJTFRFUl9DT0xPUih2Q29sb3IsIGdlb21ldHJ5KTtcbn1cbmA7XG4iXX0=\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/FlowLinesLayerVertex.glsl.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/index.js": | |
/*!**********************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/index.js ***! | |
\**********************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _FlowLinesLayer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FlowLinesLayer */ \"./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/FlowLinesLayer.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_FlowLinesLayer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0xpbmVzTGF5ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsZUFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRmxvd0xpbmVzTGF5ZXIgZnJvbSAnLi9GbG93TGluZXNMYXllcic7XG5cbmV4cG9ydCBkZWZhdWx0IEZsb3dMaW5lc0xheWVyO1xuIl19\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/index.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/FlowmapLayer.js": | |
/*!**************************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/FlowmapLayer.js ***! | |
\**************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FlowmapLayer; });\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @deck.gl/core */ \"@deck.gl/core\");\n/* harmony import */ var _deck_gl_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_core__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _deck_gl_layers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @deck.gl/layers */ \"@deck.gl/layers\");\n/* harmony import */ var _deck_gl_layers__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_deck_gl_layers__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @flowmap.gl/data */ \"./node_modules/@flowmap.gl/data/dist/index.js\");\n/* harmony import */ var _AnimatedFlowLinesLayer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AnimatedFlowLinesLayer */ \"./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/index.js\");\n/* harmony import */ var _FlowCirclesLayer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./FlowCirclesLayer */ \"./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/index.js\");\n/* harmony import */ var _FlowLinesLayer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FlowLinesLayer */ \"./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/index.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./types */ \"./node_modules/@flowmap.gl/layers/dist/types.js\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n/*\n * Copyright 2022 FlowmapBlue\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\n\n\n\n\n\nconst PROPS_TO_CAUSE_LAYER_DATA_UPDATE = [\n 'filter',\n 'locationTotalsEnabled',\n 'locationLabelsEnabled',\n 'adaptiveScalesEnabled',\n 'animationEnabled',\n 'clusteringEnabled',\n 'clusteringLevel',\n 'fadeEnabled',\n 'fadeOpacityEnabled',\n 'clusteringAuto',\n 'darkMode',\n 'fadeAmount',\n 'colorScheme',\n 'highlightColor',\n 'maxTopFlowsDisplayNum',\n];\nvar HighlightType;\n(function (HighlightType) {\n HighlightType[\"LOCATION\"] = \"location\";\n HighlightType[\"FLOW\"] = \"flow\";\n})(HighlightType || (HighlightType = {}));\nclass FlowmapLayer extends _deck_gl_core__WEBPACK_IMPORTED_MODULE_0__[\"CompositeLayer\"] {\n constructor(props) {\n super(Object.assign(Object.assign({}, props), { onHover: (info, event) => {\n const startTime = Date.now();\n this.setState({\n highlightedObject: this._getHighlightedObject(info),\n lastHoverTime: startTime,\n });\n const { onHover } = props;\n if (onHover) {\n this._getFlowmapLayerPickingInfo(info).then((info) => {\n var _a, _b;\n if (((_b = (_a = this.state) === null || _a === void 0 ? void 0 : _a.lastHoverTime) !== null && _b !== void 0 ? _b : 0) <= startTime) {\n this.setState({ pickingInfo: info });\n onHover(info, event);\n }\n else {\n // Skipping, because this is not the latest hover event\n }\n });\n }\n }, onClick: (info, event) => {\n const { onClick } = props;\n const startTime = Date.now();\n this.setState({\n lastClickTime: startTime,\n });\n if (onClick) {\n this._getFlowmapLayerPickingInfo(info).then((info) => {\n var _a, _b;\n if (((_b = (_a = this.state) === null || _a === void 0 ? void 0 : _a.lastClickTime) !== null && _b !== void 0 ? _b : 0) <= startTime) {\n this.setState({ pickingInfo: info });\n if (info) {\n onClick(info, event);\n }\n }\n else {\n // Skipping, because this is not the latest hover event\n }\n });\n }\n } }));\n }\n initializeState() {\n this.state = {\n accessors: new _flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"FlowmapAggregateAccessors\"](this.props),\n dataProvider: this._getOrMakeDataProvider(),\n layersData: undefined,\n highlightedObject: undefined,\n pickingInfo: undefined,\n lastHoverTime: undefined,\n lastClickTime: undefined,\n };\n }\n getPickingInfo({ info }) {\n var _a, _b;\n // This is for onHover event handlers set on the <DeckGL> component\n if (!info.object) {\n const object = (_b = (_a = this.state) === null || _a === void 0 ? void 0 : _a.pickingInfo) === null || _b === void 0 ? void 0 : _b.object;\n if (object) {\n return Object.assign(Object.assign({}, info), { object, picked: true });\n }\n }\n return info;\n }\n // private _updateAccessors() {\n // this.state?.dataProvider?.setAccessors(this.props);\n // this.setState({accessors: new FlowmapAggregateAccessors(this.props)});\n // }\n _getOrMakeDataProvider() {\n const { data, dataProvider } = this.props;\n if (Object(_flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"isFlowmapDataProvider\"])(dataProvider)) {\n return dataProvider;\n }\n else if (Object(_flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"isFlowmapData\"])(data)) {\n const dataProvider = new _flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"LocalFlowmapDataProvider\"](this.props);\n dataProvider.setFlowmapData(data);\n return dataProvider;\n }\n throw new Error('FlowmapLayer: data must be a FlowmapDataProvider or FlowmapData');\n }\n _updateDataProvider() {\n this.setState({ dataProvider: this._getOrMakeDataProvider() });\n }\n shouldUpdateState(params) {\n const { changeFlags } = params;\n // if (this._viewportChanged()) {\n // return true;\n // }\n if (changeFlags.viewportChanged) {\n return true;\n }\n return super.shouldUpdateState(params);\n // TODO: be smarter on when to update\n // (e.g. ignore viewport changes when adaptiveScalesEnabled and clustering are false)\n }\n updateState({ oldProps, props, changeFlags }) {\n if (changeFlags.propsChanged) {\n // this._updateAccessors();\n }\n if (changeFlags.dataChanged) {\n this._updateDataProvider();\n }\n if (changeFlags.viewportChanged || changeFlags.dataChanged) {\n this.setState({ highlightedObject: undefined });\n }\n if (changeFlags.viewportChanged ||\n changeFlags.dataChanged ||\n (changeFlags.propsChanged &&\n PROPS_TO_CAUSE_LAYER_DATA_UPDATE.some((prop) => oldProps[prop] !== props[prop]))) {\n const { dataProvider } = this.state || {};\n if (dataProvider) {\n dataProvider.setFlowmapState(this._getFlowmapState());\n dataProvider.updateLayersData((layersData) => {\n this.setState({ layersData, highlightedObject: undefined });\n }, changeFlags);\n }\n }\n }\n _getSettingsState() {\n const { locationTotalsEnabled, locationLabelsEnabled, adaptiveScalesEnabled, animationEnabled, clusteringEnabled, clusteringLevel, fadeEnabled, fadeOpacityEnabled, clusteringAuto, darkMode, fadeAmount, colorScheme, highlightColor, maxTopFlowsDisplayNum, } = this.props;\n return {\n locationTotalsEnabled,\n locationLabelsEnabled,\n adaptiveScalesEnabled,\n animationEnabled,\n clusteringEnabled,\n clusteringLevel,\n fadeEnabled,\n fadeOpacityEnabled,\n clusteringAuto,\n darkMode,\n fadeAmount,\n colorScheme,\n highlightColor,\n maxTopFlowsDisplayNum,\n };\n }\n _getFlowmapState() {\n return {\n viewport: pickViewportProps(this.context.viewport),\n filter: this.props.filter,\n settings: this._getSettingsState(),\n };\n }\n _getFlowmapLayerPickingInfo(info) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const { index, sourceLayer } = info;\n const { dataProvider, accessors } = this.state || {};\n if (!dataProvider || !accessors) {\n return undefined;\n }\n const commonInfo = Object.assign(Object.assign({}, info), { picked: info.picked, layer: info.layer, index: info.index, x: info.x, y: info.y, coordinate: info.coordinate, event: info.event });\n if (sourceLayer instanceof _FlowLinesLayer__WEBPACK_IMPORTED_MODULE_5__[\"default\"] ||\n sourceLayer instanceof _AnimatedFlowLinesLayer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n const flow = index === -1 ? undefined : yield dataProvider.getFlowByIndex(index);\n if (flow) {\n const origin = yield dataProvider.getLocationById(accessors.getFlowOriginId(flow));\n const dest = yield dataProvider.getLocationById(accessors.getFlowDestId(flow));\n if (origin && dest) {\n return Object.assign(Object.assign({}, commonInfo), { object: {\n type: _types__WEBPACK_IMPORTED_MODULE_6__[\"PickingType\"].FLOW,\n flow,\n origin: origin,\n dest: dest,\n count: accessors.getFlowMagnitude(flow),\n } });\n }\n }\n }\n else if (sourceLayer instanceof _FlowCirclesLayer__WEBPACK_IMPORTED_MODULE_4__[\"default\"]) {\n const location = index === -1 ? undefined : yield dataProvider.getLocationByIndex(index);\n if (location) {\n const id = accessors.getLocationId(location);\n const name = accessors.getLocationName(location);\n const totals = yield dataProvider.getTotalsForLocation(id);\n const { circleAttributes } = ((_a = this.state) === null || _a === void 0 ? void 0 : _a.layersData) || {};\n if (totals && circleAttributes) {\n const circleRadius = Object(_flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"getOuterCircleRadiusByIndex\"])(circleAttributes, info.index);\n return Object.assign(Object.assign({}, commonInfo), { object: {\n type: _types__WEBPACK_IMPORTED_MODULE_6__[\"PickingType\"].LOCATION,\n location,\n id,\n name,\n totals,\n circleRadius: circleRadius,\n } });\n }\n }\n }\n return undefined;\n });\n }\n _getHighlightedObject(info) {\n var _a, _b;\n const { index, sourceLayer } = info;\n if (index < 0)\n return undefined;\n if (sourceLayer instanceof _FlowLinesLayer__WEBPACK_IMPORTED_MODULE_5__[\"default\"] ||\n sourceLayer instanceof _AnimatedFlowLinesLayer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n const { lineAttributes } = ((_a = this.state) === null || _a === void 0 ? void 0 : _a.layersData) || {};\n if (lineAttributes) {\n let attrs = Object(_flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"getFlowLineAttributesByIndex\"])(lineAttributes, index);\n if (this.props.fadeOpacityEnabled) {\n attrs = Object.assign(Object.assign({}, attrs), { attributes: Object.assign(Object.assign({}, attrs.attributes), { getColor: Object.assign(Object.assign({}, attrs.attributes.getColor), { value: new Uint8Array([\n ...attrs.attributes.getColor.value.slice(0, 3),\n 255, // the highlight color should be always opaque\n ]) }) }) });\n }\n return {\n type: HighlightType.FLOW,\n lineAttributes: attrs,\n };\n }\n }\n else if (sourceLayer instanceof _FlowCirclesLayer__WEBPACK_IMPORTED_MODULE_4__[\"default\"]) {\n const { circleAttributes } = ((_b = this.state) === null || _b === void 0 ? void 0 : _b.layersData) || {};\n if (circleAttributes) {\n return {\n type: HighlightType.LOCATION,\n coords: Object(_flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"getLocationCoordsByIndex\"])(circleAttributes, index),\n radius: Object(_flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"getOuterCircleRadiusByIndex\"])(circleAttributes, index),\n };\n }\n }\n return undefined;\n }\n renderLayers() {\n var _a;\n const layers = [];\n if ((_a = this.state) === null || _a === void 0 ? void 0 : _a.layersData) {\n const { layersData, highlightedObject } = this.state;\n const { circleAttributes, lineAttributes, locationLabels } = layersData || {};\n if (circleAttributes && lineAttributes) {\n const flowmapColors = Object(_flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"getFlowmapColors\"])(this._getSettingsState());\n const outlineColor = Object(_flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"colorAsRgba\"])(flowmapColors.outlineColor || (this.props.darkMode ? '#000' : '#fff'));\n const commonLineLayerProps = {\n data: lineAttributes,\n parameters: Object.assign(Object.assign({}, this.props.parameters), { \n // prevent z-fighting at non-zero bearing/pitch\n depthTest: false }),\n };\n if (this.props.animationEnabled) {\n layers.push(\n // @ts-ignore\n new _AnimatedFlowLinesLayer__WEBPACK_IMPORTED_MODULE_3__[\"default\"](Object.assign({}, this.getSubLayerProps(Object.assign(Object.assign({}, commonLineLayerProps), { id: 'animated-flow-lines', drawOutline: false, thicknessUnit: 20 })))));\n }\n else {\n layers.push(new _FlowLinesLayer__WEBPACK_IMPORTED_MODULE_5__[\"default\"](Object.assign({}, this.getSubLayerProps(Object.assign(Object.assign({}, commonLineLayerProps), { id: 'flow-lines', drawOutline: true, outlineColor: outlineColor })))));\n }\n layers.push(new _FlowCirclesLayer__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this.getSubLayerProps({\n id: 'circles',\n data: circleAttributes,\n emptyColor: this.props.darkMode\n ? [0, 0, 0, 255]\n : [255, 255, 255, 255],\n outlineEmptyMix: 0.4,\n })));\n if (highlightedObject) {\n switch (highlightedObject.type) {\n case HighlightType.LOCATION:\n layers.push(new _deck_gl_layers__WEBPACK_IMPORTED_MODULE_1__[\"ScatterplotLayer\"](Object.assign({}, this.getSubLayerProps({\n id: 'location-highlight',\n data: [highlightedObject],\n pickable: false,\n antialiasing: true,\n stroked: true,\n filled: false,\n lineWidthUnits: 'pixels',\n getLineWidth: 2,\n radiusUnits: 'pixels',\n getRadius: (d) => d.radius,\n getLineColor: Object(_flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"colorAsRgba\"])(this.props.highlightColor),\n getPosition: (d) => d.coords,\n }))));\n break;\n case HighlightType.FLOW:\n layers.push(new _FlowLinesLayer__WEBPACK_IMPORTED_MODULE_5__[\"default\"](Object.assign({}, this.getSubLayerProps({\n id: 'flow-highlight',\n data: highlightedObject.lineAttributes,\n drawOutline: true,\n pickable: false,\n outlineColor: Object(_flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"colorAsRgba\"])(this.props.highlightColor),\n outlineThickness: 1,\n parameters: {\n depthTest: false,\n },\n }))));\n break;\n }\n }\n }\n if (locationLabels) {\n layers.push(new _deck_gl_layers__WEBPACK_IMPORTED_MODULE_1__[\"TextLayer\"](this.getSubLayerProps({\n id: 'location-labels',\n data: locationLabels,\n maxWidth: 1000,\n pickable: false,\n fontFamily: 'Helvetica',\n getPixelOffset: (d, { index }) => {\n const r = Object(_flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"getOuterCircleRadiusByIndex\"])(circleAttributes, index);\n return [0, r + 5];\n },\n getPosition: (d, { index }) => {\n const pos = Object(_flowmap_gl_data__WEBPACK_IMPORTED_MODULE_2__[\"getLocationCoordsByIndex\"])(circleAttributes, index);\n return pos;\n },\n getText: (d) => d,\n getSize: 10,\n getColor: [255, 255, 255, 255],\n getAngle: 0,\n getTextAnchor: 'middle',\n getAlignmentBaseline: 'top',\n })));\n }\n }\n return layers;\n }\n}\nFlowmapLayer.defaultProps = {\n darkMode: true,\n fadeAmount: 50,\n locationTotalsEnabled: true,\n locationLabelsEnabled: false,\n animationEnabled: false,\n clusteringEnabled: true,\n fadeEnabled: true,\n fadeOpacityEnabled: false,\n clusteringAuto: true,\n clusteringLevel: undefined,\n adaptiveScalesEnabled: true,\n colorScheme: 'Teal',\n highlightColor: 'orange',\n maxTopFlowsDisplayNum: 5000,\n};\nfunction pickViewportProps(viewport) {\n const { width, height, longitude, latitude, zoom, pitch, bearing } = viewport;\n return {\n width,\n height,\n longitude,\n latitude,\n zoom,\n pitch,\n bearing,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd21hcExheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0Zsb3dtYXBMYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQ0wsV0FBVyxFQUdYLHlCQUF5QixFQUl6Qiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QiwyQkFBMkIsRUFDM0IsYUFBYSxFQUNiLHFCQUFxQixFQUVyQix3QkFBd0IsR0FFekIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLHNCQUFzQixNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sZ0JBQWdCLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUlMLFdBQVcsR0FDWixNQUFNLFNBQVMsQ0FBQztBQTRCakIsTUFBTSxnQ0FBZ0MsR0FBYTtJQUNqRCxRQUFRO0lBQ1IsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsYUFBYTtJQUNiLG9CQUFvQjtJQUNwQixnQkFBZ0I7SUFDaEIsVUFBVTtJQUNWLFlBQVk7SUFDWixhQUFhO0lBQ2IsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtDQUN4QixDQUFDO0FBRUYsSUFBSyxhQUdKO0FBSEQsV0FBSyxhQUFhO0lBQ2hCLHNDQUFxQixDQUFBO0lBQ3JCLDhCQUFhLENBQUE7QUFDZixDQUFDLEVBSEksYUFBYSxLQUFiLGFBQWEsUUFHakI7QUEyQkQsTUFBTSxDQUFDLE9BQU8sT0FBTyxZQUFtQixTQUFRLGNBQWM7SUFtQjVELFlBQW1C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SUFDNUIsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGtCQUFrQixFQUFFLEtBQUs7SUFDekIsY0FBYyxFQUFFLElBQUk7SUFDcEIsZUFBZSxFQUFFLFNBQVM7SUFDMUIscUJBQXFCLEVBQUUsSUFBSTtJQUMzQixXQUFXLEVBQUUsTUFBTTtJQUNuQixjQUFjLEVBQUUsUUFBUTtJQUN4QixxQkFBcUIsRUFBRSxJQUFJO0NBQzVCLENBQUM7QUFpYkosU0FBUyxpQkFBaUIsQ0FBQyxRQUE2QjtJQUN0RCxNQUFNLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzVFLE9BQU87UUFDTCxLQUFLO1FBQ0wsTUFBTTtRQUNOLFNBQVM7UUFDVCxRQUFRO1FBQ1IsSUFBSTtRQUNKLEtBQUs7UUFDTCxPQUFPO0tBQ1IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjIgRmxvd21hcEJsdWVcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cbmltcG9ydCB7Q29tcG9zaXRlTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtTY2F0dGVycGxvdExheWVyLCBUZXh0TGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge1xuICBjb2xvckFzUmdiYSxcbiAgRmlsdGVyU3RhdGUsXG4gIEZsb3dMaW5lc0xheWVyQXR0cmlidXRlcyxcbiAgRmxvd21hcEFnZ3JlZ2F0ZUFjY2Vzc29ycyxcbiAgRmxvd21hcERhdGEsXG4gIEZsb3dtYXBEYXRhQWNjZXNzb3JzLFxuICBGbG93bWFwRGF0YVByb3ZpZGVyLFxuICBnZXRGbG93TGluZUF0dHJpYnV0ZXNCeUluZGV4LFxuICBnZXRGbG93bWFwQ29sb3JzLFxuICBnZXRMb2NhdGlvbkNvb3Jkc0J5SW5kZXgsXG4gIGdldE91dGVyQ2lyY2xlUmFkaXVzQnlJbmRleCxcbiAgaXNGbG93bWFwRGF0YSxcbiAgaXNGbG93bWFwRGF0YVByb3ZpZGVyLFxuICBMYXllcnNEYXRhLFxuICBMb2NhbEZsb3dtYXBEYXRhUHJvdmlkZXIsXG4gIFZpZXdwb3J0UHJvcHMsXG59IGZyb20gJ0BmbG93bWFwLmdsL2RhdGEnO1xuaW1wb3J0IEFuaW1hdGVkRmxvd0xpbmVzTGF5ZXIgZnJvbSAnLi9BbmltYXRlZEZsb3dMaW5lc0xheWVyJztcbmltcG9ydCBGbG93Q2lyY2xlc0xheWVyIGZyb20gJy4vRmxvd0NpcmNsZXNMYXllcic7XG5pbXBvcnQgRmxvd0xpbmVzTGF5ZXIgZnJvbSAnLi9GbG93TGluZXNMYXllcic7XG5pbXBvcnQge1xuICBGbG93bWFwTGF5ZXJQaWNraW5nSW5mbyxcbiAgTGF5ZXJQcm9wcyxcbiAgUGlja2luZ0luZm8sXG4gIFBpY2tpbmdUeXBlLFxufSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRmxvd21hcExheWVyUHJvcHM8TCwgRj4gPSB7XG4gIGRhdGE/OiBGbG93bWFwRGF0YTxMLCBGPjtcbiAgZGF0YVByb3ZpZGVyPzogRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPjtcbiAgZmlsdGVyPzogRmlsdGVyU3RhdGU7XG4gIGxvY2F0aW9uVG90YWxzRW5hYmxlZD86IGJvb2xlYW47XG4gIGxvY2F0aW9uTGFiZWxzRW5hYmxlZD86IGJvb2xlYW47XG4gIGFkYXB0aXZlU2NhbGVzRW5hYmxlZD86IGJvb2xlYW47XG4gIGFuaW1hdGlvbkVuYWJsZWQ/OiBib29sZWFuO1xuICBjbHVzdGVyaW5nRW5hYmxlZD86IGJvb2xlYW47XG4gIGNsdXN0ZXJpbmdMZXZlbD86IG51bWJlcjtcbiAgZmFkZUVuYWJsZWQ/OiBib29sZWFuO1xuICBmYWRlT3BhY2l0eUVuYWJsZWQ/OiBib29sZWFuO1xuICBjbHVzdGVyaW5nQXV0bz86IGJvb2xlYW47XG4gIGRhcmtNb2RlPzogYm9vbGVhbjtcbiAgZmFkZUFtb3VudD86IG51bWJlcjtcbiAgY29sb3JTY2hlbWU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgaGlnaGxpZ2h0Q29sb3I/OiBzdHJpbmcgfCBudW1iZXJbXTtcbiAgbWF4VG9wRmxvd3NEaXNwbGF5TnVtPzogbnVtYmVyO1xuICBvbkhvdmVyPzogKFxuICAgIGluZm86IEZsb3dtYXBMYXllclBpY2tpbmdJbmZvPEwsIEY+IHwgdW5kZWZpbmVkLFxuICAgIGV2ZW50OiBTb3VyY2VFdmVudCxcbiAgKSA9PiB2b2lkO1xuICBvbkNsaWNrPzogKGluZm86IEZsb3dtYXBMYXllclBpY2tpbmdJbmZvPEwsIEY+LCBldmVudDogU291cmNlRXZlbnQpID0+IHZvaWQ7XG59ICYgUGFydGlhbDxGbG93bWFwRGF0YUFjY2Vzc29yczxMLCBGPj4gJlxuICBMYXllclByb3BzO1xuXG5jb25zdCBQUk9QU19UT19DQVVTRV9MQVlFUl9EQVRBX1VQREFURTogc3RyaW5nW10gPSBbXG4gICdmaWx0ZXInLFxuICAnbG9jYXRpb25Ub3RhbHNFbmFibGVkJyxcbiAgJ2xvY2F0aW9uTGFiZWxzRW5hYmxlZCcsXG4gICdhZGFwdGl2ZVNjYWxlc0VuYWJsZWQnLFxuICAnYW5pbWF0aW9uRW5hYmxlZCcsXG4gICdjbHVzdGVyaW5nRW5hYmxlZCcsXG4gICdjbHVzdGVyaW5nTGV2ZWwnLFxuICAnZmFkZUVuYWJsZWQnLFxuICAnZmFkZU9wYWNpdHlFbmFibGVkJyxcbiAgJ2NsdXN0ZXJpbmdBdXRvJyxcbiAgJ2RhcmtNb2RlJyxcbiAgJ2ZhZGVBbW91bnQnLFxuICAnY29sb3JTY2hlbWUnLFxuICAnaGlnaGxpZ2h0Q29sb3InLFxuICAnbWF4VG9wRmxvd3NEaXNwbGF5TnVtJyxcbl07XG5cbmVudW0gSGlnaGxpZ2h0VHlwZSB7XG4gIExPQ0FUSU9OID0gJ2xvY2F0aW9uJyxcbiAgRkxPVyA9ICdmbG93Jyxcbn1cblxudHlwZSBIaWdobGlnaHRlZExvY2F0aW9uT2JqZWN0ID0ge1xuICB0eXBlOiBIaWdobGlnaHRUeXBlLkxPQ0FUSU9OO1xuICBjb29yZHM6IFtudW1iZXIsIG51bWJlcl07XG4gIHJhZGl1czogbnVtYmVyO1xufTtcblxudHlwZSBIaWdobGlnaHRlZEZsb3dPYmplY3QgPSB7XG4gIHR5cGU6IEhpZ2hsaWdodFR5cGUuRkxPVztcbiAgbGluZUF0dHJpYnV0ZXM6IEZsb3dMaW5lc0xheWVyQXR0cmlidXRlcztcbn07XG5cbnR5cGUgSGlnaGxpZ2h0ZWRPYmplY3QgPSBIaWdobGlnaHRlZExvY2F0aW9uT2JqZWN0IHwgSGlnaGxpZ2h0ZWRGbG93T2JqZWN0O1xuXG50eXBlIFN0YXRlPEwsIEY+ID0ge1xuICBhY2Nlc3NvcnM6IEZsb3dtYXBBZ2dyZWdhdGVBY2Nlc3NvcnM8TCwgRj47XG4gIGRhdGFQcm92aWRlcjogRmxvd21hcERhdGFQcm92aWRlcjxMLCBGPjtcbiAgbGF5ZXJzRGF0YTogTGF5ZXJzRGF0YSB8IHVuZGVmaW5lZDtcbiAgaGlnaGxpZ2h0ZWRPYmplY3Q6IEhpZ2hsaWdodGVkT2JqZWN0IHwgdW5kZWZpbmVkO1xuICBwaWNraW5nSW5mbzogRmxvd21hcExheWVyUGlja2luZ0luZm88TCwgRj4gfCB1bmRlZmluZWQ7XG4gIGxhc3RIb3ZlclRpbWU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgbGFzdENsaWNrVGltZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgU291cmNlRXZlbnQgPSB7c3JjRXZlbnQ6IE1vdXNlRXZlbnR9O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGbG93bWFwTGF5ZXI8TCwgRj4gZXh0ZW5kcyBDb21wb3NpdGVMYXllciB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgZGFya01vZGU6IHRydWUsXG4gICAgZmFkZUFtb3VudDogNTAsXG4gICAgbG9jYXRpb25Ub3RhbHNFbmFibGVkOiB0cnVlLFxuICAgIGxvY2F0aW9uTGFiZWxzRW5hYmxlZDogZmFsc2UsXG4gICAgYW5pbWF0aW9uRW5hYmxlZDogZmFsc2UsXG4gICAgY2x1c3RlcmluZ0VuYWJsZWQ6IHRydWUsXG4gICAgZmFkZUVuYWJsZWQ6IHRydWUsXG4gICAgZmFkZU9wYWNpdHlFbmFibGVkOiBmYWxzZSxcbiAgICBjbHVzdGVyaW5nQXV0bzogdHJ1ZSxcbiAgICBjbHVzdGVyaW5nTGV2ZWw6IHVuZGVmaW5lZCxcbiAgICBhZGFwdGl2ZVNjYWxlc0VuYWJsZWQ6IHRydWUsXG4gICAgY29sb3JTY2hlbWU6ICdUZWFsJyxcbiAgICBoaWdobGlnaHRDb2xvcjogJ29yYW5nZScsXG4gICAgbWF4VG9wRmxvd3NEaXNwbGF5TnVtOiA1MDAwLFxuICB9O1xuICBzdGF0ZTogU3RhdGU8TCwgRj4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBGbG93bWFwTGF5ZXJQcm9wczxMLCBGPikge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgb25Ib3ZlcjogKGluZm86IFBpY2tpbmdJbmZvPGFueT4sIGV2ZW50OiBTb3VyY2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBoaWdobGlnaHRlZE9iamVjdDogdGhpcy5fZ2V0SGlnaGxpZ2h0ZWRPYmplY3QoaW5mbyksXG4gICAgICAgICAgbGFzdEhvdmVyVGltZTogc3RhcnRUaW1lLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB7b25Ib3Zlcn0gPSBwcm9wcztcbiAgICAgICAgaWYgKG9uSG92ZXIpIHtcbiAgICAgICAgICB0aGlzLl9nZXRGbG93bWFwTGF5ZXJQaWNraW5nSW5mbyhpbmZvKS50aGVuKChpbmZvKSA9PiB7XG4gICAgICAgICAgICBpZiAoKHRoaXMuc3RhdGU/Lmxhc3RIb3ZlclRpbWUgPz8gMCkgPD0gc3RhcnRUaW1lKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3BpY2tpbmdJbmZvOiBpbmZvfSk7XG4gICAgICAgICAgICAgIG9uSG92ZXIoaW5mbywgZXZlbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gU2tpcHBpbmcsIGJlY2F1c2UgdGhpcyBpcyBub3QgdGhlIGxhdGVzdCBob3ZlciBldmVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb25DbGljazogKGluZm86IFBpY2tpbmdJbmZvPGFueT4sIGV2ZW50OiBTb3VyY2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB7b25DbGlja30gPSBwcm9wcztcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgbGFzdENsaWNrVGltZTogc3RhcnRUaW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgICB0aGlzLl9nZXRGbG93bWFwTGF5ZXJQaWNraW5nSW5mbyhpbmZvKS50aGVuKChpbmZvKSA9PiB7XG4gICAgICAgICAgICBpZiAoKHRoaXMuc3RhdGU/Lmxhc3RDbGlja1RpbWUgPz8gMCkgPD0gc3RhcnRUaW1lKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3BpY2tpbmdJbmZvOiBpbmZvfSk7XG4gICAgICAgICAgICAgIGlmIChpbmZvKSB7XG4gICAgICAgICAgICAgICAgb25DbGljayhpbmZvLCBldmVudCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFNraXBwaW5nLCBiZWNhdXNlIHRoaXMgaXMgbm90IHRoZSBsYXRlc3QgaG92ZXIgZXZlbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgYWNjZXNzb3JzOiBuZXcgRmxvd21hcEFnZ3JlZ2F0ZUFjY2Vzc29yczxMLCBGPih0aGlzLnByb3BzKSxcbiAgICAgIGRhdGFQcm92aWRlcjogdGhpcy5fZ2V0T3JNYWtlRGF0YVByb3ZpZGVyKCksXG4gICAgICBsYXllcnNEYXRhOiB1bmRlZmluZWQsXG4gICAgICBoaWdobGlnaHRlZE9iamVjdDogdW5kZWZpbmVkLFxuICAgICAgcGlja2luZ0luZm86IHVuZGVmaW5lZCxcbiAgICAgIGxhc3RIb3ZlclRpbWU6IHVuZGVmaW5lZCxcbiAgICAgIGxhc3RDbGlja1RpbWU6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0UGlja2luZ0luZm8oe2luZm99OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgLy8gVGhpcyBpcyBmb3Igb25Ib3ZlciBldmVudCBoYW5kbGVycyBzZXQgb24gdGhlIDxEZWNrR0w+IGNvbXBvbmVudFxuICAgIGlmICghaW5mby5vYmplY3QpIHtcbiAgICAgIGNvbnN0IG9iamVjdCA9IHRoaXMuc3RhdGU/LnBpY2tpbmdJbmZvPy5vYmplY3Q7XG4gICAgICBpZiAob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uaW5mbyxcbiAgICAgICAgICBvYmplY3QsXG4gICAgICAgICAgcGlja2VkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5mbztcbiAgfVxuXG4gIC8vIHByaXZhdGUgX3VwZGF0ZUFjY2Vzc29ycygpIHtcbiAgLy8gICB0aGlzLnN0YXRlPy5kYXRhUHJvdmlkZXI/LnNldEFjY2Vzc29ycyh0aGlzLnByb3BzKTtcbiAgLy8gICB0aGlzLnNldFN0YXRlKHthY2Nlc3NvcnM6IG5ldyBGbG93bWFwQWdncmVnYXRlQWNjZXNzb3JzKHRoaXMucHJvcHMpfSk7XG4gIC8vIH1cblxuICBwcml2YXRlIF9nZXRPck1ha2VEYXRhUHJvdmlkZXIoKSB7XG4gICAgY29uc3Qge2RhdGEsIGRhdGFQcm92aWRlcn0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChpc0Zsb3dtYXBEYXRhUHJvdmlkZXI8TCwgRj4oZGF0YVByb3ZpZGVyKSkge1xuICAgICAgcmV0dXJuIGRhdGFQcm92aWRlcjtcbiAgICB9IGVsc2UgaWYgKGlzRmxvd21hcERhdGE8TCwgRj4oZGF0YSkpIHtcbiAgICAgIGNvbnN0IGRhdGFQcm92aWRlciA9IG5ldyBMb2NhbEZsb3dtYXBEYXRhUHJvdmlkZXI8TCwgRj4odGhpcy5wcm9wcyk7XG4gICAgICBkYXRhUHJvdmlkZXIuc2V0Rmxvd21hcERhdGEoZGF0YSk7XG4gICAgICByZXR1cm4gZGF0YVByb3ZpZGVyO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnRmxvd21hcExheWVyOiBkYXRhIG11c3QgYmUgYSBGbG93bWFwRGF0YVByb3ZpZGVyIG9yIEZsb3dtYXBEYXRhJyxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRGF0YVByb3ZpZGVyKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe2RhdGFQcm92aWRlcjogdGhpcy5fZ2V0T3JNYWtlRGF0YVByb3ZpZGVyKCl9KTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZVN0YXRlKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55Pik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHtjaGFuZ2VGbGFnc30gPSBwYXJhbXM7XG4gICAgLy8gaWYgKHRoaXMuX3ZpZXdwb3J0Q2hhbmdlZCgpKSB7XG4gICAgLy8gICByZXR1cm4gdHJ1ZTtcbiAgICAvLyB9XG4gICAgaWYgKGNoYW5nZUZsYWdzLnZpZXdwb3J0Q2hhbmdlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5zaG91bGRVcGRhdGVTdGF0ZShwYXJhbXMpO1xuICAgIC8vIFRPRE86IGJlIHNtYXJ0ZXIgb24gd2hlbiB0byB1cGRhdGVcbiAgICAvLyAoZS5nLiBpZ25vcmUgdmlld3BvcnQgY2hhbmdlcyB3aGVuIGFkYXB0aXZlU2NhbGVzRW5hYmxlZCBhbmQgY2x1c3RlcmluZyBhcmUgZmFsc2UpXG4gIH1cblxuICB1cGRhdGVTdGF0ZSh7b2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFnc306IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlRmxhZ3MucHJvcHNDaGFuZ2VkKSB7XG4gICAgICAvLyB0aGlzLl91cGRhdGVBY2Nlc3NvcnMoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZUZsYWdzLmRhdGFDaGFuZ2VkKSB7XG4gICAgICB0aGlzLl91cGRhdGVEYXRhUHJvdmlkZXIoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZUZsYWdzLnZpZXdwb3J0Q2hhbmdlZCB8fCBjaGFuZ2VGbGFncy5kYXRhQ2hhbmdlZCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7aGlnaGxpZ2h0ZWRPYmplY3Q6IHVuZGVmaW5lZH0pO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNoYW5nZUZsYWdzLnZpZXdwb3J0Q2hhbmdlZCB8fFxuICAgICAgY2hhbmdlRmxhZ3MuZGF0YUNoYW5nZWQgfHxcbiAgICAgIChjaGFuZ2VGbGFncy5wcm9wc0NoYW5nZWQgJiZcbiAgICAgICAgUFJPUFNfVE9fQ0FVU0VfTEFZRVJfREFUQV9VUERBVEUuc29tZShcbiAgICAgICAgICAocHJvcCkgPT4gb2xkUHJvcHNbcHJvcF0gIT09IHByb3BzW3Byb3BdLFxuICAgICAgICApKVxuICAgICkge1xuICAgICAgY29uc3Qge2RhdGFQcm92aWRlcn0gPSB0aGlzLnN0YXRlIHx8IHt9O1xuICAgICAgaWYgKGRhdGFQcm92aWRlcikge1xuICAgICAgICBkYXRhUHJvdmlkZXIuc2V0Rmxvd21hcFN0YXRlKHRoaXMuX2dldEZsb3dtYXBTdGF0ZSgpKTtcbiAgICAgICAgZGF0YVByb3ZpZGVyLnVwZGF0ZUxheWVyc0RhdGEoKGxheWVyc0RhdGE6IExheWVyc0RhdGEgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtsYXllcnNEYXRhLCBoaWdobGlnaHRlZE9iamVjdDogdW5kZWZpbmVkfSk7XG4gICAgICAgIH0sIGNoYW5nZUZsYWdzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRTZXR0aW5nc1N0YXRlKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGxvY2F0aW9uVG90YWxzRW5hYmxlZCxcbiAgICAgIGxvY2F0aW9uTGFiZWxzRW5hYmxlZCxcbiAgICAgIGFkYXB0aXZlU2NhbGVzRW5hYmxlZCxcbiAgICAgIGFuaW1hdGlvbkVuYWJsZWQsXG4gICAgICBjbHVzdGVyaW5nRW5hYmxlZCxcbiAgICAgIGNsdXN0ZXJpbmdMZXZlbCxcbiAgICAgIGZhZGVFbmFibGVkLFxuICAgICAgZmFkZU9wYWNpdHlFbmFibGVkLFxuICAgICAgY2x1c3RlcmluZ0F1dG8sXG4gICAgICBkYXJrTW9kZSxcbiAgICAgIGZhZGVBbW91bnQsXG4gICAgICBjb2xvclNjaGVtZSxcbiAgICAgIGhpZ2hsaWdodENvbG9yLFxuICAgICAgbWF4VG9wRmxvd3NEaXNwbGF5TnVtLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiB7XG4gICAgICBsb2NhdGlvblRvdGFsc0VuYWJsZWQsXG4gICAgICBsb2NhdGlvbkxhYmVsc0VuYWJsZWQsXG4gICAgICBhZGFwdGl2ZVNjYWxlc0VuYWJsZWQsXG4gICAgICBhbmltYXRpb25FbmFibGVkLFxuICAgICAgY2x1c3RlcmluZ0VuYWJsZWQsXG4gICAgICBjbHVzdGVyaW5nTGV2ZWwsXG4gICAgICBmYWRlRW5hYmxlZCxcbiAgICAgIGZhZGVPcGFjaXR5RW5hYmxlZCxcbiAgICAgIGNsdXN0ZXJpbmdBdXRvLFxuICAgICAgZGFya01vZGUsXG4gICAgICBmYWRlQW1vdW50LFxuICAgICAgY29sb3JTY2hlbWUsXG4gICAgICBoaWdobGlnaHRDb2xvcixcbiAgICAgIG1heFRvcEZsb3dzRGlzcGxheU51bSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Rmxvd21hcFN0YXRlKCkge1xuICAgIHJldHVybiB7XG4gICAgICB2aWV3cG9ydDogcGlja1ZpZXdwb3J0UHJvcHModGhpcy5jb250ZXh0LnZpZXdwb3J0KSxcbiAgICAgIGZpbHRlcjogdGhpcy5wcm9wcy5maWx0ZXIsXG4gICAgICBzZXR0aW5nczogdGhpcy5fZ2V0U2V0dGluZ3NTdGF0ZSgpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9nZXRGbG93bWFwTGF5ZXJQaWNraW5nSW5mbyhcbiAgICBpbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApOiBQcm9taXNlPEZsb3dtYXBMYXllclBpY2tpbmdJbmZvPEwsIEY+IHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3Qge2luZGV4LCBzb3VyY2VMYXllcn0gPSBpbmZvO1xuICAgIGNvbnN0IHtkYXRhUHJvdmlkZXIsIGFjY2Vzc29yc30gPSB0aGlzLnN0YXRlIHx8IHt9O1xuICAgIGlmICghZGF0YVByb3ZpZGVyIHx8ICFhY2Nlc3NvcnMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGNvbW1vbkluZm8gPSB7XG4gICAgICAuLi5pbmZvLFxuICAgICAgcGlja2VkOiBpbmZvLnBpY2tlZCxcbiAgICAgIGxheWVyOiBpbmZvLmxheWVyLFxuICAgICAgaW5kZXg6IGluZm8uaW5kZXgsXG4gICAgICB4OiBpbmZvLngsXG4gICAgICB5OiBpbmZvLnksXG4gICAgICBjb29yZGluYXRlOiBpbmZvLmNvb3JkaW5hdGUsXG4gICAgICBldmVudDogaW5mby5ldmVudCxcbiAgICB9O1xuICAgIGlmIChcbiAgICAgIHNvdXJjZUxheWVyIGluc3RhbmNlb2YgRmxvd0xpbmVzTGF5ZXIgfHxcbiAgICAgIHNvdXJjZUxheWVyIGluc3RhbmNlb2YgQW5pbWF0ZWRGbG93TGluZXNMYXllclxuICAgICkge1xuICAgICAgY29uc3QgZmxvdyA9XG4gICAgICAgIGluZGV4ID09PSAtMSA/IHVuZGVmaW5lZCA6IGF3YWl0IGRhdGFQcm92aWRlci5nZXRGbG93QnlJbmRleChpbmRleCk7XG4gICAgICBpZiAoZmxvdykge1xuICAgICAgICBjb25zdCBvcmlnaW4gPSBhd2FpdCBkYXRhUHJvdmlkZXIuZ2V0TG9jYXRpb25CeUlkKFxuICAgICAgICAgIGFjY2Vzc29ycy5nZXRGbG93T3JpZ2luSWQoZmxvdyksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRlc3QgPSBhd2FpdCBkYXRhUHJvdmlkZXIuZ2V0TG9jYXRpb25CeUlkKFxuICAgICAgICAgIGFjY2Vzc29ycy5nZXRGbG93RGVzdElkKGZsb3cpLFxuICAgICAgICApO1xuICAgICAgICBpZiAob3JpZ2luICYmIGRlc3QpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29tbW9uSW5mbyxcbiAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICB0eXBlOiBQaWNraW5nVHlwZS5GTE9XLFxuICAgICAgICAgICAgICBmbG93LFxuICAgICAgICAgICAgICBvcmlnaW46IG9yaWdpbixcbiAgICAgICAgICAgICAgZGVzdDogZGVzdCxcbiAgICAgICAgICAgICAgY291bnQ6IGFjY2Vzc29ycy5nZXRGbG93TWFnbml0dWRlKGZsb3cpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzb3VyY2VMYXllciBpbnN0YW5jZW9mIEZsb3dDaXJjbGVzTGF5ZXIpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID1cbiAgICAgICAgaW5kZXggPT09IC0xID8gdW5kZWZpbmVkIDogYXdhaXQgZGF0YVByb3ZpZGVyLmdldExvY2F0aW9uQnlJbmRleChpbmRleCk7XG5cbiAgICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgICBjb25zdCBpZCA9IGFjY2Vzc29ycy5nZXRMb2NhdGlvbklkKGxvY2F0aW9uKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IGFjY2Vzc29ycy5nZXRMb2NhdGlvbk5hbWUobG9jYXRpb24pO1xuICAgICAgICBjb25zdCB0b3RhbHMgPSBhd2FpdCBkYXRhUHJvdmlkZXIuZ2V0VG90YWxzRm9yTG9jYXRpb24oaWQpO1xuICAgICAgICBjb25zdCB7Y2lyY2xlQXR0cmlidXRlc30gPSB0aGlzLnN0YXRlPy5sYXllcnNEYXRhIHx8IHt9O1xuICAgICAgICBpZiAodG90YWxzICYmIGNpcmNsZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICBjb25zdCBjaXJjbGVSYWRpdXMgPSBnZXRPdXRlckNpcmNsZVJhZGl1c0J5SW5kZXgoXG4gICAgICAgICAgICBjaXJjbGVBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgaW5mby5pbmRleCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb21tb25JbmZvLFxuICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgIHR5cGU6IFBpY2tpbmdUeXBlLkxPQ0FUSU9OLFxuICAgICAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHRvdGFscyxcbiAgICAgICAgICAgICAgY2lyY2xlUmFkaXVzOiBjaXJjbGVSYWRpdXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SGlnaGxpZ2h0ZWRPYmplY3QoXG4gICAgaW5mbzogUmVjb3JkPHN0cmluZywgYW55PixcbiAgKTogSGlnaGxpZ2h0ZWRPYmplY3QgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHtpbmRleCwgc291cmNlTGF5ZXJ9ID0gaW5mbztcbiAgICBpZiAoaW5kZXggPCAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChcbiAgICAgIHNvdXJjZUxheWVyIGluc3RhbmNlb2YgRmxvd0xpbmVzTGF5ZXIgfHxcbiAgICAgIHNvdXJjZUxheWVyIGluc3RhbmNlb2YgQW5pbWF0ZWRGbG93TGluZXNMYXllclxuICAgICkge1xuICAgICAgY29uc3Qge2xpbmVBdHRyaWJ1dGVzfSA9IHRoaXMuc3RhdGU/LmxheWVyc0RhdGEgfHwge307XG4gICAgICBpZiAobGluZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgbGV0IGF0dHJzID0gZ2V0Rmxvd0xpbmVBdHRyaWJ1dGVzQnlJbmRleChsaW5lQXR0cmlidXRlcywgaW5kZXgpO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5mYWRlT3BhY2l0eUVuYWJsZWQpIHtcbiAgICAgICAgICBhdHRycyA9IHtcbiAgICAgICAgICAgIC4uLmF0dHJzLFxuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAuLi5hdHRycy5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICBnZXRDb2xvcjoge1xuICAgICAgICAgICAgICAgIC4uLmF0dHJzLmF0dHJpYnV0ZXMuZ2V0Q29sb3IsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgICAgICAgICAgICAgIC4uLmF0dHJzLmF0dHJpYnV0ZXMuZ2V0Q29sb3IudmFsdWUuc2xpY2UoMCwgMyksXG4gICAgICAgICAgICAgICAgICAyNTUsIC8vIHRoZSBoaWdobGlnaHQgY29sb3Igc2hvdWxkIGJlIGFsd2F5cyBvcGFxdWVcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IEhpZ2hsaWdodFR5cGUuRkxPVyxcbiAgICAgICAgICBsaW5lQXR0cmlidXRlczogYXR0cnMsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzb3VyY2VMYXllciBpbnN0YW5jZW9mIEZsb3dDaXJjbGVzTGF5ZXIpIHtcbiAgICAgIGNvbnN0IHtjaXJjbGVBdHRyaWJ1dGVzfSA9IHRoaXMuc3RhdGU/LmxheWVyc0RhdGEgfHwge307XG4gICAgICBpZiAoY2lyY2xlQXR0cmlidXRlcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IEhpZ2hsaWdodFR5cGUuTE9DQVRJT04sXG4gICAgICAgICAgY29vcmRzOiBnZXRMb2NhdGlvbkNvb3Jkc0J5SW5kZXgoY2lyY2xlQXR0cmlidXRlcywgaW5kZXgpLFxuICAgICAgICAgIHJhZGl1czogZ2V0T3V0ZXJDaXJjbGVSYWRpdXNCeUluZGV4KGNpcmNsZUF0dHJpYnV0ZXMsIGluZGV4KSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJlbmRlckxheWVycygpOiBBcnJheTxhbnk+IHtcbiAgICBjb25zdCBsYXllcnMgPSBbXTtcbiAgICBpZiAodGhpcy5zdGF0ZT8ubGF5ZXJzRGF0YSkge1xuICAgICAgY29uc3Qge2xheWVyc0RhdGEsIGhpZ2hsaWdodGVkT2JqZWN0fSA9IHRoaXMuc3RhdGU7XG4gICAgICBjb25zdCB7Y2lyY2xlQXR0cmlidXRlcywgbGluZUF0dHJpYnV0ZXMsIGxvY2F0aW9uTGFiZWxzfSA9XG4gICAgICAgIGxheWVyc0RhdGEgfHwge307XG4gICAgICBpZiAoY2lyY2xlQXR0cmlidXRlcyAmJiBsaW5lQXR0cmlidXRlcykge1xuICAgICAgICBjb25zdCBmbG93bWFwQ29sb3JzID0gZ2V0Rmxvd21hcENvbG9ycyh0aGlzLl9nZXRTZXR0aW5nc1N0YXRlKCkpO1xuICAgICAgICBjb25zdCBvdXRsaW5lQ29sb3IgPSBjb2xvckFzUmdiYShcbiAgICAgICAgICBmbG93bWFwQ29sb3JzLm91dGxpbmVDb2xvciB8fCAodGhpcy5wcm9wcy5kYXJrTW9kZSA/ICcjMDAwJyA6ICcjZmZmJyksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNvbW1vbkxpbmVMYXllclByb3BzID0ge1xuICAgICAgICAgIGRhdGE6IGxpbmVBdHRyaWJ1dGVzLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIC4uLnRoaXMucHJvcHMucGFyYW1ldGVycyxcbiAgICAgICAgICAgIC8vIHByZXZlbnQgei1maWdodGluZyBhdCBub24temVybyBiZWFyaW5nL3BpdGNoXG4gICAgICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmFuaW1hdGlvbkVuYWJsZWQpIHtcbiAgICAgICAgICBsYXllcnMucHVzaChcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5ldyBBbmltYXRlZEZsb3dMaW5lc0xheWVyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICAgICAgICAuLi5jb21tb25MaW5lTGF5ZXJQcm9wcyxcbiAgICAgICAgICAgICAgICBpZDogJ2FuaW1hdGVkLWZsb3ctbGluZXMnLFxuICAgICAgICAgICAgICAgIGRyYXdPdXRsaW5lOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aGlja25lc3NVbml0OiAyMCxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxheWVycy5wdXNoKFxuICAgICAgICAgICAgbmV3IEZsb3dMaW5lc0xheWVyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICAgICAgICAuLi5jb21tb25MaW5lTGF5ZXJQcm9wcyxcbiAgICAgICAgICAgICAgICBpZDogJ2Zsb3ctbGluZXMnLFxuICAgICAgICAgICAgICAgIGRyYXdPdXRsaW5lOiB0cnVlLFxuICAgICAgICAgICAgICAgIG91dGxpbmVDb2xvcjogb3V0bGluZUNvbG9yLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IEZsb3dDaXJjbGVzTGF5ZXIoXG4gICAgICAgICAgICB0aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgICAgICBpZDogJ2NpcmNsZXMnLFxuICAgICAgICAgICAgICBkYXRhOiBjaXJjbGVBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICBlbXB0eUNvbG9yOiB0aGlzLnByb3BzLmRhcmtNb2RlXG4gICAgICAgICAgICAgICAgPyBbMCwgMCwgMCwgMjU1XVxuICAgICAgICAgICAgICAgIDogWzI1NSwgMjU1LCAyNTUsIDI1NV0sXG4gICAgICAgICAgICAgIG91dGxpbmVFbXB0eU1peDogMC40LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGhpZ2hsaWdodGVkT2JqZWN0KSB7XG4gICAgICAgICAgc3dpdGNoIChoaWdobGlnaHRlZE9iamVjdC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEhpZ2hsaWdodFR5cGUuTE9DQVRJT046XG4gICAgICAgICAgICAgIGxheWVycy5wdXNoKFxuICAgICAgICAgICAgICAgIG5ldyBTY2F0dGVycGxvdExheWVyKHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnbG9jYXRpb24taGlnaGxpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogW2hpZ2hsaWdodGVkT2JqZWN0XSxcbiAgICAgICAgICAgICAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBhbnRpYWxpYXNpbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGZpbGxlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGxpbmVXaWR0aFVuaXRzOiAncGl4ZWxzJyxcbiAgICAgICAgICAgICAgICAgICAgZ2V0TGluZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAgICAgICByYWRpdXNVbml0czogJ3BpeGVscycsXG4gICAgICAgICAgICAgICAgICAgIGdldFJhZGl1czogKGQ6IEhpZ2hsaWdodGVkTG9jYXRpb25PYmplY3QpID0+IGQucmFkaXVzLFxuICAgICAgICAgICAgICAgICAgICBnZXRMaW5lQ29sb3I6IGNvbG9yQXNSZ2JhKHRoaXMucHJvcHMuaGlnaGxpZ2h0Q29sb3IpLFxuICAgICAgICAgICAgICAgICAgICBnZXRQb3NpdGlvbjogKGQ6IEhpZ2hsaWdodGVkTG9jYXRpb25PYmplY3QpID0+IGQuY29vcmRzLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBIaWdobGlnaHRUeXBlLkZMT1c6XG4gICAgICAgICAgICAgIGxheWVycy5wdXNoKFxuICAgICAgICAgICAgICAgIG5ldyBGbG93TGluZXNMYXllcih7XG4gICAgICAgICAgICAgICAgICAuLi50aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICBpZDogJ2Zsb3ctaGlnaGxpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogaGlnaGxpZ2h0ZWRPYmplY3QubGluZUF0dHJpYnV0ZXMsXG4gICAgICAgICAgICAgICAgICAgIGRyYXdPdXRsaW5lOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBwaWNrYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG91dGxpbmVDb2xvcjogY29sb3JBc1JnYmEodGhpcy5wcm9wcy5oaWdobGlnaHRDb2xvciksXG4gICAgICAgICAgICAgICAgICAgIG91dGxpbmVUaGlja25lc3M6IDEsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxvY2F0aW9uTGFiZWxzKSB7XG4gICAgICAgIGxheWVycy5wdXNoKFxuICAgICAgICAgIG5ldyBUZXh0TGF5ZXIoXG4gICAgICAgICAgICB0aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgICAgICBpZDogJ2xvY2F0aW9uLWxhYmVscycsXG4gICAgICAgICAgICAgIGRhdGE6IGxvY2F0aW9uTGFiZWxzLFxuICAgICAgICAgICAgICBtYXhXaWR0aDogMTAwMCxcbiAgICAgICAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICBmb250RmFtaWx5OiAnSGVsdmV0aWNhJyxcbiAgICAgICAgICAgICAgZ2V0UGl4ZWxPZmZzZXQ6IChkOiBzdHJpbmcsIHtpbmRleH06IHtpbmRleDogbnVtYmVyfSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBnZXRPdXRlckNpcmNsZVJhZGl1c0J5SW5kZXgoY2lyY2xlQXR0cmlidXRlcywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMCwgciArIDVdO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBnZXRQb3NpdGlvbjogKGQ6IHN0cmluZywge2luZGV4fToge2luZGV4OiBudW1iZXJ9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9zID0gZ2V0TG9jYXRpb25Db29yZHNCeUluZGV4KGNpcmNsZUF0dHJpYnV0ZXMsIGluZGV4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcG9zO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBnZXRUZXh0OiAoZDogc3RyaW5nKSA9PiBkLFxuICAgICAgICAgICAgICBnZXRTaXplOiAxMCxcbiAgICAgICAgICAgICAgZ2V0Q29sb3I6IFsyNTUsIDI1NSwgMjU1LCAyNTVdLFxuICAgICAgICAgICAgICBnZXRBbmdsZTogMCxcbiAgICAgICAgICAgICAgZ2V0VGV4dEFuY2hvcjogJ21pZGRsZScsXG4gICAgICAgICAgICAgIGdldEFsaWdubWVudEJhc2VsaW5lOiAndG9wJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxheWVycztcbiAgfVxufVxuXG5mdW5jdGlvbiBwaWNrVmlld3BvcnRQcm9wcyh2aWV3cG9ydDogUmVjb3JkPHN0cmluZywgYW55Pik6IFZpZXdwb3J0UHJvcHMge1xuICBjb25zdCB7d2lkdGgsIGhlaWdodCwgbG9uZ2l0dWRlLCBsYXRpdHVkZSwgem9vbSwgcGl0Y2gsIGJlYXJpbmd9ID0gdmlld3BvcnQ7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIGxvbmdpdHVkZSxcbiAgICBsYXRpdHVkZSxcbiAgICB6b29tLFxuICAgIHBpdGNoLFxuICAgIGJlYXJpbmcsXG4gIH07XG59XG4iXX0=\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/FlowmapLayer.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/index.js": | |
/*!*******************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/index.js ***! | |
\*******************************************************/ | |
/*! exports provided: AnimatedFlowLinesLayer, FlowLinesLayer, FlowCirclesLayer, FlowmapLayer, PickingType */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AnimatedFlowLinesLayer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AnimatedFlowLinesLayer */ \"./node_modules/@flowmap.gl/layers/dist/AnimatedFlowLinesLayer/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnimatedFlowLinesLayer\", function() { return _AnimatedFlowLinesLayer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _FlowLinesLayer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FlowLinesLayer */ \"./node_modules/@flowmap.gl/layers/dist/FlowLinesLayer/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FlowLinesLayer\", function() { return _FlowLinesLayer__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _FlowCirclesLayer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FlowCirclesLayer */ \"./node_modules/@flowmap.gl/layers/dist/FlowCirclesLayer/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FlowCirclesLayer\", function() { return _FlowCirclesLayer__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _FlowmapLayer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./FlowmapLayer */ \"./node_modules/@flowmap.gl/layers/dist/FlowmapLayer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FlowmapLayer\", function() { return _FlowmapLayer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./types */ \"./node_modules/@flowmap.gl/layers/dist/types.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PickingType\", function() { return _types__WEBPACK_IMPORTED_MODULE_4__[\"PickingType\"]; });\n\n\n\n\n\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sSUFBSSxzQkFBc0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBQyxPQUFPLElBQUksY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDM0QsT0FBTyxFQUFDLE9BQU8sSUFBSSxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxPQUFPLElBQUksWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHdkQsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgQW5pbWF0ZWRGbG93TGluZXNMYXllcn0gZnJvbSAnLi9BbmltYXRlZEZsb3dMaW5lc0xheWVyJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBGbG93TGluZXNMYXllcn0gZnJvbSAnLi9GbG93TGluZXNMYXllcic7XG5leHBvcnQge2RlZmF1bHQgYXMgRmxvd0NpcmNsZXNMYXllcn0gZnJvbSAnLi9GbG93Q2lyY2xlc0xheWVyJztcbmV4cG9ydCB7ZGVmYXVsdCBhcyBGbG93bWFwTGF5ZXJ9IGZyb20gJy4vRmxvd21hcExheWVyJztcbmV4cG9ydCB0eXBlIHtGbG93bWFwTGF5ZXJQcm9wc30gZnJvbSAnLi9GbG93bWFwTGF5ZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbiJdfQ==\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/index.js?"); | |
/***/ }), | |
/***/ "./node_modules/@flowmap.gl/layers/dist/types.js": | |
/*!*******************************************************!*\ | |
!*** ./node_modules/@flowmap.gl/layers/dist/types.js ***! | |
\*******************************************************/ | |
/*! exports provided: PickingType */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PickingType\", function() { return PickingType; });\nvar PickingType;\n(function (PickingType) {\n PickingType[\"LOCATION\"] = \"location\";\n PickingType[\"FLOW\"] = \"flow\";\n // LOCATION_AREA = 'location-area',\n})(PickingType || (PickingType = {}));\n// import {FeatureCollection, GeometryObject} from 'geojson';\n// export type LocationProperties = Record<string, unknown>;\n// export type Locations =\n// | FeatureCollection<GeometryObject, LocationProperties>\n// | FlowLocation[];\n// export function isFeatureCollection(\n// locations: Locations,\n// ): locations is FeatureCollection<GeometryObject, LocationProperties> {\n// return (\n// (locations as FeatureCollection<GeometryObject, LocationProperties>)\n// .type === 'FeatureCollection'\n// );\n// }\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxDQUFOLElBQVksV0FJWDtBQUpELFdBQVksV0FBVztJQUNyQixvQ0FBcUIsQ0FBQTtJQUNyQiw0QkFBYSxDQUFBO0lBQ2IsbUNBQW1DO0FBQ3JDLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QjtBQThDRCw2REFBNkQ7QUFDN0QsNERBQTREO0FBRTVELDBCQUEwQjtBQUMxQiw0REFBNEQ7QUFDNUQsc0JBQXNCO0FBRXRCLHVDQUF1QztBQUN2QywwQkFBMEI7QUFDMUIsMEVBQTBFO0FBQzFFLGFBQWE7QUFDYiwyRUFBMkU7QUFDM0Usc0NBQXNDO0FBQ3RDLE9BQU87QUFDUCxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWdncmVnYXRlRmxvdyxcbiAgQ2x1c3RlcixcbiAgQ2x1c3Rlck5vZGUsXG4gIExvY2F0aW9uVG90YWxzLFxufSBmcm9tICdAZmxvd21hcC5nbC9kYXRhJztcblxuZXhwb3J0IHR5cGUgTGF5ZXJQcm9wcyA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgZW51bSBQaWNraW5nVHlwZSB7XG4gIExPQ0FUSU9OID0gJ2xvY2F0aW9uJyxcbiAgRkxPVyA9ICdmbG93JyxcbiAgLy8gTE9DQVRJT05fQVJFQSA9ICdsb2NhdGlvbi1hcmVhJyxcbn1cblxuZXhwb3J0IHR5cGUgRGVja0dMTGF5ZXIgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpY2tpbmdJbmZvPFQ+IHtcbiAgbGF5ZXI6IERlY2tHTExheWVyO1xuICBpbmRleDogbnVtYmVyO1xuICBwaWNrZWQ6IGJvb2xlYW47XG4gIG9iamVjdDogVCB8IHVuZGVmaW5lZDtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIGNvb3JkaW5hdGU6IFtudW1iZXIsIG51bWJlcl07XG4gIGV2ZW50OiBNb3VzZUV2ZW50IHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uUGlja2luZ0luZm9PYmplY3Q8TD4ge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICB0eXBlOiBQaWNraW5nVHlwZS5MT0NBVElPTjtcbiAgbG9jYXRpb246IEwgfCBDbHVzdGVyTm9kZTtcbiAgbmFtZTogc3RyaW5nO1xuICB0b3RhbHM6IExvY2F0aW9uVG90YWxzO1xuICBjaXJjbGVSYWRpdXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgTG9jYXRpb25QaWNraW5nSW5mbzxMPiA9IFBpY2tpbmdJbmZvPExvY2F0aW9uUGlja2luZ0luZm9PYmplY3Q8TD4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dQaWNraW5nSW5mb09iamVjdDxMLCBGPiB7XG4gIHR5cGU6IFBpY2tpbmdUeXBlLkZMT1c7XG4gIGZsb3c6IEYgfCBBZ2dyZWdhdGVGbG93O1xuICBvcmlnaW46IEwgfCBDbHVzdGVyTm9kZTtcbiAgZGVzdDogTCB8IENsdXN0ZXJOb2RlO1xuICBjb3VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBGbG93UGlja2luZ0luZm88TCwgRj4gPSBQaWNraW5nSW5mbzxGbG93UGlja2luZ0luZm9PYmplY3Q8TCwgRj4+O1xuXG4vLyBleHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQXJlYVBpY2tpbmdJbmZvIGV4dGVuZHMgUGlja2luZ0luZm88UGlja2luZ0luZm9EYXRhPiB7XG4vLyAgIHR5cGU6IFBpY2tpbmdUeXBlLkxPQ0FUSU9OX0FSRUE7XG4vLyAgIG9iamVjdDogRmxvd0xvY2F0aW9uO1xuLy8gfVxuXG5leHBvcnQgdHlwZSBGbG93bWFwTGF5ZXJQaWNraW5nSW5mbzxMLCBGPiA9XG4gIHwgTG9jYXRpb25QaWNraW5nSW5mbzxMPlxuICAvLyB8IExvY2F0aW9uQXJlYVBpY2tpbmdJbmZvXG4gIHwgRmxvd1BpY2tpbmdJbmZvPEwsIEY+O1xuXG4vLyBpbXBvcnQge0ZlYXR1cmVDb2xsZWN0aW9uLCBHZW9tZXRyeU9iamVjdH0gZnJvbSAnZ2VvanNvbic7XG4vLyBleHBvcnQgdHlwZSBMb2NhdGlvblByb3BlcnRpZXMgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLy8gZXhwb3J0IHR5cGUgTG9jYXRpb25zID1cbi8vICAgfCBGZWF0dXJlQ29sbGVjdGlvbjxHZW9tZXRyeU9iamVjdCwgTG9jYXRpb25Qcm9wZXJ0aWVzPlxuLy8gICB8IEZsb3dMb2NhdGlvbltdO1xuXG4vLyBleHBvcnQgZnVuY3Rpb24gaXNGZWF0dXJlQ29sbGVjdGlvbihcbi8vICAgbG9jYXRpb25zOiBMb2NhdGlvbnMsXG4vLyApOiBsb2NhdGlvbnMgaXMgRmVhdHVyZUNvbGxlY3Rpb248R2VvbWV0cnlPYmplY3QsIExvY2F0aW9uUHJvcGVydGllcz4ge1xuLy8gICByZXR1cm4gKFxuLy8gICAgIChsb2NhdGlvbnMgYXMgRmVhdHVyZUNvbGxlY3Rpb248R2VvbWV0cnlPYmplY3QsIExvY2F0aW9uUHJvcGVydGllcz4pXG4vLyAgICAgICAudHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJ1xuLy8gICApO1xuLy8gfVxuIl19\n\n//# sourceURL=webpack:///./node_modules/@flowmap.gl/layers/dist/types.js?"); | |
/***/ }), | |
/***/ "./node_modules/@luma.gl/constants/dist/esm/index.js": | |
/*!***********************************************************!*\ | |
!*** ./node_modules/@luma.gl/constants/dist/esm/index.js ***! | |
\***********************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n DEPTH_BUFFER_BIT: 0x00000100,\n STENCIL_BUFFER_BIT: 0x00000400,\n COLOR_BUFFER_BIT: 0x00004000,\n POINTS: 0x0000,\n LINES: 0x0001,\n LINE_LOOP: 0x0002,\n LINE_STRIP: 0x0003,\n TRIANGLES: 0x0004,\n TRIANGLE_STRIP: 0x0005,\n TRIANGLE_FAN: 0x0006,\n ZERO: 0,\n ONE: 1,\n SRC_COLOR: 0x0300,\n ONE_MINUS_SRC_COLOR: 0x0301,\n SRC_ALPHA: 0x0302,\n ONE_MINUS_SRC_ALPHA: 0x0303,\n DST_ALPHA: 0x0304,\n ONE_MINUS_DST_ALPHA: 0x0305,\n DST_COLOR: 0x0306,\n ONE_MINUS_DST_COLOR: 0x0307,\n SRC_ALPHA_SATURATE: 0x0308,\n CONSTANT_COLOR: 0x8001,\n ONE_MINUS_CONSTANT_COLOR: 0x8002,\n CONSTANT_ALPHA: 0x8003,\n ONE_MINUS_CONSTANT_ALPHA: 0x8004,\n FUNC_ADD: 0x8006,\n FUNC_SUBTRACT: 0x800a,\n FUNC_REVERSE_SUBTRACT: 0x800b,\n BLEND_EQUATION: 0x8009,\n BLEND_EQUATION_RGB: 0x8009,\n BLEND_EQUATION_ALPHA: 0x883d,\n BLEND_DST_RGB: 0x80c8,\n BLEND_SRC_RGB: 0x80c9,\n BLEND_DST_ALPHA: 0x80ca,\n BLEND_SRC_ALPHA: 0x80cb,\n BLEND_COLOR: 0x8005,\n ARRAY_BUFFER_BINDING: 0x8894,\n ELEMENT_ARRAY_BUFFER_BINDING: 0x8895,\n LINE_WIDTH: 0x0b21,\n ALIASED_POINT_SIZE_RANGE: 0x846d,\n ALIASED_LINE_WIDTH_RANGE: 0x846e,\n CULL_FACE_MODE: 0x0b45,\n FRONT_FACE: 0x0b46,\n DEPTH_RANGE: 0x0b70,\n DEPTH_WRITEMASK: 0x0b72,\n DEPTH_CLEAR_VALUE: 0x0b73,\n DEPTH_FUNC: 0x0b74,\n STENCIL_CLEAR_VALUE: 0x0b91,\n STENCIL_FUNC: 0x0b92,\n STENCIL_FAIL: 0x0b94,\n STENCIL_PASS_DEPTH_FAIL: 0x0b95,\n STENCIL_PASS_DEPTH_PASS: 0x0b96,\n STENCIL_REF: 0x0b97,\n STENCIL_VALUE_MASK: 0x0b93,\n STENCIL_WRITEMASK: 0x0b98,\n STENCIL_BACK_FUNC: 0x8800,\n STENCIL_BACK_FAIL: 0x8801,\n STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802,\n STENCIL_BACK_PASS_DEPTH_PASS: 0x8803,\n STENCIL_BACK_REF: 0x8ca3,\n STENCIL_BACK_VALUE_MASK: 0x8ca4,\n STENCIL_BACK_WRITEMASK: 0x8ca5,\n VIEWPORT: 0x0ba2,\n SCISSOR_BOX: 0x0c10,\n COLOR_CLEAR_VALUE: 0x0c22,\n COLOR_WRITEMASK: 0x0c23,\n UNPACK_ALIGNMENT: 0x0cf5,\n PACK_ALIGNMENT: 0x0d05,\n MAX_TEXTURE_SIZE: 0x0d33,\n MAX_VIEWPORT_DIMS: 0x0d3a,\n SUBPIXEL_BITS: 0x0d50,\n RED_BITS: 0x0d52,\n GREEN_BITS: 0x0d53,\n BLUE_BITS: 0x0d54,\n ALPHA_BITS: 0x0d55,\n DEPTH_BITS: 0x0d56,\n STENCIL_BITS: 0x0d57,\n POLYGON_OFFSET_UNITS: 0x2a00,\n POLYGON_OFFSET_FACTOR: 0x8038,\n TEXTURE_BINDING_2D: 0x8069,\n SAMPLE_BUFFERS: 0x80a8,\n SAMPLES: 0x80a9,\n SAMPLE_COVERAGE_VALUE: 0x80aa,\n SAMPLE_COVERAGE_INVERT: 0x80ab,\n COMPRESSED_TEXTURE_FORMATS: 0x86a3,\n VENDOR: 0x1f00,\n RENDERER: 0x1f01,\n VERSION: 0x1f02,\n IMPLEMENTATION_COLOR_READ_TYPE: 0x8b9a,\n IMPLEMENTATION_COLOR_READ_FORMAT: 0x8b9b,\n BROWSER_DEFAULT_WEBGL: 0x9244,\n STATIC_DRAW: 0x88e4,\n STREAM_DRAW: 0x88e0,\n DYNAMIC_DRAW: 0x88e8,\n ARRAY_BUFFER: 0x8892,\n ELEMENT_ARRAY_BUFFER: 0x8893,\n BUFFER_SIZE: 0x8764,\n BUFFER_USAGE: 0x8765,\n CURRENT_VERTEX_ATTRIB: 0x8626,\n VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622,\n VERTEX_ATTRIB_ARRAY_SIZE: 0x8623,\n VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624,\n VERTEX_ATTRIB_ARRAY_TYPE: 0x8625,\n VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886a,\n VERTEX_ATTRIB_ARRAY_POINTER: 0x8645,\n VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889f,\n CULL_FACE: 0x0b44,\n FRONT: 0x0404,\n BACK: 0x0405,\n FRONT_AND_BACK: 0x0408,\n BLEND: 0x0be2,\n DEPTH_TEST: 0x0b71,\n DITHER: 0x0bd0,\n POLYGON_OFFSET_FILL: 0x8037,\n SAMPLE_ALPHA_TO_COVERAGE: 0x809e,\n SAMPLE_COVERAGE: 0x80a0,\n SCISSOR_TEST: 0x0c11,\n STENCIL_TEST: 0x0b90,\n NO_ERROR: 0,\n INVALID_ENUM: 0x0500,\n INVALID_VALUE: 0x0501,\n INVALID_OPERATION: 0x0502,\n OUT_OF_MEMORY: 0x0505,\n CONTEXT_LOST_WEBGL: 0x9242,\n CW: 0x0900,\n CCW: 0x0901,\n DONT_CARE: 0x1100,\n FASTEST: 0x1101,\n NICEST: 0x1102,\n GENERATE_MIPMAP_HINT: 0x8192,\n BYTE: 0x1400,\n UNSIGNED_BYTE: 0x1401,\n SHORT: 0x1402,\n UNSIGNED_SHORT: 0x1403,\n INT: 0x1404,\n UNSIGNED_INT: 0x1405,\n FLOAT: 0x1406,\n DOUBLE: 0x140a,\n DEPTH_COMPONENT: 0x1902,\n ALPHA: 0x1906,\n RGB: 0x1907,\n RGBA: 0x1908,\n LUMINANCE: 0x1909,\n LUMINANCE_ALPHA: 0x190a,\n UNSIGNED_SHORT_4_4_4_4: 0x8033,\n UNSIGNED_SHORT_5_5_5_1: 0x8034,\n UNSIGNED_SHORT_5_6_5: 0x8363,\n FRAGMENT_SHADER: 0x8b30,\n VERTEX_SHADER: 0x8b31,\n COMPILE_STATUS: 0x8b81,\n DELETE_STATUS: 0x8b80,\n LINK_STATUS: 0x8b82,\n VALIDATE_STATUS: 0x8b83,\n ATTACHED_SHADERS: 0x8b85,\n ACTIVE_ATTRIBUTES: 0x8b89,\n ACTIVE_UNIFORMS: 0x8b86,\n MAX_VERTEX_ATTRIBS: 0x8869,\n MAX_VERTEX_UNIFORM_VECTORS: 0x8dfb,\n MAX_VARYING_VECTORS: 0x8dfc,\n MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8b4d,\n MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8b4c,\n MAX_TEXTURE_IMAGE_UNITS: 0x8872,\n MAX_FRAGMENT_UNIFORM_VECTORS: 0x8dfd,\n SHADER_TYPE: 0x8b4f,\n SHADING_LANGUAGE_VERSION: 0x8b8c,\n CURRENT_PROGRAM: 0x8b8d,\n NEVER: 0x0200,\n ALWAYS: 0x0207,\n LESS: 0x0201,\n EQUAL: 0x0202,\n LEQUAL: 0x0203,\n GREATER: 0x0204,\n GEQUAL: 0x0206,\n NOTEQUAL: 0x0205,\n KEEP: 0x1e00,\n REPLACE: 0x1e01,\n INCR: 0x1e02,\n DECR: 0x1e03,\n INVERT: 0x150a,\n INCR_WRAP: 0x8507,\n DECR_WRAP: 0x8508,\n NEAREST: 0x2600,\n LINEAR: 0x2601,\n NEAREST_MIPMAP_NEAREST: 0x2700,\n LINEAR_MIPMAP_NEAREST: 0x2701,\n NEAREST_MIPMAP_LINEAR: 0x2702,\n LINEAR_MIPMAP_LINEAR: 0x2703,\n TEXTURE_MAG_FILTER: 0x2800,\n TEXTURE_MIN_FILTER: 0x2801,\n TEXTURE_WRAP_S: 0x2802,\n TEXTURE_WRAP_T: 0x2803,\n TEXTURE_2D: 0x0de1,\n TEXTURE: 0x1702,\n TEXTURE_CUBE_MAP: 0x8513,\n TEXTURE_BINDING_CUBE_MAP: 0x8514,\n TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515,\n TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516,\n TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517,\n TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518,\n TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519,\n TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851a,\n MAX_CUBE_MAP_TEXTURE_SIZE: 0x851c,\n TEXTURE0: 0x84c0,\n ACTIVE_TEXTURE: 0x84e0,\n REPEAT: 0x2901,\n CLAMP_TO_EDGE: 0x812f,\n MIRRORED_REPEAT: 0x8370,\n TEXTURE_WIDTH: 0x1000,\n TEXTURE_HEIGHT: 0x1001,\n FLOAT_VEC2: 0x8b50,\n FLOAT_VEC3: 0x8b51,\n FLOAT_VEC4: 0x8b52,\n INT_VEC2: 0x8b53,\n INT_VEC3: 0x8b54,\n INT_VEC4: 0x8b55,\n BOOL: 0x8b56,\n BOOL_VEC2: 0x8b57,\n BOOL_VEC3: 0x8b58,\n BOOL_VEC4: 0x8b59,\n FLOAT_MAT2: 0x8b5a,\n FLOAT_MAT3: 0x8b5b,\n FLOAT_MAT4: 0x8b5c,\n SAMPLER_2D: 0x8b5e,\n SAMPLER_CUBE: 0x8b60,\n LOW_FLOAT: 0x8df0,\n MEDIUM_FLOAT: 0x8df1,\n HIGH_FLOAT: 0x8df2,\n LOW_INT: 0x8df3,\n MEDIUM_INT: 0x8df4,\n HIGH_INT: 0x8df5,\n FRAMEBUFFER: 0x8d40,\n RENDERBUFFER: 0x8d41,\n RGBA4: 0x8056,\n RGB5_A1: 0x8057,\n RGB565: 0x8d62,\n DEPTH_COMPONENT16: 0x81a5,\n STENCIL_INDEX: 0x1901,\n STENCIL_INDEX8: 0x8d48,\n DEPTH_STENCIL: 0x84f9,\n RENDERBUFFER_WIDTH: 0x8d42,\n RENDERBUFFER_HEIGHT: 0x8d43,\n RENDERBUFFER_INTERNAL_FORMAT: 0x8d44,\n RENDERBUFFER_RED_SIZE: 0x8d50,\n RENDERBUFFER_GREEN_SIZE: 0x8d51,\n RENDERBUFFER_BLUE_SIZE: 0x8d52,\n RENDERBUFFER_ALPHA_SIZE: 0x8d53,\n RENDERBUFFER_DEPTH_SIZE: 0x8d54,\n RENDERBUFFER_STENCIL_SIZE: 0x8d55,\n FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8cd0,\n FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8cd1,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8cd2,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8cd3,\n COLOR_ATTACHMENT0: 0x8ce0,\n DEPTH_ATTACHMENT: 0x8d00,\n STENCIL_ATTACHMENT: 0x8d20,\n DEPTH_STENCIL_ATTACHMENT: 0x821a,\n NONE: 0,\n FRAMEBUFFER_COMPLETE: 0x8cd5,\n FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8cd6,\n FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8cd7,\n FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8cd9,\n FRAMEBUFFER_UNSUPPORTED: 0x8cdd,\n FRAMEBUFFER_BINDING: 0x8ca6,\n RENDERBUFFER_BINDING: 0x8ca7,\n READ_FRAMEBUFFER: 0x8ca8,\n DRAW_FRAMEBUFFER: 0x8ca9,\n MAX_RENDERBUFFER_SIZE: 0x84e8,\n INVALID_FRAMEBUFFER_OPERATION: 0x0506,\n UNPACK_FLIP_Y_WEBGL: 0x9240,\n UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241,\n UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243,\n READ_BUFFER: 0x0c02,\n UNPACK_ROW_LENGTH: 0x0cf2,\n UNPACK_SKIP_ROWS: 0x0cf3,\n UNPACK_SKIP_PIXELS: 0x0cf4,\n PACK_ROW_LENGTH: 0x0d02,\n PACK_SKIP_ROWS: 0x0d03,\n PACK_SKIP_PIXELS: 0x0d04,\n TEXTURE_BINDING_3D: 0x806a,\n UNPACK_SKIP_IMAGES: 0x806d,\n UNPACK_IMAGE_HEIGHT: 0x806e,\n MAX_3D_TEXTURE_SIZE: 0x8073,\n MAX_ELEMENTS_VERTICES: 0x80e8,\n MAX_ELEMENTS_INDICES: 0x80e9,\n MAX_TEXTURE_LOD_BIAS: 0x84fd,\n MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8b49,\n MAX_VERTEX_UNIFORM_COMPONENTS: 0x8b4a,\n MAX_ARRAY_TEXTURE_LAYERS: 0x88ff,\n MIN_PROGRAM_TEXEL_OFFSET: 0x8904,\n MAX_PROGRAM_TEXEL_OFFSET: 0x8905,\n MAX_VARYING_COMPONENTS: 0x8b4b,\n FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8b8b,\n RASTERIZER_DISCARD: 0x8c89,\n VERTEX_ARRAY_BINDING: 0x85b5,\n MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122,\n MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125,\n MAX_SERVER_WAIT_TIMEOUT: 0x9111,\n MAX_ELEMENT_INDEX: 0x8d6b,\n RED: 0x1903,\n RGB8: 0x8051,\n RGBA8: 0x8058,\n RGB10_A2: 0x8059,\n TEXTURE_3D: 0x806f,\n TEXTURE_WRAP_R: 0x8072,\n TEXTURE_MIN_LOD: 0x813a,\n TEXTURE_MAX_LOD: 0x813b,\n TEXTURE_BASE_LEVEL: 0x813c,\n TEXTURE_MAX_LEVEL: 0x813d,\n TEXTURE_COMPARE_MODE: 0x884c,\n TEXTURE_COMPARE_FUNC: 0x884d,\n SRGB: 0x8c40,\n SRGB8: 0x8c41,\n SRGB8_ALPHA8: 0x8c43,\n COMPARE_REF_TO_TEXTURE: 0x884e,\n RGBA32F: 0x8814,\n RGB32F: 0x8815,\n RGBA16F: 0x881a,\n RGB16F: 0x881b,\n TEXTURE_2D_ARRAY: 0x8c1a,\n TEXTURE_BINDING_2D_ARRAY: 0x8c1d,\n R11F_G11F_B10F: 0x8c3a,\n RGB9_E5: 0x8c3d,\n RGBA32UI: 0x8d70,\n RGB32UI: 0x8d71,\n RGBA16UI: 0x8d76,\n RGB16UI: 0x8d77,\n RGBA8UI: 0x8d7c,\n RGB8UI: 0x8d7d,\n RGBA32I: 0x8d82,\n RGB32I: 0x8d83,\n RGBA16I: 0x8d88,\n RGB16I: 0x8d89,\n RGBA8I: 0x8d8e,\n RGB8I: 0x8d8f,\n RED_INTEGER: 0x8d94,\n RGB_INTEGER: 0x8d98,\n RGBA_INTEGER: 0x8d99,\n R8: 0x8229,\n RG8: 0x822b,\n R16F: 0x822d,\n R32F: 0x822e,\n RG16F: 0x822f,\n RG32F: 0x8230,\n R8I: 0x8231,\n R8UI: 0x8232,\n R16I: 0x8233,\n R16UI: 0x8234,\n R32I: 0x8235,\n R32UI: 0x8236,\n RG8I: 0x8237,\n RG8UI: 0x8238,\n RG16I: 0x8239,\n RG16UI: 0x823a,\n RG32I: 0x823b,\n RG32UI: 0x823c,\n R8_SNORM: 0x8f94,\n RG8_SNORM: 0x8f95,\n RGB8_SNORM: 0x8f96,\n RGBA8_SNORM: 0x8f97,\n RGB10_A2UI: 0x906f,\n TEXTURE_IMMUTABLE_FORMAT: 0x912f,\n TEXTURE_IMMUTABLE_LEVELS: 0x82df,\n UNSIGNED_INT_2_10_10_10_REV: 0x8368,\n UNSIGNED_INT_10F_11F_11F_REV: 0x8c3b,\n UNSIGNED_INT_5_9_9_9_REV: 0x8c3e,\n FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8dad,\n UNSIGNED_INT_24_8: 0x84fa,\n HALF_FLOAT: 0x140b,\n RG: 0x8227,\n RG_INTEGER: 0x8228,\n INT_2_10_10_10_REV: 0x8d9f,\n CURRENT_QUERY: 0x8865,\n QUERY_RESULT: 0x8866,\n QUERY_RESULT_AVAILABLE: 0x8867,\n ANY_SAMPLES_PASSED: 0x8c2f,\n ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8d6a,\n MAX_DRAW_BUFFERS: 0x8824,\n DRAW_BUFFER0: 0x8825,\n DRAW_BUFFER1: 0x8826,\n DRAW_BUFFER2: 0x8827,\n DRAW_BUFFER3: 0x8828,\n DRAW_BUFFER4: 0x8829,\n DRAW_BUFFER5: 0x882a,\n DRAW_BUFFER6: 0x882b,\n DRAW_BUFFER7: 0x882c,\n DRAW_BUFFER8: 0x882d,\n DRAW_BUFFER9: 0x882e,\n DRAW_BUFFER10: 0x882f,\n DRAW_BUFFER11: 0x8830,\n DRAW_BUFFER12: 0x8831,\n DRAW_BUFFER13: 0x8832,\n DRAW_BUFFER14: 0x8833,\n DRAW_BUFFER15: 0x8834,\n MAX_COLOR_ATTACHMENTS: 0x8cdf,\n COLOR_ATTACHMENT1: 0x8ce1,\n COLOR_ATTACHMENT2: 0x8ce2,\n COLOR_ATTACHMENT3: 0x8ce3,\n COLOR_ATTACHMENT4: 0x8ce4,\n COLOR_ATTACHMENT5: 0x8ce5,\n COLOR_ATTACHMENT6: 0x8ce6,\n COLOR_ATTACHMENT7: 0x8ce7,\n COLOR_ATTACHMENT8: 0x8ce8,\n COLOR_ATTACHMENT9: 0x8ce9,\n COLOR_ATTACHMENT10: 0x8cea,\n COLOR_ATTACHMENT11: 0x8ceb,\n COLOR_ATTACHMENT12: 0x8cec,\n COLOR_ATTACHMENT13: 0x8ced,\n COLOR_ATTACHMENT14: 0x8cee,\n COLOR_ATTACHMENT15: 0x8cef,\n SAMPLER_3D: 0x8b5f,\n SAMPLER_2D_SHADOW: 0x8b62,\n SAMPLER_2D_ARRAY: 0x8dc1,\n SAMPLER_2D_ARRAY_SHADOW: 0x8dc4,\n SAMPLER_CUBE_SHADOW: 0x8dc5,\n INT_SAMPLER_2D: 0x8dca,\n INT_SAMPLER_3D: 0x8dcb,\n INT_SAMPLER_CUBE: 0x8dcc,\n INT_SAMPLER_2D_ARRAY: 0x8dcf,\n UNSIGNED_INT_SAMPLER_2D: 0x8dd2,\n UNSIGNED_INT_SAMPLER_3D: 0x8dd3,\n UNSIGNED_INT_SAMPLER_CUBE: 0x8dd4,\n UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8dd7,\n MAX_SAMPLES: 0x8d57,\n SAMPLER_BINDING: 0x8919,\n PIXEL_PACK_BUFFER: 0x88eb,\n PIXEL_UNPACK_BUFFER: 0x88ec,\n PIXEL_PACK_BUFFER_BINDING: 0x88ed,\n PIXEL_UNPACK_BUFFER_BINDING: 0x88ef,\n COPY_READ_BUFFER: 0x8f36,\n COPY_WRITE_BUFFER: 0x8f37,\n COPY_READ_BUFFER_BINDING: 0x8f36,\n COPY_WRITE_BUFFER_BINDING: 0x8f37,\n FLOAT_MAT2x3: 0x8b65,\n FLOAT_MAT2x4: 0x8b66,\n FLOAT_MAT3x2: 0x8b67,\n FLOAT_MAT3x4: 0x8b68,\n FLOAT_MAT4x2: 0x8b69,\n FLOAT_MAT4x3: 0x8b6a,\n UNSIGNED_INT_VEC2: 0x8dc6,\n UNSIGNED_INT_VEC3: 0x8dc7,\n UNSIGNED_INT_VEC4: 0x8dc8,\n UNSIGNED_NORMALIZED: 0x8c17,\n SIGNED_NORMALIZED: 0x8f9c,\n VERTEX_ATTRIB_ARRAY_INTEGER: 0x88fd,\n VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88fe,\n TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8c7f,\n MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8c80,\n TRANSFORM_FEEDBACK_VARYINGS: 0x8c83,\n TRANSFORM_FEEDBACK_BUFFER_START: 0x8c84,\n TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8c85,\n TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8c88,\n MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8c8a,\n MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8c8b,\n INTERLEAVED_ATTRIBS: 0x8c8c,\n SEPARATE_ATTRIBS: 0x8c8d,\n TRANSFORM_FEEDBACK_BUFFER: 0x8c8e,\n TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8c8f,\n TRANSFORM_FEEDBACK: 0x8e22,\n TRANSFORM_FEEDBACK_PAUSED: 0x8e23,\n TRANSFORM_FEEDBACK_ACTIVE: 0x8e24,\n TRANSFORM_FEEDBACK_BINDING: 0x8e25,\n FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210,\n FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211,\n FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212,\n FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213,\n FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214,\n FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215,\n FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216,\n FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217,\n FRAMEBUFFER_DEFAULT: 0x8218,\n DEPTH24_STENCIL8: 0x88f0,\n DRAW_FRAMEBUFFER_BINDING: 0x8ca6,\n READ_FRAMEBUFFER_BINDING: 0x8caa,\n RENDERBUFFER_SAMPLES: 0x8cab,\n FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8cd4,\n FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8d56,\n UNIFORM_BUFFER: 0x8a11,\n UNIFORM_BUFFER_BINDING: 0x8a28,\n UNIFORM_BUFFER_START: 0x8a29,\n UNIFORM_BUFFER_SIZE: 0x8a2a,\n MAX_VERTEX_UNIFORM_BLOCKS: 0x8a2b,\n MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8a2d,\n MAX_COMBINED_UNIFORM_BLOCKS: 0x8a2e,\n MAX_UNIFORM_BUFFER_BINDINGS: 0x8a2f,\n MAX_UNIFORM_BLOCK_SIZE: 0x8a30,\n MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8a31,\n MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8a33,\n UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8a34,\n ACTIVE_UNIFORM_BLOCKS: 0x8a36,\n UNIFORM_TYPE: 0x8a37,\n UNIFORM_SIZE: 0x8a38,\n UNIFORM_BLOCK_INDEX: 0x8a3a,\n UNIFORM_OFFSET: 0x8a3b,\n UNIFORM_ARRAY_STRIDE: 0x8a3c,\n UNIFORM_MATRIX_STRIDE: 0x8a3d,\n UNIFORM_IS_ROW_MAJOR: 0x8a3e,\n UNIFORM_BLOCK_BINDING: 0x8a3f,\n UNIFORM_BLOCK_DATA_SIZE: 0x8a40,\n UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8a42,\n UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8a43,\n UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8a44,\n UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8a46,\n OBJECT_TYPE: 0x9112,\n SYNC_CONDITION: 0x9113,\n SYNC_STATUS: 0x9114,\n SYNC_FLAGS: 0x9115,\n SYNC_FENCE: 0x9116,\n SYNC_GPU_COMMANDS_COMPLETE: 0x9117,\n UNSIGNALED: 0x9118,\n SIGNALED: 0x9119,\n ALREADY_SIGNALED: 0x911a,\n TIMEOUT_EXPIRED: 0x911b,\n CONDITION_SATISFIED: 0x911c,\n WAIT_FAILED: 0x911d,\n SYNC_FLUSH_COMMANDS_BIT: 0x00000001,\n COLOR: 0x1800,\n DEPTH: 0x1801,\n STENCIL: 0x1802,\n MIN: 0x8007,\n MAX: 0x8008,\n DEPTH_COMPONENT24: 0x81a6,\n STREAM_READ: 0x88e1,\n STREAM_COPY: 0x88e2,\n STATIC_READ: 0x88e5,\n STATIC_COPY: 0x88e6,\n DYNAMIC_READ: 0x88e9,\n DYNAMIC_COPY: 0x88ea,\n DEPTH_COMPONENT32F: 0x8cac,\n DEPTH32F_STENCIL8: 0x8cad,\n INVALID_INDEX: 0xffffffff,\n TIMEOUT_IGNORED: -1,\n MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247,\n VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88fe,\n UNMASKED_VENDOR_WEBGL: 0x9245,\n UNMASKED_RENDERER_WEBGL: 0x9246,\n MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84ff,\n TEXTURE_MAX_ANISOTROPY_EXT: 0x84fe,\n COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,\n COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,\n COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,\n COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,\n COMPRESSED_R11_EAC: 0x9270,\n COMPRESSED_SIGNED_R11_EAC: 0x9271,\n COMPRESSED_RG11_EAC: 0x9272,\n COMPRESSED_SIGNED_RG11_EAC: 0x9273,\n COMPRESSED_RGB8_ETC2: 0x9274,\n COMPRESSED_RGBA8_ETC2_EAC: 0x9275,\n COMPRESSED_SRGB8_ETC2: 0x9276,\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,\n COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,\n COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,\n COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,\n COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,\n COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n UNSIGNED_INT_24_8_WEBGL: 0x84fa,\n HALF_FLOAT_OES: 0x8d61,\n RGBA32F_EXT: 0x8814,\n RGB32F_EXT: 0x8815,\n FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211,\n UNSIGNED_NORMALIZED_EXT: 0x8c17,\n MIN_EXT: 0x8007,\n MAX_EXT: 0x8008,\n SRGB_EXT: 0x8c40,\n SRGB_ALPHA_EXT: 0x8c42,\n SRGB8_ALPHA8_EXT: 0x8c43,\n FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210,\n FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 0x8b8b,\n COLOR_ATTACHMENT0_WEBGL: 0x8ce0,\n COLOR_ATTACHMENT1_WEBGL: 0x8ce1,\n COLOR_ATTACHMENT2_WEBGL: 0x8ce2,\n COLOR_ATTACHMENT3_WEBGL: 0x8ce3,\n COLOR_ATTACHMENT4_WEBGL: 0x8ce4,\n COLOR_ATTACHMENT5_WEBGL: 0x8ce5,\n COLOR_ATTACHMENT6_WEBGL: 0x8ce6,\n COLOR_ATTACHMENT7_WEBGL: 0x8ce7,\n COLOR_ATTACHMENT8_WEBGL: 0x8ce8,\n COLOR_ATTACHMENT9_WEBGL: 0x8ce9,\n COLOR_ATTACHMENT10_WEBGL: 0x8cea,\n COLOR_ATTACHMENT11_WEBGL: 0x8ceb,\n COLOR_ATTACHMENT12_WEBGL: 0x8cec,\n COLOR_ATTACHMENT13_WEBGL: 0x8ced,\n COLOR_ATTACHMENT14_WEBGL: 0x8cee,\n COLOR_ATTACHMENT15_WEBGL: 0x8cef,\n DRAW_BUFFER0_WEBGL: 0x8825,\n DRAW_BUFFER1_WEBGL: 0x8826,\n DRAW_BUFFER2_WEBGL: 0x8827,\n DRAW_BUFFER3_WEBGL: 0x8828,\n DRAW_BUFFER4_WEBGL: 0x8829,\n DRAW_BUFFER5_WEBGL: 0x882a,\n DRAW_BUFFER6_WEBGL: 0x882b,\n DRAW_BUFFER7_WEBGL: 0x882c,\n DRAW_BUFFER8_WEBGL: 0x882d,\n DRAW_BUFFER9_WEBGL: 0x882e,\n DRAW_BUFFER10_WEBGL: 0x882f,\n DRAW_BUFFER11_WEBGL: 0x8830,\n DRAW_BUFFER12_WEBGL: 0x8831,\n DRAW_BUFFER13_WEBGL: 0x8832,\n DRAW_BUFFER14_WEBGL: 0x8833,\n DRAW_BUFFER15_WEBGL: 0x8834,\n MAX_COLOR_ATTACHMENTS_WEBGL: 0x8cdf,\n MAX_DRAW_BUFFERS_WEBGL: 0x8824,\n VERTEX_ARRAY_BINDING_OES: 0x85b5,\n QUERY_COUNTER_BITS_EXT: 0x8864,\n CURRENT_QUERY_EXT: 0x8865,\n QUERY_RESULT_EXT: 0x8866,\n QUERY_RESULT_AVAILABLE_EXT: 0x8867,\n TIME_ELAPSED_EXT: 0x88bf,\n TIMESTAMP_EXT: 0x8e28,\n GPU_DISJOINT_EXT: 0x8fbb\n});\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./node_modules/@luma.gl/constants/dist/esm/index.js?"); | |
/***/ }), | |
/***/ "./node_modules/@math.gl/web-mercator/dist/esm/assert.js": | |
/*!***************************************************************!*\ | |
!*** ./node_modules/@math.gl/web-mercator/dist/esm/assert.js ***! | |
\***************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return assert; });\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map\n\n//# sourceURL=webpack:///./node_modules/@math.gl/web-mercator/dist/esm/assert.js?"); | |
/***/ }), | |
/***/ "./node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js": | |
/*!*******************************************************************!*\ | |
!*** ./node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js ***! | |
\*******************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return fitBounds; });\n/* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./assert */ \"./node_modules/@math.gl/web-mercator/dist/esm/assert.js\");\n/* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js\");\n/* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web-mercator-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js\");\n\n\n\nfunction fitBounds(options) {\n const {\n width,\n height,\n bounds,\n minExtent = 0,\n maxZoom = 24,\n offset = [0, 0]\n } = options;\n const [[west, south], [east, north]] = bounds;\n const padding = getPaddingObject(options.padding);\n const nw = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"lngLatToWorld\"])([west, Object(_math_utils__WEBPACK_IMPORTED_MODULE_1__[\"clamp\"])(north, -_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"MAX_LATITUDE\"], _web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"MAX_LATITUDE\"])]);\n const se = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"lngLatToWorld\"])([east, Object(_math_utils__WEBPACK_IMPORTED_MODULE_1__[\"clamp\"])(south, -_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"MAX_LATITUDE\"], _web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"MAX_LATITUDE\"])]);\n const size = [Math.max(Math.abs(se[0] - nw[0]), minExtent), Math.max(Math.abs(se[1] - nw[1]), minExtent)];\n const targetSize = [width - padding.left - padding.right - Math.abs(offset[0]) * 2, height - padding.top - padding.bottom - Math.abs(offset[1]) * 2];\n Object(_assert__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(targetSize[0] > 0 && targetSize[1] > 0);\n const scaleX = targetSize[0] / size[0];\n const scaleY = targetSize[1] / size[1];\n const offsetX = (padding.right - padding.left) / 2 / scaleX;\n const offsetY = (padding.bottom - padding.top) / 2 / scaleY;\n const center = [(se[0] + nw[0]) / 2 + offsetX, (se[1] + nw[1]) / 2 + offsetY];\n const centerLngLat = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"worldToLngLat\"])(center);\n const zoom = Math.min(maxZoom, Object(_math_utils__WEBPACK_IMPORTED_MODULE_1__[\"log2\"])(Math.abs(Math.min(scaleX, scaleY))));\n Object(_assert__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Number.isFinite(zoom));\n return {\n longitude: centerLngLat[0],\n latitude: centerLngLat[1],\n zoom\n };\n}\n\nfunction getPaddingObject(padding = 0) {\n if (typeof padding === 'number') {\n return {\n top: padding,\n bottom: padding,\n left: padding,\n right: padding\n };\n }\n\n Object(_assert__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Number.isFinite(padding.top) && Number.isFinite(padding.bottom) && Number.isFinite(padding.left) && Number.isFinite(padding.right));\n return padding;\n}\n//# sourceMappingURL=fit-bounds.js.map\n\n//# sourceURL=webpack:///./node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js?"); | |
/***/ }), | |
/***/ "./node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js": | |
/*!************************************************************************!*\ | |
!*** ./node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js ***! | |
\************************************************************************/ | |
/*! exports provided: default, getFlyToDuration */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return flyToViewport; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFlyToDuration\", function() { return getFlyToDuration; });\n/* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js\");\n/* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./web-mercator-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n\n\n\nconst EPSILON = 0.01;\nconst VIEWPORT_TRANSITION_PROPS = ['longitude', 'latitude', 'zoom'];\nconst DEFAULT_OPTS = {\n curve: 1.414,\n speed: 1.2\n};\nfunction flyToViewport(startProps, endProps, t, options) {\n const {\n startZoom,\n startCenterXY,\n uDelta,\n w0,\n u1,\n S,\n rho,\n rho2,\n r0\n } = getFlyToTransitionParams(startProps, endProps, options);\n\n if (u1 < EPSILON) {\n const viewport = {};\n\n for (const key of VIEWPORT_TRANSITION_PROPS) {\n const startValue = startProps[key];\n const endValue = endProps[key];\n viewport[key] = Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__[\"lerp\"])(startValue, endValue, t);\n }\n\n return viewport;\n }\n\n const s = t * S;\n const w = Math.cosh(r0) / Math.cosh(r0 + rho * s);\n const u = w0 * ((Math.cosh(r0) * Math.tanh(r0 + rho * s) - Math.sinh(r0)) / rho2) / u1;\n const scaleIncrement = 1 / w;\n const newZoom = startZoom + Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__[\"scaleToZoom\"])(scaleIncrement);\n const newCenterWorld = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__[\"scale\"]([], uDelta, u);\n gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__[\"add\"](newCenterWorld, newCenterWorld, startCenterXY);\n const newCenter = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__[\"worldToLngLat\"])(newCenterWorld);\n return {\n longitude: newCenter[0],\n latitude: newCenter[1],\n zoom: newZoom\n };\n}\nfunction getFlyToDuration(startProps, endProps, options) {\n const opts = { ...DEFAULT_OPTS,\n ...options\n };\n const {\n screenSpeed,\n speed,\n maxDuration\n } = opts;\n const {\n S,\n rho\n } = getFlyToTransitionParams(startProps, endProps, opts);\n const length = 1000 * S;\n let duration;\n\n if (Number.isFinite(screenSpeed)) {\n duration = length / (screenSpeed / rho);\n } else {\n duration = length / speed;\n }\n\n return Number.isFinite(maxDuration) && duration > maxDuration ? 0 : duration;\n}\n\nfunction getFlyToTransitionParams(startProps, endProps, opts) {\n opts = Object.assign({}, DEFAULT_OPTS, opts);\n const rho = opts.curve;\n const startZoom = startProps.zoom;\n const startCenter = [startProps.longitude, startProps.latitude];\n const startScale = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__[\"zoomToScale\"])(startZoom);\n const endZoom = endProps.zoom;\n const endCenter = [endProps.longitude, endProps.latitude];\n const scale = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__[\"zoomToScale\"])(endZoom - startZoom);\n const startCenterXY = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__[\"lngLatToWorld\"])(startCenter);\n const endCenterXY = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_1__[\"lngLatToWorld\"])(endCenter);\n const uDelta = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__[\"sub\"]([], endCenterXY, startCenterXY);\n const w0 = Math.max(startProps.width, startProps.height);\n const w1 = w0 / scale;\n const u1 = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__[\"length\"](uDelta) * startScale;\n\n const _u1 = Math.max(u1, EPSILON);\n\n const rho2 = rho * rho;\n const b0 = (w1 * w1 - w0 * w0 + rho2 * rho2 * _u1 * _u1) / (2 * w0 * rho2 * _u1);\n const b1 = (w1 * w1 - w0 * w0 - rho2 * rho2 * _u1 * _u1) / (2 * w1 * rho2 * _u1);\n const r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0);\n const r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n const S = (r1 - r0) / rho;\n return {\n startZoom,\n startCenterXY,\n uDelta,\n w0,\n u1,\n S,\n rho,\n rho2,\n r0,\n r1\n };\n}\n//# sourceMappingURL=fly-to-viewport.js.map\n\n//# sourceURL=webpack:///./node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js?"); | |
/***/ }), | |
/***/ "./node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js": | |
/*!*******************************************************************!*\ | |
!*** ./node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js ***! | |
\*******************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getBounds; });\n/* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web-mercator-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n/* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js\");\n\n\n\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nfunction getBounds(viewport, z = 0) {\n const {\n width,\n height,\n unproject\n } = viewport;\n const unprojectOps = {\n targetZ: z\n };\n const bottomLeft = unproject([0, height], unprojectOps);\n const bottomRight = unproject([width, height], unprojectOps);\n let topLeft;\n let topRight;\n const halfFov = viewport.fovy ? 0.5 * viewport.fovy * DEGREES_TO_RADIANS : Math.atan(0.5 / viewport.altitude);\n const angleToGround = (90 - viewport.pitch) * DEGREES_TO_RADIANS;\n\n if (halfFov > angleToGround - 0.01) {\n topLeft = unprojectOnFarPlane(viewport, 0, z);\n topRight = unprojectOnFarPlane(viewport, width, z);\n } else {\n topLeft = unproject([0, 0], unprojectOps);\n topRight = unproject([width, 0], unprojectOps);\n }\n\n return [bottomLeft, bottomRight, topRight, topLeft];\n}\n\nfunction unprojectOnFarPlane(viewport, x, targetZ) {\n const {\n pixelUnprojectionMatrix\n } = viewport;\n const coord0 = Object(_math_utils__WEBPACK_IMPORTED_MODULE_2__[\"transformVector\"])(pixelUnprojectionMatrix, [x, 0, 1, 1]);\n const coord1 = Object(_math_utils__WEBPACK_IMPORTED_MODULE_2__[\"transformVector\"])(pixelUnprojectionMatrix, [x, viewport.height, 1, 1]);\n const z = targetZ * viewport.distanceScales.unitsPerMeter[2];\n const t = (z - coord0[2]) / (coord1[2] - coord0[2]);\n const coord = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"lerp\"]([], coord0, coord1, t);\n const result = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__[\"worldToLngLat\"])(coord);\n result.push(targetZ);\n return result;\n}\n//# sourceMappingURL=get-bounds.js.map\n\n//# sourceURL=webpack:///./node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js?"); | |
/***/ }), | |
/***/ "./node_modules/@math.gl/web-mercator/dist/esm/index.js": | |
/*!**************************************************************!*\ | |
!*** ./node_modules/@math.gl/web-mercator/dist/esm/index.js ***! | |
\**************************************************************/ | |
/*! exports provided: default, WebMercatorViewport, getBounds, fitBounds, normalizeViewportProps, flyToViewport, getFlyToDuration, MAX_LATITUDE, lngLatToWorld, worldToLngLat, worldToPixels, pixelsToWorld, zoomToScale, scaleToZoom, altitudeToFovy, fovyToAltitude, getMeterZoom, unitsPerMeter, getDistanceScales, addMetersToLngLat, getViewMatrix, getProjectionMatrix, getProjectionParameters */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _web_mercator_viewport__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web-mercator-viewport */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _web_mercator_viewport__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebMercatorViewport\", function() { return _web_mercator_viewport__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _get_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-bounds */ \"./node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBounds\", function() { return _get_bounds__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _fit_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fit-bounds */ \"./node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fitBounds\", function() { return _fit_bounds__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _normalize_viewport_props__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./normalize-viewport-props */ \"./node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"normalizeViewportProps\", function() { return _normalize_viewport_props__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _fly_to_viewport__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fly-to-viewport */ \"./node_modules/@math.gl/web-mercator/dist/esm/fly-to-viewport.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"flyToViewport\", function() { return _fly_to_viewport__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getFlyToDuration\", function() { return _fly_to_viewport__WEBPACK_IMPORTED_MODULE_4__[\"getFlyToDuration\"]; });\n\n/* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./web-mercator-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MAX_LATITUDE\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"MAX_LATITUDE\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lngLatToWorld\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"lngLatToWorld\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"worldToLngLat\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"worldToLngLat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"worldToPixels\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"worldToPixels\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pixelsToWorld\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"pixelsToWorld\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"zoomToScale\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"zoomToScale\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scaleToZoom\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"scaleToZoom\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"altitudeToFovy\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"altitudeToFovy\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fovyToAltitude\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"fovyToAltitude\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getMeterZoom\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"getMeterZoom\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"unitsPerMeter\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"unitsPerMeter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDistanceScales\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"getDistanceScales\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addMetersToLngLat\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"addMetersToLngLat\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getViewMatrix\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"getViewMatrix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getProjectionMatrix\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"getProjectionMatrix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getProjectionParameters\", function() { return _web_mercator_utils__WEBPACK_IMPORTED_MODULE_5__[\"getProjectionParameters\"]; });\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./node_modules/@math.gl/web-mercator/dist/esm/index.js?"); | |
/***/ }), | |
/***/ "./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js": | |
/*!*******************************************************************!*\ | |
!*** ./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js ***! | |
\*******************************************************************/ | |
/*! exports provided: createMat4, transformVector, mod, lerp, clamp, log2 */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createMat4\", function() { return createMat4; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transformVector\", function() { return transformVector; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mod\", function() { return mod; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clamp\", function() { return clamp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"log2\", function() { return log2; });\n/* harmony import */ var gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix/vec4 */ \"./node_modules/gl-matrix/esm/vec4.js\");\n\nfunction createMat4() {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n}\nfunction transformVector(matrix, vector) {\n const result = Object(gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_0__[\"transformMat4\"])([], vector, matrix);\n Object(gl_matrix_vec4__WEBPACK_IMPORTED_MODULE_0__[\"scale\"])(result, result, 1 / result[3]);\n return result;\n}\nfunction mod(value, divisor) {\n const modulus = value % divisor;\n return modulus < 0 ? divisor + modulus : modulus;\n}\nfunction lerp(start, end, step) {\n return step * end + (1 - step) * start;\n}\nfunction clamp(x, min, max) {\n return x < min ? min : x > max ? max : x;\n}\n\nfunction ieLog2(x) {\n return Math.log(x) * Math.LOG2E;\n}\n\nconst log2 = Math.log2 || ieLog2;\n//# sourceMappingURL=math-utils.js.map\n\n//# sourceURL=webpack:///./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js?"); | |
/***/ }), | |
/***/ "./node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js": | |
/*!*********************************************************************************!*\ | |
!*** ./node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js ***! | |
\*********************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return normalizeViewportProps; });\n/* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web-mercator-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js\");\n/* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js\");\n\n\nconst TILE_SIZE = 512;\nfunction normalizeViewportProps(props) {\n const {\n width,\n height,\n pitch = 0\n } = props;\n let {\n longitude,\n latitude,\n zoom,\n bearing = 0\n } = props;\n\n if (longitude < -180 || longitude > 180) {\n longitude = Object(_math_utils__WEBPACK_IMPORTED_MODULE_1__[\"mod\"])(longitude + 180, 360) - 180;\n }\n\n if (bearing < -180 || bearing > 180) {\n bearing = Object(_math_utils__WEBPACK_IMPORTED_MODULE_1__[\"mod\"])(bearing + 180, 360) - 180;\n }\n\n const minZoom = Object(_math_utils__WEBPACK_IMPORTED_MODULE_1__[\"log2\"])(height / TILE_SIZE);\n\n if (zoom <= minZoom) {\n zoom = minZoom;\n latitude = 0;\n } else {\n const halfHeightPixels = height / 2 / Math.pow(2, zoom);\n const minLatitude = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__[\"worldToLngLat\"])([0, halfHeightPixels])[1];\n\n if (latitude < minLatitude) {\n latitude = minLatitude;\n } else {\n const maxLatitude = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_0__[\"worldToLngLat\"])([0, TILE_SIZE - halfHeightPixels])[1];\n\n if (latitude > maxLatitude) {\n latitude = maxLatitude;\n }\n }\n }\n\n return {\n width,\n height,\n longitude,\n latitude,\n zoom,\n pitch,\n bearing\n };\n}\n//# sourceMappingURL=normalize-viewport-props.js.map\n\n//# sourceURL=webpack:///./node_modules/@math.gl/web-mercator/dist/esm/normalize-viewport-props.js?"); | |
/***/ }), | |
/***/ "./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js": | |
/*!***************************************************************************!*\ | |
!*** ./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js ***! | |
\***************************************************************************/ | |
/*! exports provided: MAX_LATITUDE, DEFAULT_ALTITUDE, zoomToScale, scaleToZoom, lngLatToWorld, worldToLngLat, getMeterZoom, unitsPerMeter, getDistanceScales, addMetersToLngLat, getViewMatrix, getProjectionParameters, getProjectionMatrix, altitudeToFovy, fovyToAltitude, worldToPixels, pixelsToWorld */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MAX_LATITUDE\", function() { return MAX_LATITUDE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_ALTITUDE\", function() { return DEFAULT_ALTITUDE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomToScale\", function() { return zoomToScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleToZoom\", function() { return scaleToZoom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lngLatToWorld\", function() { return lngLatToWorld; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"worldToLngLat\", function() { return worldToLngLat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMeterZoom\", function() { return getMeterZoom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unitsPerMeter\", function() { return unitsPerMeter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDistanceScales\", function() { return getDistanceScales; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addMetersToLngLat\", function() { return addMetersToLngLat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getViewMatrix\", function() { return getViewMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getProjectionParameters\", function() { return getProjectionParameters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getProjectionMatrix\", function() { return getProjectionMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"altitudeToFovy\", function() { return altitudeToFovy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fovyToAltitude\", function() { return fovyToAltitude; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"worldToPixels\", function() { return worldToPixels; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pixelsToWorld\", function() { return pixelsToWorld; });\n/* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js\");\n/* harmony import */ var gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix/mat4 */ \"./node_modules/gl-matrix/esm/mat4.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/gl-matrix/esm/vec3.js\");\n/* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./assert */ \"./node_modules/@math.gl/web-mercator/dist/esm/assert.js\");\n\n\n\n\n\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\nconst EARTH_CIRCUMFERENCE = 40.03e6;\nconst MAX_LATITUDE = 85.051129;\nconst DEFAULT_ALTITUDE = 1.5;\nfunction zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\nfunction scaleToZoom(scale) {\n return Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__[\"log2\"])(scale);\n}\nfunction lngLatToWorld(lngLat) {\n const [lng, lat] = lngLat;\n Object(_assert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Number.isFinite(lng));\n Object(_assert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n const lambda2 = lng * DEGREES_TO_RADIANS;\n const phi2 = lat * DEGREES_TO_RADIANS;\n const x = TILE_SIZE * (lambda2 + PI) / (2 * PI);\n const y = TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5))) / (2 * PI);\n return [x, y];\n}\nfunction worldToLngLat(xy) {\n const [x, y] = xy;\n const lambda2 = x / TILE_SIZE * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp(y / TILE_SIZE * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\nfunction getMeterZoom(options) {\n const {\n latitude\n } = options;\n Object(_assert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\nfunction unitsPerMeter(latitude) {\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return TILE_SIZE / EARTH_CIRCUMFERENCE / latCosine;\n}\nfunction getDistanceScales(options) {\n const {\n latitude,\n longitude,\n highPrecision = false\n } = options;\n Object(_assert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Number.isFinite(latitude) && Number.isFinite(longitude));\n const worldSize = TILE_SIZE;\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n const result = {\n unitsPerMeter: [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter],\n metersPerUnit: [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter],\n unitsPerDegree: [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter],\n degreesPerUnit: [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter]\n };\n\n if (highPrecision) {\n const latCosine2 = DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS) / latCosine;\n const unitsPerDegreeY2 = unitsPerDegreeX * latCosine2 / 2;\n const altUnitsPerDegree2 = worldSize / EARTH_CIRCUMFERENCE * latCosine2;\n const altUnitsPerMeter2 = altUnitsPerDegree2 / unitsPerDegreeY * altUnitsPerMeter;\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n\n return result;\n}\nfunction addMetersToLngLat(lngLatZ, xyz) {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n const {\n unitsPerMeter,\n unitsPerMeter2\n } = getDistanceScales({\n longitude,\n latitude,\n highPrecision: true\n });\n const worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n const newLngLat = worldToLngLat(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\nfunction getViewMatrix(options) {\n const {\n height,\n pitch,\n bearing,\n altitude,\n scale,\n center\n } = options;\n const vm = Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__[\"createMat4\"])();\n gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__[\"translate\"](vm, vm, [0, 0, -altitude]);\n gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__[\"rotateX\"](vm, vm, -pitch * DEGREES_TO_RADIANS);\n gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__[\"rotateZ\"](vm, vm, bearing * DEGREES_TO_RADIANS);\n const relativeScale = scale / height;\n gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__[\"scale\"](vm, vm, [relativeScale, relativeScale, relativeScale]);\n\n if (center) {\n gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__[\"translate\"](vm, vm, gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_3__[\"negate\"]([], center));\n }\n\n return vm;\n}\nfunction getProjectionParameters(options) {\n const {\n width,\n height,\n altitude,\n pitch = 0,\n offset,\n center,\n scale,\n nearZMultiplier = 1,\n farZMultiplier = 1\n } = options;\n let {\n fovy = altitudeToFovy(DEFAULT_ALTITUDE)\n } = options;\n\n if (altitude !== undefined) {\n fovy = altitudeToFovy(altitude);\n }\n\n const fovRadians = fovy * DEGREES_TO_RADIANS;\n const pitchRadians = pitch * DEGREES_TO_RADIANS;\n const focalDistance = fovyToAltitude(fovy);\n let cameraToSeaLevelDistance = focalDistance;\n\n if (center) {\n cameraToSeaLevelDistance += center[2] * scale / Math.cos(pitchRadians) / height;\n }\n\n const fovAboveCenter = fovRadians * (0.5 + (offset ? offset[1] : 0) / height);\n const topHalfSurfaceDistance = Math.sin(fovAboveCenter) * cameraToSeaLevelDistance / Math.sin(Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__[\"clamp\"])(Math.PI / 2 - pitchRadians - fovAboveCenter, 0.01, Math.PI - 0.01));\n const furthestDistance = Math.sin(pitchRadians) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n const horizonDistance = cameraToSeaLevelDistance * 10;\n const farZ = Math.min(furthestDistance * farZMultiplier, horizonDistance);\n return {\n fov: fovRadians,\n aspect: width / height,\n focalDistance,\n near: nearZMultiplier,\n far: farZ\n };\n}\nfunction getProjectionMatrix(options) {\n const {\n fov,\n aspect,\n near,\n far\n } = getProjectionParameters(options);\n const projectionMatrix = gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_1__[\"perspective\"]([], fov, aspect, near, far);\n return projectionMatrix;\n}\nfunction altitudeToFovy(altitude) {\n return 2 * Math.atan(0.5 / altitude) * RADIANS_TO_DEGREES;\n}\nfunction fovyToAltitude(fovy) {\n return 0.5 / Math.tan(0.5 * fovy * DEGREES_TO_RADIANS);\n}\nfunction worldToPixels(xyz, pixelProjectionMatrix) {\n const [x, y, z = 0] = xyz;\n Object(_assert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n return Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__[\"transformVector\"])(pixelProjectionMatrix, [x, y, z, 1]);\n}\nfunction pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n const [x, y, z] = xyz;\n Object(_assert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n\n if (Number.isFinite(z)) {\n const coord = Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__[\"transformVector\"])(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n\n const coord0 = Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__[\"transformVector\"])(pixelUnprojectionMatrix, [x, y, 0, 1]);\n const coord1 = Object(_math_utils__WEBPACK_IMPORTED_MODULE_0__[\"transformVector\"])(pixelUnprojectionMatrix, [x, y, 1, 1]);\n const z0 = coord0[2];\n const z1 = coord1[2];\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_2__[\"lerp\"]([], coord0, coord1, t);\n}\n//# sourceMappingURL=web-mercator-utils.js.map\n\n//# sourceURL=webpack:///./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js?"); | |
/***/ }), | |
/***/ "./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js": | |
/*!******************************************************************************!*\ | |
!*** ./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js ***! | |
\******************************************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebMercatorViewport; });\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _math_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/math-utils.js\");\n/* harmony import */ var _web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web-mercator-utils */ \"./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js\");\n/* harmony import */ var _fit_bounds__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fit-bounds */ \"./node_modules/@math.gl/web-mercator/dist/esm/fit-bounds.js\");\n/* harmony import */ var _get_bounds__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./get-bounds */ \"./node_modules/@math.gl/web-mercator/dist/esm/get-bounds.js\");\n/* harmony import */ var gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! gl-matrix/mat4 */ \"./node_modules/gl-matrix/esm/mat4.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/gl-matrix/esm/vec2.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/gl-matrix/esm/vec3.js\");\n\n\n\n\n\n\n\n\nclass WebMercatorViewport {\n constructor(props = {\n width: 1,\n height: 1\n }) {\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"latitude\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"longitude\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"zoom\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pitch\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"bearing\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"altitude\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"fovy\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"meterOffset\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"center\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"width\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"height\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"scale\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"distanceScales\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewMatrix\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"projectionMatrix\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"viewProjectionMatrix\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pixelProjectionMatrix\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"pixelUnprojectionMatrix\", void 0);\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"equals\", viewport => {\n if (!(viewport instanceof WebMercatorViewport)) {\n return false;\n }\n\n return viewport.width === this.width && viewport.height === this.height && gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__[\"equals\"](viewport.projectionMatrix, this.projectionMatrix) && gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__[\"equals\"](viewport.viewMatrix, this.viewMatrix);\n });\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"project\", (lngLatZ, options = {}) => {\n const {\n topLeft = true\n } = options;\n const worldPosition = this.projectPosition(lngLatZ);\n const coord = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"worldToPixels\"])(worldPosition, this.pixelProjectionMatrix);\n const [x, y] = coord;\n const y2 = topLeft ? y : this.height - y;\n return lngLatZ.length === 2 ? [x, y2] : [x, y2, coord[2]];\n });\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"unproject\", (xyz, options = {}) => {\n const {\n topLeft = true,\n targetZ = undefined\n } = options;\n const [x, y, z] = xyz;\n const y2 = topLeft ? y : this.height - y;\n const targetZWorld = targetZ && targetZ * this.distanceScales.unitsPerMeter[2];\n const coord = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"pixelsToWorld\"])([x, y2, z], this.pixelUnprojectionMatrix, targetZWorld);\n const [X, Y, Z] = this.unprojectPosition(coord);\n\n if (Number.isFinite(z)) {\n return [X, Y, Z];\n }\n\n return Number.isFinite(targetZ) ? [X, Y, targetZ] : [X, Y];\n });\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"projectPosition\", xyz => {\n const [X, Y] = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"lngLatToWorld\"])(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.unitsPerMeter[2];\n return [X, Y, Z];\n });\n\n Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"unprojectPosition\", xyz => {\n const [X, Y] = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"worldToLngLat\"])(xyz);\n const Z = (xyz[2] || 0) * this.distanceScales.metersPerUnit[2];\n return [X, Y, Z];\n });\n\n let {\n width,\n height,\n altitude = null,\n fovy = null\n } = props;\n const {\n latitude = 0,\n longitude = 0,\n zoom = 0,\n pitch = 0,\n bearing = 0,\n position = null,\n nearZMultiplier = 0.02,\n farZMultiplier = 1.01\n } = props;\n width = width || 1;\n height = height || 1;\n\n if (fovy === null && altitude === null) {\n altitude = _web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_ALTITUDE\"];\n fovy = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"altitudeToFovy\"])(altitude);\n } else if (fovy === null) {\n fovy = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"altitudeToFovy\"])(altitude);\n } else if (altitude === null) {\n altitude = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"fovyToAltitude\"])(fovy);\n }\n\n const scale = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"zoomToScale\"])(zoom);\n altitude = Math.max(0.75, altitude);\n const distanceScales = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"getDistanceScales\"])({\n longitude,\n latitude\n });\n const center = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"lngLatToWorld\"])([longitude, latitude]);\n center.push(0);\n\n if (position) {\n gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_7__[\"add\"](center, center, gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_7__[\"mul\"]([], position, distanceScales.unitsPerMeter));\n }\n\n this.projectionMatrix = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"getProjectionMatrix\"])({\n width,\n height,\n scale,\n center,\n pitch,\n fovy,\n nearZMultiplier,\n farZMultiplier\n });\n this.viewMatrix = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"getViewMatrix\"])({\n height,\n scale,\n center,\n pitch,\n bearing,\n altitude\n });\n this.width = width;\n this.height = height;\n this.scale = scale;\n this.latitude = latitude;\n this.longitude = longitude;\n this.zoom = zoom;\n this.pitch = pitch;\n this.bearing = bearing;\n this.altitude = altitude;\n this.fovy = fovy;\n this.center = center;\n this.meterOffset = position || [0, 0, 0];\n this.distanceScales = distanceScales;\n\n this._initMatrices();\n\n Object.freeze(this);\n }\n\n _initMatrices() {\n const {\n width,\n height,\n projectionMatrix,\n viewMatrix\n } = this;\n const vpm = Object(_math_utils__WEBPACK_IMPORTED_MODULE_1__[\"createMat4\"])();\n gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__[\"multiply\"](vpm, vpm, projectionMatrix);\n gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__[\"multiply\"](vpm, vpm, viewMatrix);\n this.viewProjectionMatrix = vpm;\n const m = Object(_math_utils__WEBPACK_IMPORTED_MODULE_1__[\"createMat4\"])();\n gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__[\"scale\"](m, m, [width / 2, -height / 2, 1]);\n gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__[\"translate\"](m, m, [1, -1, 0]);\n gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__[\"multiply\"](m, m, vpm);\n const mInverse = gl_matrix_mat4__WEBPACK_IMPORTED_MODULE_5__[\"invert\"](Object(_math_utils__WEBPACK_IMPORTED_MODULE_1__[\"createMat4\"])(), m);\n\n if (!mInverse) {\n throw new Error('Pixel project matrix not invertible');\n }\n\n this.pixelProjectionMatrix = m;\n this.pixelUnprojectionMatrix = mInverse;\n }\n\n projectFlat(lngLat) {\n return Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"lngLatToWorld\"])(lngLat);\n }\n\n unprojectFlat(xy) {\n return Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"worldToLngLat\"])(xy);\n }\n\n getMapCenterByLngLatPosition({\n lngLat,\n pos\n }) {\n const fromLocation = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"pixelsToWorld\"])(pos, this.pixelUnprojectionMatrix);\n const toLocation = Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"lngLatToWorld\"])(lngLat);\n const translate = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_6__[\"add\"]([], toLocation, gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_6__[\"negate\"]([], fromLocation));\n const newCenter = gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_6__[\"add\"]([], this.center, translate);\n return Object(_web_mercator_utils__WEBPACK_IMPORTED_MODULE_2__[\"worldToLngLat\"])(newCenter);\n }\n\n fitBounds(bounds, options = {}) {\n const {\n width,\n height\n } = this;\n const {\n longitude,\n latitude,\n zoom\n } = Object(_fit_bounds__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Object.assign({\n width,\n height,\n bounds\n }, options));\n return new WebMercatorViewport({\n width,\n height,\n longitude,\n latitude,\n zoom\n });\n }\n\n getBounds(options) {\n const corners = this.getBoundingRegion(options);\n const west = Math.min(...corners.map(p => p[0]));\n const east = Math.max(...corners.map(p => p[0]));\n const south = Math.min(...corners.map(p => p[1]));\n const north = Math.max(...corners.map(p => p[1]));\n return [[west, south], [east, north]];\n }\n\n getBoundingRegion(options = {}) {\n return Object(_get_bounds__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, options.z || 0);\n }\n\n getLocationAtPoint({\n lngLat,\n pos\n }) {\n return this.getMapCenterByLngLatPosition({\n lngLat,\n pos\n });\n }\n\n}\n//# sourceMappingURL=web-mercator-viewport.js.map\n\n//# sourceURL=webpack:///./node_modules/@math.gl/web-mercator/dist/esm/web-mercator-viewport.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"slice\", function() { return slice; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return map; });\nvar array = Array.prototype;\n\nvar slice = array.slice;\nvar map = array.map;\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/array.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ascending; });\nfunction ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/ascending.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/bin.js": | |
/*!******************************************!*\ | |
!*** ./node_modules/d3-array/src/bin.js ***! | |
\******************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return bin; });\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array.js */ \"./node_modules/d3-array/src/array.js\");\n/* harmony import */ var _bisect_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bisect.js */ \"./node_modules/d3-array/src/bisect.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/d3-array/src/constant.js\");\n/* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./extent.js */ \"./node_modules/d3-array/src/extent.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/d3-array/src/identity.js\");\n/* harmony import */ var _nice_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./nice.js */ \"./node_modules/d3-array/src/nice.js\");\n/* harmony import */ var _ticks_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ticks.js */ \"./node_modules/d3-array/src/ticks.js\");\n/* harmony import */ var _threshold_sturges_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./threshold/sturges.js */ \"./node_modules/d3-array/src/threshold/sturges.js\");\n\n\n\n\n\n\n\n\n\nfunction bin() {\n var value = _identity_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n domain = _extent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n threshold = _threshold_sturges_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n\n function histogram(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n\n var i,\n n = data.length,\n x,\n step,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds, and nice the\n // default domain accordingly.\n if (!Array.isArray(tz)) {\n const max = x1, tn = +tz;\n if (domain === _extent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) [x0, x1] = Object(_nice_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(x0, x1, tn);\n tz = Object(_ticks_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(x0, x1, tn);\n\n // If the domain is aligned with the first tick (which it will by\n // default), then we can use quantization rather than bisection to bin\n // values, which is substantially faster.\n if (tz[0] <= x0) step = Object(_ticks_js__WEBPACK_IMPORTED_MODULE_6__[\"tickIncrement\"])(x0, x1, tn);\n\n // If the last threshold is coincident with the domain’s upper bound, the\n // last bin will be zero-width. If the default domain is used, and this\n // last threshold is coincident with the maximum input value, we can\n // extend the niced upper bound by one tick to ensure uniform bin widths;\n // otherwise, we simply remove the last threshold. Note that we don’t\n // coerce values or the domain to numbers, and thus must be careful to\n // compare order (>=) rather than strict equality (===)!\n if (tz[tz.length - 1] >= x1) {\n if (max >= x1 && domain === _extent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n const step = Object(_ticks_js__WEBPACK_IMPORTED_MODULE_6__[\"tickIncrement\"])(x0, x1, tn);\n if (isFinite(step)) {\n if (step > 0) {\n x1 = (Math.floor(x1 / step) + 1) * step;\n } else if (step < 0) {\n x1 = (Math.ceil(x1 * -step) + 1) / -step;\n }\n }\n } else {\n tz.pop();\n }\n }\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n if (isFinite(step)) {\n if (step > 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n }\n }\n } else if (step < 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n const j = Math.floor((x0 - x) * step);\n bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding\n }\n }\n }\n } else {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[Object(_bisect_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(tz, x, 0, m)].push(data[i]);\n }\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_array_js__WEBPACK_IMPORTED_MODULE_0__[\"slice\"].call(_)) : Object(_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_), histogram) : threshold;\n };\n\n return histogram;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/bin.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/bisect.js": | |
/*!*********************************************!*\ | |
!*** ./node_modules/d3-array/src/bisect.js ***! | |
\*********************************************/ | |
/*! exports provided: bisectRight, bisectLeft, bisectCenter, default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bisectRight\", function() { return bisectRight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bisectLeft\", function() { return bisectLeft; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bisectCenter\", function() { return bisectCenter; });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _bisector_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bisector.js */ \"./node_modules/d3-array/src/bisector.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./number.js */ \"./node_modules/d3-array/src/number.js\");\n\n\n\n\nconst ascendingBisect = Object(_bisector_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\nconst bisectRight = ascendingBisect.right;\nconst bisectLeft = ascendingBisect.left;\nconst bisectCenter = Object(_bisector_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_number_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).center;\n/* harmony default export */ __webpack_exports__[\"default\"] = (bisectRight);\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/bisect.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return bisector; });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _descending_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./descending.js */ \"./node_modules/d3-array/src/descending.js\");\n\n\n\nfunction bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n compare2 = (d, x) => Object(_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] || f === _descending_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/bisector.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return constant; });\nfunction constant(x) {\n return () => x;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/constant.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/count.js": | |
/*!********************************************!*\ | |
!*** ./node_modules/d3-array/src/count.js ***! | |
\********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return count; });\nfunction count(values, valueof) {\n let count = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count;\n }\n }\n }\n return count;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/count.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return cross; });\nfunction length(array) {\n return array.length | 0;\n}\n\nfunction empty(length) {\n return !(length > 0);\n}\n\nfunction arrayify(values) {\n return typeof values !== \"object\" || \"length\" in values ? values : Array.from(values);\n}\n\nfunction reducer(reduce) {\n return values => reduce(...values);\n}\n\nfunction cross(...values) {\n const reduce = typeof values[values.length - 1] === \"function\" && reducer(values.pop());\n values = values.map(arrayify);\n const lengths = values.map(length);\n const j = values.length - 1;\n const index = new Array(j + 1).fill(0);\n const product = [];\n if (j < 0 || lengths.some(empty)) return product;\n while (true) {\n product.push(index.map((j, i) => values[i][j]));\n let i = j;\n while (++index[i] === lengths[i]) {\n if (i === 0) return reduce ? product.map(reduce) : product;\n index[i--] = 0;\n }\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/cross.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/cumsum.js": | |
/*!*********************************************!*\ | |
!*** ./node_modules/d3-array/src/cumsum.js ***! | |
\*********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return cumsum; });\nfunction cumsum(values, valueof) {\n var sum = 0, index = 0;\n return Float64Array.from(values, valueof === undefined\n ? v => (sum += +v || 0)\n : v => (sum += +valueof(v, index++, values) || 0));\n}\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/cumsum.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return descending; });\nfunction descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/descending.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return deviation; });\n/* harmony import */ var _variance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./variance.js */ \"./node_modules/d3-array/src/variance.js\");\n\n\nfunction deviation(values, valueof) {\n const v = Object(_variance_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values, valueof);\n return v ? Math.sqrt(v) : v;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/deviation.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/difference.js": | |
/*!*************************************************!*\ | |
!*** ./node_modules/d3-array/src/difference.js ***! | |
\*************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return difference; });\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! internmap */ \"./node_modules/internmap/src/index.js\");\n\n\nfunction difference(values, ...others) {\n values = new internmap__WEBPACK_IMPORTED_MODULE_0__[\"InternSet\"](values);\n for (const other of others) {\n for (const value of other) {\n values.delete(value);\n }\n }\n return values;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/difference.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/disjoint.js": | |
/*!***********************************************!*\ | |
!*** ./node_modules/d3-array/src/disjoint.js ***! | |
\***********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return disjoint; });\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! internmap */ \"./node_modules/internmap/src/index.js\");\n\n\nfunction disjoint(values, other) {\n const iterator = other[Symbol.iterator](), set = new internmap__WEBPACK_IMPORTED_MODULE_0__[\"InternSet\"]();\n for (const v of values) {\n if (set.has(v)) return false;\n let value, done;\n while (({value, done} = iterator.next())) {\n if (done) break;\n if (Object.is(v, value)) return false;\n set.add(value);\n }\n }\n return true;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/disjoint.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/every.js": | |
/*!********************************************!*\ | |
!*** ./node_modules/d3-array/src/every.js ***! | |
\********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return every; });\nfunction every(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n for (const value of values) {\n if (!test(value, ++index, values)) {\n return false;\n }\n }\n return true;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/every.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return extent; });\nfunction extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/extent.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/filter.js": | |
/*!*********************************************!*\ | |
!*** ./node_modules/d3-array/src/filter.js ***! | |
\*********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return filter; });\nfunction filter(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n const array = [];\n let index = -1;\n for (const value of values) {\n if (test(value, ++index, values)) {\n array.push(value);\n }\n }\n return array;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/filter.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/fsum.js": | |
/*!*******************************************!*\ | |
!*** ./node_modules/d3-array/src/fsum.js ***! | |
\*******************************************/ | |
/*! exports provided: Adder, fsum, fcumsum */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Adder\", function() { return Adder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fsum\", function() { return fsum; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fcumsum\", function() { return fcumsum; });\n// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nclass Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nfunction fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nfunction fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/fsum.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/greatest.js": | |
/*!***********************************************!*\ | |
!*** ./node_modules/d3-array/src/greatest.js ***! | |
\***********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return greatest; });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/d3-array/src/ascending.js\");\n\n\nfunction greatest(values, compare = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n let max;\n let defined = false;\n if (compare.length === 1) {\n let maxValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? Object(_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, maxValue) > 0\n : Object(_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, value) === 0) {\n max = element;\n maxValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, max) > 0\n : compare(value, value) === 0) {\n max = value;\n defined = true;\n }\n }\n }\n return max;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/greatest.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/greatestIndex.js": | |
/*!****************************************************!*\ | |
!*** ./node_modules/d3-array/src/greatestIndex.js ***! | |
\****************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return greatestIndex; });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _maxIndex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./maxIndex.js */ \"./node_modules/d3-array/src/maxIndex.js\");\n\n\n\nfunction greatestIndex(values, compare = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n if (compare.length === 1) return Object(_maxIndex_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, compare);\n let maxValue;\n let max = -1;\n let index = -1;\n for (const value of values) {\n ++index;\n if (max < 0\n ? compare(value, value) === 0\n : compare(value, maxValue) > 0) {\n maxValue = value;\n max = index;\n }\n }\n return max;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/greatestIndex.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/group.js": | |
/*!********************************************!*\ | |
!*** ./node_modules/d3-array/src/group.js ***! | |
\********************************************/ | |
/*! exports provided: default, groups, flatGroup, flatRollup, rollup, rollups, index, indexes */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return group; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"groups\", function() { return groups; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flatGroup\", function() { return flatGroup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"flatRollup\", function() { return flatRollup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rollup\", function() { return rollup; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rollups\", function() { return rollups; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"index\", function() { return index; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"indexes\", function() { return indexes; });\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! internmap */ \"./node_modules/internmap/src/index.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/d3-array/src/identity.js\");\n\n\n\nfunction group(values, ...keys) {\n return nest(values, _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], keys);\n}\n\nfunction groups(values, ...keys) {\n return nest(values, Array.from, _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n return groups;\n}\n\nfunction flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nfunction flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nfunction rollup(values, reduce, ...keys) {\n return nest(values, _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], reduce, keys);\n}\n\nfunction rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nfunction index(values, ...keys) {\n return nest(values, _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], unique, keys);\n}\n\nfunction indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new internmap__WEBPACK_IMPORTED_MODULE_0__[\"InternMap\"]();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/group.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/groupSort.js": | |
/*!************************************************!*\ | |
!*** ./node_modules/d3-array/src/groupSort.js ***! | |
\************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return groupSort; });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _group_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./group.js */ \"./node_modules/d3-array/src/group.js\");\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sort.js */ \"./node_modules/d3-array/src/sort.js\");\n\n\n\n\nfunction groupSort(values, reduce, key) {\n return (reduce.length !== 2\n ? Object(_sort_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Object(_group_js__WEBPACK_IMPORTED_MODULE_1__[\"rollup\"])(values, reduce, key), (([ak, av], [bk, bv]) => Object(_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(av, bv) || Object(_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ak, bk)))\n : Object(_sort_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Object(_group_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || Object(_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ak, bk))))\n .map(([key]) => key);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/groupSort.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return identity; });\nfunction identity(x) {\n return x;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/identity.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/index.js": | |
/*!********************************************!*\ | |
!*** ./node_modules/d3-array/src/index.js ***! | |
\********************************************/ | |
/*! exports provided: bisect, bisectRight, bisectLeft, bisectCenter, ascending, bisector, count, cross, cumsum, descending, deviation, extent, Adder, fsum, fcumsum, group, flatGroup, flatRollup, groups, index, indexes, rollup, rollups, groupSort, bin, histogram, thresholdFreedmanDiaconis, thresholdScott, thresholdSturges, max, maxIndex, mean, median, merge, min, minIndex, mode, nice, pairs, permute, quantile, quantileSorted, quickselect, range, rank, least, leastIndex, greatest, greatestIndex, scan, shuffle, shuffler, sum, ticks, tickIncrement, tickStep, transpose, variance, zip, every, some, filter, map, reduce, reverse, sort, difference, disjoint, intersection, subset, superset, union, InternMap, InternSet */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _bisect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bisect.js */ \"./node_modules/d3-array/src/bisect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bisect\", function() { return _bisect_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bisectRight\", function() { return _bisect_js__WEBPACK_IMPORTED_MODULE_0__[\"bisectRight\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bisectLeft\", function() { return _bisect_js__WEBPACK_IMPORTED_MODULE_0__[\"bisectLeft\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bisectCenter\", function() { return _bisect_js__WEBPACK_IMPORTED_MODULE_0__[\"bisectCenter\"]; });\n\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/d3-array/src/ascending.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return _ascending_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _bisector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bisector.js */ \"./node_modules/d3-array/src/bisector.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bisector\", function() { return _bisector_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _count_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./count.js */ \"./node_modules/d3-array/src/count.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"count\", function() { return _count_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _cross_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./cross.js */ \"./node_modules/d3-array/src/cross.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return _cross_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _cumsum_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./cumsum.js */ \"./node_modules/d3-array/src/cumsum.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cumsum\", function() { return _cumsum_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _descending_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./descending.js */ \"./node_modules/d3-array/src/descending.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"descending\", function() { return _descending_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _deviation_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./deviation.js */ \"./node_modules/d3-array/src/deviation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"deviation\", function() { return _deviation_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./extent.js */ \"./node_modules/d3-array/src/extent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return _extent_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _fsum_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./fsum.js */ \"./node_modules/d3-array/src/fsum.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Adder\", function() { return _fsum_js__WEBPACK_IMPORTED_MODULE_9__[\"Adder\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fsum\", function() { return _fsum_js__WEBPACK_IMPORTED_MODULE_9__[\"fsum\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"fcumsum\", function() { return _fsum_js__WEBPACK_IMPORTED_MODULE_9__[\"fcumsum\"]; });\n\n/* harmony import */ var _group_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./group.js */ \"./node_modules/d3-array/src/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"group\", function() { return _group_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"flatGroup\", function() { return _group_js__WEBPACK_IMPORTED_MODULE_10__[\"flatGroup\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"flatRollup\", function() { return _group_js__WEBPACK_IMPORTED_MODULE_10__[\"flatRollup\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"groups\", function() { return _group_js__WEBPACK_IMPORTED_MODULE_10__[\"groups\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"index\", function() { return _group_js__WEBPACK_IMPORTED_MODULE_10__[\"index\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"indexes\", function() { return _group_js__WEBPACK_IMPORTED_MODULE_10__[\"indexes\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rollup\", function() { return _group_js__WEBPACK_IMPORTED_MODULE_10__[\"rollup\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rollups\", function() { return _group_js__WEBPACK_IMPORTED_MODULE_10__[\"rollups\"]; });\n\n/* harmony import */ var _groupSort_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./groupSort.js */ \"./node_modules/d3-array/src/groupSort.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"groupSort\", function() { return _groupSort_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _bin_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./bin.js */ \"./node_modules/d3-array/src/bin.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"bin\", function() { return _bin_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"histogram\", function() { return _bin_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _threshold_freedmanDiaconis_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./threshold/freedmanDiaconis.js */ \"./node_modules/d3-array/src/threshold/freedmanDiaconis.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"thresholdFreedmanDiaconis\", function() { return _threshold_freedmanDiaconis_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _threshold_scott_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./threshold/scott.js */ \"./node_modules/d3-array/src/threshold/scott.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"thresholdScott\", function() { return _threshold_scott_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _threshold_sturges_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./threshold/sturges.js */ \"./node_modules/d3-array/src/threshold/sturges.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"thresholdSturges\", function() { return _threshold_sturges_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./max.js */ \"./node_modules/d3-array/src/max.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return _max_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _maxIndex_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./maxIndex.js */ \"./node_modules/d3-array/src/maxIndex.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"maxIndex\", function() { return _maxIndex_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _mean_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./mean.js */ \"./node_modules/d3-array/src/mean.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mean\", function() { return _mean_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _median_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./median.js */ \"./node_modules/d3-array/src/median.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"median\", function() { return _median_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _merge_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./merge.js */ \"./node_modules/d3-array/src/merge.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return _merge_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _min_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./min.js */ \"./node_modules/d3-array/src/min.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return _min_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _minIndex_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./minIndex.js */ \"./node_modules/d3-array/src/minIndex.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"minIndex\", function() { return _minIndex_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _mode_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./mode.js */ \"./node_modules/d3-array/src/mode.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mode\", function() { return _mode_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _nice_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./nice.js */ \"./node_modules/d3-array/src/nice.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"nice\", function() { return _nice_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _pairs_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./pairs.js */ \"./node_modules/d3-array/src/pairs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pairs\", function() { return _pairs_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _permute_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./permute.js */ \"./node_modules/d3-array/src/permute.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"permute\", function() { return _permute_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _quantile_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./quantile.js */ \"./node_modules/d3-array/src/quantile.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantile\", function() { return _quantile_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quantileSorted\", function() { return _quantile_js__WEBPACK_IMPORTED_MODULE_27__[\"quantileSorted\"]; });\n\n/* harmony import */ var _quickselect_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./quickselect.js */ \"./node_modules/d3-array/src/quickselect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"quickselect\", function() { return _quickselect_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _range_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./range.js */ \"./node_modules/d3-array/src/range.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"range\", function() { return _range_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony import */ var _rank_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./rank.js */ \"./node_modules/d3-array/src/rank.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rank\", function() { return _rank_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"]; });\n\n/* harmony import */ var _least_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./least.js */ \"./node_modules/d3-array/src/least.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"least\", function() { return _least_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _leastIndex_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./leastIndex.js */ \"./node_modules/d3-array/src/leastIndex.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"leastIndex\", function() { return _leastIndex_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _greatest_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./greatest.js */ \"./node_modules/d3-array/src/greatest.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"greatest\", function() { return _greatest_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n/* harmony import */ var _greatestIndex_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./greatestIndex.js */ \"./node_modules/d3-array/src/greatestIndex.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"greatestIndex\", function() { return _greatestIndex_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]; });\n\n/* harmony import */ var _scan_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./scan.js */ \"./node_modules/d3-array/src/scan.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"scan\", function() { return _scan_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]; });\n\n/* harmony import */ var _shuffle_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./shuffle.js */ \"./node_modules/d3-array/src/shuffle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"shuffle\", function() { return _shuffle_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"shuffler\", function() { return _shuffle_js__WEBPACK_IMPORTED_MODULE_36__[\"shuffler\"]; });\n\n/* harmony import */ var _sum_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./sum.js */ \"./node_modules/d3-array/src/sum.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sum\", function() { return _sum_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]; });\n\n/* harmony import */ var _ticks_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./ticks.js */ \"./node_modules/d3-array/src/ticks.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ticks\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tickIncrement\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_38__[\"tickIncrement\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"tickStep\", function() { return _ticks_js__WEBPACK_IMPORTED_MODULE_38__[\"tickStep\"]; });\n\n/* harmony import */ var _transpose_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./transpose.js */ \"./node_modules/d3-array/src/transpose.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return _transpose_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]; });\n\n/* harmony import */ var _variance_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./variance.js */ \"./node_modules/d3-array/src/variance.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"variance\", function() { return _variance_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]; });\n\n/* harmony import */ var _zip_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./zip.js */ \"./node_modules/d3-array/src/zip.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"zip\", function() { return _zip_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]; });\n\n/* harmony import */ var _every_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./every.js */ \"./node_modules/d3-array/src/every.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return _every_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]; });\n\n/* harmony import */ var _some_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./some.js */ \"./node_modules/d3-array/src/some.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return _some_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]; });\n\n/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./filter.js */ \"./node_modules/d3-array/src/filter.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return _filter_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"]; });\n\n/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./map.js */ \"./node_modules/d3-array/src/map.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return _map_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"]; });\n\n/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./reduce.js */ \"./node_modules/d3-array/src/reduce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return _reduce_js__WEBPACK_IMPORTED_MODULE_46__[\"default\"]; });\n\n/* harmony import */ var _reverse_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./reverse.js */ \"./node_modules/d3-array/src/reverse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reverse\", function() { return _reverse_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"]; });\n\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./sort.js */ \"./node_modules/d3-array/src/sort.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sort\", function() { return _sort_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]; });\n\n/* harmony import */ var _difference_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./difference.js */ \"./node_modules/d3-array/src/difference.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"difference\", function() { return _difference_js__WEBPACK_IMPORTED_MODULE_49__[\"default\"]; });\n\n/* harmony import */ var _disjoint_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./disjoint.js */ \"./node_modules/d3-array/src/disjoint.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"disjoint\", function() { return _disjoint_js__WEBPACK_IMPORTED_MODULE_50__[\"default\"]; });\n\n/* harmony import */ var _intersection_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./intersection.js */ \"./node_modules/d3-array/src/intersection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"intersection\", function() { return _intersection_js__WEBPACK_IMPORTED_MODULE_51__[\"default\"]; });\n\n/* harmony import */ var _subset_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./subset.js */ \"./node_modules/d3-array/src/subset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"subset\", function() { return _subset_js__WEBPACK_IMPORTED_MODULE_52__[\"default\"]; });\n\n/* harmony import */ var _superset_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./superset.js */ \"./node_modules/d3-array/src/superset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"superset\", function() { return _superset_js__WEBPACK_IMPORTED_MODULE_53__[\"default\"]; });\n\n/* harmony import */ var _union_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./union.js */ \"./node_modules/d3-array/src/union.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"union\", function() { return _union_js__WEBPACK_IMPORTED_MODULE_54__[\"default\"]; });\n\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! internmap */ \"./node_modules/internmap/src/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InternMap\", function() { return internmap__WEBPACK_IMPORTED_MODULE_55__[\"InternMap\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InternSet\", function() { return internmap__WEBPACK_IMPORTED_MODULE_55__[\"InternSet\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n // Deprecated; use bin.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // Deprecated; use leastIndex.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/index.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/intersection.js": | |
/*!***************************************************!*\ | |
!*** ./node_modules/d3-array/src/intersection.js ***! | |
\***************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return intersection; });\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! internmap */ \"./node_modules/internmap/src/index.js\");\n\n\nfunction intersection(values, ...others) {\n values = new internmap__WEBPACK_IMPORTED_MODULE_0__[\"InternSet\"](values);\n others = others.map(set);\n out: for (const value of values) {\n for (const other of others) {\n if (!other.has(value)) {\n values.delete(value);\n continue out;\n }\n }\n }\n return values;\n}\n\nfunction set(values) {\n return values instanceof internmap__WEBPACK_IMPORTED_MODULE_0__[\"InternSet\"] ? values : new internmap__WEBPACK_IMPORTED_MODULE_0__[\"InternSet\"](values);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/intersection.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/least.js": | |
/*!********************************************!*\ | |
!*** ./node_modules/d3-array/src/least.js ***! | |
\********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return least; });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/d3-array/src/ascending.js\");\n\n\nfunction least(values, compare = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n let min;\n let defined = false;\n if (compare.length === 1) {\n let minValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? Object(_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, minValue) < 0\n : Object(_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, value) === 0) {\n min = element;\n minValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, min) < 0\n : compare(value, value) === 0) {\n min = value;\n defined = true;\n }\n }\n }\n return min;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/least.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/leastIndex.js": | |
/*!*************************************************!*\ | |
!*** ./node_modules/d3-array/src/leastIndex.js ***! | |
\*************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return leastIndex; });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _minIndex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./minIndex.js */ \"./node_modules/d3-array/src/minIndex.js\");\n\n\n\nfunction leastIndex(values, compare = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n if (compare.length === 1) return Object(_minIndex_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, compare);\n let minValue;\n let min = -1;\n let index = -1;\n for (const value of values) {\n ++index;\n if (min < 0\n ? compare(value, value) === 0\n : compare(value, minValue) < 0) {\n minValue = value;\n min = index;\n }\n }\n return min;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/leastIndex.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/map.js": | |
/*!******************************************!*\ | |
!*** ./node_modules/d3-array/src/map.js ***! | |
\******************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return map; });\nfunction map(values, mapper) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n if (typeof mapper !== \"function\") throw new TypeError(\"mapper is not a function\");\n return Array.from(values, (value, index) => mapper(value, index, values));\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/map.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return max; });\nfunction max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/max.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/maxIndex.js": | |
/*!***********************************************!*\ | |
!*** ./node_modules/d3-array/src/maxIndex.js ***! | |
\***********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return maxIndex; });\nfunction maxIndex(values, valueof) {\n let max;\n let maxIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n }\n return maxIndex;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/maxIndex.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return mean; });\nfunction mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/mean.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return median; });\n/* harmony import */ var _quantile_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quantile.js */ \"./node_modules/d3-array/src/quantile.js\");\n\n\nfunction median(values, valueof) {\n return Object(_quantile_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values, 0.5, valueof);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/median.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return merge; });\nfunction* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nfunction merge(arrays) {\n return Array.from(flatten(arrays));\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/merge.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return min; });\nfunction min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/min.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/minIndex.js": | |
/*!***********************************************!*\ | |
!*** ./node_modules/d3-array/src/minIndex.js ***! | |
\***********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return minIndex; });\nfunction minIndex(values, valueof) {\n let min;\n let minIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n }\n return minIndex;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/minIndex.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/mode.js": | |
/*!*******************************************!*\ | |
!*** ./node_modules/d3-array/src/mode.js ***! | |
\*******************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return mode; });\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! internmap */ \"./node_modules/internmap/src/index.js\");\n\n\nfunction mode(values, valueof) {\n const counts = new internmap__WEBPACK_IMPORTED_MODULE_0__[\"InternMap\"]();\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n }\n let modeValue;\n let modeCount = 0;\n for (const [value, count] of counts) {\n if (count > modeCount) {\n modeCount = count;\n modeValue = value;\n }\n }\n return modeValue;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/mode.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/nice.js": | |
/*!*******************************************!*\ | |
!*** ./node_modules/d3-array/src/nice.js ***! | |
\*******************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return nice; });\n/* harmony import */ var _ticks_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ticks.js */ \"./node_modules/d3-array/src/ticks.js\");\n\n\nfunction nice(start, stop, count) {\n let prestep;\n while (true) {\n const step = Object(_ticks_js__WEBPACK_IMPORTED_MODULE_0__[\"tickIncrement\"])(start, stop, count);\n if (step === prestep || step === 0 || !isFinite(step)) {\n return [start, stop];\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n }\n prestep = step;\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/nice.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/number.js": | |
/*!*********************************************!*\ | |
!*** ./node_modules/d3-array/src/number.js ***! | |
\*********************************************/ | |
/*! exports provided: default, numbers */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return number; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"numbers\", function() { return numbers; });\nfunction number(x) {\n return x === null ? NaN : +x;\n}\n\nfunction* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/number.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pairs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pair\", function() { return pair; });\nfunction pairs(values, pairof = pair) {\n const pairs = [];\n let previous;\n let first = false;\n for (const value of values) {\n if (first) pairs.push(pairof(previous, value));\n previous = value;\n first = true;\n }\n return pairs;\n}\n\nfunction pair(a, b) {\n return [a, b];\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/pairs.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return permute; });\nfunction permute(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/permute.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/quantile.js": | |
/*!***********************************************!*\ | |
!*** ./node_modules/d3-array/src/quantile.js ***! | |
\***********************************************/ | |
/*! exports provided: default, quantileSorted */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return quantile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quantileSorted\", function() { return quantileSorted; });\n/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./max.js */ \"./node_modules/d3-array/src/max.js\");\n/* harmony import */ var _min_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./min.js */ \"./node_modules/d3-array/src/min.js\");\n/* harmony import */ var _quickselect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./quickselect.js */ \"./node_modules/d3-array/src/quickselect.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./number.js */ \"./node_modules/d3-array/src/number.js\");\n\n\n\n\n\nfunction quantile(values, p, valueof) {\n values = Float64Array.from(Object(_number_js__WEBPACK_IMPORTED_MODULE_3__[\"numbers\"])(values, valueof));\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return Object(_min_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values);\n if (p >= 1) return Object(_max_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = Object(_max_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object(_quickselect_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(values, i0).subarray(0, i0 + 1)),\n value1 = Object(_min_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nfunction quantileSorted(values, p, valueof = _number_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) {\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/quantile.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/quickselect.js": | |
/*!**************************************************!*\ | |
!*** ./node_modules/d3-array/src/quickselect.js ***! | |
\**************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return quickselect; });\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sort.js */ \"./node_modules/d3-array/src/sort.js\");\n\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nfunction quickselect(array, k, left = 0, right = array.length - 1, compare) {\n compare = compare === undefined ? _sort_js__WEBPACK_IMPORTED_MODULE_0__[\"ascendingDefined\"] : Object(_sort_js__WEBPACK_IMPORTED_MODULE_0__[\"compareDefined\"])(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/quickselect.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return range; });\nfunction range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/range.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/rank.js": | |
/*!*******************************************!*\ | |
!*** ./node_modules/d3-array/src/rank.js ***! | |
\*******************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return rank; });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sort.js */ \"./node_modules/d3-array/src/sort.js\");\n\n\n\nfunction rank(values, valueof = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n let V = Array.from(values);\n const R = new Float64Array(V.length);\n if (valueof.length !== 2) V = V.map(valueof), valueof = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n const compareIndex = (i, j) => valueof(V[i], V[j]);\n let k, r;\n Uint32Array\n .from(V, (_, i) => i)\n .sort(valueof === _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? (i, j) => Object(_sort_js__WEBPACK_IMPORTED_MODULE_1__[\"ascendingDefined\"])(V[i], V[j]) : Object(_sort_js__WEBPACK_IMPORTED_MODULE_1__[\"compareDefined\"])(compareIndex))\n .forEach((j, i) => {\n const c = compareIndex(j, k === undefined ? j : k);\n if (c >= 0) {\n if (k === undefined || c > 0) k = j, r = i;\n R[j] = r;\n } else {\n R[j] = NaN;\n }\n });\n return R;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/rank.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/reduce.js": | |
/*!*********************************************!*\ | |
!*** ./node_modules/d3-array/src/reduce.js ***! | |
\*********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return reduce; });\nfunction reduce(values, reducer, value) {\n if (typeof reducer !== \"function\") throw new TypeError(\"reducer is not a function\");\n const iterator = values[Symbol.iterator]();\n let done, next, index = -1;\n if (arguments.length < 3) {\n ({done, value} = iterator.next());\n if (done) return;\n ++index;\n }\n while (({done, value: next} = iterator.next()), !done) {\n value = reducer(value, next, ++index, values);\n }\n return value;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/reduce.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/reverse.js": | |
/*!**********************************************!*\ | |
!*** ./node_modules/d3-array/src/reverse.js ***! | |
\**********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return reverse; });\nfunction reverse(values) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n return Array.from(values).reverse();\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/reverse.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return scan; });\n/* harmony import */ var _leastIndex_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./leastIndex.js */ \"./node_modules/d3-array/src/leastIndex.js\");\n\n\nfunction scan(values, compare) {\n const index = Object(_leastIndex_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values, compare);\n return index < 0 ? undefined : index;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/scan.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/shuffle.js": | |
/*!**********************************************!*\ | |
!*** ./node_modules/d3-array/src/shuffle.js ***! | |
\**********************************************/ | |
/*! exports provided: default, shuffler */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shuffler\", function() { return shuffler; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (shuffler(Math.random));\n\nfunction shuffler(random) {\n return function shuffle(array, i0 = 0, i1 = array.length) {\n let m = i1 - (i0 = +i0);\n while (m) {\n const i = random() * m-- | 0, t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n return array;\n };\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/shuffle.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/some.js": | |
/*!*******************************************!*\ | |
!*** ./node_modules/d3-array/src/some.js ***! | |
\*******************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return some; });\nfunction some(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n for (const value of values) {\n if (test(value, ++index, values)) {\n return true;\n }\n }\n return false;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/some.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/sort.js": | |
/*!*******************************************!*\ | |
!*** ./node_modules/d3-array/src/sort.js ***! | |
\*******************************************/ | |
/*! exports provided: default, compareDefined, ascendingDefined */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return sort; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compareDefined\", function() { return compareDefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ascendingDefined\", function() { return ascendingDefined; });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"./node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _permute_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./permute.js */ \"./node_modules/d3-array/src/permute.js\");\n\n\n\nfunction sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return Object(_permute_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nfunction compareDefined(compare = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n if (compare === _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nfunction ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/sort.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/subset.js": | |
/*!*********************************************!*\ | |
!*** ./node_modules/d3-array/src/subset.js ***! | |
\*********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return subset; });\n/* harmony import */ var _superset_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./superset.js */ \"./node_modules/d3-array/src/superset.js\");\n\n\nfunction subset(values, other) {\n return Object(_superset_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(other, values);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/subset.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return sum; });\nfunction sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/sum.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/superset.js": | |
/*!***********************************************!*\ | |
!*** ./node_modules/d3-array/src/superset.js ***! | |
\***********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return superset; });\nfunction superset(values, other) {\n const iterator = values[Symbol.iterator](), set = new Set();\n for (const o of other) {\n const io = intern(o);\n if (set.has(io)) continue;\n let value, done;\n while (({value, done} = iterator.next())) {\n if (done) return false;\n const ivalue = intern(value);\n set.add(ivalue);\n if (Object.is(io, ivalue)) break;\n }\n }\n return true;\n}\n\nfunction intern(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/superset.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return thresholdFreedmanDiaconis; });\n/* harmony import */ var _count_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../count.js */ \"./node_modules/d3-array/src/count.js\");\n/* harmony import */ var _quantile_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../quantile.js */ \"./node_modules/d3-array/src/quantile.js\");\n\n\n\nfunction thresholdFreedmanDiaconis(values, min, max) {\n return Math.ceil((max - min) / (2 * (Object(_quantile_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, 0.75) - Object(_quantile_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, 0.25)) * Math.pow(Object(_count_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values), -1 / 3)));\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/threshold/freedmanDiaconis.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return thresholdScott; });\n/* harmony import */ var _count_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../count.js */ \"./node_modules/d3-array/src/count.js\");\n/* harmony import */ var _deviation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../deviation.js */ \"./node_modules/d3-array/src/deviation.js\");\n\n\n\nfunction thresholdScott(values, min, max) {\n return Math.ceil((max - min) * Math.cbrt(Object(_count_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values)) / (3.49 * Object(_deviation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values)));\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/threshold/scott.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return thresholdSturges; });\n/* harmony import */ var _count_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../count.js */ \"./node_modules/d3-array/src/count.js\");\n\n\nfunction thresholdSturges(values) {\n return Math.ceil(Math.log(Object(_count_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values)) / Math.LN2) + 1;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/threshold/sturges.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ticks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickIncrement\", function() { return tickIncrement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tickStep\", function() { return tickStep; });\nvar e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nfunction tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nfunction tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/ticks.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return transpose; });\n/* harmony import */ var _min_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./min.js */ \"./node_modules/d3-array/src/min.js\");\n\n\nfunction transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = Object(_min_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/transpose.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-array/src/union.js": | |
/*!********************************************!*\ | |
!*** ./node_modules/d3-array/src/union.js ***! | |
\********************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return union; });\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! internmap */ \"./node_modules/internmap/src/index.js\");\n\n\nfunction union(...others) {\n const set = new internmap__WEBPACK_IMPORTED_MODULE_0__[\"InternSet\"]();\n for (const other of others) {\n for (const o of other) {\n set.add(o);\n }\n }\n return set;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/union.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return variance; });\nfunction variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/variance.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return zip; });\n/* harmony import */ var _transpose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transpose.js */ \"./node_modules/d3-array/src/transpose.js\");\n\n\nfunction zip() {\n return Object(_transpose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arguments);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-array/src/zip.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-collection/src/entries.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-collection/src/index.js": | |
/*!*************************************************!*\ | |
!*** ./node_modules/d3-collection/src/index.js ***! | |
\*************************************************/ | |
/*! exports provided: nest, set, map, keys, values, entries */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nest */ \"./node_modules/d3-collection/src/nest.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"nest\", function() { return _nest__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _set__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./set */ \"./node_modules/d3-collection/src/set.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return _set__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./map */ \"./node_modules/d3-collection/src/map.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return _map__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./keys */ \"./node_modules/d3-collection/src/keys.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return _keys__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _values__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./values */ \"./node_modules/d3-collection/src/values.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return _values__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _entries__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./entries */ \"./node_modules/d3-collection/src/entries.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"entries\", function() { return _entries__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./node_modules/d3-collection/src/index.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-collection/src/keys.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prefix\", function() { return prefix; });\nvar prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (map);\n\n\n//# sourceURL=webpack:///./node_modules/d3-collection/src/map.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./map */ \"./node_modules/d3-collection/src/map.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = Object(_map__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n});\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return Object(_map__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-collection/src/nest.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./map */ \"./node_modules/d3-collection/src/map.js\");\n\n\nfunction Set() {}\n\nvar proto = _map__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[_map__WEBPACK_IMPORTED_MODULE_0__[\"prefix\"] + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (set);\n\n\n//# sourceURL=webpack:///./node_modules/d3-collection/src/set.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-collection/src/values.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Color\", function() { return Color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"darker\", function() { return darker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"brighter\", function() { return brighter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return color; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgbConvert\", function() { return rgbConvert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return rgb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Rgb\", function() { return Rgb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hslConvert\", function() { return hslConvert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return hsl; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/d3-color/src/define.js\");\n\n\nfunction Color() {}\n\nvar darker = 0.7;\nvar brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nfunction color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nfunction rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Rgb, rgb, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nfunction hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nfunction hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hsl, hsl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-color/src/color.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return cubehelix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Cubehelix\", function() { return Cubehelix; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-color/src/math.js\");\n\n\n\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"rgbConvert\"])(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"degrees\"] - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nfunction cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Cubehelix, cubehelix, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n brighter(k) {\n k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__[\"brighter\"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"brighter\"], k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_1__[\"darker\"] : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"darker\"], k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"],\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"](\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n\n\n//# sourceURL=webpack:///./node_modules/d3-color/src/cubehelix.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return extend; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n});\n\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-color/src/define.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-color/src/index.js": | |
/*!********************************************!*\ | |
!*** ./node_modules/d3-color/src/index.js ***! | |
\********************************************/ | |
/*! exports provided: color, rgb, hsl, lab, hcl, lch, gray, cubehelix */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-color/src/color.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"color\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"rgb\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return _color_js__WEBPACK_IMPORTED_MODULE_0__[\"hsl\"]; });\n\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lab.js */ \"./node_modules/d3-color/src/lab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lab\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"hcl\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lch\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"lch\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"gray\", function() { return _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"gray\"]; });\n\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubehelix.js */ \"./node_modules/d3-color/src/cubehelix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"cubehelix\", function() { return _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n\n//# sourceURL=webpack:///./node_modules/d3-color/src/index.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-color/src/lab.js": | |
/*!******************************************!*\ | |
!*** ./node_modules/d3-color/src/lab.js ***! | |
\******************************************/ | |
/*! exports provided: gray, default, Lab, lch, hcl, Hcl */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gray\", function() { return gray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return lab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Lab\", function() { return Lab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lch\", function() { return lch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return hcl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Hcl\", function() { return Hcl; });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"./node_modules/d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"./node_modules/d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-color/src/math.js\");\n\n\n\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"])) o = Object(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"rgbConvert\"])(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nfunction gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nfunction lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nfunction Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Lab, lab, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new _color_js__WEBPACK_IMPORTED_MODULE_1__[\"Rgb\"](\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"degrees\"];\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nfunction lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"];\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\nObject(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hcl, hcl, Object(_define_js__WEBPACK_IMPORTED_MODULE_0__[\"extend\"])(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"Color\"], {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n\n\n//# sourceURL=webpack:///./node_modules/d3-color/src/lab.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-color/src/math.js": | |
/*!*******************************************!*\ | |
!*** ./node_modules/d3-color/src/math.js ***! | |
\*******************************************/ | |
/*! exports provided: radians, degrees */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"radians\", function() { return radians; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"degrees\", function() { return degrees; });\nconst radians = Math.PI / 180;\nconst degrees = 180 / Math.PI;\n\n\n//# sourceURL=webpack:///./node_modules/d3-color/src/math.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return format; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return formatPrefix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return defaultLocale; });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/d3-format/src/locale.js\");\n\n\nvar locale;\nvar format;\nvar formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nfunction defaultLocale(definition) {\n locale = Object(_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/defaultLocale.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return x = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(Math.abs(x)), x ? x[1] : NaN;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/exponent.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-format/src/formatDecimal.js": | |
/*!*****************************************************!*\ | |
!*** ./node_modules/d3-format/src/formatDecimal.js ***! | |
\*****************************************************/ | |
/*! exports provided: default, formatDecimalParts */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatDecimalParts\", function() { return formatDecimalParts; });\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n});\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nfunction formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/formatDecimal.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/formatGroup.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/formatNumerals.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prefixExponent\", function() { return prefixExponent; });\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/d3-format/src/formatDecimal.js\");\n\n\nvar prefixExponent;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/formatPrefixAuto.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x, p) {\n var d = Object(_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"formatDecimalParts\"])(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/formatRounded.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-format/src/formatSpecifier.js": | |
/*!*******************************************************!*\ | |
!*** ./node_modules/d3-format/src/formatSpecifier.js ***! | |
\*******************************************************/ | |
/*! exports provided: default, FormatSpecifier */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return formatSpecifier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FormatSpecifier\", function() { return FormatSpecifier; });\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/formatSpecifier.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-format/src/formatTrim.js": | |
/*!**************************************************!*\ | |
!*** ./node_modules/d3-format/src/formatTrim.js ***! | |
\**************************************************/ | |
/*! exports provided: default */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/formatTrim.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"./node_modules/d3-format/src/formatDecimal.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"./node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _formatRounded_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatRounded.js */ \"./node_modules/d3-format/src/formatRounded.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => Object(_formatRounded_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(x * 100, p),\n \"r\": _formatRounded_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n \"s\": _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/formatTypes.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return x;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/identity.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-format/src/index.js": | |
/*!*********************************************!*\ | |
!*** ./node_modules/d3-format/src/index.js ***! | |
\*********************************************/ | |
/*! exports provided: formatDefaultLocale, format, formatPrefix, formatLocale, formatSpecifier, FormatSpecifier, precisionFixed, precisionPrefix, precisionRound */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"./node_modules/d3-format/src/defaultLocale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatDefaultLocale\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"format\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"format\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatPrefix\", function() { return _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"formatPrefix\"]; });\n\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"./node_modules/d3-format/src/locale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatLocale\", function() { return _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatSpecifier.js */ \"./node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"formatSpecifier\", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FormatSpecifier\", function() { return _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"FormatSpecifier\"]; });\n\n/* harmony import */ var _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./precisionFixed.js */ \"./node_modules/d3-format/src/precisionFixed.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionFixed\", function() { return _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./precisionPrefix.js */ \"./node_modules/d3-format/src/precisionPrefix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionPrefix\", function() { return _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./precisionRound.js */ \"./node_modules/d3-format/src/precisionRound.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"precisionRound\", function() { return _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/index.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/d3-format/src/exponent.js\");\n/* harmony import */ var _formatGroup_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatGroup.js */ \"./node_modules/d3-format/src/formatGroup.js\");\n/* harmony import */ var _formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatNumerals.js */ \"./node_modules/d3-format/src/formatNumerals.js\");\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formatSpecifier.js */ \"./node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony import */ var _formatTrim_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formatTrim.js */ \"./node_modules/d3-format/src/formatTrim.js\");\n/* harmony import */ var _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formatTypes.js */ \"./node_modules/d3-format/src/formatTypes.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"./node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./identity.js */ \"./node_modules/d3-format/src/identity.js\");\n\n\n\n\n\n\n\n\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : Object(_formatGroup_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : Object(_formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!_formatTypes_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = _formatTypes_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = Object(_formatTrim_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__[\"prefixExponent\"] / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = Object(_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/locale.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step) {\n return Math.max(0, -Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/precisionFixed.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3 - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/precisionPrefix.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"./node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(max) - Object(_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(step)) + 1;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-format/src/precisionRound.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"areaRingSum\", function() { return areaRingSum; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"areaStream\", function() { return areaStream; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./noop.js */ \"./node_modules/d3-geo/src/noop.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\nvar areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n\n// hello?\n\nvar areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"](),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nvar areaStream = {\n point: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n polygonStart: function() {\n areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"] + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n },\n sphere: function() {\n areaSum.add(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"tau\"]);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n lambda0 = lambda, cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi = phi / 2 + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"quarterPi\"]), sinPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n phi = phi / 2 + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"quarterPi\"]; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n sinPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(adLambda),\n v = k * sdLambda * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(adLambda);\n areaRingSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object) {\n areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n Object(_stream_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, areaStream);\n return areaSum * 2;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/area.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ \"./node_modules/d3-geo/src/area.js\");\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cartesian.js */ \"./node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum,\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].polygonStart();\n },\n polygonEnd: function() {\n _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (_area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaRingSum\"] < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > _math_js__WEBPACK_IMPORTED_MODULE_3__[\"epsilon\"]) phi1 = 90;\n else if (deltaSum < -_math_js__WEBPACK_IMPORTED_MODULE_3__[\"epsilon\"]) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"cartesian\"])([lambda * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"radians\"], phi * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"radians\"]]);\n if (p0) {\n var normal = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"cartesianCross\"])(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"cartesianCross\"])(equatorial, normal);\n Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"cartesianNormalizeInPlace\"])(inflection);\n inflection = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_2__[\"spherical\"])(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"degrees\"] * sign,\n phii,\n antimeridian = Object(_math_js__WEBPACK_IMPORTED_MODULE_3__[\"abs\"])(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"degrees\"];\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * _math_js__WEBPACK_IMPORTED_MODULE_3__[\"degrees\"];\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_3__[\"abs\"])(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n _area_js__WEBPACK_IMPORTED_MODULE_1__[\"areaStream\"].lineEnd();\n if (Object(_math_js__WEBPACK_IMPORTED_MODULE_3__[\"abs\"])(deltaSum) > _math_js__WEBPACK_IMPORTED_MODULE_3__[\"epsilon\"]) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n Object(_stream_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/bounds.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"spherical\", function() { return spherical; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesian\", function() { return cartesian; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianDot\", function() { return cartesianDot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianCross\", function() { return cartesianCross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianAddInPlace\", function() { return cartesianAddInPlace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianScale\", function() { return cartesianScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cartesianNormalizeInPlace\", function() { return cartesianNormalizeInPlace; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-geo/src/math.js\");\n\n\nfunction spherical(cartesian) {\n return [Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(cartesian[1], cartesian[0]), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(cartesian[2])];\n}\n\nfunction cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(phi);\n return [cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(lambda), cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(lambda), Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(phi)];\n}\n\nfunction cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nfunction cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nfunction cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nfunction cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nfunction cartesianNormalizeInPlace(d) {\n var l = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/cartesian.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./noop.js */ \"./node_modules/d3-geo/src/noop.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi);\n centroidPointCartesian(cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda), cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda), Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi);\n x0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda);\n y0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda);\n z0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n x = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda),\n y = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda),\n z = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n w = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n centroidStream.point = centroidRingPoint;\n var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi);\n x0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda);\n y0 = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda);\n z0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n var cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n x = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(lambda),\n y = cosPhi * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda),\n z = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"hypot\"])(cx, cy, cz),\n w = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2.add(v * cx);\n Y2.add(v * cy);\n Z2.add(v * cz);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 = 0;\n X2 = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n Y2 = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n Z2 = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n Object(_stream_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, centroidStream);\n\n var x = +X2,\n y = +Y2,\n z = +Z2,\n m = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"hypot\"])(x, y, z);\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon2\"]) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) x = X0, y = Y0, z = Z0;\n m = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"hypot\"])(x, y, z);\n // If the feature still has an undefined ccentroid, then return.\n if (m < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon2\"]) return [NaN, NaN];\n }\n\n return [Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(y, x) * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"], Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"asin\"])(z / m) * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"degrees\"]];\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/centroid.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleStream\", function() { return circleStream; });\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cartesian.js */ \"./node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"./node_modules/d3-geo/src/constant.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rotation.js */ \"./node_modules/d3-geo/src/rotation.js\");\n\n\n\n\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nfunction circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(radius),\n sinRadius = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"];\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"];\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"spherical\"])([cosRadius, -sinRadius * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(t), -sinRadius * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesian\"])(point), point[0] -= cosRadius;\n Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianNormalizeInPlace\"])(point);\n var radius = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"acos\"])(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]) % _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var center = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([0, 0]),\n radius = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(90),\n precision = Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= _math_js__WEBPACK_IMPORTED_MODULE_2__[\"degrees\"], x[1] *= _math_js__WEBPACK_IMPORTED_MODULE_2__[\"degrees\"];\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"],\n p = precision.apply(this, arguments) * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"];\n ring = [];\n rotate = Object(_rotation_js__WEBPACK_IMPORTED_MODULE_3__[\"rotateRadians\"])(-c[0] * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"], -c[1] * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"], 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : Object(_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), circle) : precision;\n };\n\n return circle;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/circle.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"./node_modules/d3-geo/src/clip/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"halfPi\"]]\n));\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"] : -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"],\n delta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda1 - lambda0);\n if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(delta - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"]) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__[\"halfPi\"] : -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"halfPi\"]);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"]) { // line crosses antimeridian\n if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda0 - sign0) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) lambda0 -= sign0 * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]; // handle degeneracies\n if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda1 - sign1) < _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) lambda1 -= sign1 * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"];\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda0 - lambda1);\n return Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(sinLambda0Lambda1) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]\n ? Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan\"])((Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi0) * (cosPhi1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi1)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda1)\n - Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi1) * (cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi0)) * Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"halfPi\"];\n stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], phi);\n stream.point(0, phi);\n stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], phi);\n stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], 0);\n stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], -phi);\n stream.point(0, -phi);\n stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], -phi);\n stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], 0);\n stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"], phi);\n } else if (Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(from[0] - to[0]) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]) {\n var lambda = from[0] < to[0] ? _math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"] : -_math_js__WEBPACK_IMPORTED_MODULE_1__[\"pi\"];\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/clip/antimeridian.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/d3-geo/src/noop.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/clip/buffer.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../cartesian.js */ \"./node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../circle.js */ \"./node_modules/d3-geo/src/circle.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _pointEqual_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../pointEqual.js */ \"./node_modules/d3-geo/src/pointEqual.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index.js */ \"./node_modules/d3-geo/src/clip/index.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(radius) {\n var cr = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(radius),\n delta = 6 * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"],\n smallRadius = cr > 0,\n notHemisphere = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(cr) > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"]; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n Object(_circle_js__WEBPACK_IMPORTED_MODULE_1__[\"circleStream\"])(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(lambda) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] : -_math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(point0, point2) || Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesian\"])(a),\n pb = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesian\"])(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianCross\"])(pa, pb),\n n2n2 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianDot\"])(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianCross\"])(n1, n2),\n A = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianScale\"])(n1, c1),\n B = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianScale\"])(n2, c2);\n Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianAddInPlace\"])(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianDot\"])(A, u),\n uu = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianDot\"])(u, u),\n t2 = w * w - uu * (Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianDot\"])(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sqrt\"])(t2),\n q = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianScale\"])(u, (-w - t) / uu);\n Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianAddInPlace\"])(q, A);\n q = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"spherical\"])(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(delta - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]) < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"],\n meridian = polar || delta < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"];\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(q[0] - lambda0) < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianScale\"])(u, (-w + t) / uu);\n Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"cartesianAddInPlace\"])(q1, A);\n return [q, Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_0__[\"spherical\"])(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return Object(_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-_math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"], radius - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]]);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/clip/circle.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _rectangle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rectangle.js */ \"./node_modules/d3-geo/src/clip/rectangle.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = Object(_rectangle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/clip/extent.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./buffer.js */ \"./node_modules/d3-geo/src/clip/buffer.js\");\n/* harmony import */ var _rejoin_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rejoin.js */ \"./node_modules/d3-geo/src/clip/rejoin.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _polygonContains_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../polygonContains.js */ \"./node_modules/d3-geo/src/polygonContains.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = Object(_buffer_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"merge\"])(segments);\n var startInside = Object(_polygonContains_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n Object(_rejoin_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n});\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] : _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] : _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - b[1]);\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/clip/index.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/clip/line.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return clipRectangle; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./buffer.js */ \"./node_modules/d3-geo/src/clip/buffer.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line.js */ \"./node_modules/d3-geo/src/clip/line.js\");\n/* harmony import */ var _rejoin_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rejoin.js */ \"./node_modules/d3-geo/src/clip/rejoin.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n\n\n\n\n\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nfunction clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(p[0] - x0) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"] ? direction > 0 ? 0 : 3\n : Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(p[0] - x1) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"] ? direction > 0 ? 2 : 1\n : Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(p[1] - y0) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"] ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = Object(_buffer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = Object(d3_array__WEBPACK_IMPORTED_MODULE_4__[\"merge\"])(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n Object(_rejoin_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (Object(_line_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/clip/rectangle.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _pointEqual_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../pointEqual.js */ \"./node_modules/d3-geo/src/pointEqual.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n\n\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (Object(_pointEqual_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"];\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n});\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/clip/rejoin.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/compose.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(x) {\n return function() {\n return x;\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/constant.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _polygonContains_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./polygonContains.js */ \"./node_modules/d3-geo/src/polygonContains.js\");\n/* harmony import */ var _distance_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./distance.js */ \"./node_modules/d3-geo/src/distance.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-geo/src/math.js\");\n\n\n\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return Object(_distance_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = Object(_distance_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = Object(_distance_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon2\"] * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!Object(_polygonContains_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"], point[1] * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"radians\"]];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/contains.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./length.js */ \"./node_modules/d3-geo/src/length.js\");\n\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return Object(_length_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/distance.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return graticule; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"graticule10\", function() { return graticule10; });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-geo/src/math.js\");\n\n\n\nfunction graticuleX(y0, y1, dy) {\n var y = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(y0, y1 - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"], dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(x0, x1 - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"], dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nfunction graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"ceil\"])(X0 / DX) * DX, X1, DX).map(X)\n .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"ceil\"])(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"ceil\"])(x0 / dx) * dx, x1, dx).filter(function(x) { return Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(x % DX) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]; }).map(x))\n .concat(Object(d3_array__WEBPACK_IMPORTED_MODULE_0__[\"range\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"ceil\"])(y0 / dy) * dy, y1, dy).filter(function(y) { return Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(y % DY) > _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]], [180, 90 - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]]])\n .extentMinor([[-180, -80 - _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]], [180, 80 + _math_js__WEBPACK_IMPORTED_MODULE_1__[\"epsilon\"]]]);\n}\n\nfunction graticule10() {\n return graticule()();\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/graticule.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (x => x);\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/identity.js?"); | |
/***/ }), | |
/***/ "./node_modules/d3-geo/src/index.js": | |
/*!******************************************!*\ | |
!*** ./node_modules/d3-geo/src/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, geoEqualEarth, geoEqualEarthRaw, 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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./area.js */ \"./node_modules/d3-geo/src/area.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoArea\", function() { return _area_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _bounds_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bounds.js */ \"./node_modules/d3-geo/src/bounds.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoBounds\", function() { return _bounds_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _centroid_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./centroid.js */ \"./node_modules/d3-geo/src/centroid.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoCentroid\", function() { return _centroid_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./circle.js */ \"./node_modules/d3-geo/src/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoCircle\", function() { return _circle_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./clip/antimeridian.js */ \"./node_modules/d3-geo/src/clip/antimeridian.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoClipAntimeridian\", function() { return _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _clip_circle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./clip/circle.js */ \"./node_modules/d3-geo/src/clip/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoClipCircle\", function() { return _clip_circle_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _clip_extent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./clip/extent.js */ \"./node_modules/d3-geo/src/clip/extent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoClipExtent\", function() { return _clip_extent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./clip/rectangle.js */ \"./node_modules/d3-geo/src/clip/rectangle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoClipRectangle\", function() { return _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./contains.js */ \"./node_modules/d3-geo/src/contains.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoContains\", function() { return _contains_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _distance_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./distance.js */ \"./node_modules/d3-geo/src/distance.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoDistance\", function() { return _distance_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _graticule_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./graticule.js */ \"./node_modules/d3-geo/src/graticule.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoGraticule\", function() { return _graticule_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoGraticule10\", function() { return _graticule_js__WEBPACK_IMPORTED_MODULE_10__[\"graticule10\"]; });\n\n/* harmony import */ var _interpolate_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./interpolate.js */ \"./node_modules/d3-geo/src/interpolate.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoInterpolate\", function() { return _interpolate_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./length.js */ \"./node_modules/d3-geo/src/length.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoLength\", function() { return _length_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _path_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./path/index.js */ \"./node_modules/d3-geo/src/path/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoPath\", function() { return _path_index_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _projection_albers_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./projection/albers.js */ \"./node_modules/d3-geo/src/projection/albers.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAlbers\", function() { return _projection_albers_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _projection_albersUsa_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./projection/albersUsa.js */ \"./node_modules/d3-geo/src/projection/albersUsa.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAlbersUsa\", function() { return _projection_albersUsa_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./projection/azimuthalEqualArea.js */ \"./node_modules/d3-geo/src/projection/azimuthalEqualArea.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAzimuthalEqualArea\", function() { return _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAzimuthalEqualAreaRaw\", function() { return _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__[\"azimuthalEqualAreaRaw\"]; });\n\n/* harmony import */ var _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./projection/azimuthalEquidistant.js */ \"./node_modules/d3-geo/src/projection/azimuthalEquidistant.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAzimuthalEquidistant\", function() { return _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoAzimuthalEquidistantRaw\", function() { return _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__[\"azimuthalEquidistantRaw\"]; });\n\n/* harmony import */ var _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./projection/conicConformal.js */ \"./node_modules/d3-geo/src/projection/conicConformal.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicConformal\", function() { return _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicConformalRaw\", function() { return _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__[\"conicConformalRaw\"]; });\n\n/* harmony import */ var _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./projection/conicEqualArea.js */ \"./node_modules/d3-geo/src/projection/conicEqualArea.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicEqualArea\", function() { return _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicEqualAreaRaw\", function() { return _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__[\"conicEqualAreaRaw\"]; });\n\n/* harmony import */ var _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./projection/conicEquidistant.js */ \"./node_modules/d3-geo/src/projection/conicEquidistant.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicEquidistant\", function() { return _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoConicEquidistantRaw\", function() { return _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__[\"conicEquidistantRaw\"]; });\n\n/* harmony import */ var _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./projection/equalEarth.js */ \"./node_modules/d3-geo/src/projection/equalEarth.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoEqualEarth\", function() { return _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoEqualEarthRaw\", function() { return _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__[\"equalEarthRaw\"]; });\n\n/* harmony import */ var _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./projection/equirectangular.js */ \"./node_modules/d3-geo/src/projection/equirectangular.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoEquirectangular\", function() { return _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoEquirectangularRaw\", function() { return _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__[\"equirectangularRaw\"]; });\n\n/* harmony import */ var _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./projection/gnomonic.js */ \"./node_modules/d3-geo/src/projection/gnomonic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoGnomonic\", function() { return _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoGnomonicRaw\", function() { return _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__[\"gnomonicRaw\"]; });\n\n/* harmony import */ var _projection_identity_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./projection/identity.js */ \"./node_modules/d3-geo/src/projection/identity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoIdentity\", function() { return _projection_identity_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _projection_index_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./projection/index.js */ \"./node_modules/d3-geo/src/projection/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoProjection\", function() { return _projection_index_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoProjectionMutator\", function() { return _projection_index_js__WEBPACK_IMPORTED_MODULE_25__[\"projectionMutator\"]; });\n\n/* harmony import */ var _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./projection/mercator.js */ \"./node_modules/d3-geo/src/projection/mercator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoMercator\", function() { return _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoMercatorRaw\", function() { return _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__[\"mercatorRaw\"]; });\n\n/* harmony import */ var _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./projection/naturalEarth1.js */ \"./node_modules/d3-geo/src/projection/naturalEarth1.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoNaturalEarth1\", function() { return _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoNaturalEarth1Raw\", function() { return _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__[\"naturalEarth1Raw\"]; });\n\n/* harmony import */ var _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./projection/orthographic.js */ \"./node_modules/d3-geo/src/projection/orthographic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoOrthographic\", function() { return _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoOrthographicRaw\", function() { return _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__[\"orthographicRaw\"]; });\n\n/* harmony import */ var _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./projection/stereographic.js */ \"./node_modules/d3-geo/src/projection/stereographic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoStereographic\", function() { return _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoStereographicRaw\", function() { return _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__[\"stereographicRaw\"]; });\n\n/* harmony import */ var _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./projection/transverseMercator.js */ \"./node_modules/d3-geo/src/projection/transverseMercator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoTransverseMercator\", function() { return _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoTransverseMercatorRaw\", function() { return _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__[\"transverseMercatorRaw\"]; });\n\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./rotation.js */ \"./node_modules/d3-geo/src/rotation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoRotation\", function() { return _rotation_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]; });\n\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/d3-geo/src/stream.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoStream\", function() { return _stream_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]; });\n\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./transform.js */ \"./node_modules/d3-geo/src/transform.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"geoTransform\", function() { return _transform_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]; });\n\n\n\n\n\n\n\n // DEPRECATED! Use d3.geoIdentity().clipExtent(…).\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/index.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-geo/src/math.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n var x0 = a[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"],\n y0 = a[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"],\n x1 = b[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"],\n y1 = b[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"],\n cy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y0),\n sy0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y0),\n cy1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y1),\n sy1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y1),\n kx0 = cy0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x0),\n ky0 = cy0 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x0),\n kx1 = cy1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x1),\n ky1 = cy1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x1),\n d = 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"haversin\"])(y1 - y0) + cy0 * cy1 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"haversin\"])(x1 - x0))),\n k = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(d);\n\n var interpolate = d ? function(t) {\n var B = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(t *= d) / k,\n A = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(y, x) * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"],\n Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(z, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(x * x + y * y)) * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"]\n ];\n } : function() {\n return [x0 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"], y0 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"]];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/interpolate.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./noop.js */ \"./node_modules/d3-geo/src/noop.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ \"./node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\nvar lengthSum,\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n point: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n lineStart: lengthLineStart,\n lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n polygonStart: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n polygonEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n lambda0 = lambda, sinPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi), cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"], phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__[\"radians\"];\n var sinPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(phi),\n cosPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(phi),\n delta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(lambda - lambda0),\n cosDelta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"cos\"])(delta),\n sinDelta = Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sin\"])(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"atan2\"])(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(object) {\n lengthSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n Object(_stream_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, lengthStream);\n return +lengthSum;\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/length.js?"); | |
/***/ }), | |
/***/ "./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, hypot, log, pow, sin, sign, sqrt, tan, acos, asin, haversin */ | |
/***/ (function(module, __webpack_exports__, __webpack_require__) { | |
"use strict"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"epsilon\", function() { return epsilon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"epsilon2\", function() { return epsilon2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pi\", function() { return pi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"halfPi\", function() { return halfPi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quarterPi\", function() { return quarterPi; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tau\", function() { return tau; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"degrees\", function() { return degrees; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"radians\", function() { return radians; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"abs\", function() { return abs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"atan\", function() { return atan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"atan2\", function() { return atan2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cos\", function() { return cos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ceil\", function() { return ceil; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exp\", function() { return exp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floor\", function() { return floor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hypot\", function() { return hypot; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"log\", function() { return log; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pow\", function() { return pow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sin\", function() { return sin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sign\", function() { return sign; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sqrt\", function() { return sqrt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tan\", function() { return tan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"acos\", function() { return acos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asin\", function() { return asin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"haversin\", function() { return haversin; });\nvar epsilon = 1e-6;\nvar epsilon2 = 1e-12;\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar quarterPi = pi / 4;\nvar tau = pi * 2;\n\nvar degrees = 180 / pi;\nvar radians = pi / 180;\n\nvar abs = Math.abs;\nvar atan = Math.atan;\nvar atan2 = Math.atan2;\nvar cos = Math.cos;\nvar ceil = Math.ceil;\nvar exp = Math.exp;\nvar floor = Math.floor;\nvar hypot = Math.hypot;\nvar log = Math.log;\nvar pow = Math.pow;\nvar sin = Math.sin;\nvar sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nvar sqrt = Math.sqrt;\nvar tan = Math.tan;\n\nfunction acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nfunction asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nfunction haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/math.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return noop; });\nfunction noop() {}\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/noop.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/d3-geo/src/noop.js\");\n\n\n\n\nvar areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"](),\n areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"](),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n areaSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"abs\"])(areaRingSum));\n areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (areaStream);\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/path/area.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/d3-geo/src/noop.js\");\n\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n polygonStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n polygonEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (boundsStream);\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/path/bounds.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (centroidStream);\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/path/centroid.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PathContext; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/d3-geo/src/noop.js\");\n\n\n\nfunction PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, _math_js__WEBPACK_IMPORTED_MODULE_0__[\"tau\"]);\n break;\n }\n }\n },\n result: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n};\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/path/context.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../identity.js */ \"./node_modules/d3-geo/src/identity.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../stream.js */ \"./node_modules/d3-geo/src/stream.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./area.js */ \"./node_modules/d3-geo/src/path/area.js\");\n/* harmony import */ var _bounds_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bounds.js */ \"./node_modules/d3-geo/src/path/bounds.js\");\n/* harmony import */ var _centroid_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./centroid.js */ \"./node_modules/d3-geo/src/path/centroid.js\");\n/* harmony import */ var _context_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./context.js */ \"./node_modules/d3-geo/src/path/context.js\");\n/* harmony import */ var _measure_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./measure.js */ \"./node_modules/d3-geo/src/path/measure.js\");\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./string.js */ \"./node_modules/d3-geo/src/path/string.js\");\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(_area_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n return _area_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].result();\n };\n\n path.measure = function(object) {\n Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(_measure_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]));\n return _measure_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].result();\n };\n\n path.bounds = function(object) {\n Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(_bounds_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n return _bounds_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].result();\n };\n\n path.centroid = function(object) {\n Object(_stream_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, projectionStream(_centroid_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]));\n return _centroid_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new _string_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]) : new _context_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"](context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/path/index.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../noop.js */ \"./node_modules/d3-geo/src/noop.js\");\n\n\n\n\nvar lengthSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"](),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_1__[\"sqrt\"])(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (lengthStream);\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/path/measure.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PathString; });\nfunction PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/path/string.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-geo/src/math.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(a, b) {\n return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(a[0] - b[0]) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"] && Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"abs\"])(a[1] - b[1]) < _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"];\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/pointEqual.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"./node_modules/d3-array/src/index.js\");\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cartesian.js */ \"./node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"./node_modules/d3-geo/src/math.js\");\n\n\n\n\nfunction longitude(point) {\n return Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(point[0]) <= _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"] ? point[0] : Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sign\"])(point[0]) * ((Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"abs\"])(point[0]) + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]) % _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"]);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(phi),\n normal = [Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(lambda), -Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new d3_array__WEBPACK_IMPORTED_MODULE_0__[\"Adder\"]();\n\n if (sinPhi === 1) phi = _math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"];\n else if (sinPhi === -1) phi = -_math_js__WEBPACK_IMPORTED_MODULE_2__[\"halfPi\"] - _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"];\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"quarterPi\"],\n sinPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(phi0),\n cosPhi0 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + _math_js__WEBPACK_IMPORTED_MODULE_2__[\"quarterPi\"],\n sinPhi1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(phi1),\n cosPhi1 = Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > _math_js__WEBPACK_IMPORTED_MODULE_2__[\"pi\"],\n k = sinPhi0 * sinPhi1;\n\n sum.add(Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"atan2\"])(k * sign * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"sin\"])(absDelta), cosPhi0 * cosPhi1 + k * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"cos\"])(absDelta)));\n angle += antimeridian ? delta + sign * _math_js__WEBPACK_IMPORTED_MODULE_2__[\"tau\"] : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesianCross\"])(Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesian\"])(point0), Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesian\"])(point1));\n Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesianNormalizeInPlace\"])(arc);\n var intersection = Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesianCross\"])(normal, arc);\n Object(_cartesian_js__WEBPACK_IMPORTED_MODULE_1__[\"cartesianNormalizeInPlace\"])(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * Object(_math_js__WEBPACK_IMPORTED_MODULE_2__[\"asin\"])(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -_math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] || angle < _math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon\"] && sum < -_math_js__WEBPACK_IMPORTED_MODULE_2__[\"epsilon2\"]) ^ (winding & 1);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/polygonContains.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _conicEqualArea_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./conicEqualArea.js */ \"./node_modules/d3-geo/src/projection/conicEqualArea.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return Object(_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/projection/albers.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _albers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./albers.js */ \"./node_modules/d3-geo/src/projection/albers.js\");\n/* harmony import */ var _conicEqualArea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./conicEqualArea.js */ \"./node_modules/d3-geo/src/projection/conicEqualArea.js\");\n/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fit.js */ \"./node_modules/d3-geo/src/projection/fit.js\");\n\n\n\n\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n var cache,\n cacheStream,\n lower48 = Object(_albers_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(), lower48Point,\n alaska = Object(_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = Object(_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"], y + 0.120 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]], [x - 0.214 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"], y + 0.234 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"], y + 0.166 * k + _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]], [x - 0.115 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"], y + 0.234 * k - _math_js__WEBPACK_IMPORTED_MODULE_0__[\"epsilon\"]]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitExtent\"])(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitSize\"])(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitWidth\"])(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return Object(_fit_js__WEBPACK_IMPORTED_MODULE_3__[\"fitHeight\"])(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/projection/albersUsa.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"azimuthalRaw\", function() { return azimuthalRaw; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"azimuthalInvert\", function() { return azimuthalInvert; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n\n\nfunction azimuthalRaw(scale) {\n return function(x, y) {\n var cx = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(x),\n cy = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [\n k * cy * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(x),\n k * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(y)\n ];\n }\n}\n\nfunction azimuthalInvert(angle) {\n return function(x, y) {\n var z = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(x * x + y * y),\n c = angle(z),\n sc = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(c),\n cc = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"cos\"])(c);\n return [\n Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"atan2\"])(x * sc, z * cc),\n Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(z && y * sc / z)\n ];\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/projection/azimuthal.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"azimuthalEqualAreaRaw\", function() { return azimuthalEqualAreaRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"./node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nvar azimuthalEqualAreaRaw = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalRaw\"])(function(cxcy) {\n return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sqrt\"])(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalInvert\"])(function(z) {\n return 2 * Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"asin\"])(z / 2);\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/projection/azimuthalEqualArea.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"azimuthalEquidistantRaw\", function() { return azimuthalEquidistantRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"./node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"./node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nvar azimuthalEquidistantRaw = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalRaw\"])(function(c) {\n return (c = Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"acos\"])(c)) && c / Object(_math_js__WEBPACK_IMPORTED_MODULE_0__[\"sin\"])(c);\n});\n\nazimuthalEquidistantRaw.invert = Object(_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__[\"azimuthalInvert\"])(function(z) {\n return z;\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function() {\n return Object(_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n});\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/projection/azimuthalEquidistant.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conicProjection\", function() { return conicProjection; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ \"./node_modules/d3-geo/src/projection/index.js\");\n\n\n\nfunction conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = _math_js__WEBPACK_IMPORTED_MODULE_0__[\"pi\"] / 3,\n m = Object(_index_js__WEBPACK_IMPORTED_MODULE_1__[\"projectionMutator\"])(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"], phi1 = _[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"radians\"]) : [phi0 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"], phi1 * _math_js__WEBPACK_IMPORTED_MODULE_0__[\"degrees\"]];\n };\n\n return p;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-geo/src/projection/conic.js?"); | |
/***/ }), | |
/***/ "./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"; | |
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"conicConformalRaw\", function() { return conicConformalRaw; });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"./node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./conic.js */ \"./node_modules/d3-geo/src/projection/conic.js\");\n/* harmony import */ var _mercator_js__WEBPACK_I |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment